@litmers/cursorflow-orchestrator 0.1.30 → 0.1.34

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 (129) hide show
  1. package/README.md +144 -52
  2. package/commands/cursorflow-add.md +159 -0
  3. package/commands/cursorflow-monitor.md +23 -2
  4. package/commands/cursorflow-new.md +87 -0
  5. package/dist/cli/add.d.ts +7 -0
  6. package/dist/cli/add.js +377 -0
  7. package/dist/cli/add.js.map +1 -0
  8. package/dist/cli/clean.js +1 -0
  9. package/dist/cli/clean.js.map +1 -1
  10. package/dist/cli/config.d.ts +7 -0
  11. package/dist/cli/config.js +181 -0
  12. package/dist/cli/config.js.map +1 -0
  13. package/dist/cli/index.js +34 -30
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/logs.js +7 -33
  16. package/dist/cli/logs.js.map +1 -1
  17. package/dist/cli/monitor.js +51 -62
  18. package/dist/cli/monitor.js.map +1 -1
  19. package/dist/cli/new.d.ts +7 -0
  20. package/dist/cli/new.js +232 -0
  21. package/dist/cli/new.js.map +1 -0
  22. package/dist/cli/prepare.js +95 -193
  23. package/dist/cli/prepare.js.map +1 -1
  24. package/dist/cli/resume.js +11 -47
  25. package/dist/cli/resume.js.map +1 -1
  26. package/dist/cli/run.js +27 -22
  27. package/dist/cli/run.js.map +1 -1
  28. package/dist/cli/tasks.js +1 -2
  29. package/dist/cli/tasks.js.map +1 -1
  30. package/dist/core/failure-policy.d.ts +9 -0
  31. package/dist/core/failure-policy.js +9 -0
  32. package/dist/core/failure-policy.js.map +1 -1
  33. package/dist/core/orchestrator.d.ts +20 -6
  34. package/dist/core/orchestrator.js +217 -331
  35. package/dist/core/orchestrator.js.map +1 -1
  36. package/dist/core/runner/agent.d.ts +27 -0
  37. package/dist/core/runner/agent.js +294 -0
  38. package/dist/core/runner/agent.js.map +1 -0
  39. package/dist/core/runner/index.d.ts +5 -0
  40. package/dist/core/runner/index.js +22 -0
  41. package/dist/core/runner/index.js.map +1 -0
  42. package/dist/core/runner/pipeline.d.ts +9 -0
  43. package/dist/core/runner/pipeline.js +539 -0
  44. package/dist/core/runner/pipeline.js.map +1 -0
  45. package/dist/core/runner/prompt.d.ts +25 -0
  46. package/dist/core/runner/prompt.js +175 -0
  47. package/dist/core/runner/prompt.js.map +1 -0
  48. package/dist/core/runner/task.d.ts +26 -0
  49. package/dist/core/runner/task.js +283 -0
  50. package/dist/core/runner/task.js.map +1 -0
  51. package/dist/core/runner/utils.d.ts +37 -0
  52. package/dist/core/runner/utils.js +161 -0
  53. package/dist/core/runner/utils.js.map +1 -0
  54. package/dist/core/runner.d.ts +2 -96
  55. package/dist/core/runner.js +11 -1136
  56. package/dist/core/runner.js.map +1 -1
  57. package/dist/core/stall-detection.d.ts +326 -0
  58. package/dist/core/stall-detection.js +781 -0
  59. package/dist/core/stall-detection.js.map +1 -0
  60. package/dist/types/config.d.ts +6 -6
  61. package/dist/types/flow.d.ts +84 -0
  62. package/dist/types/flow.js +10 -0
  63. package/dist/types/flow.js.map +1 -0
  64. package/dist/types/index.d.ts +1 -0
  65. package/dist/types/index.js +3 -3
  66. package/dist/types/index.js.map +1 -1
  67. package/dist/types/lane.d.ts +0 -2
  68. package/dist/types/logging.d.ts +5 -1
  69. package/dist/types/task.d.ts +7 -11
  70. package/dist/utils/config.js +7 -15
  71. package/dist/utils/config.js.map +1 -1
  72. package/dist/utils/dependency.d.ts +36 -1
  73. package/dist/utils/dependency.js +256 -1
  74. package/dist/utils/dependency.js.map +1 -1
  75. package/dist/utils/enhanced-logger.d.ts +45 -82
  76. package/dist/utils/enhanced-logger.js +238 -844
  77. package/dist/utils/enhanced-logger.js.map +1 -1
  78. package/dist/utils/git.d.ts +29 -0
  79. package/dist/utils/git.js +115 -5
  80. package/dist/utils/git.js.map +1 -1
  81. package/dist/utils/state.js +0 -2
  82. package/dist/utils/state.js.map +1 -1
  83. package/dist/utils/task-service.d.ts +2 -2
  84. package/dist/utils/task-service.js +40 -31
  85. package/dist/utils/task-service.js.map +1 -1
  86. package/package.json +4 -3
  87. package/src/cli/add.ts +397 -0
  88. package/src/cli/clean.ts +1 -0
  89. package/src/cli/config.ts +177 -0
  90. package/src/cli/index.ts +36 -32
  91. package/src/cli/logs.ts +7 -31
  92. package/src/cli/monitor.ts +55 -71
  93. package/src/cli/new.ts +235 -0
  94. package/src/cli/prepare.ts +98 -205
  95. package/src/cli/resume.ts +13 -56
  96. package/src/cli/run.ts +311 -306
  97. package/src/cli/tasks.ts +1 -2
  98. package/src/core/failure-policy.ts +9 -0
  99. package/src/core/orchestrator.ts +281 -375
  100. package/src/core/runner/agent.ts +314 -0
  101. package/src/core/runner/index.ts +6 -0
  102. package/src/core/runner/pipeline.ts +567 -0
  103. package/src/core/runner/prompt.ts +174 -0
  104. package/src/core/runner/task.ts +320 -0
  105. package/src/core/runner/utils.ts +142 -0
  106. package/src/core/runner.ts +8 -1347
  107. package/src/core/stall-detection.ts +936 -0
  108. package/src/types/config.ts +6 -6
  109. package/src/types/flow.ts +91 -0
  110. package/src/types/index.ts +15 -3
  111. package/src/types/lane.ts +0 -2
  112. package/src/types/logging.ts +5 -1
  113. package/src/types/task.ts +7 -11
  114. package/src/utils/config.ts +8 -16
  115. package/src/utils/dependency.ts +311 -2
  116. package/src/utils/enhanced-logger.ts +263 -927
  117. package/src/utils/git.ts +145 -5
  118. package/src/utils/state.ts +0 -2
  119. package/src/utils/task-service.ts +48 -40
  120. package/commands/cursorflow-review.md +0 -56
  121. package/commands/cursorflow-runs.md +0 -59
  122. package/dist/cli/runs.d.ts +0 -5
  123. package/dist/cli/runs.js +0 -214
  124. package/dist/cli/runs.js.map +0 -1
  125. package/dist/core/reviewer.d.ts +0 -66
  126. package/dist/core/reviewer.js +0 -265
  127. package/dist/core/reviewer.js.map +0 -1
  128. package/src/cli/runs.ts +0 -212
  129. package/src/core/reviewer.ts +0 -285
package/src/cli/resume.ts CHANGED
@@ -115,7 +115,6 @@ interface LaneInfo {
115
115
  dir: string;
116
116
  state: LaneState | null;
117
117
  needsResume: boolean;
118
- dependsOn: string[];
119
118
  isCompleted: boolean;
120
119
  }
121
120
 
@@ -295,39 +294,22 @@ function getAllLaneStatuses(runDir: string): LaneInfo[] {
295
294
  ) : true;
296
295
 
297
296
  const isCompleted = state?.status === 'completed';
298
- const dependsOn = state?.dependsOn || [];
299
297
 
300
- return { name, dir, state, needsResume, dependsOn, isCompleted };
298
+ return { name, dir, state, needsResume, isCompleted };
301
299
  });
302
300
 
303
301
  return lanes;
304
302
  }
305
303
 
306
304
  /**
307
- * Check if all dependencies of a lane are completed
305
+ * Check if lane can be resumed (lane-level deps removed, always true)
308
306
  */
309
307
  function areDependenciesCompleted(
310
- lane: LaneInfo,
311
- allLanes: LaneInfo[],
312
- completedLanes: Set<string>
308
+ _lane: LaneInfo,
309
+ _allLanes: LaneInfo[],
310
+ _completedLanes: Set<string>
313
311
  ): boolean {
314
- if (!lane.dependsOn || lane.dependsOn.length === 0) {
315
- return true;
316
- }
317
-
318
- for (const depName of lane.dependsOn) {
319
- // Check if dependency is in completed set (already succeeded in this resume session)
320
- if (completedLanes.has(depName)) {
321
- continue;
322
- }
323
-
324
- // Check if dependency was already completed before this resume
325
- const depLane = allLanes.find(l => l.name === depName);
326
- if (!depLane || !depLane.isCompleted) {
327
- return false;
328
- }
329
- }
330
-
312
+ // Lane-level dependencies removed - use task-level dependsOn instead
331
313
  return true;
332
314
  }
333
315
 
@@ -371,40 +353,25 @@ function printAllLaneStatus(runDir: string): { total: number; completed: number;
371
353
  const status = state?.status || 'unknown';
372
354
  const color = STATUS_COLORS[status] || STATUS_COLORS.unknown;
373
355
  const progress = state ? `${state.currentTaskIndex}/${state.totalTasks}` : '-/-';
374
- const dependsOnStr = lane.dependsOn.length > 0 ? lane.dependsOn.join(',').substring(0, 12) : '-';
375
-
376
- // Check if dependencies are met
377
- const depsCompleted = areDependenciesCompleted(lane, lanes, completedSet);
378
- const canResume = lane.needsResume && depsCompleted;
379
- const blockedByDep = lane.needsResume && !depsCompleted;
380
356
 
381
357
  if (status === 'completed') completedCount++;
382
358
  if (lane.needsResume) needsResumeCount++;
383
359
 
384
360
  let resumeIndicator = '';
385
- if (canResume) {
386
- resumeIndicator = '\x1b[33m✓\x1b[0m';
387
- } else if (blockedByDep) {
388
- resumeIndicator = '\x1b[90m⏳ waiting\x1b[0m';
361
+ if (lane.needsResume) {
362
+ resumeIndicator = '\x1b[33m✓ resumable\x1b[0m';
389
363
  }
390
364
 
391
365
  console.log(' ' +
392
- lane.name.padEnd(25) +
366
+ lane.name.padEnd(30) +
393
367
  `${color}${status.padEnd(12)}${RESET}` +
394
368
  progress.padEnd(12) +
395
- dependsOnStr.padEnd(15) +
396
369
  resumeIndicator
397
370
  );
398
371
 
399
372
  // Show error if failed
400
373
  if (status === 'failed' && state?.error) {
401
- console.log(` ${''.padEnd(25)}\x1b[31m└─ ${state.error.substring(0, 50)}${state.error.length > 50 ? '...' : ''}\x1b[0m`);
402
- }
403
-
404
- // Show blocked dependency info
405
- if (blockedByDep) {
406
- const pendingDeps = lane.dependsOn.filter(d => !completedSet.has(d));
407
- console.log(` ${''.padEnd(25)}\x1b[90m└─ waiting for: ${pendingDeps.join(', ')}\x1b[0m`);
374
+ console.log(` ${''.padEnd(30)}\x1b[31m└─ ${state.error.substring(0, 50)}${state.error.length > 50 ? '...' : ''}\x1b[0m`);
408
375
  }
409
376
  }
410
377
 
@@ -532,17 +499,8 @@ async function resumeLanes(
532
499
  const resolvableLanes: LaneInfo[] = [];
533
500
 
534
501
  for (const lane of lanesToResume) {
535
- // Check if all dependencies can be satisfied (either already completed or in the resume list)
536
- const unmetDeps = lane.dependsOn.filter(dep =>
537
- !completedSet.has(dep) && !toResumeNames.has(dep)
538
- );
539
-
540
- if (unmetDeps.length > 0) {
541
- logger.warn(`⏭ Skipping ${lane.name}: unresolvable dependencies (${unmetDeps.join(', ')})`);
542
- skippedLanes.push(lane.name);
543
- } else {
544
- resolvableLanes.push(lane);
545
- }
502
+ // Lane-level dependencies removed - all lanes can be resumed
503
+ resolvableLanes.push(lane);
546
504
  }
547
505
 
548
506
  if (resolvableLanes.length === 0) {
@@ -612,8 +570,7 @@ async function resumeLanes(
612
570
  }
613
571
 
614
572
  pending.delete(lane.name);
615
- const depsInfo = lane.dependsOn.length > 0 ? ` (after: ${lane.dependsOn.join(', ')})` : '';
616
- logger.info(`Starting: ${lane.name} (task ${lane.state!.currentTaskIndex}/${lane.state!.totalTasks})${depsInfo}`);
573
+ logger.info(`Starting: ${lane.name} (task ${lane.state!.currentTaskIndex}/${lane.state!.totalTasks})`);
617
574
 
618
575
  const { child } = spawnLaneResume(lane.name, lane.dir, lane.state!, {
619
576
  restart: options.restart,