steroids-cli 0.9.43 → 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 (195) 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 +0 -4
  28. package/dist/commands/loop-phases.d.ts.map +1 -1
  29. package/dist/commands/loop-phases.js +75 -108
  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.map +1 -1
  55. package/dist/commands/tasks-reset.js +3 -6
  56. package/dist/commands/tasks-reset.js.map +1 -1
  57. package/dist/commands/tasks.d.ts.map +1 -1
  58. package/dist/commands/tasks.js +49 -67
  59. package/dist/commands/tasks.js.map +1 -1
  60. package/dist/commands/web.d.ts.map +1 -1
  61. package/dist/commands/web.js +3 -1
  62. package/dist/commands/web.js.map +1 -1
  63. package/dist/config/loader.d.ts +1 -0
  64. package/dist/config/loader.d.ts.map +1 -1
  65. package/dist/config/loader.js.map +1 -1
  66. package/dist/database/connection.d.ts +7 -0
  67. package/dist/database/connection.d.ts.map +1 -1
  68. package/dist/database/connection.js +27 -3
  69. package/dist/database/connection.js.map +1 -1
  70. package/dist/database/queries.d.ts +9 -0
  71. package/dist/database/queries.d.ts.map +1 -1
  72. package/dist/database/queries.js +55 -18
  73. package/dist/database/queries.js.map +1 -1
  74. package/dist/database/schema.d.ts +2 -2
  75. package/dist/database/schema.d.ts.map +1 -1
  76. package/dist/database/schema.js +6 -0
  77. package/dist/database/schema.js.map +1 -1
  78. package/dist/git/status.d.ts.map +1 -1
  79. package/dist/git/status.js +13 -2
  80. package/dist/git/status.js.map +1 -1
  81. package/dist/git/submission-resolution.d.ts.map +1 -1
  82. package/dist/git/submission-resolution.js +3 -7
  83. package/dist/git/submission-resolution.js.map +1 -1
  84. package/dist/index.js +5 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/migrations/backfill.d.ts +3 -0
  87. package/dist/migrations/backfill.d.ts.map +1 -0
  88. package/dist/migrations/backfill.js +53 -0
  89. package/dist/migrations/backfill.js.map +1 -0
  90. package/dist/migrations/runner.d.ts.map +1 -1
  91. package/dist/migrations/runner.js +9 -0
  92. package/dist/migrations/runner.js.map +1 -1
  93. package/dist/orchestrator/base-runner.d.ts +14 -0
  94. package/dist/orchestrator/base-runner.d.ts.map +1 -0
  95. package/dist/orchestrator/base-runner.js +57 -0
  96. package/dist/orchestrator/base-runner.js.map +1 -0
  97. package/dist/orchestrator/coder.d.ts +3 -21
  98. package/dist/orchestrator/coder.d.ts.map +1 -1
  99. package/dist/orchestrator/coder.js +128 -259
  100. package/dist/orchestrator/coder.js.map +1 -1
  101. package/dist/orchestrator/coordinator.d.ts.map +1 -1
  102. package/dist/orchestrator/coordinator.js +1 -0
  103. package/dist/orchestrator/coordinator.js.map +1 -1
  104. package/dist/orchestrator/fallback-handler.d.ts +3 -23
  105. package/dist/orchestrator/fallback-handler.d.ts.map +1 -1
  106. package/dist/orchestrator/fallback-handler.js +40 -357
  107. package/dist/orchestrator/fallback-handler.js.map +1 -1
  108. package/dist/orchestrator/history-manager.d.ts +15 -0
  109. package/dist/orchestrator/history-manager.d.ts.map +1 -0
  110. package/dist/orchestrator/history-manager.js +93 -0
  111. package/dist/orchestrator/history-manager.js.map +1 -0
  112. package/dist/orchestrator/post-coder.d.ts.map +1 -1
  113. package/dist/orchestrator/post-coder.js +16 -24
  114. package/dist/orchestrator/post-coder.js.map +1 -1
  115. package/dist/orchestrator/post-reviewer.d.ts.map +1 -1
  116. package/dist/orchestrator/post-reviewer.js +25 -37
  117. package/dist/orchestrator/post-reviewer.js.map +1 -1
  118. package/dist/orchestrator/reviewer.d.ts +3 -27
  119. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  120. package/dist/orchestrator/reviewer.js +182 -325
  121. package/dist/orchestrator/reviewer.js.map +1 -1
  122. package/dist/orchestrator/signal-parser.d.ts +32 -0
  123. package/dist/orchestrator/signal-parser.d.ts.map +1 -0
  124. package/dist/orchestrator/signal-parser.js +73 -0
  125. package/dist/orchestrator/signal-parser.js.map +1 -0
  126. package/dist/orchestrator/types.d.ts +9 -13
  127. package/dist/orchestrator/types.d.ts.map +1 -1
  128. package/dist/parallel/clone.d.ts.map +1 -1
  129. package/dist/parallel/clone.js +37 -2
  130. package/dist/parallel/clone.js.map +1 -1
  131. package/dist/parallel/merge-conflict-attempts.d.ts.map +1 -1
  132. package/dist/parallel/merge-conflict-attempts.js +4 -12
  133. package/dist/parallel/merge-conflict-attempts.js.map +1 -1
  134. package/dist/parallel/merge-conflict.d.ts.map +1 -1
  135. package/dist/parallel/merge-conflict.js +3 -10
  136. package/dist/parallel/merge-conflict.js.map +1 -1
  137. package/dist/parallel/merge-sealing.d.ts +0 -3
  138. package/dist/parallel/merge-sealing.d.ts.map +1 -1
  139. package/dist/parallel/merge-sealing.js +5 -9
  140. package/dist/parallel/merge-sealing.js.map +1 -1
  141. package/dist/prompts/coder.d.ts +1 -1
  142. package/dist/prompts/coder.d.ts.map +1 -1
  143. package/dist/prompts/coder.js +66 -119
  144. package/dist/prompts/coder.js.map +1 -1
  145. package/dist/prompts/prompt-helpers.d.ts +4 -0
  146. package/dist/prompts/prompt-helpers.d.ts.map +1 -1
  147. package/dist/prompts/prompt-helpers.js +35 -0
  148. package/dist/prompts/prompt-helpers.js.map +1 -1
  149. package/dist/prompts/reviewer.d.ts.map +1 -1
  150. package/dist/prompts/reviewer.js +1 -3
  151. package/dist/prompts/reviewer.js.map +1 -1
  152. package/dist/runners/activity-log.d.ts.map +1 -1
  153. package/dist/runners/activity-log.js +12 -36
  154. package/dist/runners/activity-log.js.map +1 -1
  155. package/dist/runners/credit-pause.d.ts.map +1 -1
  156. package/dist/runners/credit-pause.js +7 -10
  157. package/dist/runners/credit-pause.js.map +1 -1
  158. package/dist/runners/daemon.d.ts +0 -3
  159. package/dist/runners/daemon.d.ts.map +1 -1
  160. package/dist/runners/daemon.js +23 -50
  161. package/dist/runners/daemon.js.map +1 -1
  162. package/dist/runners/global-db.d.ts +6 -1
  163. package/dist/runners/global-db.d.ts.map +1 -1
  164. package/dist/runners/global-db.js +87 -71
  165. package/dist/runners/global-db.js.map +1 -1
  166. package/dist/runners/orchestrator-loop.d.ts.map +1 -1
  167. package/dist/runners/orchestrator-loop.js +2 -6
  168. package/dist/runners/orchestrator-loop.js.map +1 -1
  169. package/dist/runners/projects.d.ts +2 -20
  170. package/dist/runners/projects.d.ts.map +1 -1
  171. package/dist/runners/projects.js +24 -102
  172. package/dist/runners/projects.js.map +1 -1
  173. package/dist/runners/wakeup-checks.d.ts +0 -3
  174. package/dist/runners/wakeup-checks.d.ts.map +1 -1
  175. package/dist/runners/wakeup-checks.js +11 -26
  176. package/dist/runners/wakeup-checks.js.map +1 -1
  177. package/dist/runners/wakeup-timing.d.ts.map +1 -1
  178. package/dist/runners/wakeup-timing.js +4 -12
  179. package/dist/runners/wakeup-timing.js.map +1 -1
  180. package/dist/runners/wakeup.d.ts.map +1 -1
  181. package/dist/runners/wakeup.js +29 -61
  182. package/dist/runners/wakeup.js.map +1 -1
  183. package/migrations/004_add_section_dependencies.sql +1 -1
  184. package/migrations/018_expand_audit_columns.sql +13 -0
  185. package/migrations/019_add_task_start_sha.sql +9 -0
  186. package/migrations/manifest.json +17 -1
  187. package/package.json +3 -3
  188. package/dist/orchestrator/schemas.d.ts +0 -26
  189. package/dist/orchestrator/schemas.d.ts.map +0 -1
  190. package/dist/orchestrator/schemas.js +0 -154
  191. package/dist/orchestrator/schemas.js.map +0 -1
  192. package/dist/parallel/merge.test.d.ts +0 -5
  193. package/dist/parallel/merge.test.d.ts.map +0 -1
  194. package/dist/parallel/merge.test.js +0 -322
  195. package/dist/parallel/merge.test.js.map +0 -1
@@ -10,18 +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");
22
17
  const interface_js_1 = require("../providers/interface.js");
23
18
  const tokens_js_1 = require("../utils/tokens.js");
24
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");
25
22
  /**
26
23
  * Deterministic policy engine for multi-reviewer decisions
27
24
  */
@@ -96,14 +93,6 @@ async function invokeReviewers(task, projectPath, reviewerConfigs, coordinatorGu
96
93
  }
97
94
  });
98
95
  }
99
- /**
100
- * Write prompt to temp file
101
- */
102
- function writePromptToTempFile(prompt) {
103
- const tempPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `steroids-reviewer-${Date.now()}.txt`);
104
- (0, node_fs_1.writeFileSync)(tempPath, prompt, 'utf-8');
105
- return tempPath;
106
- }
107
96
  /**
108
97
  * Parse reviewer output for decision
109
98
  */
@@ -129,341 +118,209 @@ function parseReviewerDecision(output) {
129
118
  }
130
119
  return { decision, notes: extractedNotes };
131
120
  }
132
- /**
133
- * Invoke AI provider with prompt
134
- * Uses configuration to determine which provider to use
135
- */
136
- async function invokeProvider(promptFile, timeoutMs = 600_000, // 10 minutes default for reviewer
137
- taskId, projectPath, reviewerConfig, resumeSessionId, runnerId) {
138
- // Load configuration to get reviewer provider settings if not provided
139
- // Project config overrides global config
140
- if (!reviewerConfig) {
121
+ class ReviewerRunner extends base_runner_js_1.BaseRunner {
122
+ async runTask(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig, runnerId) {
141
123
  const config = (0, loader_js_1.loadConfig)(projectPath);
142
- reviewerConfig = config.ai?.reviewer;
143
- }
144
- const providerName = reviewerConfig?.provider;
145
- const modelName = reviewerConfig?.model;
146
- if (!providerName || !modelName) {
147
- throw new Error('Reviewer AI provider not configured. Run "steroids config ai reviewer" to configure.');
148
- }
149
- // Get the provider from registry
150
- const registry = await (0, registry_js_1.getProviderRegistry)();
151
- const provider = registry.get(providerName);
152
- // Check if provider is available
153
- if (!(await provider.isAvailable())) {
154
- throw new Error(`Provider '${providerName}' is not available. ` +
155
- `Ensure the CLI is installed and in PATH.`);
156
- }
157
- // Read prompt content
158
- const promptContent = (0, node_fs_1.readFileSync)(promptFile, 'utf-8');
159
- const result = await (0, invocation_logger_js_1.logInvocation)(promptContent, (ctx) => provider.invoke(promptContent, {
160
- model: modelName,
161
- timeout: timeoutMs,
162
- cwd: projectPath ?? process.cwd(),
163
- promptFile,
164
- role: 'reviewer',
165
- streamOutput: true,
166
- onActivity: ctx?.onActivity,
167
- resumeSessionId,
168
- }), {
169
- role: 'reviewer',
170
- provider: providerName,
171
- model: modelName,
172
- taskId,
173
- projectPath,
174
- resumedFromSessionId: resumeSessionId ?? undefined,
175
- invocationMode: resumeSessionId ? 'resume' : 'fresh',
176
- runnerId,
177
- });
178
- // Parse the decision from output
179
- const { decision, notes } = parseReviewerDecision(result.stdout);
180
- return {
181
- success: result.success,
182
- exitCode: result.exitCode,
183
- stdout: result.stdout,
184
- stderr: result.stderr,
185
- duration: result.duration,
186
- timedOut: result.timedOut,
187
- decision,
188
- notes,
189
- provider: providerName,
190
- model: modelName,
191
- };
192
- }
193
- /**
194
- * Invoke reviewer for a task
195
- * @param coordinatorGuidance Optional guidance from coordinator after repeated rejections
196
- * @param coordinatorDecision Optional decision type from coordinator
197
- * @param reviewerConfig Optional reviewer configuration to override default
198
- */
199
- async function invokeReviewer(task, projectPath, coordinatorGuidance, coordinatorDecision, reviewerConfig, runnerId) {
200
- // Load config to show provider/model being used
201
- const config = (0, loader_js_1.loadConfig)(projectPath);
202
- const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
203
- console.log(`\n${'='.repeat(60)}`);
204
- console.log(`REVIEWER: ${task.title}`);
205
- console.log(`Task ID: ${task.id}`);
206
- console.log(`Rejection count: ${task.rejection_count}/15`);
207
- console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
208
- console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
209
- console.log(`${'='.repeat(60)}\n`);
210
- // Fetch other tasks in the same section for context
211
- let sectionTasks = [];
212
- let rejectionHistory = [];
213
- let submissionNotes = null;
214
- let resumeSessionId = null;
215
- let submissionCommitHash = null;
216
- let submissionCommitHashes = [];
217
- let unresolvedSubmissionCommits = [];
218
- try {
219
- 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 = [];
220
139
  try {
221
- // Get section tasks
222
- if (task.section_id) {
223
- const allSectionTasks = (0, queries_js_1.listTasks)(db, { sectionId: task.section_id });
224
- sectionTasks = allSectionTasks.map(t => ({
225
- id: t.id,
226
- title: t.title,
227
- status: t.status,
228
- }));
229
- }
230
- // Get rejection history - ALWAYS fetch this so reviewer can see past attempts
231
- rejectionHistory = (0, queries_js_1.getTaskRejections)(db, task.id);
232
- if (rejectionHistory.length > 0) {
233
- console.log(`Found ${rejectionHistory.length} previous rejection(s) for this task`);
234
- }
235
- // Get coder's submission notes (if any)
236
- submissionNotes = (0, queries_js_1.getLatestSubmissionNotes)(db, task.id);
237
- if (submissionNotes) {
238
- console.log(`Coder included notes with submission`);
239
- }
240
- const submissionHistory = (0, submission_resolution_js_1.resolveSubmissionCommitHistoryWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
241
- if (!submissionHistory.latestReachableSha) {
242
- const attemptsText = submissionHistory.attempts.join(' | ') || 'none';
243
- throw new Error(`No reachable submission commit hash found for task ${task.id} (${submissionHistory.reason ?? 'not_reachable'}; attempts: ${attemptsText})`);
244
- }
245
- submissionCommitHash = submissionHistory.latestReachableSha;
246
- submissionCommitHashes = submissionHistory.reachableShasOldestFirst;
247
- unresolvedSubmissionCommits = submissionHistory.unreachableShas;
248
- console.log(`Using submission commit chain (${submissionCommitHashes.length} reachable), latest: ${submissionCommitHash}`);
249
- if (unresolvedSubmissionCommits.length > 0) {
250
- console.log(`Warning: ${unresolvedSubmissionCommits.length} historical submission commit(s) unresolved`);
251
- }
252
- // Check for resumable session (same provider/model/role)
253
- if (effectiveReviewerConfig?.provider && effectiveReviewerConfig?.model) {
254
- resumeSessionId = (0, queries_js_1.findResumableSession)(db, task.id, 'reviewer', effectiveReviewerConfig.provider, effectiveReviewerConfig.model);
255
- if (resumeSessionId) {
256
- 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
+ }));
257
148
  }
258
- }
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
+ });
259
176
  }
260
- finally {
261
- close();
177
+ catch (error) {
178
+ const message = error instanceof Error ? error.message : String(error);
179
+ throw new Error(`Could not fetch reviewer context: ${message}`);
262
180
  }
263
- }
264
- catch (error) {
265
- const message = error instanceof Error ? error.message : String(error);
266
- throw new Error(`Could not fetch reviewer context: ${message}`);
267
- }
268
- // Reuse config loaded earlier, get reviewer model
269
- const reviewerModel = effectiveReviewerConfig?.model || 'unknown';
270
- const context = {
271
- task,
272
- projectPath,
273
- reviewerModel,
274
- submissionCommitHash: submissionCommitHash,
275
- submissionCommitHashes,
276
- unresolvedSubmissionCommits,
277
- sectionTasks,
278
- rejectionHistory,
279
- submissionNotes,
280
- config,
281
- coordinatorGuidance,
282
- coordinatorDecision,
283
- };
284
- let prompt;
285
- if (resumeSessionId) {
286
- prompt = (0, reviewer_js_1.generateResumingReviewerDeltaPrompt)(context);
287
- }
288
- else {
289
- prompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
290
- }
291
- // Write prompt to temp file
292
- const promptFile = writePromptToTempFile(prompt);
293
- try {
294
- let result;
295
- let sessionNotFound = false;
296
- try {
297
- result = await invokeProvider(promptFile, 600_000, task.id, projectPath, effectiveReviewerConfig, resumeSessionId ?? undefined, runnerId);
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);
298
199
  }
299
- catch (err) {
300
- if (err instanceof interface_js_1.SessionNotFoundError) {
301
- console.warn(`Session not found for resume (${resumeSessionId?.substring(0, 8)}) — invalidating session and retrying fresh`);
302
- sessionNotFound = true;
303
- result = { success: false, exitCode: 1, stdout: '', stderr: '', duration: 0, timedOut: false, provider: '', model: '' };
304
- }
305
- else {
306
- throw err;
307
- }
200
+ else {
201
+ prompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
308
202
  }
309
- // If session resume failed because session was not found, retry fresh
310
- if (resumeSessionId && sessionNotFound) {
203
+ const promptFile = this.writePromptToTempFile(prompt, 'reviewer');
204
+ try {
205
+ let baseResult;
206
+ let sessionNotFound = false;
311
207
  const providerName = effectiveReviewerConfig?.provider ?? 'unknown';
312
208
  const modelName = effectiveReviewerConfig?.model ?? 'unknown';
313
- let guardedPrompt = '';
314
- const { getTokenLimitForModel } = await import('../providers/registry.js');
315
- const { getTaskInvocationsBySession } = await import('../database/queries.js');
316
- const maxContextWindow = await getTokenLimitForModel(providerName, modelName);
317
- const reservedHeadroom = 8000;
318
- const safeLimit = maxContextWindow - reservedHeadroom;
319
209
  try {
320
- const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
321
- const baseContext = { ...context, rejectionHistory: [] };
322
- const basePrompt = (0, reviewer_js_1.generateReviewerPrompt)(baseContext);
323
- const systemPromptSize = (0, tokens_js_1.countTokens)(basePrompt, modelName);
324
- if (systemPromptSize > safeLimit) {
325
- close();
326
- throw new Error(`Context Too Large: System Prompt and Task Spec alone exceed safe context limit (${systemPromptSize} > ${safeLimit} tokens). Task cannot be processed.`);
327
- }
328
- const invocations = getTaskInvocationsBySession(db, task.id, resumeSessionId);
329
- const buildHistory = (invs, pruneOlder) => {
330
- let hist = '';
331
- for (let i = 0; i < invs.length; i++) {
332
- const inv = invs[i];
333
- // Skip the base prompt of the session (which is always the very first invocation in the DB for this session)
334
- // If we have shifted the array, we must not accidentally skip a continuation prompt.
335
- // We check if this invocation is the true original first one.
336
- const isOriginalFirst = inv.id === invocations[0].id;
337
- if (inv.prompt && !isOriginalFirst) {
338
- hist += `\n\n--- USER CONTINUATION ---\n${inv.prompt}`;
339
- }
340
- if (inv.response) {
341
- const isOlder = i < invs.length - 1;
342
- const responseText = (pruneOlder && isOlder) ? (0, tokens_js_1.pruneResponseOutputs)(inv.response) : inv.response;
343
- hist += `\n\n--- ASSISTANT RESPONSE ---\n${responseText}`;
344
- }
345
- }
346
- return hist;
347
- };
348
- let currentSize = (0, tokens_js_1.countTokens)(basePrompt + buildHistory(invocations, false), modelName);
349
- let finalHistoryText = '';
350
- const guardedInvocations = [...invocations];
351
- if (currentSize <= safeLimit) {
352
- finalHistoryText = buildHistory(guardedInvocations, false);
210
+ baseResult = await this.invokeProvider(promptFile, 'reviewer', providerName, modelName, 600_000, task.id, projectPath, resumeSessionId ?? undefined, runnerId);
211
+ }
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 };
353
217
  }
354
218
  else {
355
- // Token Guard: First attempt to selectively prune tool outputs and thought blocks
356
- finalHistoryText = buildHistory(guardedInvocations, true);
357
- currentSize = (0, tokens_js_1.countTokens)(basePrompt + finalHistoryText, modelName);
358
- // Token Guard: Truncate history if still necessary by dropping oldest executions entirely
359
- while (currentSize > safeLimit && guardedInvocations.length > 0) {
360
- guardedInvocations.shift(); // Prune oldest entry
361
- finalHistoryText = buildHistory(guardedInvocations, true);
362
- currentSize = (0, tokens_js_1.countTokens)(basePrompt + finalHistoryText, modelName);
363
- }
364
- if (guardedInvocations.length < invocations.length) {
365
- console.warn(`Token Guard: Pruned ${invocations.length - guardedInvocations.length} older execution(s) entirely to fit within ${safeLimit} token limit.`);
366
- }
367
- else {
368
- console.warn(`Token Guard: Selectively pruned tool/thought blocks to fit within ${safeLimit} token limit.`);
369
- }
219
+ throw err;
370
220
  }
371
- guardedPrompt = basePrompt + finalHistoryText;
372
- (0, queries_js_1.invalidateSession)(db, resumeSessionId);
373
- close();
374
221
  }
375
- catch (e) {
376
- if (e.message.includes('Context Too Large'))
377
- throw e;
378
- guardedPrompt = (0, reviewer_js_1.generateReviewerPrompt)(context);
379
- if ((0, tokens_js_1.countTokens)(guardedPrompt, modelName) > safeLimit) {
380
- throw new Error(`Context Too Large: System Prompt and Task Spec alone exceed safe context limit. Task cannot be processed.`);
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);
381
250
  }
382
251
  }
383
- // Generate guarded fresh prompt and retry
384
- const freshPromptFile = writePromptToTempFile(guardedPrompt);
385
- try {
386
- result = await invokeProvider(freshPromptFile, 600_000, task.id, projectPath, effectiveReviewerConfig, undefined, runnerId);
387
- }
388
- finally {
389
- if ((0, node_fs_1.existsSync)(freshPromptFile))
390
- (0, node_fs_1.unlinkSync)(freshPromptFile);
391
- }
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
+ };
392
265
  }
393
- console.log(`\n${'='.repeat(60)}`);
394
- console.log(`REVIEWER COMPLETED`);
395
- console.log(`Exit code: ${result.exitCode}`);
396
- console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
397
- console.log(`${'='.repeat(60)}\n`);
398
- return result;
399
- }
400
- finally {
401
- // Clean up temp file
402
- if ((0, node_fs_1.existsSync)(promptFile)) {
403
- (0, node_fs_1.unlinkSync)(promptFile);
266
+ finally {
267
+ this.cleanupTempFile(promptFile);
404
268
  }
405
269
  }
406
- }
407
- /**
408
- * Invoke reviewer for a batch of tasks
409
- * @param tasks Tasks to review
410
- * @param sectionName Section name
411
- * @param projectPath Project path
412
- * @param reviewerConfig Optional reviewer configuration to override default
413
- */
414
- async function invokeReviewerBatch(tasks, sectionName, projectPath, reviewerConfig) {
415
- // Load config for quality settings and to show provider/model being used
416
- const config = (0, loader_js_1.loadConfig)(projectPath);
417
- const effectiveReviewerConfig = reviewerConfig || config.ai?.reviewer;
418
- console.log(`\n${'='.repeat(60)}`);
419
- console.log(`BATCH REVIEWER: Section "${sectionName}"`);
420
- console.log(`Tasks: ${tasks.length}`);
421
- tasks.forEach((t, i) => console.log(` ${i + 1}. ${t.title} (${t.id})`));
422
- console.log(`Provider: ${effectiveReviewerConfig?.provider ?? 'not configured'}`);
423
- console.log(`Model: ${effectiveReviewerConfig?.model ?? 'not configured'}`);
424
- console.log(`${'='.repeat(60)}\n`);
425
- const { db, close } = (0, connection_js_1.openDatabase)(projectPath);
426
- let taskCommits = [];
427
- try {
428
- const unresolved = [];
429
- taskCommits = tasks.map(task => {
430
- const submissionResolution = (0, submission_resolution_js_1.resolveSubmissionCommitWithRecovery)(projectPath, (0, queries_js_1.getSubmissionCommitShas)(db, task.id));
431
- if (submissionResolution.status !== 'resolved') {
432
- const attemptsText = submissionResolution.attempts.join(' | ') || 'none';
433
- 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(', ')}`);
434
293
  }
435
- return { taskId: task.id, commitHash: submissionResolution.status === 'resolved' ? submissionResolution.sha : '' };
436
294
  });
437
- if (unresolved.length > 0) {
438
- 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 };
439
312
  }
440
- }
441
- finally {
442
- close();
443
- }
444
- const context = {
445
- tasks,
446
- projectPath,
447
- sectionName,
448
- taskCommits,
449
- config,
450
- };
451
- const prompt = (0, reviewer_js_1.generateBatchReviewerPrompt)(context);
452
- const promptFile = writePromptToTempFile(prompt);
453
- try {
454
- // Longer timeout for batch: base 20 minutes + 3 minutes per task
455
- const timeoutMs = 20 * 60 * 1000 + tasks.length * 3 * 60 * 1000;
456
- const result = await invokeProvider(promptFile, timeoutMs, undefined, projectPath, effectiveReviewerConfig);
457
- console.log(`\n${'='.repeat(60)}`);
458
- console.log(`BATCH REVIEWER COMPLETED`);
459
- console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
460
- console.log(`${'='.repeat(60)}\n`);
461
- return { ...result, taskCount: tasks.length };
462
- }
463
- finally {
464
- if ((0, node_fs_1.existsSync)(promptFile)) {
465
- (0, node_fs_1.unlinkSync)(promptFile);
313
+ finally {
314
+ this.cleanupTempFile(promptFile);
466
315
  }
467
316
  }
468
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
+ }
469
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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"}