@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 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.6] - 2025-12-30
9
-
10
- ### Added
11
- - **Flow Auto-Completion**: Automatic merging of all successful lane branches into a unified `feature/{flow}-integrated` branch.
12
- - **Cleanup Automation**: Automatic deletion of temporary lane branches and worktrees after successful integration.
13
- - **Manual Completion CLI**: New `cursorflow complete <flow>` command for manual flow integration and recovery.
14
- - **Flow Meta Tracking**: Enhanced `flow.meta.json` with integration status, target branch, and error reporting.
15
-
16
- ### Changed
17
- - **Event System**: Refactored `CursorFlowEvents` to better handle `runId` and completion events.
18
- - **Interactive Dashboard**: Updated UI to reflect completion and integration states.
19
- - **Architecture**: Added ADR-0006 and updated high-level workflow diagrams.
20
-
21
- ## [0.2.5] - 2025-12-28
22
- - Internal release with logging and hook improvements.
23
-
24
- ## [0.2.4] - 2025-12-28
25
- - Internal release with build fixes and monitor UI updates.
26
-
27
- ## [0.2.3] - 2025-12-28
28
- - Chore: bump version to v0.2.3.
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
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -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
- const allLanes = getAllLaneStatuses(runDir);
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 (fs.existsSync(lanePathAbs) && fs.statSync(lanePathAbs).isDirectory()) {
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 (tasksDir) {
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
- logger.warn(`No incomplete lanes found using tasks from directory: ${options.lane}`);
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
- logger.success('No lanes need to be resumed.');
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);