@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
@@ -0,0 +1,72 @@
1
+ /**
2
+ * DiffTracker — snapshot files at task start, produce a cumulative
3
+ * unified diff at any point during the lifecycle.
4
+ *
5
+ * Tool sweep #6 motivation: every reviewer template (spec / quality /
6
+ * diff) was reviewing the worker's TEXT CLAIM about its work, not the
7
+ * actual change on disk. Result:
8
+ * - Spec reviewers defaulted to "changes_required" because they
9
+ * could not verify a claim they couldn't see → endless rework
10
+ * spirals on already-correct work.
11
+ * - Quality findings were rooted in the worker's prose summary
12
+ * rather than diff lines → false positives, missed regressions.
13
+ * - The "diff reviewer" did not actually receive a diff (a misnomer).
14
+ *
15
+ * Fix: every reviewer prompt now receives `cumulativeDiff` — the
16
+ * unified diff of every change made since task start, regardless of
17
+ * which rework round produced it. With evidence in hand the reviewer
18
+ * can be precise: "diff matches brief? approve" — single round, no
19
+ * spiral, no waste.
20
+ *
21
+ * "Cumulative" matters: across spec_rework rounds 1..N, the reviewer
22
+ * needs to see the totality of edits so it can confirm prior reworks'
23
+ * additions are still present. A latest-round-only diff would make
24
+ * the round-2 reviewer say "you didn't add Y" when round-1 actually
25
+ * did.
26
+ *
27
+ * Implementation choice: snapshot-based, NOT git-based.
28
+ * - Works in non-git directories (test fixtures, sandboxes,
29
+ * fresh-scaffold projects).
30
+ * - No assumption about HEAD state.
31
+ * - No mutation of `.git/` (no `add -N`, no temporary index entries).
32
+ * - Captures new files cleanly (baseline=null → full new-file diff).
33
+ *
34
+ * Diff format: unified diff (`@@ -before,count +after,count @@`)
35
+ * generated via Myers-style line LCS. The LLM is the consumer; the
36
+ * format is what every model has been trained on.
37
+ *
38
+ * Output cap: 50KB total. Excess is truncated with a "[diff truncated
39
+ * at 50KB — N more bytes elided]" marker so the LLM knows the diff is
40
+ * incomplete and can react accordingly (rather than silently judging
41
+ * a partial picture).
42
+ */
43
+ export declare class DiffTracker {
44
+ private cwd;
45
+ private baselines;
46
+ constructor(cwd: string);
47
+ /**
48
+ * Capture current file content as the baseline. Idempotent: if a
49
+ * path was already snapshotted, the existing baseline wins (the
50
+ * earliest-known content is the canonical pre-task state).
51
+ *
52
+ * Call once at task start with all `task.filePaths`; call again
53
+ * lazily (via `ensureSnapshotted`) if a worker writes a path that
54
+ * wasn't pre-declared.
55
+ */
56
+ snapshot(relativePaths: ReadonlyArray<string>): Promise<void>;
57
+ /**
58
+ * Defensive: if the worker writes a file that wasn't pre-declared
59
+ * in `task.filePaths`, we don't have a baseline for it. Capture
60
+ * one NOW (whatever the file's current state) so subsequent diffs
61
+ * show only what THIS rework round changed for it. This is a
62
+ * best-effort fallback; the operator should declare filePaths.
63
+ */
64
+ ensureSnapshotted(relativePath: string): Promise<void>;
65
+ /** Return the unified diff of every snapshotted path against its
66
+ * current on-disk content. Empty string when nothing changed.
67
+ * Capped at MAX_DIFF_BYTES with a truncation marker. */
68
+ cumulativeDiff(): Promise<string>;
69
+ /** Test hook: how many baselines have been captured. */
70
+ size(): number;
71
+ }
72
+ //# sourceMappingURL=diff-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-tracker.d.ts","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAYH,qBAAa,WAAW;IAGV,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,SAAS,CAA+B;gBAE5B,GAAG,EAAE,MAAM;IAE/B;;;;;;;;OAQG;IACG,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnE;;;;;;OAMG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;6DAEyD;IACnD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBvC,wDAAwD;IACxD,IAAI,IAAI,MAAM;CAGf"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * DiffTracker — snapshot files at task start, produce a cumulative
3
+ * unified diff at any point during the lifecycle.
4
+ *
5
+ * Tool sweep #6 motivation: every reviewer template (spec / quality /
6
+ * diff) was reviewing the worker's TEXT CLAIM about its work, not the
7
+ * actual change on disk. Result:
8
+ * - Spec reviewers defaulted to "changes_required" because they
9
+ * could not verify a claim they couldn't see → endless rework
10
+ * spirals on already-correct work.
11
+ * - Quality findings were rooted in the worker's prose summary
12
+ * rather than diff lines → false positives, missed regressions.
13
+ * - The "diff reviewer" did not actually receive a diff (a misnomer).
14
+ *
15
+ * Fix: every reviewer prompt now receives `cumulativeDiff` — the
16
+ * unified diff of every change made since task start, regardless of
17
+ * which rework round produced it. With evidence in hand the reviewer
18
+ * can be precise: "diff matches brief? approve" — single round, no
19
+ * spiral, no waste.
20
+ *
21
+ * "Cumulative" matters: across spec_rework rounds 1..N, the reviewer
22
+ * needs to see the totality of edits so it can confirm prior reworks'
23
+ * additions are still present. A latest-round-only diff would make
24
+ * the round-2 reviewer say "you didn't add Y" when round-1 actually
25
+ * did.
26
+ *
27
+ * Implementation choice: snapshot-based, NOT git-based.
28
+ * - Works in non-git directories (test fixtures, sandboxes,
29
+ * fresh-scaffold projects).
30
+ * - No assumption about HEAD state.
31
+ * - No mutation of `.git/` (no `add -N`, no temporary index entries).
32
+ * - Captures new files cleanly (baseline=null → full new-file diff).
33
+ *
34
+ * Diff format: unified diff (`@@ -before,count +after,count @@`)
35
+ * generated via Myers-style line LCS. The LLM is the consumer; the
36
+ * format is what every model has been trained on.
37
+ *
38
+ * Output cap: 50KB total. Excess is truncated with a "[diff truncated
39
+ * at 50KB — N more bytes elided]" marker so the LLM knows the diff is
40
+ * incomplete and can react accordingly (rather than silently judging
41
+ * a partial picture).
42
+ */
43
+ import * as fs from 'node:fs/promises';
44
+ import * as path from 'node:path';
45
+ const MAX_DIFF_BYTES = 50 * 1024; // 50KB cap to protect reviewer context window
46
+ const CONTEXT_LINES = 3; // unified-diff convention
47
+ export class DiffTracker {
48
+ cwd;
49
+ baselines = new Map();
50
+ constructor(cwd) {
51
+ this.cwd = cwd;
52
+ }
53
+ /**
54
+ * Capture current file content as the baseline. Idempotent: if a
55
+ * path was already snapshotted, the existing baseline wins (the
56
+ * earliest-known content is the canonical pre-task state).
57
+ *
58
+ * Call once at task start with all `task.filePaths`; call again
59
+ * lazily (via `ensureSnapshotted`) if a worker writes a path that
60
+ * wasn't pre-declared.
61
+ */
62
+ async snapshot(relativePaths) {
63
+ for (const rel of relativePaths) {
64
+ if (this.baselines.has(rel))
65
+ continue;
66
+ const abs = path.resolve(this.cwd, rel);
67
+ try {
68
+ const content = await fs.readFile(abs, 'utf-8');
69
+ this.baselines.set(rel, content);
70
+ }
71
+ catch (e) {
72
+ if (e.code === 'ENOENT') {
73
+ // File didn't exist at task start. Worker may create it →
74
+ // diff later will show as a full new-file diff.
75
+ this.baselines.set(rel, null);
76
+ }
77
+ else {
78
+ throw e;
79
+ }
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * Defensive: if the worker writes a file that wasn't pre-declared
85
+ * in `task.filePaths`, we don't have a baseline for it. Capture
86
+ * one NOW (whatever the file's current state) so subsequent diffs
87
+ * show only what THIS rework round changed for it. This is a
88
+ * best-effort fallback; the operator should declare filePaths.
89
+ */
90
+ async ensureSnapshotted(relativePath) {
91
+ if (this.baselines.has(relativePath))
92
+ return;
93
+ await this.snapshot([relativePath]);
94
+ }
95
+ /** Return the unified diff of every snapshotted path against its
96
+ * current on-disk content. Empty string when nothing changed.
97
+ * Capped at MAX_DIFF_BYTES with a truncation marker. */
98
+ async cumulativeDiff() {
99
+ const segments = [];
100
+ for (const [rel, before] of this.baselines.entries()) {
101
+ const abs = path.resolve(this.cwd, rel);
102
+ let after;
103
+ try {
104
+ after = await fs.readFile(abs, 'utf-8');
105
+ }
106
+ catch (e) {
107
+ if (e.code === 'ENOENT')
108
+ after = null;
109
+ else
110
+ throw e;
111
+ }
112
+ if (before === after)
113
+ continue;
114
+ const seg = formatUnifiedDiff(rel, before, after);
115
+ if (seg)
116
+ segments.push(seg);
117
+ }
118
+ return capWithMarker(segments.join('\n\n'));
119
+ }
120
+ /** Test hook: how many baselines have been captured. */
121
+ size() {
122
+ return this.baselines.size;
123
+ }
124
+ }
125
+ function capWithMarker(s) {
126
+ if (s.length <= MAX_DIFF_BYTES)
127
+ return s;
128
+ const elided = s.length - MAX_DIFF_BYTES;
129
+ return s.slice(0, MAX_DIFF_BYTES) + `\n\n[diff truncated at ${MAX_DIFF_BYTES} bytes — ${elided} more bytes elided]`;
130
+ }
131
+ /** Unified-diff for one file. */
132
+ function formatUnifiedDiff(relPath, before, after) {
133
+ if (before === after)
134
+ return '';
135
+ const beforeLines = before === null ? [] : splitKeepNewlines(before);
136
+ const afterLines = after === null ? [] : splitKeepNewlines(after);
137
+ const aLabel = before === null ? '/dev/null' : `a/${relPath}`;
138
+ const bLabel = after === null ? '/dev/null' : `b/${relPath}`;
139
+ const ops = lineDiff(beforeLines, afterLines);
140
+ const hunks = collectHunks(ops, CONTEXT_LINES);
141
+ if (hunks.length === 0)
142
+ return '';
143
+ const out = [];
144
+ out.push(`--- ${aLabel}`);
145
+ out.push(`+++ ${bLabel}`);
146
+ for (const h of hunks) {
147
+ out.push(`@@ -${h.beforeStart + 1},${h.beforeCount} +${h.afterStart + 1},${h.afterCount} @@`);
148
+ for (const line of h.lines)
149
+ out.push(line);
150
+ }
151
+ return out.join('\n');
152
+ }
153
+ function splitKeepNewlines(s) {
154
+ // Split into logical lines. Trailing newline is preserved on each
155
+ // line except the last (which may or may not have one, like POSIX).
156
+ if (s === '')
157
+ return [];
158
+ const out = s.split('\n');
159
+ // If original ended with \n, the split produces a trailing '' which
160
+ // represents "the final newline" — drop it (unified diff lines DON'T
161
+ // include the trailing newline; it's implicit).
162
+ if (out.length > 0 && out[out.length - 1] === '')
163
+ out.pop();
164
+ return out;
165
+ }
166
+ /**
167
+ * Line-level diff using a simple LCS (Hirschberg / dynamic-programming).
168
+ * Returns ops in document order. For typical edits (a few lines changed
169
+ * in a file of hundreds of lines) this is O(N×M) but with N×M small.
170
+ * For huge files it's still bounded — the result is line-count
171
+ * sensitive, not byte-count sensitive.
172
+ */
173
+ function lineDiff(a, b) {
174
+ const n = a.length;
175
+ const m = b.length;
176
+ // Build LCS length matrix.
177
+ const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
178
+ for (let i = n - 1; i >= 0; i--) {
179
+ for (let j = m - 1; j >= 0; j--) {
180
+ if (a[i] === b[j])
181
+ dp[i][j] = dp[i + 1][j + 1] + 1;
182
+ else
183
+ dp[i][j] = Math.max(dp[i + 1][j], dp[i][j + 1]);
184
+ }
185
+ }
186
+ // Backtrack to produce ops.
187
+ const ops = [];
188
+ let i = 0, j = 0;
189
+ while (i < n && j < m) {
190
+ if (a[i] === b[j]) {
191
+ ops.push({ kind: 'equal', text: a[i] });
192
+ i++;
193
+ j++;
194
+ }
195
+ else if (dp[i + 1][j] >= dp[i][j + 1]) {
196
+ ops.push({ kind: 'delete', text: a[i] });
197
+ i++;
198
+ }
199
+ else {
200
+ ops.push({ kind: 'insert', text: b[j] });
201
+ j++;
202
+ }
203
+ }
204
+ while (i < n)
205
+ ops.push({ kind: 'delete', text: a[i++] });
206
+ while (j < m)
207
+ ops.push({ kind: 'insert', text: b[j++] });
208
+ return ops;
209
+ }
210
+ /**
211
+ * Group ops into unified-diff hunks with `context` lines of unchanged
212
+ * surrounding code. Skip pure-equal stretches longer than 2×context.
213
+ */
214
+ function collectHunks(ops, context) {
215
+ const hunks = [];
216
+ let i = 0;
217
+ let beforeIdx = 0; // 0-based line index into the "before" file
218
+ let afterIdx = 0;
219
+ while (i < ops.length) {
220
+ // Skip purely-equal runs up to first change.
221
+ while (i < ops.length && ops[i].kind === 'equal') {
222
+ // Tentatively advance — but if a change is within `context`
223
+ // ahead, we'll back off to include it as preceding-context.
224
+ let lookahead = i;
225
+ while (lookahead < ops.length && lookahead < i + context && ops[lookahead].kind === 'equal')
226
+ lookahead++;
227
+ if (lookahead < ops.length && ops[lookahead].kind !== 'equal')
228
+ break;
229
+ beforeIdx++;
230
+ afterIdx++;
231
+ i++;
232
+ }
233
+ if (i >= ops.length)
234
+ break;
235
+ // Start a hunk. Include up to `context` preceding equal lines.
236
+ const hunkLines = [];
237
+ let preStart = Math.max(0, i - context);
238
+ // Walk back to preStart, but only include 'equal' ops on the way.
239
+ // Use bookkeeping: how many equal lines we step back.
240
+ const preLines = [];
241
+ let walkBack = i - 1;
242
+ while (walkBack >= preStart && ops[walkBack].kind === 'equal' && preLines.length < context) {
243
+ preLines.unshift(' ' + ops[walkBack].text);
244
+ walkBack--;
245
+ }
246
+ const hunkBeforeStart = beforeIdx - preLines.length;
247
+ const hunkAfterStart = afterIdx - preLines.length;
248
+ hunkLines.push(...preLines);
249
+ // Walk forward, collecting changes + interleaved equals (up to
250
+ // 2×context equals before splitting into a new hunk).
251
+ let beforeCount = preLines.length;
252
+ let afterCount = preLines.length;
253
+ let trailingEqualCount = 0;
254
+ while (i < ops.length) {
255
+ const op = ops[i];
256
+ if (op.kind === 'equal') {
257
+ if (trailingEqualCount >= 2 * context) {
258
+ // Decide whether to split: peek to see if more changes coming.
259
+ let look = i;
260
+ while (look < ops.length && ops[look].kind === 'equal')
261
+ look++;
262
+ if (look >= ops.length || look - i > context) {
263
+ // No more changes within range — close the hunk with `context` trailing.
264
+ break;
265
+ }
266
+ }
267
+ hunkLines.push(' ' + op.text);
268
+ beforeCount++;
269
+ afterCount++;
270
+ beforeIdx++;
271
+ afterIdx++;
272
+ trailingEqualCount++;
273
+ i++;
274
+ }
275
+ else if (op.kind === 'delete') {
276
+ hunkLines.push('-' + op.text);
277
+ beforeCount++;
278
+ beforeIdx++;
279
+ trailingEqualCount = 0;
280
+ i++;
281
+ }
282
+ else {
283
+ // insert
284
+ hunkLines.push('+' + op.text);
285
+ afterCount++;
286
+ afterIdx++;
287
+ trailingEqualCount = 0;
288
+ i++;
289
+ }
290
+ }
291
+ // Trim trailing context to exactly `context` lines if we accumulated more.
292
+ while (trailingEqualCount > context) {
293
+ const last = hunkLines[hunkLines.length - 1];
294
+ if (last.startsWith(' ')) {
295
+ hunkLines.pop();
296
+ beforeCount--;
297
+ afterCount--;
298
+ trailingEqualCount--;
299
+ beforeIdx--;
300
+ afterIdx--;
301
+ i--;
302
+ }
303
+ else
304
+ break;
305
+ }
306
+ hunks.push({
307
+ beforeStart: hunkBeforeStart,
308
+ beforeCount,
309
+ afterStart: hunkAfterStart,
310
+ afterCount,
311
+ lines: hunkLines,
312
+ });
313
+ }
314
+ return hunks;
315
+ }
316
+ //# sourceMappingURL=diff-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-tracker.js","sourceRoot":"","sources":["../../src/lifecycle/diff-tracker.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export interface BatchProgress {
17
17
  /** Aggregate cost metrics for a `delegate_tasks` batch. */
18
18
  export interface BatchAggregateCost {
19
19
  totalActualCostUSD: number;
20
- totalCostDeltaVsParentUSD: number;
20
+ totalCostDeltaVsMainUSD: number;
21
21
  }
22
22
  /**
23
23
  * Uniform output envelope returned by every executor.
@@ -43,7 +43,7 @@ export interface ExecutorOutput {
43
43
  batchId: string;
44
44
  contextBlockId?: string;
45
45
  wallClockMs?: number;
46
- mainModel?: string;
46
+ mainModel?: string | null;
47
47
  specReviewVerdict?: ReviewVerdict;
48
48
  qualityReviewVerdict?: ReviewVerdict;
49
49
  roundsUsed?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"executor-output-types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/executor-output-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,0BAA0B,EAAE,MAAM,CAAA;CACnC;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yBAAyB,EAAE,MAAM,CAAA;CAClC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,aAAa,CAAC;IAC3C,WAAW,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAChD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;IAC1D,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"executor-output-types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/executor-output-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,0BAA0B,EAAE,MAAM,CAAA;CACnC;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,CAAA;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,aAAa,CAAC;IAC3C,WAAW,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAChD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;IAC1D,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA+B7D,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,cAAc;CAC9B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA+LrF"}
1
+ {"version":3,"file":"baseline-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAgC7D,MAAM,MAAM,aAAa,GAAG,CAC1B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,cAAc;CAC9B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CA8OrF"}
@@ -6,7 +6,7 @@ import { qualityReviewRound1Handler, qualityReviewRound2Handler, qualityReviewRo
6
6
  import { reviewDiffHandler } from './review-diff-handler.js';
7
7
  import { prepareExecutionContextHandler } from './prepare-execution-context-handler.js';
8
8
  import { registerToBlockStoreHandler } from './register-context-block-handlers.js';
9
- import { registerTerminalBlockHandler, emitTaskTerminalHandler, persistToBatchRegistryHandler, flushTelemetryHandler, } from './terminal-handlers.js';
9
+ import { registerTerminalBlockHandler, emitTaskTerminalHandler, persistToBatchRegistryHandler, recordTaskCompletedHandler, flushTelemetryHandler, } from './terminal-handlers.js';
10
10
  const noop = () => { };
11
11
  export function buildStageHandlers(deps) {
12
12
  const runInitialImpl = async (state) => {
@@ -148,7 +148,53 @@ export function buildStageHandlers(deps) {
148
148
  qualityReviewer: enriched.qualityReviewStatus === 'approved' || enriched.qualityReviewStatus === 'changes_required' || enriched.qualityReviewStatus === 'annotated' ? otherModel : null,
149
149
  };
150
150
  }
151
+ // Chain-failure status override: the implementer's lastRunResult.status
152
+ // is 'ok' when its turn finished cleanly, but if the spec/quality chain
153
+ // (or its rework) ultimately rejected the work, the wire envelope must
154
+ // reflect that — otherwise task_completed reports status=ok despite
155
+ // spec_chain_passed=false. Mutate state.lastRunResult so emit_task_terminal
156
+ // (which reads lastRunResult.status directly) picks up the corrected
157
+ // shape.
158
+ const chainFailed = state.specReworkFailed === true ||
159
+ state.qualityReworkFailed === true ||
160
+ state.specChainPassed === false ||
161
+ state.qualityChainPassed === false;
162
+ if (chainFailed) {
163
+ enriched.status = 'incomplete';
164
+ enriched.workerStatus = 'review_loop_capped';
165
+ if (state.specReworkFailed === true || state.qualityReworkFailed === true) {
166
+ enriched.errorCode = 'lifecycle_review_loop_capped';
167
+ }
168
+ else if (state.specChainPassed === false) {
169
+ enriched.errorCode = 'review_spec_rejected_terminal';
170
+ }
171
+ else {
172
+ enriched.errorCode = 'review_quality_findings_unresolved';
173
+ }
174
+ // The wire event derives terminalStatus + workerStatus from
175
+ // RunResult.terminationReason. The implementer's RunResult has
176
+ // cause='finished' + workerSelfAssessment='done', which produces
177
+ // terminalStatus='ok' regardless of our status/errorCode overrides
178
+ // — yielding the R1 invariant violation (terminalStatus=ok with
179
+ // non-null errorCode). Override terminationReason so the chain-fail
180
+ // path produces a clean terminalStatus='incomplete' on the wire.
181
+ const priorTr = (typeof enriched.terminationReason === 'object' && enriched.terminationReason !== null)
182
+ ? enriched.terminationReason
183
+ : undefined;
184
+ enriched.terminationReason = {
185
+ cause: 'incomplete',
186
+ turnsUsed: priorTr?.turnsUsed ?? last.turns ?? 0,
187
+ hasFileArtifacts: priorTr?.hasFileArtifacts ?? (Array.isArray(last.filesWritten) && last.filesWritten.length > 0),
188
+ usedShell: priorTr?.usedShell ?? false,
189
+ workerSelfAssessment: 'review_loop_capped',
190
+ wasPromoted: false,
191
+ };
192
+ }
151
193
  state.responseEnvelope = enriched;
194
+ // emit_task_terminal reads state.lastRunResult, not state.responseEnvelope,
195
+ // so propagate the chain-failure overrides back to the underlying slot
196
+ // so the wire `task_completed` event carries them too.
197
+ state.lastRunResult = enriched;
152
198
  return;
153
199
  }
154
200
  state.responseEnvelope = undefined;
@@ -185,6 +231,7 @@ export function buildStageHandlers(deps) {
185
231
  register_terminal_block: registerTerminalBlockHandler,
186
232
  emit_task_terminal: emitTaskTerminalHandler,
187
233
  persist_to_batch_registry: persistToBatchRegistryHandler,
234
+ record_task_completed: recordTaskCompletedHandler,
188
235
  flush_telemetry: flushTelemetryHandler,
189
236
  project_idle_cleanup_tick: noop,
190
237
  batch_retention_sweep_tick: noop,
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/baseline-handlers.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,5 @@ import type { LifecycleState } from '../stage-plan-types.js';
15
15
  * so state.task is the per-dispatch task. This handler surfaces task[0]
16
16
  * as a fallback for downstream handlers that need a TaskSpec.
17
17
  */
18
- export declare function prepareExecutionContextHandler(state: LifecycleState): void;
18
+ export declare function prepareExecutionContextHandler(state: LifecycleState): Promise<void>;
19
19
  //# sourceMappingURL=prepare-execution-context-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-execution-context-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAqB1E"}
1
+ {"version":3,"file":"prepare-execution-context-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzF"}
@@ -1,3 +1,4 @@
1
+ import { DiffTracker } from '../diff-tracker.js';
1
2
  /**
2
3
  * StageHandler for row 2.5 (prepare_execution_context).
3
4
  *
@@ -14,7 +15,7 @@
14
15
  * so state.task is the per-dispatch task. This handler surfaces task[0]
15
16
  * as a fallback for downstream handlers that need a TaskSpec.
16
17
  */
17
- export function prepareExecutionContextHandler(state) {
18
+ export async function prepareExecutionContextHandler(state) {
18
19
  // Fallback: if rawRequest carries a TaskSpec[] and state.task is empty,
19
20
  // surface the first task so per-task handlers have something to read.
20
21
  if (!state.task) {
@@ -34,5 +35,26 @@ export function prepareExecutionContextHandler(state) {
34
35
  if (task && task.reviewPolicy) {
35
36
  state.reviewPolicy = task.reviewPolicy;
36
37
  }
38
+ // Tool sweep #6: snapshot the worker's declared filePaths BEFORE the
39
+ // implementer runs so reviewer stages can produce a cumulative diff
40
+ // against the pre-task baseline. Skip read-only routes (audit / review
41
+ // / verify / debug / investigate / explore) — they don't write files
42
+ // by sandbox policy, so a tracker would just be empty noise.
43
+ if (!state.diffTracker && task && state.toolCategory !== 'read_only') {
44
+ const cwd = task.cwd;
45
+ const filePaths = Array.isArray(task.filePaths) ? task.filePaths : [];
46
+ if (cwd && filePaths.length > 0) {
47
+ const tracker = new DiffTracker(cwd);
48
+ try {
49
+ await tracker.snapshot(filePaths);
50
+ state.diffTracker = tracker;
51
+ }
52
+ catch {
53
+ // Snapshot failures (permission, unreadable) shouldn't block the
54
+ // task. Reviewer just sees an empty diff and falls back to the
55
+ // worker-output-only path — degraded but not broken.
56
+ }
57
+ }
58
+ }
37
59
  }
38
60
  //# sourceMappingURL=prepare-execution-context-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-execution-context-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAqB;IAClE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,OAA6C,CAAC;QAChE,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,sEAAsE;IACtE,2DAA2D;IAC3D,4EAA4E;IAC5E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC;AAEH,CAAC"}
1
+ {"version":3,"file":"prepare-execution-context-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAAqB;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,OAA6C,CAAC;QAChE,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,sEAAsE;IACtE,2DAA2D;IAC3D,4EAA4E;IAC5E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,6DAA6D;IAC7D,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAClC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;gBACjE,+DAA+D;gBAC/D,qDAAqD;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quality-chain-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/quality-chain-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAsM7D,eAAO,MAAM,0BAA0B,UAvBkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAuBjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAxBkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAwBjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAzBkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAyBjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAZa,cAAc,KAAG,OAAO,CAAC,IAAI,CAYZ,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAba,cAAc,KAAG,OAAO,CAAC,IAAI,CAaZ,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAmBrE"}
1
+ {"version":3,"file":"quality-chain-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/quality-chain-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAmW7D,eAAO,MAAM,0BAA0B,UApJkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAoJjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UArJkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAqJjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAtJkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAsJjB,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAhDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAgDZ,CAAC;AACtE,eAAO,MAAM,0BAA0B,UAjDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAiDZ,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAyCrE"}