@zhixuan92/multi-model-agent-core 4.6.0 → 4.7.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 (315) hide show
  1. package/README.md +7 -8
  2. package/dist/bounded-execution/file-artifact-check.d.ts +4 -11
  3. package/dist/bounded-execution/file-artifact-check.d.ts.map +1 -1
  4. package/dist/bounded-execution/file-artifact-check.js +7 -22
  5. package/dist/bounded-execution/file-artifact-check.js.map +1 -1
  6. package/dist/bounded-execution/progress-watchdog.d.ts.map +1 -1
  7. package/dist/bounded-execution/progress-watchdog.js +60 -27
  8. package/dist/bounded-execution/progress-watchdog.js.map +1 -1
  9. package/dist/bounded-execution/stall-watchdog.d.ts.map +1 -1
  10. package/dist/bounded-execution/stall-watchdog.js +29 -12
  11. package/dist/bounded-execution/stall-watchdog.js.map +1 -1
  12. package/dist/bounded-execution/wall-clock-guard.d.ts +4 -0
  13. package/dist/bounded-execution/wall-clock-guard.d.ts.map +1 -1
  14. package/dist/bounded-execution/wall-clock-guard.js +1 -1
  15. package/dist/bounded-execution/wall-clock-guard.js.map +1 -1
  16. package/dist/config/canonical-model-identity.d.ts.map +1 -1
  17. package/dist/config/canonical-model-identity.js.map +1 -1
  18. package/dist/config/config-resolver.d.ts +1 -41
  19. package/dist/config/config-resolver.d.ts.map +1 -1
  20. package/dist/config/config-resolver.js +1 -43
  21. package/dist/config/config-resolver.js.map +1 -1
  22. package/dist/config/load.d.ts +0 -2
  23. package/dist/config/load.d.ts.map +1 -1
  24. package/dist/config/load.js +0 -4
  25. package/dist/config/load.js.map +1 -1
  26. package/dist/config/model-profile-registry.d.ts.map +1 -1
  27. package/dist/config/model-profile-registry.js +13 -7
  28. package/dist/config/model-profile-registry.js.map +1 -1
  29. package/dist/config/schema.d.ts +1 -19
  30. package/dist/config/schema.d.ts.map +1 -1
  31. package/dist/config/schema.js +12 -38
  32. package/dist/config/schema.js.map +1 -1
  33. package/dist/error-codes.d.ts +0 -1
  34. package/dist/error-codes.d.ts.map +1 -1
  35. package/dist/error-codes.js +0 -1
  36. package/dist/error-codes.js.map +1 -1
  37. package/dist/events/cloud-events.d.ts +0 -1
  38. package/dist/events/cloud-events.d.ts.map +1 -1
  39. package/dist/events/cloud-events.js +1 -1
  40. package/dist/events/cloud-events.js.map +1 -1
  41. package/dist/events/event-builder.js +1 -2
  42. package/dist/events/event-builder.js.map +1 -1
  43. package/dist/events/event-emitter.d.ts +2 -1
  44. package/dist/events/event-emitter.d.ts.map +1 -1
  45. package/dist/events/event-emitter.js +6 -1
  46. package/dist/events/event-emitter.js.map +1 -1
  47. package/dist/events/observability-events.d.ts +0 -26
  48. package/dist/events/observability-events.d.ts.map +1 -1
  49. package/dist/events/observability-events.js +1 -11
  50. package/dist/events/observability-events.js.map +1 -1
  51. package/dist/events/telemetry-types.d.ts +0 -7
  52. package/dist/events/telemetry-types.d.ts.map +1 -1
  53. package/dist/events/telemetry-types.js +1 -1
  54. package/dist/events/telemetry-types.js.map +1 -1
  55. package/dist/index.d.ts +4 -5
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +3 -3
  58. package/dist/index.js.map +1 -1
  59. package/dist/intake/resolve.d.ts.map +1 -1
  60. package/dist/intake/resolve.js +0 -1
  61. package/dist/intake/resolve.js.map +1 -1
  62. package/dist/lifecycle/handlers/{annotator.d.ts → annotate-stage.d.ts} +1 -1
  63. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -0
  64. package/dist/lifecycle/handlers/{annotator.js → annotate-stage.js} +13 -1
  65. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -0
  66. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  67. package/dist/lifecycle/handlers/git-commit-handler.js +15 -0
  68. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  69. package/dist/lifecycle/handlers/{task-executor.d.ts → implement-stage.d.ts} +1 -1
  70. package/dist/lifecycle/handlers/implement-stage.d.ts.map +1 -0
  71. package/dist/lifecycle/handlers/{task-executor.js → implement-stage.js} +31 -2
  72. package/dist/lifecycle/handlers/implement-stage.js.map +1 -0
  73. package/dist/lifecycle/handlers/{review-handler.d.ts → review-stage.d.ts} +1 -1
  74. package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -0
  75. package/dist/lifecycle/handlers/{review-handler.js → review-stage.js} +18 -1
  76. package/dist/lifecycle/handlers/review-stage.js.map +1 -0
  77. package/dist/lifecycle/handlers/{rework-handler.d.ts → rework-stage.d.ts} +1 -1
  78. package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -0
  79. package/dist/lifecycle/handlers/{rework-handler.js → rework-stage.js} +17 -1
  80. package/dist/lifecycle/handlers/rework-stage.js.map +1 -0
  81. package/dist/lifecycle/lifecycle-context.d.ts +10 -4
  82. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  83. package/dist/lifecycle/lifecycle-dispatcher.d.ts +1 -1
  84. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  85. package/dist/lifecycle/lifecycle-dispatcher.js +1 -1
  86. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  87. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  88. package/dist/lifecycle/lifecycle-driver.js +22 -2
  89. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  90. package/dist/lifecycle/normalize-output-targets.d.ts +2 -0
  91. package/dist/lifecycle/normalize-output-targets.d.ts.map +1 -0
  92. package/dist/lifecycle/normalize-output-targets.js +14 -0
  93. package/dist/lifecycle/normalize-output-targets.js.map +1 -0
  94. package/dist/lifecycle/perform-implementation.d.ts.map +1 -1
  95. package/dist/lifecycle/perform-implementation.js +63 -26
  96. package/dist/lifecycle/perform-implementation.js.map +1 -1
  97. package/dist/lifecycle/rework-budget.d.ts +3 -0
  98. package/dist/lifecycle/rework-budget.d.ts.map +1 -0
  99. package/dist/lifecycle/rework-budget.js +9 -0
  100. package/dist/lifecycle/rework-budget.js.map +1 -0
  101. package/dist/lifecycle/stage-io.d.ts +3 -2
  102. package/dist/lifecycle/stage-io.d.ts.map +1 -1
  103. package/dist/lifecycle/stage-io.js.map +1 -1
  104. package/dist/lifecycle/stage-plan-builder.js +4 -4
  105. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  106. package/dist/lifecycle/stage-plan-types.d.ts +1 -4
  107. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  108. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  109. package/dist/lifecycle/task-completion-summary.js +0 -1
  110. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  111. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  112. package/dist/lifecycle/task-executor.js +2 -1
  113. package/dist/lifecycle/task-executor.js.map +1 -1
  114. package/dist/lifecycle/task-runner.d.ts +5 -1
  115. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  116. package/dist/lifecycle/task-runner.js +92 -46
  117. package/dist/lifecycle/task-runner.js.map +1 -1
  118. package/dist/providers/agent-resolver.d.ts.map +1 -0
  119. package/dist/{escalation → providers}/agent-resolver.js +1 -1
  120. package/dist/providers/agent-resolver.js.map +1 -0
  121. package/dist/providers/assemble-run-result.js +0 -2
  122. package/dist/providers/assemble-run-result.js.map +1 -1
  123. package/dist/providers/claude-session.d.ts +12 -0
  124. package/dist/providers/claude-session.d.ts.map +1 -1
  125. package/dist/providers/claude-session.js +38 -1
  126. package/dist/providers/claude-session.js.map +1 -1
  127. package/dist/providers/codex-cli-session.d.ts +16 -1
  128. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  129. package/dist/providers/codex-cli-session.js +75 -6
  130. package/dist/providers/codex-cli-session.js.map +1 -1
  131. package/dist/providers/normalize-claude.js +1 -1
  132. package/dist/providers/normalize-claude.js.map +1 -1
  133. package/dist/providers/provider-factory.d.ts +8 -0
  134. package/dist/providers/provider-factory.d.ts.map +1 -1
  135. package/dist/providers/provider-factory.js +64 -3
  136. package/dist/providers/provider-factory.js.map +1 -1
  137. package/dist/providers/run-annotator-turn.d.ts.map +1 -1
  138. package/dist/providers/run-annotator-turn.js +2 -1
  139. package/dist/providers/run-annotator-turn.js.map +1 -1
  140. package/dist/providers/run-worker-turn.d.ts +1 -1
  141. package/dist/providers/run-worker-turn.d.ts.map +1 -1
  142. package/dist/providers/run-worker-turn.js +0 -1
  143. package/dist/providers/run-worker-turn.js.map +1 -1
  144. package/dist/providers/runner-types.d.ts +5 -6
  145. package/dist/providers/runner-types.d.ts.map +1 -1
  146. package/dist/providers/stall-detector.d.ts +1 -1
  147. package/dist/providers/stall-detector.d.ts.map +1 -1
  148. package/dist/providers/stall-detector.js +1 -1
  149. package/dist/providers/stall-detector.js.map +1 -1
  150. package/dist/reporting/derive-investigate-status.d.ts +1 -1
  151. package/dist/reporting/derive-investigate-status.d.ts.map +1 -1
  152. package/dist/reporting/headline-templates/investigate.d.ts +1 -1
  153. package/dist/reporting/headline-templates/investigate.d.ts.map +1 -1
  154. package/dist/reporting/headline-templates/research.d.ts.map +1 -1
  155. package/dist/reporting/headline-templates/research.js +0 -1
  156. package/dist/reporting/headline-templates/research.js.map +1 -1
  157. package/dist/reporting/terminal-status-deriver.d.ts +1 -1
  158. package/dist/reporting/terminal-status-deriver.d.ts.map +1 -1
  159. package/dist/reporting/terminal-status-deriver.js +1 -4
  160. package/dist/reporting/terminal-status-deriver.js.map +1 -1
  161. package/dist/review/run-reviewer.d.ts.map +1 -1
  162. package/dist/review/run-reviewer.js +4 -3
  163. package/dist/review/run-reviewer.js.map +1 -1
  164. package/dist/stores/batch-registry.d.ts +15 -1
  165. package/dist/stores/batch-registry.d.ts.map +1 -1
  166. package/dist/stores/batch-registry.js +27 -0
  167. package/dist/stores/batch-registry.js.map +1 -1
  168. package/dist/tool-surface/tool-surface-registry.d.ts +1 -1
  169. package/dist/tool-surface/tool-surface-registry.d.ts.map +1 -1
  170. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  171. package/dist/tools/audit/tool-config.js +0 -1
  172. package/dist/tools/audit/tool-config.js.map +1 -1
  173. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  174. package/dist/tools/debug/tool-config.js +0 -1
  175. package/dist/tools/debug/tool-config.js.map +1 -1
  176. package/dist/tools/delegate/schema.d.ts +1 -1
  177. package/dist/tools/delegate/schema.d.ts.map +1 -1
  178. package/dist/tools/delegate/schema.js +2 -1
  179. package/dist/tools/delegate/schema.js.map +1 -1
  180. package/dist/tools/delegate/tool-config.d.ts +0 -1
  181. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  182. package/dist/tools/delegate/tool-config.js +0 -2
  183. package/dist/tools/delegate/tool-config.js.map +1 -1
  184. package/dist/tools/execute-plan/schema.d.ts +1 -1
  185. package/dist/tools/execute-plan/schema.d.ts.map +1 -1
  186. package/dist/tools/execute-plan/schema.js +2 -2
  187. package/dist/tools/execute-plan/schema.js.map +1 -1
  188. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  189. package/dist/tools/execute-plan/tool-config.js +0 -1
  190. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  191. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  192. package/dist/tools/investigate/tool-config.js +0 -1
  193. package/dist/tools/investigate/tool-config.js.map +1 -1
  194. package/dist/tools/register-context-block/tool-config.d.ts.map +1 -1
  195. package/dist/tools/register-context-block/tool-config.js +0 -1
  196. package/dist/tools/register-context-block/tool-config.js.map +1 -1
  197. package/dist/tools/research/tool-config.d.ts.map +1 -1
  198. package/dist/tools/research/tool-config.js +0 -1
  199. package/dist/tools/research/tool-config.js.map +1 -1
  200. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  201. package/dist/tools/retry/tool-config.js +0 -1
  202. package/dist/tools/retry/tool-config.js.map +1 -1
  203. package/dist/tools/review/tool-config.d.ts.map +1 -1
  204. package/dist/tools/review/tool-config.js +0 -1
  205. package/dist/tools/review/tool-config.js.map +1 -1
  206. package/dist/types/config.d.ts +0 -1
  207. package/dist/types/config.d.ts.map +1 -1
  208. package/dist/types/enums.d.ts +0 -3
  209. package/dist/types/enums.d.ts.map +1 -1
  210. package/dist/types/enums.js +3 -3
  211. package/dist/types/enums.js.map +1 -1
  212. package/dist/types/run-result.d.ts +14 -1
  213. package/dist/types/run-result.d.ts.map +1 -1
  214. package/dist/types/task-spec.d.ts +1 -1
  215. package/dist/types/task-spec.d.ts.map +1 -1
  216. package/package.json +1 -1
  217. package/dist/bounded-execution/cost-meter.d.ts +0 -20
  218. package/dist/bounded-execution/cost-meter.d.ts.map +0 -1
  219. package/dist/bounded-execution/cost-meter.js +0 -21
  220. package/dist/bounded-execution/cost-meter.js.map +0 -1
  221. package/dist/bounded-execution/error-classifier.d.ts +0 -11
  222. package/dist/bounded-execution/error-classifier.d.ts.map +0 -1
  223. package/dist/bounded-execution/error-classifier.js +0 -23
  224. package/dist/bounded-execution/error-classifier.js.map +0 -1
  225. package/dist/bounded-execution/idle-guard.d.ts +0 -8
  226. package/dist/bounded-execution/idle-guard.d.ts.map +0 -1
  227. package/dist/bounded-execution/idle-guard.js +0 -18
  228. package/dist/bounded-execution/idle-guard.js.map +0 -1
  229. package/dist/bounded-execution/index.d.ts +0 -10
  230. package/dist/bounded-execution/index.d.ts.map +0 -1
  231. package/dist/bounded-execution/index.js +0 -11
  232. package/dist/bounded-execution/index.js.map +0 -1
  233. package/dist/bounded-execution/safety-max-turns.d.ts +0 -17
  234. package/dist/bounded-execution/safety-max-turns.d.ts.map +0 -1
  235. package/dist/bounded-execution/safety-max-turns.js +0 -17
  236. package/dist/bounded-execution/safety-max-turns.js.map +0 -1
  237. package/dist/cleanup/batch-retention-sweeper.d.ts +0 -7
  238. package/dist/cleanup/batch-retention-sweeper.d.ts.map +0 -1
  239. package/dist/cleanup/batch-retention-sweeper.js +0 -10
  240. package/dist/cleanup/batch-retention-sweeper.js.map +0 -1
  241. package/dist/cleanup/context-block-gc-sweeper.d.ts +0 -8
  242. package/dist/cleanup/context-block-gc-sweeper.d.ts.map +0 -1
  243. package/dist/cleanup/context-block-gc-sweeper.js +0 -12
  244. package/dist/cleanup/context-block-gc-sweeper.js.map +0 -1
  245. package/dist/cleanup/index.d.ts +0 -5
  246. package/dist/cleanup/index.d.ts.map +0 -1
  247. package/dist/cleanup/index.js +0 -6
  248. package/dist/cleanup/index.js.map +0 -1
  249. package/dist/cleanup/project-idle-cleanup.d.ts +0 -7
  250. package/dist/cleanup/project-idle-cleanup.d.ts.map +0 -1
  251. package/dist/cleanup/project-idle-cleanup.js +0 -15
  252. package/dist/cleanup/project-idle-cleanup.js.map +0 -1
  253. package/dist/cleanup/shutdown-coordinator.d.ts +0 -7
  254. package/dist/cleanup/shutdown-coordinator.d.ts.map +0 -1
  255. package/dist/cleanup/shutdown-coordinator.js +0 -13
  256. package/dist/cleanup/shutdown-coordinator.js.map +0 -1
  257. package/dist/config/index.d.ts +0 -8
  258. package/dist/config/index.d.ts.map +0 -1
  259. package/dist/config/index.js +0 -9
  260. package/dist/config/index.js.map +0 -1
  261. package/dist/config/pricing-table.d.ts +0 -16
  262. package/dist/config/pricing-table.d.ts.map +0 -1
  263. package/dist/config/pricing-table.js +0 -51
  264. package/dist/config/pricing-table.js.map +0 -1
  265. package/dist/escalation/agent-resolver.d.ts.map +0 -1
  266. package/dist/escalation/agent-resolver.js.map +0 -1
  267. package/dist/escalation/delegate-with-escalation.d.ts +0 -52
  268. package/dist/escalation/delegate-with-escalation.d.ts.map +0 -1
  269. package/dist/escalation/delegate-with-escalation.js +0 -201
  270. package/dist/escalation/delegate-with-escalation.js.map +0 -1
  271. package/dist/escalation/escalation-policy.d.ts +0 -18
  272. package/dist/escalation/escalation-policy.d.ts.map +0 -1
  273. package/dist/escalation/escalation-policy.js +0 -33
  274. package/dist/escalation/escalation-policy.js.map +0 -1
  275. package/dist/escalation/fallback-helpers.d.ts +0 -22
  276. package/dist/escalation/fallback-helpers.d.ts.map +0 -1
  277. package/dist/escalation/fallback-helpers.js +0 -47
  278. package/dist/escalation/fallback-helpers.js.map +0 -1
  279. package/dist/escalation/fallback-types.d.ts +0 -60
  280. package/dist/escalation/fallback-types.d.ts.map +0 -1
  281. package/dist/escalation/fallback-types.js +0 -11
  282. package/dist/escalation/fallback-types.js.map +0 -1
  283. package/dist/escalation/fallback.d.ts +0 -5
  284. package/dist/escalation/fallback.d.ts.map +0 -1
  285. package/dist/escalation/fallback.js +0 -387
  286. package/dist/escalation/fallback.js.map +0 -1
  287. package/dist/escalation/index.d.ts +0 -3
  288. package/dist/escalation/index.d.ts.map +0 -1
  289. package/dist/escalation/index.js +0 -4
  290. package/dist/escalation/index.js.map +0 -1
  291. package/dist/escalation/policy.d.ts +0 -37
  292. package/dist/escalation/policy.d.ts.map +0 -1
  293. package/dist/escalation/policy.js +0 -67
  294. package/dist/escalation/policy.js.map +0 -1
  295. package/dist/escalation/types.d.ts +0 -15
  296. package/dist/escalation/types.d.ts.map +0 -1
  297. package/dist/escalation/types.js +0 -2
  298. package/dist/escalation/types.js.map +0 -1
  299. package/dist/events/running-headline-sink.d.ts +0 -27
  300. package/dist/events/running-headline-sink.d.ts.map +0 -1
  301. package/dist/events/running-headline-sink.js +0 -156
  302. package/dist/events/running-headline-sink.js.map +0 -1
  303. package/dist/lifecycle/handlers/annotator.d.ts.map +0 -1
  304. package/dist/lifecycle/handlers/annotator.js.map +0 -1
  305. package/dist/lifecycle/handlers/review-handler.d.ts.map +0 -1
  306. package/dist/lifecycle/handlers/review-handler.js.map +0 -1
  307. package/dist/lifecycle/handlers/rework-handler.d.ts.map +0 -1
  308. package/dist/lifecycle/handlers/rework-handler.js.map +0 -1
  309. package/dist/lifecycle/handlers/task-executor.d.ts.map +0 -1
  310. package/dist/lifecycle/handlers/task-executor.js.map +0 -1
  311. package/dist/lifecycle/metadata-repair.d.ts +0 -15
  312. package/dist/lifecycle/metadata-repair.d.ts.map +0 -1
  313. package/dist/lifecycle/metadata-repair.js +0 -33
  314. package/dist/lifecycle/metadata-repair.js.map +0 -1
  315. /package/dist/{escalation → providers}/agent-resolver.d.ts +0 -0
@@ -4,6 +4,7 @@
4
4
  // containing the worker's structured output plus prose-extracted findings.
5
5
  import { parseWorkerOutput } from '../worker-output-contract.js';
6
6
  import { performImplementation } from '../perform-implementation.js';
7
+ import { checkOutputTargets } from '../../bounded-execution/file-artifact-check.js';
7
8
  import { spawnSync } from 'node:child_process';
8
9
  import { join } from 'node:path';
9
10
  const READ_ROUTES = ['audit', 'review', 'debug', 'investigate', 'explore'];
@@ -117,11 +118,39 @@ export async function implementHandler(state) {
117
118
  // Transform lastRunResult into ImplementPayload for the stage gate.
118
119
  // Note: parseWorkerOutput extracts filesChanged from the structured output JSON.
119
120
  const parsed = parseWorkerOutput(result.output ?? '');
121
+ const findings = [...(result.findings ?? [])];
122
+ const outputTargets = ctx.outputTargets ?? [];
123
+ if (outputTargets.length > 0) {
124
+ let nextId = findings.length + 1;
125
+ try {
126
+ const missing = checkOutputTargets(outputTargets);
127
+ if (missing.length > 0) {
128
+ findings.push({
129
+ id: `F${nextId++}`,
130
+ severity: 'high',
131
+ category: 'missing_output_targets',
132
+ claim: `Task declared ${missing.length} output target(s) that were not produced`,
133
+ evidence: `Missing paths: ${missing.join(', ')}`,
134
+ source: 'implementer',
135
+ });
136
+ }
137
+ }
138
+ catch (e) {
139
+ findings.push({
140
+ id: `F${nextId++}`,
141
+ severity: 'medium',
142
+ category: 'output_targets_check_failed',
143
+ claim: 'Output-target existence check raised an error',
144
+ evidence: e instanceof Error ? e.message : String(e),
145
+ source: 'implementer',
146
+ });
147
+ }
148
+ }
120
149
  const payload = {
121
150
  workerSelfAssessment: result.workerStatus ?? 'failed',
122
151
  summary: parsed.summary ?? result.summary ?? '',
123
152
  filesChanged: parsed.filesChanged ?? result.filesWritten ?? result.filesChanged ?? [],
124
- findings: result.findings ?? [],
153
+ findings,
125
154
  citations: (result.citations ?? parsed.citations ?? []),
126
155
  criteriaSucceeded: result.criteriaSucceeded ?? parsed.criteriaSucceeded ?? [],
127
156
  criteriaErrors: result.criteriaErrors ?? parsed.criteriaErrors ?? [],
@@ -174,4 +203,4 @@ export class TaskExecutor {
174
203
  await implementHandler(state);
175
204
  };
176
205
  }
177
- //# sourceMappingURL=task-executor.js.map
206
+ //# sourceMappingURL=implement-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement-stage.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/implement-stage.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,oEAAoE;AACpE,4EAA4E;AAC5E,2EAA2E;AAI3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,WAAW,GAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AAExF,MAAM,UAAU,mBAAmB,CAAC,KAAqB;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAyB,CAAC;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,KAAqC,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEjF,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7G,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAiD,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrF,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjF,KAAiD,CAAC,qBAAqB,GAAG,IAAI,GAAG,CAChF,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,yEAAyE;AACzE,mEAAmE;AACnE,SAAS,sBAAsB,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3E,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QAC5E,MAAM,QAAQ,GACZ,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,CAAC,CAAE,MAA8B;YACjC,CAAC,CAAC,QAAQ,CAAC;QACf,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAC5E,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAEnF,MAAM,CAAC,GAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QACnF,IAAI,QAAQ;YAAE,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpC,IAAI,UAAU;YAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAuB;IACtD,OAAO;QACL,oBAAoB,EAAE,IAAI;QAC1B,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;QACb,iBAAiB,EAAE,EAAE;QACrB,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CACV,EAAU,EACV,IAA8C,EAC9C,IAAY;IAEZ,OAAO;QACL,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;QAC9B,UAAU,EAAE,IAA8D;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAqB;IAErB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtB,IAAI,CAAC;QACH,4EAA4E;QAC5E,0EAA0E;QAC1E,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,kDAAkD;gBAC3D,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC;gBAC1C,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,iBAAiB,CAAC;aAC1C,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,oCAAoC;QACpC,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAoB,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,wDAAwD;gBACjE,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC;gBAC1C,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,iBAAiB,CAAC;aAC1C,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,iFAAiF;QACjF,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,aAAa,GAAI,GAAoC,CAAC,aAAa,IAAI,EAAE,CAAC;QAChF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,CAAC,IAAI,CAAC;wBACZ,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE;wBAClB,QAAQ,EAAE,MAAM;wBAChB,QAAQ,EAAE,wBAAwB;wBAClC,KAAK,EAAE,iBAAiB,OAAO,CAAC,MAAM,0CAA0C;wBAChF,QAAQ,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAChD,MAAM,EAAE,aAAa;qBACtB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC;oBACZ,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE;oBAClB,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,6BAA6B;oBACvC,KAAK,EAAE,+CAA+C;oBACtD,QAAQ,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpD,MAAM,EAAE,aAAa;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAqB;YAChC,oBAAoB,EAAE,MAAM,CAAC,YAAY,IAAI,QAAQ;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE;YAC/C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE;YACrF,QAAQ;YACR,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAe;YACrE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE;YAC7E,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE;YACpE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE;SAC5D,CAAC;QAEF,qEAAqE;QACrE,mEAAmE;QACnE,mEAAmE;QACnE,kCAAkC;QAClC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,qBAAqB,MAAM,CAAC,MAAM,EAAE;gBAC7C,OAAO;gBACP,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;aACrC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,OAAO;YACP,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,sBAAsB,GAAG,EAAE;YACpC,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC;YAC1C,SAAS,EAAE;gBACT,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;gBAC3B,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,iBAAiB;aAC9B;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AACD,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,0EAA0E;AAC1E,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAG,CAAC;IAC1C,OAAO,GAAG,KAAK,EAAE,KAAqB,EAAiB,EAAE;QACvD,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC;CACH"}
@@ -1,4 +1,4 @@
1
1
  import type { LifecycleState } from '../stage-plan-types.js';
2
2
  import type { StageGate, ReviewPayload } from '../stage-io.js';
3
3
  export declare function reviewHandler(state: LifecycleState): Promise<StageGate<ReviewPayload>>;
4
- //# sourceMappingURL=review-handler.d.ts.map
4
+ //# sourceMappingURL=review-stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-stage.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/review-stage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAW,MAAM,gBAAgB,CAAC;AAaxE,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CA0J5F"}
@@ -3,8 +3,25 @@ import { qualityReviewPrompt } from '../../review/templates/quality-review.js';
3
3
  import { parseReviewReport } from '../../review/parse-review-report.js';
4
4
  import { runReviewerTurn, invertedReviewerTier } from '../../review/run-reviewer.js';
5
5
  import { mergeStageStats } from '../merge-stage-stats.js';
6
+ function safeTracker(fn, ctx) {
7
+ try {
8
+ fn();
9
+ }
10
+ catch (e) {
11
+ ctx.logger?.error('heartbeat_call_failed', e);
12
+ }
13
+ }
6
14
  export async function reviewHandler(state) {
7
15
  const t0 = Date.now();
16
+ const reviewCtx = state.executionContext;
17
+ if (reviewCtx) {
18
+ safeTracker(() => reviewCtx.heartbeat?.transition({
19
+ stage: 'review',
20
+ stageIndex: (state.stageIndex ?? 1),
21
+ reviewRound: (state.reviewRound ?? 1),
22
+ attemptCap: (state.attemptCap ?? 1),
23
+ }), reviewCtx);
24
+ }
8
25
  const policy = state.reviewPolicy; // 'full' | 'quality_only' | 'diff_only' | 'none'
9
26
  // v5 review-policy mapping (per spec §14 assumption 2 — adapted to v4 enum):
10
27
  // 'full' → run BOTH spec + quality
@@ -164,4 +181,4 @@ async function runReviewerWithRetries(state, prompt, name, implementerTier) {
164
181
  turnsUsed: turn.turnsUsed,
165
182
  };
166
183
  }
167
- //# sourceMappingURL=review-handler.js.map
184
+ //# sourceMappingURL=review-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-stage.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/review-stage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAS,uCAAuC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAQ,qCAAqC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAU,yBAAyB,CAAC;AAI9D,SAAS,WAAW,CAAC,EAAc,EAAE,GAAiE;IACpG,IAAI,CAAC;QAAC,EAAE,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAqB;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgD,CAAC;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;YAChD,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,CAAE,KAAiC,CAAC,UAAU,IAAI,CAAC,CAAC;YAChE,WAAW,EAAE,CAAE,KAAkC,CAAC,WAAW,IAAI,CAAC,CAAC;YACnE,UAAU,EAAE,CAAE,KAAiC,CAAC,UAAU,IAAI,CAAC,CAAC;SACjE,CAAC,EAAE,SAAS,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,iDAAiD;IACpF,6EAA6E;IAC7E,6CAA6C;IAC7C,sCAAsC;IACtC,yEAAyE;IACzE,6CAA6C;IAC7C,MAAM,OAAO,GAAM,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,WAAW,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,cAAc,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,IAAI,EAAE,CAAkD,CAAC;IAC1G,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAuB,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,QAAQ;QACf,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAW;QAC9C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;KACtC,CAAC;IAcF,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,2EAA2E;IAC3E,yEAAyE;IACzE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,eAAe,GAClB,KAAK,CAAC,gBAA6D,EAAE,YAAY;WAC/E,CAAE,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,OAA4C,EAAE,SAAS,CAAC;WACtF,UAAU,CAAC;IAChB,MAAM,oBAAoB,GAAc,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE9E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAClG,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE;YACzD,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY;YACxD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;YAChF,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACxG,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE;YAC5D,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY;YACxD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;YAChF,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;KAC1D,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,OAAwC,CAAC;IAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,kBAAkB,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB;YACvE,KAAK,EAAE,wFAAwF;YAC/F,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YACnE,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,kBAAkB,CAAC;IAC/B,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,sCAAsC;QACtC,OAAO,GAAG,kBAAkB,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB;gBACvE,KAAK,EAAE,YAAY,CAAC,CAAC,QAAQ,iDAAiD;gBAC9E,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE;gBACpE,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnE,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAE5E,sFAAsF;IACtF,2EAA2E;IAC3E,+EAA+E;IAC/E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE;YAC/B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,WAAW;YACzB,gBAAgB,EAAE,eAAe;YACjC,mBAAmB,EAAE,kBAAkB;YACvC,SAAS,EAAE,UAAU;YACrB,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC9C,cAAc,EAAE,CAAC;YACjB,iBAAiB,EAAE,CAAC;SACrB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE;QACxF,SAAS,EAAE;YACT,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;YAC9C,OAAO,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;YACzC,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,UAAU,EAAE,QAAQ;SACrB;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAqB,EACrB,MAAc,EACd,IAAwB,EACxB,eAA0B;IAY1B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QACjC,MAAM;QACN,GAAG,EAAE,KAAK,CAAC,gBAAuB;QAClC,QAAQ,EAAE,IAAI;QACd,eAAe;KAChB,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,2EAA2E;QAC3E,gFAAgF;QAChF,OAAO;YACL,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,EAAS;YAC7E,OAAO,EAAE,IAAI;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,EAAE,CAAC;YACtB,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { LifecycleState } from '../stage-plan-types.js';
2
2
  import type { StageGate, ReworkPayload } from '../stage-io.js';
3
3
  export declare function reworkHandler(state: LifecycleState): Promise<StageGate<ReworkPayload | null>>;
4
- //# sourceMappingURL=rework-handler.d.ts.map
4
+ //# sourceMappingURL=rework-stage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rework-stage.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/rework-stage.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA+B/D,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAoLnG"}
@@ -16,6 +16,14 @@ import { assembleRunResult } from '../../providers/assemble-run-result.js';
16
16
  import { parseWorkerOutput } from '../worker-output-contract.js';
17
17
  import { HUMAN_LABEL } from '../stage-labels.js';
18
18
  import { startProgressWatchdog, recordPostHocSignals } from '../../bounded-execution/progress-watchdog.js';
19
+ function safeTracker(fn, ctx) {
20
+ try {
21
+ fn();
22
+ }
23
+ catch (e) {
24
+ ctx.logger?.error('heartbeat_call_failed', e);
25
+ }
26
+ }
19
27
  function reworkSkip(comment, t0) {
20
28
  return {
21
29
  outcome: 'skip',
@@ -47,6 +55,14 @@ export async function reworkHandler(state) {
47
55
  const last = state.lastRunResult;
48
56
  if (!ctx || !task || !last)
49
57
  return reworkSkip('rework skipped: missing context', t0);
58
+ const reworkRound = (state.reviewRound ?? 1);
59
+ const reworkCap = (state.attemptCap ?? 1);
60
+ safeTracker(() => ctx.heartbeat?.transition({
61
+ stage: 'rework',
62
+ stageIndex: (state.stageIndex ?? 1),
63
+ reviewRound: reworkRound,
64
+ attemptCap: reworkCap,
65
+ }), ctx);
50
66
  const findings = state.reviewFindings ?? [];
51
67
  if (findings.length === 0) {
52
68
  state.reworkApplied = false;
@@ -191,4 +207,4 @@ export async function reworkHandler(state) {
191
207
  },
192
208
  };
193
209
  }
194
- //# sourceMappingURL=rework-handler.js.map
210
+ //# sourceMappingURL=rework-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rework-stage.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/rework-stage.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { ContextBlockStore } from '../stores/context-block-tool.js';
14
14
  *
15
15
  * Inputs (Group A) are read-only after row 2.5 completes.
16
16
  * Bus + heartbeat (Group B) carry mutable runtime state for the watchdog.
17
- * Cost (Group C) is the cost meter / runAccounted state owned by CostMeter.
17
+ * Cost (Group C) is tracked via stateless priceTokens() / rollupByTier() in bounded-execution; not held on ExecutionContext.
18
18
  *
19
19
  * Per-chain accumulators (Group D) live on `LifecycleState` itself, not
20
20
  * here, because each chain handler mutates them as it fires; ExecutionContext
@@ -48,15 +48,17 @@ export interface ExecutionContext {
48
48
  */
49
49
  getSession(tier: AgentType): Session;
50
50
  closeSessions(): Promise<void>;
51
+ /** Returns OS pids of every currently-open session's CLI subprocess (if any).
52
+ * Used by shutdown drain to SIGKILL stragglers when closeSessions() exceeds
53
+ * its grace window. Empty array when no sessions are open OR the providers
54
+ * do not spawn subprocesses (e.g. in-process SDK clients). */
55
+ getActivePids(): number[];
51
56
  timing: {
52
57
  startMs: number;
53
58
  timeoutMs: number;
54
59
  deadlineMs: number;
55
60
  stallTimeoutMs: number;
56
61
  };
57
- budgets: {
58
- maxCostUSD: number | undefined;
59
- };
60
62
  /** Wall-clock budget guard. Throws GuardError once budgetMs since task start
61
63
  * is exceeded. Stage entries + tool-call boundaries call checkOrThrow(). */
62
64
  wallClockGuard: WallClockGuard;
@@ -136,5 +138,9 @@ export interface ExecutionContext {
136
138
  contextBlockStore?: ContextBlockStore;
137
139
  /** BatchId owning this execution — threaded so ActivityTracker can tag ticks. */
138
140
  batchId?: string;
141
+ /** Optional BatchRegistry — when set, task-runner attaches this ctx onto
142
+ * the entry so shutdown drain can close sessions across all in-flight
143
+ * tasks. Server callers pass this through HandlerDeps; CLI callers omit. */
144
+ batchRegistry?: import('../stores/batch-registry.js').BatchRegistry;
139
145
  }
140
146
  //# sourceMappingURL=lifecycle-context.d.ts.map
@@ -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,5 +1,5 @@
1
1
  import type { LifecycleState } from './stage-plan-types.js';
2
- import type { ToolCategory } from '../escalation/escalation-policy.js';
2
+ import type { ToolCategory } from './rework-budget.js';
3
3
  import type { ComposePayload } from './stage-io.js';
4
4
  export interface DispatchInput {
5
5
  route: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-dispatcher.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-dispatcher.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E;;;;;OAKG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,qBAAa,mBAAmB;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC7D,OAAO,CAAC,YAAY;CAcrB"}
1
+ {"version":3,"file":"lifecycle-dispatcher.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-dispatcher.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E;;;;;OAKG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,qBAAa,mBAAmB;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC7D,OAAO,CAAC,YAAY;CAcrB"}
@@ -6,7 +6,7 @@
6
6
  import { runStagePlan } from './lifecycle-driver.js';
7
7
  import { STAGE_PLAN } from './stage-plan-builder.js';
8
8
  import { ContextBlockNotFoundError } from '../stores/context-block-tool.js';
9
- import { ATTEMPT_BUDGETS } from '../escalation/escalation-policy.js';
9
+ import { ATTEMPT_BUDGETS } from './rework-budget.js';
10
10
  export class LifecycleDispatcher {
11
11
  async dispatch(input) {
12
12
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-dispatcher.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-dispatcher.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-dispatcher.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":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAa,eAAe,EAAa,MAAM,eAAe,CAAC;AAI3E;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAChC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAuFzB"}
1
+ {"version":3,"file":"lifecycle-driver.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAa,eAAe,EAAa,MAAM,eAAe,CAAC;AAgB3E;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAChC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CA4FzB"}
@@ -1,6 +1,21 @@
1
1
  // v5 lifecycle driver — walks STAGE_PLAN (StageDefinition[]) applying
2
2
  // Layer-1 (applicableRoutes) then Layer-2 (shouldRun) per spec §4.4.
3
3
  import { ContextBlockNotFoundError } from '../stores/context-block-tool.js';
4
+ import { GuardError } from '../bounded-execution/wall-clock-guard.js';
5
+ /** Returns a promise that rejects when the signal aborts. Lets stage-handler
6
+ * awaits unwind on watchdog abort even when the handler itself does not
7
+ * observe the signal directly. Stays pending forever if no signal. */
8
+ function abortAsRejection(signal, message) {
9
+ if (!signal)
10
+ return new Promise(() => { });
11
+ return new Promise((_, reject) => {
12
+ if (signal.aborted) {
13
+ reject(new Error(message));
14
+ return;
15
+ }
16
+ signal.addEventListener('abort', () => reject(new Error(message)), { once: true });
17
+ });
18
+ }
4
19
  /**
5
20
  * Walk `plan` in order. For each stage:
6
21
  * 1. If halted and not `runOnHalt`, silently skip (no gate recorded).
@@ -57,11 +72,12 @@ export async function runStagePlan(plan, initial) {
57
72
  }
58
73
  catch (err) {
59
74
  const msg = err instanceof Error ? err.message : String(err);
75
+ const timeoutKind = err instanceof GuardError && err.errorCode === 'guard_wall_clock' ? 'wall_clock' : 'unknown';
60
76
  const haltGate = {
61
77
  outcome: 'halt',
62
78
  comment: `${stage.name} halted: ${msg}`,
63
79
  payload: null,
64
- telemetry: { stageLabel: stage.name, durationMs: 0, costUSD: 0, turnsUsed: 0, stopReason: 'timeout' },
80
+ telemetry: { stageLabel: stage.name, durationMs: 0, costUSD: 0, turnsUsed: 0, stopReason: 'timeout', timeoutKind },
65
81
  };
66
82
  state.gates[stage.name] = haltGate;
67
83
  state.halted = true;
@@ -72,7 +88,11 @@ export async function runStagePlan(plan, initial) {
72
88
  }
73
89
  const t0 = Date.now();
74
90
  try {
75
- const gate = await stage.handler(state);
91
+ const stallSignal = state.executionContext?.stall?.controller?.signal;
92
+ const gate = await Promise.race([
93
+ stage.handler(state),
94
+ abortAsRejection(stallSignal, `stage ${stage.name} aborted by stall watchdog`),
95
+ ]);
76
96
  state.gates[stage.name] = gate;
77
97
  emitGateRecorded(state.executionContext, stage.name, gate.outcome, gate.telemetry.costUSD, gate.telemetry.durationMs);
78
98
  if (gate.outcome === 'halt') {
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function normalizeOutputTargets(targets: string[] | undefined, cwd: string): string[];
2
+ //# sourceMappingURL=normalize-output-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-output-targets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/normalize-output-targets.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAU3F"}
@@ -0,0 +1,14 @@
1
+ import { resolve } from 'node:path';
2
+ export function normalizeOutputTargets(targets, cwd) {
3
+ if (!targets || targets.length === 0)
4
+ return [];
5
+ const absCwd = resolve(cwd);
6
+ return targets.map((t) => {
7
+ const abs = resolve(absCwd, t);
8
+ if (!abs.startsWith(absCwd + '/') && abs !== absCwd) {
9
+ throw new Error(`output_targets_invalid: ${t} escapes cwd`);
10
+ }
11
+ return abs;
12
+ });
13
+ }
14
+ //# sourceMappingURL=normalize-output-targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-output-targets.js","sourceRoot":"","sources":["../../src/lifecycle/normalize-output-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,sBAAsB,CAAC,OAA6B,EAAE,GAAW;IAC/E,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"perform-implementation.d.ts","sourceRoot":"","sources":["../../src/lifecycle/perform-implementation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAY5D,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwQhF"}
1
+ {"version":3,"file":"perform-implementation.d.ts","sourceRoot":"","sources":["../../src/lifecycle/perform-implementation.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB5D,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiShF"}
@@ -1,8 +1,8 @@
1
1
  // Extracted executor closure from task-runner.ts.
2
2
  // This function orchestrates the implementation stage: read-route sequential
3
3
  // criteria loop or write-route single worker turn, populates state.lastRunResult.
4
- import { pickEscalation } from '../escalation/policy.js';
5
- import { delegateWithEscalation } from '../escalation/delegate-with-escalation.js';
4
+ import { assembleRunResult } from '../providers/assemble-run-result.js';
5
+ import { retryableFor } from '../error-codes.js';
6
6
  import { parseStructuredReport } from '../reporting/structured-report.js';
7
7
  import { mergeStageStats } from './merge-stage-stats.js';
8
8
  import { startProgressWatchdog, recordPostHocSignals } from '../bounded-execution/progress-watchdog.js';
@@ -10,15 +10,26 @@ import { resolveSubtypeSpec, isReadOnlyRoute } from './parallel-criteria-routes.
10
10
  import { runReadRouteImplementer } from './handlers/read-route-implementer.js';
11
11
  import { HUMAN_LABEL } from './stage-labels.js';
12
12
  import { readFile as fsReadFile } from 'fs/promises';
13
+ function safeTracker(fn, ctx) {
14
+ try {
15
+ fn();
16
+ }
17
+ catch (e) {
18
+ ctx.logger?.error('heartbeat_call_failed', e);
19
+ }
20
+ }
13
21
  export async function performImplementation(state) {
14
22
  const task = state.task;
15
23
  const ctx = state.executionContext;
16
24
  if (!task || !ctx) {
17
25
  throw new Error(`performImplementation: state.task / state.executionContext not set for route '${state.route}'`);
18
26
  }
19
- const baseTier = ctx.assignedTier;
20
- const decision = pickEscalation({ loop: 'spec', attemptIndex: 0, baseTier });
21
- const provider = ctx.providers[decision.impl];
27
+ // No tier rotation — tasks stay on their assigned tier per the v0.5 design.
28
+ // The escalation/policy.ts pickEscalation() was used for an attempt-2 swap
29
+ // that this codebase doesn't need; deleted along with the escalation/ dir.
30
+ const implTier = ctx.assignedTier;
31
+ const decision = { impl: implTier };
32
+ const provider = ctx.providers[implTier];
22
33
  if (!provider) {
23
34
  state.lastRunResult = {
24
35
  output: '',
@@ -30,7 +41,7 @@ export async function performImplementation(state) {
30
41
  toolCalls: [],
31
42
  outputIsDiagnostic: true,
32
43
  escalationLog: [],
33
- error: `no provider configured for tier '${decision.impl}'`,
44
+ error: `no provider configured for tier '${implTier}'`,
34
45
  errorCode: 'all_tiers_unavailable',
35
46
  workerStatus: 'failed',
36
47
  };
@@ -161,10 +172,11 @@ export async function performImplementation(state) {
161
172
  return undefined;
162
173
  }
163
174
  }
164
- // Build the watchdog config once, just before the delegateWithEscalation call:
175
+ // Build the watchdog config once, just before the session.send call:
176
+ safeTracker(() => ctx.heartbeat?.transition({ stage: 'implementing', stageIndex: 1 }), ctx);
165
177
  const wdConfig = {
166
178
  enabled: ctx.config?.defaults?.progressWatchdogEnabled ?? true,
167
- thrashTurns: ctx.config?.defaults?.thrashTurns ?? 25,
179
+ thrashTurns: ctx.config?.defaults?.thrashTurns ?? 50,
168
180
  thrashWallClockMs: ctx.config?.defaults?.thrashWallClockMs ?? 1_200_000,
169
181
  thrashSoftWallClockMs: ctx.config?.defaults?.thrashWallClockMs
170
182
  ? Math.floor((ctx.config.defaults.thrashWallClockMs ?? 1_200_000) / 2)
@@ -174,8 +186,8 @@ export async function performImplementation(state) {
174
186
  // the abort came from the watchdog vs. some other cancellation.
175
187
  const wdState2 = { fired: false };
176
188
  // Wire the watchdog. ctx.stall.controller is the existing AbortController
177
- // passed to delegateWithEscalation as options.abortSignal — when the watchdog
178
- // fires, the controller's abort propagates into the session.
189
+ // passed into session.send via TurnOpts.signal — when the watchdog fires,
190
+ // the controller's abort propagates into the active subprocess.
179
191
  const disposeWatchdog = startProgressWatchdog({
180
192
  state,
181
193
  controller: ctx.stall.controller,
@@ -186,27 +198,50 @@ export async function performImplementation(state) {
186
198
  state2: wdState2,
187
199
  });
188
200
  try {
189
- const result = await delegateWithEscalation({
190
- prompt: task.prompt,
191
- cwd: ctx.cwd,
192
- agentType: decision.impl,
193
- briefQualityPolicy: 'off',
194
- timeoutMs: ctx.timing.timeoutMs,
195
- ...(task.tools !== undefined && { tools: task.tools }),
196
- }, [provider], {
197
- explicitlyPinned: false,
198
- taskDeadlineMs: ctx.timing.deadlineMs,
199
- abortSignal: ctx.stall.controller.signal,
200
- assignedTier: decision.impl,
201
+ // v0.5: single cached session per (task, tier) — owned by task-runner.ts's
202
+ // sessions Map and closed in finally{} by closeSessions(). No retry
203
+ // wrapper, no per-attempt respawn; SDKs handle transport retry internally
204
+ // on the same persistent session.
205
+ const session = ctx.getSession(decision.impl);
206
+ const turn = await session.send(task.prompt, {
201
207
  stageLabel: HUMAN_LABEL.implementing,
202
- ...(ctx.bus && { bus: ctx.bus }),
203
- ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
204
- taskIndex: ctx.taskIndex,
208
+ signal: ctx.stall.controller.signal,
205
209
  });
210
+ const raw = assembleRunResult(turn);
211
+ // Match the structured `terminationReason` shape that the old
212
+ // delegate-with-escalation wrapper used to populate (consumed by
213
+ // golden-checked downstream telemetry).
214
+ const usedShell = Array.isArray(raw.toolCalls)
215
+ && raw.toolCalls.some((tc) => typeof tc === 'string' && tc.startsWith('runShell'));
216
+ const cause = raw.status === 'ok' ? 'finished'
217
+ : raw.status === 'incomplete' ? 'incomplete'
218
+ : 'error';
219
+ const result = {
220
+ ...raw,
221
+ terminationReason: {
222
+ cause,
223
+ turnsUsed: raw.turns ?? 0,
224
+ hasFileArtifacts: Array.isArray(raw.filesWritten) && raw.filesWritten.length > 0,
225
+ usedShell,
226
+ workerSelfAssessment: raw.workerStatus ?? null,
227
+ wasPromoted: false,
228
+ },
229
+ escalationLog: [],
230
+ // Match the errorCode + retryable defaults the old escalation wrapper
231
+ // used to populate for non-ok statuses (consumed by golden-checked envelope).
232
+ ...(raw.status !== 'ok' && {
233
+ errorCode: raw.errorCode ?? raw.status,
234
+ retryable: raw.retryable ?? retryableFor(raw.status),
235
+ }),
236
+ };
206
237
  const enrichedResult = {
207
238
  ...result,
208
239
  ...(result.implementationReport === undefined && result.output && { implementationReport: parseStructuredReport(result.output) }),
209
240
  };
241
+ const filesRead = Array.isArray(result.filesRead) ? result.filesRead.length : 0;
242
+ const filesWritten = Array.isArray(result.filesWritten) ? result.filesWritten.length : 0;
243
+ const toolCalls = Array.isArray(result.toolCalls) ? result.toolCalls.length : 0;
244
+ safeTracker(() => ctx.heartbeat?.updateProgress(filesRead, filesWritten, toolCalls), ctx);
210
245
  state.lastRunResult = enrichedResult;
211
246
  // Post-hoc: turn-count thrash + scope-violation (replaces nothing existing;
212
247
  // adds new signals state for sub-project B's annotator).
@@ -219,6 +254,7 @@ export async function performImplementation(state) {
219
254
  // `actualCostUSD` (the current source of truth from claude/codex
220
255
  // turns). Without the actualCostUSD fallback every claude-tier
221
256
  // implementing stage records cost=null and telemetry under-reports.
257
+ const costUSDForStage = result.cost?.costUSD ?? result.actualCostUSD ?? null;
222
258
  mergeStageStats(state, 'implementing', {
223
259
  inputTokens: result.usage.inputTokens ?? 0,
224
260
  outputTokens: result.usage.outputTokens ?? 0,
@@ -226,7 +262,7 @@ export async function performImplementation(state) {
226
262
  cachedNonReadTokens: result.usage.cachedNonReadTokens ?? 0,
227
263
  turnCount: result.turns ?? 0,
228
264
  toolCallCount: Array.isArray(result.toolCalls) ? result.toolCalls.length : 0,
229
- costUSD: result.cost?.costUSD ?? result.actualCostUSD ?? null,
265
+ costUSD: costUSDForStage,
230
266
  durationMs: result.durationMs ?? null,
231
267
  filesReadCount: Array.isArray(result.filesRead) ? result.filesRead.length : 0,
232
268
  filesWrittenCount: Array.isArray(result.filesWritten) ? result.filesWritten.length : 0,
@@ -234,6 +270,7 @@ export async function performImplementation(state) {
234
270
  tier: ctx.assignedTier,
235
271
  model: ctx.implementerProvider?.config?.model ?? null,
236
272
  });
273
+ safeTracker(() => ctx.heartbeat?.applyCost({ costUSD: costUSDForStage ?? 0, costDeltaVsMainUSD: 0 }), ctx);
237
274
  if (result.status !== 'ok') {
238
275
  state.terminal = true;
239
276
  }