steroids-cli 0.9.42 → 0.10.13

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 (232) hide show
  1. package/dist/cli/base-command.d.ts +16 -0
  2. package/dist/cli/base-command.d.ts.map +1 -0
  3. package/dist/cli/base-command.js +42 -0
  4. package/dist/cli/base-command.js.map +1 -0
  5. package/dist/cli/version-check.d.ts.map +1 -1
  6. package/dist/cli/version-check.js +28 -2
  7. package/dist/cli/version-check.js.map +1 -1
  8. package/dist/commands/disputes.js +15 -30
  9. package/dist/commands/disputes.js.map +1 -1
  10. package/dist/commands/gc.d.ts +1 -1
  11. package/dist/commands/gc.d.ts.map +1 -1
  12. package/dist/commands/gc.js +49 -64
  13. package/dist/commands/gc.js.map +1 -1
  14. package/dist/commands/git.d.ts.map +1 -1
  15. package/dist/commands/git.js +5 -8
  16. package/dist/commands/git.js.map +1 -1
  17. package/dist/commands/health-stuck.js +2 -6
  18. package/dist/commands/health-stuck.js.map +1 -1
  19. package/dist/commands/health.d.ts.map +1 -1
  20. package/dist/commands/health.js +2 -6
  21. package/dist/commands/health.js.map +1 -1
  22. package/dist/commands/llm.d.ts.map +1 -1
  23. package/dist/commands/llm.js +4 -12
  24. package/dist/commands/llm.js.map +1 -1
  25. package/dist/commands/locks.js +12 -24
  26. package/dist/commands/locks.js.map +1 -1
  27. package/dist/commands/loop-phases.d.ts +12 -4
  28. package/dist/commands/loop-phases.d.ts.map +1 -1
  29. package/dist/commands/loop-phases.js +163 -111
  30. package/dist/commands/loop-phases.js.map +1 -1
  31. package/dist/commands/purge.d.ts.map +1 -1
  32. package/dist/commands/purge.js +11 -22
  33. package/dist/commands/purge.js.map +1 -1
  34. package/dist/commands/runners-list.d.ts.map +1 -1
  35. package/dist/commands/runners-list.js +11 -30
  36. package/dist/commands/runners-list.js.map +1 -1
  37. package/dist/commands/runners-parallel.d.ts.map +1 -1
  38. package/dist/commands/runners-parallel.js +3 -7
  39. package/dist/commands/runners-parallel.js.map +1 -1
  40. package/dist/commands/runners.js +2 -9
  41. package/dist/commands/runners.js.map +1 -1
  42. package/dist/commands/scan.d.ts.map +1 -1
  43. package/dist/commands/scan.js +5 -8
  44. package/dist/commands/scan.js.map +1 -1
  45. package/dist/commands/sections-commands.d.ts.map +1 -1
  46. package/dist/commands/sections-commands.js +12 -24
  47. package/dist/commands/sections-commands.js.map +1 -1
  48. package/dist/commands/sections.js +6 -12
  49. package/dist/commands/sections.js.map +1 -1
  50. package/dist/commands/skills.d.ts +11 -0
  51. package/dist/commands/skills.d.ts.map +1 -0
  52. package/dist/commands/skills.js +181 -0
  53. package/dist/commands/skills.js.map +1 -0
  54. package/dist/commands/tasks-reset.d.ts +3 -0
  55. package/dist/commands/tasks-reset.d.ts.map +1 -0
  56. package/dist/commands/tasks-reset.js +200 -0
  57. package/dist/commands/tasks-reset.js.map +1 -0
  58. package/dist/commands/tasks.d.ts.map +1 -1
  59. package/dist/commands/tasks.js +57 -67
  60. package/dist/commands/tasks.js.map +1 -1
  61. package/dist/commands/web.d.ts.map +1 -1
  62. package/dist/commands/web.js +3 -1
  63. package/dist/commands/web.js.map +1 -1
  64. package/dist/config/loader.d.ts +1 -0
  65. package/dist/config/loader.d.ts.map +1 -1
  66. package/dist/config/loader.js.map +1 -1
  67. package/dist/database/connection.d.ts +10 -1
  68. package/dist/database/connection.d.ts.map +1 -1
  69. package/dist/database/connection.js +32 -6
  70. package/dist/database/connection.js.map +1 -1
  71. package/dist/database/queries.d.ts +18 -0
  72. package/dist/database/queries.d.ts.map +1 -1
  73. package/dist/database/queries.js +91 -20
  74. package/dist/database/queries.js.map +1 -1
  75. package/dist/database/schema.d.ts +2 -2
  76. package/dist/database/schema.d.ts.map +1 -1
  77. package/dist/database/schema.js +8 -0
  78. package/dist/database/schema.js.map +1 -1
  79. package/dist/git/status.d.ts.map +1 -1
  80. package/dist/git/status.js +13 -2
  81. package/dist/git/status.js.map +1 -1
  82. package/dist/git/submission-resolution.d.ts.map +1 -1
  83. package/dist/git/submission-resolution.js +3 -7
  84. package/dist/git/submission-resolution.js.map +1 -1
  85. package/dist/index.js +5 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/migrations/backfill.d.ts +3 -0
  88. package/dist/migrations/backfill.d.ts.map +1 -0
  89. package/dist/migrations/backfill.js +53 -0
  90. package/dist/migrations/backfill.js.map +1 -0
  91. package/dist/migrations/runner.d.ts.map +1 -1
  92. package/dist/migrations/runner.js +9 -0
  93. package/dist/migrations/runner.js.map +1 -1
  94. package/dist/orchestrator/base-runner.d.ts +14 -0
  95. package/dist/orchestrator/base-runner.d.ts.map +1 -0
  96. package/dist/orchestrator/base-runner.js +57 -0
  97. package/dist/orchestrator/base-runner.js.map +1 -0
  98. package/dist/orchestrator/coder.d.ts +4 -22
  99. package/dist/orchestrator/coder.d.ts.map +1 -1
  100. package/dist/orchestrator/coder.js +136 -183
  101. package/dist/orchestrator/coder.js.map +1 -1
  102. package/dist/orchestrator/coordinator.d.ts.map +1 -1
  103. package/dist/orchestrator/coordinator.js +1 -0
  104. package/dist/orchestrator/coordinator.js.map +1 -1
  105. package/dist/orchestrator/fallback-handler.d.ts +3 -23
  106. package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
  107. package/dist/orchestrator/fallback-handler.js +40 -357
  108. package/dist/orchestrator/fallback-handler.js.map +1 -1
  109. package/dist/orchestrator/history-manager.d.ts +15 -0
  110. package/dist/orchestrator/history-manager.d.ts.map +1 -0
  111. package/dist/orchestrator/history-manager.js +93 -0
  112. package/dist/orchestrator/history-manager.js.map +1 -0
  113. package/dist/orchestrator/post-coder.d.ts.map +1 -1
  114. package/dist/orchestrator/post-coder.js +16 -24
  115. package/dist/orchestrator/post-coder.js.map +1 -1
  116. package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
  117. package/dist/orchestrator/post-reviewer.js +25 -37
  118. package/dist/orchestrator/post-reviewer.js.map +1 -1
  119. package/dist/orchestrator/reviewer.d.ts +5 -29
  120. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  121. package/dist/orchestrator/reviewer.js +193 -255
  122. package/dist/orchestrator/reviewer.js.map +1 -1
  123. package/dist/orchestrator/signal-parser.d.ts +32 -0
  124. package/dist/orchestrator/signal-parser.d.ts.map +1 -0
  125. package/dist/orchestrator/signal-parser.js +73 -0
  126. package/dist/orchestrator/signal-parser.js.map +1 -0
  127. package/dist/orchestrator/types.d.ts +9 -13
  128. package/dist/orchestrator/types.d.ts.map +1 -1
  129. package/dist/parallel/clone.d.ts.map +1 -1
  130. package/dist/parallel/clone.js +37 -2
  131. package/dist/parallel/clone.js.map +1 -1
  132. package/dist/parallel/merge-conflict-attempts.d.ts.map +1 -1
  133. package/dist/parallel/merge-conflict-attempts.js +4 -12
  134. package/dist/parallel/merge-conflict-attempts.js.map +1 -1
  135. package/dist/parallel/merge-conflict.d.ts.map +1 -1
  136. package/dist/parallel/merge-conflict.js +3 -10
  137. package/dist/parallel/merge-conflict.js.map +1 -1
  138. package/dist/parallel/merge-sealing.d.ts +0 -3
  139. package/dist/parallel/merge-sealing.d.ts.map +1 -1
  140. package/dist/parallel/merge-sealing.js +5 -9
  141. package/dist/parallel/merge-sealing.js.map +1 -1
  142. package/dist/prompts/coder.d.ts +1 -1
  143. package/dist/prompts/coder.d.ts.map +1 -1
  144. package/dist/prompts/coder.js +66 -119
  145. package/dist/prompts/coder.js.map +1 -1
  146. package/dist/prompts/prompt-helpers.d.ts +4 -0
  147. package/dist/prompts/prompt-helpers.d.ts.map +1 -1
  148. package/dist/prompts/prompt-helpers.js +35 -0
  149. package/dist/prompts/prompt-helpers.js.map +1 -1
  150. package/dist/prompts/reviewer.d.ts.map +1 -1
  151. package/dist/prompts/reviewer.js +1 -3
  152. package/dist/prompts/reviewer.js.map +1 -1
  153. package/dist/providers/claude.d.ts.map +1 -1
  154. package/dist/providers/claude.js +9 -1
  155. package/dist/providers/claude.js.map +1 -1
  156. package/dist/providers/codex.d.ts.map +1 -1
  157. package/dist/providers/codex.js +10 -1
  158. package/dist/providers/codex.js.map +1 -1
  159. package/dist/providers/gemini.d.ts +9 -48
  160. package/dist/providers/gemini.d.ts.map +1 -1
  161. package/dist/providers/gemini.js +133 -101
  162. package/dist/providers/gemini.js.map +1 -1
  163. package/dist/providers/interface.d.ts +9 -1
  164. package/dist/providers/interface.d.ts.map +1 -1
  165. package/dist/providers/interface.js +11 -1
  166. package/dist/providers/interface.js.map +1 -1
  167. package/dist/providers/invocation-logger.d.ts +2 -0
  168. package/dist/providers/invocation-logger.d.ts.map +1 -1
  169. package/dist/providers/invocation-logger.js +3 -3
  170. package/dist/providers/invocation-logger.js.map +1 -1
  171. package/dist/providers/mistral.d.ts.map +1 -1
  172. package/dist/providers/mistral.js +12 -1
  173. package/dist/providers/mistral.js.map +1 -1
  174. package/dist/providers/ping.d.ts +5 -0
  175. package/dist/providers/ping.d.ts.map +1 -0
  176. package/dist/providers/ping.js +35 -0
  177. package/dist/providers/ping.js.map +1 -0
  178. package/dist/providers/registry.d.ts +4 -0
  179. package/dist/providers/registry.d.ts.map +1 -1
  180. package/dist/providers/registry.js +18 -0
  181. package/dist/providers/registry.js.map +1 -1
  182. package/dist/runners/activity-log.d.ts.map +1 -1
  183. package/dist/runners/activity-log.js +12 -36
  184. package/dist/runners/activity-log.js.map +1 -1
  185. package/dist/runners/credit-pause.d.ts +2 -3
  186. package/dist/runners/credit-pause.d.ts.map +1 -1
  187. package/dist/runners/credit-pause.js +25 -40
  188. package/dist/runners/credit-pause.js.map +1 -1
  189. package/dist/runners/daemon.d.ts +0 -8
  190. package/dist/runners/daemon.d.ts.map +1 -1
  191. package/dist/runners/daemon.js +23 -76
  192. package/dist/runners/daemon.js.map +1 -1
  193. package/dist/runners/global-db.d.ts +14 -1
  194. package/dist/runners/global-db.d.ts.map +1 -1
  195. package/dist/runners/global-db.js +123 -59
  196. package/dist/runners/global-db.js.map +1 -1
  197. package/dist/runners/orchestrator-loop.d.ts.map +1 -1
  198. package/dist/runners/orchestrator-loop.js +2 -6
  199. package/dist/runners/orchestrator-loop.js.map +1 -1
  200. package/dist/runners/projects.d.ts +2 -32
  201. package/dist/runners/projects.d.ts.map +1 -1
  202. package/dist/runners/projects.js +23 -103
  203. package/dist/runners/projects.js.map +1 -1
  204. package/dist/runners/wakeup-checks.d.ts +0 -3
  205. package/dist/runners/wakeup-checks.d.ts.map +1 -1
  206. package/dist/runners/wakeup-checks.js +13 -26
  207. package/dist/runners/wakeup-checks.js.map +1 -1
  208. package/dist/runners/wakeup-timing.d.ts.map +1 -1
  209. package/dist/runners/wakeup-timing.js +4 -12
  210. package/dist/runners/wakeup-timing.js.map +1 -1
  211. package/dist/runners/wakeup.d.ts +1 -1
  212. package/dist/runners/wakeup.d.ts.map +1 -1
  213. package/dist/runners/wakeup.js +394 -359
  214. package/dist/runners/wakeup.js.map +1 -1
  215. package/dist/utils/tokens.d.ts +14 -0
  216. package/dist/utils/tokens.d.ts.map +1 -0
  217. package/dist/utils/tokens.js +62 -0
  218. package/dist/utils/tokens.js.map +1 -0
  219. package/migrations/004_add_section_dependencies.sql +1 -1
  220. package/migrations/017_add_invocation_runner_id.sql +8 -0
  221. package/migrations/018_expand_audit_columns.sql +13 -0
  222. package/migrations/019_add_task_start_sha.sql +9 -0
  223. package/migrations/manifest.json +25 -1
  224. package/package.json +4 -3
  225. package/dist/orchestrator/schemas.d.ts +0 -26
  226. package/dist/orchestrator/schemas.d.ts.map +0 -1
  227. package/dist/orchestrator/schemas.js +0 -154
  228. package/dist/orchestrator/schemas.js.map +0 -1
  229. package/dist/parallel/merge.test.d.ts +0 -5
  230. package/dist/parallel/merge.test.d.ts.map +0 -1
  231. package/dist/parallel/merge.test.js +0 -322
  232. package/dist/parallel/merge.test.js.map +0 -1
@@ -10,16 +10,15 @@ exports.isMultiReviewEnabled = isMultiReviewEnabled;
10
10
  exports.invokeReviewers = invokeReviewers;
11
11
  exports.invokeReviewer = invokeReviewer;
12
12
  exports.invokeReviewerBatch = invokeReviewerBatch;
13
- const node_fs_1 = require("node:fs");
14
- const node_os_1 = require("node:os");
15
- const node_path_1 = require("node:path");
16
13
  const queries_js_1 = require("../database/queries.js");
17
14
  const connection_js_1 = require("../database/connection.js");
18
15
  const reviewer_js_1 = require("../prompts/reviewer.js");
19
16
  const loader_js_1 = require("../config/loader.js");
20
- const registry_js_1 = require("../providers/registry.js");
21
- const invocation_logger_js_1 = require("../providers/invocation-logger.js");
17
+ const interface_js_1 = require("../providers/interface.js");
18
+ const tokens_js_1 = require("../utils/tokens.js");
22
19
  const submission_resolution_js_1 = require("../git/submission-resolution.js");
20
+ const history_manager_js_1 = require("./history-manager.js");
21
+ const base_runner_js_1 = require("./base-runner.js");
23
22
  /**
24
23
  * Deterministic policy engine for multi-reviewer decisions
25
24
  */
@@ -73,8 +72,8 @@ function isMultiReviewEnabled(config) {
73
72
  /**
74
73
  * Invoke multiple reviewers in parallel
75
74
  */
76
- async function invokeReviewers(task, projectPath, reviewerConfigs, coordinatorGuidance, coordinatorDecision) {
77
- const results = await Promise.allSettled(reviewerConfigs.map(config => invokeReviewer(task, projectPath, coordinatorGuidance, coordinatorDecision, config)));
75
+ async function invokeReviewers(task, projectPath, reviewerConfigs, coordinatorGuidance, coordinatorDecision, runnerId) {
76
+ const results = await Promise.allSettled(reviewerConfigs.map(config => invokeReviewer(task, projectPath, coordinatorGuidance, coordinatorDecision, config, runnerId)));
78
77
  return results.map((r, i) => {
79
78
  if (r.status === 'fulfilled') {
80
79
  return r.value;
@@ -94,14 +93,6 @@ async function invokeReviewers(task, projectPath, reviewerConfigs, coordinatorGu
94
93
  }
95
94
  });
96
95
  }
97
- /**
98
- * Write prompt to temp file
99
- */
100
- function writePromptToTempFile(prompt) {
101
- const tempPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `steroids-reviewer-${Date.now()}.txt`);
102
- (0, node_fs_1.writeFileSync)(tempPath, prompt, 'utf-8');
103
- return tempPath;
104
- }
105
96
  /**
106
97
  * Parse reviewer output for decision
107
98
  */
@@ -127,262 +118,209 @@ function parseReviewerDecision(output) {
127
118
  }
128
119
  return { decision, notes: extractedNotes };
129
120
  }
130
- /**
131
- * Invoke AI provider with prompt
132
- * Uses configuration to determine which provider to use
133
- */
134
- async function invokeProvider(promptFile, timeoutMs = 600_000, // 10 minutes default for reviewer
135
- taskId, projectPath, reviewerConfig, resumeSessionId) {
136
- // Load configuration to get reviewer provider settings if not provided
137
- // Project config overrides global config
138
- if (!reviewerConfig) {
121
+ class ReviewerRunner extends base_runner_js_1.BaseRunner {
122
+ async runTask(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig, runnerId) {
139
123
  const config = (0, loader_js_1.loadConfig)(projectPath);
140
- reviewerConfig = config.ai?.reviewer;
141
- }
142
- const providerName = reviewerConfig?.provider;
143
- const modelName = reviewerConfig?.model;
144
- if (!providerName || !modelName) {
145
- throw new Error('Reviewer AI provider not configured. Run "steroids config ai reviewer" to configure.');
146
- }
147
- // Get the provider from registry
148
- const registry = await (0, registry_js_1.getProviderRegistry)();
149
- const provider = registry.get(providerName);
150
- // Check if provider is available
151
- if (!(await provider.isAvailable())) {
152
- throw new Error(`Provider '${providerName}' is not available. ` +
153
- `Ensure the CLI is installed and in PATH.`);
154
- }
155
- // Read prompt content
156
- const promptContent = (0, node_fs_1.readFileSync)(promptFile, 'utf-8');
157
- const result = await (0, invocation_logger_js_1.logInvocation)(promptContent, (ctx) => provider.invoke(promptContent, {
158
- model: modelName,
159
- timeout: timeoutMs,
160
- cwd: projectPath ?? process.cwd(),
161
- promptFile,
162
- role: 'reviewer',
163
- streamOutput: true,
164
- onActivity: ctx?.onActivity,
165
- resumeSessionId,
166
- }), {
167
- role: 'reviewer',
168
- provider: providerName,
169
- model: modelName,
170
- taskId,
171
- projectPath,
172
- resumedFromSessionId: resumeSessionId ?? undefined,
173
- invocationMode: resumeSessionId ? 'resume' : 'fresh',
174
- });
175
- // Parse the decision from output
176
- const { decision, notes } = parseReviewerDecision(result.stdout);
177
- return {
178
- success: result.success,
179
- exitCode: result.exitCode,
180
- stdout: result.stdout,
181
- stderr: result.stderr,
182
- duration: result.duration,
183
- timedOut: result.timedOut,
184
- decision,
185
- notes,
186
- provider: providerName,
187
- model: modelName,
188
- };
189
- }
190
- /**
191
- * Invoke reviewer for a task
192
- * @param coordinatorGuidance Optional guidance from coordinator after repeated rejections
193
- * @param coordinatorDecision Optional decision type from coordinator
194
- * @param reviewerConfig Optional reviewer configuration to override default
195
- */
196
- async function invokeReviewer(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig) {
197
- // Load config to show provider/model being used
198
- const config = (0, loader_js_1.loadConfig)(projectPath);
199
- const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
200
- console.log(`\n${'='.repeat(60)}`);
201
- console.log(`REVIEWER: ${task.title}`);
202
- console.log(`Task ID: ${task.id}`);
203
- console.log(`Rejection count: ${task.rejection_count}/15`);
204
- console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
205
- console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
206
- console.log(`${'='.repeat(60)}\n`);
207
- // Fetch other tasks in the same section for context
208
- let sectionTasks = [];
209
- let rejectionHistory = [];
210
- let submissionNotes = null;
211
- let resumeSessionId = null;
212
- let submissionCommitHash = null;
213
- let submissionCommitHashes = [];
214
- let unresolvedSubmissionCommits = [];
215
- try {
216
- const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
124
+ const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
125
+ console.log(`\n${'='.repeat(60)}`);
126
+ console.log(`REVIEWER: ${task.title}`);
127
+ console.log(`Task ID: ${task.id}`);
128
+ console.log(`Rejection count: ${task.rejection_count}/15`);
129
+ console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
130
+ console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
131
+ console.log(`${'='.repeat(60)}\n`);
132
+ let sectionTasks = [];
133
+ let rejectionHistory = [];
134
+ let submissionNotes = null;
135
+ let resumeSessionId = null;
136
+ let submissionCommitHash = null;
137
+ let submissionCommitHashes = [];
138
+ let unresolvedSubmissionCommits = [];
217
139
  try {
218
- // Get section tasks
219
- if (task.section_id) {
220
- const allSectionTasks = (0, queries_js_1.listTasks)(db, { sectionId: task.section_id });
221
- sectionTasks = allSectionTasks.map(t => ({
222
- id: t.id,
223
- title: t.title,
224
- status: t.status,
225
- }));
226
- }
227
- // Get rejection history - ALWAYS fetch this so reviewer can see past attempts
228
- rejectionHistory = (0, queries_js_1.getTaskRejections)(db, task.id);
229
- if (rejectionHistory.length > 0) {
230
- console.log(`Found ${rejectionHistory.length} previous rejection(s) for this task`);
231
- }
232
- // Get coder's submission notes (if any)
233
- submissionNotes = (0, queries_js_1.getLatestSubmissionNotes)(db, task.id);
234
- if (submissionNotes) {
235
- console.log(`Coder included notes with submission`);
236
- }
237
- const submissionHistory = (0, submission_resolution_js_1.resolveSubmissionCommitHistoryWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
238
- if (!submissionHistory.latestReachableSha) {
239
- const attemptsText = submissionHistory.attempts.join(' | ') || 'none';
240
- throw new Error(`No reachable submission commit hash found for task ${task.id} (${submissionHistory.reason ?? 'not_reachable'}; attempts: ${attemptsText})`);
241
- }
242
- submissionCommitHash = submissionHistory.latestReachableSha;
243
- submissionCommitHashes = submissionHistory.reachableShasOldestFirst;
244
- unresolvedSubmissionCommits = submissionHistory.unreachableShas;
245
- console.log(`Using submission commit chain (${submissionCommitHashes.length} reachable), latest: ${submissionCommitHash}`);
246
- if (unresolvedSubmissionCommits.length > 0) {
247
- console.log(`Warning: ${unresolvedSubmissionCommits.length} historical submission commit(s) unresolved`);
248
- }
249
- // Check for resumable session (same provider/model/role)
250
- if (effectiveReviewerConfig?.provider && effectiveReviewerConfig?.model) {
251
- resumeSessionId = (0, queries_js_1.findResumableSession)(db, task.id, 'reviewer', effectiveReviewerConfig.provider, effectiveReviewerConfig.model);
252
- if (resumeSessionId) {
253
- console.log(`Found resumable session: ${resumeSessionId.substring(0, 8)}... (resuming with delta prompt)`);
140
+ (0, connection_js_1.withDatabase)(projectPath, (db) => {
141
+ if (task.section_id) {
142
+ const allSectionTasks = (0, queries_js_1.listTasks)(db, { sectionId: task.section_id });
143
+ sectionTasks = allSectionTasks.map(t => ({
144
+ id: t.id,
145
+ title: t.title,
146
+ status: t.status,
147
+ }));
254
148
  }
255
- }
149
+ rejectionHistory = (0, queries_js_1.getTaskRejections)(db, task.id);
150
+ if (rejectionHistory.length > 0) {
151
+ console.log(`Found ${rejectionHistory.length} previous rejection(s) for this task`);
152
+ }
153
+ submissionNotes = (0, queries_js_1.getLatestSubmissionNotes)(db, task.id);
154
+ if (submissionNotes) {
155
+ console.log(`Coder included notes with submission`);
156
+ }
157
+ const submissionHistory = (0, submission_resolution_js_1.resolveSubmissionCommitHistoryWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
158
+ if (!submissionHistory.latestReachableSha) {
159
+ const attemptsText = submissionHistory.attempts.join(' | ') || 'none';
160
+ throw new Error(`No reachable submission commit hash found for task ${task.id} (${submissionHistory.reason ?? 'not_reachable'}; attempts: ${attemptsText})`);
161
+ }
162
+ submissionCommitHash = submissionHistory.latestReachableSha;
163
+ submissionCommitHashes = submissionHistory.reachableShasOldestFirst;
164
+ unresolvedSubmissionCommits = submissionHistory.unreachableShas;
165
+ console.log(`Using submission commit chain (${submissionCommitHashes.length} reachable), latest: ${submissionCommitHash}`);
166
+ if (unresolvedSubmissionCommits.length > 0) {
167
+ console.log(`Warning: ${unresolvedSubmissionCommits.length} historical submission commit(s) unresolved`);
168
+ }
169
+ if (effectiveReviewerConfig?.provider && effectiveReviewerConfig?.model) {
170
+ resumeSessionId = (0, queries_js_1.findResumableSession)(db, task.id, 'reviewer', effectiveReviewerConfig.provider, effectiveReviewerConfig.model);
171
+ if (resumeSessionId) {
172
+ console.log(`Found resumable session: ${resumeSessionId.substring(0, 8)}... (resuming with delta prompt)`);
173
+ }
174
+ }
175
+ });
256
176
  }
257
- finally {
258
- close();
177
+ catch (error) {
178
+ const message = error instanceof Error ? error.message : String(error);
179
+ throw new Error(`Could not fetch reviewer context: ${message}`);
259
180
  }
260
- }
261
- catch (error) {
262
- const message = error instanceof Error ? error.message : String(error);
263
- throw new Error(`Could not fetch reviewer context: ${message}`);
264
- }
265
- // Reuse config loaded earlier, get reviewer model
266
- const reviewerModel = effectiveReviewerConfig?.model || 'unknown';
267
- const context = {
268
- task,
269
- projectPath,
270
- reviewerModel,
271
- submissionCommitHash: submissionCommitHash,
272
- submissionCommitHashes,
273
- unresolvedSubmissionCommits,
274
- sectionTasks,
275
- rejectionHistory,
276
- submissionNotes,
277
- config,
278
- coordinatorGuidance,
279
- coordinatorDecision,
280
- };
281
- let prompt;
282
- if (resumeSessionId) {
283
- prompt = (0, reviewer_js_1.generateResumingReviewerDeltaPrompt)(context);
284
- }
285
- else {
286
- prompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
287
- }
288
- // Write prompt to temp file
289
- const promptFile = writePromptToTempFile(prompt);
290
- try {
291
- let result = await invokeProvider(promptFile, 600_000, task.id, projectPath, effectiveReviewerConfig, resumeSessionId ?? undefined);
292
- // If session resume returned empty output, invalidate session and retry fresh
293
- if (resumeSessionId && result.stdout.trim().length === 0) {
294
- console.warn(`Session resume returned empty output — invalidating session ${resumeSessionId.substring(0, 8)}... and retrying fresh`);
181
+ const reviewerModel = effectiveReviewerConfig?.model || 'unknown';
182
+ const context = {
183
+ task,
184
+ projectPath,
185
+ reviewerModel,
186
+ submissionCommitHash: submissionCommitHash,
187
+ submissionCommitHashes,
188
+ unresolvedSubmissionCommits,
189
+ sectionTasks,
190
+ rejectionHistory,
191
+ submissionNotes,
192
+ config,
193
+ coordinatorGuidance,
194
+ coordinatorDecision,
195
+ };
196
+ let prompt;
197
+ if (resumeSessionId) {
198
+ prompt = (0, reviewer_js_1.generateResumingReviewerDeltaPrompt)(context);
199
+ }
200
+ else {
201
+ prompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
202
+ }
203
+ const promptFile = this.writePromptToTempFile(prompt, 'reviewer');
204
+ try {
205
+ let baseResult;
206
+ let sessionNotFound = false;
207
+ const providerName = effectiveReviewerConfig?.provider ?? 'unknown';
208
+ const modelName = effectiveReviewerConfig?.model ?? 'unknown';
295
209
  try {
296
- const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
297
- (0, queries_js_1.invalidateSession)(db, resumeSessionId);
298
- close();
210
+ baseResult = await this.invokeProvider(promptFile, 'reviewer', providerName, modelName, 600_000, task.id, projectPath, resumeSessionId ?? undefined, runnerId);
299
211
  }
300
- catch { }
301
- // Generate fresh prompt and retry
302
- const freshPrompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
303
- const freshPromptFile = writePromptToTempFile(freshPrompt);
304
- try {
305
- result = await invokeProvider(freshPromptFile, 600_000, task.id, projectPath, effectiveReviewerConfig);
212
+ catch (err) {
213
+ if (err instanceof interface_js_1.SessionNotFoundError) {
214
+ console.warn(`Session not found for resume (${resumeSessionId?.substring(0, 8)}) — invalidating session and retrying fresh`);
215
+ sessionNotFound = true;
216
+ baseResult = { success: false, exitCode: 1, stdout: '', stderr: '', duration: 0, timedOut: false };
217
+ }
218
+ else {
219
+ throw err;
220
+ }
306
221
  }
307
- finally {
308
- if ((0, node_fs_1.existsSync)(freshPromptFile))
309
- (0, node_fs_1.unlinkSync)(freshPromptFile);
222
+ if (resumeSessionId && sessionNotFound) {
223
+ let guardedPrompt = '';
224
+ const { getTokenLimitForModel } = await import('../providers/registry.js');
225
+ const maxContextWindow = await getTokenLimitForModel(providerName, modelName);
226
+ const safeLimit = maxContextWindow - 8000;
227
+ try {
228
+ const baseContext = { ...context, rejectionHistory: [] };
229
+ const basePrompt = (0, reviewer_js_1.generateReviewerPrompt)(baseContext);
230
+ const historyResult = history_manager_js_1.HistoryManager.reconstructHistoryWithTokenGuard(projectPath, task.id, resumeSessionId, basePrompt, modelName, safeLimit);
231
+ guardedPrompt = historyResult.finalPrompt;
232
+ (0, connection_js_1.withDatabase)(projectPath, (db) => {
233
+ (0, queries_js_1.invalidateSession)(db, resumeSessionId);
234
+ });
235
+ }
236
+ catch (e) {
237
+ if (e.message.includes('Context Too Large'))
238
+ throw e;
239
+ guardedPrompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
240
+ if ((0, tokens_js_1.countTokens)(guardedPrompt, modelName) > safeLimit) {
241
+ throw new Error(`Context Too Large: System Prompt and Task Spec alone exceed safe context limit. Task cannot be processed.`);
242
+ }
243
+ }
244
+ const freshPromptFile = this.writePromptToTempFile(guardedPrompt, 'reviewer');
245
+ try {
246
+ baseResult = await this.invokeProvider(freshPromptFile, 'reviewer', providerName, modelName, 600_000, task.id, projectPath, undefined, runnerId);
247
+ }
248
+ finally {
249
+ this.cleanupTempFile(freshPromptFile);
250
+ }
310
251
  }
252
+ console.log(`\n${'='.repeat(60)}`);
253
+ console.log(`REVIEWER COMPLETED`);
254
+ console.log(`Exit code: ${baseResult.exitCode}`);
255
+ console.log(`Duration: ${(baseResult.duration / 1000).toFixed(1)}s`);
256
+ console.log(`${'='.repeat(60)}\n`);
257
+ const { decision, notes } = parseReviewerDecision(baseResult.stdout);
258
+ return {
259
+ ...baseResult,
260
+ decision,
261
+ notes,
262
+ provider: providerName,
263
+ model: modelName,
264
+ };
311
265
  }
312
- console.log(`\n${'='.repeat(60)}`);
313
- console.log(`REVIEWER COMPLETED`);
314
- console.log(`Exit code: ${result.exitCode}`);
315
- console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
316
- console.log(`${'='.repeat(60)}\n`);
317
- return result;
318
- }
319
- finally {
320
- // Clean up temp file
321
- if ((0, node_fs_1.existsSync)(promptFile)) {
322
- (0, node_fs_1.unlinkSync)(promptFile);
266
+ finally {
267
+ this.cleanupTempFile(promptFile);
323
268
  }
324
269
  }
325
- }
326
- /**
327
- * Invoke reviewer for a batch of tasks
328
- * @param tasks Tasks to review
329
- * @param sectionName Section name
330
- * @param projectPath Project path
331
- * @param reviewerConfig Optional reviewer configuration to override default
332
- */
333
- async function invokeReviewerBatch(tasks, sectionName, projectPath, reviewerConfig) {
334
- // Load config for quality settings and to show provider/model being used
335
- const config = (0, loader_js_1.loadConfig)(projectPath);
336
- const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
337
- console.log(`\n${'='.repeat(60)}`);
338
- console.log(`BATCH REVIEWER: Section "${sectionName}"`);
339
- console.log(`Tasks: ${tasks.length}`);
340
- tasks.forEach((t, i) => console.log(` ${i + 1}. ${t.title} (${t.id})`));
341
- console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
342
- console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
343
- console.log(`${'='.repeat(60)}\n`);
344
- const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
345
- let taskCommits = [];
346
- try {
347
- const unresolved = [];
348
- taskCommits = tasks.map(task => {
349
- const submissionResolution = (0, submission_resolution_js_1.resolveSubmissionCommitWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
350
- if (submissionResolution.status !== 'resolved') {
351
- const attemptsText = submissionResolution.attempts.join(' | ') || 'none';
352
- unresolved.push(`${task.id} (${submissionResolution.reason}; attempts: ${attemptsText})`);
270
+ async runBatch(tasks, sectionName, projectPath, reviewerConfig) {
271
+ const config = (0, loader_js_1.loadConfig)(projectPath);
272
+ const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
273
+ console.log(`\n${'='.repeat(60)}`);
274
+ console.log(`BATCH REVIEWER: Section "${sectionName}"`);
275
+ console.log(`Tasks: ${tasks.length}`);
276
+ tasks.forEach((t, i) => console.log(` ${i + 1}. ${t.title} (${t.id})`));
277
+ console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
278
+ console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
279
+ console.log(`${'='.repeat(60)}\n`);
280
+ let taskCommits = [];
281
+ (0, connection_js_1.withDatabase)(projectPath, (db) => {
282
+ const unresolved = [];
283
+ taskCommits = tasks.map(task => {
284
+ const submissionResolution = (0, submission_resolution_js_1.resolveSubmissionCommitWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
285
+ if (submissionResolution.status !== 'resolved') {
286
+ const attemptsText = submissionResolution.attempts.join(' | ') || 'none';
287
+ unresolved.push(`${task.id} (${submissionResolution.reason}; attempts: ${attemptsText})`);
288
+ }
289
+ return { taskId: task.id, commitHash: submissionResolution.status === 'resolved' ? submissionResolution.sha : '' };
290
+ });
291
+ if (unresolved.length > 0) {
292
+ throw new Error(`Missing reachable submission commit hash for batch review tasks: ${unresolved.join(', ')}`);
353
293
  }
354
- return { taskId: task.id, commitHash: submissionResolution.status === 'resolved' ? submissionResolution.sha : '' };
355
294
  });
356
- if (unresolved.length > 0) {
357
- throw new Error(`Missing reachable submission commit hash for batch review tasks: ${unresolved.join(', ')}`);
295
+ const context = {
296
+ tasks,
297
+ projectPath,
298
+ sectionName,
299
+ taskCommits,
300
+ config,
301
+ };
302
+ const prompt = (0, reviewer_js_1.generateBatchReviewerPrompt)(context);
303
+ const promptFile = this.writePromptToTempFile(prompt, 'reviewer');
304
+ try {
305
+ const timeoutMs = 20 * 60 * 1000 + tasks.length * 3 * 60 * 1000;
306
+ const baseResult = await this.invokeProvider(promptFile, 'reviewer', effectiveReviewerConfig?.provider ?? 'unknown', effectiveReviewerConfig?.model ?? 'unknown', timeoutMs, undefined, projectPath);
307
+ console.log(`\n${'='.repeat(60)}`);
308
+ console.log(`BATCH REVIEWER COMPLETED`);
309
+ console.log(`Duration: ${(baseResult.duration / 1000).toFixed(1)}s`);
310
+ console.log(`${'='.repeat(60)}\n`);
311
+ return { ...baseResult, taskCount: tasks.length };
358
312
  }
359
- }
360
- finally {
361
- close();
362
- }
363
- const context = {
364
- tasks,
365
- projectPath,
366
- sectionName,
367
- taskCommits,
368
- config,
369
- };
370
- const prompt = (0, reviewer_js_1.generateBatchReviewerPrompt)(context);
371
- const promptFile = writePromptToTempFile(prompt);
372
- try {
373
- // Longer timeout for batch: base 20 minutes + 3 minutes per task
374
- const timeoutMs = 20 * 60 * 1000 + tasks.length * 3 * 60 * 1000;
375
- const result = await invokeProvider(promptFile, timeoutMs, undefined, projectPath, effectiveReviewerConfig);
376
- console.log(`\n${'='.repeat(60)}`);
377
- console.log(`BATCH REVIEWER COMPLETED`);
378
- console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
379
- console.log(`${'='.repeat(60)}\n`);
380
- return { ...result, taskCount: tasks.length };
381
- }
382
- finally {
383
- if ((0, node_fs_1.existsSync)(promptFile)) {
384
- (0, node_fs_1.unlinkSync)(promptFile);
313
+ finally {
314
+ this.cleanupTempFile(promptFile);
385
315
  }
386
316
  }
387
317
  }
318
+ async function invokeReviewer(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig, runnerId) {
319
+ const runner = new ReviewerRunner();
320
+ return runner.runTask(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig, runnerId);
321
+ }
322
+ async function invokeReviewerBatch(tasks, sectionName, projectPath, reviewerConfig) {
323
+ const runner = new ReviewerRunner();
324
+ return runner.runBatch(tasks, sectionName, projectPath, reviewerConfig);
325
+ }
388
326
  //# sourceMappingURL=reviewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/orchestrator/reviewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/orchestrator/reviewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Strict parser for extracting routing signals from LLM plain text output.
3
+ * Replaces fragile JSON schema parsing.
4
+ */
5
+ export type CoderSignal = 'review' | 'unclear';
6
+ export type ReviewerDecision = 'approve' | 'reject' | 'dispute' | 'skip' | 'unclear';
7
+ export interface ParsedReviewerOutput {
8
+ decision: ReviewerDecision;
9
+ notes: string;
10
+ followUpTasks: {
11
+ title: string;
12
+ description: string;
13
+ }[];
14
+ }
15
+ export declare class SignalParser {
16
+ /**
17
+ * Removes all content inside Markdown code fences
18
+ * This prevents false positives if the LLM talks about the signal format.
19
+ */
20
+ private static stripCodeBlocks;
21
+ /**
22
+ * Parses the Coder's output for a status signal.
23
+ * Expects: STATUS: REVIEW
24
+ */
25
+ static parseCoderSignal(output: string): CoderSignal;
26
+ /**
27
+ * Parses the Reviewer's output for a decision and extracts follow-up tasks.
28
+ * Expects: DECISION: APPROVE|REJECT|DISPUTE|SKIP
29
+ */
30
+ static parseReviewerSignal(output: string): ParsedReviewerOutput;
31
+ }
32
+ //# sourceMappingURL=signal-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-parser.d.ts","sourceRoot":"","sources":["../../src/orchestrator/signal-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzD;AAED,qBAAa,YAAY;IACvB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAI9B;;;OAGG;WACW,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAiB3D;;;OAGG;WACW,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;CAsCxE"}