@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,213 +0,0 @@
1
- function extractSummarySection(text) {
2
- const match = text.match(/##\s*Summary\s*\n([\s\S]*?)(?=\n##\s|$)/i);
3
- return match ? match[1].trim() : null;
4
- }
5
- /**
6
- * Extract the verdict from a JSON block in the reviewer's output.
7
- * Two acceptable shapes:
8
- * 1. Fenced: ```json {"verdict":"...","concerns":[...]} ```
9
- * 2. Bare: {"verdict":"...","concerns":[...]} (no fence)
10
- *
11
- * Some models freelance the format and skip the ```json``` wrapper —
12
- * the fenced-only parser would then drop a perfectly valid verdict
13
- * and fall through to the markdown-section path, which also fails
14
- * (since the JSON template doesn't emit `## Summary`), causing the
15
- * spurious "missing structured verdict" meta-concern that triggered
16
- * spec_rework spirals.
17
- *
18
- * Recognized verdict values (case-insensitive):
19
- * - "approved" / "approve" → ReviewerVerdict.approved
20
- * - "changes_required" / "changes-required" → changes_required
21
- * - "concerns" → mapped to approved (parser convention: concerns
22
- * ≠ blocking; use changes_required for blocking).
23
- */
24
- function extractJsonVerdict(text) {
25
- // Pass 1: fenced ```json ... ``` block.
26
- const fenced = text.match(/```json\s*\n([\s\S]*?)\n```/i);
27
- const fencedVerdict = fenced ? tryReadVerdict(fenced[1]) : null;
28
- if (fencedVerdict)
29
- return fencedVerdict;
30
- // Pass 2: scan for the first balanced `{...}` that parses as a JSON
31
- // object containing a "verdict" key. Pre-fix the parser only tried
32
- // FIRST `{` to LAST `}` — that fails when the text has prose with
33
- // its own `{...}` (e.g., "the diff matches {file} criteria...
34
- // {"verdict":"approved",...}"). We now walk each `{` left-to-right
35
- // and find its matching `}` via balanced-brace counting (string-
36
- // literal aware) so prose braces and JSON braces don't collide.
37
- return findFirstParseableJsonVerdict(text);
38
- }
39
- /**
40
- * Walk every `{` in `text` from left to right, find its balanced `}`
41
- * (respecting strings + escapes), and try to parse the slice as JSON
42
- * with a "verdict" field. Returns the first successful match, or null.
43
- */
44
- function findFirstParseableJsonVerdict(text) {
45
- const len = text.length;
46
- for (let start = text.indexOf('{'); start !== -1; start = text.indexOf('{', start + 1)) {
47
- const end = matchingBrace(text, start);
48
- if (end === -1)
49
- continue;
50
- const candidate = text.slice(start, end + 1);
51
- if (!/"verdict"\s*:/i.test(candidate))
52
- continue;
53
- const v = tryReadVerdict(candidate);
54
- if (v)
55
- return v;
56
- // Bound the scan: don't try crazy-large prefixes from the same
57
- // position. matchingBrace already returns at most `len`.
58
- if (end >= len - 1)
59
- break;
60
- }
61
- return null;
62
- }
63
- /**
64
- * Return the index of the `}` that balances the `{` at `openPos`,
65
- * accounting for nested objects and string literals. Returns -1 when
66
- * unbalanced (don't try to parse).
67
- */
68
- function matchingBrace(text, openPos) {
69
- let depth = 0;
70
- let inString = false;
71
- let escape = false;
72
- for (let i = openPos; i < text.length; i++) {
73
- const ch = text[i];
74
- if (inString) {
75
- if (escape) {
76
- escape = false;
77
- continue;
78
- }
79
- if (ch === '\\') {
80
- escape = true;
81
- continue;
82
- }
83
- if (ch === '"') {
84
- inString = false;
85
- continue;
86
- }
87
- continue;
88
- }
89
- if (ch === '"') {
90
- inString = true;
91
- continue;
92
- }
93
- if (ch === '{')
94
- depth++;
95
- else if (ch === '}') {
96
- depth--;
97
- if (depth === 0)
98
- return i;
99
- }
100
- }
101
- return -1;
102
- }
103
- function readConcernsFromJsonText(text) {
104
- const tryParse = (s) => {
105
- try {
106
- const obj = JSON.parse(s);
107
- if (Array.isArray(obj.concerns)) {
108
- return obj.concerns.filter((x) => typeof x === 'string');
109
- }
110
- }
111
- catch {
112
- /* not parseable */
113
- }
114
- return [];
115
- };
116
- const fenced = text.match(/```json\s*\n([\s\S]*?)\n```/i);
117
- if (fenced) {
118
- const out = tryParse(fenced[1]);
119
- if (out.length > 0)
120
- return out;
121
- }
122
- // Bare JSON fallback — same balanced-brace walk as extractJsonVerdict
123
- // so the two helpers stay in sync. Pre-fix used a fragile first-`{`-
124
- // to-last-`}` slice that broke when prose contained `{}`.
125
- for (let start = text.indexOf('{'); start !== -1; start = text.indexOf('{', start + 1)) {
126
- const end = matchingBrace(text, start);
127
- if (end === -1)
128
- continue;
129
- const candidate = text.slice(start, end + 1);
130
- if (!/"concerns"\s*:/i.test(candidate))
131
- continue;
132
- const out = tryParse(candidate);
133
- if (out.length > 0)
134
- return out;
135
- }
136
- return [];
137
- }
138
- function tryReadVerdict(jsonText) {
139
- let parsed;
140
- try {
141
- parsed = JSON.parse(jsonText);
142
- }
143
- catch {
144
- return null;
145
- }
146
- const obj = parsed;
147
- const v = typeof obj.verdict === 'string' ? obj.verdict.toLowerCase().trim() : '';
148
- if (v === 'approved' || v === 'approve')
149
- return 'approved';
150
- if (v === 'changes_required' || v === 'changes-required')
151
- return 'changes_required';
152
- if (v === 'concerns')
153
- return 'approved';
154
- return null;
155
- }
156
- function extractDeviationsAndUnresolved(text) {
157
- const concerns = [];
158
- // Try fenced ```json``` first, then bare JSON (same lenient pattern
159
- // as extractJsonVerdict — keeps both helpers in sync so a parser
160
- // that recognizes the verdict also recognizes the concerns).
161
- const fromJson = readConcernsFromJsonText(text);
162
- concerns.push(...fromJson);
163
- const devMatch = text.match(/##\s*Deviations from brief\s*\n([\s\S]*?)(?=\n##\s|$)/i);
164
- if (devMatch) {
165
- const lines = devMatch[1].trim().split('\n').filter(l => l.trim().startsWith('-'));
166
- concerns.push(...lines.map(l => l.replace(/^-\s*/, '').trim()));
167
- }
168
- const unresMatch = text.match(/##\s*Unresolved\s*\n([\s\S]*?)(?=\n##\s|$)/i);
169
- if (unresMatch) {
170
- const lines = unresMatch[1].trim().split('\n').filter(l => l.trim().startsWith('-'));
171
- concerns.push(...lines.map(l => l.replace(/^-\s*/, '').trim()));
172
- }
173
- return concerns;
174
- }
175
- export class ReviewerOutputParser {
176
- parse(text) {
177
- // Source priority:
178
- // 1. JSON block ```json ... ``` containing {"verdict":"...","concerns":[...]}
179
- // — what spec/quality templates actually instruct the LLM to emit
180
- // (tool sweep #6 rewrite). The pre-fix parser only looked at
181
- // `## Summary` markdown sections, defaulted every JSON-only
182
- // response to `changes_required` with a meta-concern, and
183
- // triggered exactly the spec_rework spirals we're trying to
184
- // eliminate.
185
- // 2. `## Summary` markdown section (back-compat for any reviewer
186
- // that still emits the older format).
187
- // 3. Fall through to changes_required with a meta-concern when
188
- // neither path produced a verdict — keeps malformed output
189
- // from crashing the run.
190
- const jsonVerdict = extractJsonVerdict(text);
191
- const concerns = extractDeviationsAndUnresolved(text);
192
- if (jsonVerdict) {
193
- return { verdict: jsonVerdict, concerns };
194
- }
195
- const summary = extractSummarySection(text);
196
- if (!summary) {
197
- return {
198
- verdict: 'changes_required',
199
- concerns: [
200
- 'reviewer output missing structured verdict (no JSON block, no `## Summary` section) — defaulting to changes_required',
201
- ...concerns,
202
- ],
203
- };
204
- }
205
- const lower = summary.toLowerCase();
206
- const verdict = lower.includes('changes_required') ? 'changes_required' : 'approved';
207
- return { verdict, concerns };
208
- }
209
- }
210
- export class ReviewerParseError extends Error {
211
- constructor(message) { super(message); this.name = 'ReviewerParseError'; }
212
- }
213
- //# sourceMappingURL=reviewer-output-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewer-output-parser.js","sourceRoot":"","sources":["../../src/review/reviewer-output-parser.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { ReviewTemplate, ReviewTemplateContext } from './templates/shared.js';
2
- export type QualityReviewRoute = 'delegate' | 'execute-plan' | 'audit' | 'review' | 'investigate' | 'debug' | 'research';
3
- export declare class ReviewerPromptBuilder {
4
- private templates;
5
- private qualityTemplates;
6
- constructor(templates: {
7
- spec: ReviewTemplate;
8
- qualityForAP: ReviewTemplate;
9
- }, qualityTemplates?: Partial<Record<QualityReviewRoute, ReviewTemplate>>);
10
- buildSpec(ctx: ReviewTemplateContext): {
11
- systemPrompt: string;
12
- userPrompt: string;
13
- };
14
- buildQualityAP(ctx: ReviewTemplateContext & {
15
- route?: QualityReviewRoute;
16
- }): {
17
- systemPrompt: string;
18
- userPrompt: string;
19
- };
20
- }
21
- //# sourceMappingURL=reviewer-prompt-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewer-prompt-builder.d.ts","sourceRoot":"","sources":["../../src/review/reviewer-prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,CAAC;AAEzH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,gBAAgB;gBAJhB,SAAS,EAAE;QACjB,IAAI,EAAE,cAAc,CAAC;QACrB,YAAY,EAAE,cAAc,CAAC;KAC9B,EACO,gBAAgB,GAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAM;IAGpF,SAAS,CAAC,GAAG,EAAE,qBAAqB,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAOnF,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG;QAAE,KAAK,CAAC,EAAE,kBAAkB,CAAA;KAAE,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAO1H"}
@@ -1,22 +0,0 @@
1
- export class ReviewerPromptBuilder {
2
- templates;
3
- qualityTemplates;
4
- constructor(templates, qualityTemplates = {}) {
5
- this.templates = templates;
6
- this.qualityTemplates = qualityTemplates;
7
- }
8
- buildSpec(ctx) {
9
- return {
10
- systemPrompt: this.templates.spec.systemPrompt,
11
- userPrompt: this.templates.spec.buildUserPrompt(ctx),
12
- };
13
- }
14
- buildQualityAP(ctx) {
15
- const template = (ctx.route !== undefined && this.qualityTemplates[ctx.route]) || this.templates.qualityForAP;
16
- return {
17
- systemPrompt: template.systemPrompt,
18
- userPrompt: template.buildUserPrompt(ctx),
19
- };
20
- }
21
- }
22
- //# sourceMappingURL=reviewer-prompt-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reviewer-prompt-builder.js","sourceRoot":"","sources":["../../src/review/reviewer-prompt-builder.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAqB;IAEtB;IAIA;IALV,YACU,SAGP,EACO,mBAAwE,EAAE;QAJ1E,cAAS,GAAT,SAAS,CAGhB;QACO,qBAAgB,GAAhB,gBAAgB,CAA0D;IACjF,CAAC;IAEJ,SAAS,CAAC,GAA0B;QAClC,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY;YAC9C,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,GAA2D;QACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QAC9G,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { ReviewTemplate } from './shared.js';
2
- /**
3
- * Completion annotator template (pipeline-redesign §3.3.3).
4
- *
5
- * Read-only. Emits a single ```json fenced block with structured
6
- * completion data. The handler runs the verify command BEFORE invoking
7
- * this annotator and passes the result via ctx.verifyResult; the parser
8
- * overlays it onto the final annotation (the annotator itself does not
9
- * need to emit the verify field).
10
- */
11
- export declare const annotateCompletionTemplate: ReviewTemplate;
12
- //# sourceMappingURL=annotate-completion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotate-completion.d.ts","sourceRoot":"","sources":["../../../src/review/templates/annotate-completion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,cA4DxC,CAAC"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Completion annotator template (pipeline-redesign §3.3.3).
3
- *
4
- * Read-only. Emits a single ```json fenced block with structured
5
- * completion data. The handler runs the verify command BEFORE invoking
6
- * this annotator and passes the result via ctx.verifyResult; the parser
7
- * overlays it onto the final annotation (the annotator itself does not
8
- * need to emit the verify field).
9
- */
10
- export const annotateCompletionTemplate = {
11
- systemPrompt: [
12
- 'You are a completion annotator for a plan-execution task. You have READ-ONLY tools (no editor).',
13
- '',
14
- 'Output a single ```json fenced code block — no prose before or after the fenced block. The schema:',
15
- '',
16
- '```json',
17
- '{',
18
- ' "completionPercent": <int 0..100>,',
19
- ' "perStep": [',
20
- ' { "step": "<step heading from plan>", "status": "done"|"partial"|"missing", "note": "<short note or null>" }',
21
- ' ],',
22
- ' "concerns": ["<short concern strings>"]',
23
- '}',
24
- '```',
25
- '',
26
- 'How to fill:',
27
- '- Identify the discrete steps in the plan section (numbered headings, bullet items, or other clear demarcation). For each, decide done / partial / missing based on whether the diff and reviewer notes show evidence the step was satisfied.',
28
- '- `completionPercent` ≈ `round((done + 0.5 * partial) / total_steps * 100)`. You may adjust by ±10 if a partial step is much closer to done or missing than 50%.',
29
- '- If you cannot identify discrete steps (e.g., plan is a single paragraph), emit `perStep: []` and judge `completionPercent` holistically. The downstream code accounts for this case.',
30
- '- `concerns` is a short list of remaining issues the main agent should know about — TODOs left in code, unresolved reviewer notes, verify failures, etc.',
31
- ].join('\n'),
32
- buildUserPrompt(ctx) {
33
- const parts = [];
34
- if (ctx.planContext && ctx.planContext.trim().length > 0) {
35
- parts.push(`# Plan section\n\n\`\`\`markdown\n${ctx.planContext.trim()}\n\`\`\``);
36
- }
37
- if (ctx.diff && ctx.diff.length > 0) {
38
- parts.push(`# Final cumulative diff\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
39
- }
40
- else {
41
- parts.push(`# Final cumulative diff\n(no file changes detected)`);
42
- }
43
- if (ctx.specReviewerNotes) {
44
- parts.push(`# Spec lint report\n${ctx.specReviewerNotes}`);
45
- }
46
- if (ctx.specReviewError) {
47
- parts.push(`# Spec reviewer ERROR (call failed)\n${ctx.specReviewError}`);
48
- }
49
- if (ctx.qualityReviewerNotes) {
50
- parts.push(`# Quality lint report\n${ctx.qualityReviewerNotes}`);
51
- }
52
- if (ctx.qualityReviewError) {
53
- parts.push(`# Quality reviewer ERROR (call failed)\n${ctx.qualityReviewError}`);
54
- }
55
- if (ctx.reworkApplied === true && ctx.reworkOutput) {
56
- parts.push(`# Rework worker's summary (applied fixes)\n${ctx.reworkOutput}`);
57
- }
58
- else if (ctx.reworkApplied === false) {
59
- parts.push(`# Rework stage\n(skipped — both reviewers approved)`);
60
- }
61
- if (ctx.reworkError) {
62
- parts.push(`# Rework ERROR\n${ctx.reworkError}`);
63
- }
64
- if (ctx.verifyResult && ctx.verifyResult.ran) {
65
- const status = ctx.verifyResult.passed ? 'PASSED' : 'FAILED';
66
- parts.push(`# Verify command output (status: ${status}, exitCode: ${ctx.verifyResult.exitCode})\n\n\`\`\`\n${ctx.verifyResult.tailOutput || '(no output)'}\n\`\`\``);
67
- }
68
- parts.push(`# Action\nProduce the single fenced JSON block per the schema in the system prompt. No prose outside the block.`);
69
- return parts.join('\n\n');
70
- },
71
- };
72
- //# sourceMappingURL=annotate-completion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"annotate-completion.js","sourceRoot":"","sources":["../../../src/review/templates/annotate-completion.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAmB;IACxD,YAAY,EAAE;QACZ,iGAAiG;QACjG,EAAE;QACF,oGAAoG;QACpG,EAAE;QACF,SAAS;QACT,GAAG;QACH,sCAAsC;QACtC,gBAAgB;QAChB,kHAAkH;QAClH,MAAM;QACN,2CAA2C;QAC3C,GAAG;QACH,KAAK;QACL,EAAE;QACF,cAAc;QACd,+OAA+O;QAC/O,kKAAkK;QAClK,wLAAwL;QACxL,0JAA0J;KAC3J,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,wCAAwC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,2CAA2C,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,8CAA8C,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,GAAG,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,oCAAoC,MAAM,eAAe,GAAG,CAAC,YAAY,CAAC,QAAQ,gBAAgB,GAAG,CAAC,YAAY,CAAC,UAAU,IAAI,aAAa,UAAU,CAAC,CAAC;QACvK,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,iHAAiH,CAAC,CAAC;QAC9H,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}