@intrect/openswarm 0.17.2 → 0.17.4

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 (263) hide show
  1. package/README.md +21 -5
  2. package/config.example.yaml +18 -0
  3. package/dist/adapters/agenticLoop.d.ts +2 -0
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +6 -3
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/base.d.ts.map +1 -1
  8. package/dist/adapters/base.js +9 -0
  9. package/dist/adapters/base.js.map +1 -1
  10. package/dist/adapters/claude.d.ts.map +1 -1
  11. package/dist/adapters/claude.js +6 -3
  12. package/dist/adapters/claude.js.map +1 -1
  13. package/dist/adapters/codex.d.ts.map +1 -1
  14. package/dist/adapters/codex.js +3 -2
  15. package/dist/adapters/codex.js.map +1 -1
  16. package/dist/adapters/codexResponses.d.ts +2 -1
  17. package/dist/adapters/codexResponses.d.ts.map +1 -1
  18. package/dist/adapters/codexResponses.js +34 -30
  19. package/dist/adapters/codexResponses.js.map +1 -1
  20. package/dist/adapters/errorClassification.d.ts +11 -0
  21. package/dist/adapters/errorClassification.d.ts.map +1 -1
  22. package/dist/adapters/errorClassification.js +21 -0
  23. package/dist/adapters/errorClassification.js.map +1 -1
  24. package/dist/adapters/gpt.d.ts.map +1 -1
  25. package/dist/adapters/gpt.js +1 -0
  26. package/dist/adapters/gpt.js.map +1 -1
  27. package/dist/adapters/local.d.ts.map +1 -1
  28. package/dist/adapters/local.js +1 -0
  29. package/dist/adapters/local.js.map +1 -1
  30. package/dist/adapters/openrouter.d.ts.map +1 -1
  31. package/dist/adapters/openrouter.js +1 -0
  32. package/dist/adapters/openrouter.js.map +1 -1
  33. package/dist/adapters/processRegistry.d.ts.map +1 -1
  34. package/dist/adapters/processRegistry.js +8 -0
  35. package/dist/adapters/processRegistry.js.map +1 -1
  36. package/dist/adapters/types.d.ts +2 -0
  37. package/dist/adapters/types.d.ts.map +1 -1
  38. package/dist/agents/pairPipeline.d.ts +10 -139
  39. package/dist/agents/pairPipeline.d.ts.map +1 -1
  40. package/dist/agents/pairPipeline.js +161 -37
  41. package/dist/agents/pairPipeline.js.map +1 -1
  42. package/dist/agents/pairPipelineTypes.d.ts +111 -0
  43. package/dist/agents/pairPipelineTypes.d.ts.map +1 -0
  44. package/dist/agents/pairPipelineTypes.js +2 -0
  45. package/dist/agents/pairPipelineTypes.js.map +1 -0
  46. package/dist/agents/pipelineGuards.d.ts.map +1 -1
  47. package/dist/agents/pipelineGuards.js +346 -0
  48. package/dist/agents/pipelineGuards.js.map +1 -1
  49. package/dist/agents/pipelineTaskPrefix.d.ts +3 -0
  50. package/dist/agents/pipelineTaskPrefix.d.ts.map +1 -0
  51. package/dist/agents/pipelineTaskPrefix.js +16 -0
  52. package/dist/agents/pipelineTaskPrefix.js.map +1 -0
  53. package/dist/agents/reflection.d.ts +9 -1
  54. package/dist/agents/reflection.d.ts.map +1 -1
  55. package/dist/agents/reflection.js +27 -1
  56. package/dist/agents/reflection.js.map +1 -1
  57. package/dist/agents/reviewer.d.ts +6 -0
  58. package/dist/agents/reviewer.d.ts.map +1 -1
  59. package/dist/agents/reviewer.js +4 -1
  60. package/dist/agents/reviewer.js.map +1 -1
  61. package/dist/agents/stageErrorClassification.d.ts +16 -0
  62. package/dist/agents/stageErrorClassification.d.ts.map +1 -0
  63. package/dist/agents/stageErrorClassification.js +38 -0
  64. package/dist/agents/stageErrorClassification.js.map +1 -0
  65. package/dist/agents/stageModelResolver.d.ts +8 -0
  66. package/dist/agents/stageModelResolver.d.ts.map +1 -0
  67. package/dist/agents/stageModelResolver.js +22 -0
  68. package/dist/agents/stageModelResolver.js.map +1 -0
  69. package/dist/agents/worker.d.ts +33 -0
  70. package/dist/agents/worker.d.ts.map +1 -1
  71. package/dist/agents/worker.js +59 -4
  72. package/dist/agents/worker.js.map +1 -1
  73. package/dist/agents/workerFanout.d.ts +38 -0
  74. package/dist/agents/workerFanout.d.ts.map +1 -0
  75. package/dist/agents/workerFanout.js +292 -0
  76. package/dist/agents/workerFanout.js.map +1 -0
  77. package/dist/agents/workerFanoutGate.d.ts +48 -0
  78. package/dist/agents/workerFanoutGate.d.ts.map +1 -0
  79. package/dist/agents/workerFanoutGate.js +146 -0
  80. package/dist/agents/workerFanoutGate.js.map +1 -0
  81. package/dist/agents/workerValidationEvidence.d.ts +5 -0
  82. package/dist/agents/workerValidationEvidence.d.ts.map +1 -0
  83. package/dist/agents/workerValidationEvidence.js +75 -0
  84. package/dist/agents/workerValidationEvidence.js.map +1 -0
  85. package/dist/automation/autonomousRunner.d.ts +26 -6
  86. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  87. package/dist/automation/autonomousRunner.js +243 -45
  88. package/dist/automation/autonomousRunner.js.map +1 -1
  89. package/dist/automation/backlogGrooming.d.ts +52 -0
  90. package/dist/automation/backlogGrooming.d.ts.map +1 -0
  91. package/dist/automation/backlogGrooming.js +231 -0
  92. package/dist/automation/backlogGrooming.js.map +1 -0
  93. package/dist/automation/runnerExecution.d.ts +1 -1
  94. package/dist/automation/runnerExecution.d.ts.map +1 -1
  95. package/dist/automation/runnerExecution.js +31 -9
  96. package/dist/automation/runnerExecution.js.map +1 -1
  97. package/dist/automation/runnerState.d.ts +9 -0
  98. package/dist/automation/runnerState.d.ts.map +1 -1
  99. package/dist/automation/runnerState.js +17 -0
  100. package/dist/automation/runnerState.js.map +1 -1
  101. package/dist/automation/runnerTypes.d.ts +3 -1
  102. package/dist/automation/runnerTypes.d.ts.map +1 -1
  103. package/dist/automation/taskSource.d.ts +6 -3
  104. package/dist/automation/taskSource.d.ts.map +1 -1
  105. package/dist/automation/taskSource.js +5 -0
  106. package/dist/automation/taskSource.js.map +1 -1
  107. package/dist/cli/daemon.d.ts +20 -3
  108. package/dist/cli/daemon.d.ts.map +1 -1
  109. package/dist/cli/daemon.js +42 -2
  110. package/dist/cli/daemon.js.map +1 -1
  111. package/dist/cli/fixBoard.d.ts +14 -0
  112. package/dist/cli/fixBoard.d.ts.map +1 -0
  113. package/dist/cli/fixBoard.js +32 -0
  114. package/dist/cli/fixBoard.js.map +1 -0
  115. package/dist/cli/fixCommand.d.ts +8 -0
  116. package/dist/cli/fixCommand.d.ts.map +1 -1
  117. package/dist/cli/fixCommand.js +47 -8
  118. package/dist/cli/fixCommand.js.map +1 -1
  119. package/dist/cli/memoryCommand.d.ts +37 -0
  120. package/dist/cli/memoryCommand.d.ts.map +1 -0
  121. package/dist/cli/memoryCommand.js +156 -0
  122. package/dist/cli/memoryCommand.js.map +1 -0
  123. package/dist/cli/reviewAudit.d.ts +68 -0
  124. package/dist/cli/reviewAudit.d.ts.map +1 -1
  125. package/dist/cli/reviewAudit.js +147 -4
  126. package/dist/cli/reviewAudit.js.map +1 -1
  127. package/dist/cli/reviewMaxCommand.d.ts +2 -0
  128. package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
  129. package/dist/cli/reviewMaxCommand.js +61 -36
  130. package/dist/cli/reviewMaxCommand.js.map +1 -1
  131. package/dist/cli.js +68 -13
  132. package/dist/cli.js.map +1 -1
  133. package/dist/core/config.d.ts +413 -0
  134. package/dist/core/config.d.ts.map +1 -1
  135. package/dist/core/config.js +51 -5
  136. package/dist/core/config.js.map +1 -1
  137. package/dist/core/eventHub.d.ts +22 -0
  138. package/dist/core/eventHub.d.ts.map +1 -1
  139. package/dist/core/eventHub.js +1 -0
  140. package/dist/core/eventHub.js.map +1 -1
  141. package/dist/core/providerOverride.d.ts +9 -0
  142. package/dist/core/providerOverride.d.ts.map +1 -1
  143. package/dist/core/providerOverride.js +12 -0
  144. package/dist/core/providerOverride.js.map +1 -1
  145. package/dist/core/service.d.ts.map +1 -1
  146. package/dist/core/service.js +8 -2
  147. package/dist/core/service.js.map +1 -1
  148. package/dist/core/types.d.ts +61 -1
  149. package/dist/core/types.d.ts.map +1 -1
  150. package/dist/linear/linear.d.ts +2 -1
  151. package/dist/linear/linear.d.ts.map +1 -1
  152. package/dist/linear/linear.js +16 -6
  153. package/dist/linear/linear.js.map +1 -1
  154. package/dist/locale/prompts/en.d.ts.map +1 -1
  155. package/dist/locale/prompts/en.js +11 -1
  156. package/dist/locale/prompts/en.js.map +1 -1
  157. package/dist/locale/prompts/ko.d.ts.map +1 -1
  158. package/dist/locale/prompts/ko.js +11 -1
  159. package/dist/locale/prompts/ko.js.map +1 -1
  160. package/dist/memory/compaction.d.ts +2 -2
  161. package/dist/memory/compaction.d.ts.map +1 -1
  162. package/dist/memory/compaction.js +22 -17
  163. package/dist/memory/compaction.js.map +1 -1
  164. package/dist/memory/index.d.ts +3 -3
  165. package/dist/memory/index.js +3 -3
  166. package/dist/memory/memoryCore.d.ts +15 -27
  167. package/dist/memory/memoryCore.d.ts.map +1 -1
  168. package/dist/memory/memoryCore.js +112 -97
  169. package/dist/memory/memoryCore.js.map +1 -1
  170. package/dist/memory/memoryFilters.d.ts +8 -0
  171. package/dist/memory/memoryFilters.d.ts.map +1 -0
  172. package/dist/memory/memoryFilters.js +26 -0
  173. package/dist/memory/memoryFilters.js.map +1 -0
  174. package/dist/memory/memoryOps.d.ts +7 -23
  175. package/dist/memory/memoryOps.d.ts.map +1 -1
  176. package/dist/memory/memoryOps.js +49 -109
  177. package/dist/memory/memoryOps.js.map +1 -1
  178. package/dist/memory/repoKnowledge.d.ts.map +1 -1
  179. package/dist/memory/repoKnowledge.js +48 -3
  180. package/dist/memory/repoKnowledge.js.map +1 -1
  181. package/dist/orchestration/conflictDetector.d.ts.map +1 -1
  182. package/dist/orchestration/conflictDetector.js +26 -7
  183. package/dist/orchestration/conflictDetector.js.map +1 -1
  184. package/dist/orchestration/decisionEngine.d.ts +1 -0
  185. package/dist/orchestration/decisionEngine.d.ts.map +1 -1
  186. package/dist/orchestration/decisionEngine.js.map +1 -1
  187. package/dist/orchestration/taskScheduler.d.ts +5 -0
  188. package/dist/orchestration/taskScheduler.d.ts.map +1 -1
  189. package/dist/orchestration/taskScheduler.js +36 -12
  190. package/dist/orchestration/taskScheduler.js.map +1 -1
  191. package/dist/registry/memoryBridge.js +4 -4
  192. package/dist/registry/memoryBridge.js.map +1 -1
  193. package/dist/support/chatMemory.js +1 -1
  194. package/dist/support/chatMemory.js.map +1 -1
  195. package/dist/support/dashboardHtml.d.ts +1 -1
  196. package/dist/support/dashboardHtml.d.ts.map +1 -1
  197. package/dist/support/dashboardHtml.js +12 -0
  198. package/dist/support/dashboardHtml.js.map +1 -1
  199. package/dist/support/gitTracker.d.ts +30 -3
  200. package/dist/support/gitTracker.d.ts.map +1 -1
  201. package/dist/support/gitTracker.js +108 -29
  202. package/dist/support/gitTracker.js.map +1 -1
  203. package/dist/support/repoMetadata.d.ts +10 -0
  204. package/dist/support/repoMetadata.d.ts.map +1 -1
  205. package/dist/support/repoMetadata.js +31 -0
  206. package/dist/support/repoMetadata.js.map +1 -1
  207. package/dist/support/updateNotifier.d.ts +12 -0
  208. package/dist/support/updateNotifier.d.ts.map +1 -1
  209. package/dist/support/updateNotifier.js +71 -0
  210. package/dist/support/updateNotifier.js.map +1 -1
  211. package/dist/support/web.d.ts.map +1 -1
  212. package/dist/support/web.js +5 -3
  213. package/dist/support/web.js.map +1 -1
  214. package/dist/support/worktreeManager.d.ts +33 -0
  215. package/dist/support/worktreeManager.d.ts.map +1 -1
  216. package/dist/support/worktreeManager.js +172 -2
  217. package/dist/support/worktreeManager.js.map +1 -1
  218. package/dist/tui/App.js +1 -1
  219. package/dist/tui/App.js.map +1 -1
  220. package/dist/tui/components/AuditBoard.d.ts +3 -2
  221. package/dist/tui/components/AuditBoard.d.ts.map +1 -1
  222. package/dist/tui/components/AuditBoard.js +13 -4
  223. package/dist/tui/components/AuditBoard.js.map +1 -1
  224. package/dist/tui/components/DataTable.d.ts +3 -1
  225. package/dist/tui/components/DataTable.d.ts.map +1 -1
  226. package/dist/tui/components/DataTable.js +22 -5
  227. package/dist/tui/components/DataTable.js.map +1 -1
  228. package/dist/tui/components/StageTimeline.d.ts +1 -1
  229. package/dist/tui/components/StageTimeline.d.ts.map +1 -1
  230. package/dist/tui/components/StageTimeline.js +5 -2
  231. package/dist/tui/components/StageTimeline.js.map +1 -1
  232. package/dist/tui/components/SubagentTree.d.ts +6 -6
  233. package/dist/tui/components/SubagentTree.d.ts.map +1 -1
  234. package/dist/tui/components/SubagentTree.js +33 -5
  235. package/dist/tui/components/SubagentTree.js.map +1 -1
  236. package/dist/tui/eventCoalescer.d.ts +29 -0
  237. package/dist/tui/eventCoalescer.d.ts.map +1 -0
  238. package/dist/tui/eventCoalescer.js +56 -0
  239. package/dist/tui/eventCoalescer.js.map +1 -0
  240. package/dist/tui/hooks/usePipelineEvents.d.ts +1 -1
  241. package/dist/tui/hooks/usePipelineEvents.d.ts.map +1 -1
  242. package/dist/tui/hooks/usePipelineEvents.js +18 -4
  243. package/dist/tui/hooks/usePipelineEvents.js.map +1 -1
  244. package/dist/tui/monitorRows.d.ts +41 -2
  245. package/dist/tui/monitorRows.d.ts.map +1 -1
  246. package/dist/tui/monitorRows.js +86 -7
  247. package/dist/tui/monitorRows.js.map +1 -1
  248. package/dist/tui/panels/MonitorPanel.d.ts +2 -1
  249. package/dist/tui/panels/MonitorPanel.d.ts.map +1 -1
  250. package/dist/tui/panels/MonitorPanel.js +2 -2
  251. package/dist/tui/panels/MonitorPanel.js.map +1 -1
  252. package/dist/tui/panels/PipelinePanel.d.ts.map +1 -1
  253. package/dist/tui/panels/PipelinePanel.js +6 -1
  254. package/dist/tui/panels/PipelinePanel.js.map +1 -1
  255. package/dist/tui/pipelineEvents.d.ts +14 -0
  256. package/dist/tui/pipelineEvents.d.ts.map +1 -1
  257. package/dist/tui/pipelineEvents.js +89 -1
  258. package/dist/tui/pipelineEvents.js.map +1 -1
  259. package/dist/tui/subagentTree.d.ts +26 -3
  260. package/dist/tui/subagentTree.d.ts.map +1 -1
  261. package/dist/tui/subagentTree.js +89 -14
  262. package/dist/tui/subagentTree.js.map +1 -1
  263. package/package.json +1 -1
@@ -3,9 +3,12 @@
3
3
  // Quality gates and validation between worker/reviewer
4
4
  // ============================================
5
5
  import { execFile } from 'node:child_process';
6
+ import { readFile } from 'node:fs/promises';
7
+ import { isAbsolute, join, normalize, relative, resolve } from 'node:path';
6
8
  import { promisify } from 'node:util';
7
9
  import { getRegistryStore } from '../registry/sqliteStore.js';
8
10
  import { scanFile as scanFileForBs } from '../registry/bsDetector.js';
11
+ import { getWorkingDiffDetail } from '../support/gitTracker.js';
9
12
  const execFileAsync = promisify(execFile);
10
13
  // Uncertainty Detection Patterns
11
14
  const UNCERTAINTY_PATTERNS = [
@@ -224,6 +227,334 @@ async function runBsDetectorGuard(workerResult, projectPath) {
224
227
  }
225
228
  return { passed: issues.length === 0, guard, issues, blocking: hasCritical };
226
229
  }
230
+ const SOURCE_FILE_RE = /\.(ts|tsx|js|jsx|py)$/;
231
+ const TEST_FILE_RE = /\.(test|spec)\.[jt]sx?$|(^|\/)test_[^/]+\.py$|_test\.py$/;
232
+ const DEPENDENCY_FAILURE_RE = /\b(ModuleNotFoundError|ImportError|Cannot find module|ERR_MODULE_NOT_FOUND|No module named|PackageNotFoundError|missing dependency|not installed)\b/i;
233
+ const VERSION_SPOOF_RE = /(^|\n)\s*(?:export\s+const\s+)?__version__\s*[:=]/;
234
+ const PACKAGE_SCAFFOLD_RE = /(^|\/)(package\.json|pyproject\.toml|setup\.py|setup\.cfg)$/;
235
+ const EVIDENCE_FILE_REF_RE = /((?:\/|\.\/)?[\w./-]+\.(?:ts|tsx|js|jsx|py|go|rs|java|yaml|yml|json)):(\d+)\b/g;
236
+ const CONTRACT_EVIDENCE_FILE_RE = /\.(ts|tsx|js|jsx|py|go|rs|java|yaml|yml|json)$/;
237
+ const DOC_FILE_RE = /\.(md|mdx|txt|rst)$/;
238
+ const VERIFIED_STATEMENT_RE = /\b(verified|confirmed|measured)\b/i;
239
+ const COUNTER_EVIDENCE_RE = /\b(counter-?evidence|disproves?|invalidates?|supersedes?|retested|re-measured|remeasured)\b/i;
240
+ const METRIC_FILE_RE = /(score|scorer|metric|gate|ranking|rank|report)/i;
241
+ const METRIC_LOGIC_RE = /\b(score|metric|gate|threshold|weight|rank|ranking|percentile|quantile)\b/i;
242
+ const METRIC_CODE_CHANGE_RE = /\b(score|metric|gate|threshold|weight|rank|ranking|percentile|quantile)\b.*(=>|=|>|<|\+|-|\*|\/)|(=>|=|>|<|\+|-|\*|\/).*\b(score|metric|gate|threshold|weight|rank|ranking|percentile|quantile)\b/i;
243
+ const GUARD_INFRA_FILE_RE = /(^|\/)(pipelineGuards|config|types)\.(ts|tsx|ya?ml)$/;
244
+ const BEFORE_AFTER_RE = /\b(before\/after|before and after|distribution|histogram|moved|delta|changed\s+\d+|diff\s+distribution)\b/i;
245
+ const NEGATIVE_EVIDENCE_RE = /\b(no|not|without|missing|failed to|was not|not found|not produced|unavailable)\b.{0,60}\b(counter-?evidence|before\/after|before and after|distribution|delta|histogram)\b|\b(counter-?evidence|before\/after|before and after|distribution|delta|histogram)\b.{0,60}\b(not found|not produced|missing|unavailable)\b/i;
246
+ const DISTRIBUTION_NUMERIC_RE = /\b(changed\s+\d+|\d+\s+items?|median\s+delta|mean\s+delta|delta\s+[+-]?\d|histogram|p\d+|quantile)\b/i;
247
+ function reportLinesForFile(reportText, filePath) {
248
+ return reportText
249
+ .split('\n')
250
+ .filter(line => line.includes(filePath));
251
+ }
252
+ function hasFileScopedCounterEvidence(reportText, filePath) {
253
+ return reportLinesForFile(reportText, filePath)
254
+ .some(line => COUNTER_EVIDENCE_RE.test(line) && !NEGATIVE_EVIDENCE_RE.test(line));
255
+ }
256
+ function hasFileScopedBeforeAfterEvidence(reportText, filePath) {
257
+ return reportLinesForFile(reportText, filePath)
258
+ .some(line => BEFORE_AFTER_RE.test(line) &&
259
+ DISTRIBUTION_NUMERIC_RE.test(line) &&
260
+ !NEGATIVE_EVIDENCE_RE.test(line));
261
+ }
262
+ async function getAddedLinesForFile(projectPath, filePath, isNew) {
263
+ try {
264
+ const { stdout } = await execFileAsync('git', ['diff', '--unified=0', 'HEAD', '--', filePath], { cwd: projectPath, timeout: 10_000 });
265
+ const added = stdout
266
+ .split('\n')
267
+ .filter(line => line.startsWith('+') && !line.startsWith('+++'))
268
+ .map(line => line.slice(1))
269
+ .join('\n');
270
+ if (added)
271
+ return added;
272
+ }
273
+ catch {
274
+ // Fall through to untracked-new handling below.
275
+ }
276
+ if (!isNew)
277
+ return '';
278
+ try {
279
+ return await readFile(join(projectPath, filePath), 'utf8');
280
+ }
281
+ catch {
282
+ return '';
283
+ }
284
+ }
285
+ async function getRemovedLinesForFile(projectPath, filePath) {
286
+ try {
287
+ const { stdout } = await execFileAsync('git', ['diff', '--unified=0', 'HEAD', '--', filePath], { cwd: projectPath, timeout: 10_000 });
288
+ return stdout
289
+ .split('\n')
290
+ .filter(line => line.startsWith('-') && !line.startsWith('---'))
291
+ .map(line => line.slice(1))
292
+ .join('\n');
293
+ }
294
+ catch {
295
+ return '';
296
+ }
297
+ }
298
+ function extractStringLiterals(text) {
299
+ const literals = new Set();
300
+ const re = /['"`]([^'"`\n]{3,120})['"`]/g;
301
+ let match;
302
+ while ((match = re.exec(text))) {
303
+ literals.add(match[1]);
304
+ }
305
+ return [...literals];
306
+ }
307
+ function isContractLiteral(literal, addedLines) {
308
+ if (literal.startsWith('/api/'))
309
+ return true;
310
+ if (/^[a-zA-Z0-9_.-]{3,}:/.test(literal))
311
+ return true;
312
+ if (/^[a-z][a-z0-9]+(?:_[a-z0-9]+)+$/.test(literal) &&
313
+ /\b(expect|assert|field|schema|payload|json|contract)\b/i.test(addedLines)) {
314
+ return true;
315
+ }
316
+ return false;
317
+ }
318
+ async function literalExistsInHeadSource(projectPath, literal) {
319
+ try {
320
+ const { stdout } = await execFileAsync('git', ['grep', '-F', '-l', literal, 'HEAD', '--', '.'], { cwd: projectPath, timeout: 10_000 });
321
+ return stdout
322
+ .split('\n')
323
+ .filter(Boolean)
324
+ .map(line => line.replace(/^HEAD:/, ''))
325
+ .some(file => CONTRACT_EVIDENCE_FILE_RE.test(file) && !TEST_FILE_RE.test(file));
326
+ }
327
+ catch {
328
+ return false;
329
+ }
330
+ }
331
+ function normalizeEvidencePath(projectPath, filePath) {
332
+ const cleaned = normalize(filePath).replace(/\\/g, '/').replace(/^\.\//, '');
333
+ const absolute = isAbsolute(cleaned) ? cleaned : resolve(projectPath, cleaned);
334
+ const rel = normalize(relative(projectPath, absolute)).replace(/\\/g, '/');
335
+ if (rel.startsWith('../') || rel === '..' || isAbsolute(rel))
336
+ return null;
337
+ return rel;
338
+ }
339
+ async function hasExternalContractEvidence(workerResult, projectPath, literal, excludedFiles) {
340
+ const text = `${workerResult.summary}\n${workerResult.output.slice(0, 8000)}\n${workerResult.error ?? ''}`;
341
+ const fileRefs = new Map();
342
+ let match;
343
+ while ((match = EVIDENCE_FILE_REF_RE.exec(text))) {
344
+ const normalized = normalizeEvidencePath(projectPath, match[1]);
345
+ if (!normalized)
346
+ continue;
347
+ const lineNo = parseInt(match[2], 10);
348
+ const lines = fileRefs.get(normalized) ?? new Set();
349
+ if (Number.isFinite(lineNo))
350
+ lines.add(lineNo);
351
+ fileRefs.set(normalized, lines);
352
+ }
353
+ for (const [file, lineNos] of fileRefs) {
354
+ if (excludedFiles.has(file) || !CONTRACT_EVIDENCE_FILE_RE.test(file) || TEST_FILE_RE.test(file))
355
+ continue;
356
+ try {
357
+ const content = await readFile(join(projectPath, file), 'utf8');
358
+ const lines = content.split('\n');
359
+ for (const lineNo of lineNos) {
360
+ const start = Math.max(0, lineNo - 3);
361
+ const end = Math.min(lines.length, lineNo + 2);
362
+ if (lines.slice(start, end).some(line => line.includes(literal)))
363
+ return true;
364
+ }
365
+ }
366
+ catch {
367
+ // Missing cited files do not count as evidence.
368
+ }
369
+ }
370
+ return text
371
+ .split('\n')
372
+ .some(line => line.includes(literal) &&
373
+ /\b(redis-cli|curl)\b/i.test(line) &&
374
+ /\b(output|sample|measured|actual|returned|observed)\b/i.test(line));
375
+ }
376
+ /**
377
+ * Dead-module guard (INT-2388 defect #5): a newly-added source module that
378
+ * nothing imports/calls is dead scaffolding — it merges but never runs. For
379
+ * each new source file, git-grep the codebase (working tree + untracked) for
380
+ * its module basename; if only the file itself (or its own test) references it,
381
+ * flag it. Non-blocking — an entry point wired via a dynamic/string import is a
382
+ * legitimate exception the reviewer can clear.
383
+ */
384
+ async function runDeadModuleGuard(projectPath) {
385
+ const guard = 'deadModule';
386
+ const issues = [];
387
+ try {
388
+ const details = await getWorkingDiffDetail(projectPath);
389
+ const newSources = details.filter(d => d.isNew && SOURCE_FILE_RE.test(d.file) && !TEST_FILE_RE.test(d.file) && !d.file.endsWith('.d.ts'));
390
+ for (const d of newSources) {
391
+ const base = (d.file.split('/').pop() ?? '').replace(SOURCE_FILE_RE, '');
392
+ // Skip too-short/too-generic names (index, app, types…) — grep noise makes
393
+ // the "no importer" signal meaningless, and a false "wired" is the safe side.
394
+ if (base.length < 3 || ['index', 'main', 'types', 'utils', 'config', 'app'].includes(base))
395
+ continue;
396
+ let referenced = false;
397
+ try {
398
+ const { stdout } = await execFileAsync('git', ['grep', '-l', '-F', '--untracked', '-e', base, '--', '*.ts', '*.tsx', '*.js', '*.jsx', '*.py'], { cwd: projectPath, timeout: 15_000 });
399
+ referenced = stdout
400
+ .split('\n')
401
+ .filter(Boolean)
402
+ .some(f => {
403
+ if (f === d.file)
404
+ return false; // the file referencing itself doesn't count
405
+ const fb = f.split('/').pop() ?? '';
406
+ // its own test (base.test.ts / test_base.py) doesn't count as wiring
407
+ if (fb.startsWith(`${base}.test`) || fb.startsWith(`${base}.spec`))
408
+ return false;
409
+ if (fb === `test_${base}.py` || fb === `${base}_test.py`)
410
+ return false;
411
+ return true;
412
+ });
413
+ }
414
+ catch {
415
+ // git grep exits non-zero when there are zero matches → not referenced
416
+ referenced = false;
417
+ }
418
+ if (!referenced) {
419
+ issues.push(`[${d.file}] new module has no importer/caller — dead scaffolding? Wire it into the system or confirm it's an entry point.`);
420
+ }
421
+ }
422
+ }
423
+ catch (err) {
424
+ console.warn('[Guard:deadModule] Error:', err);
425
+ }
426
+ return { passed: issues.length === 0, guard, issues, blocking: false };
427
+ }
428
+ /**
429
+ * Dependency anti-pattern guard (INT-2388 defect #1): if the worker reports an
430
+ * import/package failure, don't allow the fix to become "recreate the missing
431
+ * package" or "spoof its version". This is intentionally narrow and blocking:
432
+ * it fires only when a dependency-failure signal is paired with package-identity
433
+ * code or a new package scaffold in the diff.
434
+ */
435
+ async function runDependencyAntiPatternGuard(workerResult, projectPath) {
436
+ const guard = 'dependencyAntiPattern';
437
+ const issues = [];
438
+ const reportText = `${workerResult.summary}\n${workerResult.output.slice(0, 8000)}\n${workerResult.error ?? ''}`;
439
+ if (!DEPENDENCY_FAILURE_RE.test(reportText)) {
440
+ return { passed: true, guard, issues, blocking: true };
441
+ }
442
+ try {
443
+ const details = await getWorkingDiffDetail(projectPath);
444
+ for (const d of details) {
445
+ if (d.isNew && PACKAGE_SCAFFOLD_RE.test(d.file)) {
446
+ issues.push(`[${d.file}] dependency/import failure was reported, but the diff adds package scaffold. Fix the environment or document the blocker instead of recreating a third-party package.`);
447
+ }
448
+ if (!SOURCE_FILE_RE.test(d.file) || TEST_FILE_RE.test(d.file))
449
+ continue;
450
+ const addedLines = await getAddedLinesForFile(projectPath, d.file, d.isNew);
451
+ if (VERSION_SPOOF_RE.test(addedLines)) {
452
+ issues.push(`[${d.file}] dependency/import failure was reported, but the diff defines __version__. Do not spoof package identity/version constants for code you do not own.`);
453
+ }
454
+ }
455
+ }
456
+ catch (err) {
457
+ console.warn('[Guard:dependencyAntiPattern] Error:', err);
458
+ }
459
+ return { passed: issues.length === 0, guard, issues, blocking: true };
460
+ }
461
+ /**
462
+ * Contract evidence guard (INT-2388 defect #2): a test that introduces a Redis
463
+ * key prefix, API route, or wire-field literal proves nothing if that literal is
464
+ * only invented inside the same diff. For new/changed tests, require the literal
465
+ * to already exist in HEAD or be backed by worker evidence (file:line, producer,
466
+ * consumer, redis-cli/curl/measured output).
467
+ */
468
+ async function runContractEvidenceGuard(workerResult, projectPath) {
469
+ const guard = 'contractEvidence';
470
+ const issues = [];
471
+ try {
472
+ const details = await getWorkingDiffDetail(projectPath);
473
+ const changedTests = details.filter(d => TEST_FILE_RE.test(d.file));
474
+ const changedFiles = new Set(details.map(d => d.file));
475
+ for (const d of changedTests) {
476
+ const addedLines = await getAddedLinesForFile(projectPath, d.file, d.isNew);
477
+ const literals = extractStringLiterals(addedLines)
478
+ .filter(literal => isContractLiteral(literal, addedLines));
479
+ for (const literal of literals) {
480
+ const knownInHead = await literalExistsInHeadSource(projectPath, literal);
481
+ if (knownInHead || await hasExternalContractEvidence(workerResult, projectPath, literal, changedFiles))
482
+ continue;
483
+ issues.push(`[${d.file}] test adds contract literal "${literal}" but it is not present in HEAD and no producer/consumer evidence was cited. Avoid self-referential contract tests.`);
484
+ }
485
+ }
486
+ }
487
+ catch (err) {
488
+ console.warn('[Guard:contractEvidence] Error:', err);
489
+ }
490
+ return { passed: issues.length === 0, guard, issues, blocking: true };
491
+ }
492
+ /**
493
+ * Evidence preservation guard (INT-2388 defect #4): don't silently delete
494
+ * verified/confirmed/measured claims, and don't change score/metric/gating logic
495
+ * without before/after distribution evidence. Blocking, but narrow: it only
496
+ * fires on removed evidence wording or metric-like logic diffs.
497
+ */
498
+ async function runVerifiedMetricEvidenceGuard(workerResult, projectPath) {
499
+ const guard = 'verifiedMetricEvidence';
500
+ const issues = [];
501
+ const reportText = `${workerResult.summary}\n${workerResult.output.slice(0, 8000)}\n${workerResult.error ?? ''}`;
502
+ try {
503
+ const details = await getWorkingDiffDetail(projectPath);
504
+ for (const d of details) {
505
+ const removedLines = await getRemovedLinesForFile(projectPath, d.file);
506
+ const addedLines = await getAddedLinesForFile(projectPath, d.file, d.isNew);
507
+ if (DOC_FILE_RE.test(d.file) && VERIFIED_STATEMENT_RE.test(removedLines) && !hasFileScopedCounterEvidence(reportText, d.file)) {
508
+ issues.push(`[${d.file}] removes verified/confirmed/measured evidence wording without counter-evidence in the worker report.`);
509
+ }
510
+ const fileName = d.file.split('/').pop() ?? d.file;
511
+ const metricLikeFile = METRIC_FILE_RE.test(fileName);
512
+ const metricLikeDiff = METRIC_LOGIC_RE.test(`${addedLines}\n${removedLines}`);
513
+ const metricCodeChange = METRIC_CODE_CHANGE_RE.test(`${addedLines}\n${removedLines}`);
514
+ const codeFile = SOURCE_FILE_RE.test(d.file) && !TEST_FILE_RE.test(d.file) && !d.file.endsWith('.d.ts');
515
+ if (codeFile &&
516
+ !GUARD_INFRA_FILE_RE.test(d.file) &&
517
+ (metricLikeFile || metricCodeChange) &&
518
+ metricLikeDiff &&
519
+ (addedLines || removedLines) &&
520
+ !hasFileScopedBeforeAfterEvidence(reportText, d.file)) {
521
+ issues.push(`[${d.file}] changes score/metric/gate/ranking logic without before/after distribution evidence.`);
522
+ }
523
+ }
524
+ }
525
+ catch (err) {
526
+ console.warn('[Guard:verifiedMetricEvidence] Error:', err);
527
+ }
528
+ return { passed: issues.length === 0, guard, issues, blocking: true };
529
+ }
530
+ /**
531
+ * Reformat/scope guard (INT-2388 defect #6): flag reformat-only files (whose
532
+ * diff vanishes under `git diff -w`) and unusually large diffs. Both inflate
533
+ * cross-PR conflict surface and hide the real change. Non-blocking — advisory.
534
+ */
535
+ async function runReformatScopeGuard(projectPath) {
536
+ const guard = 'reformatScope';
537
+ const issues = [];
538
+ const LARGE_DIFF_LINES = 1200;
539
+ try {
540
+ const details = await getWorkingDiffDetail(projectPath);
541
+ for (const d of details.filter(d => d.whitespaceOnly)) {
542
+ issues.push(`[${d.file}] reformat-only change (no semantic diff under -w) — move formatting to a separate commit to keep the PR scoped.`);
543
+ }
544
+ // Sum of tracked-change lines. Brand-new files register as 0 added here
545
+ // (numstat only counts tracked diffs) and are covered by the dead-module
546
+ // guard instead — so this measures churn on existing code, where scope
547
+ // creep and reformat noise actually hide.
548
+ const totalChanged = details.reduce((sum, d) => sum + d.added + d.deleted, 0);
549
+ if (totalChanged > LARGE_DIFF_LINES) {
550
+ issues.push(`Large diff: ${totalChanged} changed lines across ${details.length} files — verify every change is task-scoped (watch for scope creep).`);
551
+ }
552
+ }
553
+ catch (err) {
554
+ console.warn('[Guard:reformatScope] Error:', err);
555
+ }
556
+ return { passed: issues.length === 0, guard, issues, blocking: false };
557
+ }
227
558
  // Guard Runner
228
559
  /**
229
560
  * Run all enabled guards on a worker result.
@@ -248,6 +579,21 @@ export async function runGuards(workerResult, projectPath, config) {
248
579
  if (config.bsDetector) {
249
580
  results.push(await runBsDetectorGuard(workerResult, projectPath));
250
581
  }
582
+ if (config.dependencyAntiPatternCheck) {
583
+ results.push(await runDependencyAntiPatternGuard(workerResult, projectPath));
584
+ }
585
+ if (config.contractEvidenceCheck) {
586
+ results.push(await runContractEvidenceGuard(workerResult, projectPath));
587
+ }
588
+ if (config.verifiedMetricEvidenceCheck) {
589
+ results.push(await runVerifiedMetricEvidenceGuard(workerResult, projectPath));
590
+ }
591
+ if (config.deadModuleCheck) {
592
+ results.push(await runDeadModuleGuard(projectPath));
593
+ }
594
+ if (config.reformatCheck) {
595
+ results.push(await runReformatScopeGuard(projectPath));
596
+ }
251
597
  // conventionalCommits is checked separately (needs commit message)
252
598
  // haltToLinear is handled by the pipeline, not a guard function
253
599
  const combinedIssues = results.flatMap(r => r.issues);
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineGuards.js","sourceRoot":"","sources":["../../src/agents/pipelineGuards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelineGuards.js","sourceRoot":"","sources":["../../src/agents/pipelineGuards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { TaskItem } from '../orchestration/decisionEngine.js';
2
+ export declare function buildTaskPrefix(task: TaskItem, projectPath: string): string;
3
+ //# sourceMappingURL=pipelineTaskPrefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelineTaskPrefix.d.ts","sourceRoot":"","sources":["../../src/agents/pipelineTaskPrefix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAY3E"}
@@ -0,0 +1,16 @@
1
+ export function buildTaskPrefix(task, projectPath) {
2
+ const parts = [];
3
+ const projectName = task.linearProject?.name || projectPath.split('/').pop() || 'unknown';
4
+ parts.push(projectName);
5
+ if (task.issueIdentifier) {
6
+ parts.push(task.issueIdentifier);
7
+ }
8
+ else if (task.issueId) {
9
+ parts.push(task.issueId.slice(0, 8));
10
+ }
11
+ const worktreeMatch = projectPath.match(/worktree\/([a-f0-9-]+)/);
12
+ if (worktreeMatch)
13
+ parts.push(`worktree/${worktreeMatch[1].slice(0, 8)}`);
14
+ return parts.join(' | ');
15
+ }
16
+ //# sourceMappingURL=pipelineTaskPrefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelineTaskPrefix.js","sourceRoot":"","sources":["../../src/agents/pipelineTaskPrefix.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,WAAmB;IACjE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAC1F,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClE,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Subjective sources (review) are opinion and are handled by the existing
6
6
  * reviewer-feedback channel, not this trail.
7
7
  */
8
- export type ReflectionSource = 'lint' | 'bs' | 'test' | 'review';
8
+ export type ReflectionSource = 'lint' | 'bs' | 'test' | 'validation' | 'review';
9
9
  export interface ReflectionEntry {
10
10
  /** 1-based pipeline iteration this failure was observed in */
11
11
  iteration: number;
@@ -28,6 +28,14 @@ export declare const MAX_TRAIL_ENTRIES = 3;
28
28
  export declare function createReflectionState(): ReflectionState;
29
29
  /** True for ground-truth failures that drive (and bound) self-repair. */
30
30
  export declare function isObjective(source: ReflectionSource): boolean;
31
+ /**
32
+ * Fuzzy match for consecutive reviewer revise feedback: prose never repeats
33
+ * verbatim, so exact matching (sameErrors) can't catch a reviewer saying the
34
+ * same thing twice. Token-set Jaccard over normalized words — two feedbacks
35
+ * above the threshold mean the worker isn't absorbing the review and further
36
+ * iterations will only burn tokens (INT-2474).
37
+ */
38
+ export declare function similarReviewFeedback(a: string, b: string, threshold?: number): boolean;
31
39
  /**
32
40
  * Record a failure as a reflection entry.
33
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../../src/agents/reflection.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAQnC,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,eAAe,GACrB;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAkBzB;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,GAAG,GAAE,MAAgC,GACpC,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAmBtE"}
1
+ {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../../src/agents/reflection.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAID,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAQnC,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE7D;AAgBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAgBpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,eAAe,GACrB;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,CAkBzB;AAED,yDAAyD;AACzD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,GAAG,GAAE,MAAgC,GACpC,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAmBtE"}
@@ -27,7 +27,7 @@ export const DEFAULT_MAX_REFLECTIONS = 3;
27
27
  export const MAX_TRAIL_ENTRIES = 3;
28
28
  /** Cap error lines per entry so a chatty compiler cannot blow up the prompt. */
29
29
  const MAX_ERRORS_PER_ENTRY = 5;
30
- const OBJECTIVE_SOURCES = ['lint', 'bs', 'test'];
30
+ const OBJECTIVE_SOURCES = ['lint', 'bs', 'test', 'validation'];
31
31
  // State
32
32
  export function createReflectionState() {
33
33
  return { entries: [], reflectionCount: 0 };
@@ -50,6 +50,30 @@ function sameErrors(a, b) {
50
50
  return false;
51
51
  return a.every((line, i) => line.trim() === b[i].trim());
52
52
  }
53
+ /**
54
+ * Fuzzy match for consecutive reviewer revise feedback: prose never repeats
55
+ * verbatim, so exact matching (sameErrors) can't catch a reviewer saying the
56
+ * same thing twice. Token-set Jaccard over normalized words — two feedbacks
57
+ * above the threshold mean the worker isn't absorbing the review and further
58
+ * iterations will only burn tokens (INT-2474).
59
+ */
60
+ export function similarReviewFeedback(a, b, threshold = 0.6) {
61
+ const tokens = (s) => new Set(s
62
+ .toLowerCase()
63
+ .replace(/[^\p{L}\p{N}]+/gu, ' ')
64
+ .split(' ')
65
+ .filter((w) => w.length > 2));
66
+ const ta = tokens(a);
67
+ const tb = tokens(b);
68
+ if (ta.size === 0 || tb.size === 0)
69
+ return false;
70
+ let intersection = 0;
71
+ for (const w of ta)
72
+ if (tb.has(w))
73
+ intersection++;
74
+ const union = ta.size + tb.size - intersection;
75
+ return union > 0 && intersection / union >= threshold;
76
+ }
53
77
  /**
54
78
  * Record a failure as a reflection entry.
55
79
  *
@@ -113,6 +137,8 @@ function labelForSource(source) {
113
137
  return 'code-smell guard failed';
114
138
  case 'test':
115
139
  return 'tests failed';
140
+ case 'validation':
141
+ return 'validation evidence missing';
116
142
  case 'review':
117
143
  return 'reviewer feedback';
118
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../../src/agents/reflection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../../src/agents/reflection.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,12 @@ export interface ReviewerOptions {
15
15
  reasoningEffort?: 'low' | 'medium' | 'high';
16
16
  /** Execution-grounded definition of done to hard-gate on (INT-1914). */
17
17
  completionCriteria?: string[];
18
+ /**
19
+ * Non-blocking deterministic guard warnings (dead-module, reformat/scope, …)
20
+ * surfaced to the reviewer so it verifies each instead of them dying in a log
21
+ * line. (INT-2388)
22
+ */
23
+ guardWarnings?: string[];
18
24
  /**
19
25
  * 'change' (default): review a worker's diff. 'audit': evaluate existing files
20
26
  * with no diff/worker (the `review --max` codebase audit). (INT-2006)
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,6EAA6E;IAC7E,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,uGAAuG;IACvG,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qFAAqF;IACrF,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAuFD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqEnF;AAID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCjF;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAoCjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAOhE"}
1
+ {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/agents/reviewer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,6EAA6E;IAC7E,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,uGAAuG;IACvG,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qFAAqF;IACrF,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kFAAkF;IAClF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AA2FD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqEnF;AAID;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCjF;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAoCjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAOhE"}
@@ -68,13 +68,16 @@ function buildReviewerPrompt(options) {
68
68
  const cmdsSummary = cmds.length <= 10
69
69
  ? (cmds.join(', ') || '(none)')
70
70
  : `${cmds.slice(0, 10).join(', ')} (+${cmds.length - 10} more)`;
71
+ const guardSection = options.guardWarnings && options.guardWarnings.length > 0
72
+ ? `- **Automated guard warnings (deterministic pre-checks — verify each, don't dismiss):**\n${options.guardWarnings.map(w => ` - ${w}`).join('\n')}\n`
73
+ : '';
71
74
  const workerReport = `
72
75
  - **Success:** ${options.workerResult.success}
73
76
  - **Summary:** ${options.workerResult.summary}
74
77
  - **Files Changed (${files.length}):** ${filesSummary}
75
78
  - **Commands:** ${cmdsSummary}
76
79
  ${options.workerResult.error ? `- **Error:** ${options.workerResult.error}` : ''}
77
- `;
80
+ ${guardSection}`;
78
81
  return getPrompts().buildReviewerPrompt({
79
82
  taskTitle: options.taskTitle,
80
83
  taskDescription: options.taskDescription,