@litmers/cursorflow-orchestrator 0.1.31 → 0.1.36

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 (150) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +182 -59
  3. package/commands/cursorflow-add.md +159 -0
  4. package/commands/cursorflow-doctor.md +45 -23
  5. package/commands/cursorflow-monitor.md +23 -2
  6. package/commands/cursorflow-new.md +87 -0
  7. package/commands/cursorflow-run.md +60 -111
  8. package/dist/cli/add.d.ts +7 -0
  9. package/dist/cli/add.js +377 -0
  10. package/dist/cli/add.js.map +1 -0
  11. package/dist/cli/clean.js +1 -0
  12. package/dist/cli/clean.js.map +1 -1
  13. package/dist/cli/config.d.ts +7 -0
  14. package/dist/cli/config.js +181 -0
  15. package/dist/cli/config.js.map +1 -0
  16. package/dist/cli/doctor.js +47 -4
  17. package/dist/cli/doctor.js.map +1 -1
  18. package/dist/cli/index.js +34 -30
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/logs.js +17 -34
  21. package/dist/cli/logs.js.map +1 -1
  22. package/dist/cli/monitor.js +62 -65
  23. package/dist/cli/monitor.js.map +1 -1
  24. package/dist/cli/new.d.ts +7 -0
  25. package/dist/cli/new.js +232 -0
  26. package/dist/cli/new.js.map +1 -0
  27. package/dist/cli/prepare.js +95 -193
  28. package/dist/cli/prepare.js.map +1 -1
  29. package/dist/cli/resume.js +57 -68
  30. package/dist/cli/resume.js.map +1 -1
  31. package/dist/cli/run.js +60 -30
  32. package/dist/cli/run.js.map +1 -1
  33. package/dist/cli/stop.js +6 -0
  34. package/dist/cli/stop.js.map +1 -1
  35. package/dist/cli/tasks.d.ts +5 -3
  36. package/dist/cli/tasks.js +181 -29
  37. package/dist/cli/tasks.js.map +1 -1
  38. package/dist/core/failure-policy.d.ts +9 -0
  39. package/dist/core/failure-policy.js +9 -0
  40. package/dist/core/failure-policy.js.map +1 -1
  41. package/dist/core/orchestrator.d.ts +20 -6
  42. package/dist/core/orchestrator.js +215 -334
  43. package/dist/core/orchestrator.js.map +1 -1
  44. package/dist/core/runner/agent.d.ts +27 -0
  45. package/dist/core/runner/agent.js +294 -0
  46. package/dist/core/runner/agent.js.map +1 -0
  47. package/dist/core/runner/index.d.ts +5 -0
  48. package/dist/core/runner/index.js +22 -0
  49. package/dist/core/runner/index.js.map +1 -0
  50. package/dist/core/runner/pipeline.d.ts +9 -0
  51. package/dist/core/runner/pipeline.js +539 -0
  52. package/dist/core/runner/pipeline.js.map +1 -0
  53. package/dist/core/runner/prompt.d.ts +25 -0
  54. package/dist/core/runner/prompt.js +175 -0
  55. package/dist/core/runner/prompt.js.map +1 -0
  56. package/dist/core/runner/task.d.ts +26 -0
  57. package/dist/core/runner/task.js +283 -0
  58. package/dist/core/runner/task.js.map +1 -0
  59. package/dist/core/runner/utils.d.ts +37 -0
  60. package/dist/core/runner/utils.js +161 -0
  61. package/dist/core/runner/utils.js.map +1 -0
  62. package/dist/core/runner.d.ts +2 -96
  63. package/dist/core/runner.js +11 -1136
  64. package/dist/core/runner.js.map +1 -1
  65. package/dist/core/stall-detection.d.ts +326 -0
  66. package/dist/core/stall-detection.js +781 -0
  67. package/dist/core/stall-detection.js.map +1 -0
  68. package/dist/services/logging/console.js +2 -1
  69. package/dist/services/logging/console.js.map +1 -1
  70. package/dist/types/config.d.ts +6 -6
  71. package/dist/types/flow.d.ts +84 -0
  72. package/dist/types/flow.js +10 -0
  73. package/dist/types/flow.js.map +1 -0
  74. package/dist/types/index.d.ts +1 -0
  75. package/dist/types/index.js +3 -3
  76. package/dist/types/index.js.map +1 -1
  77. package/dist/types/lane.d.ts +0 -2
  78. package/dist/types/logging.d.ts +5 -1
  79. package/dist/types/task.d.ts +7 -11
  80. package/dist/utils/config.d.ts +5 -1
  81. package/dist/utils/config.js +15 -16
  82. package/dist/utils/config.js.map +1 -1
  83. package/dist/utils/dependency.d.ts +36 -1
  84. package/dist/utils/dependency.js +256 -1
  85. package/dist/utils/dependency.js.map +1 -1
  86. package/dist/utils/doctor.js +40 -8
  87. package/dist/utils/doctor.js.map +1 -1
  88. package/dist/utils/enhanced-logger.d.ts +45 -82
  89. package/dist/utils/enhanced-logger.js +239 -844
  90. package/dist/utils/enhanced-logger.js.map +1 -1
  91. package/dist/utils/flow.d.ts +9 -0
  92. package/dist/utils/flow.js +73 -0
  93. package/dist/utils/flow.js.map +1 -0
  94. package/dist/utils/git.d.ts +29 -0
  95. package/dist/utils/git.js +115 -5
  96. package/dist/utils/git.js.map +1 -1
  97. package/dist/utils/state.js +0 -2
  98. package/dist/utils/state.js.map +1 -1
  99. package/dist/utils/task-service.d.ts +2 -2
  100. package/dist/utils/task-service.js +40 -31
  101. package/dist/utils/task-service.js.map +1 -1
  102. package/package.json +4 -3
  103. package/src/cli/add.ts +397 -0
  104. package/src/cli/clean.ts +1 -0
  105. package/src/cli/config.ts +177 -0
  106. package/src/cli/doctor.ts +48 -4
  107. package/src/cli/index.ts +36 -32
  108. package/src/cli/logs.ts +20 -33
  109. package/src/cli/monitor.ts +70 -75
  110. package/src/cli/new.ts +235 -0
  111. package/src/cli/prepare.ts +98 -205
  112. package/src/cli/resume.ts +61 -76
  113. package/src/cli/run.ts +333 -306
  114. package/src/cli/stop.ts +8 -0
  115. package/src/cli/tasks.ts +200 -21
  116. package/src/core/failure-policy.ts +9 -0
  117. package/src/core/orchestrator.ts +279 -379
  118. package/src/core/runner/agent.ts +314 -0
  119. package/src/core/runner/index.ts +6 -0
  120. package/src/core/runner/pipeline.ts +567 -0
  121. package/src/core/runner/prompt.ts +174 -0
  122. package/src/core/runner/task.ts +320 -0
  123. package/src/core/runner/utils.ts +142 -0
  124. package/src/core/runner.ts +8 -1347
  125. package/src/core/stall-detection.ts +936 -0
  126. package/src/services/logging/console.ts +2 -1
  127. package/src/types/config.ts +6 -6
  128. package/src/types/flow.ts +91 -0
  129. package/src/types/index.ts +15 -3
  130. package/src/types/lane.ts +0 -2
  131. package/src/types/logging.ts +5 -1
  132. package/src/types/task.ts +7 -11
  133. package/src/utils/config.ts +16 -17
  134. package/src/utils/dependency.ts +311 -2
  135. package/src/utils/doctor.ts +36 -8
  136. package/src/utils/enhanced-logger.ts +264 -927
  137. package/src/utils/flow.ts +42 -0
  138. package/src/utils/git.ts +145 -5
  139. package/src/utils/state.ts +0 -2
  140. package/src/utils/task-service.ts +48 -40
  141. package/commands/cursorflow-review.md +0 -56
  142. package/commands/cursorflow-runs.md +0 -59
  143. package/dist/cli/runs.d.ts +0 -5
  144. package/dist/cli/runs.js +0 -214
  145. package/dist/cli/runs.js.map +0 -1
  146. package/dist/core/reviewer.d.ts +0 -66
  147. package/dist/core/reviewer.js +0 -265
  148. package/dist/core/reviewer.js.map +0 -1
  149. package/src/cli/runs.ts +0 -212
  150. package/src/core/reviewer.ts +0 -285
@@ -0,0 +1,87 @@
1
+ # cursorflow new
2
+
3
+ Flow와 Lane을 생성합니다.
4
+
5
+ ## 사용법
6
+
7
+ ```bash
8
+ cursorflow new <FlowName> --lanes "lane1,lane2,..."
9
+ ```
10
+
11
+ ## 설명
12
+
13
+ 새로운 Flow 디렉토리를 생성하고, 지정된 Lane 파일들의 뼈대를 만듭니다.
14
+ 각 Lane에 실제 Task를 추가하려면 `cursorflow add` 명령을 사용하세요.
15
+
16
+ ## 옵션
17
+
18
+ | 옵션 | 설명 | 예시 |
19
+ |------|------|------|
20
+ | `--lanes <names>` | 콤마로 구분된 레인 이름 목록 (필수) | `--lanes "backend,frontend"` |
21
+
22
+ ## 예시
23
+
24
+ ### 기본 사용
25
+
26
+ ```bash
27
+ # 백엔드와 프론트엔드 2개 레인 생성
28
+ cursorflow new ShopFeature --lanes "backend,frontend"
29
+ ```
30
+
31
+ ### 3개 레인 생성
32
+
33
+ ```bash
34
+ # API, Web, Mobile 3개 레인 생성
35
+ cursorflow new SearchFeature --lanes "api,web,mobile"
36
+ ```
37
+
38
+ ## 생성 결과
39
+
40
+ ```
41
+ _cursorflow/flows/001_ShopFeature/
42
+ ├── flow.meta.json # Flow 메타데이터
43
+ ├── 01-backend.json # Lane 1 (빈 상태)
44
+ └── 02-frontend.json # Lane 2 (빈 상태)
45
+ ```
46
+
47
+ ### flow.meta.json 스키마
48
+
49
+ ```json
50
+ {
51
+ "id": "001",
52
+ "name": "ShopFeature",
53
+ "createdAt": "2024-12-25T10:30:00Z",
54
+ "createdBy": "user",
55
+ "baseBranch": "main",
56
+ "status": "pending",
57
+ "lanes": ["backend", "frontend"]
58
+ }
59
+ ```
60
+
61
+ ### Lane 파일 스키마 (빈 상태)
62
+
63
+ ```json
64
+ {
65
+ "laneName": "backend",
66
+ "tasks": []
67
+ }
68
+ ```
69
+
70
+ ## 다음 단계
71
+
72
+ Flow 생성 후, 각 Lane에 Task를 추가합니다:
73
+
74
+ ```bash
75
+ cursorflow add ShopFeature backend \
76
+ --task "name=implement|prompt=API 구현"
77
+
78
+ cursorflow add ShopFeature frontend \
79
+ --task "name=ui|prompt=UI 구현" \
80
+ --after "backend:implement"
81
+ ```
82
+
83
+ ## 관련 명령어
84
+
85
+ - [cursorflow add](cursorflow-add.md) - Lane에 Task 추가
86
+ - [cursorflow run](cursorflow-run.md) - Flow 실행
87
+
@@ -2,62 +2,66 @@
2
2
 
3
3
  ## Overview
4
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.
5
+ Execute AI agent orchestration using Flow configurations. CursorFlow uses a DAG (Directed Acyclic Graph) scheduler to handle task dependencies and automatic branch merging.
6
6
 
7
7
  ## Workflow
8
8
 
9
9
  ```
10
10
  ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
11
- │ 1. Create Lanes │ ──▶ │ 2. Add Tasks │ ──▶ │ 3. Validate │ ──▶ │ 4. Run │
12
- │ (prepare) │ │ (prepare) │ │ (doctor) │ │ (run) │
11
+ │ 1. Create Flow │ ──▶ │ 2. Add Tasks │ ──▶ │ 3. Validate │ ──▶ │ 4. Run │
12
+ │ (new) │ │ (add) │ │ (doctor) │ │ (run) │
13
13
  └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
14
14
  ```
15
15
 
16
16
  ## Usage
17
17
 
18
18
  ```bash
19
- cursorflow run <tasks-dir> [options]
19
+ cursorflow run <flow-name> [options]
20
+ cursorflow run <flow-path> [options]
20
21
  ```
21
22
 
22
23
  ### Quick Start
23
24
 
24
25
  ```bash
25
- # Step 1: Create lanes
26
- cursorflow prepare AddAPI --prompt "Create REST API for users" --criteria "CRUD works,Tests pass"
26
+ # Step 1: Create flow and lanes
27
+ cursorflow new AddAPI --lanes "backend,frontend"
27
28
 
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"
29
+ # Step 2: Add tasks to lanes
30
+ cursorflow add AddAPI backend \
31
+ --task "name=implement|prompt=Create REST API for users"
32
+
33
+ cursorflow add AddAPI frontend \
34
+ --task "name=ui|prompt=Create frontend UI" \
35
+ --after "backend:implement"
31
36
 
32
37
  # Step 3: Validate configuration
33
- cursorflow doctor --tasks-dir _cursorflow/tasks/2412211530_AddAPI
38
+ cursorflow doctor AddAPI
34
39
 
35
40
  # Step 4: Run
36
- cursorflow run _cursorflow/tasks/2412211530_AddAPI
37
-
38
- # Or run the latest prepared task
39
- cursorflow run latest
41
+ cursorflow run AddAPI
40
42
  ```
41
43
 
42
44
  ## How It Works
43
45
 
44
- 1. **Load**: Read all JSON files from the tasks directory
46
+ 1. **Load**: Read all JSON files from the flow directory (excluding `flow.meta.json`)
45
47
  2. **Validate**: Check `tasks` array, required fields (`name`, `prompt`)
46
48
  3. **Resolve**: Build execution order from `dependsOn` dependencies
47
49
  4. **Execute**:
48
50
  - 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
+ - When a task completes, unlock dependent tasks
52
+ - **Dependent tasks auto-merge predecessor branches before starting**
51
53
  5. **Monitor**: Heartbeat logs every 30 seconds
52
54
 
53
55
  ## Options
54
56
 
55
57
  | Option | Description |
56
58
  |--------|-------------|
57
- | `<tasks-dir>` | Directory containing JSON task files |
59
+ | `<flow-name>` | Flow name (e.g., `AddAPI`) |
60
+ | `<flow-path>` | Flow directory path (e.g., `_cursorflow/flows/001_AddAPI`) |
58
61
  | `--max-concurrent <num>` | Limit concurrent lane execution |
59
62
  | `--executor <type>` | `cursor-agent` (default) or `cloud` |
60
63
  | `--skip-doctor` | Skip environment checks (not recommended) |
64
+ | `--no-git` | Skip Git operations (worktree, commits, push) |
61
65
  | `--dry-run` | Show execution plan without running |
62
66
 
63
67
  ## Execution Flow
@@ -65,15 +69,16 @@ cursorflow run latest
65
69
  ### Single Lane
66
70
 
67
71
  ```bash
68
- cursorflow prepare SimpleFix --prompt "Fix the bug"
69
- cursorflow run _cursorflow/tasks/2412211530_SimpleFix
72
+ cursorflow new SimpleFix --lanes "main"
73
+ cursorflow add SimpleFix main --task "name=fix|prompt=Fix the bug"
74
+ cursorflow run SimpleFix
70
75
  ```
71
76
 
72
77
  ```
73
78
  ┌─────────────────────────────────────────────────────────┐
74
- 01-lane-1
79
+ main
75
80
  │ ┌─────────┐ │
76
- │ │implement│ → AI executes → Review → Complete
81
+ │ │ fix │ → AI executes → Complete
77
82
  │ └─────────┘ │
78
83
  └─────────────────────────────────────────────────────────┘
79
84
  ```
@@ -81,108 +86,67 @@ cursorflow run _cursorflow/tasks/2412211530_SimpleFix
81
86
  ### Multiple Tasks in Lane
82
87
 
83
88
  ```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"
89
+ cursorflow add Feature api \
90
+ --task "name=plan|prompt=Create plan" \
91
+ --task "name=implement|prompt=Build feature"
87
92
  ```
88
93
 
89
94
  ```
90
95
  ┌─────────────────────────────────────────────────────────┐
91
- 01-lane-1
96
+ api
92
97
  │ ┌────┐ ┌─────────┐ │
93
- │ │plan│ ──▶ │implement│ → Review → Complete
98
+ │ │plan│ ──▶ │implement│ → Complete
94
99
  │ └────┘ └─────────┘ │
95
100
  └─────────────────────────────────────────────────────────┘
96
101
  ```
97
102
 
98
- ### Sequential Lanes (with `--sequential`)
103
+ ### Sequential Lanes (with dependencies)
99
104
 
100
105
  ```bash
101
- cursorflow prepare FullStack --lanes 3 --sequential \
102
- --prompt "Implement your layer"
106
+ cursorflow new FullStack --lanes "backend,api,frontend"
107
+
108
+ cursorflow add FullStack backend --task "name=db|prompt=Setup database"
109
+ cursorflow add FullStack api --task "name=impl|prompt=Create API" --after "backend"
110
+ cursorflow add FullStack frontend --task "name=ui|prompt=Create UI" --after "api"
103
111
  ```
104
112
 
105
113
  ```
106
114
  ┌───────────┐ ┌───────────┐ ┌───────────┐
107
- 01-lane-1 │ ──▶ │ 02-lane-2 │ ──▶ │ 03-lane-3
108
- (DB) │ │ (API) │ │ (UI)
115
+ backend │ ──▶ │ api │ ──▶ │ frontend
116
+ (db) │ │ (impl) │ │ (ui)
109
117
  └───────────┘ └───────────┘ └───────────┘
110
118
  │ │
111
- merges 01 merges 01,02
119
+ merges merges
120
+ backend backend,api
112
121
  ```
113
122
 
114
123
  ### Parallel Lanes
115
124
 
116
125
  ```bash
117
- cursorflow prepare FrontBack --lanes 2 \
118
- --prompt "Implement your layer"
126
+ cursorflow new FrontBack --lanes "frontend,backend"
127
+
128
+ cursorflow add FrontBack frontend --task "name=ui|prompt=Create UI"
129
+ cursorflow add FrontBack backend --task "name=api|prompt=Create API"
119
130
  ```
120
131
 
121
132
  ```
122
133
  ┌───────────┐
123
- 01-lane-1 │ (Frontend)
134
+ frontend │ (UI)
124
135
  └───────────┘
125
136
  ─── both run in parallel
126
137
  ┌───────────┐
127
- 02-lane-2 │ (Backend)
138
+ backend │ (API)
128
139
  └───────────┘
129
140
  ```
130
141
 
131
- ## JSON Schema (RunnerConfig)
132
-
133
- Each JSON file in the tasks directory follows this schema:
134
-
135
- ```json
136
- {
137
- "baseBranch": "main",
138
- "branchPrefix": "feature/lane-1-",
139
- "timeout": 600000,
140
- "enableIntervention": false,
141
- "dependsOn": ["01-lane-1"],
142
- "dependencyPolicy": {
143
- "allowDependencyChange": false,
144
- "lockfileReadOnly": true
145
- },
146
- "enableReview": true,
147
- "reviewModel": "sonnet-4.5-thinking",
148
- "maxReviewIterations": 3,
149
- "tasks": [
150
- {
151
- "name": "implement",
152
- "prompt": "Create a reusable button component...",
153
- "model": "sonnet-4.5",
154
- "acceptanceCriteria": ["Build passes", "Tests pass"]
155
- }
156
- ]
157
- }
158
- ```
159
-
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: 600000) |
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
- | `dependsOn` | string[] | No | Task-level dependencies (lane:task) |
185
- | `timeout` | number | No | Task-specific timeout in ms |
142
+ ## Log Format
143
+
144
+ Logs use the format `[L{n}-T{t}-{lanename}]`:
145
+ - `L{n}`: Lane number (1-indexed)
146
+ - `T{t}`: Task number (1-indexed)
147
+ - `{lanename}`: First 10 characters of lane name
148
+
149
+ Example: `[L1-T2-backend]` = Lane 1, Task 2, lane name "backend"
186
150
 
187
151
  ## Monitoring During Execution
188
152
 
@@ -190,8 +154,8 @@ Each JSON file in the tasks directory follows this schema:
190
154
  # In another terminal
191
155
  cursorflow monitor latest
192
156
 
193
- # Or specify the task directory
194
- cursorflow monitor _cursorflow/tasks/2412211530_AddAPI
157
+ # Or specify the run directory
158
+ cursorflow monitor _cursorflow/logs/runs/run-xxxxx
195
159
  ```
196
160
 
197
161
  The monitor shows:
@@ -221,33 +185,18 @@ Circular dependency detected
221
185
  ```
222
186
  → Check your `dependsOn` fields for cycles (A→B, B→A)
223
187
 
224
- ```
225
- Unknown dependency: 01-lane-99
226
- ```
227
- → Verify the lane name in `dependsOn` matches an actual JSON filename
228
-
229
- ### Merge Conflicts
230
-
231
- When a dependent lane's auto-merge fails:
232
-
233
- 1. Find the worktree path in `cursorflow monitor`
234
- 2. Navigate to the worktree directory
235
- 3. Resolve conflicts manually and commit
236
- 4. Resume with `cursorflow resume <lane-name>`
237
-
238
188
  ### Lane Stuck
239
189
 
240
190
  If a lane stops responding:
241
191
 
242
192
  1. Check the agent window in Cursor IDE
243
193
  2. Use `cursorflow signal <lane-name> --message "continue"` to nudge
244
- 3. Or terminate and restart with `cursorflow run --resume`
194
+ 3. Or use `cursorflow resume --all` to resume
245
195
 
246
196
  ## Best Practices
247
197
 
248
- 1. **Always Validate First**: Run `cursorflow doctor --tasks-dir <dir>` before `run`
198
+ 1. **Always Validate First**: Run `cursorflow doctor <flow-name>` before `run`
249
199
  2. **Start Small**: Test with a single lane before scaling up
250
200
  3. **Use `--dry-run`**: Preview execution plan before committing
251
201
  4. **Monitor Actively**: Keep `cursorflow monitor` running in a separate terminal
252
202
  5. **Plan Dependencies**: Draw out the DAG before running complex workflows
253
- 6. **Include Verification**: Add verify tasks to catch edge cases
@@ -0,0 +1,7 @@
1
+ /**
2
+ * CursorFlow 'add' command
3
+ *
4
+ * Adds tasks to an existing Lane in a Flow
5
+ */
6
+ declare function addTasks(args: string[]): Promise<void>;
7
+ export = addTasks;