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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +1 -1
  2. package/dist/config/schema.d.ts +1 -0
  3. package/dist/config/schema.d.ts.map +1 -1
  4. package/dist/config/schema.js +4 -3
  5. package/dist/config/schema.js.map +1 -1
  6. package/dist/error-codes.d.ts +1 -0
  7. package/dist/error-codes.d.ts.map +1 -1
  8. package/dist/error-codes.js +2 -0
  9. package/dist/error-codes.js.map +1 -1
  10. package/dist/events/telemetry-types.d.ts +24 -20
  11. package/dist/events/telemetry-types.d.ts.map +1 -1
  12. package/dist/identity/auth-token-store.d.ts +36 -0
  13. package/dist/identity/auth-token-store.d.ts.map +1 -1
  14. package/dist/identity/auth-token-store.js +71 -2
  15. package/dist/identity/auth-token-store.js.map +1 -1
  16. package/dist/identity/cwd-validator.d.ts.map +1 -1
  17. package/dist/identity/cwd-validator.js +15 -3
  18. package/dist/identity/cwd-validator.js.map +1 -1
  19. package/dist/identity/main-model-resolver.d.ts +14 -0
  20. package/dist/identity/main-model-resolver.d.ts.map +1 -0
  21. package/dist/identity/main-model-resolver.js +83 -0
  22. package/dist/identity/main-model-resolver.js.map +1 -0
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
  28. package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
  29. package/dist/intake/brief-compiler-slots/delegate.js +12 -14
  30. package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
  31. package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
  32. package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
  33. package/dist/intake/context-overflow-estimator.d.ts +33 -0
  34. package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
  35. package/dist/intake/context-overflow-estimator.js +36 -0
  36. package/dist/intake/context-overflow-estimator.js.map +1 -0
  37. package/dist/intake/pipeline.d.ts.map +1 -1
  38. package/dist/intake/pipeline.js +46 -0
  39. package/dist/intake/pipeline.js.map +1 -1
  40. package/dist/intake/plan-extractor.d.ts.map +1 -1
  41. package/dist/intake/plan-extractor.js +10 -1
  42. package/dist/intake/plan-extractor.js.map +1 -1
  43. package/dist/intake/types.d.ts +1 -0
  44. package/dist/intake/types.d.ts.map +1 -1
  45. package/dist/lifecycle/diff-tracker.d.ts +17 -1
  46. package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
  47. package/dist/lifecycle/diff-tracker.js +115 -2
  48. package/dist/lifecycle/diff-tracker.js.map +1 -1
  49. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
  50. package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
  51. package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
  52. package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
  53. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
  54. package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
  55. package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
  56. package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
  57. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  58. package/dist/lifecycle/handlers/baseline-handlers.js +106 -71
  59. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  60. package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
  61. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
  62. package/dist/lifecycle/handlers/review-handler.js +141 -0
  63. package/dist/lifecycle/handlers/review-handler.js.map +1 -0
  64. package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
  65. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
  66. package/dist/lifecycle/handlers/rework-handler.js +77 -0
  67. package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
  68. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  69. package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
  70. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  71. package/dist/lifecycle/lifecycle-context.d.ts +4 -0
  72. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  73. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  74. package/dist/lifecycle/lifecycle-driver.js +12 -7
  75. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  76. package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
  77. package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
  78. package/dist/lifecycle/parallel-criteria-routes.js +21 -1
  79. package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
  80. package/dist/lifecycle/shared-compute.d.ts +9 -0
  81. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  82. package/dist/lifecycle/shared-compute.js +35 -3
  83. package/dist/lifecycle/shared-compute.js.map +1 -1
  84. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  85. package/dist/lifecycle/stage-plan-builder.js +65 -85
  86. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  87. package/dist/lifecycle/stage-plan-types.d.ts +48 -0
  88. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  89. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  90. package/dist/lifecycle/stage-progression.js +17 -24
  91. package/dist/lifecycle/stage-progression.js.map +1 -1
  92. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  93. package/dist/lifecycle/task-runner.js +12 -1
  94. package/dist/lifecycle/task-runner.js.map +1 -1
  95. package/dist/model-profiles.json +192 -53
  96. package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
  97. package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
  98. package/dist/providers/anthropic-messages-adapter.js +16 -1
  99. package/dist/providers/anthropic-messages-adapter.js.map +1 -1
  100. package/dist/providers/file-tracker.d.ts +12 -0
  101. package/dist/providers/file-tracker.d.ts.map +1 -1
  102. package/dist/providers/file-tracker.js +16 -0
  103. package/dist/providers/file-tracker.js.map +1 -1
  104. package/dist/providers/provider-factory.d.ts.map +1 -1
  105. package/dist/providers/provider-factory.js +27 -2
  106. package/dist/providers/provider-factory.js.map +1 -1
  107. package/dist/providers/runner-shell-types.d.ts +14 -0
  108. package/dist/providers/runner-shell-types.d.ts.map +1 -1
  109. package/dist/providers/runner-shell.d.ts.map +1 -1
  110. package/dist/providers/runner-shell.js +38 -6
  111. package/dist/providers/runner-shell.js.map +1 -1
  112. package/dist/providers/tool-implementations.d.ts +12 -0
  113. package/dist/providers/tool-implementations.d.ts.map +1 -1
  114. package/dist/providers/tool-implementations.js +33 -0
  115. package/dist/providers/tool-implementations.js.map +1 -1
  116. package/dist/reporting/annotate-completion-parser.d.ts +39 -0
  117. package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
  118. package/dist/reporting/annotate-completion-parser.js +43 -0
  119. package/dist/reporting/annotate-completion-parser.js.map +1 -0
  120. package/dist/reporting/compose-running-headline.d.ts +15 -1
  121. package/dist/reporting/compose-running-headline.d.ts.map +1 -1
  122. package/dist/reporting/compose-running-headline.js +76 -1
  123. package/dist/reporting/compose-running-headline.js.map +1 -1
  124. package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
  125. package/dist/review/default-engines.d.ts.map +1 -1
  126. package/dist/review/default-engines.js +8 -4
  127. package/dist/review/default-engines.js.map +1 -1
  128. package/dist/review/parse-review-report.d.ts +6 -0
  129. package/dist/review/parse-review-report.d.ts.map +1 -0
  130. package/dist/review/parse-review-report.js +40 -0
  131. package/dist/review/parse-review-report.js.map +1 -0
  132. package/dist/review/reviewer-engine.d.ts +12 -3
  133. package/dist/review/reviewer-engine.d.ts.map +1 -1
  134. package/dist/review/reviewer-engine.js +4 -3
  135. package/dist/review/reviewer-engine.js.map +1 -1
  136. package/dist/review/templates/annotate-completion.d.ts +12 -0
  137. package/dist/review/templates/annotate-completion.d.ts.map +1 -0
  138. package/dist/review/templates/annotate-completion.js +72 -0
  139. package/dist/review/templates/annotate-completion.js.map +1 -0
  140. package/dist/review/templates/quality-review.d.ts +3 -0
  141. package/dist/review/templates/quality-review.d.ts.map +1 -0
  142. package/dist/review/templates/quality-review.js +40 -0
  143. package/dist/review/templates/quality-review.js.map +1 -0
  144. package/dist/review/templates/rework.d.ts +3 -0
  145. package/dist/review/templates/rework.d.ts.map +1 -0
  146. package/dist/review/templates/rework.js +42 -0
  147. package/dist/review/templates/rework.js.map +1 -0
  148. package/dist/review/templates/shared.d.ts +32 -0
  149. package/dist/review/templates/shared.d.ts.map +1 -1
  150. package/dist/review/templates/spec-review.d.ts +1 -16
  151. package/dist/review/templates/spec-review.d.ts.map +1 -1
  152. package/dist/review/templates/spec-review.js +23 -31
  153. package/dist/review/templates/spec-review.js.map +1 -1
  154. package/dist/stores/context-block-project-cap.d.ts +14 -0
  155. package/dist/stores/context-block-project-cap.d.ts.map +1 -0
  156. package/dist/stores/context-block-project-cap.js +68 -0
  157. package/dist/stores/context-block-project-cap.js.map +1 -0
  158. package/dist/stores/context-block-tool.d.ts +2 -0
  159. package/dist/stores/context-block-tool.d.ts.map +1 -1
  160. package/dist/stores/context-block-tool.js +3 -2
  161. package/dist/stores/context-block-tool.js.map +1 -1
  162. package/dist/stores/file-backed-context-block-store.d.ts +8 -1
  163. package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
  164. package/dist/stores/file-backed-context-block-store.js +116 -4
  165. package/dist/stores/file-backed-context-block-store.js.map +1 -1
  166. package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
  167. package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
  168. package/dist/tools/audit/plan-audit-criteria.js +136 -0
  169. package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
  170. package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
  171. package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
  172. package/dist/tools/audit/plan-audit-verdict.js +44 -0
  173. package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
  174. package/dist/tools/audit/schema.d.ts +1 -0
  175. package/dist/tools/audit/schema.d.ts.map +1 -1
  176. package/dist/tools/audit/schema.js +6 -3
  177. package/dist/tools/audit/schema.js.map +1 -1
  178. package/dist/tools/audit/tool-config.d.ts +3 -0
  179. package/dist/tools/audit/tool-config.d.ts.map +1 -1
  180. package/dist/tools/audit/tool-config.js +8 -0
  181. package/dist/tools/audit/tool-config.js.map +1 -1
  182. package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
  183. package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
  184. package/dist/tools/delegate/implementer-criteria.js +60 -88
  185. package/dist/tools/delegate/implementer-criteria.js.map +1 -1
  186. package/dist/tools/delegate/tool-config.js +4 -4
  187. package/dist/tools/delegate/tool-config.js.map +1 -1
  188. package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
  189. package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
  190. package/dist/tools/execute-plan/implementer-criteria.js +79 -79
  191. package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
  192. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  193. package/dist/tools/execute-plan/tool-config.js +23 -13
  194. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  195. package/dist/types/enums.d.ts +2 -2
  196. package/dist/types/run-result.d.ts +58 -0
  197. package/dist/types/run-result.d.ts.map +1 -1
  198. package/dist/types/task-spec.d.ts +14 -0
  199. package/dist/types/task-spec.d.ts.map +1 -1
  200. package/dist/types.d.ts +10 -0
  201. package/dist/types.d.ts.map +1 -1
  202. package/package.json +5 -1
  203. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
  204. package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
  205. package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
  206. package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
  207. package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
  208. package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
  209. package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
  210. package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
  211. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
  212. package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
  213. package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
  214. package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
  215. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
  216. package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
  217. package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
  218. package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
  219. package/dist/review/templates/diff-review.d.ts +0 -11
  220. package/dist/review/templates/diff-review.d.ts.map +0 -1
  221. package/dist/review/templates/diff-review.js +0 -39
  222. package/dist/review/templates/diff-review.js.map +0 -1
  223. package/dist/review/templates/quality-review-artifact.d.ts +0 -16
  224. package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
  225. package/dist/review/templates/quality-review-artifact.js +0 -46
  226. package/dist/review/templates/quality-review-artifact.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-diff-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/review-diff-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAKtC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAA4B,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAqB;IAC3D,IAAI,KAAK,CAAC,iBAAiB;QAAE,OAAO;IAEpC,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,MAAM,YAAY,GAAG,KAAK,CAAC,YAA6C,CAAC;IACzE,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,MAAM,QAAQ,GAAc,GAAG,CAAC,YAAY,CAAC;IAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE/E,iEAAiE;IACjE,qEAAqE;IACrE,kEAAkE;IAClE,mEAAmE;IACnE,qEAAqE;IACrE,uDAAuD;IACvD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAChD,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAChF,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,GAAG,KAAK,GAAG,GAAG;gBAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,oBAAoB;gBACtF,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,OAAO;QACT,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,KAAK,IAAI,GAAG,EAAoB,CAAC;IACtD,MAAM,eAAe,GAAmB,KAAK,CAAC,eAAe,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAA+C;QACnF,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAyB;QAC7E,gBAAgB,EAAE,eAAe;QACjC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAwB,CAAC;QAC7E,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsC,CAAC,MAAM;QAChE,oBAAoB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;QAC5E,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;YAClC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC9D,iEAAiE;YACjE,kEAAkE;YAClE,2DAA2D;YAC3D,6DAA6D;YAC7D,6BAA6B;YAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,aAAgD,CAAC;YAC1E,MAAM,aAAa,GAAG,iBAAiB,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACxI,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC3B,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,aAAa;gBACjD,KAAK,EAAE,iBAAiB,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxH,IAAI;gBACJ,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;gBACxC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;gBACjC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBACtD,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBACpE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC7B,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC;IACzC,IAAI,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1E,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,gBAA0C,CAAC;IAE1D,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAClE,KAAK,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACvC,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,iBAAiB,GAAG,kBAAkB,CAAC;QAC7C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAC;QAClC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,oEAAoE;IACpE,oEAAoE;IACpE,uEAAuE;IACvE,qDAAqD;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,KAAK,CAAC,aAAsC,CAAC;QAC1D,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/C,MAAM,EAAE,aAAsB;gBAC9B,QAAQ,EAAE,QAAiB;gBAC3B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,qDAAqD;IACrD,MAAM,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACrD,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE;QACpC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC;QAC1C,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC;QAC5C,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC;QACtC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;QACrC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI;KAC5C,EAAE;QACD,IAAI,EAAE,YAAY;QAClB,KAAK,EAAG,gBAAgB,EAAE,MAAyC,EAAE,KAAK,IAAI,IAAI;QAClF,OAAO,EAAE,KAAK,CAAC,iBAAiB;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -1,25 +0,0 @@
1
- import type { LifecycleState } from '../stage-plan-types.js';
2
- /**
3
- * StageHandler for row 5.1 (run_verify_command).
4
- *
5
- * Reads from state:
6
- * - state.task: TaskSpec with verifyCommand + cwd + timeoutMs
7
- * - state.executionContext: timing budgets, bus, stageStats
8
- * - state.verifyResult: idempotency guard — if an upstream stage already
9
- * populated it (e.g., a verify-tool route running its own verification),
10
- * this handler skips so verify doesn't run twice.
11
- *
12
- * Writes to state:
13
- * - state.verifyResult: VerifyStageResult
14
- * - state.stageStats: aggregated via endVerifyStage()
15
- *
16
- * Emits via ctx.bus:
17
- * - 'verify_step' per step
18
- * - 'verify_skipped' when no command or skipped
19
- *
20
- * The runCondition on row 5.1 (toolCategory==='artifact_producing' &&
21
- * route!=='verify' && reviewPolicy!=='none' && !terminal) gates entry; once
22
- * inside, the handler defensively no-ops on missing state slots.
23
- */
24
- export declare function runVerifyCommandHandler(state: LifecycleState): Promise<void>;
25
- //# sourceMappingURL=run-verify-command-handler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-verify-command-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/run-verify-command-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BlF"}
@@ -1,84 +0,0 @@
1
- import { runVerifyStage } from './verify-stage.js';
2
- /**
3
- * StageHandler for row 5.1 (run_verify_command).
4
- *
5
- * Reads from state:
6
- * - state.task: TaskSpec with verifyCommand + cwd + timeoutMs
7
- * - state.executionContext: timing budgets, bus, stageStats
8
- * - state.verifyResult: idempotency guard — if an upstream stage already
9
- * populated it (e.g., a verify-tool route running its own verification),
10
- * this handler skips so verify doesn't run twice.
11
- *
12
- * Writes to state:
13
- * - state.verifyResult: VerifyStageResult
14
- * - state.stageStats: aggregated via endVerifyStage()
15
- *
16
- * Emits via ctx.bus:
17
- * - 'verify_step' per step
18
- * - 'verify_skipped' when no command or skipped
19
- *
20
- * The runCondition on row 5.1 (toolCategory==='artifact_producing' &&
21
- * route!=='verify' && reviewPolicy!=='none' && !terminal) gates entry; once
22
- * inside, the handler defensively no-ops on missing state slots.
23
- */
24
- export async function runVerifyCommandHandler(state) {
25
- // Idempotency: if a prior stage already populated verifyResult, skip so
26
- // verify doesn't run twice.
27
- if (state.verifyResult)
28
- return;
29
- const task = state.task;
30
- const ctx = state.executionContext;
31
- // Defensive no-op when state.task / state.executionContext aren't set.
32
- if (!task || !ctx)
33
- return;
34
- const verifyCommand = task.verifyCommand;
35
- const cwd = ctx.cwd;
36
- const taskTimeoutMs = ctx.timing.timeoutMs;
37
- const taskStartMs = ctx.timing.startMs;
38
- const verification = await runVerifyStage({
39
- cwd,
40
- verifyCommand,
41
- taskTimeoutMs,
42
- taskStartMs,
43
- });
44
- state.verifyResult = verification;
45
- emitVerifyEvents(ctx.bus, verification, { batchId: ctx.batchId, taskIndex: ctx.taskIndex ?? 0 });
46
- // Stage stats integration deferred: endVerifyStage takes cost meter +
47
- // agent info + idle stats that don't yet flow through ExecutionContext.
48
- // Step 6 (terminal handlers) will fold verify outcome into stageStats once
49
- // cost-rollup and idle tracking are part of the context.
50
- }
51
- function emitVerifyEvents(bus, verification, taskCtx) {
52
- if (!bus)
53
- return;
54
- // verify_step / verify_skipped extend TaskBase which requires batchId
55
- // and taskIndex. The 4.0.x emit was missing both — schema validation
56
- // failed at emit-time and crashed the lifecycle. Surfaced only after
57
- // the reviewer-parser stopped throwing on malformed reviewer output;
58
- // before that, the lifecycle never reached this stage.
59
- for (const step of verification.steps) {
60
- bus.emit({
61
- event: 'verify_step',
62
- ts: new Date().toISOString(),
63
- ...(taskCtx.batchId !== undefined && { batchId: taskCtx.batchId }),
64
- taskIndex: taskCtx.taskIndex,
65
- command: step.command,
66
- status: step.status,
67
- ...(step.exitCode !== null && { exitCode: step.exitCode }),
68
- ...(step.signal !== null && { signal: step.signal }),
69
- durationMs: step.durationMs,
70
- ...(step.errorMessage !== null && { errorMessage: step.errorMessage }),
71
- });
72
- }
73
- if (verification.status === 'skipped') {
74
- bus.emit({
75
- event: 'verify_skipped',
76
- ts: new Date().toISOString(),
77
- ...(taskCtx.batchId !== undefined && { batchId: taskCtx.batchId }),
78
- taskIndex: taskCtx.taskIndex,
79
- reason: verification.skipReason ?? 'no_command',
80
- stage: 'verifying',
81
- });
82
- }
83
- }
84
- //# sourceMappingURL=run-verify-command-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-verify-command-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/run-verify-command-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAA0B,MAAM,mBAAmB,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAqB;IACjE,wEAAwE;IACxE,4BAA4B;IAC5B,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO;IAE/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgD,CAAC;IAEnE,uEAAuE;IACvE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO;IAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAEvC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC;QACxC,GAAG;QACH,aAAa;QACb,aAAa;QACb,WAAW;KACZ,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IAElC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjG,sEAAsE;IACtE,wEAAwE;IACxE,2EAA2E;IAC3E,yDAAyD;AAC3D,CAAC;AAED,SAAS,gBAAgB,CACvB,GAA6B,EAC7B,YAA+B,EAC/B,OAA2D;IAE3D,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,sEAAsE;IACtE,qEAAqE;IACrE,qEAAqE;IACrE,qEAAqE;IACrE,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,aAAa;YACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5C,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,gBAAgB;YACvB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,YAAY,CAAC,UAAU,IAAI,YAAY;YAC/C,KAAK,EAAE,WAAW;SACQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { LifecycleState } from '../stage-plan-types.js';
2
- export declare const specReviewRound1Handler: (state: LifecycleState) => Promise<void>;
3
- export declare const specReviewRound2Handler: (state: LifecycleState) => Promise<void>;
4
- export declare const specReviewRound3Handler: (state: LifecycleState) => Promise<void>;
5
- export declare const specReworkRound1Handler: (state: LifecycleState) => Promise<void>;
6
- export declare const specReworkRound2Handler: (state: LifecycleState) => Promise<void>;
7
- /**
8
- * Settle handler (row 4.6). Reads the three round verdicts and writes
9
- * state.specChainPassed.
10
- *
11
- * Cascade rule:
12
- * - Any 'approved' verdict in the chain ⇒ chain passed (true)
13
- * - 'changes_required' through round 3 ⇒ chain failed (false)
14
- * - 'error' in any round ⇒ chain failed (false), state.terminal = true
15
- *
16
- * Runs runOnTerminal so the chain-pass slot is authoritative even on
17
- * hard-fail paths. Idempotent: skips when state.specChainPassed is
18
- * already populated.
19
- */
20
- export declare function settleSpecChainHandler(state: LifecycleState): void;
21
- //# sourceMappingURL=spec-chain-handlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-chain-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/spec-chain-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkT7D,eAAO,MAAM,uBAAuB,UAxHkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAwHpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAzHkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAyHpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UA1HkB,cAAc,KAAG,OAAO,CAAC,IAAI,CA0HpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAvDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAuDf,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAxDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAwDf,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBlE"}
@@ -1,287 +0,0 @@
1
- import { pickReviewer, pickEscalation } from '../../escalation/policy.js';
2
- import { ReviewerParseError } from '../../review/reviewer-engine.js';
3
- import { delegateWithEscalation } from '../../escalation/delegate-with-escalation.js';
4
- import { runWithFallback, TRANSPORT_FAILURES, isReviewTransportFailure, makeSyntheticRunResult, } from '../../escalation/fallback.js';
5
- import { makeSkippedReviewResult } from '../../review/skipped-result.js';
6
- import { makeRunnerShell } from '../../providers/make-runner-shell.js';
7
- import { mergeStageStats, replaceLastRunResultPreservingTrackers } from '../merge-stage-stats.js';
8
- async function runSpecReviewRound(input) {
9
- const { state, ctx, round } = input;
10
- const last = state.lastRunResult;
11
- if (!last)
12
- return null;
13
- const baseTier = ctx.assignedTier;
14
- const reviewerTier = pickReviewer({ loop: 'spec', attemptIndex: round - 1, baseTier });
15
- const task = state.task;
16
- if (!task)
17
- return null;
18
- state.specUnavailable ??= new Map();
19
- const specUnavailable = state.specUnavailable;
20
- // Tool sweep #6: produce the cumulative diff so the reviewer sees
21
- // the actual code change, not just the worker's text claim. Empty
22
- // string when no diff tracker (read-only routes) or no changes.
23
- let cumulativeDiff = '';
24
- if (state.diffTracker) {
25
- try {
26
- cumulativeDiff = await state.diffTracker.cumulativeDiff();
27
- }
28
- catch {
29
- // Diff failures shouldn't block review. Falls back to text-only.
30
- }
31
- }
32
- const priorConcerns = Array.isArray(state.priorSpecConcerns) ? state.priorSpecConcerns : [];
33
- const reviewerCall = await runWithFallback({
34
- assigned: reviewerTier,
35
- providerFor: (tier) => ctx.providers[tier],
36
- unavailableTiers: specUnavailable,
37
- isTransportFailure: (r) => isReviewTransportFailure(r),
38
- getStatus: (r) => r.status,
39
- makeSyntheticFailure: () => makeSkippedReviewResult('all_tiers_unavailable'),
40
- call: async (provider, usedTier) => {
41
- const shell = makeRunnerShell(provider);
42
- const engine = ctx.reviewerEngine;
43
- if (!engine)
44
- throw new Error('reviewerEngine not configured');
45
- try {
46
- return engine.runSpec(shell, {
47
- workerOutput: last.output,
48
- brief: task.prompt ?? '',
49
- cwd: ctx.cwd,
50
- route: (state.route ?? ctx.route),
51
- diff: cumulativeDiff,
52
- priorConcerns,
53
- abortSignal: ctx.stall.controller.signal,
54
- deadlineMs: ctx.timing.deadlineMs,
55
- ...(ctx.bus && { bus: ctx.bus }),
56
- ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
57
- ...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
58
- tier: usedTier,
59
- stageLabel: 'Spec review',
60
- });
61
- }
62
- catch (err) {
63
- if (err instanceof ReviewerParseError) {
64
- return { verdict: 'error', concerns: [] };
65
- }
66
- throw err;
67
- }
68
- },
69
- });
70
- if (reviewerCall.bothUnavailable)
71
- return null;
72
- const out = reviewerCall.result;
73
- if ('status' in out && out.status === 'skipped')
74
- return null;
75
- return out;
76
- }
77
- async function runSpecRework(input) {
78
- const { state, ctx, round } = input;
79
- const task = state.task;
80
- if (!task)
81
- return null;
82
- const attemptIndex = round - 1; // rework_1 → attemptIndex 1, rework_2 → attemptIndex 2
83
- const baseTier = ctx.assignedTier;
84
- const decision = pickEscalation({ loop: 'spec', attemptIndex, baseTier });
85
- state.specChainAttemptIndex = attemptIndex;
86
- state.specUnavailable ??= new Map();
87
- const specUnavailable = state.specUnavailable;
88
- const reworkPrompt = (task.prompt ?? '') + '\n\n[spec rework — address the prior reviewer feedback]';
89
- const reworkTask = { ...task, prompt: reworkPrompt };
90
- const reworkCall = await runWithFallback({
91
- assigned: decision.impl,
92
- providerFor: (tier) => ctx.providers[tier],
93
- unavailableTiers: specUnavailable,
94
- isTransportFailure: (r) => TRANSPORT_FAILURES.has(r.status) && r.incompleteReason === undefined,
95
- getStatus: (r) => r.status,
96
- makeSyntheticFailure: (assigned) => makeSyntheticRunResult(assigned, 'all_tiers_unavailable'),
97
- call: (provider, usedTier) => delegateWithEscalation({
98
- prompt: reworkTask.prompt,
99
- cwd: ctx.cwd,
100
- agentType: usedTier,
101
- briefQualityPolicy: 'off',
102
- timeoutMs: ctx.timing.timeoutMs,
103
- }, [provider], {
104
- explicitlyPinned: true,
105
- taskDeadlineMs: ctx.timing.deadlineMs,
106
- abortSignal: ctx.stall.controller.signal,
107
- assignedTier: usedTier,
108
- // Without bus the rework's runner-shell.emit calls go nowhere — the
109
- // implementer turns then run silently, the reviewer keeps seeing
110
- // (slightly) updated code, and the chain marches through 3 rounds
111
- // with no visible Implementing events. Pass the same bus + ids the
112
- // initial-impl call uses so verbose stderr + the running headline
113
- // surface the rework's progress.
114
- ...(ctx.bus && { bus: ctx.bus }),
115
- ...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
116
- ...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
117
- stageLabel: `Spec rework round ${round - 1}`,
118
- }),
119
- });
120
- if (reworkCall.bothUnavailable)
121
- return null;
122
- const result = reworkCall.result;
123
- if (result.status !== 'ok')
124
- return null;
125
- return result;
126
- }
127
- function makeSpecReviewHandler(round) {
128
- const slot = `specReviewRound${round}Verdict`;
129
- return async function specReviewRoundHandler(state) {
130
- if (state[slot])
131
- return; // idempotency
132
- const ctx = state.executionContext;
133
- if (!ctx)
134
- return; // defensive no-op
135
- const result = await runSpecReviewRound({ state, ctx, round });
136
- if (!result)
137
- return;
138
- state[slot] = result.verdict;
139
- // Tool sweep #6: accumulate concerns across rounds so the next
140
- // reviewer can verify the rework addressed each one. We append
141
- // unique concerns (skip duplicates from earlier rounds).
142
- if (Array.isArray(result.concerns) && result.concerns.length > 0) {
143
- const prior = Array.isArray(state.priorSpecConcerns) ? state.priorSpecConcerns : [];
144
- const seen = new Set(prior);
145
- const merged = [...prior];
146
- for (const c of result.concerns) {
147
- if (typeof c === 'string' && !seen.has(c)) {
148
- seen.add(c);
149
- merged.push(c);
150
- }
151
- }
152
- state.priorSpecConcerns = merged;
153
- }
154
- // Persist concerns into lastRunResult so the wire's per-stage
155
- // findingsBySeverity (driven by rr.concerns) reflects what the
156
- // reviewer raised — without this, findings_critical/high/medium/low
157
- // for spec_review stays 0 even on changes_required outcomes.
158
- persistSpecReviewConcerns(state, result);
159
- // Record per-round cost so wire task.completed sums reviewer tokens
160
- // and the spec_review stage entry has cumulative roundsUsed across
161
- // 1..3 rounds. Reviewer tier is derived from policy (round-based).
162
- const baseTier = ctx.assignedTier;
163
- const reviewerTier = (round - 1 < 2)
164
- ? (baseTier === 'standard' ? 'complex' : 'standard')
165
- : baseTier; // round 3 swaps back to base tier per SPEC_LOOP policy
166
- const reviewerProvider = ctx.providers[reviewerTier];
167
- mergeStageStats(state, 'spec_review', {
168
- inputTokens: result.cost?.inputTokens ?? 0,
169
- outputTokens: result.cost?.outputTokens ?? 0,
170
- turnCount: result.cost?.turnCount ?? 0,
171
- toolCallCount: result.cost?.toolCallCount ?? 0,
172
- costUSD: result.cost?.costUSD ?? null,
173
- durationMs: result.cost?.durationMs ?? null,
174
- }, {
175
- tier: reviewerTier,
176
- model: reviewerProvider?.config?.model ?? null,
177
- verdict: result.verdict,
178
- });
179
- };
180
- }
181
- /** Push reviewer concerns into state.lastRunResult.concerns so the wire
182
- * findingsBySeverity bucket for spec_review counts them. Spec reviewer
183
- * emits free-text concerns (no per-item severity), so we default to
184
- * 'medium' — this matches the v3.x defaulting in event-builder. */
185
- function persistSpecReviewConcerns(state, result) {
186
- const last = state.lastRunResult;
187
- if (!last)
188
- return;
189
- const reviewerConcerns = result.concerns;
190
- if (!Array.isArray(reviewerConcerns) || reviewerConcerns.length === 0)
191
- return;
192
- const newConcerns = reviewerConcerns.map(text => ({
193
- source: 'spec_review',
194
- severity: 'medium',
195
- message: text,
196
- }));
197
- last.concerns = [...(last.concerns ?? []), ...newConcerns];
198
- }
199
- function makeSpecReworkHandler(round) {
200
- return async function specReworkHandler(state) {
201
- const ctx = state.executionContext;
202
- if (!ctx)
203
- return;
204
- const newResult = await runSpecRework({ state, ctx, round: (round + 1) });
205
- if (!newResult) {
206
- // The rework's implementer call did not return an ok RunResult.
207
- // Don't silently fall through to the next review round — that would
208
- // re-review the unchanged code and produce the "3 reviews, 0 reworks"
209
- // pattern. Mark the chain failed so the next round's `!s.terminal`
210
- // gate stops the cascade and settle_spec_chain can record the
211
- // failure on the wire envelope.
212
- state.specReworkFailed = true;
213
- state.terminal = true;
214
- if (ctx.verbose && typeof ctx.verboseStream === 'function') {
215
- ctx.verboseStream(`[mmagent verbose] event=spec_rework_failed ts=${new Date().toISOString()} batch_id=${ctx.batchId ?? ''} task_index=${ctx.taskIndex ?? 0} round=${round}\n`);
216
- }
217
- return;
218
- }
219
- // Tool sweep #6: union filesRead/filesWritten/toolCalls + preserve
220
- // stageStats. Pre-fix this branch only kept stageStats and dropped
221
- // file-tracker arrays — a spec-rework with 0 writes wiped the
222
- // implementer's recorded write, the envelope's filesWritten went
223
- // empty, and downstream qualityReviewStatus reported "no file
224
- // artifacts to review" despite the file being modified on disk.
225
- replaceLastRunResultPreservingTrackers(state, newResult);
226
- // Record rework cost in spec_rework stage stats so wire telemetry sees
227
- // it. round=1 → attemptIndex 1, round=2 → attemptIndex 2; rework tier
228
- // mirrors pickEscalation (impl=standard for attemptIndex 1; impl=complex
229
- // for attemptIndex 2 when baseTier=standard).
230
- const baseTier = ctx.assignedTier;
231
- const reworkTier = (round === 2 && baseTier === 'standard') ? 'complex' : baseTier;
232
- const reworkProvider = ctx.providers[reworkTier];
233
- mergeStageStats(state, 'spec_rework', {
234
- inputTokens: newResult.usage?.inputTokens ?? 0,
235
- outputTokens: newResult.usage?.outputTokens ?? 0,
236
- cachedReadTokens: newResult.usage?.cachedReadTokens ?? 0,
237
- cachedNonReadTokens: newResult.usage?.cachedNonReadTokens ?? 0,
238
- turnCount: newResult.turns ?? 0,
239
- toolCallCount: Array.isArray(newResult.toolCalls) ? newResult.toolCalls.length : 0,
240
- costUSD: newResult.cost?.costUSD ?? null,
241
- durationMs: newResult.durationMs ?? null,
242
- filesReadCount: Array.isArray(newResult.filesRead) ? newResult.filesRead.length : 0,
243
- filesWrittenCount: Array.isArray(newResult.filesWritten) ? newResult.filesWritten.length : 0,
244
- }, {
245
- tier: reworkTier,
246
- model: reworkProvider?.config?.model ?? null,
247
- });
248
- };
249
- }
250
- export const specReviewRound1Handler = makeSpecReviewHandler(1);
251
- export const specReviewRound2Handler = makeSpecReviewHandler(2);
252
- export const specReviewRound3Handler = makeSpecReviewHandler(3);
253
- export const specReworkRound1Handler = makeSpecReworkHandler(1);
254
- export const specReworkRound2Handler = makeSpecReworkHandler(2);
255
- /**
256
- * Settle handler (row 4.6). Reads the three round verdicts and writes
257
- * state.specChainPassed.
258
- *
259
- * Cascade rule:
260
- * - Any 'approved' verdict in the chain ⇒ chain passed (true)
261
- * - 'changes_required' through round 3 ⇒ chain failed (false)
262
- * - 'error' in any round ⇒ chain failed (false), state.terminal = true
263
- *
264
- * Runs runOnTerminal so the chain-pass slot is authoritative even on
265
- * hard-fail paths. Idempotent: skips when state.specChainPassed is
266
- * already populated.
267
- */
268
- export function settleSpecChainHandler(state) {
269
- if (typeof state.specChainPassed === 'boolean')
270
- return; // idempotency
271
- const v1 = state.specReviewRound1Verdict;
272
- const v2 = state.specReviewRound2Verdict;
273
- const v3 = state.specReviewRound3Verdict;
274
- if (v1 === undefined && v2 === undefined && v3 === undefined)
275
- return; // defensive no-op
276
- if (v1 === 'approved' || v2 === 'approved' || v3 === 'approved') {
277
- state.specChainPassed = true;
278
- return;
279
- }
280
- if (v1 === 'error' || v2 === 'error' || v3 === 'error') {
281
- state.specChainPassed = false;
282
- state.terminal = true;
283
- return;
284
- }
285
- state.specChainPassed = false;
286
- }
287
- //# sourceMappingURL=spec-chain-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-chain-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/spec-chain-handlers.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { ReviewTemplate } from './shared.js';
2
- /**
3
- * Diff reviewer — the final cross-check that looks at the cumulative
4
- * diff in isolation and decides if it's acceptable as a whole.
5
- *
6
- * Tool sweep #6 fix: the template name was a misnomer pre-fix —
7
- * the reviewer received only the worker's text summary, never the
8
- * actual diff. Now it sees the diff (matches the name).
9
- */
10
- export declare const diffTemplate: ReviewTemplate;
11
- //# sourceMappingURL=diff-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/diff-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,cAgC1B,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Diff reviewer — the final cross-check that looks at the cumulative
3
- * diff in isolation and decides if it's acceptable as a whole.
4
- *
5
- * Tool sweep #6 fix: the template name was a misnomer pre-fix —
6
- * the reviewer received only the worker's text summary, never the
7
- * actual diff. Now it sees the diff (matches the name).
8
- */
9
- export const diffTemplate = {
10
- systemPrompt: [
11
- 'You are reviewing the cumulative diff produced by all rework rounds. Decide whether the overall change is acceptable.',
12
- '',
13
- 'Reply with EXACTLY one of these single-line verdicts:',
14
- '- `APPROVE` — the diff is acceptable as-is.',
15
- '- `CONCERNS: <one-line summary of concerns>` — the diff has flaws but is on the right track.',
16
- '- `REJECT: <one-line reason>` — the diff is wrong enough that it should not be applied.',
17
- '',
18
- 'Decision criteria:',
19
- '- Is the diff scoped to what the brief asked for? Out-of-scope edits are a CONCERN at minimum.',
20
- '- Are the changes internally consistent (e.g., a renamed symbol updated everywhere it appears in the diff)?',
21
- '- Does the diff introduce obvious correctness or security issues that the spec/quality reviews missed?',
22
- '',
23
- 'Do NOT re-litigate the brief itself — that is the spec reviewer\'s job. Focus on the diff as a whole.',
24
- ].join('\n'),
25
- buildUserPrompt(ctx) {
26
- const parts = [];
27
- parts.push(`# Task brief\n${ctx.brief}`);
28
- parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
29
- if (ctx.diff && ctx.diff.length > 0) {
30
- parts.push(`# Cumulative diff (what you are reviewing)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
31
- }
32
- else {
33
- parts.push(`# Cumulative diff\n(no file changes detected — APPROVE only if the brief requested a no-op)`);
34
- }
35
- parts.push(`# Decide\nReply with one of APPROVE, CONCERNS: <text>, or REJECT: <text>.`);
36
- return parts.join('\n\n');
37
- },
38
- };
39
- //# sourceMappingURL=diff-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff-review.js","sourceRoot":"","sources":["../../../src/review/templates/diff-review.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;QACZ,uHAAuH;QACvH,EAAE;QACF,uDAAuD;QACvD,6CAA6C;QAC7C,8FAA8F;QAC9F,yFAAyF;QACzF,EAAE;QACF,oBAAoB;QACpB,gGAAgG;QAChG,6GAA6G;QAC7G,wGAAwG;QACxG,EAAE;QACF,uGAAuG;KACxG,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,6DAA6D,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;QAC5G,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAExF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { ReviewTemplate } from './shared.js';
2
- /**
3
- * Quality reviewer for artifact-producing routes (delegate, execute-plan,
4
- * retry).
5
- *
6
- * Tool sweep #6: pre-fix this template only saw `Task: <brief>` +
7
- * `Worker output: <text>`. Quality findings were rooted in the
8
- * worker's prose claim — false positives ("the worker claimed X but
9
- * didn't really") were common, and real regressions in the diff
10
- * could be missed if the worker's summary glossed over them.
11
- *
12
- * Post-fix: reviewer sees the cumulative diff. Findings must be
13
- * specific to diff lines.
14
- */
15
- export declare const qualityAPTemplate: ReviewTemplate;
16
- //# sourceMappingURL=quality-review-artifact.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality-review-artifact.d.ts","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAsC/B,CAAC"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Quality reviewer for artifact-producing routes (delegate, execute-plan,
3
- * retry).
4
- *
5
- * Tool sweep #6: pre-fix this template only saw `Task: <brief>` +
6
- * `Worker output: <text>`. Quality findings were rooted in the
7
- * worker's prose claim — false positives ("the worker claimed X but
8
- * didn't really") were common, and real regressions in the diff
9
- * could be missed if the worker's summary glossed over them.
10
- *
11
- * Post-fix: reviewer sees the cumulative diff. Findings must be
12
- * specific to diff lines.
13
- */
14
- export const qualityAPTemplate = {
15
- systemPrompt: [
16
- 'You are a code quality reviewer. Check whether the cumulative diff is sound, safe, and maintainable.',
17
- '',
18
- 'Reply with a JSON block: {"verdict":"approved"|"concerns","concerns":["..."]}.',
19
- '',
20
- 'Verdict rules:',
21
- '- "approved": the diff has no quality concerns worth blocking on. The "concerns" list MUST be empty.',
22
- '- "concerns": cite at least one specific concern, each tied to a specific diff line. Do not raise stylistic preferences not relevant to correctness, safety, or maintainability.',
23
- '- An empty diff is "approved" (nothing to review).',
24
- '',
25
- 'Examples of legitimate concerns: input not validated; resource not closed; race condition introduced; tests broken; new dependency introduced without justification.',
26
- 'Examples of out-of-scope concerns: bracket placement; comment punctuation; unrelated pre-existing code.',
27
- ].join('\n'),
28
- buildUserPrompt(ctx) {
29
- const parts = [];
30
- parts.push(`# Task brief\n${ctx.brief}`);
31
- if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
32
- parts.push(`# Prior reviewer concerns from earlier rounds in this chain\nVerify the rework has addressed each one:\n` +
33
- ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n'));
34
- }
35
- parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
36
- if (ctx.diff && ctx.diff.length > 0) {
37
- parts.push(`# Cumulative diff (the truth of what changed)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
38
- }
39
- else {
40
- parts.push(`# Cumulative diff\n(no file changes detected — verdict should be "approved")`);
41
- }
42
- parts.push(`# Decide\nIs the cumulative diff sound, safe, and maintainable? Reply with the JSON block specified in the system prompt.`);
43
- return parts.join('\n\n');
44
- },
45
- };
46
- //# sourceMappingURL=quality-review-artifact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quality-review-artifact.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,YAAY,EAAE;QACZ,sGAAsG;QACtG,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,gBAAgB;QAChB,sGAAsG;QACtG,kLAAkL;QAClL,oDAAoD;QACpD,EAAE;QACF,sKAAsK;QACtK,yGAAyG;KAC1G,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,0GAA0G;gBAC1G,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,gEAAgE,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC7F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,2HAA2H,CAAC,CAAC;QAExI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}