@zhixuan92/multi-model-agent-core 4.5.4 → 4.6.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 (271) hide show
  1. package/README.md +8 -3
  2. package/dist/escalation/delegate-with-escalation.d.ts +2 -2
  3. package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
  4. package/dist/escalation/delegate-with-escalation.js +11 -17
  5. package/dist/escalation/delegate-with-escalation.js.map +1 -1
  6. package/dist/escalation/fallback-helpers.d.ts +5 -5
  7. package/dist/escalation/fallback-helpers.d.ts.map +1 -1
  8. package/dist/escalation/fallback-helpers.js +5 -3
  9. package/dist/escalation/fallback-helpers.js.map +1 -1
  10. package/dist/events/event-builder.d.ts +36 -5
  11. package/dist/events/event-builder.d.ts.map +1 -1
  12. package/dist/events/event-builder.js +173 -31
  13. package/dist/events/event-builder.js.map +1 -1
  14. package/dist/events/observability-events.d.ts +6 -0
  15. package/dist/events/observability-events.d.ts.map +1 -1
  16. package/dist/events/observability-events.js +5 -0
  17. package/dist/events/observability-events.js.map +1 -1
  18. package/dist/events/telemetry-types.d.ts +10 -0
  19. package/dist/events/telemetry-types.d.ts.map +1 -1
  20. package/dist/events/verbose-log-channel.d.ts +7 -7
  21. package/dist/events/verbose-log-channel.js +10 -10
  22. package/dist/index.d.ts +9 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +8 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/lifecycle/annotate-parser.d.ts +9 -0
  27. package/dist/lifecycle/annotate-parser.d.ts.map +1 -0
  28. package/dist/lifecycle/annotate-parser.js +83 -0
  29. package/dist/lifecycle/annotate-parser.js.map +1 -0
  30. package/dist/lifecycle/annotate-prompts.d.ts +9 -0
  31. package/dist/lifecycle/annotate-prompts.d.ts.map +1 -0
  32. package/dist/lifecycle/annotate-prompts.js +86 -0
  33. package/dist/lifecycle/annotate-prompts.js.map +1 -0
  34. package/dist/lifecycle/auto-register-context-block.d.ts +2 -2
  35. package/dist/lifecycle/auto-register-context-block.d.ts.map +1 -1
  36. package/dist/lifecycle/auto-register-context-block.js.map +1 -1
  37. package/dist/lifecycle/build-cancelled-result.d.ts +11 -0
  38. package/dist/lifecycle/build-cancelled-result.d.ts.map +1 -0
  39. package/dist/lifecycle/build-cancelled-result.js +27 -0
  40. package/dist/lifecycle/build-cancelled-result.js.map +1 -0
  41. package/dist/lifecycle/executor-output-types.d.ts +2 -2
  42. package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
  43. package/dist/lifecycle/fallback-report.d.ts +2 -2
  44. package/dist/lifecycle/fallback-report.d.ts.map +1 -1
  45. package/dist/lifecycle/fallback-report.js.map +1 -1
  46. package/dist/lifecycle/findings-parser.d.ts +2 -0
  47. package/dist/lifecycle/findings-parser.d.ts.map +1 -1
  48. package/dist/lifecycle/findings-parser.js +9 -4
  49. package/dist/lifecycle/findings-parser.js.map +1 -1
  50. package/dist/lifecycle/git-toplevel.d.ts +12 -0
  51. package/dist/lifecycle/git-toplevel.d.ts.map +1 -0
  52. package/dist/lifecycle/git-toplevel.js +49 -0
  53. package/dist/lifecycle/git-toplevel.js.map +1 -0
  54. package/dist/lifecycle/handlers/annotator.d.ts +2 -1
  55. package/dist/lifecycle/handlers/annotator.d.ts.map +1 -1
  56. package/dist/lifecycle/handlers/annotator.js +225 -7
  57. package/dist/lifecycle/handlers/annotator.js.map +1 -1
  58. package/dist/lifecycle/handlers/baseline-handlers.d.ts +10 -5
  59. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  60. package/dist/lifecycle/handlers/baseline-handlers.js +206 -316
  61. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  62. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +3 -0
  63. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -0
  64. package/dist/lifecycle/handlers/enrich-runtime-result.js +191 -0
  65. package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -0
  66. package/dist/lifecycle/handlers/git-commit-handler.d.ts +3 -2
  67. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  68. package/dist/lifecycle/handlers/git-commit-handler.js +139 -110
  69. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  70. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +7 -13
  71. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
  72. package/dist/lifecycle/handlers/prepare-execution-context-handler.js +72 -49
  73. package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
  74. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +2 -1
  75. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +1 -1
  76. package/dist/lifecycle/handlers/register-context-block-handlers.js +35 -14
  77. package/dist/lifecycle/handlers/register-context-block-handlers.js.map +1 -1
  78. package/dist/lifecycle/handlers/review-handler.d.ts +2 -1
  79. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
  80. package/dist/lifecycle/handlers/review-handler.js +152 -154
  81. package/dist/lifecycle/handlers/review-handler.js.map +1 -1
  82. package/dist/lifecycle/handlers/rework-handler.d.ts +2 -1
  83. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
  84. package/dist/lifecycle/handlers/rework-handler.js +62 -14
  85. package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
  86. package/dist/lifecycle/handlers/task-executor.d.ts +5 -4
  87. package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
  88. package/dist/lifecycle/handlers/task-executor.js +153 -74
  89. package/dist/lifecycle/handlers/task-executor.js.map +1 -1
  90. package/dist/lifecycle/handlers/terminal-handlers.d.ts +22 -0
  91. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  92. package/dist/lifecycle/handlers/terminal-handlers.js +86 -5
  93. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  94. package/dist/lifecycle/lifecycle-context.d.ts +31 -3
  95. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  96. package/dist/lifecycle/lifecycle-dispatcher.d.ts +18 -19
  97. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  98. package/dist/lifecycle/lifecycle-dispatcher.js +38 -22
  99. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  100. package/dist/lifecycle/lifecycle-driver.d.ts +15 -8
  101. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  102. package/dist/lifecycle/lifecycle-driver.js +110 -29
  103. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  104. package/dist/lifecycle/merge-stage-stats.d.ts +3 -3
  105. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
  106. package/dist/lifecycle/merge-stage-stats.js +2 -2
  107. package/dist/lifecycle/merge-stage-stats.js.map +1 -1
  108. package/dist/lifecycle/perform-implementation.d.ts +3 -0
  109. package/dist/lifecycle/perform-implementation.d.ts.map +1 -0
  110. package/dist/lifecycle/perform-implementation.js +264 -0
  111. package/dist/lifecycle/perform-implementation.js.map +1 -0
  112. package/dist/lifecycle/repo-hygiene.d.ts +14 -0
  113. package/dist/lifecycle/repo-hygiene.d.ts.map +1 -0
  114. package/dist/lifecycle/repo-hygiene.js +71 -0
  115. package/dist/lifecycle/repo-hygiene.js.map +1 -0
  116. package/dist/lifecycle/shared-compute.d.ts +4 -4
  117. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  118. package/dist/lifecycle/shared-compute.js +1 -1
  119. package/dist/lifecycle/shared-compute.js.map +1 -1
  120. package/dist/lifecycle/stage-io.d.ts +139 -0
  121. package/dist/lifecycle/stage-io.d.ts.map +1 -0
  122. package/dist/lifecycle/stage-io.js +20 -0
  123. package/dist/lifecycle/stage-io.js.map +1 -0
  124. package/dist/lifecycle/stage-plan-builder.d.ts +3 -3
  125. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  126. package/dist/lifecycle/stage-plan-builder.js +157 -128
  127. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  128. package/dist/lifecycle/stage-plan-types.d.ts +5 -21
  129. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  130. package/dist/lifecycle/stage-progression.d.ts +3 -15
  131. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  132. package/dist/lifecycle/stage-progression.js +48 -91
  133. package/dist/lifecycle/stage-progression.js.map +1 -1
  134. package/dist/lifecycle/task-completion-summary.d.ts +2 -2
  135. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  136. package/dist/lifecycle/task-completion-summary.js +0 -6
  137. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  138. package/dist/lifecycle/task-executor.d.ts +23 -0
  139. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  140. package/dist/lifecycle/task-executor.js +77 -5
  141. package/dist/lifecycle/task-executor.js.map +1 -1
  142. package/dist/lifecycle/task-grouping.d.ts +19 -0
  143. package/dist/lifecycle/task-grouping.d.ts.map +1 -0
  144. package/dist/lifecycle/task-grouping.js +48 -0
  145. package/dist/lifecycle/task-grouping.js.map +1 -0
  146. package/dist/lifecycle/task-runner.d.ts +20 -7
  147. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  148. package/dist/lifecycle/task-runner.js +42 -278
  149. package/dist/lifecycle/task-runner.js.map +1 -1
  150. package/dist/lifecycle/tool-config-types.d.ts +9 -0
  151. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  152. package/dist/lifecycle/worker-output-contract.d.ts +9 -15
  153. package/dist/lifecycle/worker-output-contract.d.ts.map +1 -1
  154. package/dist/lifecycle/worker-output-contract.js +45 -30
  155. package/dist/lifecycle/worker-output-contract.js.map +1 -1
  156. package/dist/providers/assemble-run-result.d.ts +3 -3
  157. package/dist/providers/assemble-run-result.d.ts.map +1 -1
  158. package/dist/providers/assemble-run-result.js +20 -9
  159. package/dist/providers/assemble-run-result.js.map +1 -1
  160. package/dist/providers/claude-session.d.ts.map +1 -1
  161. package/dist/providers/claude-session.js +1 -0
  162. package/dist/providers/claude-session.js.map +1 -1
  163. package/dist/providers/claude.js.map +1 -1
  164. package/dist/providers/codex-cli-launch.js +1 -1
  165. package/dist/providers/codex-cli-launch.js.map +1 -1
  166. package/dist/providers/codex-cli-session.d.ts +4 -1
  167. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  168. package/dist/providers/codex-cli-session.js +73 -46
  169. package/dist/providers/codex-cli-session.js.map +1 -1
  170. package/dist/providers/codex.js.map +1 -1
  171. package/dist/providers/index.d.ts +1 -0
  172. package/dist/providers/index.d.ts.map +1 -1
  173. package/dist/providers/index.js +1 -0
  174. package/dist/providers/index.js.map +1 -1
  175. package/dist/providers/normalize-claude.d.ts +2 -0
  176. package/dist/providers/normalize-claude.d.ts.map +1 -1
  177. package/dist/providers/normalize-claude.js +1 -0
  178. package/dist/providers/normalize-claude.js.map +1 -1
  179. package/dist/providers/run-annotator-turn.d.ts +24 -0
  180. package/dist/providers/run-annotator-turn.d.ts.map +1 -0
  181. package/dist/providers/run-annotator-turn.js +43 -0
  182. package/dist/providers/run-annotator-turn.js.map +1 -0
  183. package/dist/providers/run-worker-turn.d.ts +26 -0
  184. package/dist/providers/run-worker-turn.d.ts.map +1 -0
  185. package/dist/providers/run-worker-turn.js +58 -0
  186. package/dist/providers/run-worker-turn.js.map +1 -0
  187. package/dist/providers/runner-types.d.ts +1 -1
  188. package/dist/providers/runner-types.d.ts.map +1 -1
  189. package/dist/reporting/headline-composer.d.ts +3 -3
  190. package/dist/reporting/headline-composer.d.ts.map +1 -1
  191. package/dist/review/index.d.ts +4 -3
  192. package/dist/review/index.d.ts.map +1 -1
  193. package/dist/review/index.js +7 -4
  194. package/dist/review/index.js.map +1 -1
  195. package/dist/review/parse-review-report.d.ts +7 -1
  196. package/dist/review/parse-review-report.d.ts.map +1 -1
  197. package/dist/review/parse-review-report.js +13 -21
  198. package/dist/review/parse-review-report.js.map +1 -1
  199. package/dist/review/review-verdict-mapping.d.ts +3 -3
  200. package/dist/review/review-verdict-mapping.d.ts.map +1 -1
  201. package/dist/review/review-verdict-mapping.js +1 -1
  202. package/dist/review/review-verdict-mapping.js.map +1 -1
  203. package/dist/review/run-reviewer.d.ts +40 -0
  204. package/dist/review/run-reviewer.d.ts.map +1 -0
  205. package/dist/review/run-reviewer.js +54 -0
  206. package/dist/review/run-reviewer.js.map +1 -0
  207. package/dist/review/templates/quality-review.d.ts +5 -0
  208. package/dist/review/templates/quality-review.d.ts.map +1 -1
  209. package/dist/review/templates/quality-review.js +35 -25
  210. package/dist/review/templates/quality-review.js.map +1 -1
  211. package/dist/review/templates/spec-review.d.ts +6 -0
  212. package/dist/review/templates/spec-review.d.ts.map +1 -1
  213. package/dist/review/templates/spec-review.js +36 -8
  214. package/dist/review/templates/spec-review.js.map +1 -1
  215. package/dist/stores/batch-cache.d.ts +3 -3
  216. package/dist/stores/batch-cache.d.ts.map +1 -1
  217. package/dist/stores/batch-cache.js.map +1 -1
  218. package/dist/stores/batch-registry.d.ts +31 -0
  219. package/dist/stores/batch-registry.d.ts.map +1 -1
  220. package/dist/stores/batch-registry.js +12 -0
  221. package/dist/stores/batch-registry.js.map +1 -1
  222. package/dist/tools/debug/tool-config.js +1 -1
  223. package/dist/tools/debug/tool-config.js.map +1 -1
  224. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  225. package/dist/tools/delegate/tool-config.js +3 -1
  226. package/dist/tools/delegate/tool-config.js.map +1 -1
  227. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  228. package/dist/tools/execute-plan/tool-config.js +3 -1
  229. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  230. package/dist/tools/investigate/tool-config.js +1 -1
  231. package/dist/tools/investigate/tool-config.js.map +1 -1
  232. package/dist/tools/retry/tool-config.js.map +1 -1
  233. package/dist/types/run-result.d.ts +164 -213
  234. package/dist/types/run-result.d.ts.map +1 -1
  235. package/dist/types/run-result.js +17 -0
  236. package/dist/types/run-result.js.map +1 -1
  237. package/dist/types.d.ts +1 -1
  238. package/dist/types.d.ts.map +1 -1
  239. package/package.json +1 -1
  240. package/dist/lifecycle/handlers/derive-terminal-status.d.ts +0 -10
  241. package/dist/lifecycle/handlers/derive-terminal-status.d.ts.map +0 -1
  242. package/dist/lifecycle/handlers/derive-terminal-status.js +0 -35
  243. package/dist/lifecycle/handlers/derive-terminal-status.js.map +0 -1
  244. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +0 -27
  245. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +0 -1
  246. package/dist/lifecycle/handlers/files-written-cross-check.js +0 -91
  247. package/dist/lifecycle/handlers/files-written-cross-check.js.map +0 -1
  248. package/dist/lifecycle/handlers/verify-stage.d.ts +0 -37
  249. package/dist/lifecycle/handlers/verify-stage.d.ts.map +0 -1
  250. package/dist/lifecycle/handlers/verify-stage.js +0 -208
  251. package/dist/lifecycle/handlers/verify-stage.js.map +0 -1
  252. package/dist/review/default-engines.d.ts +0 -3
  253. package/dist/review/default-engines.d.ts.map +0 -1
  254. package/dist/review/default-engines.js +0 -22
  255. package/dist/review/default-engines.js.map +0 -1
  256. package/dist/review/reviewer-engine.d.ts +0 -53
  257. package/dist/review/reviewer-engine.d.ts.map +0 -1
  258. package/dist/review/reviewer-engine.js +0 -47
  259. package/dist/review/reviewer-engine.js.map +0 -1
  260. package/dist/review/reviewer-output-parser.d.ts +0 -12
  261. package/dist/review/reviewer-output-parser.d.ts.map +0 -1
  262. package/dist/review/reviewer-output-parser.js +0 -213
  263. package/dist/review/reviewer-output-parser.js.map +0 -1
  264. package/dist/review/reviewer-prompt-builder.d.ts +0 -21
  265. package/dist/review/reviewer-prompt-builder.d.ts.map +0 -1
  266. package/dist/review/reviewer-prompt-builder.js +0 -22
  267. package/dist/review/reviewer-prompt-builder.js.map +0 -1
  268. package/dist/review/templates/annotate-completion.d.ts +0 -12
  269. package/dist/review/templates/annotate-completion.d.ts.map +0 -1
  270. package/dist/review/templates/annotate-completion.js +0 -72
  271. package/dist/review/templates/annotate-completion.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"merge-stage-stats.d.ts","sourceRoot":"","sources":["../../src/lifecycle/merge-stage-stats.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,YAAY,CAAC;AAEjB,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAsCN;AASD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,SAAS,GACnB,IAAI,CAiCN"}
1
+ {"version":3,"file":"merge-stage-stats.d.ts","sourceRoot":"","sources":["../../src/lifecycle/merge-stage-stats.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,YAAY,CAAC;AAEjB,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAsCN;AASD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,gBAAgB,GAC1B,IAAI,CAiCN"}
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // Helper that mutates state.lastRunResult.stageStats[<stage>] to record
4
4
  // per-stage execution costs as each stage handler completes. Without this,
5
- // only the implementer's RunResult.usage is visible at terminal — the
5
+ // only the implementer's RuntimeRunResult.usage is visible at terminal — the
6
6
  // reviewer / annotator / rework / diff / verify costs are dropped on the
7
7
  // floor. Affected events:
8
8
  // - local `task_completed` (top-level inputTokens / outputTokens / cost)
@@ -67,7 +67,7 @@ function combineCost(a, b) {
67
67
  * lastRunResult.
68
68
  *
69
69
  * Tool sweep #6 fix: the spec-chain and quality-chain handlers both
70
- * replaced `state.lastRunResult` with the rework's RunResult, only
70
+ * replaced `state.lastRunResult` with the rework's RuntimeRunResult, only
71
71
  * keeping `stageStats`. Implementing-stage file writes were thereby
72
72
  * lost when a spec-rework round produced no writes:
73
73
  * implementer: filesWritten=['/x.ts'] ← real edit applied
@@ -1 +1 @@
1
- {"version":3,"file":"merge-stage-stats.js","sourceRoot":"","sources":["../../src/lifecycle/merge-stage-stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-stage-stats.js","sourceRoot":"","sources":["../../src/lifecycle/merge-stage-stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LifecycleState } from './stage-plan-types.js';
2
+ export declare function performImplementation(state: LifecycleState): Promise<void>;
3
+ //# sourceMappingURL=perform-implementation.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,264 @@
1
+ // Extracted executor closure from task-runner.ts.
2
+ // This function orchestrates the implementation stage: read-route sequential
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';
6
+ import { parseStructuredReport } from '../reporting/structured-report.js';
7
+ import { mergeStageStats } from './merge-stage-stats.js';
8
+ import { startProgressWatchdog, recordPostHocSignals } from '../bounded-execution/progress-watchdog.js';
9
+ import { resolveSubtypeSpec, isReadOnlyRoute } from './parallel-criteria-routes.js';
10
+ import { runReadRouteImplementer } from './handlers/read-route-implementer.js';
11
+ import { HUMAN_LABEL } from './stage-labels.js';
12
+ import { readFile as fsReadFile } from 'fs/promises';
13
+ export async function performImplementation(state) {
14
+ const task = state.task;
15
+ const ctx = state.executionContext;
16
+ if (!task || !ctx) {
17
+ throw new Error(`performImplementation: state.task / state.executionContext not set for route '${state.route}'`);
18
+ }
19
+ const baseTier = ctx.assignedTier;
20
+ const decision = pickEscalation({ loop: 'spec', attemptIndex: 0, baseTier });
21
+ const provider = ctx.providers[decision.impl];
22
+ if (!provider) {
23
+ state.lastRunResult = {
24
+ output: '',
25
+ status: 'error',
26
+ usage: { inputTokens: 0, outputTokens: 0 },
27
+ turns: 0,
28
+ filesRead: [],
29
+ filesWritten: [],
30
+ toolCalls: [],
31
+ outputIsDiagnostic: true,
32
+ escalationLog: [],
33
+ error: `no provider configured for tier '${decision.impl}'`,
34
+ errorCode: 'all_tiers_unavailable',
35
+ workerStatus: 'failed',
36
+ };
37
+ state.terminal = true;
38
+ return undefined;
39
+ }
40
+ // Read-only routes (audit / review / debug / investigate / research)
41
+ // run the sequential criteria loop on one complex session. The
42
+ // (route, subtype) pair resolves to a per-subtype spec from the
43
+ // tool's SUBTYPES map; the dispatcher uses that to build the cached
44
+ // prefix + per-criterion suffix.
45
+ const route = state.route ?? 'delegate';
46
+ if (state.toolCategory === 'read_only' && isReadOnlyRoute(route)) {
47
+ try {
48
+ const taskWithSubtype = task;
49
+ const routeSpec = resolveSubtypeSpec(route, taskWithSubtype.subtype);
50
+ const taskWithFiles = task;
51
+ const filePaths = Array.isArray(taskWithFiles.filePaths) ? taskWithFiles.filePaths : [];
52
+ const preReadFiles = {};
53
+ for (const fp of filePaths) {
54
+ try {
55
+ preReadFiles[fp] = await fsReadFile(fp, 'utf8');
56
+ }
57
+ catch {
58
+ // tolerated — sub-worker can read on demand via tools
59
+ }
60
+ }
61
+ // Target content for the cached prefix. Preference order:
62
+ // 1. parallelTarget — pure user question/work/problem, no
63
+ // legacy format spec (set by the route's buildTaskSpec).
64
+ // 2. document — inlined doc (audit's primary input shape).
65
+ // 3. task.prompt — last-resort fallback. AVOID: it embeds the
66
+ // legacy monolithic format spec (## Summary / ## Citations
67
+ // for investigate, etc.), which competes with our `## Finding
68
+ // N:` shape and confuses the worker about output format.
69
+ const taskWithTarget = task;
70
+ const targetContent = (taskWithTarget.parallelTarget && taskWithTarget.parallelTarget.trim().length > 0)
71
+ ? taskWithTarget.parallelTarget
72
+ : (taskWithTarget.document && taskWithTarget.document.trim().length > 0)
73
+ ? taskWithTarget.document
74
+ : task.prompt;
75
+ const cachedPrefix = routeSpec.buildPrefix({
76
+ document: targetContent,
77
+ preReadFiles,
78
+ filePaths,
79
+ });
80
+ // v4.4.x: single complex session per task, sequential for-loop over
81
+ // criteria. Earlier criteria's tool results stay in the session
82
+ // context so later criteria don't re-discover the same files.
83
+ const session = ctx.getSession(decision.impl);
84
+ const dispatchResult = await runReadRouteImplementer({
85
+ session,
86
+ cachedPrefix,
87
+ criteria: routeSpec.criteria,
88
+ buildSuffix: routeSpec.buildSuffix,
89
+ });
90
+ const totalCriteria = routeSpec.criteria.length;
91
+ const failedCount = dispatchResult.criteriaErrors.length;
92
+ const succeededCount = totalCriteria - failedCount;
93
+ const majorityThreshold = Math.ceil(totalCriteria / 2);
94
+ const status = succeededCount === 0
95
+ ? 'error'
96
+ : succeededCount >= majorityThreshold ? 'ok' : 'incomplete';
97
+ const incompleteReason = succeededCount > 0 && succeededCount < majorityThreshold
98
+ ? 'missing_sections'
99
+ : undefined;
100
+ const terminationCause = succeededCount === 0
101
+ ? 'error'
102
+ : succeededCount >= majorityThreshold ? 'finished' : 'incomplete';
103
+ const terminationReason = {
104
+ cause: terminationCause,
105
+ turnsUsed: dispatchResult.turns,
106
+ hasFileArtifacts: false,
107
+ usedShell: false,
108
+ workerSelfAssessment: succeededCount === 0 ? 'failed' : 'done',
109
+ wasPromoted: false,
110
+ };
111
+ state.lastRunResult = {
112
+ output: dispatchResult.synthesizedOutput,
113
+ status,
114
+ usage: dispatchResult.usage,
115
+ turns: dispatchResult.turns,
116
+ filesRead: filePaths,
117
+ filesWritten: [],
118
+ toolCalls: [],
119
+ outputIsDiagnostic: false,
120
+ escalationLog: [],
121
+ workerStatus: succeededCount === 0 ? 'failed' : 'done',
122
+ terminationReason,
123
+ findings: dispatchResult.findings,
124
+ criteriaErrors: dispatchResult.criteriaErrors,
125
+ ...(incompleteReason && { incompleteReason }),
126
+ };
127
+ mergeStageStats(state, 'implementing', {
128
+ inputTokens: dispatchResult.usage.inputTokens,
129
+ outputTokens: dispatchResult.usage.outputTokens,
130
+ cachedReadTokens: dispatchResult.usage.cachedReadTokens,
131
+ cachedNonReadTokens: dispatchResult.usage.cachedNonReadTokens,
132
+ turnCount: dispatchResult.turns,
133
+ toolCallCount: 0,
134
+ costUSD: dispatchResult.costUSD,
135
+ durationMs: dispatchResult.durationMs,
136
+ }, {
137
+ tier: ctx.assignedTier,
138
+ model: ctx.implementerProvider?.config?.model ?? null,
139
+ });
140
+ if (status !== 'ok')
141
+ state.terminal = true;
142
+ return undefined;
143
+ }
144
+ catch (err) {
145
+ const message = err instanceof Error ? err.message : String(err);
146
+ state.lastRunResult = {
147
+ output: '',
148
+ status: 'error',
149
+ usage: { inputTokens: 0, outputTokens: 0 },
150
+ turns: 0,
151
+ filesRead: [],
152
+ filesWritten: [],
153
+ toolCalls: [],
154
+ outputIsDiagnostic: true,
155
+ escalationLog: [],
156
+ error: message,
157
+ errorCode: 'runner_crash',
158
+ workerStatus: 'failed',
159
+ };
160
+ state.terminal = true;
161
+ return undefined;
162
+ }
163
+ }
164
+ // Build the watchdog config once, just before the delegateWithEscalation call:
165
+ const wdConfig = {
166
+ enabled: ctx.config?.defaults?.progressWatchdogEnabled ?? true,
167
+ thrashTurns: ctx.config?.defaults?.thrashTurns ?? 25,
168
+ thrashWallClockMs: ctx.config?.defaults?.thrashWallClockMs ?? 1_200_000,
169
+ thrashSoftWallClockMs: ctx.config?.defaults?.thrashWallClockMs
170
+ ? Math.floor((ctx.config.defaults.thrashWallClockMs ?? 1_200_000) / 2)
171
+ : 600_000,
172
+ };
173
+ // state2 carries the timer's "fired" bit so recordPostHocSignals knows whether
174
+ // the abort came from the watchdog vs. some other cancellation.
175
+ const wdState2 = { fired: false };
176
+ // 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.
179
+ const disposeWatchdog = startProgressWatchdog({
180
+ state,
181
+ controller: ctx.stall.controller,
182
+ emit: (event) => ctx.bus?.emit(event),
183
+ config: wdConfig,
184
+ taskIndex: ctx.taskIndex,
185
+ batchId: ctx.batchId,
186
+ state2: wdState2,
187
+ });
188
+ 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
+ stageLabel: HUMAN_LABEL.implementing,
202
+ ...(ctx.bus && { bus: ctx.bus }),
203
+ ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
204
+ taskIndex: ctx.taskIndex,
205
+ });
206
+ const enrichedResult = {
207
+ ...result,
208
+ ...(result.implementationReport === undefined && result.output && { implementationReport: parseStructuredReport(result.output) }),
209
+ };
210
+ state.lastRunResult = enrichedResult;
211
+ // Post-hoc: turn-count thrash + scope-violation (replaces nothing existing;
212
+ // adds new signals state for sub-project B's annotator).
213
+ await recordPostHocSignals(state, enrichedResult.turns ?? 0, wdConfig, (event) => ctx.bus?.emit(event), ctx.taskIndex, ctx.batchId);
214
+ // Record the implementer's per-stage cost so emit_task_terminal +
215
+ // wire task.completed include it in the totals + per-stage breakdown.
216
+ // Cost field lookup matches the canonical-then-legacy fallback used
217
+ // in delegate-with-escalation: `cost.costUSD` was the original field
218
+ // before assembleRunResult moved the value to top-level
219
+ // `actualCostUSD` (the current source of truth from claude/codex
220
+ // turns). Without the actualCostUSD fallback every claude-tier
221
+ // implementing stage records cost=null and telemetry under-reports.
222
+ mergeStageStats(state, 'implementing', {
223
+ inputTokens: result.usage.inputTokens ?? 0,
224
+ outputTokens: result.usage.outputTokens ?? 0,
225
+ cachedReadTokens: result.usage.cachedReadTokens ?? 0,
226
+ cachedNonReadTokens: result.usage.cachedNonReadTokens ?? 0,
227
+ turnCount: result.turns ?? 0,
228
+ toolCallCount: Array.isArray(result.toolCalls) ? result.toolCalls.length : 0,
229
+ costUSD: result.cost?.costUSD ?? result.actualCostUSD ?? null,
230
+ durationMs: result.durationMs ?? null,
231
+ filesReadCount: Array.isArray(result.filesRead) ? result.filesRead.length : 0,
232
+ filesWrittenCount: Array.isArray(result.filesWritten) ? result.filesWritten.length : 0,
233
+ }, {
234
+ tier: ctx.assignedTier,
235
+ model: ctx.implementerProvider?.config?.model ?? null,
236
+ });
237
+ if (result.status !== 'ok') {
238
+ state.terminal = true;
239
+ }
240
+ }
241
+ catch (err) {
242
+ const message = err instanceof Error ? err.message : String(err);
243
+ state.lastRunResult = {
244
+ output: '',
245
+ status: 'error',
246
+ usage: { inputTokens: 0, outputTokens: 0 },
247
+ turns: 0,
248
+ filesRead: [],
249
+ filesWritten: [],
250
+ toolCalls: [],
251
+ outputIsDiagnostic: true,
252
+ escalationLog: [],
253
+ error: message,
254
+ errorCode: 'runner_crash',
255
+ workerStatus: 'failed',
256
+ };
257
+ state.terminal = true;
258
+ }
259
+ finally {
260
+ disposeWatchdog();
261
+ }
262
+ return undefined;
263
+ }
264
+ //# sourceMappingURL=perform-implementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perform-implementation.js","sourceRoot":"","sources":["../../src/lifecycle/perform-implementation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface DirtyFilesOptions {
2
+ timeoutMs?: number;
3
+ }
4
+ /**
5
+ * Returns the list of porcelain-reported dirty file paths in cwd, or []
6
+ * on any failure (timeout, spawn error, non-git repo). Never throws.
7
+ */
8
+ export declare function getDirtyFiles(cwd: string, opts?: DirtyFilesOptions): Promise<string[]>;
9
+ /**
10
+ * Builds the [REPO HYGIENE] advisory string. Sorts files lexicographically;
11
+ * lists the first 20 and appends ", … (+N more)" when N > 0.
12
+ */
13
+ export declare function formatHygieneAdvisory(files: string[]): string;
14
+ //# sourceMappingURL=repo-hygiene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-hygiene.d.ts","sourceRoot":"","sources":["../../src/lifecycle/repo-hygiene.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAAG,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AAEzD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAsCnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7D"}
@@ -0,0 +1,71 @@
1
+ import { spawn } from 'node:child_process';
2
+ /**
3
+ * Returns the list of porcelain-reported dirty file paths in cwd, or []
4
+ * on any failure (timeout, spawn error, non-git repo). Never throws.
5
+ */
6
+ export async function getDirtyFiles(cwd, opts = {}) {
7
+ const timeoutMs = opts.timeoutMs ?? 5000;
8
+ return new Promise((resolve) => {
9
+ let settled = false;
10
+ const done = (v) => { if (!settled) {
11
+ settled = true;
12
+ resolve(v);
13
+ } };
14
+ let child;
15
+ try {
16
+ child = spawn('git', ['-C', cwd, 'status', '--porcelain'], {
17
+ stdio: ['ignore', 'pipe', 'pipe'],
18
+ });
19
+ }
20
+ catch {
21
+ done([]);
22
+ return;
23
+ }
24
+ let out = '';
25
+ child.stdout?.on('data', (b) => { out += b.toString('utf8'); });
26
+ child.stderr?.on('data', () => { });
27
+ child.on('error', () => done([]));
28
+ child.on('exit', (code) => {
29
+ if (code !== 0) {
30
+ done([]);
31
+ return;
32
+ }
33
+ const files = out.split('\n')
34
+ .filter(Boolean)
35
+ .map((l) => {
36
+ const path = l.substring(3);
37
+ if (path.startsWith('"') && path.endsWith('"')) {
38
+ try {
39
+ return JSON.parse(path);
40
+ }
41
+ catch {
42
+ return path;
43
+ }
44
+ }
45
+ return path;
46
+ })
47
+ .filter(Boolean);
48
+ done(files);
49
+ });
50
+ const t = setTimeout(() => { try {
51
+ child.kill('SIGKILL');
52
+ }
53
+ catch { } done([]); }, timeoutMs);
54
+ child.on('exit', () => clearTimeout(t));
55
+ });
56
+ }
57
+ /**
58
+ * Builds the [REPO HYGIENE] advisory string. Sorts files lexicographically;
59
+ * lists the first 20 and appends ", … (+N more)" when N > 0.
60
+ */
61
+ export function formatHygieneAdvisory(files) {
62
+ const sorted = [...files].sort();
63
+ const shown = sorted.slice(0, 20);
64
+ const remaining = sorted.length - shown.length;
65
+ const list = shown.join(', ') + (remaining > 0 ? `, … (+${remaining} more)` : '');
66
+ return ('[REPO HYGIENE] The previous task in this serial group left uncommitted ' +
67
+ `changes in the following files: ${list}. Review these before editing ` +
68
+ 'the same paths; your `getRealFilesChanged` will attribute them to your ' +
69
+ 'task if you commit.\n\n');
70
+ }
71
+ //# sourceMappingURL=repo-hygiene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-hygiene.js","sourceRoot":"","sources":["../../src/lifecycle/repo-hygiene.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import type { RunResult } from '../types.js';
1
+ import type { RuntimeRunResult } from '../types.js';
2
2
  import type { BatchTimings, BatchAggregateCost } from './executor-output-types.js';
3
- export declare function computeTimings(wallClockMs: number, results: RunResult[]): BatchTimings;
3
+ export declare function computeTimings(wallClockMs: number, results: RuntimeRunResult[]): BatchTimings;
4
4
  /**
5
- * Sum costUSD across entered stages of a single RunResult. Returns null
5
+ * Sum costUSD across entered stages of a single RuntimeRunResult. Returns null
6
6
  * when no entered stage carried a finite cost (mock-provider runs); used
7
7
  * by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
8
8
  */
@@ -10,5 +10,5 @@ export declare function sumStageCosts(stageStats: Record<string, {
10
10
  entered?: boolean;
11
11
  costUSD?: number | null;
12
12
  } | undefined> | undefined): number | null;
13
- export declare function computeAggregateCost(results: RunResult[]): BatchAggregateCost;
13
+ export declare function computeAggregateCost(results: RuntimeRunResult[]): BatchAggregateCost;
14
14
  //# sourceMappingURL=shared-compute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAa/I;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CA0B7E"}
1
+ {"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,YAAY,CAI7F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAa/I;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CA0BpF"}
@@ -4,7 +4,7 @@ export function computeTimings(wallClockMs, results) {
4
4
  return { wallClockMs, sumOfTaskMs, estimatedParallelSavingsMs };
5
5
  }
6
6
  /**
7
- * Sum costUSD across entered stages of a single RunResult. Returns null
7
+ * Sum costUSD across entered stages of a single RuntimeRunResult. Returns null
8
8
  * when no entered stage carried a finite cost (mock-provider runs); used
9
9
  * by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkG;IAC9H,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,aAAa;QACb,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,UAAoG,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,kBAAkB,IAAI,OAAO,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACpF,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1D,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAA2B;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkG;IAC9H,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,aAAa;QACb,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,UAAoG,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,kBAAkB,IAAI,OAAO,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACpF,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1D,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,139 @@
1
+ export type RouteName = 'delegate' | 'execute-plan' | 'retry' | 'audit' | 'review' | 'debug' | 'investigate' | 'explore' | 'research' | 'register-context-block';
2
+ export declare const ALL_TASK_ROUTES: readonly ["delegate", "execute-plan", "retry", "audit", "review", "debug", "investigate", "explore", "research"];
3
+ export declare const WRITE_ROUTES: readonly ["delegate", "execute-plan", "retry"];
4
+ export type WorkerSelfAssessment = 'done' | 'failed';
5
+ export type Severity = 'critical' | 'high' | 'medium' | 'low';
6
+ export type Finding = {
7
+ id?: string;
8
+ severity: Severity;
9
+ category: string;
10
+ claim: string;
11
+ evidence?: string;
12
+ suggestion?: string;
13
+ source: 'implementer' | 'reviewer';
14
+ };
15
+ export type Citation = {
16
+ file: string;
17
+ lines: string;
18
+ claim: string;
19
+ };
20
+ export type Validation = {
21
+ name: string;
22
+ passed: boolean;
23
+ output: string;
24
+ };
25
+ export type RegisterBlockPayload = {
26
+ blockId: string;
27
+ bytes: number;
28
+ };
29
+ export type ImplementPayload = {
30
+ workerSelfAssessment: WorkerSelfAssessment;
31
+ summary: string;
32
+ filesChanged: string[];
33
+ findings: Finding[];
34
+ citations: Citation[];
35
+ criteriaSucceeded: string[];
36
+ criteriaErrors: Array<{
37
+ criterion: string;
38
+ error: string;
39
+ }>;
40
+ sourcesUsed: string[];
41
+ };
42
+ export type ReviewPayload = {
43
+ verdict: 'approved' | 'changes_required';
44
+ findings: Finding[];
45
+ reviewersSucceeded: Array<'spec' | 'quality'>;
46
+ reviewersErrored: Array<{
47
+ reviewer: 'spec' | 'quality';
48
+ error: string;
49
+ }>;
50
+ };
51
+ export type ReworkPayload = {
52
+ workerSelfAssessment: WorkerSelfAssessment;
53
+ summary: string;
54
+ filesChanged: string[];
55
+ unaddressedFindingIds: string[];
56
+ };
57
+ export type CommitPayload = {
58
+ kind: 'committed';
59
+ commitSha: string;
60
+ commitMessage: string;
61
+ filesChanged: string[];
62
+ authoredAt: string;
63
+ } | {
64
+ kind: 'no_op';
65
+ reason: 'no_repo' | 'no_diff' | 'worker_committed_out_of_band' | 'hook_failed';
66
+ detail?: string;
67
+ };
68
+ export type AnnotatePayload = {
69
+ completed: boolean;
70
+ message: string;
71
+ findings: Finding[];
72
+ summary: string;
73
+ filesChanged: string[];
74
+ commitSha: string | null;
75
+ };
76
+ export type ComposePayload = {
77
+ completed: boolean;
78
+ message: string;
79
+ findings: Finding[];
80
+ summary: string;
81
+ filesChanged: string[];
82
+ commitSha: string | null;
83
+ blockId: string | null;
84
+ telemetry: {
85
+ totalDurationMs: number;
86
+ totalCostUSD: number | null;
87
+ workerSelfAssessment: WorkerSelfAssessment | null;
88
+ reviewVerdict: 'approved' | 'changes_required' | null;
89
+ commitOutcome: 'committed' | 'no_op' | 'not_applicable';
90
+ stopReason: 'normal' | 'turn_cap' | 'cost_cap' | 'timeout' | 'transport_error';
91
+ haltedStage: string | null;
92
+ stages: Array<{
93
+ name: string;
94
+ outcome: 'advance' | 'skip' | 'halt' | 'not_run';
95
+ comment?: string;
96
+ durationMs: number;
97
+ costUSD: number | null;
98
+ }>;
99
+ };
100
+ };
101
+ export type TerminalPayload = {
102
+ terminalBlockId: string | null;
103
+ telemetryFlushed: boolean;
104
+ batchRegistryPersisted: boolean;
105
+ taskTerminalEmitted: boolean;
106
+ projectCleanupTicked: boolean;
107
+ };
108
+ export type StageStopReason = 'normal' | 'turn_cap' | 'cost_cap' | 'timeout' | 'transport_error';
109
+ export type StageGate<TPayload = unknown> = {
110
+ outcome: 'advance' | 'skip' | 'halt';
111
+ comment?: string;
112
+ payload: TPayload;
113
+ telemetry: {
114
+ stageLabel: string;
115
+ durationMs: number;
116
+ costUSD: number | null;
117
+ turnsUsed: number;
118
+ stopReason: StageStopReason;
119
+ };
120
+ };
121
+ export type EntryDecision = {
122
+ run: true;
123
+ } | {
124
+ run: false;
125
+ comment: string;
126
+ };
127
+ import type { LifecycleState } from './stage-plan-types.js';
128
+ export type StageDefinition<TPayload = unknown> = {
129
+ name: string;
130
+ runOnHalt: boolean;
131
+ applicableRoutes: 'all' | RouteName[];
132
+ shouldRun: (state: LifecycleState) => EntryDecision;
133
+ handler: (state: LifecycleState) => Promise<StageGate<TPayload>>;
134
+ };
135
+ /** Canonical "current work artifact" lookup used by commit/annotate/compose. */
136
+ export declare function currentWork(state: {
137
+ gates: Record<string, StageGate<unknown>>;
138
+ }): ImplementPayload | ReworkPayload | null;
139
+ //# sourceMappingURL=stage-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-io.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-io.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GACjB,UAAU,GAAG,cAAc,GAAG,OAAO,GACrC,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GACrE,wBAAwB,CAAC;AAM7B,eAAO,MAAM,eAAe,kHAAmH,CAAC;AAEhJ,eAAO,MAAM,YAAY,gDAAiD,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE9D,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,UAAU,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAI3E,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAEhB,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,kBAAkB,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,gBAAgB,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,8BAA8B,GAAG,aAAa,CAAC;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,SAAS,EAAE;QACT,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;QAClD,aAAa,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;QACtD,aAAa,EAAE,WAAW,GAAG,OAAO,GAAG,gBAAgB,CAAC;QACxD,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;QAC/E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;YACjD,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;SACxB,CAAC,CAAC;KACJ,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAIF,MAAM,MAAM,eAAe,GACzB,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAErE,MAAM,MAAM,SAAS,CAAC,QAAQ,GAAG,OAAO,IAAI;IAC1C,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,eAAe,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,eAAe,CAAC,QAAQ,GAAG,OAAO,IAAI;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,KAAK,GAAG,SAAS,EAAE,CAAC;IACtC,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,aAAa,CAAC;IACpD,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;CAClE,CAAC;AAIF,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,GAC9E,gBAAgB,GAAG,aAAa,GAAG,IAAI,CAOxC"}