@litmers/cursorflow-orchestrator 0.1.9 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +90 -72
  3. package/commands/cursorflow-clean.md +24 -135
  4. package/commands/cursorflow-doctor.md +66 -38
  5. package/commands/cursorflow-init.md +33 -50
  6. package/commands/cursorflow-models.md +51 -0
  7. package/commands/cursorflow-monitor.md +52 -72
  8. package/commands/cursorflow-prepare.md +426 -147
  9. package/commands/cursorflow-resume.md +51 -159
  10. package/commands/cursorflow-review.md +38 -202
  11. package/commands/cursorflow-run.md +197 -84
  12. package/commands/cursorflow-signal.md +27 -72
  13. package/dist/cli/clean.js +23 -0
  14. package/dist/cli/clean.js.map +1 -1
  15. package/dist/cli/doctor.js +14 -1
  16. package/dist/cli/doctor.js.map +1 -1
  17. package/dist/cli/index.js +14 -3
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/init.js +5 -4
  20. package/dist/cli/init.js.map +1 -1
  21. package/dist/cli/models.d.ts +7 -0
  22. package/dist/cli/models.js +104 -0
  23. package/dist/cli/models.js.map +1 -0
  24. package/dist/cli/monitor.js +17 -0
  25. package/dist/cli/monitor.js.map +1 -1
  26. package/dist/cli/prepare.d.ts +7 -0
  27. package/dist/cli/prepare.js +748 -0
  28. package/dist/cli/prepare.js.map +1 -0
  29. package/dist/cli/resume.js +56 -0
  30. package/dist/cli/resume.js.map +1 -1
  31. package/dist/cli/run.js +30 -1
  32. package/dist/cli/run.js.map +1 -1
  33. package/dist/cli/signal.js +18 -0
  34. package/dist/cli/signal.js.map +1 -1
  35. package/dist/utils/cursor-agent.d.ts +4 -0
  36. package/dist/utils/cursor-agent.js +58 -10
  37. package/dist/utils/cursor-agent.js.map +1 -1
  38. package/dist/utils/doctor.d.ts +10 -0
  39. package/dist/utils/doctor.js +588 -1
  40. package/dist/utils/doctor.js.map +1 -1
  41. package/dist/utils/types.d.ts +2 -0
  42. package/examples/README.md +114 -59
  43. package/examples/demo-project/README.md +61 -79
  44. package/examples/demo-project/_cursorflow/tasks/demo-test/01-create-utils.json +17 -6
  45. package/examples/demo-project/_cursorflow/tasks/demo-test/02-add-tests.json +17 -6
  46. package/examples/demo-project/_cursorflow/tasks/demo-test/README.md +66 -25
  47. package/package.json +1 -1
  48. package/src/cli/clean.ts +27 -0
  49. package/src/cli/doctor.ts +18 -2
  50. package/src/cli/index.ts +15 -3
  51. package/src/cli/init.ts +6 -4
  52. package/src/cli/models.ts +83 -0
  53. package/src/cli/monitor.ts +20 -0
  54. package/src/cli/prepare.ts +844 -0
  55. package/src/cli/resume.ts +66 -0
  56. package/src/cli/run.ts +36 -2
  57. package/src/cli/signal.ts +22 -0
  58. package/src/utils/cursor-agent.ts +62 -10
  59. package/src/utils/doctor.ts +643 -5
  60. package/src/utils/types.ts +2 -0
@@ -1,7 +1,17 @@
1
1
  # CursorFlow Run
2
2
 
3
3
  ## Overview
4
- Execute the AI agent orchestration for a set of tasks. CursorFlow uses a sophisticated DAG (Directed Acyclic Graph) scheduler to handle dependencies between tasks and ensure they run in the correct order.
4
+
5
+ Execute AI agent orchestration using task configurations generated by `prepare`. CursorFlow uses a DAG (Directed Acyclic Graph) scheduler to handle lane dependencies and automatic branch merging.
6
+
7
+ ## Workflow
8
+
9
+ ```
10
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
11
+ │ 1. Create Lanes │ ──▶ │ 2. Add Tasks │ ──▶ │ 3. Validate │ ──▶ │ 4. Run │
12
+ │ (prepare) │ │ (prepare) │ │ (doctor) │ │ (run) │
13
+ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
14
+ ```
5
15
 
6
16
  ## Usage
7
17
 
@@ -9,130 +19,233 @@ Execute the AI agent orchestration for a set of tasks. CursorFlow uses a sophist
9
19
  cursorflow run <tasks-dir> [options]
10
20
  ```
11
21
 
12
- ## How it works
22
+ ### Quick Start
23
+
24
+ ```bash
25
+ # Step 1: Create lanes
26
+ cursorflow prepare AddAPI --prompt "Create REST API for users" --criteria "CRUD works,Tests pass"
27
+
28
+ # Step 2: (Optional) Add more lanes or tasks
29
+ cursorflow prepare --add-lane _cursorflow/tasks/2412211530_AddAPI \
30
+ --prompt "Add authentication" --depends-on "01-lane-1"
31
+
32
+ # Step 3: Validate configuration
33
+ cursorflow doctor --tasks-dir _cursorflow/tasks/2412211530_AddAPI
13
34
 
14
- 1. **Validation**: CursorFlow validates all task configurations before starting.
15
- 2. **Task Loading**: Scans the specified directory for `.json` task files.
16
- 3. **Dependency Resolution**: Builds a graph based on the `dependsOn` field in each task.
17
- 4. **Execution**:
18
- - Lanes with no unmet dependencies are started first.
19
- - When a lane completes, it unlocks dependent lanes.
20
- - Dependent lanes automatically merge the parent's branch before starting their first task.
21
- 5. **Monitoring**: Heartbeat logs every 30 seconds show progress.
22
- 6. **Concurrency**: Respects `maxConcurrentLanes` (set in `cursorflow.config.js`) to prevent overloading system resources.
35
+ # Step 4: Run
36
+ cursorflow run _cursorflow/tasks/2412211530_AddAPI
37
+
38
+ # Or run the latest prepared task
39
+ cursorflow run latest
40
+ ```
41
+
42
+ ## How It Works
43
+
44
+ 1. **Load**: Read all JSON files from the tasks directory
45
+ 2. **Validate**: Check `tasks` array, required fields (`name`, `prompt`)
46
+ 3. **Resolve**: Build execution order from `dependsOn` dependencies
47
+ 4. **Execute**:
48
+ - Start lanes with no dependencies in parallel
49
+ - When a lane completes, unlock dependent lanes
50
+ - **Dependent lanes auto-merge predecessor branches before starting**
51
+ 5. **Monitor**: Heartbeat logs every 30 seconds
23
52
 
24
53
  ## Options
25
54
 
26
55
  | Option | Description |
27
- |------|------|
28
- | `<tasks-dir>` | Directory containing task JSON files (e.g., `_cursorflow/tasks/feature-x/`) |
29
- | `--max-concurrent <num>` | Limit the number of parallel agents (overrides config) |
30
- | `--dry-run` | Show the execution plan and dependency graph without starting agents |
56
+ |--------|-------------|
57
+ | `<tasks-dir>` | Directory containing JSON task files |
58
+ | `--max-concurrent <num>` | Limit concurrent lane execution |
59
+ | `--executor <type>` | `cursor-agent` (default) or `cloud` |
60
+ | `--skip-doctor` | Skip environment checks (not recommended) |
61
+ | `--dry-run` | Show execution plan without running |
31
62
 
32
- ## Task Definition (JSON)
63
+ ## Execution Flow
64
+
65
+ ### Single Lane
66
+
67
+ ```bash
68
+ cursorflow prepare SimpleFix --prompt "Fix the bug"
69
+ cursorflow run _cursorflow/tasks/2412211530_SimpleFix
70
+ ```
33
71
 
34
- ### Full Configuration Schema
72
+ ```
73
+ ┌─────────────────────────────────────────────────────────┐
74
+ │ 01-lane-1 │
75
+ │ ┌─────────┐ │
76
+ │ │implement│ → AI executes → Review → Complete │
77
+ │ └─────────┘ │
78
+ └─────────────────────────────────────────────────────────┘
79
+ ```
80
+
81
+ ### Multiple Tasks in Lane
82
+
83
+ ```bash
84
+ cursorflow prepare Feature \
85
+ --task "plan|sonnet-4.5-thinking|Create plan|Plan ready" \
86
+ --task "implement|sonnet-4.5|Build feature|Code done"
87
+ ```
88
+
89
+ ```
90
+ ┌─────────────────────────────────────────────────────────┐
91
+ │ 01-lane-1 │
92
+ │ ┌────┐ ┌─────────┐ │
93
+ │ │plan│ ──▶ │implement│ → Review → Complete │
94
+ │ └────┘ └─────────┘ │
95
+ └─────────────────────────────────────────────────────────┘
96
+ ```
97
+
98
+ ### Sequential Lanes (with `--sequential`)
99
+
100
+ ```bash
101
+ cursorflow prepare FullStack --lanes 3 --sequential \
102
+ --prompt "Implement your layer"
103
+ ```
104
+
105
+ ```
106
+ ┌───────────┐ ┌───────────┐ ┌───────────┐
107
+ │ 01-lane-1 │ ──▶ │ 02-lane-2 │ ──▶ │ 03-lane-3 │
108
+ │ (DB) │ │ (API) │ │ (UI) │
109
+ └───────────┘ └───────────┘ └───────────┘
110
+ │ │
111
+ merges 01 merges 01,02
112
+ ```
113
+
114
+ ### Parallel Lanes
115
+
116
+ ```bash
117
+ cursorflow prepare FrontBack --lanes 2 \
118
+ --prompt "Implement your layer"
119
+ ```
120
+
121
+ ```
122
+ ┌───────────┐
123
+ │ 01-lane-1 │ (Frontend)
124
+ └───────────┘
125
+ ─── both run in parallel
126
+ ┌───────────┐
127
+ │ 02-lane-2 │ (Backend)
128
+ └───────────┘
129
+ ```
130
+
131
+ ## JSON Schema (RunnerConfig)
132
+
133
+ Each JSON file in the tasks directory follows this schema:
35
134
 
36
135
  ```json
37
136
  {
38
137
  "baseBranch": "main",
39
- "branchPrefix": "cursorflow/feature-",
40
- "model": "sonnet-4.5",
138
+ "branchPrefix": "feature/lane-1-",
41
139
  "timeout": 300000,
42
140
  "enableIntervention": false,
43
- "dependsOn": ["other-lane"],
141
+ "dependsOn": ["01-lane-1"],
44
142
  "dependencyPolicy": {
45
143
  "allowDependencyChange": false,
46
144
  "lockfileReadOnly": true
47
145
  },
146
+ "enableReview": true,
147
+ "reviewModel": "sonnet-4.5-thinking",
148
+ "maxReviewIterations": 3,
48
149
  "tasks": [
49
150
  {
50
- "name": "implement-feature",
51
- "model": "gemini-3-flash",
52
- "prompt": "Create a reusable button component..."
151
+ "name": "implement",
152
+ "prompt": "Create a reusable button component...",
153
+ "model": "sonnet-4.5",
154
+ "acceptanceCriteria": ["Build passes", "Tests pass"]
53
155
  }
54
156
  ]
55
157
  }
56
158
  ```
57
159
 
58
- ### Configuration Options
59
-
60
- | Option | Type | Default | Description |
61
- |--------|------|---------|-------------|
62
- | `timeout` | number | 300000 | Task timeout in milliseconds |
63
- | `enableIntervention` | boolean | false | Enable stdin piping for intervention feature |
64
- | `model` | string | "sonnet-4.5" | Default AI model for all tasks |
65
- | `dependsOn` | string[] | [] | Lane dependencies to merge before starting |
66
- | `baseBranch` | string | "main" | Base branch for worktree |
67
- | `branchPrefix` | string | "cursorflow/" | Prefix for created branches |
160
+ ### Configuration Reference
161
+
162
+ | Field | Type | Required | Description |
163
+ |-------|------|----------|-------------|
164
+ | `baseBranch` | string | Yes | Branch to create worktree from |
165
+ | `branchPrefix` | string | Yes | Prefix for feature branch naming |
166
+ | `tasks` | Task[] | Yes | Array of task objects to execute |
167
+ | `dependsOn` | string[] | No | Lane names to wait for and merge |
168
+ | `timeout` | number | No | Task timeout in ms (default: 300000) |
169
+ | `enableIntervention` | boolean | No | Allow stdin injection during execution |
170
+ | `dependencyPolicy.allowDependencyChange` | boolean | No | Allow package.json modifications |
171
+ | `dependencyPolicy.lockfileReadOnly` | boolean | No | Keep lockfile read-only |
172
+ | `enableReview` | boolean | No | Enable AI code review (default: true) |
173
+ | `reviewModel` | string | No | Model for code review |
174
+ | `maxReviewIterations` | number | No | Max review cycles (default: 3) |
175
+
176
+ ### Task Object
177
+
178
+ | Field | Type | Required | Description |
179
+ |-------|------|----------|-------------|
180
+ | `name` | string | Yes | Task identifier (alphanumeric, `-`, `_`) |
181
+ | `prompt` | string | Yes | Instructions for the AI agent |
182
+ | `model` | string | No | Model override for this task |
183
+ | `acceptanceCriteria` | string[] | No | Criteria for AI reviewer validation |
184
+
185
+ ## Monitoring During Execution
68
186
 
69
- ### Task Options
187
+ ```bash
188
+ # In another terminal
189
+ cursorflow monitor latest
70
190
 
71
- | Option | Type | Required | Description |
72
- |--------|------|----------|-------------|
73
- | `name` | string | ✅ | Unique task identifier (alphanumeric, `-`, `_` only) |
74
- | `prompt` | string | ✅ | Task prompt for the AI agent |
75
- | `model` | string | ❌ | Override model for this specific task |
191
+ # Or specify the task directory
192
+ cursorflow monitor _cursorflow/tasks/2412211530_AddAPI
193
+ ```
76
194
 
77
- ### Example with Dependencies
195
+ The monitor shows:
196
+ - Lane status (pending, running, completed, failed)
197
+ - Current task within each lane
198
+ - Dependency graph and progress
199
+ - Real-time log streaming
78
200
 
79
- ```json
80
- {
81
- "name": "ui-components",
82
- "dependsOn": ["theme-engine", "common-utils"],
83
- "timeout": 600000,
84
- "tasks": [
85
- {
86
- "name": "implement-button",
87
- "prompt": "Create a reusable button component using the theme engine..."
88
- }
89
- ]
90
- }
91
- ```
201
+ ## Troubleshooting
92
202
 
93
- ## Validation Errors
203
+ ### Validation Errors
94
204
 
95
- CursorFlow validates task files before execution and provides helpful error messages:
205
+ ```
206
+ Task N missing required "name" field
207
+ ```
208
+ → Ensure every task has both `name` and `prompt` fields
96
209
 
97
- | Error | Solution |
98
- |-------|----------|
99
- | `Task N missing required "name" field` | Add `"name": "task-name"` to each task |
100
- | `Task name contains invalid characters` | Use only letters, numbers, `-`, `_` |
101
- | `"timeout" must be a positive number` | Provide timeout as milliseconds (e.g., `60000`) |
210
+ ```
211
+ Invalid task name: "my task"
212
+ ```
213
+ Task names can only contain alphanumeric characters, `-`, and `_`
102
214
 
103
- ## Progress Monitoring
215
+ ### Dependency Issues
104
216
 
105
- During execution, CursorFlow outputs heartbeat logs every 30 seconds:
217
+ ```
218
+ Circular dependency detected
219
+ ```
220
+ → Check your `dependsOn` fields for cycles (A→B, B→A)
106
221
 
107
222
  ```
108
- Heartbeat: 30s elapsed, 1234 bytes received
109
- ⏱ Heartbeat: 60s elapsed, 5678 bytes received
223
+ Unknown dependency: 01-lane-99
110
224
  ```
225
+ → Verify the lane name in `dependsOn` matches an actual JSON filename
111
226
 
112
- This helps identify:
113
- - Long-running tasks
114
- - Stalled or hanging processes
115
- - Network issues (0 bytes received)
227
+ ### Merge Conflicts
116
228
 
117
- ## Best Practices
229
+ When a dependent lane's auto-merge fails:
118
230
 
119
- ### Sequential Workflows
120
- For tasks that must happen one after another, chain them using `dependsOn`. CursorFlow will handle the branch merges automatically.
231
+ 1. Find the worktree path in `cursorflow monitor`
232
+ 2. Navigate to the worktree directory
233
+ 3. Resolve conflicts manually and commit
234
+ 4. Resume with `cursorflow resume <lane-name>`
121
235
 
122
- ### Parallel Workflows
123
- Tasks that don't depend on each other will run in parallel up to the `maxConcurrentLanes` limit.
236
+ ### Lane Stuck
124
237
 
125
- ### Monitoring
126
- Always use `cursorflow monitor latest` in a separate terminal to keep track of the run.
238
+ If a lane stops responding:
127
239
 
128
- ## Troubleshooting
240
+ 1. Check the agent window in Cursor IDE
241
+ 2. Use `cursorflow signal <lane-name> --message "continue"` to nudge
242
+ 3. Or terminate and restart with `cursorflow run --resume`
129
243
 
130
- ### Deadlocks
131
- If you create circular dependencies (e.g., A depends on B, and B depends on A), CursorFlow will detect the deadlock at startup and refuse to run.
244
+ ## Best Practices
132
245
 
133
- ### Merge Conflicts
134
- If a parent lane and a child lane modify the same lines, a merge conflict might occur when the child starts.
135
- 1. The monitor will show the lane as `failed` with a merge error.
136
- 2. Go to the lane's worktree (found in the monitor detail).
137
- 3. Manually resolve the conflict.
138
- 4. Run `cursorflow resume <lane>` to continue.
246
+ 1. **Always Validate First**: Run `cursorflow doctor --tasks-dir <dir>` before `run`
247
+ 2. **Start Small**: Test with a single lane before scaling up
248
+ 3. **Use `--dry-run`**: Preview execution plan before committing
249
+ 4. **Monitor Actively**: Keep `cursorflow monitor` running in a separate terminal
250
+ 5. **Plan Dependencies**: Draw out the DAG before running complex workflows
251
+ 6. **Include Verification**: Add verify tasks to catch edge cases
@@ -1,90 +1,45 @@
1
- # CursorFlow Signal & Intervention
1
+ # CursorFlow Signal
2
2
 
3
3
  ## Overview
4
- Directly intervene in a running lane to provide guidance, corrections, or mid-task instructions. This is one of CursorFlow's most powerful features for "human-in-the-loop" AI orchestration.
4
+ Directly intervene in a running lane by sending a message to the agent. This is useful for providing immediate feedback or corrections during long-running tasks.
5
5
 
6
- ## ⚠️ Prerequisites
6
+ ## Usage
7
7
 
8
- **Intervention requires `enableIntervention: true` in your task configuration!**
9
-
10
- ```json
11
- {
12
- "enableIntervention": true,
13
- "tasks": [...]
14
- }
8
+ ```bash
9
+ cursorflow signal <lane-name> "<message>" [options]
15
10
  ```
16
11
 
17
- > **Note**: Enabling intervention uses stdin piping, which may cause stdout buffering issues on some systems. If you experience timeout issues, try disabling intervention.
12
+ ## Options
18
13
 
19
- ## Methods of Intervention
14
+ | Option | Description |
15
+ |------|------|
16
+ | `<lane-name>` | The name of the lane to signal |
17
+ | `"<message>"` | The text message to send to the agent |
18
+ | `--run-dir <path>` | Use a specific run directory (default: latest) |
20
19
 
21
- ### 1. via Interactive Monitor (Recommended)
22
- The easiest way to intervene is through the dashboard:
23
- 1. Run `cursorflow monitor latest`.
24
- 2. Enter the lane detail view (`→`).
25
- 3. Press **`I`**.
26
- 4. Type your message and press **Enter**.
20
+ ## How it works
21
+ 1. **Logging**: The message is recorded in the lane's conversation history as a system/commander message.
22
+ 2. **Injection**: If the lane's task configuration has `enableIntervention: true`, the message is injected into the agent's input stream.
23
+
24
+ ## Example
27
25
 
28
- ### 2. via CLI / Cursor Command
29
- You can also send a signal from any terminal or via the Cursor chat:
30
26
  ```bash
31
- cursorflow signal <lane-name> "Your message here"
27
+ # Provide a hint to a running agent
28
+ cursorflow signal 01-lane-1 "Make sure to export the new function from index.ts"
32
29
  ```
33
30
 
34
- ## When to use it
35
- - **Guidance**: "Focus on the `utils/` directory first."
36
- - **Correction**: "You are using the wrong API version. Use v2 instead."
37
- - **Emergency**: "Stop! I just found a critical bug in the base branch."
38
- - **Clarification**: If the agent is stuck or asking a question in its log.
39
-
40
- ## How it works
41
- 1. Your message is written to an `intervention.txt` file in the lane's log directory.
42
- 2. The CursorFlow runner, which is watching this file, detects the change.
43
- 3. **If `enableIntervention: true`**: It immediately injects your message into the `cursor-agent`'s standard input (stdin).
44
- 4. **If `enableIntervention: false`**: The message is logged but cannot be injected (warning displayed).
45
-
46
- ## Configuration
47
-
48
- ### Enable Intervention
31
+ ## Dashboard Alternative
32
+ You can also use the interactive monitor to send signals:
33
+ 1. Run `cursorflow monitor latest`.
34
+ 2. Select a lane and enter details (`→`).
35
+ 3. Press `I` to type and send an intervention message.
49
36
 
37
+ ## Note on Intervention
38
+ For the agent to receive the signal immediately, the task must be configured with:
50
39
  ```json
51
40
  {
52
41
  "enableIntervention": true,
53
- "timeout": 300000,
54
- "tasks": [
55
- {
56
- "name": "my-task",
57
- "prompt": "..."
58
- }
59
- ]
42
+ "tasks": [...]
60
43
  }
61
44
  ```
62
-
63
- ### Default Behavior (Intervention Disabled)
64
-
65
- By default, `enableIntervention` is `false` to avoid potential buffering issues. When disabled:
66
- - Signal commands will still work but messages are **logged only**
67
- - The agent will **not receive** the injected message
68
- - A warning will be shown: `Intervention requested but stdin not available`
69
-
70
- ## PID Control (Emergency Stop)
71
- If an intervention isn't enough and the agent is "looping" or stuck:
72
- - In the monitor, press **`K`** to kill the process via its PID.
73
- - This is a hard stop and will immediately terminate the `cursor-agent` for that lane.
74
-
75
- ## Troubleshooting
76
-
77
- ### "Intervention requested but stdin not available"
78
-
79
- This means `enableIntervention` is not set to `true` in your task JSON.
80
-
81
- **Solution**: Add `"enableIntervention": true` to your task configuration.
82
-
83
- ### Intervention causes timeout
84
-
85
- On some systems, enabling stdin piping can cause stdout buffering issues.
86
-
87
- **Solution**:
88
- 1. Disable intervention: `"enableIntervention": false`
89
- 2. Increase timeout: `"timeout": 600000`
90
- 3. Use `K` (Kill) in monitor for emergency stops instead
45
+ If disabled, the signal will be logged but the agent will not be interrupted.
package/dist/cli/clean.js CHANGED
@@ -42,6 +42,24 @@ const path = __importStar(require("path"));
42
42
  const logger = __importStar(require("../utils/logger"));
43
43
  const git = __importStar(require("../utils/git"));
44
44
  const config_1 = require("../utils/config");
45
+ function printHelp() {
46
+ console.log(`
47
+ Usage: cursorflow clean <type> [options]
48
+
49
+ Clean up resources created by CursorFlow.
50
+
51
+ Types:
52
+ branches Remove local feature branches
53
+ worktrees Remove temporary Git worktrees
54
+ logs Clear log directories
55
+ all Remove all of the above (default)
56
+
57
+ Options:
58
+ --dry-run Show what would be removed without deleting
59
+ --force Force removal (ignore uncommitted changes)
60
+ --help, -h Show help
61
+ `);
62
+ }
45
63
  function parseArgs(args) {
46
64
  return {
47
65
  type: args.find(a => ['branches', 'worktrees', 'logs', 'all'].includes(a)),
@@ -49,10 +67,15 @@ function parseArgs(args) {
49
67
  dryRun: args.includes('--dry-run'),
50
68
  force: args.includes('--force'),
51
69
  all: args.includes('--all'),
70
+ help: args.includes('--help') || args.includes('-h'),
52
71
  };
53
72
  }
54
73
  async function clean(args) {
55
74
  const options = parseArgs(args);
75
+ if (options.help) {
76
+ printHelp();
77
+ return;
78
+ }
56
79
  const config = (0, config_1.loadConfig)();
57
80
  const repoRoot = git.getRepoRoot();
58
81
  logger.section('🧹 Cleaning CursorFlow Resources');
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/cli/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/cli/clean.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,7 @@ var __importStar = (this && this.__importStar) || (function () {
47
47
  })();
48
48
  const logger = __importStar(require("../utils/logger"));
49
49
  const doctor_1 = require("../utils/doctor");
50
+ const cursor_agent_1 = require("../utils/cursor-agent");
50
51
  function printHelp() {
51
52
  console.log(`
52
53
  Usage: cursorflow doctor [options]
@@ -58,12 +59,13 @@ Options:
58
59
  --tasks-dir <path> Also validate lane files (run preflight)
59
60
  --executor <type> cursor-agent | cloud
60
61
  --no-cursor Skip Cursor Agent install/auth checks
62
+ --test-agent Run interactive agent test (to approve MCP/permissions)
61
63
  --help, -h Show help
62
64
 
63
65
  Examples:
64
66
  cursorflow doctor
67
+ cursorflow doctor --test-agent
65
68
  cursorflow doctor --tasks-dir _cursorflow/tasks/demo-test/
66
- cursorflow doctor --json
67
69
  `);
68
70
  }
69
71
  function parseArgs(args) {
@@ -74,6 +76,7 @@ function parseArgs(args) {
74
76
  tasksDir: tasksDirIdx >= 0 ? (args[tasksDirIdx + 1] || null) : null,
75
77
  executor: executorIdx >= 0 ? (args[executorIdx + 1] || null) : null,
76
78
  includeCursorAgentChecks: !args.includes('--no-cursor'),
79
+ testAgent: args.includes('--test-agent'),
77
80
  };
78
81
  if (args.includes('--help') || args.includes('-h')) {
79
82
  printHelp();
@@ -90,6 +93,8 @@ function printHumanReport(report) {
90
93
  logger.info(`tasks: ${report.context.tasksDir}`);
91
94
  if (report.issues.length === 0) {
92
95
  logger.success('All checks passed');
96
+ console.log('\n💡 Tip: If this is your first run, we recommend running:');
97
+ console.log(' cursorflow doctor --test-agent\n');
93
98
  return;
94
99
  }
95
100
  for (const issue of report.issues) {
@@ -121,6 +126,10 @@ function printHumanReport(report) {
121
126
  }
122
127
  async function doctor(args) {
123
128
  const options = parseArgs(args);
129
+ if (options.testAgent) {
130
+ const success = (0, cursor_agent_1.runInteractiveAgentTest)();
131
+ process.exit(success ? 0 : 1);
132
+ }
124
133
  const report = (0, doctor_1.runDoctor)({
125
134
  cwd: process.cwd(),
126
135
  tasksDir: options.tasksDir || undefined,
@@ -133,6 +142,10 @@ async function doctor(args) {
133
142
  else {
134
143
  printHumanReport(report);
135
144
  }
145
+ // Save successful doctor run status
146
+ if (report.ok && report.context.repoRoot) {
147
+ (0, doctor_1.saveDoctorStatus)(report.context.repoRoot, report);
148
+ }
136
149
  process.exit(report.ok ? 0 : 1);
137
150
  }
138
151
  module.exports = doctor;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}