steroids-cli 0.8.44 → 0.9.2

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 (145) hide show
  1. package/dist/cleanup/backups.d.ts +26 -0
  2. package/dist/cleanup/backups.d.ts.map +1 -0
  3. package/dist/cleanup/backups.js +157 -0
  4. package/dist/cleanup/backups.js.map +1 -0
  5. package/dist/cleanup/directory-size.d.ts +1 -1
  6. package/dist/cleanup/directory-size.d.ts.map +1 -1
  7. package/dist/cleanup/directory-size.js +58 -6
  8. package/dist/cleanup/directory-size.js.map +1 -1
  9. package/dist/commands/ai.js +2 -2
  10. package/dist/commands/ai.js.map +1 -1
  11. package/dist/commands/config.js +80 -4
  12. package/dist/commands/config.js.map +1 -1
  13. package/dist/commands/health-stuck.d.ts.map +1 -1
  14. package/dist/commands/health-stuck.js +8 -2
  15. package/dist/commands/health-stuck.js.map +1 -1
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +19 -1
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/loop-phases.d.ts +3 -3
  20. package/dist/commands/loop-phases.d.ts.map +1 -1
  21. package/dist/commands/loop-phases.js +308 -74
  22. package/dist/commands/loop-phases.js.map +1 -1
  23. package/dist/commands/loop.d.ts.map +1 -1
  24. package/dist/commands/loop.js +12 -1
  25. package/dist/commands/loop.js.map +1 -1
  26. package/dist/commands/tasks.d.ts.map +1 -1
  27. package/dist/commands/tasks.js +69 -2
  28. package/dist/commands/tasks.js.map +1 -1
  29. package/dist/config/ai-setup.d.ts +2 -1
  30. package/dist/config/ai-setup.d.ts.map +1 -1
  31. package/dist/config/ai-setup.js +234 -36
  32. package/dist/config/ai-setup.js.map +1 -1
  33. package/dist/config/loader.d.ts +21 -7
  34. package/dist/config/loader.d.ts.map +1 -1
  35. package/dist/config/loader.js +22 -2
  36. package/dist/config/loader.js.map +1 -1
  37. package/dist/config/schema.d.ts.map +1 -1
  38. package/dist/config/schema.js +41 -3
  39. package/dist/config/schema.js.map +1 -1
  40. package/dist/database/queries.d.ts +37 -0
  41. package/dist/database/queries.d.ts.map +1 -1
  42. package/dist/database/queries.js +94 -2
  43. package/dist/database/queries.js.map +1 -1
  44. package/dist/database/schema.d.ts +2 -2
  45. package/dist/database/schema.d.ts.map +1 -1
  46. package/dist/database/schema.js +21 -0
  47. package/dist/database/schema.js.map +1 -1
  48. package/dist/git/status.d.ts +1 -1
  49. package/dist/git/status.d.ts.map +1 -1
  50. package/dist/git/status.js +3 -2
  51. package/dist/git/status.js.map +1 -1
  52. package/dist/health/stuck-task-detector.d.ts +2 -0
  53. package/dist/health/stuck-task-detector.d.ts.map +1 -1
  54. package/dist/health/stuck-task-detector.js +39 -18
  55. package/dist/health/stuck-task-detector.js.map +1 -1
  56. package/dist/orchestrator/coder.d.ts.map +1 -1
  57. package/dist/orchestrator/coder.js +23 -6
  58. package/dist/orchestrator/coder.js.map +1 -1
  59. package/dist/orchestrator/coordinator.js +1 -1
  60. package/dist/orchestrator/coordinator.js.map +1 -1
  61. package/dist/orchestrator/fallback-handler.d.ts +1 -1
  62. package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
  63. package/dist/orchestrator/fallback-handler.js.map +1 -1
  64. package/dist/orchestrator/invoke.d.ts +5 -1
  65. package/dist/orchestrator/invoke.d.ts.map +1 -1
  66. package/dist/orchestrator/invoke.js +9 -1
  67. package/dist/orchestrator/invoke.js.map +1 -1
  68. package/dist/orchestrator/post-reviewer.d.ts +5 -1
  69. package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
  70. package/dist/orchestrator/post-reviewer.js +100 -1
  71. package/dist/orchestrator/post-reviewer.js.map +1 -1
  72. package/dist/orchestrator/reviewer.d.ts +30 -2
  73. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  74. package/dist/orchestrator/reviewer.js +121 -17
  75. package/dist/orchestrator/reviewer.js.map +1 -1
  76. package/dist/orchestrator/task-selector.d.ts.map +1 -1
  77. package/dist/orchestrator/task-selector.js +5 -1
  78. package/dist/orchestrator/task-selector.js.map +1 -1
  79. package/dist/orchestrator/types.d.ts +27 -0
  80. package/dist/orchestrator/types.d.ts.map +1 -1
  81. package/dist/parallel/merge-conflict-invoke.js +1 -1
  82. package/dist/parallel/merge-conflict-invoke.js.map +1 -1
  83. package/dist/prompts/coder.d.ts +4 -0
  84. package/dist/prompts/coder.d.ts.map +1 -1
  85. package/dist/prompts/coder.js +41 -0
  86. package/dist/prompts/coder.js.map +1 -1
  87. package/dist/prompts/reviewer.d.ts +4 -0
  88. package/dist/prompts/reviewer.d.ts.map +1 -1
  89. package/dist/prompts/reviewer.js +65 -0
  90. package/dist/prompts/reviewer.js.map +1 -1
  91. package/dist/providers/api-models.d.ts +14 -6
  92. package/dist/providers/api-models.d.ts.map +1 -1
  93. package/dist/providers/api-models.js +86 -5
  94. package/dist/providers/api-models.js.map +1 -1
  95. package/dist/providers/claude.d.ts +1 -1
  96. package/dist/providers/claude.d.ts.map +1 -1
  97. package/dist/providers/claude.js +57 -12
  98. package/dist/providers/claude.js.map +1 -1
  99. package/dist/providers/codex.d.ts +5 -1
  100. package/dist/providers/codex.d.ts.map +1 -1
  101. package/dist/providers/codex.js +143 -40
  102. package/dist/providers/codex.js.map +1 -1
  103. package/dist/providers/gemini.d.ts +1 -1
  104. package/dist/providers/gemini.d.ts.map +1 -1
  105. package/dist/providers/gemini.js +53 -9
  106. package/dist/providers/gemini.js.map +1 -1
  107. package/dist/providers/interface.d.ts +62 -1
  108. package/dist/providers/interface.d.ts.map +1 -1
  109. package/dist/providers/interface.js +105 -12
  110. package/dist/providers/interface.js.map +1 -1
  111. package/dist/providers/invocation-logger.d.ts +3 -0
  112. package/dist/providers/invocation-logger.d.ts.map +1 -1
  113. package/dist/providers/invocation-logger.js +22 -8
  114. package/dist/providers/invocation-logger.js.map +1 -1
  115. package/dist/providers/minimax.d.ts +50 -0
  116. package/dist/providers/minimax.d.ts.map +1 -0
  117. package/dist/providers/minimax.js +248 -0
  118. package/dist/providers/minimax.js.map +1 -0
  119. package/dist/providers/mistral.d.ts +6 -0
  120. package/dist/providers/mistral.d.ts.map +1 -1
  121. package/dist/providers/mistral.js +73 -4
  122. package/dist/providers/mistral.js.map +1 -1
  123. package/dist/providers/ollama.d.ts +50 -0
  124. package/dist/providers/ollama.d.ts.map +1 -0
  125. package/dist/providers/ollama.js +259 -0
  126. package/dist/providers/ollama.js.map +1 -0
  127. package/dist/providers/openai.d.ts +1 -1
  128. package/dist/providers/openai.d.ts.map +1 -1
  129. package/dist/providers/openai.js +1 -1
  130. package/dist/providers/openai.js.map +1 -1
  131. package/dist/providers/registry.d.ts +2 -2
  132. package/dist/providers/registry.d.ts.map +1 -1
  133. package/dist/providers/registry.js +28 -14
  134. package/dist/providers/registry.js.map +1 -1
  135. package/dist/runners/credit-pause.d.ts +1 -1
  136. package/dist/runners/credit-pause.d.ts.map +1 -1
  137. package/dist/runners/credit-pause.js +2 -2
  138. package/dist/runners/credit-pause.js.map +1 -1
  139. package/dist/runners/orchestrator-loop.js +2 -2
  140. package/dist/runners/orchestrator-loop.js.map +1 -1
  141. package/migrations/014_add_session_context.sql +17 -0
  142. package/migrations/015_add_follow_up_fields.sql +26 -0
  143. package/migrations/016_add_invocation_activity_timestamp.sql +8 -0
  144. package/migrations/manifest.json +25 -1
  145. package/package.json +1 -1
@@ -53,20 +53,20 @@ function refreshParallelWorkstreamLease(projectPath, leaseFence) {
53
53
  }
54
54
  }
55
55
  /**
56
- * Check a coder/reviewer result for credit exhaustion using the provider's classifier.
56
+ * Check a coder/reviewer result for credit exhaustion or rate limits using the provider's classifier.
57
57
  * Uses provider.classifyResult() which checks both stderr and stdout.
58
- * Returns a CreditExhaustionResult if credits are exhausted, null otherwise.
58
+ * Returns a CreditExhaustionResult if credits are exhausted or rate limited, null otherwise.
59
59
  */
60
- function checkCreditExhaustion(result, role, projectPath) {
60
+ async function checkCreditExhaustion(result, role, projectPath, reviewerConfig) {
61
61
  if (result.success)
62
62
  return null;
63
63
  const config = (0, loader_js_1.loadConfig)(projectPath);
64
- const roleConfig = config.ai?.[role];
64
+ const roleConfig = reviewerConfig || config.ai?.[role];
65
65
  const providerName = roleConfig?.provider;
66
66
  const modelName = roleConfig?.model;
67
67
  if (!providerName || !modelName)
68
68
  return null;
69
- const registry = (0, registry_js_1.getProviderRegistry)();
69
+ const registry = await (0, registry_js_1.getProviderRegistry)();
70
70
  const provider = registry.tryGet(providerName);
71
71
  if (!provider)
72
72
  return null;
@@ -80,6 +80,16 @@ function checkCreditExhaustion(result, role, projectPath) {
80
80
  message: classification.message,
81
81
  };
82
82
  }
83
+ if (classification?.type === 'rate_limit') {
84
+ return {
85
+ action: 'rate_limit',
86
+ provider: providerName,
87
+ model: modelName,
88
+ role,
89
+ message: classification.message,
90
+ retryAfterMs: classification.retryAfterMs,
91
+ };
92
+ }
83
93
  return null;
84
94
  }
85
95
  const MAX_ORCHESTRATOR_PARSE_RETRIES = 3;
@@ -160,18 +170,19 @@ async function runCoderPhase(db, task, projectPath, action, jsonMode = false, co
160
170
  if (!jsonMode) {
161
171
  console.log('\n>>> Invoking CODER...\n');
162
172
  }
173
+ const initialSha = (0, status_js_1.getCurrentCommitSha)(projectPath) || '';
163
174
  const coderResult = await (0, coder_js_1.invokeCoder)(task, projectPath, action, coordinatorGuidance);
164
175
  if (coderResult.timedOut) {
165
176
  console.warn('Coder timed out. Will retry next iteration.');
166
177
  return;
167
178
  }
168
179
  // Check for credit exhaustion before proceeding to orchestrator
169
- const creditCheck = checkCreditExhaustion(coderResult, 'coder', projectPath);
180
+ const creditCheck = await checkCreditExhaustion(coderResult, 'coder', projectPath);
170
181
  if (creditCheck) {
171
182
  return creditCheck;
172
183
  }
173
184
  // STEP 2: Gather git state
174
- const commits = (0, status_js_1.getRecentCommits)(projectPath, 5);
185
+ const commits = (0, status_js_1.getRecentCommits)(projectPath, 5, initialSha);
175
186
  const files_changed = (0, status_js_1.getChangedFiles)(projectPath);
176
187
  const has_uncommitted = (0, status_js_1.hasUncommittedChanges)(projectPath);
177
188
  const diff_summary = (0, status_js_1.getDiffSummary)(projectPath);
@@ -210,24 +221,45 @@ async function runCoderPhase(db, task, projectPath, action, jsonMode = false, co
210
221
  }
211
222
  catch (error) {
212
223
  console.error('Orchestrator invocation failed:', error);
213
- // Fallback to safe default: retry
214
- orchestratorOutput = JSON.stringify({
215
- action: 'retry',
216
- reasoning: 'Orchestrator failed, defaulting to retry',
217
- commits: [],
218
- next_status: 'in_progress',
219
- metadata: {
220
- files_changed: 0,
221
- confidence: 'low',
222
- exit_clean: true,
223
- has_commits: false,
224
- }
225
- });
224
+ // Check if coder seems finished even if orchestrator failed
225
+ const coderStdout = coderResult.stdout.toLowerCase();
226
+ const isTaskComplete = /complete|finished|done|ready/.test(coderStdout);
227
+ // Only count as having work if there are actual uncommitted changes or very recent session commits
228
+ const hasWork = has_uncommitted || commits.length > 0;
229
+ if (isTaskComplete && hasWork) {
230
+ orchestratorOutput = JSON.stringify({
231
+ action: has_uncommitted ? 'stage_commit_submit' : 'submit',
232
+ reasoning: 'FALLBACK: Orchestrator failed but coder signaled completion',
233
+ commits: commits.map(c => c.sha),
234
+ next_status: 'review',
235
+ metadata: {
236
+ files_changed: files_changed.length,
237
+ confidence: 'low',
238
+ exit_clean: true,
239
+ has_commits: commits.length > 0,
240
+ }
241
+ });
242
+ }
243
+ else {
244
+ // Fallback to safe default: retry
245
+ orchestratorOutput = JSON.stringify({
246
+ action: 'retry',
247
+ reasoning: 'FALLBACK: Orchestrator failed, defaulting to retry',
248
+ commits: [],
249
+ next_status: 'in_progress',
250
+ metadata: {
251
+ files_changed: 0,
252
+ confidence: 'low',
253
+ exit_clean: true,
254
+ has_commits: false,
255
+ }
256
+ });
257
+ }
226
258
  }
227
259
  // STEP 5: Parse orchestrator output with fallback
228
260
  const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
229
261
  let decision = handler.parseCoderOutput(orchestratorOutput);
230
- if (decision.action === 'retry' && decision.reasoning.startsWith('FALLBACK: Orchestrator failed')) {
262
+ if (decision.action === 'retry' && decision.reasoning.includes('FALLBACK: Orchestrator failed')) {
231
263
  const consecutiveParseFallbackRetries = countConsecutiveOrchestratorFallbackEntries(db, task.id, CODER_PARSE_FALLBACK_MARKER) + 1;
232
264
  if (consecutiveParseFallbackRetries >= MAX_ORCHESTRATOR_PARSE_RETRIES) {
233
265
  decision = {
@@ -303,24 +335,58 @@ async function runReviewerPhase(db, task, projectPath, jsonMode = false, coordin
303
335
  if (!task)
304
336
  return;
305
337
  refreshParallelWorkstreamLease(projectPath, leaseFence);
306
- // STEP 1: Invoke reviewer (no status commands in prompt anymore)
307
- if (!jsonMode) {
308
- console.log('\n>>> Invoking REVIEWER...\n');
309
- if (coordinatorResult) {
310
- console.log(`Coordinator guidance included (decision: ${coordinatorResult.decision})`);
338
+ const config = (0, loader_js_1.loadConfig)(projectPath);
339
+ const multiReviewEnabled = (0, reviewer_js_1.isMultiReviewEnabled)(config);
340
+ const strict = config.ai?.review?.strict ?? true;
341
+ let reviewerResult;
342
+ let reviewerResults = [];
343
+ // STEP 1: Invoke reviewer(s)
344
+ if (multiReviewEnabled) {
345
+ const reviewerConfigs = (0, reviewer_js_1.getReviewerConfigs)(config);
346
+ if (!jsonMode) {
347
+ console.log(`\n>>> Invoking ${reviewerConfigs.length} REVIEWERS in parallel...\n`);
348
+ if (coordinatorResult) {
349
+ console.log(`Coordinator guidance included (decision: ${coordinatorResult.decision})`);
350
+ }
311
351
  }
352
+ reviewerResults = await (0, reviewer_js_1.invokeReviewers)(task, projectPath, reviewerConfigs, coordinatorResult?.guidance, coordinatorResult?.decision);
353
+ // Check for credit exhaustion in any reviewer
354
+ for (let i = 0; i < reviewerResults.length; i++) {
355
+ const res = reviewerResults[i];
356
+ const creditCheck = await checkCreditExhaustion(res, 'reviewer', projectPath, reviewerConfigs[i]);
357
+ if (creditCheck) {
358
+ return creditCheck;
359
+ }
360
+ }
361
+ // Handle failures in strict mode
362
+ const failures = reviewerResults.filter(r => !r.success);
363
+ if (strict && failures.length > 0) {
364
+ if (!jsonMode) {
365
+ console.warn(`${failures.length} reviewer(s) failed in strict mode. Will retry.`);
366
+ }
367
+ return;
368
+ }
369
+ // If not strict, we continue with the successful ones (resolveDecision handles empty/unclear)
312
370
  }
313
- const reviewerResult = await (0, reviewer_js_1.invokeReviewer)(task, projectPath, coordinatorResult?.guidance, coordinatorResult?.decision);
314
- if (reviewerResult.timedOut) {
371
+ else {
315
372
  if (!jsonMode) {
316
- console.warn('Reviewer timed out. Will retry next iteration.');
373
+ console.log('\n>>> Invoking REVIEWER...\n');
374
+ if (coordinatorResult) {
375
+ console.log(`Coordinator guidance included (decision: ${coordinatorResult.decision})`);
376
+ }
377
+ }
378
+ reviewerResult = await (0, reviewer_js_1.invokeReviewer)(task, projectPath, coordinatorResult?.guidance, coordinatorResult?.decision);
379
+ if (reviewerResult.timedOut) {
380
+ if (!jsonMode) {
381
+ console.warn('Reviewer timed out. Will retry next iteration.');
382
+ }
383
+ return;
384
+ }
385
+ // Check for credit exhaustion
386
+ const creditCheck = await checkCreditExhaustion(reviewerResult, 'reviewer', projectPath);
387
+ if (creditCheck) {
388
+ return creditCheck;
317
389
  }
318
- return;
319
- }
320
- // Check for credit exhaustion before proceeding to orchestrator
321
- const creditCheck = checkCreditExhaustion(reviewerResult, 'reviewer', projectPath);
322
- if (creditCheck) {
323
- return creditCheck;
324
390
  }
325
391
  // STEP 2: Gather git context
326
392
  const commit_sha = (0, status_js_1.getCurrentCommitSha)(projectPath) || '';
@@ -332,47 +398,178 @@ async function runReviewerPhase(db, task, projectPath, jsonMode = false, coordin
332
398
  additions: diffStats.additions,
333
399
  deletions: diffStats.deletions,
334
400
  };
335
- // STEP 3: Build orchestrator context
336
- const context = {
337
- task: {
338
- id: task.id,
339
- title: task.title,
340
- rejection_count: task.rejection_count,
341
- },
342
- reviewer_output: {
343
- stdout: reviewerResult.stdout,
344
- stderr: reviewerResult.stderr,
345
- exit_code: reviewerResult.exitCode,
346
- timed_out: reviewerResult.timedOut,
347
- duration_ms: reviewerResult.duration,
348
- },
349
- git_context: gitContext,
350
- };
351
- // STEP 4: Invoke orchestrator
352
- let orchestratorOutput;
353
- try {
354
- orchestratorOutput = await (0, invoke_js_1.invokeReviewerOrchestrator)(context, projectPath);
401
+ // STEP 3: Resolve decision and merge notes if needed
402
+ let decision;
403
+ if (multiReviewEnabled) {
404
+ const { decision: finalDecision, needsMerge } = (0, reviewer_js_1.resolveDecision)(reviewerResults);
405
+ if (needsMerge) {
406
+ // Invoke multi-reviewer orchestrator to merge notes
407
+ const multiContext = {
408
+ task: {
409
+ id: task.id,
410
+ title: task.title,
411
+ rejection_count: task.rejection_count,
412
+ },
413
+ reviewer_results: reviewerResults.map(r => ({
414
+ provider: r.provider || 'unknown',
415
+ model: r.model || 'unknown',
416
+ decision: r.decision || 'unclear',
417
+ stdout: r.stdout,
418
+ stderr: r.stderr,
419
+ duration_ms: r.duration,
420
+ })),
421
+ git_context: gitContext,
422
+ };
423
+ try {
424
+ const orchestratorOutput = await (0, invoke_js_1.invokeMultiReviewerOrchestrator)(multiContext, projectPath);
425
+ const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
426
+ decision = handler.parseReviewerOutput(orchestratorOutput);
427
+ }
428
+ catch (error) {
429
+ console.error('Multi-reviewer orchestrator failed:', error);
430
+ decision = {
431
+ decision: 'unclear',
432
+ reasoning: 'FALLBACK: Multi-reviewer orchestrator failed',
433
+ notes: 'Review unclear, retrying',
434
+ next_status: 'review',
435
+ metadata: {
436
+ rejection_count: task.rejection_count,
437
+ confidence: 'low',
438
+ push_to_remote: false,
439
+ repeated_issue: false,
440
+ }
441
+ };
442
+ }
443
+ }
444
+ else {
445
+ // No merge needed (decision is Approve, Dispute, or Skip)
446
+ const multiContext = {
447
+ task: {
448
+ id: task.id,
449
+ title: task.title,
450
+ rejection_count: task.rejection_count,
451
+ },
452
+ reviewer_results: reviewerResults.map(r => ({
453
+ provider: r.provider || 'unknown',
454
+ model: r.model || 'unknown',
455
+ decision: r.decision || 'unclear',
456
+ stdout: r.stdout,
457
+ stderr: r.stderr,
458
+ duration_ms: r.duration,
459
+ })),
460
+ git_context: gitContext,
461
+ };
462
+ try {
463
+ const orchestratorOutput = await (0, invoke_js_1.invokeMultiReviewerOrchestrator)(multiContext, projectPath);
464
+ const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
465
+ decision = handler.parseReviewerOutput(orchestratorOutput);
466
+ }
467
+ catch (error) {
468
+ console.error('Multi-reviewer orchestrator failed (consensus path):', error);
469
+ const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
470
+ // REQUIRE UNANIMOUS CONSENSUS for the non-reject finalDecision
471
+ const isUnanimousConsensus = reviewerResults.length > 0 && reviewerResults.every(r => {
472
+ if (r.decision === finalDecision)
473
+ return true;
474
+ return handler.extractExplicitReviewerDecision(r.stdout) === finalDecision;
475
+ });
476
+ if (isUnanimousConsensus) {
477
+ const primaryResult = reviewerResults.find(r => r.decision === finalDecision) || reviewerResults[0];
478
+ decision = {
479
+ decision: (finalDecision === 'unclear' ? 'unclear' : finalDecision),
480
+ reasoning: `FALLBACK: Multi-reviewer orchestrator failed but all reviewers reached consensus: ${finalDecision}`,
481
+ notes: primaryResult?.notes || primaryResult?.stdout || 'No notes provided',
482
+ next_status: finalDecision === 'approve' ? 'completed' :
483
+ finalDecision === 'reject' ? 'in_progress' :
484
+ finalDecision === 'dispute' ? 'disputed' :
485
+ finalDecision === 'skip' ? 'skipped' : 'review',
486
+ metadata: {
487
+ rejection_count: task.rejection_count,
488
+ confidence: 'low',
489
+ push_to_remote: ['approve', 'dispute', 'skip'].includes(finalDecision),
490
+ repeated_issue: false,
491
+ }
492
+ };
493
+ }
494
+ else {
495
+ decision = {
496
+ decision: 'unclear',
497
+ reasoning: 'FALLBACK: Multi-reviewer orchestrator failed and no unanimous consensus',
498
+ notes: 'Review unclear, retrying',
499
+ next_status: 'review',
500
+ metadata: {
501
+ rejection_count: task.rejection_count,
502
+ confidence: 'low',
503
+ push_to_remote: false,
504
+ repeated_issue: false,
505
+ }
506
+ };
507
+ }
508
+ }
509
+ }
355
510
  }
356
- catch (error) {
357
- console.error('Orchestrator invocation failed:', error);
358
- // Fallback to safe default: unclear
359
- orchestratorOutput = JSON.stringify({
360
- decision: 'unclear',
361
- reasoning: 'Orchestrator failed, retrying review',
362
- notes: 'Review unclear, retrying',
363
- next_status: 'review',
364
- metadata: {
511
+ else {
512
+ // Single reviewer flow
513
+ const context = {
514
+ task: {
515
+ id: task.id,
516
+ title: task.title,
365
517
  rejection_count: task.rejection_count,
366
- confidence: 'low',
367
- push_to_remote: false,
368
- repeated_issue: false,
518
+ },
519
+ reviewer_output: {
520
+ stdout: reviewerResult.stdout,
521
+ stderr: reviewerResult.stderr,
522
+ exit_code: reviewerResult.exitCode,
523
+ timed_out: reviewerResult.timedOut,
524
+ duration_ms: reviewerResult.duration,
525
+ },
526
+ git_context: gitContext,
527
+ };
528
+ try {
529
+ const orchestratorOutput = await (0, invoke_js_1.invokeReviewerOrchestrator)(context, projectPath);
530
+ const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
531
+ decision = handler.parseReviewerOutput(orchestratorOutput);
532
+ }
533
+ catch (error) {
534
+ console.error('Orchestrator invocation failed:', error);
535
+ const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
536
+ const reviewerStdout = reviewerResult?.stdout ?? '';
537
+ const explicitDecision = handler.extractExplicitReviewerDecision(reviewerStdout);
538
+ if (explicitDecision) {
539
+ decision = {
540
+ decision: explicitDecision,
541
+ reasoning: `FALLBACK: Orchestrator failed but reviewer explicitly signaled ${explicitDecision.toUpperCase()}`,
542
+ notes: reviewerStdout,
543
+ next_status: explicitDecision === 'approve' ? 'completed' :
544
+ explicitDecision === 'reject' ? 'in_progress' :
545
+ explicitDecision === 'dispute' ? 'disputed' :
546
+ explicitDecision === 'skip' ? 'skipped' : 'review',
547
+ metadata: {
548
+ rejection_count: task.rejection_count,
549
+ confidence: 'low',
550
+ push_to_remote: ['approve', 'dispute', 'skip'].includes(explicitDecision),
551
+ repeated_issue: false,
552
+ }
553
+ };
369
554
  }
370
- });
555
+ else {
556
+ decision = {
557
+ decision: 'unclear',
558
+ reasoning: 'FALLBACK: Orchestrator failed, retrying review',
559
+ notes: 'Review unclear, retrying',
560
+ next_status: 'review',
561
+ metadata: {
562
+ rejection_count: task.rejection_count,
563
+ confidence: 'low',
564
+ push_to_remote: false,
565
+ repeated_issue: false,
566
+ }
567
+ };
568
+ }
569
+ }
371
570
  }
372
- // STEP 5: Parse orchestrator output with fallback
373
- const handler = new fallback_handler_js_1.OrchestrationFallbackHandler();
374
- let decision = handler.parseReviewerOutput(orchestratorOutput);
375
- if (decision.decision === 'unclear' && decision.reasoning.startsWith('FALLBACK: Orchestrator failed')) {
571
+ // STEP 4: Fallback for unclear decisions
572
+ if (decision.decision === 'unclear' && decision.reasoning.includes('FALLBACK: Orchestrator failed')) {
376
573
  const consecutiveParseFallbackRetries = countConsecutiveOrchestratorFallbackEntries(db, task.id, REVIEWER_PARSE_FALLBACK_MARKER) + 1;
377
574
  if (consecutiveParseFallbackRetries >= MAX_ORCHESTRATOR_PARSE_RETRIES) {
378
575
  decision = {
@@ -395,12 +592,49 @@ async function runReviewerPhase(db, task, projectPath, jsonMode = false, coordin
395
592
  };
396
593
  }
397
594
  }
398
- // STEP 6: Log orchestrator decision for audit trail
595
+ // STEP 5: Log orchestrator decision for audit trail
399
596
  (0, queries_js_1.addAuditEntry)(db, task.id, task.status, decision.next_status, 'orchestrator', {
400
597
  actorType: 'orchestrator',
401
598
  notes: `[${decision.decision}] ${decision.reasoning} (confidence: ${decision.metadata.confidence})`,
402
599
  });
403
- // STEP 7: Execute the decision
600
+ // STEP 5.5: Create follow-up tasks if any (ONLY on approval)
601
+ if (decision.decision === 'approve' && decision.follow_up_tasks && decision.follow_up_tasks.length > 0) {
602
+ const depth = (0, queries_js_1.getFollowUpDepth)(db, task.id);
603
+ const maxDepth = config.followUpTasks?.maxDepth ?? 2;
604
+ if (depth < maxDepth) {
605
+ for (const followUp of decision.follow_up_tasks) {
606
+ try {
607
+ const nextDepth = depth + 1;
608
+ // Policy: Auto-implement depth 1 if configured.
609
+ // Depth 2+ always requires human promotion (approval).
610
+ let requiresPromotion = true;
611
+ if (nextDepth === 1 && config.followUpTasks?.autoImplementDepth1) {
612
+ requiresPromotion = false;
613
+ }
614
+ const followUpId = (0, queries_js_1.createFollowUpTask)(db, {
615
+ title: followUp.title,
616
+ description: followUp.description,
617
+ sectionId: task.section_id,
618
+ referenceTaskId: task.id,
619
+ referenceCommit: commit_sha || undefined,
620
+ requiresPromotion,
621
+ depth: nextDepth,
622
+ });
623
+ if (!jsonMode) {
624
+ const statusLabel = requiresPromotion ? '(deferred)' : '(active)';
625
+ console.log(`\n+ Created follow-up task ${statusLabel}: ${followUp.title} (${followUpId.substring(0, 8)})`);
626
+ }
627
+ }
628
+ catch (error) {
629
+ console.warn(`Failed to create follow-up task "${followUp.title}":`, error);
630
+ }
631
+ }
632
+ }
633
+ else if (!jsonMode) {
634
+ console.log(`\n! Follow-up depth limit reached (${depth}), skipping new follow-ups.`);
635
+ }
636
+ }
637
+ // STEP 6: Execute the decision
404
638
  const commitSha = commit_sha || undefined;
405
639
  switch (decision.decision) {
406
640
  case 'approve':
@@ -1 +1 @@
1
- {"version":3,"file":"loop-phases.js","sourceRoot":"","sources":["../../src/commands/loop-phases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-phases.js","sourceRoot":"","sources":["../../src/commands/loop-phases.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/commands/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6EnD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8WnF"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/commands/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6EnD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0XnF"}
@@ -359,7 +359,7 @@ async function loopCommand(args, flags) {
359
359
  const cachedCoord = coordinatorCache.get(task.id);
360
360
  phaseResult = await (0, loop_phases_js_1.runReviewerPhase)(db, task, projectPath, flags.json, cachedCoord);
361
361
  }
362
- // Handle credit exhaustion: pause and wait for config change
362
+ // Handle credit exhaustion or rate limits
363
363
  if (phaseResult?.action === 'pause_credit_exhaustion') {
364
364
  const pauseResult = await (0, credit_pause_js_1.handleCreditExhaustion)({
365
365
  provider: phaseResult.provider,
@@ -383,6 +383,17 @@ async function loopCommand(args, flags) {
383
383
  break;
384
384
  }
385
385
  }
386
+ else if (phaseResult?.action === 'rate_limit') {
387
+ const delayMs = phaseResult.retryAfterMs ?? 60000;
388
+ const delayMin = (delayMs / 60000).toFixed(1);
389
+ if (!flags.json) {
390
+ console.log(`\n[RATE LIMIT] ${phaseResult.message}`);
391
+ console.log(` Provider: ${phaseResult.provider} (${phaseResult.model})`);
392
+ console.log(` Waiting ${delayMin}m before retrying...`);
393
+ }
394
+ await sleep(delayMs);
395
+ continue; // Retry the same task
396
+ }
386
397
  // Check if we should continue
387
398
  if (values.once) {
388
399
  if (!flags.json) {