@litmers/cursorflow-orchestrator 0.2.8 → 0.2.10
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.
- package/CHANGELOG.md +39 -29
- package/commands/cursorflow-status.md +157 -0
- package/dist/cli/add.js +118 -0
- package/dist/cli/add.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/resume.js +67 -13
- package/dist/cli/resume.js.map +1 -1
- package/dist/cli/status.d.ts +5 -0
- package/dist/cli/status.js +500 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/core/git-pipeline-coordinator.d.ts +8 -1
- package/dist/core/git-pipeline-coordinator.js +23 -4
- package/dist/core/git-pipeline-coordinator.js.map +1 -1
- package/dist/core/orchestrator.js +73 -16
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/runner/pipeline.js +13 -3
- package/dist/core/runner/pipeline.js.map +1 -1
- package/dist/utils/git.d.ts +18 -0
- package/dist/utils/git.js +71 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/task-service.js +2 -1
- package/dist/utils/task-service.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/add.ts +145 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/resume.ts +70 -14
- package/src/cli/status.ts +551 -0
- package/src/core/git-pipeline-coordinator.ts +29 -5
- package/src/core/orchestrator.ts +81 -16
- package/src/core/runner/pipeline.ts +14 -3
- package/src/utils/git.ts +90 -0
- package/src/utils/task-service.ts +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,32 +1,42 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
## [0.2.
|
|
9
|
-
|
|
10
|
-
### Added
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.2.9] - 2026-01-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Git Push Fallback**: New `pushWithFallbackBranchName` function that automatically renames branch and retries when push is rejected due to remote conflicts.
|
|
12
|
+
- **Unit Tests**: Comprehensive test coverage for push fallback functionality.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **Final Consolidation**: Fixed push rejection errors when merged lane branches already exist on remote with different history.
|
|
16
|
+
- **Flow Integration**: Push errors no longer fail the entire flow - branches are automatically renamed with `-merged-{timestamp}` suffix.
|
|
17
|
+
|
|
18
|
+
## [0.2.6] - 2025-12-30
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- **Flow Auto-Completion**: Automatic merging of all successful lane branches into a unified `feature/{flow}-integrated` branch.
|
|
22
|
+
- **Cleanup Automation**: Automatic deletion of temporary lane branches and worktrees after successful integration.
|
|
23
|
+
- **Manual Completion CLI**: New `cursorflow complete <flow>` command for manual flow integration and recovery.
|
|
24
|
+
- **Flow Meta Tracking**: Enhanced `flow.meta.json` with integration status, target branch, and error reporting.
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
- **Event System**: Refactored `CursorFlowEvents` to better handle `runId` and completion events.
|
|
28
|
+
- **Interactive Dashboard**: Updated UI to reflect completion and integration states.
|
|
29
|
+
- **Architecture**: Added ADR-0006 and updated high-level workflow diagrams.
|
|
30
|
+
|
|
31
|
+
## [0.2.5] - 2025-12-28
|
|
32
|
+
- Internal release with logging and hook improvements.
|
|
33
|
+
|
|
34
|
+
## [0.2.4] - 2025-12-28
|
|
35
|
+
- Internal release with build fixes and monitor UI updates.
|
|
36
|
+
|
|
37
|
+
## [0.2.3] - 2025-12-28
|
|
38
|
+
- Chore: bump version to v0.2.3.
|
|
39
|
+
|
|
30
40
|
|
|
31
41
|
## [0.1.37] - 2025-12-26
|
|
32
42
|
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# cursorflow status
|
|
2
|
+
|
|
3
|
+
런(Run)의 레인별 상세 상태를 조회합니다.
|
|
4
|
+
|
|
5
|
+
## 사용법
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cursorflow status [run-id] [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 옵션
|
|
12
|
+
|
|
13
|
+
| 옵션 | 설명 |
|
|
14
|
+
|------|------|
|
|
15
|
+
| `[run-id]` | 조회할 런 ID (기본: 최신 런) |
|
|
16
|
+
| `--lane <name>` | 특정 레인의 상세 정보만 표시 |
|
|
17
|
+
| `--json` | JSON 형식으로 출력 |
|
|
18
|
+
| `--watch` | 실시간 갱신 모드 (2초마다) |
|
|
19
|
+
| `--help, -h` | 도움말 표시 |
|
|
20
|
+
|
|
21
|
+
## 예시
|
|
22
|
+
|
|
23
|
+
### 기본 상태 조회
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# 최신 런 상태 조회
|
|
27
|
+
cursorflow status
|
|
28
|
+
|
|
29
|
+
# 특정 런 상태 조회
|
|
30
|
+
cursorflow status run-1234567890
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 출력 예시
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
📊 Run Status
|
|
37
|
+
────────────────────────────────────────────────────────────────────────────────
|
|
38
|
+
Run ID: run-1703145600000
|
|
39
|
+
Task: MyFeature
|
|
40
|
+
Status: running
|
|
41
|
+
Started: 2024-12-21 15:00:00
|
|
42
|
+
Duration: 5m 32s
|
|
43
|
+
|
|
44
|
+
[████████████████████ ] 2/4 completed
|
|
45
|
+
|
|
46
|
+
────────────────────────────────────────────────────────────────────────────────
|
|
47
|
+
Lane Status Progress Duration PID Branch
|
|
48
|
+
────────────────────────────────────────────────────────────────────────────────
|
|
49
|
+
01-backend completed 3/3 2m 15s - cf/MyFeature/backend
|
|
50
|
+
02-api completed 2/2 1m 45s - cf/MyFeature/api
|
|
51
|
+
03-frontend running 1/3 1m 32s 12345 cf/MyFeature/frontend
|
|
52
|
+
04-mobile pending 0/2 - - -
|
|
53
|
+
────────────────────────────────────────────────────────────────────────────────
|
|
54
|
+
|
|
55
|
+
Summary: 2 completed | 1 running | 1 pending
|
|
56
|
+
|
|
57
|
+
Tip: Run cursorflow monitor for interactive monitoring
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 특정 레인 상세 정보
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cursorflow status --lane frontend
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
🔍 Lane Details: frontend
|
|
68
|
+
────────────────────────────────────────────────────────
|
|
69
|
+
Run: run-1703145600000
|
|
70
|
+
Status: running
|
|
71
|
+
Progress: 1/3 (33%)
|
|
72
|
+
Branch: cf/MyFeature/frontend
|
|
73
|
+
Worktree: /path/to/worktree
|
|
74
|
+
PID: 12345
|
|
75
|
+
Duration: 1m 32s
|
|
76
|
+
Started: 2024-12-21 15:02:00
|
|
77
|
+
Ended: -
|
|
78
|
+
Chat ID: abc123
|
|
79
|
+
Completed Tasks: setup
|
|
80
|
+
────────────────────────────────────────────────────────
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### JSON 출력
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
cursorflow status --json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
스크립트나 자동화에서 사용할 수 있는 JSON 형식으로 출력합니다.
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"runId": "run-1703145600000",
|
|
94
|
+
"taskName": "MyFeature",
|
|
95
|
+
"status": "running",
|
|
96
|
+
"lanes": [
|
|
97
|
+
{
|
|
98
|
+
"name": "frontend",
|
|
99
|
+
"status": "running",
|
|
100
|
+
"progress": "33%",
|
|
101
|
+
"currentTask": 1,
|
|
102
|
+
"totalTasks": 3,
|
|
103
|
+
"branch": "cf/MyFeature/frontend",
|
|
104
|
+
"pid": 12345,
|
|
105
|
+
"processAlive": true
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"summary": {
|
|
109
|
+
"total": 4,
|
|
110
|
+
"running": 1,
|
|
111
|
+
"completed": 2,
|
|
112
|
+
"failed": 0,
|
|
113
|
+
"pending": 1
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 실시간 모니터링
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cursorflow status --watch
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
2초마다 자동으로 상태를 갱신합니다. `Ctrl+C`로 종료합니다.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 상태 설명
|
|
129
|
+
|
|
130
|
+
| 상태 | 색상 | 설명 |
|
|
131
|
+
|------|------|------|
|
|
132
|
+
| `completed` | 녹색 | 모든 태스크 완료 |
|
|
133
|
+
| `running` | 청록색 | 현재 실행 중 |
|
|
134
|
+
| `pending` | 노란색 | 아직 시작되지 않음 |
|
|
135
|
+
| `waiting` | 노란색 | 의존성 대기 중 |
|
|
136
|
+
| `paused` | 보라색 | 일시 중지됨 |
|
|
137
|
+
| `failed` | 빨간색 | 오류 발생 |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 관련 명령어
|
|
142
|
+
|
|
143
|
+
| 명령어 | 설명 |
|
|
144
|
+
|--------|------|
|
|
145
|
+
| `cursorflow monitor` | 인터랙티브 모니터링 대시보드 |
|
|
146
|
+
| `cursorflow resume --status` | 재개 가능한 레인 확인 |
|
|
147
|
+
| `cursorflow logs` | 실행 로그 확인 |
|
|
148
|
+
| `cursorflow stop` | 실행 중인 런 중지 |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 팁
|
|
153
|
+
|
|
154
|
+
1. **빠른 상태 확인**: `cursorflow status`로 최신 런 상태를 즉시 확인
|
|
155
|
+
2. **자동화 연동**: `--json` 옵션으로 CI/CD 스크립트에서 활용
|
|
156
|
+
3. **문제 진단**: `--lane` 옵션으로 특정 레인의 상세 정보 확인
|
|
157
|
+
4. **실시간 추적**: `--watch` 옵션으로 변화 감지
|
package/dist/cli/add.js
CHANGED
|
@@ -42,6 +42,53 @@ const path = __importStar(require("path"));
|
|
|
42
42
|
const logger = __importStar(require("../utils/logger"));
|
|
43
43
|
const config_1 = require("../utils/config");
|
|
44
44
|
const path_1 = require("../utils/path");
|
|
45
|
+
/**
|
|
46
|
+
* Detect cyclic dependencies in task graph using DFS
|
|
47
|
+
* Returns the cycle path if found, empty array otherwise
|
|
48
|
+
*/
|
|
49
|
+
function detectCyclicDependencies(tasks) {
|
|
50
|
+
const graph = new Map();
|
|
51
|
+
for (const task of tasks) {
|
|
52
|
+
graph.set(task.id, task.dependsOn);
|
|
53
|
+
// Also add dependency nodes to graph if they don't exist
|
|
54
|
+
for (const dep of task.dependsOn) {
|
|
55
|
+
if (!graph.has(dep)) {
|
|
56
|
+
graph.set(dep, []);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const visited = new Set();
|
|
61
|
+
const recursionStack = new Set();
|
|
62
|
+
const cycle = [];
|
|
63
|
+
function dfs(node) {
|
|
64
|
+
if (recursionStack.has(node)) {
|
|
65
|
+
cycle.push(node);
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (visited.has(node)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
visited.add(node);
|
|
72
|
+
recursionStack.add(node);
|
|
73
|
+
const deps = graph.get(node) || [];
|
|
74
|
+
for (const dep of deps) {
|
|
75
|
+
if (dfs(dep)) {
|
|
76
|
+
cycle.unshift(node);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
recursionStack.delete(node);
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
for (const node of graph.keys()) {
|
|
84
|
+
if (!visited.has(node)) {
|
|
85
|
+
if (dfs(node)) {
|
|
86
|
+
return cycle;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
45
92
|
function printHelp() {
|
|
46
93
|
console.log(`
|
|
47
94
|
\x1b[1mcursorflow add\x1b[0m - Lane에 Task 추가
|
|
@@ -210,6 +257,66 @@ function findLaneFile(flowDir, laneName) {
|
|
|
210
257
|
}
|
|
211
258
|
return null;
|
|
212
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Extract lane name from file path (handles both "backend.json" and "01-backend.json" formats)
|
|
262
|
+
*/
|
|
263
|
+
function getLaneNameFromFile(laneFile) {
|
|
264
|
+
const fileName = path.basename(laneFile);
|
|
265
|
+
const baseName = fileName.replace('.json', '');
|
|
266
|
+
// Remove numeric prefix if present (e.g., "01-backend" -> "backend")
|
|
267
|
+
const match = baseName.match(/^\d+-(.+)$/);
|
|
268
|
+
return match ? match[1] : baseName;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Collect all tasks from all lanes in a flow for cycle detection
|
|
272
|
+
* Includes existing tasks and new tasks to be added
|
|
273
|
+
*/
|
|
274
|
+
function collectAllTasksFromFlow(flowDir, currentLaneName, currentLaneConfig, newTasks) {
|
|
275
|
+
const allTasks = [];
|
|
276
|
+
// Get all lane files in the flow
|
|
277
|
+
const laneFiles = fs.readdirSync(flowDir)
|
|
278
|
+
.filter(name => name.endsWith('.json') && name !== 'flow.meta.json');
|
|
279
|
+
for (const fileName of laneFiles) {
|
|
280
|
+
const filePath = (0, path_1.safeJoin)(flowDir, fileName);
|
|
281
|
+
const baseName = fileName.replace('.json', '');
|
|
282
|
+
// Extract lane name (handles "01-backend.json" -> "backend")
|
|
283
|
+
const match = baseName.match(/^\d+-(.+)$/);
|
|
284
|
+
const laneName = match ? match[1] : baseName;
|
|
285
|
+
try {
|
|
286
|
+
// For current lane, use the config with new tasks
|
|
287
|
+
if (laneName === currentLaneName) {
|
|
288
|
+
// Add existing tasks
|
|
289
|
+
for (const task of currentLaneConfig.tasks) {
|
|
290
|
+
allTasks.push({
|
|
291
|
+
id: `${laneName}:${task.name}`,
|
|
292
|
+
dependsOn: task.dependsOn || [],
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
// Add new tasks
|
|
296
|
+
for (const task of newTasks) {
|
|
297
|
+
allTasks.push({
|
|
298
|
+
id: `${laneName}:${task.name}`,
|
|
299
|
+
dependsOn: task.dependsOn || [],
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
// For other lanes, read from file
|
|
305
|
+
const config = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
306
|
+
for (const task of config.tasks || []) {
|
|
307
|
+
allTasks.push({
|
|
308
|
+
id: `${laneName}:${task.name}`,
|
|
309
|
+
dependsOn: task.dependsOn || [],
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
// Skip invalid files
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return allTasks;
|
|
319
|
+
}
|
|
213
320
|
/**
|
|
214
321
|
* Resolve --after dependencies to dependsOn format
|
|
215
322
|
*/
|
|
@@ -346,6 +453,17 @@ async function addTasks(args) {
|
|
|
346
453
|
}
|
|
347
454
|
return task;
|
|
348
455
|
});
|
|
456
|
+
// Validate cyclic dependencies before adding tasks
|
|
457
|
+
const currentLaneName = getLaneNameFromFile(laneFile);
|
|
458
|
+
const allTasks = collectAllTasksFromFlow(flowDir, currentLaneName, laneConfig, newTasks);
|
|
459
|
+
const cyclePath = detectCyclicDependencies(allTasks);
|
|
460
|
+
if (cyclePath.length > 0) {
|
|
461
|
+
logger.error(`순환 참조가 감지되었습니다: ${cyclePath.join(' → ')}`);
|
|
462
|
+
console.log('\n의존성 설정을 확인하세요:');
|
|
463
|
+
console.log(' - 동일 lane 내 태스크 간 순환 참조');
|
|
464
|
+
console.log(' - 다른 lane의 태스크와 순환 참조');
|
|
465
|
+
process.exit(1);
|
|
466
|
+
}
|
|
349
467
|
// Add tasks to lane
|
|
350
468
|
laneConfig.tasks.push(...newTasks);
|
|
351
469
|
// Save updated lane config
|
package/dist/cli/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/cli/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/cli/add.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -61,6 +61,7 @@ const COMMANDS = {
|
|
|
61
61
|
logs: require('./logs'),
|
|
62
62
|
tasks: require('./tasks'),
|
|
63
63
|
stop: require('./stop'),
|
|
64
|
+
status: require('./status'),
|
|
64
65
|
setup: require('./setup-commands').main,
|
|
65
66
|
};
|
|
66
67
|
function printHelp() {
|
|
@@ -83,6 +84,7 @@ function printHelp() {
|
|
|
83
84
|
\x1b[33mresume\x1b[0m [lane] [options] Resume lane(s)
|
|
84
85
|
|
|
85
86
|
\x1b[1mINSPECTION\x1b[0m
|
|
87
|
+
\x1b[33mstatus\x1b[0m [run-id] [options] View lane status for a run
|
|
86
88
|
\x1b[33mtasks\x1b[0m [name] [options] Browse and validate prepared tasks
|
|
87
89
|
\x1b[33mlogs\x1b[0m [run-dir] [options] View, export, and follow logs
|
|
88
90
|
\x1b[33mdoctor\x1b[0m [options] Check environment and preflight
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/resume.js
CHANGED
|
@@ -577,13 +577,50 @@ async function resume(args) {
|
|
|
577
577
|
}
|
|
578
578
|
logger.setDefaultContext('MAIN');
|
|
579
579
|
logger.setLogFile((0, path_1.safeJoin)(runDir, log_constants_1.MAIN_LOG_FILENAME));
|
|
580
|
-
|
|
580
|
+
// IMPORTANT: Check for zombie lanes FIRST, before reading lane statuses
|
|
581
|
+
// This ensures that zombie lanes (status="running" but process dead) are
|
|
582
|
+
// properly marked as "failed" before we determine which lanes need resume
|
|
583
|
+
const zombieCheck = checkAndFixZombieLanes(runDir);
|
|
584
|
+
if (zombieCheck.fixed.length > 0) {
|
|
585
|
+
logger.section('🔧 Zombie Lane Recovery');
|
|
586
|
+
logger.info(`Fixed ${zombieCheck.fixed.length} zombie lane(s): ${zombieCheck.fixed.join(', ')}`);
|
|
587
|
+
console.log('');
|
|
588
|
+
}
|
|
589
|
+
// Now read lane statuses AFTER zombie fix - this ensures we get the corrected states
|
|
590
|
+
let allLanes = getAllLaneStatuses(runDir);
|
|
581
591
|
let lanesToResume = [];
|
|
582
592
|
// Check if the lane argument is actually a tasks directory or a flow name
|
|
583
593
|
if (options.lane) {
|
|
584
594
|
let tasksDir = '';
|
|
585
595
|
const lanePathAbs = path.resolve(originalCwd, options.lane);
|
|
586
|
-
if
|
|
596
|
+
// Validate: Check if user accidentally passed a runs directory instead of a flow directory
|
|
597
|
+
// This is a common mistake that leads to "No incomplete lanes found" errors
|
|
598
|
+
const runsDir = (0, path_1.safeJoin)(logsDir, 'runs');
|
|
599
|
+
if (lanePathAbs.startsWith(runsDir)) {
|
|
600
|
+
logger.warn(`⚠️ The path appears to be a run directory, not a flow/tasks directory.`);
|
|
601
|
+
logger.warn(` Run directory: ${lanePathAbs}`);
|
|
602
|
+
logger.info(` Did you mean to use --run-dir instead?`);
|
|
603
|
+
logger.info(` Example: cursorflow resume --all --run-dir ${lanePathAbs}`);
|
|
604
|
+
// Auto-correct: treat as run directory if it looks like one
|
|
605
|
+
if (!options.runDir) {
|
|
606
|
+
logger.info(` Auto-correcting: using as run directory...`);
|
|
607
|
+
runDir = lanePathAbs;
|
|
608
|
+
// Re-check zombies and re-read lanes from the corrected run directory
|
|
609
|
+
const zombieCheck2 = checkAndFixZombieLanes(runDir);
|
|
610
|
+
if (zombieCheck2.fixed.length > 0) {
|
|
611
|
+
logger.info(`Fixed ${zombieCheck2.fixed.length} additional zombie lane(s)`);
|
|
612
|
+
}
|
|
613
|
+
allLanes = getAllLaneStatuses(runDir);
|
|
614
|
+
// Fall through to --all behavior
|
|
615
|
+
lanesToResume = allLanes.filter(l => l.needsResume && l.state?.tasksFile);
|
|
616
|
+
}
|
|
617
|
+
else {
|
|
618
|
+
// User specified --run-dir AND a run path as lane, this is confusing
|
|
619
|
+
throw new Error(`Invalid usage: '${options.lane}' looks like a run directory path.\n` +
|
|
620
|
+
`Use --run-dir to specify the run directory, or provide a flow/lane name.`);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
else if (fs.existsSync(lanePathAbs) && fs.statSync(lanePathAbs).isDirectory()) {
|
|
587
624
|
tasksDir = lanePathAbs;
|
|
588
625
|
}
|
|
589
626
|
else {
|
|
@@ -594,18 +631,31 @@ async function resume(args) {
|
|
|
594
631
|
tasksDir = foundFlow;
|
|
595
632
|
}
|
|
596
633
|
}
|
|
597
|
-
if (
|
|
634
|
+
// Only do tasksDir-based filtering if we identified a tasksDir (and didn't auto-correct to --all)
|
|
635
|
+
if (tasksDir && lanesToResume.length === 0) {
|
|
598
636
|
lanesToResume = allLanes.filter(l => l.needsResume && l.state?.tasksFile && path.resolve(l.state.tasksFile).startsWith(tasksDir));
|
|
599
637
|
if (lanesToResume.length > 0) {
|
|
600
638
|
logger.info(`📂 Flow/Task directory detected: ${options.lane}`);
|
|
601
639
|
logger.info(`Resuming ${lanesToResume.length} lane(s) from this directory.`);
|
|
602
640
|
}
|
|
603
641
|
else {
|
|
604
|
-
|
|
642
|
+
// More helpful error message with diagnostic info
|
|
643
|
+
const allTasksFiles = allLanes
|
|
644
|
+
.filter(l => l.state?.tasksFile)
|
|
645
|
+
.map(l => l.state.tasksFile);
|
|
646
|
+
logger.warn(`No incomplete lanes found using tasks from directory: ${tasksDir}`);
|
|
647
|
+
if (allTasksFiles.length > 0) {
|
|
648
|
+
logger.debug(`Available task files in this run:`);
|
|
649
|
+
for (const tf of allTasksFiles) {
|
|
650
|
+
logger.debug(` - ${tf}`);
|
|
651
|
+
}
|
|
652
|
+
logger.info(`Hint: Make sure the flow directory matches where the run was started from.`);
|
|
653
|
+
}
|
|
605
654
|
return;
|
|
606
655
|
}
|
|
607
656
|
}
|
|
608
|
-
else {
|
|
657
|
+
else if (!tasksDir && lanesToResume.length === 0) {
|
|
658
|
+
// Not a directory path, try as lane name
|
|
609
659
|
const lane = allLanes.find(l => l.name === options.lane);
|
|
610
660
|
if (!lane) {
|
|
611
661
|
throw new Error(`Lane '${options.lane}' not found in run directory.`);
|
|
@@ -620,20 +670,24 @@ async function resume(args) {
|
|
|
620
670
|
else if (options.all) {
|
|
621
671
|
lanesToResume = allLanes.filter(l => l.needsResume && l.state?.tasksFile);
|
|
622
672
|
}
|
|
623
|
-
// Check for zombie lanes
|
|
624
|
-
const zombieCheck = checkAndFixZombieLanes(runDir);
|
|
625
|
-
if (zombieCheck.fixed.length > 0) {
|
|
626
|
-
logger.section('🔧 Zombie Lane Recovery');
|
|
627
|
-
logger.info(`Fixed ${zombieCheck.fixed.length} zombie lane(s): ${zombieCheck.fixed.join(', ')}`);
|
|
628
|
-
console.log('');
|
|
629
|
-
}
|
|
630
673
|
if (options.status) {
|
|
631
674
|
printAllLaneStatus(runDir);
|
|
632
675
|
return;
|
|
633
676
|
}
|
|
634
677
|
if (lanesToResume.length === 0) {
|
|
635
678
|
if (options.lane || options.all) {
|
|
636
|
-
|
|
679
|
+
// Provide more context about why no lanes need resume
|
|
680
|
+
const allCompleted = allLanes.every(l => l.isCompleted);
|
|
681
|
+
if (allCompleted && allLanes.length > 0) {
|
|
682
|
+
logger.success(`All ${allLanes.length} lanes are already completed!`);
|
|
683
|
+
}
|
|
684
|
+
else if (allLanes.length === 0) {
|
|
685
|
+
logger.warn(`No lanes found in run directory: ${runDir}`);
|
|
686
|
+
logger.info(`The run may not have started yet or the state files are missing.`);
|
|
687
|
+
}
|
|
688
|
+
else {
|
|
689
|
+
logger.success('No lanes need to be resumed.');
|
|
690
|
+
}
|
|
637
691
|
}
|
|
638
692
|
else {
|
|
639
693
|
printAllLaneStatus(runDir);
|