Skip to content

Commit ec36fc1

Browse files
committed
Separate resume mode from versioning reset
- Add skip_if_resume parameter to handle_versioning_mode() - Skip reset prompts when in resume mode - Update RESUME_MODE.md to clarify distinction between resume and reset - Resume mode now works independently of versioning.mode
1 parent 4a5ecf9 commit ec36fc1

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

tools/ai-markmap-agent/RESUME_MODE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ Resume mode allows you to continue execution from a previous pipeline run, suppo
77
- Re-running from a specific stage (debug-friendly)
88
- Not overwriting original run data (generates new regen run)
99

10+
## Resume vs Reset
11+
12+
**Important distinction:**
13+
14+
- **`--resume`**: Reuses debug outputs from previous runs to save API calls. This is about **pipeline execution** (whether to run new API calls or reuse existing results).
15+
16+
- **`versioning.mode: reset`**: Deletes old version directories and starts fresh. This is about **version management** (how to organize final output versions).
17+
18+
These two features are **independent**:
19+
- You can use `--resume` even when `versioning.mode: reset` is set
20+
- Resume mode reuses debug outputs regardless of versioning mode
21+
- Versioning reset only affects final output directories, not debug outputs
22+
- When resuming, versioning reset prompts are skipped (reset applies to final output only)
23+
1024
## Usage
1125

1226
### Method 1: Interactive Resume Mode
@@ -95,6 +109,10 @@ All intermediate outputs (including reused and regenerated ones) are saved in th
95109
2. **API Keys**: Still need to provide API keys (even when reusing stages)
96110
3. **Configuration consistency**: Resume uses current config, which may differ from original run
97111
4. **Partial state recovery**: Currently only partial state recovery is supported, some stages may need to be re-run
112+
5. **Versioning mode**: Resume mode works independently of `versioning.mode`:
113+
- If `versioning.mode: reset`, the reset prompt is skipped during resume
114+
- Versioning reset only affects final output directories, not debug outputs
115+
- You can resume from debug outputs even when versioning is set to reset
98116

99117
## Future Improvements
100118

tools/ai-markmap-agent/main.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,11 @@ def main() -> int:
250250
print("Skipping API key input (--no-openai and/or --no-anthropic specified)\n")
251251

252252
# Step 3: Handle versioning mode (reset prompts here)
253+
# Note: In resume mode, versioning is separate - it only affects final output
254+
# Debug outputs are reused regardless of versioning mode
253255
print("\nChecking versioning mode...")
254-
if not handle_versioning_mode(config):
256+
is_resume_mode = resume_config is not None
257+
if not handle_versioning_mode(config, skip_if_resume=is_resume_mode):
255258
# User cancelled reset
256259
return 0
257260

tools/ai-markmap-agent/src/graph.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,18 +156,39 @@ def load_baseline_markmap(config: dict[str, Any]) -> str:
156156
raise FileNotFoundError(f"Baseline Markmap not found: {full_path}")
157157

158158

159-
def handle_versioning_mode(config: dict[str, Any]) -> bool:
159+
def handle_versioning_mode(config: dict[str, Any], skip_if_resume: bool = False) -> bool:
160160
"""
161161
Handle versioning mode before running the pipeline.
162162
163163
For reset mode, prompts user to confirm deletion of old versions.
164164
165165
Args:
166166
config: Configuration dictionary
167+
skip_if_resume: If True and in resume mode, skip versioning checks
168+
(resume mode reuses debug outputs, versioning is separate)
167169
168170
Returns:
169171
True to continue, False to abort (user cancelled reset)
170172
"""
173+
# Check if we're in resume mode
174+
if skip_if_resume:
175+
# In resume mode, versioning is separate from pipeline execution
176+
# We'll still show info but won't prompt for reset
177+
versioning = config.get("output", {}).get("versioning", {})
178+
versioning_enabled = versioning.get("enabled", False)
179+
if versioning_enabled:
180+
versioning_mode = versioning.get("mode", "continue")
181+
if versioning_mode == "reset":
182+
print(" ℹ️ Resume mode: Versioning reset will apply to final output only")
183+
print(" (Debug outputs are reused from previous run)")
184+
else:
185+
converter = MarkMapHTMLConverter(config)
186+
existing = converter._get_existing_versions()
187+
if existing:
188+
print(f" 📂 Continue mode: {len(existing)} existing version(s)")
189+
print(f" Latest: {existing[-1].name}")
190+
return True
191+
171192
versioning = config.get("output", {}).get("versioning", {})
172193
versioning_enabled = versioning.get("enabled", False)
173194
versioning_mode = versioning.get("mode", "continue")

0 commit comments

Comments
 (0)