@zhixuan92/multi-model-agent-core 4.2.1 → 4.3.0

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 (235) hide show
  1. package/README.md +1 -1
  2. package/dist/config/schema.d.ts +3 -0
  3. package/dist/config/schema.d.ts.map +1 -1
  4. package/dist/config/schema.js +7 -4
  5. package/dist/config/schema.js.map +1 -1
  6. package/dist/error-codes.d.ts +1 -0
  7. package/dist/error-codes.d.ts.map +1 -1
  8. package/dist/error-codes.js +2 -0
  9. package/dist/error-codes.js.map +1 -1
  10. package/dist/events/running-headline-sink.d.ts.map +1 -1
  11. package/dist/events/running-headline-sink.js +47 -7
  12. package/dist/events/running-headline-sink.js.map +1 -1
  13. package/dist/events/telemetry-types.d.ts +24 -20
  14. package/dist/events/telemetry-types.d.ts.map +1 -1
  15. package/dist/identity/auth-token-store.d.ts +36 -0
  16. package/dist/identity/auth-token-store.d.ts.map +1 -1
  17. package/dist/identity/auth-token-store.js +71 -2
  18. package/dist/identity/auth-token-store.js.map +1 -1
  19. package/dist/identity/cwd-validator.d.ts.map +1 -1
  20. package/dist/identity/cwd-validator.js +15 -3
  21. package/dist/identity/cwd-validator.js.map +1 -1
  22. package/dist/identity/main-model-resolver.d.ts +14 -0
  23. package/dist/identity/main-model-resolver.d.ts.map +1 -0
  24. package/dist/identity/main-model-resolver.js +83 -0
  25. package/dist/identity/main-model-resolver.js.map +1 -0
  26. package/dist/index.d.ts +3 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
  31. package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
  32. package/dist/intake/brief-compiler-slots/delegate.js +12 -14
  33. package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
  34. package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
  35. package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
  36. package/dist/intake/context-overflow-estimator.d.ts +33 -0
  37. package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
  38. package/dist/intake/context-overflow-estimator.js +36 -0
  39. package/dist/intake/context-overflow-estimator.js.map +1 -0
  40. package/dist/intake/pipeline.d.ts.map +1 -1
  41. package/dist/intake/pipeline.js +46 -0
  42. package/dist/intake/pipeline.js.map +1 -1
  43. package/dist/intake/plan-extractor.d.ts.map +1 -1
  44. package/dist/intake/plan-extractor.js +10 -1
  45. package/dist/intake/plan-extractor.js.map +1 -1
  46. package/dist/intake/types.d.ts +1 -0
  47. package/dist/intake/types.d.ts.map +1 -1
  48. package/dist/lifecycle/diff-tracker.d.ts +17 -1
  49. package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
  50. package/dist/lifecycle/diff-tracker.js +115 -2
  51. package/dist/lifecycle/diff-tracker.js.map +1 -1
  52. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
  53. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
  54. package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
  55. package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
  56. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
  57. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
  58. package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
  59. package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
  60. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  61. package/dist/lifecycle/handlers/baseline-handlers.js +152 -65
  62. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  63. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +21 -0
  64. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +1 -0
  65. package/dist/lifecycle/handlers/files-written-cross-check.js +85 -0
  66. package/dist/lifecycle/handlers/files-written-cross-check.js.map +1 -0
  67. package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
  68. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
  69. package/dist/lifecycle/handlers/review-handler.js +141 -0
  70. package/dist/lifecycle/handlers/review-handler.js.map +1 -0
  71. package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
  72. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
  73. package/dist/lifecycle/handlers/rework-handler.js +77 -0
  74. package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
  75. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  76. package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
  77. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  78. package/dist/lifecycle/lifecycle-context.d.ts +4 -0
  79. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  80. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  81. package/dist/lifecycle/lifecycle-driver.js +12 -7
  82. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  83. package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
  84. package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
  85. package/dist/lifecycle/parallel-criteria-routes.js +21 -1
  86. package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
  87. package/dist/lifecycle/shared-compute.d.ts +9 -0
  88. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  89. package/dist/lifecycle/shared-compute.js +35 -3
  90. package/dist/lifecycle/shared-compute.js.map +1 -1
  91. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  92. package/dist/lifecycle/stage-plan-builder.js +65 -85
  93. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  94. package/dist/lifecycle/stage-plan-types.d.ts +48 -0
  95. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  96. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  97. package/dist/lifecycle/stage-progression.js +17 -24
  98. package/dist/lifecycle/stage-progression.js.map +1 -1
  99. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  100. package/dist/lifecycle/task-runner.js +12 -1
  101. package/dist/lifecycle/task-runner.js.map +1 -1
  102. package/dist/model-profiles.json +192 -53
  103. package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
  104. package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
  105. package/dist/providers/anthropic-messages-adapter.js +16 -1
  106. package/dist/providers/anthropic-messages-adapter.js.map +1 -1
  107. package/dist/providers/file-tracker.d.ts +33 -0
  108. package/dist/providers/file-tracker.d.ts.map +1 -1
  109. package/dist/providers/file-tracker.js +54 -0
  110. package/dist/providers/file-tracker.js.map +1 -1
  111. package/dist/providers/provider-factory.d.ts.map +1 -1
  112. package/dist/providers/provider-factory.js +27 -2
  113. package/dist/providers/provider-factory.js.map +1 -1
  114. package/dist/providers/runner-shell-types.d.ts +14 -0
  115. package/dist/providers/runner-shell-types.d.ts.map +1 -1
  116. package/dist/providers/runner-shell.d.ts.map +1 -1
  117. package/dist/providers/runner-shell.js +103 -26
  118. package/dist/providers/runner-shell.js.map +1 -1
  119. package/dist/providers/tool-implementations.d.ts +12 -0
  120. package/dist/providers/tool-implementations.d.ts.map +1 -1
  121. package/dist/providers/tool-implementations.js +33 -0
  122. package/dist/providers/tool-implementations.js.map +1 -1
  123. package/dist/reporting/annotate-completion-parser.d.ts +39 -0
  124. package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
  125. package/dist/reporting/annotate-completion-parser.js +43 -0
  126. package/dist/reporting/annotate-completion-parser.js.map +1 -0
  127. package/dist/reporting/compose-running-headline.d.ts +15 -1
  128. package/dist/reporting/compose-running-headline.d.ts.map +1 -1
  129. package/dist/reporting/compose-running-headline.js +76 -1
  130. package/dist/reporting/compose-running-headline.js.map +1 -1
  131. package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
  132. package/dist/review/default-engines.d.ts.map +1 -1
  133. package/dist/review/default-engines.js +8 -4
  134. package/dist/review/default-engines.js.map +1 -1
  135. package/dist/review/parse-review-report.d.ts +6 -0
  136. package/dist/review/parse-review-report.d.ts.map +1 -0
  137. package/dist/review/parse-review-report.js +40 -0
  138. package/dist/review/parse-review-report.js.map +1 -0
  139. package/dist/review/reviewer-engine.d.ts +12 -3
  140. package/dist/review/reviewer-engine.d.ts.map +1 -1
  141. package/dist/review/reviewer-engine.js +4 -3
  142. package/dist/review/reviewer-engine.js.map +1 -1
  143. package/dist/review/templates/annotate-completion.d.ts +12 -0
  144. package/dist/review/templates/annotate-completion.d.ts.map +1 -0
  145. package/dist/review/templates/annotate-completion.js +72 -0
  146. package/dist/review/templates/annotate-completion.js.map +1 -0
  147. package/dist/review/templates/quality-review.d.ts +3 -0
  148. package/dist/review/templates/quality-review.d.ts.map +1 -0
  149. package/dist/review/templates/quality-review.js +40 -0
  150. package/dist/review/templates/quality-review.js.map +1 -0
  151. package/dist/review/templates/rework.d.ts +3 -0
  152. package/dist/review/templates/rework.d.ts.map +1 -0
  153. package/dist/review/templates/rework.js +42 -0
  154. package/dist/review/templates/rework.js.map +1 -0
  155. package/dist/review/templates/shared.d.ts +32 -0
  156. package/dist/review/templates/shared.d.ts.map +1 -1
  157. package/dist/review/templates/spec-review.d.ts +1 -16
  158. package/dist/review/templates/spec-review.d.ts.map +1 -1
  159. package/dist/review/templates/spec-review.js +23 -31
  160. package/dist/review/templates/spec-review.js.map +1 -1
  161. package/dist/stores/context-block-project-cap.d.ts +14 -0
  162. package/dist/stores/context-block-project-cap.d.ts.map +1 -0
  163. package/dist/stores/context-block-project-cap.js +68 -0
  164. package/dist/stores/context-block-project-cap.js.map +1 -0
  165. package/dist/stores/context-block-tool.d.ts +2 -0
  166. package/dist/stores/context-block-tool.d.ts.map +1 -1
  167. package/dist/stores/context-block-tool.js +3 -2
  168. package/dist/stores/context-block-tool.js.map +1 -1
  169. package/dist/stores/file-backed-context-block-store.d.ts +8 -1
  170. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
  171. package/dist/stores/file-backed-context-block-store.js +118 -6
  172. package/dist/stores/file-backed-context-block-store.js.map +1 -1
  173. package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
  174. package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
  175. package/dist/tools/audit/plan-audit-criteria.js +136 -0
  176. package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
  177. package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
  178. package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
  179. package/dist/tools/audit/plan-audit-verdict.js +44 -0
  180. package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
  181. package/dist/tools/audit/schema.d.ts +1 -0
  182. package/dist/tools/audit/schema.d.ts.map +1 -1
  183. package/dist/tools/audit/schema.js +6 -3
  184. package/dist/tools/audit/schema.js.map +1 -1
  185. package/dist/tools/audit/tool-config.d.ts +3 -0
  186. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  187. package/dist/tools/audit/tool-config.js +8 -0
  188. package/dist/tools/audit/tool-config.js.map +1 -1
  189. package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
  190. package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
  191. package/dist/tools/delegate/implementer-criteria.js +60 -88
  192. package/dist/tools/delegate/implementer-criteria.js.map +1 -1
  193. package/dist/tools/delegate/tool-config.js +4 -4
  194. package/dist/tools/delegate/tool-config.js.map +1 -1
  195. package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
  196. package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
  197. package/dist/tools/execute-plan/implementer-criteria.js +79 -79
  198. package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
  199. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  200. package/dist/tools/execute-plan/tool-config.js +23 -13
  201. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  202. package/dist/types/config.d.ts +1 -0
  203. package/dist/types/config.d.ts.map +1 -1
  204. package/dist/types/enums.d.ts +2 -2
  205. package/dist/types/run-result.d.ts +71 -0
  206. package/dist/types/run-result.d.ts.map +1 -1
  207. package/dist/types/task-spec.d.ts +14 -0
  208. package/dist/types/task-spec.d.ts.map +1 -1
  209. package/dist/types.d.ts +10 -0
  210. package/dist/types.d.ts.map +1 -1
  211. package/package.json +5 -1
  212. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
  213. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
  214. package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
  215. package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
  216. package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
  217. package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
  218. package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
  219. package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
  220. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
  221. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
  222. package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
  223. package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
  224. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
  225. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
  226. package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
  227. package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
  228. package/dist/review/templates/diff-review.d.ts +0 -11
  229. package/dist/review/templates/diff-review.d.ts.map +0 -1
  230. package/dist/review/templates/diff-review.js +0 -39
  231. package/dist/review/templates/diff-review.js.map +0 -1
  232. package/dist/review/templates/quality-review-artifact.d.ts +0 -16
  233. package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
  234. package/dist/review/templates/quality-review-artifact.js +0 -46
  235. package/dist/review/templates/quality-review-artifact.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import { delegateWithEscalation } from '../../escalation/delegate-with-escalation.js';
2
+ import { replaceLastRunResultPreservingTrackers } from '../merge-stage-stats.js';
3
+ import { reworkTemplate } from '../../review/templates/rework.js';
4
+ export async function reworkHandler(state) {
5
+ if (state.terminal)
6
+ return;
7
+ if (state.reworkApplied !== undefined || state.reworkError !== undefined)
8
+ return;
9
+ if (state.reviewVerdict !== 'changes_required')
10
+ return;
11
+ const ctx = state.executionContext;
12
+ const task = state.task;
13
+ const last = state.lastRunResult;
14
+ if (!ctx || !task || !last)
15
+ return;
16
+ const findings = state.reviewFindings ?? [];
17
+ if (findings.length === 0) {
18
+ state.reworkApplied = false;
19
+ return;
20
+ }
21
+ let cumulativeDiff = '';
22
+ if (state.diffTracker) {
23
+ try {
24
+ cumulativeDiff = await state.diffTracker.cumulativeDiff();
25
+ }
26
+ catch {
27
+ cumulativeDiff = '';
28
+ }
29
+ }
30
+ const reworkTier = 'complex';
31
+ const provider = ctx.providers[reworkTier];
32
+ if (!provider) {
33
+ state.reworkError = `no provider available for tier ${reworkTier}`;
34
+ return;
35
+ }
36
+ const concerns = findings.map(f => `[${f.source}] ${f.text}`);
37
+ const promptCtx = {
38
+ brief: task.prompt ?? '',
39
+ workerOutput: last.output ?? '',
40
+ diff: cumulativeDiff,
41
+ planContext: task.planContext,
42
+ priorConcerns: concerns,
43
+ };
44
+ const fullPrompt = reworkTemplate.systemPrompt + '\n\n' + reworkTemplate.buildUserPrompt(promptCtx);
45
+ let result;
46
+ try {
47
+ result = await delegateWithEscalation({
48
+ prompt: fullPrompt,
49
+ cwd: ctx.cwd,
50
+ agentType: reworkTier,
51
+ briefQualityPolicy: 'off',
52
+ timeoutMs: ctx.timing.timeoutMs,
53
+ tools: 'full',
54
+ }, [provider], {
55
+ explicitlyPinned: true,
56
+ taskDeadlineMs: ctx.timing.deadlineMs,
57
+ abortSignal: ctx.stall.controller.signal,
58
+ assignedTier: reworkTier,
59
+ ...(ctx.bus && { bus: ctx.bus }),
60
+ ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
61
+ ...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
62
+ stageLabel: 'Rework',
63
+ });
64
+ }
65
+ catch (err) {
66
+ state.reworkError = err instanceof Error ? err.message : String(err);
67
+ return;
68
+ }
69
+ if (result.status !== 'ok') {
70
+ state.reworkError = `rework returned status: ${result.status}`;
71
+ return;
72
+ }
73
+ state.reworkApplied = true;
74
+ state.reworkOutput = result.output;
75
+ replaceLastRunResultPreservingTrackers(state, result);
76
+ }
77
+ //# sourceMappingURL=rework-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rework-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/rework-handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkC7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAqBxE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CA0GnE;AAMD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBzE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAoCtE;AAqED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhF"}
1
+ {"version":3,"file":"terminal-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkC7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAqBxE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAyHnE;AAMD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBzE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAoCtE;AAqED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhF"}
@@ -42,12 +42,16 @@ export function emitTaskTerminalHandler(state) {
42
42
  let outputTokens = 0;
43
43
  let cachedReadTokens = 0;
44
44
  let cachedNonReadTokens = 0;
45
- let totalCostUSD = null;
46
45
  let toolCallsTotal = 0;
47
46
  let turnsTotal = 0;
48
47
  let filesReadTotal = 0;
49
48
  let filesWrittenTotal = 0;
50
49
  const ss = last?.stageStats;
50
+ // A11.2: compute actualCostUSD as the sum of every stage's costUSD.
51
+ // costUSD and totalCostUSD are back-compat aliases for the same value.
52
+ // costDeltaVsMainUSD comes from the top-level cost field on RunResult.
53
+ let actualCostUSD = null;
54
+ let costDeltaVsMainUSD = null;
51
55
  if (ss) {
52
56
  for (const stage of Object.values(ss)) {
53
57
  if (!stage || !stage['entered'])
@@ -62,9 +66,10 @@ export function emitTaskTerminalHandler(state) {
62
66
  filesWrittenTotal += stage['filesWrittenCount'] ?? 0;
63
67
  const stageCost = stage['costUSD'];
64
68
  if (stageCost !== null && stageCost !== undefined) {
65
- totalCostUSD = (totalCostUSD ?? 0) + stageCost;
69
+ actualCostUSD = (actualCostUSD ?? 0) + stageCost;
66
70
  }
67
71
  }
72
+ costDeltaVsMainUSD = last?.cost?.costDeltaVsMainUSD ?? null;
68
73
  }
69
74
  // Fallback to last.usage when stageStats wasn't populated (legacy paths).
70
75
  if (inputTokens === 0 && outputTokens === 0 && last?.usage) {
@@ -123,7 +128,15 @@ export function emitTaskTerminalHandler(state) {
123
128
  outputTokens,
124
129
  cachedReadTokens,
125
130
  cachedNonReadTokens,
126
- costUSD: totalCostUSD,
131
+ // A11.2 — populate the full cost surface on the task_completed envelope.
132
+ // actualCostUSD is the new canonical field (sum of every stage's costUSD).
133
+ // costUSD and totalCostUSD are back-compat aliases — emit all three so
134
+ // existing callers and new callers both get the value they expect.
135
+ // costDeltaVsMainUSD: delta vs estimated main-tier cost (from CostBreakdown).
136
+ actualCostUSD,
137
+ costUSD: actualCostUSD,
138
+ totalCostUSD: actualCostUSD,
139
+ costDeltaVsMainUSD,
127
140
  taskMaxIdleMs: null,
128
141
  stallTriggered: false,
129
142
  stages,
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Provider, TaskSpec, MultiModelConfig, AgentType } from '../types.js';
2
2
  import type { EventEmitter } from '../events/event-emitter.js';
3
3
  import type { ActivityTracker, HeartbeatTickInfo } from '../bounded-execution/activity-tracker.js';
4
+ import type { WallClockGuard } from '../bounded-execution/wall-clock-guard.js';
4
5
  import type { CanonicalIdentity } from '../config/canonical-model-identity.js';
5
6
  import type { HttpServerLog } from '../events/http-server-log.js';
6
7
  import type { ProjectContext } from '../stores/project-context-registry.js';
@@ -43,6 +44,9 @@ export interface ExecutionContext {
43
44
  budgets: {
44
45
  maxCostUSD: number | undefined;
45
46
  };
47
+ /** Wall-clock budget guard. Throws GuardError once budgetMs since task start
48
+ * is exceeded. Stage entries + tool-call boundaries call checkOrThrow(). */
49
+ wallClockGuard: WallClockGuard;
46
50
  stall: {
47
51
  controller: AbortController;
48
52
  /** ms timestamp of the most recent runner event; updated by markRunnerEvent. */
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-context.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-context.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-driver.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3E,qBAAa,eAAe;IACd,OAAO,CAAC,IAAI;IAAa,OAAO,CAAC,QAAQ;gBAAjC,IAAI,EAAE,SAAS,EAAU,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAE7E,GAAG,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAkBjE"}
1
+ {"version":3,"file":"lifecycle-driver.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3E,qBAAa,eAAe;IACd,OAAO,CAAC,IAAI;IAAa,OAAO,CAAC,QAAQ;gBAAjC,IAAI,EAAE,SAAS,EAAU,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAE7E,GAAG,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAqBjE"}
@@ -8,13 +8,6 @@ export class LifecycleDriver {
8
8
  async run(initialState) {
9
9
  const state = initialState;
10
10
  for (const row of this.plan.rows) {
11
- // Rows marked runOnTerminal still evaluate their runCondition even
12
- // after a prior row set state.terminal=true. This is how settle_*_chain,
13
- // compose_response, register_terminal_block, emit_task_terminal,
14
- // persist_to_batch_registry, and flush_telemetry continue to fire on
15
- // hard-fail paths so chain-pass slots, response envelopes, and
16
- // telemetry stay authoritative. Non-runOnTerminal rows are skipped
17
- // (continue, not break) so later runOnTerminal rows still fire.
18
11
  if (state.terminal && !row.runOnTerminal)
19
12
  continue;
20
13
  if (!row.runCondition(state))
@@ -22,6 +15,18 @@ export class LifecycleDriver {
22
15
  const handler = this.handlers[row.handlerKey];
23
16
  if (!handler)
24
17
  throw new Error(`no handler registered for key '${row.handlerKey}'`);
18
+ const ctx = state.executionContext;
19
+ if (ctx && !row.runOnTerminal) {
20
+ try {
21
+ ctx.wallClockGuard.checkOrThrow();
22
+ }
23
+ catch (err) {
24
+ state.terminal = true;
25
+ state.errorCode = err.errorCode ?? 'guard_wall_clock';
26
+ state.error = err instanceof Error ? err.message : String(err);
27
+ continue;
28
+ }
29
+ }
25
30
  await handler(state);
26
31
  }
27
32
  return state;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,eAAe;IACN;IAAyB;IAA7C,YAAoB,IAAe,EAAU,QAAsC;QAA/D,SAAI,GAAJ,IAAI,CAAW;QAAU,aAAQ,GAAR,QAAQ,CAA8B;IAAG,CAAC;IAEvF,KAAK,CAAC,GAAG,CAAC,YAA4B;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,mEAAmE;YACnE,yEAAyE;YACzE,iEAAiE;YACjE,qEAAqE;YACrE,+DAA+D;YAC/D,mEAAmE;YACnE,gEAAgE;YAChE,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,SAAS;YACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,SAAS;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnF,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,eAAe;IACN;IAAyB;IAA7C,YAAoB,IAAe,EAAU,QAAsC;QAA/D,SAAI,GAAJ,IAAI,CAAW;QAAU,aAAQ,GAAR,QAAQ,CAA8B;IAAG,CAAC;IAEvF,KAAK,CAAC,GAAG,CAAC,YAA4B;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,SAAS;YACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,SAAS;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnF,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgD,CAAC;YACnE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBAAC,CAAC;gBAC1C,OAAO,GAAG,EAAE,CAAC;oBACX,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,KAAgC,CAAC,SAAS,GAAI,GAA8B,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAC7G,KAA4B,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvF,SAAS;gBACX,CAAC;YACH,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import type { CriterionEntry } from '../tools/criteria-types.js';
2
2
  import { type CachedPrefixTarget } from '../tools/parallel-criteria-prompt.js';
3
- export type ReadOnlyRouteName = 'audit' | 'review' | 'verify' | 'debug' | 'investigate';
3
+ export type ReadOnlyRouteName = 'audit' | 'audit_plan' | 'review' | 'verify' | 'debug' | 'investigate';
4
4
  export interface ReadOnlyRouteSpec {
5
5
  criteria: readonly CriterionEntry[];
6
6
  buildPrefix: (target: CachedPrefixTarget) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"parallel-criteria-routes.d.ts","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,sCAAsC,CAAC;AAiB9C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AA4HxF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,MAAM,CAAC;IACpD,WAAW,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAczB,CAAC;AAElD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAEzE"}
1
+ {"version":3,"file":"parallel-criteria-routes.d.ts","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,sCAAsC,CAAC;AAoB9C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AA+IvG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,MAAM,CAAC;IACpD,WAAW,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAczB,CAAC;AAElD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAEzE"}
@@ -1,5 +1,6 @@
1
1
  import { buildReadOnlyCachedPrefix, buildReadOnlyCriterionSuffix, } from '../tools/parallel-criteria-prompt.js';
2
2
  import { AUDIT_PURPOSE_ORIENTATION, EVIDENCE_RULE_AUDIT, SCOPE_RULE_AUDIT, ANNOTATOR_AWARENESS_AUDIT, AUDIT_CRITERIA, } from '../tools/audit/implementer-criteria.js';
3
+ import { PLAN_AUDIT_PURPOSE_ORIENTATION, EVIDENCE_RULE_PLAN_AUDIT, SCOPE_RULE_PLAN_AUDIT, ANNOTATOR_AWARENESS_PLAN_AUDIT, PLAN_AUDIT_CRITERIA, } from '../tools/audit/plan-audit-criteria.js';
3
4
  import { REVIEW_PURPOSE_ORIENTATION, EVIDENCE_RULE_REVIEW, SCOPE_RULE_REVIEW, ANNOTATOR_AWARENESS_REVIEW, REVIEW_CRITERIA, } from '../tools/review/implementer-criteria.js';
4
5
  import { VERIFY_PURPOSE_ORIENTATION, EVIDENCE_RULE_VERIFY, SCOPE_RULE_VERIFY, ANNOTATOR_AWARENESS_VERIFY, VERIFY_CRITERIA, } from '../tools/verify/implementer-criteria.js';
5
6
  import { DEBUG_PURPOSE_ORIENTATION, EVIDENCE_RULE_DEBUG, SCOPE_RULE_DEBUG, ANNOTATOR_AWARENESS_DEBUG, DEBUG_CRITERIA, } from '../tools/debug/implementer-criteria.js';
@@ -37,6 +38,18 @@ const ROUTE_SEMANTICS = {
37
38
  },
38
39
  mustEmitAtLeastOne: false,
39
40
  },
41
+ audit_plan: {
42
+ goalLine: 'Apply THIS verification perspective to every task in the plan above. Each finding is a plan-vs-codebase coherence issue grounded in real file:line evidence. Verify before flagging — use read_file / grep to inspect the source files the plan names.',
43
+ emptyOutcomeLine: 'If your perspective finds no plan-vs-codebase drift after grounding in the actual source files, respond with the literal text "No findings for this criterion." — that is the EXPECTED outcome on a clean plan. Do NOT pad with prose-quality observations (those belong in auditType=default, not here).',
44
+ findingMeaningParagraph: 'A finding is a CONCRETE PLAN-VS-CODEBASE DRIFT viewed through this perspective: the plan names a symbol / path / signature / import / test helper / verify command / cross-task dependency that the actual codebase does not match. Title = "<task ID>: <one-line drift>". Severity reflects whether the task can dispatch.',
45
+ severityMeanings: {
46
+ critical: 'plan would BLOCK dispatch — e.g. wrong method name (perspective 2), missing modify-target file (perspective 1), wrong signature (perspective 3), missing module export (perspective 4), out-of-order task dependency (perspective 7), wrong tooling (perspective 8). A literal worker freezes on this.',
47
+ high: 'load-bearing ambiguity — multiple matching symbols and the plan does not disambiguate, OR test harness missing in claimed shape, OR step depends on later step recoverably. Task may execute but produces an ambiguous artifact.',
48
+ medium: 'step ordering inferable but undeclared, cross-task dependency unstated, verify command vague but recoverable, missing parent dirs for create-targets. Fixable by reordering or adding a sentence; doesn\'t block dispatch.',
49
+ low: 'cosmetic — naming preference, missing metadata, minor cross-reference. Does not affect executability.',
50
+ },
51
+ mustEmitAtLeastOne: false,
52
+ },
40
53
  review: {
41
54
  goalLine: 'Find ALL issues of THIS specific kind in the diff / source above.',
42
55
  emptyOutcomeLine: 'If none exist, respond with the literal text "No findings for this criterion." — that is a fully valid outcome. Do NOT pad to avoid returning empty.',
@@ -94,6 +107,13 @@ const ROUTE_BLOCKS = {
94
107
  annotatorAwareness: ANNOTATOR_AWARENESS_AUDIT,
95
108
  criteria: AUDIT_CRITERIA,
96
109
  },
110
+ audit_plan: {
111
+ orientation: PLAN_AUDIT_PURPOSE_ORIENTATION,
112
+ evidenceRule: EVIDENCE_RULE_PLAN_AUDIT,
113
+ scopeRule: SCOPE_RULE_PLAN_AUDIT,
114
+ annotatorAwareness: ANNOTATOR_AWARENESS_PLAN_AUDIT,
115
+ criteria: PLAN_AUDIT_CRITERIA,
116
+ },
97
117
  review: {
98
118
  orientation: REVIEW_PURPOSE_ORIENTATION,
99
119
  evidenceRule: EVIDENCE_RULE_REVIEW,
@@ -128,7 +148,7 @@ const ROUTE_BLOCKS = {
128
148
  * Each entry returns the full builders so the orchestrator can fan out
129
149
  * without route-specific branching code.
130
150
  */
131
- export const READ_ONLY_ROUTES = Object.fromEntries(['audit', 'review', 'verify', 'debug', 'investigate'].map((route) => {
151
+ export const READ_ONLY_ROUTES = Object.fromEntries(['audit', 'audit_plan', 'review', 'verify', 'debug', 'investigate'].map((route) => {
132
152
  const semantics = ROUTE_SEMANTICS[route];
133
153
  const blocks = {
134
154
  ...ROUTE_BLOCKS[route],
@@ -1 +1 @@
1
- {"version":3,"file":"parallel-criteria-routes.js","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallel-criteria-routes.js","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import type { RunResult } from '../types.js';
2
2
  import type { BatchTimings, BatchAggregateCost } from './executor-output-types.js';
3
3
  export declare function computeTimings(wallClockMs: number, results: RunResult[]): BatchTimings;
4
+ /**
5
+ * Sum costUSD across entered stages of a single RunResult. Returns null
6
+ * when no entered stage carried a finite cost (mock-provider runs); used
7
+ * by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
8
+ */
9
+ export declare function sumStageCosts(stageStats: Record<string, {
10
+ entered?: boolean;
11
+ costUSD?: number | null;
12
+ } | undefined> | undefined): number | null;
4
13
  export declare function computeAggregateCost(results: RunResult[]): BatchAggregateCost;
5
14
  //# sourceMappingURL=shared-compute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAY7E"}
1
+ {"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAa/I;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CA0B7E"}
@@ -3,17 +3,49 @@ export function computeTimings(wallClockMs, results) {
3
3
  const estimatedParallelSavingsMs = Math.max(0, sumOfTaskMs - wallClockMs);
4
4
  return { wallClockMs, sumOfTaskMs, estimatedParallelSavingsMs };
5
5
  }
6
+ /**
7
+ * Sum costUSD across entered stages of a single RunResult. Returns null
8
+ * when no entered stage carried a finite cost (mock-provider runs); used
9
+ * by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
10
+ */
11
+ export function sumStageCosts(stageStats) {
12
+ if (!stageStats)
13
+ return null;
14
+ let total = 0;
15
+ let anyFinite = false;
16
+ for (const stage of Object.values(stageStats)) {
17
+ if (!stage?.entered)
18
+ continue;
19
+ const c = stage.costUSD;
20
+ if (typeof c === 'number' && Number.isFinite(c)) {
21
+ total += c;
22
+ anyFinite = true;
23
+ }
24
+ }
25
+ return anyFinite ? total : null;
26
+ }
6
27
  export function computeAggregateCost(results) {
7
28
  let totalActualCostUSD = 0;
8
29
  let totalCostDeltaVsMainUSD = 0;
30
+ let anyCostFinite = false;
9
31
  for (const r of results) {
10
- if (r.cost?.costUSD !== null && r.cost?.costUSD !== undefined) {
11
- totalActualCostUSD += r.cost.costUSD;
32
+ // Sum per-task via the shared helper. The top-level r.cost field is a
33
+ // stale implementer-only reading and must NOT be used for the public
34
+ // envelope's roll-up. (Bug observed 2026-05-10: r.cost was null in real
35
+ // audit envelopes while stageStats[*].costUSD carried ~$2.06 / ~$3.71
36
+ // per task.)
37
+ const taskSum = sumStageCosts(r.stageStats);
38
+ if (taskSum !== null) {
39
+ totalActualCostUSD += taskSum;
40
+ anyCostFinite = true;
12
41
  }
13
42
  if (r.cost?.costDeltaVsMainUSD !== null && r.cost?.costDeltaVsMainUSD !== undefined) {
14
43
  totalCostDeltaVsMainUSD += r.cost.costDeltaVsMainUSD;
15
44
  }
16
45
  }
17
- return { totalActualCostUSD, totalCostDeltaVsMainUSD };
46
+ return {
47
+ totalActualCostUSD: anyCostFinite ? totalActualCostUSD : 0,
48
+ totalCostDeltaVsMainUSD,
49
+ };
18
50
  }
19
51
  //# sourceMappingURL=shared-compute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9D,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACpF,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkG;IAC9H,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,aAAa;QACb,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,UAAoG,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,kBAAkB,IAAI,OAAO,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACpF,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1D,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CA0LhE"}
1
+ {"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAgBvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAkJhE"}
@@ -1,3 +1,17 @@
1
+ /**
2
+ * Helper for the `reviewPolicy === 'none'` commit path (pipeline-redesign §2.5).
3
+ * When reviewPolicy is 'none', stages 2–4 are skipped, so state.commitGatePercent
4
+ * is undefined when the commit gate runs. This helper returns 100 if files were
5
+ * written (so the gate trivially passes) or 0 otherwise. Same code path as the
6
+ * LLM-mediated case — just emits a deterministic value when annotation didn't run.
7
+ */
8
+ function deriveBypassCommitPercent(s) {
9
+ if (s.reviewPolicy !== 'none')
10
+ return 0;
11
+ const last = s.lastRunResult;
12
+ const writes = last?.filesWritten;
13
+ return Array.isArray(writes) && writes.length > 0 ? 100 : 0;
14
+ }
1
15
  export function buildStagePlan(category) {
2
16
  const isAP = category === 'artifact_producing';
3
17
  const isRO = category === 'read_only';
@@ -39,97 +53,63 @@ export function buildStagePlan(category) {
39
53
  && !s.terminal,
40
54
  isRework: false, handlerKey: 'check_files_written',
41
55
  },
42
- // Stage 4 — Spec chain (rows 4.1–4.5; artifact-producing + reviewPolicy='full' only)
43
- // 4.1: spec_review_round_1 fires when reviewPolicy='full'
44
- { rowId: '4.1', stageName: 'spec_review_round_1', schemaStage: 'spec_review',
45
- runCondition: (s) => isAP && s.reviewPolicy === 'full' && !s.terminal,
46
- isRework: false, handlerKey: 'spec_review_round_1' },
47
- // 4.2: rework_for_spec_round_1 fires when round_1 verdict=changes_required
48
- { rowId: '4.2', stageName: 'rework_for_spec_round_1', schemaStage: 'spec_rework',
49
- runCondition: (s) => isAP && s.specReviewRound1Verdict === 'changes_required' && !s.terminal,
50
- isRework: true, handlerKey: 'rework_for_spec_round_1' },
51
- // 4.3: spec_review_round_2 fires when round_1 verdict=changes_required (cascade)
52
- { rowId: '4.3', stageName: 'spec_review_round_2', schemaStage: 'spec_review',
53
- runCondition: (s) => isAP && s.specReviewRound1Verdict === 'changes_required' && !s.terminal,
54
- isRework: false, handlerKey: 'spec_review_round_2' },
55
- // 4.4: rework_for_spec_round_2 (rotates tier per C9) — fires when round_2 verdict=changes_required
56
- { rowId: '4.4', stageName: 'rework_for_spec_round_2', schemaStage: 'spec_rework',
57
- runCondition: (s) => isAP && s.specReviewRound2Verdict === 'changes_required' && !s.terminal,
58
- isRework: true, handlerKey: 'rework_for_spec_round_2' },
59
- // 4.5: spec_review_round_3 — final spec attempt
60
- { rowId: '4.5', stageName: 'spec_review_round_3', schemaStage: 'spec_review',
61
- runCondition: (s) => isAP && s.specReviewRound2Verdict === 'changes_required' && !s.terminal,
62
- isRework: false, handlerKey: 'spec_review_round_3' },
63
- // 4.5.x: settle_spec_chain — sets state.specChainPassed per spec § C10.
64
- // runOnTerminal: settle still fires after a hard-fail in the chain so
65
- // chain-pass slots get authoritative values for compose_response.
66
- { rowId: '4.5.x', stageName: 'settle_spec_chain',
67
- runCondition: (s) => isAP && s.reviewPolicy === 'full',
68
- isRework: false, handlerKey: 'settle_spec_chain', runOnTerminal: true },
69
- // Stage 4 — Quality chain (rows 4.6–4.10; artifact-producing OR read-only annotator path)
70
- // 4.6: quality_review_round_1 — fires when reviewPolicy in {full, quality_only} AND
71
- // (artifact_producing AND spec passed OR n/a) OR read_only (no spec chain to gate on).
72
- // For read-only tools this is the AnnotatorEngine pass; verdict will be 'annotated'.
73
- { rowId: '4.6', stageName: 'quality_review_round_1', schemaStage: 'quality_review',
74
- runCondition: (s) => (isAP || isRO)
75
- && (s.reviewPolicy === 'full' || s.reviewPolicy === 'quality_only')
76
- && (isRO || s.reviewPolicy !== 'full' || s.specChainPassed === true)
77
- && !s.terminal,
78
- isRework: false, handlerKey: 'quality_review_round_1' },
79
- // 4.7: rework_for_quality_round_1 — gated on changes_required only.
80
- // ReviewVerdictEnum still permits 'concerns' but the v4 reviewer prompts
81
- // never emit it (the binary contract is approved | changes_required); both
82
- // 'concerns' and 'approved' fall through. Annotator output 'annotated'
83
- // naturally fails this gate as well.
84
- { rowId: '4.7', stageName: 'rework_for_quality_round_1', schemaStage: 'quality_rework',
85
- runCondition: (s) => isAP && s.qualityReviewRound1Verdict === 'changes_required' && !s.terminal,
86
- isRework: true, handlerKey: 'rework_for_quality_round_1' },
87
- // 4.8: quality_review_round_2
88
- { rowId: '4.8', stageName: 'quality_review_round_2', schemaStage: 'quality_review',
89
- runCondition: (s) => isAP && s.qualityReviewRound1Verdict === 'changes_required' && !s.terminal,
90
- isRework: false, handlerKey: 'quality_review_round_2' },
91
- // 4.9: rework_for_quality_round_2 (rotates tier)
92
- { rowId: '4.9', stageName: 'rework_for_quality_round_2', schemaStage: 'quality_rework',
93
- runCondition: (s) => isAP && s.qualityReviewRound2Verdict === 'changes_required' && !s.terminal,
94
- isRework: true, handlerKey: 'rework_for_quality_round_2' },
95
- // 4.10: quality_review_round_3 — final quality attempt
96
- { rowId: '4.10', stageName: 'quality_review_round_3', schemaStage: 'quality_review',
97
- runCondition: (s) => isAP && s.qualityReviewRound2Verdict === 'changes_required' && !s.terminal,
98
- isRework: false, handlerKey: 'quality_review_round_3' },
99
- // 4.10.x: settle_quality_chain — mirrors quality_review_round_1's gate so we
100
- // only settle when at least one quality round was supposed to fire.
101
- // runOnTerminal: same rationale as settle_spec_chain.
102
- { rowId: '4.10.x', stageName: 'settle_quality_chain',
103
- runCondition: (s) => (isAP || isRO)
104
- && (s.reviewPolicy === 'full' || s.reviewPolicy === 'quality_only')
105
- && (isRO || s.reviewPolicy !== 'full' || s.specChainPassed === true),
106
- isRework: false, handlerKey: 'settle_quality_chain', runOnTerminal: true },
107
- // 4.11: review_diff — fires when reviewPolicy in {full, diff_only} AND, for 'full', prior chains passed
108
- { rowId: '4.11', stageName: 'review_diff', schemaStage: 'diff_review',
56
+ // ── Stage 4 — Lint-review + rework split (4.3.0+) ──────────────────────
57
+ // 4.1: review (parallel spec + quality, lint-only, readonly tools).
58
+ // Emits state.reviewVerdict + state.reviewFindings.
59
+ // 4.2: rework (complex tier, full tools, single pass). Skipped when
60
+ // reviewVerdict === 'approved'.
61
+ // 4.3 / 4.4: annotate_completion / annotate_criteria (unchanged).
62
+ { rowId: '4.1', stageName: 'review', schemaStage: 'review',
63
+ runCondition: (s) => isAP && s.reviewPolicy !== 'none' && !s.terminal,
64
+ isRework: false, handlerKey: 'review' },
65
+ { rowId: '4.2', stageName: 'rework', schemaStage: 'rework',
109
66
  runCondition: (s) => isAP
110
- && (s.reviewPolicy === 'full' || s.reviewPolicy === 'diff_only')
111
- && (s.reviewPolicy !== 'full' || (s.specChainPassed === true && s.qualityChainPassed === true))
67
+ && s.reviewPolicy !== 'none'
68
+ && s.reviewVerdict === 'changes_required'
112
69
  && !s.terminal,
113
- isRework: false, handlerKey: 'review_diff' },
114
- // Stage 5finalize (rows 5.1–5.5)
115
- // 5.1: run_verify_command fires for artifact-producing tools only when
116
- // reviews actually ran (reviewPolicy !== 'none'). The verify route's own
117
- // verify_work IS the verification, so /verify itself skips this row.
118
- { rowId: '5.1', stageName: 'run_verify_command', schemaStage: 'verifying',
119
- runCondition: (s) => s.toolCategory === 'artifact_producing'
120
- && s.route !== 'verify'
70
+ isRework: true, handlerKey: 'rework' },
71
+ // 4.3: annotate completion artifact-producing routes only. Standard
72
+ // tier with readonly tools. Runs verifyCommand deterministically first,
73
+ // then invokes annotator LLM. Sets state.completionAnnotation and
74
+ // state.commitGatePercent.
75
+ { rowId: '4.3', stageName: 'annotate_completion', schemaStage: 'annotating',
76
+ runCondition: (s) => isAP
121
77
  && s.reviewPolicy !== 'none'
122
78
  && !s.terminal,
123
- isRework: false, handlerKey: 'run_verify_command' },
124
- // 5.2: git_commitfires when autoCommit + filesChanged + !readOnlyTask AND
125
- // reviews actually ran (reviewPolicy !== 'none').
126
- { rowId: '5.2', stageName: 'git_commit', schemaStage: 'committing',
127
- runCondition: (s) => s.autoCommit === true
128
- && Array.isArray(s.filesChanged)
129
- && s.filesChanged.length > 0
130
- && !s.readOnlyTask
79
+ isRework: false, handlerKey: 'annotate_completion' },
80
+ // 4.4: annotate criteria read-only routes. Merges per-criterion
81
+ // workerOutputs (from dispatchParallelCriteria in run_initial_impl)
82
+ // via AnnotatorEngine.annotate. Surfaces "Annotating" as a distinct
83
+ // user-facing stage matching the artifact-producing Annotating stage.
84
+ { rowId: '4.4', stageName: 'annotate_criteria', schemaStage: 'annotating',
85
+ runCondition: (s) => isRO
131
86
  && s.reviewPolicy !== 'none'
132
87
  && !s.terminal,
88
+ isRework: false, handlerKey: 'annotate_criteria' },
89
+ // 5.2: git_commit — fires when autoCommit + worker wrote files +
90
+ // !readOnlyTask + !terminal AND commitGatePercent ≥ completionThreshold.
91
+ //
92
+ // 4.3.0 (pipeline redesign §2.5, §3.1): replaces the binary "reviews
93
+ // passed" gate with a threshold check. state.commitGatePercent is set by
94
+ // annotate_completion (row 4.3) for reviewPolicy in {full, quality_only,
95
+ // diff_only}. For reviewPolicy='none', stages 4.1/4.2/4.3 are skipped, so
96
+ // commitGatePercent is undefined; deriveBypassCommitPercent returns 100
97
+ // when files were written (else 0) — uniform code path, single threshold.
98
+ { rowId: '5.2', stageName: 'git_commit', schemaStage: 'committing',
99
+ runCondition: (s) => {
100
+ if (s.autoCommit !== true)
101
+ return false;
102
+ const last = s.lastRunResult;
103
+ const writes = last?.filesWritten;
104
+ if (!Array.isArray(writes) || writes.length === 0)
105
+ return false;
106
+ if (s.readOnlyTask)
107
+ return false;
108
+ if (s.terminal)
109
+ return false;
110
+ const percent = s.commitGatePercent ?? deriveBypassCommitPercent(s);
111
+ return percent >= (s.completionThreshold ?? 80);
112
+ },
133
113
  isRework: false, handlerKey: 'git_commit' },
134
114
  // 5.3.rcb: register_to_block_store — fires for register-context-block
135
115
  // route only, before compose_response. Sets state.blockRegistration