@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.
- package/README.md +8 -3
- package/dist/escalation/delegate-with-escalation.d.ts +2 -2
- package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
- package/dist/escalation/delegate-with-escalation.js +11 -17
- package/dist/escalation/delegate-with-escalation.js.map +1 -1
- package/dist/escalation/fallback-helpers.d.ts +5 -5
- package/dist/escalation/fallback-helpers.d.ts.map +1 -1
- package/dist/escalation/fallback-helpers.js +5 -3
- package/dist/escalation/fallback-helpers.js.map +1 -1
- package/dist/events/event-builder.d.ts +36 -5
- package/dist/events/event-builder.d.ts.map +1 -1
- package/dist/events/event-builder.js +173 -31
- package/dist/events/event-builder.js.map +1 -1
- package/dist/events/observability-events.d.ts +6 -0
- package/dist/events/observability-events.d.ts.map +1 -1
- package/dist/events/observability-events.js +5 -0
- package/dist/events/observability-events.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +10 -0
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/events/verbose-log-channel.d.ts +7 -7
- package/dist/events/verbose-log-channel.js +10 -10
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/annotate-parser.d.ts +9 -0
- package/dist/lifecycle/annotate-parser.d.ts.map +1 -0
- package/dist/lifecycle/annotate-parser.js +83 -0
- package/dist/lifecycle/annotate-parser.js.map +1 -0
- package/dist/lifecycle/annotate-prompts.d.ts +9 -0
- package/dist/lifecycle/annotate-prompts.d.ts.map +1 -0
- package/dist/lifecycle/annotate-prompts.js +86 -0
- package/dist/lifecycle/annotate-prompts.js.map +1 -0
- package/dist/lifecycle/auto-register-context-block.d.ts +2 -2
- package/dist/lifecycle/auto-register-context-block.d.ts.map +1 -1
- package/dist/lifecycle/auto-register-context-block.js.map +1 -1
- package/dist/lifecycle/build-cancelled-result.d.ts +11 -0
- package/dist/lifecycle/build-cancelled-result.d.ts.map +1 -0
- package/dist/lifecycle/build-cancelled-result.js +27 -0
- package/dist/lifecycle/build-cancelled-result.js.map +1 -0
- package/dist/lifecycle/executor-output-types.d.ts +2 -2
- package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
- package/dist/lifecycle/fallback-report.d.ts +2 -2
- package/dist/lifecycle/fallback-report.d.ts.map +1 -1
- package/dist/lifecycle/fallback-report.js.map +1 -1
- package/dist/lifecycle/findings-parser.d.ts +2 -0
- package/dist/lifecycle/findings-parser.d.ts.map +1 -1
- package/dist/lifecycle/findings-parser.js +9 -4
- package/dist/lifecycle/findings-parser.js.map +1 -1
- package/dist/lifecycle/git-toplevel.d.ts +12 -0
- package/dist/lifecycle/git-toplevel.d.ts.map +1 -0
- package/dist/lifecycle/git-toplevel.js +49 -0
- package/dist/lifecycle/git-toplevel.js.map +1 -0
- package/dist/lifecycle/handlers/annotator.d.ts +2 -1
- package/dist/lifecycle/handlers/annotator.d.ts.map +1 -1
- package/dist/lifecycle/handlers/annotator.js +225 -7
- package/dist/lifecycle/handlers/annotator.js.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.d.ts +10 -5
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +206 -316
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +3 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.js +191 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -0
- package/dist/lifecycle/handlers/git-commit-handler.d.ts +3 -2
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +139 -110
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +7 -13
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js +72 -49
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +2 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.js +35 -14
- package/dist/lifecycle/handlers/register-context-block-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/review-handler.d.ts +2 -1
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/review-handler.js +152 -154
- package/dist/lifecycle/handlers/review-handler.js.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.d.ts +2 -1
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.js +62 -14
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
- package/dist/lifecycle/handlers/task-executor.d.ts +5 -4
- package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/handlers/task-executor.js +153 -74
- package/dist/lifecycle/handlers/task-executor.js.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +22 -0
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +86 -5
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +31 -3
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-dispatcher.d.ts +18 -19
- package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-dispatcher.js +38 -22
- package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts +15 -8
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +110 -29
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +3 -3
- package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
- package/dist/lifecycle/merge-stage-stats.js +2 -2
- package/dist/lifecycle/merge-stage-stats.js.map +1 -1
- package/dist/lifecycle/perform-implementation.d.ts +3 -0
- package/dist/lifecycle/perform-implementation.d.ts.map +1 -0
- package/dist/lifecycle/perform-implementation.js +264 -0
- package/dist/lifecycle/perform-implementation.js.map +1 -0
- package/dist/lifecycle/repo-hygiene.d.ts +14 -0
- package/dist/lifecycle/repo-hygiene.d.ts.map +1 -0
- package/dist/lifecycle/repo-hygiene.js +71 -0
- package/dist/lifecycle/repo-hygiene.js.map +1 -0
- package/dist/lifecycle/shared-compute.d.ts +4 -4
- package/dist/lifecycle/shared-compute.d.ts.map +1 -1
- package/dist/lifecycle/shared-compute.js +1 -1
- package/dist/lifecycle/shared-compute.js.map +1 -1
- package/dist/lifecycle/stage-io.d.ts +139 -0
- package/dist/lifecycle/stage-io.d.ts.map +1 -0
- package/dist/lifecycle/stage-io.js +20 -0
- package/dist/lifecycle/stage-io.js.map +1 -0
- package/dist/lifecycle/stage-plan-builder.d.ts +3 -3
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +157 -128
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +5 -21
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts +3 -15
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +48 -91
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-completion-summary.d.ts +2 -2
- package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
- package/dist/lifecycle/task-completion-summary.js +0 -6
- package/dist/lifecycle/task-completion-summary.js.map +1 -1
- package/dist/lifecycle/task-executor.d.ts +23 -0
- package/dist/lifecycle/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.js +77 -5
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/task-grouping.d.ts +19 -0
- package/dist/lifecycle/task-grouping.d.ts.map +1 -0
- package/dist/lifecycle/task-grouping.js +48 -0
- package/dist/lifecycle/task-grouping.js.map +1 -0
- package/dist/lifecycle/task-runner.d.ts +20 -7
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +42 -278
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/lifecycle/tool-config-types.d.ts +9 -0
- package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
- package/dist/lifecycle/worker-output-contract.d.ts +9 -15
- package/dist/lifecycle/worker-output-contract.d.ts.map +1 -1
- package/dist/lifecycle/worker-output-contract.js +45 -30
- package/dist/lifecycle/worker-output-contract.js.map +1 -1
- package/dist/providers/assemble-run-result.d.ts +3 -3
- package/dist/providers/assemble-run-result.d.ts.map +1 -1
- package/dist/providers/assemble-run-result.js +20 -9
- package/dist/providers/assemble-run-result.js.map +1 -1
- package/dist/providers/claude-session.d.ts.map +1 -1
- package/dist/providers/claude-session.js +1 -0
- package/dist/providers/claude-session.js.map +1 -1
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex-cli-launch.js +1 -1
- package/dist/providers/codex-cli-launch.js.map +1 -1
- package/dist/providers/codex-cli-session.d.ts +4 -1
- package/dist/providers/codex-cli-session.d.ts.map +1 -1
- package/dist/providers/codex-cli-session.js +73 -46
- package/dist/providers/codex-cli-session.js.map +1 -1
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/normalize-claude.d.ts +2 -0
- package/dist/providers/normalize-claude.d.ts.map +1 -1
- package/dist/providers/normalize-claude.js +1 -0
- package/dist/providers/normalize-claude.js.map +1 -1
- package/dist/providers/run-annotator-turn.d.ts +24 -0
- package/dist/providers/run-annotator-turn.d.ts.map +1 -0
- package/dist/providers/run-annotator-turn.js +43 -0
- package/dist/providers/run-annotator-turn.js.map +1 -0
- package/dist/providers/run-worker-turn.d.ts +26 -0
- package/dist/providers/run-worker-turn.d.ts.map +1 -0
- package/dist/providers/run-worker-turn.js +58 -0
- package/dist/providers/run-worker-turn.js.map +1 -0
- package/dist/providers/runner-types.d.ts +1 -1
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/reporting/headline-composer.d.ts +3 -3
- package/dist/reporting/headline-composer.d.ts.map +1 -1
- package/dist/review/index.d.ts +4 -3
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/index.js +7 -4
- package/dist/review/index.js.map +1 -1
- package/dist/review/parse-review-report.d.ts +7 -1
- package/dist/review/parse-review-report.d.ts.map +1 -1
- package/dist/review/parse-review-report.js +13 -21
- package/dist/review/parse-review-report.js.map +1 -1
- package/dist/review/review-verdict-mapping.d.ts +3 -3
- package/dist/review/review-verdict-mapping.d.ts.map +1 -1
- package/dist/review/review-verdict-mapping.js +1 -1
- package/dist/review/review-verdict-mapping.js.map +1 -1
- package/dist/review/run-reviewer.d.ts +40 -0
- package/dist/review/run-reviewer.d.ts.map +1 -0
- package/dist/review/run-reviewer.js +54 -0
- package/dist/review/run-reviewer.js.map +1 -0
- package/dist/review/templates/quality-review.d.ts +5 -0
- package/dist/review/templates/quality-review.d.ts.map +1 -1
- package/dist/review/templates/quality-review.js +35 -25
- package/dist/review/templates/quality-review.js.map +1 -1
- package/dist/review/templates/spec-review.d.ts +6 -0
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +36 -8
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/stores/batch-cache.d.ts +3 -3
- package/dist/stores/batch-cache.d.ts.map +1 -1
- package/dist/stores/batch-cache.js.map +1 -1
- package/dist/stores/batch-registry.d.ts +31 -0
- package/dist/stores/batch-registry.d.ts.map +1 -1
- package/dist/stores/batch-registry.js +12 -0
- package/dist/stores/batch-registry.js.map +1 -1
- package/dist/tools/debug/tool-config.js +1 -1
- package/dist/tools/debug/tool-config.js.map +1 -1
- package/dist/tools/delegate/tool-config.d.ts.map +1 -1
- package/dist/tools/delegate/tool-config.js +3 -1
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +3 -1
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/investigate/tool-config.js +1 -1
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/retry/tool-config.js.map +1 -1
- package/dist/types/run-result.d.ts +164 -213
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/run-result.js +17 -0
- package/dist/types/run-result.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lifecycle/handlers/derive-terminal-status.d.ts +0 -10
- package/dist/lifecycle/handlers/derive-terminal-status.d.ts.map +0 -1
- package/dist/lifecycle/handlers/derive-terminal-status.js +0 -35
- package/dist/lifecycle/handlers/derive-terminal-status.js.map +0 -1
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts +0 -27
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +0 -1
- package/dist/lifecycle/handlers/files-written-cross-check.js +0 -91
- package/dist/lifecycle/handlers/files-written-cross-check.js.map +0 -1
- package/dist/lifecycle/handlers/verify-stage.d.ts +0 -37
- package/dist/lifecycle/handlers/verify-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/verify-stage.js +0 -208
- package/dist/lifecycle/handlers/verify-stage.js.map +0 -1
- package/dist/review/default-engines.d.ts +0 -3
- package/dist/review/default-engines.d.ts.map +0 -1
- package/dist/review/default-engines.js +0 -22
- package/dist/review/default-engines.js.map +0 -1
- package/dist/review/reviewer-engine.d.ts +0 -53
- package/dist/review/reviewer-engine.d.ts.map +0 -1
- package/dist/review/reviewer-engine.js +0 -47
- package/dist/review/reviewer-engine.js.map +0 -1
- package/dist/review/reviewer-output-parser.d.ts +0 -12
- package/dist/review/reviewer-output-parser.d.ts.map +0 -1
- package/dist/review/reviewer-output-parser.js +0 -213
- package/dist/review/reviewer-output-parser.js.map +0 -1
- package/dist/review/reviewer-prompt-builder.d.ts +0 -21
- package/dist/review/reviewer-prompt-builder.d.ts.map +0 -1
- package/dist/review/reviewer-prompt-builder.js +0 -22
- package/dist/review/reviewer-prompt-builder.js.map +0 -1
- package/dist/review/templates/annotate-completion.d.ts +0 -12
- package/dist/review/templates/annotate-completion.d.ts.map +0 -1
- package/dist/review/templates/annotate-completion.js +0 -72
- 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":"AAOA,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,wCAAwC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,8DAA8D;IAC9D,mEAAmE;IACnE,iEAAiE;IACjE,gEAAgE;IAChE,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,6BAA6B,CAAC,IAAY;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,SAAS;QAChD,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAChB,+DAA+D;QAC/D,yDAAyD;QACzD,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,OAAe;IAClD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,MAAM,EAAE,CAAC;gBAAC,MAAM,GAAG,KAAK,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC7C,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,QAAQ,GAAG,KAAK,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAY,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAA2B,CAAC;YACpD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1D,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACjC,CAAC;IACD,sEAAsE;IACtE,qEAAqE;IACrE,0DAA0D;IAC1D,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,SAAS;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,SAAS;QACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,MAA+B,CAAC;IAC5C,MAAM,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IAC3D,IAAI,CAAC,KAAK,kBAAkB,IAAI,CAAC,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IACpF,IAAI,CAAC,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAY;IAClD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,oEAAoE;IACpE,iEAAiE;IACjE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACtF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACrF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,oBAAoB;IAC/B,KAAK,CAAC,IAAY;QAChB,mBAAmB;QACnB,gFAAgF;QAChF,uEAAuE;QACvE,kEAAkE;QAClE,iEAAiE;QACjE,+DAA+D;QAC/D,iEAAiE;QACjE,kBAAkB;QAClB,mEAAmE;QACnE,2CAA2C;QAC3C,iEAAiE;QACjE,gEAAgE;QAChE,8BAA8B;QAC9B,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,kBAAkB;gBAC3B,QAAQ,EAAE;oBACR,sHAAsH;oBACtH,GAAG,QAAQ;iBACZ;aACF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,OAAO,GAAoB,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC;QACtG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;CAEF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC;CACnF"}
|
|
@@ -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"}
|