@zhixuan92/multi-model-agent-core 4.5.4 → 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 (482) hide show
  1. package/README.md +6 -2
  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.d.ts +36 -5
  42. package/dist/events/event-builder.d.ts.map +1 -1
  43. package/dist/events/event-builder.js +174 -33
  44. package/dist/events/event-builder.js.map +1 -1
  45. package/dist/events/event-emitter.d.ts +2 -1
  46. package/dist/events/event-emitter.d.ts.map +1 -1
  47. package/dist/events/event-emitter.js +6 -1
  48. package/dist/events/event-emitter.js.map +1 -1
  49. package/dist/events/observability-events.d.ts +6 -26
  50. package/dist/events/observability-events.d.ts.map +1 -1
  51. package/dist/events/observability-events.js +6 -11
  52. package/dist/events/observability-events.js.map +1 -1
  53. package/dist/events/telemetry-types.d.ts +10 -7
  54. package/dist/events/telemetry-types.d.ts.map +1 -1
  55. package/dist/events/telemetry-types.js +1 -1
  56. package/dist/events/telemetry-types.js.map +1 -1
  57. package/dist/events/verbose-log-channel.d.ts +7 -7
  58. package/dist/events/verbose-log-channel.js +10 -10
  59. package/dist/index.d.ts +13 -8
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +11 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/intake/resolve.d.ts.map +1 -1
  64. package/dist/intake/resolve.js +0 -1
  65. package/dist/intake/resolve.js.map +1 -1
  66. package/dist/lifecycle/annotate-parser.d.ts +9 -0
  67. package/dist/lifecycle/annotate-parser.d.ts.map +1 -0
  68. package/dist/lifecycle/annotate-parser.js +83 -0
  69. package/dist/lifecycle/annotate-parser.js.map +1 -0
  70. package/dist/lifecycle/annotate-prompts.d.ts +9 -0
  71. package/dist/lifecycle/annotate-prompts.d.ts.map +1 -0
  72. package/dist/lifecycle/annotate-prompts.js +86 -0
  73. package/dist/lifecycle/annotate-prompts.js.map +1 -0
  74. package/dist/lifecycle/auto-register-context-block.d.ts +2 -2
  75. package/dist/lifecycle/auto-register-context-block.d.ts.map +1 -1
  76. package/dist/lifecycle/auto-register-context-block.js.map +1 -1
  77. package/dist/lifecycle/build-cancelled-result.d.ts +11 -0
  78. package/dist/lifecycle/build-cancelled-result.d.ts.map +1 -0
  79. package/dist/lifecycle/build-cancelled-result.js +27 -0
  80. package/dist/lifecycle/build-cancelled-result.js.map +1 -0
  81. package/dist/lifecycle/executor-output-types.d.ts +2 -2
  82. package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
  83. package/dist/lifecycle/fallback-report.d.ts +2 -2
  84. package/dist/lifecycle/fallback-report.d.ts.map +1 -1
  85. package/dist/lifecycle/fallback-report.js.map +1 -1
  86. package/dist/lifecycle/findings-parser.d.ts +2 -0
  87. package/dist/lifecycle/findings-parser.d.ts.map +1 -1
  88. package/dist/lifecycle/findings-parser.js +9 -4
  89. package/dist/lifecycle/findings-parser.js.map +1 -1
  90. package/dist/lifecycle/git-toplevel.d.ts +12 -0
  91. package/dist/lifecycle/git-toplevel.d.ts.map +1 -0
  92. package/dist/lifecycle/git-toplevel.js +49 -0
  93. package/dist/lifecycle/git-toplevel.js.map +1 -0
  94. package/dist/lifecycle/handlers/{annotator.d.ts → annotate-stage.d.ts} +3 -2
  95. package/dist/lifecycle/handlers/annotate-stage.d.ts.map +1 -0
  96. package/dist/lifecycle/handlers/annotate-stage.js +289 -0
  97. package/dist/lifecycle/handlers/annotate-stage.js.map +1 -0
  98. package/dist/lifecycle/handlers/baseline-handlers.d.ts +10 -5
  99. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  100. package/dist/lifecycle/handlers/baseline-handlers.js +206 -316
  101. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  102. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +3 -0
  103. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -0
  104. package/dist/lifecycle/handlers/enrich-runtime-result.js +191 -0
  105. package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -0
  106. package/dist/lifecycle/handlers/git-commit-handler.d.ts +3 -2
  107. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  108. package/dist/lifecycle/handlers/git-commit-handler.js +158 -114
  109. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  110. package/dist/lifecycle/handlers/implement-stage.d.ts +10 -0
  111. package/dist/lifecycle/handlers/implement-stage.d.ts.map +1 -0
  112. package/dist/lifecycle/handlers/implement-stage.js +206 -0
  113. package/dist/lifecycle/handlers/implement-stage.js.map +1 -0
  114. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +7 -13
  115. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
  116. package/dist/lifecycle/handlers/prepare-execution-context-handler.js +72 -49
  117. package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
  118. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +2 -1
  119. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +1 -1
  120. package/dist/lifecycle/handlers/register-context-block-handlers.js +35 -14
  121. package/dist/lifecycle/handlers/register-context-block-handlers.js.map +1 -1
  122. package/dist/lifecycle/handlers/review-stage.d.ts +4 -0
  123. package/dist/lifecycle/handlers/review-stage.d.ts.map +1 -0
  124. package/dist/lifecycle/handlers/review-stage.js +184 -0
  125. package/dist/lifecycle/handlers/review-stage.js.map +1 -0
  126. package/dist/lifecycle/handlers/rework-stage.d.ts +4 -0
  127. package/dist/lifecycle/handlers/rework-stage.d.ts.map +1 -0
  128. package/dist/lifecycle/handlers/{rework-handler.js → rework-stage.js} +79 -15
  129. package/dist/lifecycle/handlers/rework-stage.js.map +1 -0
  130. package/dist/lifecycle/handlers/terminal-handlers.d.ts +22 -0
  131. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  132. package/dist/lifecycle/handlers/terminal-handlers.js +86 -5
  133. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  134. package/dist/lifecycle/lifecycle-context.d.ts +41 -7
  135. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  136. package/dist/lifecycle/lifecycle-dispatcher.d.ts +19 -20
  137. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  138. package/dist/lifecycle/lifecycle-dispatcher.js +39 -23
  139. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  140. package/dist/lifecycle/lifecycle-driver.d.ts +15 -8
  141. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  142. package/dist/lifecycle/lifecycle-driver.js +130 -29
  143. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  144. package/dist/lifecycle/merge-stage-stats.d.ts +3 -3
  145. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
  146. package/dist/lifecycle/merge-stage-stats.js +2 -2
  147. package/dist/lifecycle/merge-stage-stats.js.map +1 -1
  148. package/dist/lifecycle/normalize-output-targets.d.ts +2 -0
  149. package/dist/lifecycle/normalize-output-targets.d.ts.map +1 -0
  150. package/dist/lifecycle/normalize-output-targets.js +14 -0
  151. package/dist/lifecycle/normalize-output-targets.js.map +1 -0
  152. package/dist/lifecycle/perform-implementation.d.ts +3 -0
  153. package/dist/lifecycle/perform-implementation.d.ts.map +1 -0
  154. package/dist/lifecycle/perform-implementation.js +301 -0
  155. package/dist/lifecycle/perform-implementation.js.map +1 -0
  156. package/dist/lifecycle/repo-hygiene.d.ts +14 -0
  157. package/dist/lifecycle/repo-hygiene.d.ts.map +1 -0
  158. package/dist/lifecycle/repo-hygiene.js +71 -0
  159. package/dist/lifecycle/repo-hygiene.js.map +1 -0
  160. package/dist/lifecycle/rework-budget.d.ts +3 -0
  161. package/dist/lifecycle/rework-budget.d.ts.map +1 -0
  162. package/dist/lifecycle/rework-budget.js +9 -0
  163. package/dist/lifecycle/rework-budget.js.map +1 -0
  164. package/dist/lifecycle/shared-compute.d.ts +4 -4
  165. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  166. package/dist/lifecycle/shared-compute.js +1 -1
  167. package/dist/lifecycle/shared-compute.js.map +1 -1
  168. package/dist/lifecycle/stage-io.d.ts +140 -0
  169. package/dist/lifecycle/stage-io.d.ts.map +1 -0
  170. package/dist/lifecycle/stage-io.js +20 -0
  171. package/dist/lifecycle/stage-io.js.map +1 -0
  172. package/dist/lifecycle/stage-plan-builder.d.ts +3 -3
  173. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  174. package/dist/lifecycle/stage-plan-builder.js +157 -128
  175. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  176. package/dist/lifecycle/stage-plan-types.d.ts +6 -25
  177. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  178. package/dist/lifecycle/stage-progression.d.ts +3 -15
  179. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  180. package/dist/lifecycle/stage-progression.js +48 -91
  181. package/dist/lifecycle/stage-progression.js.map +1 -1
  182. package/dist/lifecycle/task-completion-summary.d.ts +2 -2
  183. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  184. package/dist/lifecycle/task-completion-summary.js +0 -7
  185. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  186. package/dist/lifecycle/task-executor.d.ts +23 -0
  187. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  188. package/dist/lifecycle/task-executor.js +79 -6
  189. package/dist/lifecycle/task-executor.js.map +1 -1
  190. package/dist/lifecycle/task-grouping.d.ts +19 -0
  191. package/dist/lifecycle/task-grouping.d.ts.map +1 -0
  192. package/dist/lifecycle/task-grouping.js +48 -0
  193. package/dist/lifecycle/task-grouping.js.map +1 -0
  194. package/dist/lifecycle/task-runner.d.ts +25 -8
  195. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  196. package/dist/lifecycle/task-runner.js +123 -313
  197. package/dist/lifecycle/task-runner.js.map +1 -1
  198. package/dist/lifecycle/tool-config-types.d.ts +9 -0
  199. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  200. package/dist/lifecycle/worker-output-contract.d.ts +9 -15
  201. package/dist/lifecycle/worker-output-contract.d.ts.map +1 -1
  202. package/dist/lifecycle/worker-output-contract.js +45 -30
  203. package/dist/lifecycle/worker-output-contract.js.map +1 -1
  204. package/dist/providers/agent-resolver.d.ts.map +1 -0
  205. package/dist/{escalation → providers}/agent-resolver.js +1 -1
  206. package/dist/providers/agent-resolver.js.map +1 -0
  207. package/dist/providers/assemble-run-result.d.ts +3 -3
  208. package/dist/providers/assemble-run-result.d.ts.map +1 -1
  209. package/dist/providers/assemble-run-result.js +20 -11
  210. package/dist/providers/assemble-run-result.js.map +1 -1
  211. package/dist/providers/claude-session.d.ts +12 -0
  212. package/dist/providers/claude-session.d.ts.map +1 -1
  213. package/dist/providers/claude-session.js +39 -1
  214. package/dist/providers/claude-session.js.map +1 -1
  215. package/dist/providers/claude.js.map +1 -1
  216. package/dist/providers/codex-cli-launch.js +1 -1
  217. package/dist/providers/codex-cli-launch.js.map +1 -1
  218. package/dist/providers/codex-cli-session.d.ts +20 -2
  219. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  220. package/dist/providers/codex-cli-session.js +148 -52
  221. package/dist/providers/codex-cli-session.js.map +1 -1
  222. package/dist/providers/codex.js.map +1 -1
  223. package/dist/providers/index.d.ts +1 -0
  224. package/dist/providers/index.d.ts.map +1 -1
  225. package/dist/providers/index.js +1 -0
  226. package/dist/providers/index.js.map +1 -1
  227. package/dist/providers/normalize-claude.d.ts +2 -0
  228. package/dist/providers/normalize-claude.d.ts.map +1 -1
  229. package/dist/providers/normalize-claude.js +2 -1
  230. package/dist/providers/normalize-claude.js.map +1 -1
  231. package/dist/providers/provider-factory.d.ts +8 -0
  232. package/dist/providers/provider-factory.d.ts.map +1 -1
  233. package/dist/providers/provider-factory.js +64 -3
  234. package/dist/providers/provider-factory.js.map +1 -1
  235. package/dist/providers/run-annotator-turn.d.ts +24 -0
  236. package/dist/providers/run-annotator-turn.d.ts.map +1 -0
  237. package/dist/providers/run-annotator-turn.js +44 -0
  238. package/dist/providers/run-annotator-turn.js.map +1 -0
  239. package/dist/providers/run-worker-turn.d.ts +26 -0
  240. package/dist/providers/run-worker-turn.d.ts.map +1 -0
  241. package/dist/providers/run-worker-turn.js +57 -0
  242. package/dist/providers/run-worker-turn.js.map +1 -0
  243. package/dist/providers/runner-types.d.ts +6 -7
  244. package/dist/providers/runner-types.d.ts.map +1 -1
  245. package/dist/providers/stall-detector.d.ts +1 -1
  246. package/dist/providers/stall-detector.d.ts.map +1 -1
  247. package/dist/providers/stall-detector.js +1 -1
  248. package/dist/providers/stall-detector.js.map +1 -1
  249. package/dist/reporting/derive-investigate-status.d.ts +1 -1
  250. package/dist/reporting/derive-investigate-status.d.ts.map +1 -1
  251. package/dist/reporting/headline-composer.d.ts +3 -3
  252. package/dist/reporting/headline-composer.d.ts.map +1 -1
  253. package/dist/reporting/headline-templates/investigate.d.ts +1 -1
  254. package/dist/reporting/headline-templates/investigate.d.ts.map +1 -1
  255. package/dist/reporting/headline-templates/research.d.ts.map +1 -1
  256. package/dist/reporting/headline-templates/research.js +0 -1
  257. package/dist/reporting/headline-templates/research.js.map +1 -1
  258. package/dist/reporting/terminal-status-deriver.d.ts +1 -1
  259. package/dist/reporting/terminal-status-deriver.d.ts.map +1 -1
  260. package/dist/reporting/terminal-status-deriver.js +1 -4
  261. package/dist/reporting/terminal-status-deriver.js.map +1 -1
  262. package/dist/review/index.d.ts +4 -3
  263. package/dist/review/index.d.ts.map +1 -1
  264. package/dist/review/index.js +7 -4
  265. package/dist/review/index.js.map +1 -1
  266. package/dist/review/parse-review-report.d.ts +7 -1
  267. package/dist/review/parse-review-report.d.ts.map +1 -1
  268. package/dist/review/parse-review-report.js +13 -21
  269. package/dist/review/parse-review-report.js.map +1 -1
  270. package/dist/review/review-verdict-mapping.d.ts +3 -3
  271. package/dist/review/review-verdict-mapping.d.ts.map +1 -1
  272. package/dist/review/review-verdict-mapping.js +1 -1
  273. package/dist/review/review-verdict-mapping.js.map +1 -1
  274. package/dist/review/run-reviewer.d.ts +40 -0
  275. package/dist/review/run-reviewer.d.ts.map +1 -0
  276. package/dist/review/run-reviewer.js +55 -0
  277. package/dist/review/run-reviewer.js.map +1 -0
  278. package/dist/review/templates/quality-review.d.ts +5 -0
  279. package/dist/review/templates/quality-review.d.ts.map +1 -1
  280. package/dist/review/templates/quality-review.js +35 -25
  281. package/dist/review/templates/quality-review.js.map +1 -1
  282. package/dist/review/templates/spec-review.d.ts +6 -0
  283. package/dist/review/templates/spec-review.d.ts.map +1 -1
  284. package/dist/review/templates/spec-review.js +36 -8
  285. package/dist/review/templates/spec-review.js.map +1 -1
  286. package/dist/stores/batch-cache.d.ts +3 -3
  287. package/dist/stores/batch-cache.d.ts.map +1 -1
  288. package/dist/stores/batch-cache.js.map +1 -1
  289. package/dist/stores/batch-registry.d.ts +46 -1
  290. package/dist/stores/batch-registry.d.ts.map +1 -1
  291. package/dist/stores/batch-registry.js +39 -0
  292. package/dist/stores/batch-registry.js.map +1 -1
  293. package/dist/tool-surface/tool-surface-registry.d.ts +1 -1
  294. package/dist/tool-surface/tool-surface-registry.d.ts.map +1 -1
  295. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  296. package/dist/tools/audit/tool-config.js +0 -1
  297. package/dist/tools/audit/tool-config.js.map +1 -1
  298. package/dist/tools/debug/tool-config.d.ts.map +1 -1
  299. package/dist/tools/debug/tool-config.js +1 -2
  300. package/dist/tools/debug/tool-config.js.map +1 -1
  301. package/dist/tools/delegate/schema.d.ts +1 -1
  302. package/dist/tools/delegate/schema.d.ts.map +1 -1
  303. package/dist/tools/delegate/schema.js +2 -1
  304. package/dist/tools/delegate/schema.js.map +1 -1
  305. package/dist/tools/delegate/tool-config.d.ts +0 -1
  306. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  307. package/dist/tools/delegate/tool-config.js +3 -3
  308. package/dist/tools/delegate/tool-config.js.map +1 -1
  309. package/dist/tools/execute-plan/schema.d.ts +1 -1
  310. package/dist/tools/execute-plan/schema.d.ts.map +1 -1
  311. package/dist/tools/execute-plan/schema.js +2 -2
  312. package/dist/tools/execute-plan/schema.js.map +1 -1
  313. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  314. package/dist/tools/execute-plan/tool-config.js +3 -2
  315. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  316. package/dist/tools/investigate/tool-config.d.ts.map +1 -1
  317. package/dist/tools/investigate/tool-config.js +1 -2
  318. package/dist/tools/investigate/tool-config.js.map +1 -1
  319. package/dist/tools/register-context-block/tool-config.d.ts.map +1 -1
  320. package/dist/tools/register-context-block/tool-config.js +0 -1
  321. package/dist/tools/register-context-block/tool-config.js.map +1 -1
  322. package/dist/tools/research/tool-config.d.ts.map +1 -1
  323. package/dist/tools/research/tool-config.js +0 -1
  324. package/dist/tools/research/tool-config.js.map +1 -1
  325. package/dist/tools/retry/tool-config.d.ts.map +1 -1
  326. package/dist/tools/retry/tool-config.js +0 -1
  327. package/dist/tools/retry/tool-config.js.map +1 -1
  328. package/dist/tools/review/tool-config.d.ts.map +1 -1
  329. package/dist/tools/review/tool-config.js +0 -1
  330. package/dist/tools/review/tool-config.js.map +1 -1
  331. package/dist/types/config.d.ts +0 -1
  332. package/dist/types/config.d.ts.map +1 -1
  333. package/dist/types/enums.d.ts +0 -3
  334. package/dist/types/enums.d.ts.map +1 -1
  335. package/dist/types/enums.js +3 -3
  336. package/dist/types/enums.js.map +1 -1
  337. package/dist/types/run-result.d.ts +177 -213
  338. package/dist/types/run-result.d.ts.map +1 -1
  339. package/dist/types/run-result.js +17 -0
  340. package/dist/types/run-result.js.map +1 -1
  341. package/dist/types/task-spec.d.ts +1 -1
  342. package/dist/types/task-spec.d.ts.map +1 -1
  343. package/dist/types.d.ts +1 -1
  344. package/dist/types.d.ts.map +1 -1
  345. package/package.json +1 -1
  346. package/dist/bounded-execution/cost-meter.d.ts +0 -20
  347. package/dist/bounded-execution/cost-meter.d.ts.map +0 -1
  348. package/dist/bounded-execution/cost-meter.js +0 -21
  349. package/dist/bounded-execution/cost-meter.js.map +0 -1
  350. package/dist/bounded-execution/error-classifier.d.ts +0 -11
  351. package/dist/bounded-execution/error-classifier.d.ts.map +0 -1
  352. package/dist/bounded-execution/error-classifier.js +0 -23
  353. package/dist/bounded-execution/error-classifier.js.map +0 -1
  354. package/dist/bounded-execution/idle-guard.d.ts +0 -8
  355. package/dist/bounded-execution/idle-guard.d.ts.map +0 -1
  356. package/dist/bounded-execution/idle-guard.js +0 -18
  357. package/dist/bounded-execution/idle-guard.js.map +0 -1
  358. package/dist/bounded-execution/index.d.ts +0 -10
  359. package/dist/bounded-execution/index.d.ts.map +0 -1
  360. package/dist/bounded-execution/index.js +0 -11
  361. package/dist/bounded-execution/index.js.map +0 -1
  362. package/dist/bounded-execution/safety-max-turns.d.ts +0 -17
  363. package/dist/bounded-execution/safety-max-turns.d.ts.map +0 -1
  364. package/dist/bounded-execution/safety-max-turns.js +0 -17
  365. package/dist/bounded-execution/safety-max-turns.js.map +0 -1
  366. package/dist/cleanup/batch-retention-sweeper.d.ts +0 -7
  367. package/dist/cleanup/batch-retention-sweeper.d.ts.map +0 -1
  368. package/dist/cleanup/batch-retention-sweeper.js +0 -10
  369. package/dist/cleanup/batch-retention-sweeper.js.map +0 -1
  370. package/dist/cleanup/context-block-gc-sweeper.d.ts +0 -8
  371. package/dist/cleanup/context-block-gc-sweeper.d.ts.map +0 -1
  372. package/dist/cleanup/context-block-gc-sweeper.js +0 -12
  373. package/dist/cleanup/context-block-gc-sweeper.js.map +0 -1
  374. package/dist/cleanup/index.d.ts +0 -5
  375. package/dist/cleanup/index.d.ts.map +0 -1
  376. package/dist/cleanup/index.js +0 -6
  377. package/dist/cleanup/index.js.map +0 -1
  378. package/dist/cleanup/project-idle-cleanup.d.ts +0 -7
  379. package/dist/cleanup/project-idle-cleanup.d.ts.map +0 -1
  380. package/dist/cleanup/project-idle-cleanup.js +0 -15
  381. package/dist/cleanup/project-idle-cleanup.js.map +0 -1
  382. package/dist/cleanup/shutdown-coordinator.d.ts +0 -7
  383. package/dist/cleanup/shutdown-coordinator.d.ts.map +0 -1
  384. package/dist/cleanup/shutdown-coordinator.js +0 -13
  385. package/dist/cleanup/shutdown-coordinator.js.map +0 -1
  386. package/dist/config/index.d.ts +0 -8
  387. package/dist/config/index.d.ts.map +0 -1
  388. package/dist/config/index.js +0 -9
  389. package/dist/config/index.js.map +0 -1
  390. package/dist/config/pricing-table.d.ts +0 -16
  391. package/dist/config/pricing-table.d.ts.map +0 -1
  392. package/dist/config/pricing-table.js +0 -51
  393. package/dist/config/pricing-table.js.map +0 -1
  394. package/dist/escalation/agent-resolver.d.ts.map +0 -1
  395. package/dist/escalation/agent-resolver.js.map +0 -1
  396. package/dist/escalation/delegate-with-escalation.d.ts +0 -52
  397. package/dist/escalation/delegate-with-escalation.d.ts.map +0 -1
  398. package/dist/escalation/delegate-with-escalation.js +0 -207
  399. package/dist/escalation/delegate-with-escalation.js.map +0 -1
  400. package/dist/escalation/escalation-policy.d.ts +0 -18
  401. package/dist/escalation/escalation-policy.d.ts.map +0 -1
  402. package/dist/escalation/escalation-policy.js +0 -33
  403. package/dist/escalation/escalation-policy.js.map +0 -1
  404. package/dist/escalation/fallback-helpers.d.ts +0 -22
  405. package/dist/escalation/fallback-helpers.d.ts.map +0 -1
  406. package/dist/escalation/fallback-helpers.js +0 -45
  407. package/dist/escalation/fallback-helpers.js.map +0 -1
  408. package/dist/escalation/fallback-types.d.ts +0 -60
  409. package/dist/escalation/fallback-types.d.ts.map +0 -1
  410. package/dist/escalation/fallback-types.js +0 -11
  411. package/dist/escalation/fallback-types.js.map +0 -1
  412. package/dist/escalation/fallback.d.ts +0 -5
  413. package/dist/escalation/fallback.d.ts.map +0 -1
  414. package/dist/escalation/fallback.js +0 -387
  415. package/dist/escalation/fallback.js.map +0 -1
  416. package/dist/escalation/index.d.ts +0 -3
  417. package/dist/escalation/index.d.ts.map +0 -1
  418. package/dist/escalation/index.js +0 -4
  419. package/dist/escalation/index.js.map +0 -1
  420. package/dist/escalation/policy.d.ts +0 -37
  421. package/dist/escalation/policy.d.ts.map +0 -1
  422. package/dist/escalation/policy.js +0 -67
  423. package/dist/escalation/policy.js.map +0 -1
  424. package/dist/escalation/types.d.ts +0 -15
  425. package/dist/escalation/types.d.ts.map +0 -1
  426. package/dist/escalation/types.js +0 -2
  427. package/dist/escalation/types.js.map +0 -1
  428. package/dist/events/running-headline-sink.d.ts +0 -27
  429. package/dist/events/running-headline-sink.d.ts.map +0 -1
  430. package/dist/events/running-headline-sink.js +0 -156
  431. package/dist/events/running-headline-sink.js.map +0 -1
  432. package/dist/lifecycle/handlers/annotator.d.ts.map +0 -1
  433. package/dist/lifecycle/handlers/annotator.js +0 -59
  434. package/dist/lifecycle/handlers/annotator.js.map +0 -1
  435. package/dist/lifecycle/handlers/derive-terminal-status.d.ts +0 -10
  436. package/dist/lifecycle/handlers/derive-terminal-status.d.ts.map +0 -1
  437. package/dist/lifecycle/handlers/derive-terminal-status.js +0 -35
  438. package/dist/lifecycle/handlers/derive-terminal-status.js.map +0 -1
  439. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +0 -27
  440. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +0 -1
  441. package/dist/lifecycle/handlers/files-written-cross-check.js +0 -91
  442. package/dist/lifecycle/handlers/files-written-cross-check.js.map +0 -1
  443. package/dist/lifecycle/handlers/review-handler.d.ts +0 -3
  444. package/dist/lifecycle/handlers/review-handler.d.ts.map +0 -1
  445. package/dist/lifecycle/handlers/review-handler.js +0 -169
  446. package/dist/lifecycle/handlers/review-handler.js.map +0 -1
  447. package/dist/lifecycle/handlers/rework-handler.d.ts +0 -3
  448. package/dist/lifecycle/handlers/rework-handler.d.ts.map +0 -1
  449. package/dist/lifecycle/handlers/rework-handler.js.map +0 -1
  450. package/dist/lifecycle/handlers/task-executor.d.ts +0 -9
  451. package/dist/lifecycle/handlers/task-executor.d.ts.map +0 -1
  452. package/dist/lifecycle/handlers/task-executor.js +0 -98
  453. package/dist/lifecycle/handlers/task-executor.js.map +0 -1
  454. package/dist/lifecycle/handlers/verify-stage.d.ts +0 -37
  455. package/dist/lifecycle/handlers/verify-stage.d.ts.map +0 -1
  456. package/dist/lifecycle/handlers/verify-stage.js +0 -208
  457. package/dist/lifecycle/handlers/verify-stage.js.map +0 -1
  458. package/dist/lifecycle/metadata-repair.d.ts +0 -15
  459. package/dist/lifecycle/metadata-repair.d.ts.map +0 -1
  460. package/dist/lifecycle/metadata-repair.js +0 -33
  461. package/dist/lifecycle/metadata-repair.js.map +0 -1
  462. package/dist/review/default-engines.d.ts +0 -3
  463. package/dist/review/default-engines.d.ts.map +0 -1
  464. package/dist/review/default-engines.js +0 -22
  465. package/dist/review/default-engines.js.map +0 -1
  466. package/dist/review/reviewer-engine.d.ts +0 -53
  467. package/dist/review/reviewer-engine.d.ts.map +0 -1
  468. package/dist/review/reviewer-engine.js +0 -47
  469. package/dist/review/reviewer-engine.js.map +0 -1
  470. package/dist/review/reviewer-output-parser.d.ts +0 -12
  471. package/dist/review/reviewer-output-parser.d.ts.map +0 -1
  472. package/dist/review/reviewer-output-parser.js +0 -213
  473. package/dist/review/reviewer-output-parser.js.map +0 -1
  474. package/dist/review/reviewer-prompt-builder.d.ts +0 -21
  475. package/dist/review/reviewer-prompt-builder.d.ts.map +0 -1
  476. package/dist/review/reviewer-prompt-builder.js +0 -22
  477. package/dist/review/reviewer-prompt-builder.js.map +0 -1
  478. package/dist/review/templates/annotate-completion.d.ts +0 -12
  479. package/dist/review/templates/annotate-completion.d.ts.map +0 -1
  480. package/dist/review/templates/annotate-completion.js +0 -72
  481. package/dist/review/templates/annotate-completion.js.map +0 -1
  482. /package/dist/{escalation → providers}/agent-resolver.d.ts +0 -0
@@ -0,0 +1,206 @@
1
+ // v4.5 — Implementing stage handler.
2
+ // Sends the brief to the route's implementer tier via session.send,
3
+ // captures the pre-task HEAD SHA, and returns a StageGate<ImplementPayload>
4
+ // containing the worker's structured output plus prose-extracted findings.
5
+ import { parseWorkerOutput } from '../worker-output-contract.js';
6
+ import { performImplementation } from '../perform-implementation.js';
7
+ import { checkOutputTargets } from '../../bounded-execution/file-artifact-check.js';
8
+ import { spawnSync } from 'node:child_process';
9
+ import { join } from 'node:path';
10
+ const READ_ROUTES = ['audit', 'review', 'debug', 'investigate', 'explore'];
11
+ export function capturePreTaskState(state) {
12
+ const cwd = state.cwd;
13
+ if (!cwd)
14
+ return;
15
+ const headResult = spawnSync('git', ['rev-parse', 'HEAD'], { cwd, encoding: 'utf8' });
16
+ if (headResult.status !== 0)
17
+ return;
18
+ state.preTaskHeadSha = headResult.stdout.trim();
19
+ const lsResult = spawnSync('git', ['ls-files', '--others', '--exclude-standard'], { cwd, encoding: 'utf8' });
20
+ if (lsResult.status !== 0) {
21
+ state.preTaskUntrackedFiles = new Set();
22
+ return;
23
+ }
24
+ const relativeFiles = lsResult.stdout.split('\n').filter(line => line.length > 0);
25
+ state.preTaskUntrackedFiles = new Set(relativeFiles.map((rel) => join(cwd, rel)));
26
+ }
27
+ // Forward declaration — the actual parser lives in findings-parser.ts.
28
+ // We parse inline to keep the dependency lightweight and avoid importing
29
+ // the full findings-parser which may have criteria-specific logic.
30
+ function parseFindingsFromProse(text) {
31
+ if (!text || text.trim().length === 0)
32
+ return [];
33
+ const blocks = [];
34
+ const lines = text.split('\n');
35
+ let current = [];
36
+ for (const line of lines) {
37
+ if (/^## Finding \d+:/.test(line)) {
38
+ if (current.length > 0)
39
+ blocks.push(current.join('\n'));
40
+ current = [line];
41
+ }
42
+ else if (current.length > 0) {
43
+ current.push(line);
44
+ }
45
+ }
46
+ if (current.length > 0)
47
+ blocks.push(current.join('\n'));
48
+ const findings = [];
49
+ const SEVERITY_VALUES = new Set(['critical', 'high', 'medium', 'low']);
50
+ for (const block of blocks) {
51
+ const claimLine = block.match(/^\s*- Claim:\s*(.+)$/im)?.[1]?.trim() ?? '';
52
+ if (claimLine.startsWith('[N/A]'))
53
+ continue;
54
+ const sevRaw = block.match(/^\s*- Severity:\s*(\w+)/im)?.[1]?.toLowerCase();
55
+ const severity = sevRaw && SEVERITY_VALUES.has(sevRaw)
56
+ ? sevRaw
57
+ : 'medium';
58
+ const category = block.match(/^\s*- Category:\s*(\S+)/im)?.[1] ?? 'general';
59
+ const evidence = block.match(/^\s*- (?:Issue|Evidence):\s*(.+)$/im)?.[1]?.trim();
60
+ const suggestion = block.match(/^\s*- (?:Suggestion|Fix):\s*(.+)$/im)?.[1]?.trim();
61
+ const f = { severity, category, claim: claimLine, source: 'implementer' };
62
+ if (evidence)
63
+ f.evidence = evidence;
64
+ if (suggestion)
65
+ f.suggestion = suggestion;
66
+ findings.push(f);
67
+ }
68
+ return findings;
69
+ }
70
+ function defaultImplementPayload(self) {
71
+ return {
72
+ workerSelfAssessment: self,
73
+ summary: '',
74
+ filesChanged: [],
75
+ findings: [],
76
+ citations: [],
77
+ criteriaSucceeded: [],
78
+ criteriaErrors: [],
79
+ sourcesUsed: [],
80
+ };
81
+ }
82
+ function tel(t0, turn, stop) {
83
+ return {
84
+ stageLabel: 'implement',
85
+ durationMs: Date.now() - t0,
86
+ costUSD: turn.costUSD ?? null,
87
+ turnsUsed: turn.turnsUsed ?? 0,
88
+ stopReason: stop,
89
+ };
90
+ }
91
+ export async function implementHandler(state) {
92
+ const t0 = Date.now();
93
+ try {
94
+ // Snapshot HEAD + untracked files before the worker runs — Committing reads
95
+ // this to detect a worker-authored commit (HEAD moved between snapshots).
96
+ capturePreTaskState(state);
97
+ const ctx = state.executionContext;
98
+ if (!ctx) {
99
+ return {
100
+ outcome: 'halt',
101
+ comment: 'implement halted: state.executionContext not set',
102
+ payload: defaultImplementPayload('failed'),
103
+ telemetry: tel(t0, {}, 'transport_error'),
104
+ };
105
+ }
106
+ // v5: Call performImplementation to orchestrate read or write routes
107
+ // and populate state.lastRunResult.
108
+ await performImplementation(state);
109
+ const result = state.lastRunResult;
110
+ if (!result) {
111
+ return {
112
+ outcome: 'halt',
113
+ comment: 'implement halted: no result from performImplementation',
114
+ payload: defaultImplementPayload('failed'),
115
+ telemetry: tel(t0, {}, 'transport_error'),
116
+ };
117
+ }
118
+ // Transform lastRunResult into ImplementPayload for the stage gate.
119
+ // Note: parseWorkerOutput extracts filesChanged from the structured output JSON.
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
+ }
149
+ const payload = {
150
+ workerSelfAssessment: result.workerStatus ?? 'failed',
151
+ summary: parsed.summary ?? result.summary ?? '',
152
+ filesChanged: parsed.filesChanged ?? result.filesWritten ?? result.filesChanged ?? [],
153
+ findings,
154
+ citations: (result.citations ?? parsed.citations ?? []),
155
+ criteriaSucceeded: result.criteriaSucceeded ?? parsed.criteriaSucceeded ?? [],
156
+ criteriaErrors: result.criteriaErrors ?? parsed.criteriaErrors ?? [],
157
+ sourcesUsed: result.sourcesUsed ?? parsed.sourcesUsed ?? [],
158
+ };
159
+ // Halt ONLY on hard worker error. 'incomplete' (worker hit a cap but
160
+ // still produced output) flows through to subsequent stages so the
161
+ // compose envelope reports the truthful incomplete state — same as
162
+ // the legacy executor's behavior.
163
+ if (result.status === 'error') {
164
+ return {
165
+ outcome: 'halt',
166
+ comment: `implement status: ${result.status}`,
167
+ payload,
168
+ telemetry: tel(t0, result, 'normal'),
169
+ };
170
+ }
171
+ return {
172
+ outcome: 'advance',
173
+ payload,
174
+ telemetry: tel(t0, result, 'normal'),
175
+ };
176
+ }
177
+ catch (err) {
178
+ const msg = err instanceof Error ? err.message : String(err);
179
+ return {
180
+ outcome: 'halt',
181
+ comment: `implement crashed: ${msg}`,
182
+ payload: defaultImplementPayload('failed'),
183
+ telemetry: {
184
+ stageLabel: 'implement',
185
+ durationMs: Date.now() - t0,
186
+ costUSD: null,
187
+ turnsUsed: 0,
188
+ stopReason: 'transport_error',
189
+ },
190
+ };
191
+ }
192
+ }
193
+ // v4-compat shim: tests/helpers/bootstrap.ts and a few other call sites use
194
+ // `new TaskExecutor(emitter)` and `executor.handler.bind(executor)`. The v5
195
+ // stage handler is the bare `implementHandler` function above. This class
196
+ // preserves the test-fixture contract while delegating to the v5 handler.
197
+ export class TaskExecutor {
198
+ _emitter;
199
+ constructor(_emitter) {
200
+ this._emitter = _emitter;
201
+ }
202
+ handler = async (state) => {
203
+ await implementHandler(state);
204
+ };
205
+ }
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":"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"}
@@ -1,19 +1,13 @@
1
1
  import type { LifecycleState } from '../stage-plan-types.js';
2
+ import type { StageGate } from '../stage-io.js';
2
3
  /**
3
- * StageHandler for row 2.5 (prepare_execution_context).
4
+ * Stage handler: row 2.5 prepare_execution_context.
4
5
  *
5
- * Reads from state:
6
- * - state.task / state.executionContext: idempotency guards. If callers
7
- * pre-populate them via DispatchInput.context (or a future intake step),
8
- * this handler is a structural acknowledgment.
9
- * - state.request: the rawRequest passed to dispatch. Used as a fallback
10
- * to surface the tasks list when callers haven't supplied state.task.
6
+ * Seeding: populates state.task, state.reviewPolicy, state.diffTracker.
7
+ * This handler is the canonical "state was set up correctly" acknowledgment
8
+ * for downstream handlers that read from these slots.
11
9
  *
12
- * Writes to state (only when slots are empty AND request is shaped for it):
13
- * - state.task: the first TaskSpec from a delegate-style request payload.
14
- * runTasks (in task-runner.ts) dispatches one StagePlan per TaskSpec,
15
- * so state.task is the per-dispatch task. This handler surfaces task[0]
16
- * as a fallback for downstream handlers that need a TaskSpec.
10
+ * §5.1 payload: null. Gate exists only for the per-stage telemetry slot.
17
11
  */
18
- export declare function prepareExecutionContextHandler(state: LifecycleState): Promise<void>;
12
+ export declare function prepareExecutionContextHandler(state: LifecycleState): Promise<StageGate<null>>;
19
13
  //# sourceMappingURL=prepare-execution-context-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-execution-context-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCzF"}
1
+ {"version":3,"file":"prepare-execution-context-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CA0E1B"}
@@ -1,60 +1,83 @@
1
1
  import { DiffTracker } from '../diff-tracker.js';
2
2
  /**
3
- * StageHandler for row 2.5 (prepare_execution_context).
3
+ * Stage handler: row 2.5 prepare_execution_context.
4
4
  *
5
- * Reads from state:
6
- * - state.task / state.executionContext: idempotency guards. If callers
7
- * pre-populate them via DispatchInput.context (or a future intake step),
8
- * this handler is a structural acknowledgment.
9
- * - state.request: the rawRequest passed to dispatch. Used as a fallback
10
- * to surface the tasks list when callers haven't supplied state.task.
5
+ * Seeding: populates state.task, state.reviewPolicy, state.diffTracker.
6
+ * This handler is the canonical "state was set up correctly" acknowledgment
7
+ * for downstream handlers that read from these slots.
11
8
  *
12
- * Writes to state (only when slots are empty AND request is shaped for it):
13
- * - state.task: the first TaskSpec from a delegate-style request payload.
14
- * runTasks (in task-runner.ts) dispatches one StagePlan per TaskSpec,
15
- * so state.task is the per-dispatch task. This handler surfaces task[0]
16
- * as a fallback for downstream handlers that need a TaskSpec.
9
+ * §5.1 payload: null. Gate exists only for the per-stage telemetry slot.
17
10
  */
18
11
  export async function prepareExecutionContextHandler(state) {
19
- // Fallback: if rawRequest carries a TaskSpec[] and state.task is empty,
20
- // surface the first task so per-task handlers have something to read.
21
- if (!state.task) {
22
- const req = state.request;
23
- const first = req?.tasks?.[0];
24
- if (first)
25
- state.task = first;
26
- }
27
- // #45 Step 7e: per-task reviewPolicy lives on TaskSpec, not on rawRequest's
28
- // top-level. Override state.reviewPolicy from state.task when present so
29
- // the per-row runConditions (gating spec/quality/diff chains) see the
30
- // right value. This must run unconditionally callers via
31
- // runTaskViaDispatcher pre-populate state.task + state.executionContext but
32
- // the dispatcher's initialState defaults state.reviewPolicy to 'full' since
33
- // the per-task reviewPolicy isn't visible at top-level rawRequest.
34
- const task = state.task;
35
- if (task && task.reviewPolicy) {
36
- state.reviewPolicy = task.reviewPolicy;
37
- }
38
- // Tool sweep #6: snapshot the worker's declared filePaths BEFORE the
39
- // implementer runs so reviewer stages can produce a cumulative diff
40
- // against the pre-task baseline. Skip read-only routes (audit / review
41
- // / verify / debug / investigate / explore) they don't write files
42
- // by sandbox policy, so a tracker would just be empty noise.
43
- if (!state.diffTracker && task && state.toolCategory !== 'read_only') {
44
- const cwd = task.cwd;
45
- const filePaths = Array.isArray(task.filePaths) ? task.filePaths : [];
46
- if (cwd && filePaths.length > 0) {
47
- const tracker = new DiffTracker(cwd);
48
- try {
49
- await tracker.snapshot(filePaths);
50
- state.diffTracker = tracker;
51
- }
52
- catch {
53
- // Snapshot failures (permission, unreadable) shouldn't block the
54
- // task. Reviewer just sees an empty diff and falls back to the
55
- // worker-output-only path — degraded but not broken.
12
+ const t0 = Date.now();
13
+ try {
14
+ // Fallback: if rawRequest carries a TaskSpec[] and state.task is empty,
15
+ // surface the first task so per-task handlers have something to read.
16
+ if (!state.task) {
17
+ const req = state.request;
18
+ const first = req?.tasks?.[0];
19
+ if (first)
20
+ state.task = first;
21
+ }
22
+ // #45 Step 7e: per-task reviewPolicy lives on TaskSpec, not on rawRequest's
23
+ // top-level. Override state.reviewPolicy from state.task when present so
24
+ // the per-row runConditions (gating spec/quality/diff chains) see the
25
+ // right value.
26
+ const task = state.task;
27
+ if (task?.reviewPolicy) {
28
+ state.reviewPolicy = task.reviewPolicy;
29
+ }
30
+ // Tool sweep #6: snapshot the worker's declared filePaths BEFORE the
31
+ // implementer runs so reviewer stages can produce a cumulative diff
32
+ // against the pre-task baseline. Skip read-only routes (audit / review
33
+ // / verify / debug / investigate / explore) they don't write files
34
+ // by sandbox policy, so a tracker would just be empty noise.
35
+ if (!state.diffTracker && task && state.toolCategory !== 'read_only') {
36
+ const cwd = task.cwd;
37
+ const filePaths = Array.isArray(task.filePaths) ? task.filePaths : [];
38
+ if (cwd && filePaths.length > 0) {
39
+ const tracker = new DiffTracker(cwd);
40
+ try {
41
+ await tracker.snapshot(filePaths);
42
+ state.diffTracker = tracker;
43
+ }
44
+ catch {
45
+ // Snapshot failures (permission, unreadable) shouldn't block the
46
+ // task. Reviewer just sees an empty diff and falls back to the
47
+ // worker-output-only path degraded but not broken.
48
+ }
56
49
  }
57
50
  }
51
+ return {
52
+ outcome: 'advance',
53
+ payload: null,
54
+ telemetry: {
55
+ stageLabel: 'prepare',
56
+ durationMs: Date.now() - t0,
57
+ costUSD: 0,
58
+ turnsUsed: 0,
59
+ stopReason: 'normal',
60
+ },
61
+ };
62
+ }
63
+ catch (err) {
64
+ const msg = err instanceof Error ? err.message : String(err);
65
+ const comment = /brief schema|invalid brief/i.test(msg) ? `brief_invalid: ${msg}` :
66
+ /workspace|traversal|sandbox/i.test(msg) ? `workspace_violation: ${msg}` :
67
+ /context_block|missing/i.test(msg) ? `context_block_missing: ${msg}` :
68
+ `prepare_failed: ${msg}`;
69
+ return {
70
+ outcome: 'halt',
71
+ comment,
72
+ payload: null,
73
+ telemetry: {
74
+ stageLabel: 'prepare',
75
+ durationMs: Date.now() - t0,
76
+ costUSD: 0,
77
+ turnsUsed: 0,
78
+ stopReason: 'transport_error',
79
+ },
80
+ };
58
81
  }
59
82
  }
60
83
  //# sourceMappingURL=prepare-execution-context-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-execution-context-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAAqB;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,OAA6C,CAAC;QAChE,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,sEAAsE;IACtE,2DAA2D;IAC3D,4EAA4E;IAC5E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,6DAA6D;IAC7D,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAClC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;gBACjE,+DAA+D;gBAC/D,qDAAqD;YACvD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"prepare-execution-context-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/prepare-execution-context-handler.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { LifecycleState } from '../stage-plan-types.js';
2
- export declare function registerToBlockStoreHandler(state: LifecycleState): void;
2
+ import type { StageGate, RegisterBlockPayload } from '../stage-io.js';
3
+ export declare function registerToBlockStoreHandler(state: LifecycleState): Promise<StageGate<RegisterBlockPayload>>;
3
4
  //# sourceMappingURL=register-context-block-handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-context-block-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/register-context-block-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAevE"}
1
+ {"version":3,"file":"register-context-block-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/register-context-block-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItE,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAqCjH"}
@@ -1,18 +1,39 @@
1
- export function registerToBlockStoreHandler(state) {
2
- if (state.terminal)
3
- return;
4
- const pc = state.projectContext;
1
+ const MAX_BYTES = 50 * 1024 * 1024;
2
+ export async function registerToBlockStoreHandler(state) {
3
+ const t0 = Date.now();
5
4
  const req = state.request;
6
- if (!pc || !req?.content) {
7
- state.terminal = true;
8
- state.errorCode = 'invalid_request';
9
- return;
5
+ const bytes = Buffer.byteLength(req?.content ?? '', 'utf-8');
6
+ if (bytes > MAX_BYTES) {
7
+ return {
8
+ outcome: 'halt',
9
+ comment: `payload_too_large: ${bytes} bytes`,
10
+ payload: { blockId: '', bytes },
11
+ telemetry: { stageLabel: 'register-block', durationMs: Date.now() - t0, costUSD: 0, turnsUsed: 0, stopReason: 'normal' },
12
+ };
13
+ }
14
+ try {
15
+ // Existing API: pc.contextBlocks.register(content) → RegisteredBlock { id, ... }
16
+ // See packages/core/src/lifecycle/handlers/register-context-block-handlers.ts:13
17
+ // and packages/core/src/stores/context-block-tool.ts:23 for the interface.
18
+ const pc = state.projectContext;
19
+ const registered = pc.contextBlocks.register(req?.content ?? '');
20
+ // v4 back-compat: compose_response reads state.blockRegistration to detect
21
+ // the register-context-block route. v5 emits the same data via the gate's
22
+ // payload; we keep this state slot populated for the existing compose path.
23
+ state.blockRegistration = { id: registered.id, size: bytes, ttlMs: pc.contextBlocks.ttlMs };
24
+ return {
25
+ outcome: 'advance',
26
+ payload: { blockId: registered.id, bytes },
27
+ telemetry: { stageLabel: 'register-block', durationMs: Date.now() - t0, costUSD: 0, turnsUsed: 0, stopReason: 'normal' },
28
+ };
29
+ }
30
+ catch (err) {
31
+ return {
32
+ outcome: 'halt',
33
+ comment: `store_write_failed: ${err instanceof Error ? err.message : String(err)}`,
34
+ payload: { blockId: '', bytes },
35
+ telemetry: { stageLabel: 'register-block', durationMs: Date.now() - t0, costUSD: 0, turnsUsed: 0, stopReason: 'transport_error' },
36
+ };
10
37
  }
11
- const registered = pc.contextBlocks.register(req.content);
12
- state.blockRegistration = {
13
- id: registered.id,
14
- size: Buffer.byteLength(req.content, 'utf8'),
15
- ttlMs: pc.contextBlocks.ttlMs,
16
- };
17
38
  }
18
39
  //# sourceMappingURL=register-context-block-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-context-block-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/register-context-block-handlers.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,2BAA2B,CAAC,KAAqB;IAC/D,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO;IAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,cAA4C,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAK,CAAC,OAA0C,CAAC;IAC7D,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1D,KAAK,CAAC,iBAAiB,GAAG;QACxB,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;QAC5C,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"register-context-block-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/register-context-block-handlers.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,KAAqB;IACrE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,KAAK,CAAC,OAA0C,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAE7D,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,sBAAsB,KAAK,QAAQ;YAC5C,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE;YAC/B,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;SACzH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,iFAAiF;QACjF,iFAAiF;QACjF,2EAA2E;QAC3E,MAAM,EAAE,GAAG,KAAK,CAAC,cAAqB,CAAC;QACvC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACjE,2EAA2E;QAC3E,0EAA0E;QAC1E,4EAA4E;QAC3E,KAAa,CAAC,iBAAiB,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACrG,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE;YAC1C,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;SACzH,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,uBAAuB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAClF,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE;YAC/B,SAAS,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE;SAClI,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LifecycleState } from '../stage-plan-types.js';
2
+ import type { StageGate, ReviewPayload } from '../stage-io.js';
3
+ export declare function reviewHandler(state: LifecycleState): Promise<StageGate<ReviewPayload>>;
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"}