@zhixuan92/multi-model-agent-core 4.0.2 → 4.0.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 +20 -6
  2. package/dist/bounded-execution/activity-tracker-types.d.ts +2 -2
  3. package/dist/bounded-execution/activity-tracker-types.d.ts.map +1 -1
  4. package/dist/bounded-execution/activity-tracker.d.ts +3 -3
  5. package/dist/bounded-execution/activity-tracker.d.ts.map +1 -1
  6. package/dist/bounded-execution/activity-tracker.js +15 -15
  7. package/dist/bounded-execution/activity-tracker.js.map +1 -1
  8. package/dist/config/model-profile-registry.d.ts +0 -10
  9. package/dist/config/model-profile-registry.d.ts.map +1 -1
  10. package/dist/config/model-profile-registry.js +126 -8
  11. package/dist/config/model-profile-registry.js.map +1 -1
  12. package/dist/config/schema.d.ts +0 -1
  13. package/dist/config/schema.d.ts.map +1 -1
  14. package/dist/config/schema.js +3 -1
  15. package/dist/config/schema.js.map +1 -1
  16. package/dist/escalation/delegate-with-escalation.d.ts +24 -0
  17. package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
  18. package/dist/escalation/delegate-with-escalation.js +5 -0
  19. package/dist/escalation/delegate-with-escalation.js.map +1 -1
  20. package/dist/escalation/fallback-types.d.ts +1 -1
  21. package/dist/escalation/fallback-types.d.ts.map +1 -1
  22. package/dist/escalation/fallback.js +2 -2
  23. package/dist/escalation/fallback.js.map +1 -1
  24. package/dist/events/cloud-events.d.ts +3 -4
  25. package/dist/events/cloud-events.d.ts.map +1 -1
  26. package/dist/events/cloud-events.js +0 -1
  27. package/dist/events/cloud-events.js.map +1 -1
  28. package/dist/events/event-builder.d.ts +4 -2
  29. package/dist/events/event-builder.d.ts.map +1 -1
  30. package/dist/events/event-builder.js +47 -45
  31. package/dist/events/event-builder.js.map +1 -1
  32. package/dist/events/observability-events.d.ts +7 -8
  33. package/dist/events/observability-events.d.ts.map +1 -1
  34. package/dist/events/running-headline-sink.d.ts +26 -0
  35. package/dist/events/running-headline-sink.d.ts.map +1 -0
  36. package/dist/events/running-headline-sink.js +116 -0
  37. package/dist/events/running-headline-sink.js.map +1 -0
  38. package/dist/events/telemetry-types.d.ts +20 -20
  39. package/dist/events/telemetry-types.js +8 -8
  40. package/dist/events/telemetry-types.js.map +1 -1
  41. package/dist/events/verbose-log-channel.d.ts +22 -2
  42. package/dist/events/verbose-log-channel.d.ts.map +1 -1
  43. package/dist/events/verbose-log-channel.js +46 -9
  44. package/dist/events/verbose-log-channel.js.map +1 -1
  45. package/dist/index.d.ts +4 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/intake/brief-compiler-slots/delegate.d.ts +1 -0
  50. package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
  51. package/dist/intake/brief-compiler-slots/delegate.js +17 -2
  52. package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
  53. package/dist/lifecycle/diff-tracker.d.ts +72 -0
  54. package/dist/lifecycle/diff-tracker.d.ts.map +1 -0
  55. package/dist/lifecycle/diff-tracker.js +316 -0
  56. package/dist/lifecycle/diff-tracker.js.map +1 -0
  57. package/dist/lifecycle/executor-output-types.d.ts +2 -2
  58. package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
  59. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  60. package/dist/lifecycle/handlers/baseline-handlers.js +48 -1
  61. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  62. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +1 -1
  63. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
  64. package/dist/lifecycle/handlers/prepare-execution-context-handler.js +23 -1
  65. package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
  66. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +1 -1
  67. package/dist/lifecycle/handlers/quality-chain-handlers.js +177 -6
  68. package/dist/lifecycle/handlers/quality-chain-handlers.js.map +1 -1
  69. package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +1 -1
  70. package/dist/lifecycle/handlers/review-diff-handler.js +74 -13
  71. package/dist/lifecycle/handlers/review-diff-handler.js.map +1 -1
  72. package/dist/lifecycle/handlers/run-verify-command-handler.js +11 -2
  73. package/dist/lifecycle/handlers/run-verify-command-handler.js.map +1 -1
  74. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +1 -1
  75. package/dist/lifecycle/handlers/spec-chain-handlers.js +135 -6
  76. package/dist/lifecycle/handlers/spec-chain-handlers.js.map +1 -1
  77. package/dist/lifecycle/handlers/terminal-handlers.d.ts +8 -0
  78. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  79. package/dist/lifecycle/handlers/terminal-handlers.js +168 -11
  80. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  81. package/dist/lifecycle/lifecycle-context.d.ts +0 -2
  82. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  83. package/dist/lifecycle/merge-stage-stats.d.ts +58 -0
  84. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -0
  85. package/dist/lifecycle/merge-stage-stats.js +120 -0
  86. package/dist/lifecycle/merge-stage-stats.js.map +1 -0
  87. package/dist/lifecycle/shared-compute.js +4 -4
  88. package/dist/lifecycle/shared-compute.js.map +1 -1
  89. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  90. package/dist/lifecycle/stage-plan-builder.js +6 -0
  91. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  92. package/dist/lifecycle/stage-plan-types.d.ts +18 -0
  93. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  94. package/dist/lifecycle/stage-progression.d.ts +20 -0
  95. package/dist/lifecycle/stage-progression.d.ts.map +1 -0
  96. package/dist/lifecycle/stage-progression.js +165 -0
  97. package/dist/lifecycle/stage-progression.js.map +1 -0
  98. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  99. package/dist/lifecycle/task-executor.js +55 -10
  100. package/dist/lifecycle/task-executor.js.map +1 -1
  101. package/dist/lifecycle/task-runner.d.ts +7 -3
  102. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  103. package/dist/lifecycle/task-runner.js +43 -7
  104. package/dist/lifecycle/task-runner.js.map +1 -1
  105. package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
  106. package/dist/providers/anthropic-messages-adapter.js +25 -1
  107. package/dist/providers/anthropic-messages-adapter.js.map +1 -1
  108. package/dist/providers/base/result-builders.d.ts +1 -1
  109. package/dist/providers/base/result-builders.d.ts.map +1 -1
  110. package/dist/providers/base/result-builders.js +4 -4
  111. package/dist/providers/base/result-builders.js.map +1 -1
  112. package/dist/providers/make-runner-shell.d.ts.map +1 -1
  113. package/dist/providers/make-runner-shell.js +6 -5
  114. package/dist/providers/make-runner-shell.js.map +1 -1
  115. package/dist/providers/openai-chat-adapter.d.ts +0 -2
  116. package/dist/providers/openai-chat-adapter.d.ts.map +1 -1
  117. package/dist/providers/openai-chat-adapter.js +2 -3
  118. package/dist/providers/openai-chat-adapter.js.map +1 -1
  119. package/dist/providers/openai-responses-adapter.d.ts +1 -2
  120. package/dist/providers/openai-responses-adapter.d.ts.map +1 -1
  121. package/dist/providers/openai-responses-adapter.js +67 -39
  122. package/dist/providers/openai-responses-adapter.js.map +1 -1
  123. package/dist/providers/provider-factory.d.ts.map +1 -1
  124. package/dist/providers/provider-factory.js +51 -9
  125. package/dist/providers/provider-factory.js.map +1 -1
  126. package/dist/providers/runner-adapter.d.ts +10 -0
  127. package/dist/providers/runner-adapter.d.ts.map +1 -1
  128. package/dist/providers/runner-shell-types.d.ts +33 -0
  129. package/dist/providers/runner-shell-types.d.ts.map +1 -1
  130. package/dist/providers/runner-shell.d.ts +10 -1
  131. package/dist/providers/runner-shell.d.ts.map +1 -1
  132. package/dist/providers/runner-shell.js +251 -18
  133. package/dist/providers/runner-shell.js.map +1 -1
  134. package/dist/providers/runner-types.d.ts +21 -2
  135. package/dist/providers/runner-types.d.ts.map +1 -1
  136. package/dist/providers/tool-name-sets.d.ts +29 -0
  137. package/dist/providers/tool-name-sets.d.ts.map +1 -0
  138. package/dist/providers/tool-name-sets.js +41 -0
  139. package/dist/providers/tool-name-sets.js.map +1 -0
  140. package/dist/reporting/headline-composer.d.ts +12 -0
  141. package/dist/reporting/headline-composer.d.ts.map +1 -1
  142. package/dist/reporting/headline-composer.js.map +1 -1
  143. package/dist/reporting/headline-templates/audit.d.ts.map +1 -1
  144. package/dist/reporting/headline-templates/audit.js +35 -6
  145. package/dist/reporting/headline-templates/audit.js.map +1 -1
  146. package/dist/reporting/headline-templates/debug.d.ts +22 -3
  147. package/dist/reporting/headline-templates/debug.d.ts.map +1 -1
  148. package/dist/reporting/headline-templates/debug.js +38 -8
  149. package/dist/reporting/headline-templates/debug.js.map +1 -1
  150. package/dist/reporting/headline-templates/delegate.d.ts.map +1 -1
  151. package/dist/reporting/headline-templates/delegate.js +36 -6
  152. package/dist/reporting/headline-templates/delegate.js.map +1 -1
  153. package/dist/reporting/headline-templates/execute-plan.d.ts.map +1 -1
  154. package/dist/reporting/headline-templates/execute-plan.js +18 -6
  155. package/dist/reporting/headline-templates/execute-plan.js.map +1 -1
  156. package/dist/reporting/headline-templates/review.d.ts.map +1 -1
  157. package/dist/reporting/headline-templates/review.js +32 -8
  158. package/dist/reporting/headline-templates/review.js.map +1 -1
  159. package/dist/reporting/headline-templates/verify.d.ts.map +1 -1
  160. package/dist/reporting/headline-templates/verify.js +23 -6
  161. package/dist/reporting/headline-templates/verify.js.map +1 -1
  162. package/dist/reporting/headline-text.d.ts +36 -0
  163. package/dist/reporting/headline-text.d.ts.map +1 -0
  164. package/dist/reporting/headline-text.js +73 -0
  165. package/dist/reporting/headline-text.js.map +1 -0
  166. package/dist/reporting/report-parser-slots/verify-report.d.ts +17 -0
  167. package/dist/reporting/report-parser-slots/verify-report.d.ts.map +1 -1
  168. package/dist/reporting/report-parser-slots/verify-report.js +45 -3
  169. package/dist/reporting/report-parser-slots/verify-report.js.map +1 -1
  170. package/dist/reporting/severity.d.ts +62 -0
  171. package/dist/reporting/severity.d.ts.map +1 -0
  172. package/dist/reporting/severity.js +93 -0
  173. package/dist/reporting/severity.js.map +1 -0
  174. package/dist/reporting/structured-report.d.ts +3 -3
  175. package/dist/research/explore-orchestrator.d.ts.map +1 -1
  176. package/dist/research/explore-orchestrator.js +4 -5
  177. package/dist/research/explore-orchestrator.js.map +1 -1
  178. package/dist/review/annotator-engine.d.ts +8 -0
  179. package/dist/review/annotator-engine.d.ts.map +1 -1
  180. package/dist/review/annotator-engine.js +7 -1
  181. package/dist/review/annotator-engine.js.map +1 -1
  182. package/dist/review/annotator-output-parser.d.ts.map +1 -1
  183. package/dist/review/annotator-output-parser.js +94 -14
  184. package/dist/review/annotator-output-parser.js.map +1 -1
  185. package/dist/review/annotator-prompt-builder.d.ts +20 -0
  186. package/dist/review/annotator-prompt-builder.d.ts.map +1 -1
  187. package/dist/review/annotator-prompt-builder.js +52 -1
  188. package/dist/review/annotator-prompt-builder.js.map +1 -1
  189. package/dist/review/review-types.d.ts +6 -2
  190. package/dist/review/review-types.d.ts.map +1 -1
  191. package/dist/review/reviewer-engine.d.ts +25 -0
  192. package/dist/review/reviewer-engine.d.ts.map +1 -1
  193. package/dist/review/reviewer-engine.js +18 -1
  194. package/dist/review/reviewer-engine.js.map +1 -1
  195. package/dist/review/reviewer-output-parser.d.ts.map +1 -1
  196. package/dist/review/reviewer-output-parser.js +190 -13
  197. package/dist/review/reviewer-output-parser.js.map +1 -1
  198. package/dist/review/reviewer-prompt-builder.d.ts +4 -12
  199. package/dist/review/reviewer-prompt-builder.d.ts.map +1 -1
  200. package/dist/review/reviewer-prompt-builder.js.map +1 -1
  201. package/dist/review/templates/diff-review.d.ts +8 -0
  202. package/dist/review/templates/diff-review.d.ts.map +1 -1
  203. package/dist/review/templates/diff-review.js +34 -2
  204. package/dist/review/templates/diff-review.js.map +1 -1
  205. package/dist/review/templates/finding-criteria.d.ts +39 -0
  206. package/dist/review/templates/finding-criteria.d.ts.map +1 -0
  207. package/dist/review/templates/finding-criteria.js +80 -0
  208. package/dist/review/templates/finding-criteria.js.map +1 -0
  209. package/dist/review/templates/quality-review-artifact.d.ts +13 -0
  210. package/dist/review/templates/quality-review-artifact.d.ts.map +1 -1
  211. package/dist/review/templates/quality-review-artifact.js +41 -3
  212. package/dist/review/templates/quality-review-artifact.js.map +1 -1
  213. package/dist/review/templates/shared.d.ts +22 -5
  214. package/dist/review/templates/shared.d.ts.map +1 -1
  215. package/dist/review/templates/spec-review.d.ts +15 -0
  216. package/dist/review/templates/spec-review.d.ts.map +1 -1
  217. package/dist/review/templates/spec-review.js +43 -3
  218. package/dist/review/templates/spec-review.js.map +1 -1
  219. package/dist/stores/batch-registry.d.ts +18 -0
  220. package/dist/stores/batch-registry.d.ts.map +1 -1
  221. package/dist/stores/batch-registry.js +10 -0
  222. package/dist/stores/batch-registry.js.map +1 -1
  223. package/dist/stores/context-block-tool.d.ts +14 -0
  224. package/dist/stores/context-block-tool.d.ts.map +1 -1
  225. package/dist/stores/context-block-tool.js.map +1 -1
  226. package/dist/stores/file-backed-context-block-store.d.ts +63 -0
  227. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -0
  228. package/dist/stores/file-backed-context-block-store.js +293 -0
  229. package/dist/stores/file-backed-context-block-store.js.map +1 -0
  230. package/dist/stores/project-context-registry.d.ts +16 -3
  231. package/dist/stores/project-context-registry.d.ts.map +1 -1
  232. package/dist/stores/project-context-registry.js +9 -2
  233. package/dist/stores/project-context-registry.js.map +1 -1
  234. package/dist/tools/audit/schema.d.ts +2 -2
  235. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  236. package/dist/tools/audit/tool-config.js +23 -6
  237. package/dist/tools/audit/tool-config.js.map +1 -1
  238. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  239. package/dist/tools/debug/tool-config.js +17 -4
  240. package/dist/tools/debug/tool-config.js.map +1 -1
  241. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  242. package/dist/tools/execute-plan/tool-config.js +5 -1
  243. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  244. package/dist/tools/investigate/tool-config.d.ts +13 -1
  245. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  246. package/dist/tools/investigate/tool-config.js +34 -4
  247. package/dist/tools/investigate/tool-config.js.map +1 -1
  248. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  249. package/dist/tools/retry/tool-config.js +28 -5
  250. package/dist/tools/retry/tool-config.js.map +1 -1
  251. package/dist/tools/review/schema.d.ts +1 -1
  252. package/dist/tools/review/tool-config.d.ts.map +1 -1
  253. package/dist/tools/review/tool-config.js +19 -4
  254. package/dist/tools/review/tool-config.js.map +1 -1
  255. package/dist/tools/verify/tool-config.d.ts.map +1 -1
  256. package/dist/tools/verify/tool-config.js +17 -4
  257. package/dist/tools/verify/tool-config.js.map +1 -1
  258. package/dist/types/enums.d.ts +10 -10
  259. package/package.json +5 -1
  260. package/dist/intake/brief-compiler-slots/investigate.d.ts +0 -26
  261. package/dist/intake/brief-compiler-slots/investigate.d.ts.map +0 -1
  262. package/dist/intake/brief-compiler-slots/investigate.js +0 -42
  263. package/dist/intake/brief-compiler-slots/investigate.js.map +0 -1
@@ -13,8 +13,20 @@ export interface EnrichedInvestigateInput extends Input {
13
13
  relativeFilePathsForPrompt: string[];
14
14
  }
15
15
  export interface InvestigateBrief {
16
+ /** The user's original question — drives the headline text. */
16
17
  question: string;
17
- prompt: string;
18
+ /**
19
+ * The fully compiled implementer prompt (template + question + anchors +
20
+ * context blocks). Stored here for buildTaskSpec to forward as
21
+ * TaskSpec.prompt, but deliberately NOT named `prompt`/`brief`. The
22
+ * task-executor's `taskBrief` resolution chain reads
23
+ * `briefs[0].prompt ?? .brief ?? .question`; a `prompt` field here would
24
+ * cause the headline to be the prompt-template instructions (the tool
25
+ * sweep #5 bug — headline read 'Investigation: "Produce a narrative
26
+ * investigation report. Number each findin…"'). Falling through to
27
+ * `question` is the desired behavior.
28
+ */
29
+ compiledPrompt: string;
18
30
  filePaths: string[];
19
31
  contextBlockIds: string[];
20
32
  tools?: 'none' | 'readonly';
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/investigate/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AAKzG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYvE;AAKD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAyB,SAAQ,KAAK;IACrD,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,0BAA0B,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAyBD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,CA0DtG,CAAC"}
1
+ {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/investigate/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AAUzG,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYvE;AAKD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAyB,SAAQ,KAAK;IACrD,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,0BAA0B,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAqDD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,wBAAwB,EAAE,gBAAgB,EAAE,uBAAuB,CA2DtG,CAAC"}
@@ -4,6 +4,7 @@ import { investigateReportSchema } from '../../reporting/report-parser-slots/inv
4
4
  import { investigateHeadlineTemplate } from '../../reporting/headline-templates/investigate.js';
5
5
  import { deriveInvestigateWorkerStatus } from '../../reporting/derive-investigate-status.js';
6
6
  import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
7
+ import { EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO, } from '../../review/templates/finding-criteria.js';
7
8
  export function registerInvestigate(registry) {
8
9
  registry.register({
9
10
  routeName: 'investigate',
@@ -19,7 +20,29 @@ export function registerInvestigate(registry) {
19
20
  }
20
21
  function compilePrompt(input) {
21
22
  const promptParts = [];
22
- promptParts.push('Produce a narrative investigation report. Number each finding (1, 2, 3, ...). For each finding, on its own line, state Severity: critical|high|medium|low, then a one-paragraph explanation citing file:line for code-level claims (or describing what was searched for project-level claims). Optional Suggestion line. The reviewer will extract structured findings — do NOT emit JSON.');
23
+ promptParts.push([
24
+ 'Produce an investigation report in this EXACT structured format. The deterministic',
25
+ 'parser extracts citations, confidence, and unresolved items by section — do NOT emit',
26
+ 'JSON, and do NOT use a numbered-list narrative. Sections MUST use h2 headers (`##`).',
27
+ '',
28
+ '## Summary',
29
+ 'One paragraph stating the answer to the question, in plain prose.',
30
+ '',
31
+ '## Citations',
32
+ 'One bullet per evidence item, in this exact format:',
33
+ '`- file/path.ts:LINE — claim` (em-dash, OR `--` is also accepted)',
34
+ 'Use a `LINE-LINE` range when an evidence span covers multiple lines.',
35
+ 'If the question is fully project-level (no code evidence applies), write `(none)`',
36
+ 'on its own line — but only when Confidence is `low`.',
37
+ '',
38
+ '## Confidence',
39
+ 'One of `high`, `medium`, or `low`, optionally followed by ` — <one-line rationale>`.',
40
+ '',
41
+ '## Unresolved',
42
+ 'Optional bullets describing follow-up questions; write `(none)` if there are none.',
43
+ 'Prefix a bullet with `[needs_context]` if it requires the caller to supply more',
44
+ 'information before the question can be answered.',
45
+ ].join('\n'));
23
46
  for (const block of input.resolvedContextBlocks) {
24
47
  promptParts.push(block.content);
25
48
  }
@@ -31,6 +54,12 @@ function compilePrompt(input) {
31
54
  if (input.resolvedContextBlocks.length > 0) {
32
55
  promptParts.push('A prior investigation report is provided as context above. Refine or extend that investigation. In your output, mark which prior unresolved questions you resolved this round and which remain open.');
33
56
  }
57
+ // Tool sweep #12: shared rubric. Investigate doesn't use the
58
+ // SEVERITY_LADDER (its findings are citations, not severity-rated)
59
+ // but evidence-grounding + scope-discipline + annotator-awareness
60
+ // apply just as much. Workers that cite hallucinated lines or
61
+ // speculate about unread files now have the rubric inline.
62
+ promptParts.push(EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO);
34
63
  return promptParts.join('\n\n');
35
64
  }
36
65
  export const toolConfig = {
@@ -38,17 +67,17 @@ export const toolConfig = {
38
67
  category: 'read_only',
39
68
  agentType: 'complex',
40
69
  briefSlot: (input) => {
41
- const prompt = compilePrompt(input);
70
+ const compiledPrompt = compilePrompt(input);
42
71
  return [{
43
72
  question: input.question,
44
- prompt,
73
+ compiledPrompt,
45
74
  filePaths: input.canonicalizedFilePaths,
46
75
  contextBlockIds: input.contextBlockIds ?? [],
47
76
  tools: input.tools,
48
77
  }];
49
78
  },
50
79
  buildTaskSpec: (brief, ctx) => ({
51
- prompt: brief.prompt,
80
+ prompt: brief.compiledPrompt,
52
81
  agentType: 'complex',
53
82
  reviewPolicy: 'quality_only',
54
83
  cwd: ctx.projectContext?.cwd ?? ctx.cwd,
@@ -58,6 +87,7 @@ export const toolConfig = {
58
87
  timeoutMs: ctx.config.defaults?.timeoutMs ?? DEFAULT_TASK_TIMEOUT_MS,
59
88
  maxCostUSD: ctx.config.defaults?.maxCostUSD ?? 10,
60
89
  sandboxPolicy: ctx.config.defaults?.sandboxPolicy ?? 'cwd-only',
90
+ mainModel: ctx.mainModel ?? undefined,
61
91
  }),
62
92
  reportSchema: investigateReportSchema,
63
93
  headlineTemplate: investigateHeadlineTemplate,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/investigate/tool-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/investigate/tool-config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAMvE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYjE;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CA0C7D,CAAC"}
1
+ {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAMvE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYjE;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CA6D7D,CAAC"}
@@ -36,7 +36,7 @@ export const toolConfig = {
36
36
  sandboxPolicy: origTask?.sandboxPolicy ?? defaults?.sandboxPolicy ?? 'cwd-only',
37
37
  cwd: origTask?.cwd ?? ctx.projectContext?.cwd ?? ctx.cwd,
38
38
  contextBlockIds: origTask?.contextBlockIds ?? [],
39
- mainModel: origTask?.mainModel ?? defaults?.mainModel ?? undefined,
39
+ mainModel: origTask?.mainModel,
40
40
  done: origTask?.done,
41
41
  autoCommit: origTask?.autoCommit ?? false,
42
42
  };
@@ -46,11 +46,34 @@ export const toolConfig = {
46
46
  postProcessEnvelope: (envelope, ctx) => {
47
47
  const results = (Array.isArray(envelope.results) ? envelope.results : []);
48
48
  const total = results.length;
49
- envelope.headline = `retry: ${total}/${total} tasks complete`;
49
+ // Tool sweep #8 fix: pre-fix this hard-coded `retry: N/N tasks complete`
50
+ // regardless of actual outcomes — operator could not tell if any
51
+ // retried task had failed. Now compute the true ok/incomplete/error
52
+ // breakdown from per-task `status` and emit a headline that mirrors
53
+ // delegate / execute-plan: '[<aggregate-status>] retry: ok/total tasks complete'
54
+ // with detail when not all ok.
55
+ let ok = 0, incomplete = 0, error = 0;
56
+ for (const r of results) {
57
+ const s = r?.status;
58
+ if (s === 'ok')
59
+ ok++;
60
+ else if (s === 'error')
61
+ error++;
62
+ else
63
+ incomplete++; // 'incomplete' or any unknown bucket
64
+ }
65
+ const aggregate = error > 0 ? 'error' : incomplete > 0 ? 'incomplete' : 'ok';
66
+ let detail = `${ok}/${total} tasks complete`;
67
+ if (incomplete > 0)
68
+ detail += `, ${incomplete} incomplete`;
69
+ if (error > 0)
70
+ detail += `, ${error} error`;
71
+ envelope.headline = `[${aggregate}] retry: ${detail}`;
50
72
  envelope.structuredReport = notApplicable('no structured report emitted by this executor');
51
- delete envelope.specReviewVerdict;
52
- delete envelope.qualityReviewVerdict;
53
- delete envelope.roundsUsed;
73
+ // Tool sweep #8: keep the underlying review verdicts on the envelope
74
+ // (do NOT delete) so downstream telemetry + UI can show whether the
75
+ // retried tasks' lifecycles passed their spec/quality chains. Pre-fix
76
+ // these were stripped, hiding important failure signal.
54
77
  if (ctx?.batchId) {
55
78
  envelope.retryBatchId = ctx.batchId;
56
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/retry/tool-config.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import { z } from 'zod';
2
2
  export declare const inputSchema: z.ZodObject<{
3
3
  code: z.ZodOptional<z.ZodString>;
4
4
  focus: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5
- style: "style";
6
5
  security: "security";
7
6
  performance: "performance";
7
+ style: "style";
8
8
  correctness: "correctness";
9
9
  }>>>;
10
10
  filePaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAKhG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYlE;AAkED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CA2B9D,CAAC"}
1
+ {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAWhG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYlE;AAkED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAsC9D,CAAC"}
@@ -4,6 +4,7 @@ import { reviewBriefSlot } from '../../intake/brief-compiler-slots/review.js';
4
4
  import { reviewReportSchema } from '../../reporting/report-parser-slots/review-report.js';
5
5
  import { reviewHeadlineTemplate } from '../../reporting/headline-templates/review.js';
6
6
  import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
7
+ import { SEVERITY_LADDER, EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO, } from '../../review/templates/finding-criteria.js';
7
8
  export function registerReview(registry) {
8
9
  registry.register({
9
10
  routeName: 'review',
@@ -46,12 +47,15 @@ function buildReviewPrompt(brief) {
46
47
  if (focus && focus.length > 0)
47
48
  parts.push(`Focus areas: ${focus.join(', ')}.`);
48
49
  }
50
+ // Tool sweep #11: emit format spec unconditionally (pre-fix the
51
+ // DELTA branch dropped it, breaking annotator parse on delta runs).
49
52
  if (hasContextBlocks) {
50
- parts.push('Context is provided above (e.g. a diff or prior review). Perform a full review as normal — do not skip areas or reduce thoroughness.', 'If the context contains prior review findings:', '- **Omit** findings that have been addressed — do not re-report them.', '- **Include** findings that are still present (mark as "unfixed from prior review").', '- **Include** any new findings.', '- End with a **Fixed** summary listing which prior findings were resolved.');
51
- }
52
- else {
53
- parts.push('Produce a narrative code review. Use this EXACT per-finding format so the deterministic extractor can recover findings if the structured reviewer pass fails:', '', '## Finding 1: <one-line title>', '- Severity: critical | high | medium | low', '- Location: file:line', '- Issue: one-paragraph explanation', '- Suggestion: one-line fix recommendation', '', '## Finding 2: <one-line title>', '- Severity: ...', '- ...', '', 'Rules:', '- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) — number sequentially from 1.', '- Severity / Location / Issue / Suggestion bullets are on their own lines with the labels exactly as shown.', '- Do NOT emit JSON. Both the structured reviewer and the deterministic fallback extract from this same format — the format is the single source of truth.');
53
+ parts.push('A prior review is in the context above. **Omit** addressed findings, **include** still-present ones (mark "unfixed from prior review"), **include** any new findings, and end with a **Fixed** summary.');
54
54
  }
55
+ parts.push('Produce a narrative code review. Use this EXACT per-finding format — both the structured reviewer and the deterministic fallback extract from this same format:', '', '## Finding 1: <one-line title>', '- Severity: critical | high | medium | low', '- Location: file:line', '- Issue: one-paragraph explanation', '- Suggestion: one-line fix recommendation', '', '## Finding 2: <one-line title>', '- Severity: ...', '- ...', '', 'Rules:', '- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) — number sequentially from 1.', '- Severity / Location / Issue / Suggestion bullets are on their own lines with the labels exactly as shown.', '- If you found no issues, say "No findings." in plain prose and emit zero `## Finding N:` blocks.');
56
+ // Tool sweep #12: share the annotator's rubric with the implementer
57
+ // so the worker self-aligns with what the reviewer will check.
58
+ parts.push(SEVERITY_LADDER, EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO);
55
59
  return parts.join('\n\n');
56
60
  }
57
61
  export const toolConfig = {
@@ -61,6 +65,15 @@ export const toolConfig = {
61
65
  briefSlot: reviewBriefSlot,
62
66
  buildTaskSpec: (brief, ctx) => {
63
67
  const prompt = buildReviewPrompt(brief);
68
+ // Propagate filePaths + mainModel onto the TaskSpec so the headline
69
+ // composer can name the file in clean-review headlines and so the
70
+ // wire telemetry carries main_model attribution. Audit does this
71
+ // already; review missed it, producing "[ok] review completed"
72
+ // (no path) even when filePaths was provided. (Tool sweep #2 — gap surfaced
73
+ // by review batch c24353f6 on packages/core/src/reporting/severity.ts.)
74
+ const filePaths = brief.filePath
75
+ ? [brief.filePath]
76
+ : (brief.filePaths && brief.filePaths.length > 0 ? brief.filePaths : undefined);
64
77
  return {
65
78
  prompt,
66
79
  agentType: 'complex',
@@ -73,6 +86,8 @@ export const toolConfig = {
73
86
  sandboxPolicy: ctx.config.defaults?.sandboxPolicy ?? 'cwd-only',
74
87
  cwd: ctx.projectContext?.cwd ?? ctx.cwd,
75
88
  contextBlockIds: brief.contextBlockIds,
89
+ filePaths,
90
+ mainModel: ctx.mainModel ?? undefined,
76
91
  autoCommit: false,
77
92
  };
78
93
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/review/tool-config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/verify/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAMvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYlE;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqDD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAoD9D,CAAC"}
1
+ {"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/verify/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAYvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYlE;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAgED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAqD9D,CAAC"}
@@ -3,6 +3,7 @@ import { qualityVerifyTemplate } from '../../review/reviewer-engine.js';
3
3
  import { verifyReportSchema } from '../../reporting/report-parser-slots/verify-report.js';
4
4
  import { verifyHeadlineTemplate } from '../../reporting/headline-templates/verify.js';
5
5
  import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
6
+ import { SEVERITY_LADDER, EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO, } from '../../review/templates/finding-criteria.js';
6
7
  export function registerVerify(registry) {
7
8
  registry.register({
8
9
  routeName: 'verify',
@@ -18,10 +19,10 @@ export function registerVerify(registry) {
18
19
  }
19
20
  // ── Prompt builders (lifted from legacy executor) ──
20
21
  const FINDING_FORMAT_INSTRUCTIONS = [
21
- 'For each checklist item, use this EXACT per-finding format so the deterministic extractor can recover findings if the structured reviewer pass fails:',
22
+ 'For each checklist item, use this EXACT per-finding format both the structured reviewer and the deterministic fallback extract from this same format:',
22
23
  '',
23
24
  '## Finding 1: <one-line title (the criterion summary)>',
24
- '- Severity: critical | high | medium | low (low = pass; high/medium = fail)',
25
+ '- Severity: critical | high | medium | low (use `low` for PASS items; `medium` or `high` for FAIL items per impact)',
25
26
  '- Item: the criterion text',
26
27
  '- Result: PASS or FAIL',
27
28
  '- Evidence: file:line + what it shows, OR command + output',
@@ -31,9 +32,20 @@ const FINDING_FORMAT_INSTRUCTIONS = [
31
32
  '- ...',
32
33
  '',
33
34
  'Rules:',
34
- '- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) number sequentially from 1, one per checklist item.',
35
+ '- One `## Finding N:` block per checklist item same count and same order as the checklist. Do not skip items even if they pass trivially.',
35
36
  '- Severity / Item / Result / Evidence bullets are on their own lines with the labels exactly as shown.',
36
- '- Do NOT emit JSON. Both the structured reviewer and the deterministic fallback extract from this same format — the format is the single source of truth.',
37
+ '',
38
+ // Tool sweep #12: shared rubric so worker calibrates the same way the
39
+ // annotator validates. For verify, severity is bound to the result —
40
+ // the SEVERITY_LADDER below explains the ladder; here we just bind:
41
+ // PASS -> low, FAIL -> medium/high based on impact.
42
+ SEVERITY_LADDER,
43
+ '',
44
+ EVIDENCE_GROUNDING,
45
+ '',
46
+ SCOPE_DISCIPLINE,
47
+ '',
48
+ ANNOTATOR_CHECK_AWARENESS_RO,
37
49
  ].join('\n');
38
50
  function buildFilePathsPrompt(filePaths) {
39
51
  if (!filePaths || filePaths.length === 0)
@@ -101,6 +113,7 @@ export const toolConfig = {
101
113
  cwd: ctx.projectContext?.cwd ?? ctx.cwd,
102
114
  contextBlockIds: brief.contextBlockIds,
103
115
  filePaths: brief.filePaths.length > 0 ? brief.filePaths : undefined,
116
+ mainModel: ctx.mainModel ?? undefined,
104
117
  };
105
118
  },
106
119
  reportSchema: verifyReportSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/verify/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sDAAsD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,QAA6B;IAC1D,QAAQ,CAAC,QAAQ,CAAC;QAChB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,SAAS;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,iBAAiB,EAAE,eAAe;KACnC,CAAC,CAAC;AACL,CAAC;AAaD,sDAAsD;AAEtD,MAAM,2BAA2B,GAAG;IAClC,uJAAuJ;IACvJ,EAAE;IACF,wDAAwD;IACxD,6EAA6E;IAC7E,4BAA4B;IAC5B,wBAAwB;IACxB,4DAA4D;IAC5D,EAAE;IACF,gCAAgC;IAChC,iBAAiB;IACjB,OAAO;IACP,EAAE;IACF,QAAQ;IACR,sJAAsJ;IACtJ,wGAAwG;IACxG,2JAA2J;CAC5J,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,oBAAoB,CAAC,SAAoB;IAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,OAAO,kCAAkC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAwB,EACxB,SAA+B,EAC/B,SAAmB;IAEnB,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,eAAe,aAAa,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,cAAsB;IAClE,OAAO,GAAG,cAAc,sCAAsC,QAAQ,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,mBAAmB;AAEnB,MAAM,CAAC,MAAM,UAAU,GAA4C;IACjE,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,CAAC,KAAY,EAAiB,EAAE;QACzC,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE3E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrD,qDAAqD;YACrD,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,CAAC,EAAE,CAAC;gBACf,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;gBAC5C,cAAc;aACf,CAAC,CAAC,CAAC;QACN,CAAC;QAED,cAAc;QACd,OAAO,CAAC;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS;gBACT,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;aAC7C,CAAC,CAAC;IACL,CAAC;IACD,aAAa,EAAE,CAAC,KAAkB,EAAE,GAAqB,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc;YACjC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,cAAc,CAAC;YAC/D,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAE7G,OAAO;YACL,MAAM;YACN,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,cAAc;YAC5B,kBAAkB,EAAE,KAAK;YACzB,IAAI,EAAE,yBAAyB,KAAK,CAAC,SAAS,CAAC,MAAM,yEAAyE;YAC9H,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,MAAM;YAC3C,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,uBAAuB;YACpE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE;YACjD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,IAAI,UAAU;YAC/D,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG;YACvC,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC;IACJ,CAAC;IACD,YAAY,EAAE,kBAAkB;IAChC,gBAAgB,EAAE,sBAAsB;IACxC,eAAe,EAAE;QACf,SAAS,EAAE,qBAAqB;KACjC;CACF,CAAC"}
1
+ {"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/verify/tool-config.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,13 @@ export declare const TierEnum: z.ZodEnum<{
4
4
  complex: "complex";
5
5
  }>;
6
6
  export declare const RouteEnum: z.ZodEnum<{
7
- review: "review";
8
- retry: "retry";
9
7
  delegate: "delegate";
10
8
  audit: "audit";
9
+ review: "review";
11
10
  verify: "verify";
12
11
  debug: "debug";
13
12
  "execute-plan": "execute-plan";
13
+ retry: "retry";
14
14
  investigate: "investigate";
15
15
  explore: "explore";
16
16
  explore_internal: "explore_internal";
@@ -90,13 +90,6 @@ export declare const InvestigationConfidenceEnum: z.ZodEnum<{
90
90
  }>;
91
91
  export declare const FindingConfidenceSchema: z.ZodNumber;
92
92
  export declare const EventTypeEnum: z.ZodEnum<{
93
- fallback: "fallback";
94
- worker_start: "worker_start";
95
- turn_start: "turn_start";
96
- tool_call: "tool_call";
97
- text_emission: "text_emission";
98
- turn_complete: "turn_complete";
99
- heartbeat: "heartbeat";
100
93
  batch_completed: "batch_completed";
101
94
  batch_failed: "batch_failed";
102
95
  cost_check: "cost_check";
@@ -110,7 +103,9 @@ export declare const EventTypeEnum: z.ZodEnum<{
110
103
  explore_synthesize_start: "explore_synthesize_start";
111
104
  explore_thread_completed: "explore_thread_completed";
112
105
  explore_thread_started: "explore_thread_started";
106
+ fallback: "fallback";
113
107
  fallback_unavailable: "fallback_unavailable";
108
+ heartbeat: "heartbeat";
114
109
  "read_only_review.quality": "read_only_review.quality";
115
110
  "read_only_review.terminal": "read_only_review.terminal";
116
111
  review_decision: "review_decision";
@@ -118,9 +113,14 @@ export declare const EventTypeEnum: z.ZodEnum<{
118
113
  stall_abort: "stall_abort";
119
114
  task_completed: "task_completed";
120
115
  task_started: "task_started";
116
+ text_emission: "text_emission";
121
117
  time_check: "time_check";
118
+ tool_call: "tool_call";
119
+ turn_complete: "turn_complete";
120
+ turn_start: "turn_start";
122
121
  verify_skipped: "verify_skipped";
123
122
  verify_step: "verify_step";
123
+ worker_start: "worker_start";
124
124
  }>;
125
125
  export declare const ReviewEngineTypeEnum: z.ZodEnum<{
126
126
  reviewer: "reviewer";
@@ -146,9 +146,9 @@ export declare const IncompleteReasonEnum: z.ZodEnum<{
146
146
  * Defined here so the closed-enum ratchet covers it before adoption.
147
147
  */
148
148
  export declare const EvidenceKindEnum: z.ZodEnum<{
149
- fix: "fix";
150
149
  reproducer: "reproducer";
151
150
  code_path: "code_path";
151
+ fix: "fix";
152
152
  }>;
153
153
  export declare const DiagLoopEnum: z.ZodEnum<{
154
154
  spec: "spec";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhixuan92/multi-model-agent-core",
3
- "version": "4.0.2",
3
+ "version": "4.0.4",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
@@ -56,6 +56,10 @@
56
56
  "types": "./dist/lifecycle/task-runner.d.ts",
57
57
  "import": "./dist/lifecycle/task-runner.js"
58
58
  },
59
+ "./lifecycle/stage-progression": {
60
+ "types": "./dist/lifecycle/stage-progression.d.ts",
61
+ "import": "./dist/lifecycle/stage-progression.js"
62
+ },
59
63
  "./events/verbose-line": {
60
64
  "types": "./dist/events/verbose-line.d.ts",
61
65
  "import": "./dist/events/verbose-line.js"
@@ -1,26 +0,0 @@
1
- import type { TaskSpec } from '../../types.js';
2
- import type { Input } from '../../tools/investigate/schema.js';
3
- export interface ResolvedContextBlock {
4
- id: string;
5
- content: string;
6
- }
7
- export declare function compileInvestigate(input: Input, resolvedContextBlocks: ResolvedContextBlock[], canonicalizedFilePaths: string[], relativeFilePathsForPrompt: string[], cwd: string): TaskSpec & {
8
- route: 'investigate_codebase';
9
- originalInput: Record<string, unknown>;
10
- question: string;
11
- };
12
- export interface InvestigateInput {
13
- question: string;
14
- depth?: 'shallow' | 'medium' | 'deep';
15
- cwd?: string;
16
- }
17
- export interface InvestigateBrief {
18
- taskIndex: number;
19
- brief: string;
20
- cwd: string;
21
- agentType: 'complex';
22
- reviewPolicy: 'quality_only';
23
- contextBlockIds: string[];
24
- }
25
- export declare function investigateSlot(input: InvestigateInput): InvestigateBrief[];
26
- //# sourceMappingURL=investigate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../../src/intake/brief-compiler-slots/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,qBAAqB,EAAE,oBAAoB,EAAE,EAC7C,sBAAsB,EAAE,MAAM,EAAE,EAChC,0BAA0B,EAAE,MAAM,EAAE,EACpC,GAAG,EAAE,MAAM,GACV,QAAQ,GAAG;IAAE,KAAK,EAAE,sBAAsB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAsCxG;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,cAAc,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAS3E"}
@@ -1,42 +0,0 @@
1
- export function compileInvestigate(input, resolvedContextBlocks, canonicalizedFilePaths, relativeFilePathsForPrompt, cwd) {
2
- if (canonicalizedFilePaths.length !== relativeFilePathsForPrompt.length) {
3
- throw new Error('compileInvestigate: canonicalizedFilePaths and relativeFilePathsForPrompt must be the same length');
4
- }
5
- const promptParts = [];
6
- promptParts.push('Produce a narrative investigation report. Number each finding (1, 2, 3, ...). For each finding, on its own line, state Severity: critical|high|medium|low, then a one-paragraph explanation citing file:line for code-level claims (or describing what was searched for project-level claims). Optional Suggestion line. The reviewer will extract structured findings — do NOT emit JSON.');
7
- for (const block of resolvedContextBlocks) {
8
- promptParts.push(block.content);
9
- }
10
- if (relativeFilePathsForPrompt.length > 0) {
11
- promptParts.push('Anchor paths to start from (you may also read beyond these):\n' +
12
- relativeFilePathsForPrompt.map(p => `- ${p}`).join('\n'));
13
- }
14
- promptParts.push(`Question: ${input.question}`);
15
- if (resolvedContextBlocks.length > 0) {
16
- promptParts.push('A prior investigation report is provided as context above. Refine or extend that investigation. In your output, mark which prior unresolved questions you resolved this round and which remain open.');
17
- }
18
- return {
19
- route: 'investigate_codebase',
20
- prompt: promptParts.join('\n\n'),
21
- originalInput: {
22
- ...input,
23
- filePaths: canonicalizedFilePaths,
24
- },
25
- question: input.question,
26
- tools: input.tools ?? 'readonly',
27
- filePaths: canonicalizedFilePaths,
28
- sandboxPolicy: 'cwd-only',
29
- cwd,
30
- };
31
- }
32
- export function investigateSlot(input) {
33
- return [{
34
- taskIndex: 0,
35
- brief: `Investigate (${input.depth ?? 'medium'}):\n${input.question}`,
36
- cwd: input.cwd ?? process.cwd(),
37
- agentType: 'complex',
38
- reviewPolicy: 'quality_only',
39
- contextBlockIds: [],
40
- }];
41
- }
42
- //# sourceMappingURL=investigate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../../src/intake/brief-compiler-slots/investigate.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAChC,KAAY,EACZ,qBAA6C,EAC7C,sBAAgC,EAChC,0BAAoC,EACpC,GAAW;IAEX,IAAI,sBAAsB,CAAC,MAAM,KAAK,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;IACvH,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,WAAW,CAAC,IAAI,CACd,4XAA4X,CAC7X,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,WAAW,CAAC,IAAI,CACd,gEAAgE;YAChE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzD,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,CACd,sMAAsM,CACvM,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,aAAa,EAAE;YACb,GAAG,KAAK;YACR,SAAS,EAAE,sBAAsB;SACI;QACvC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,UAAU;QAChC,SAAS,EAAE,sBAAsB;QACjC,aAAa,EAAE,UAAU;QACzB,GAAG;KACiH,CAAC;AACzH,CAAC;AAkBD,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,CAAC;YACN,SAAS,EAAE,CAAC;YACZ,KAAK,EAAE,gBAAgB,KAAK,CAAC,KAAK,IAAI,QAAQ,OAAO,KAAK,CAAC,QAAQ,EAAE;YACrE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YAC/B,SAAS,EAAE,SAAkB;YAC7B,YAAY,EAAE,cAAuB;YACrC,eAAe,EAAE,EAAE;SACpB,CAAC,CAAC;AACL,CAAC"}