@zhixuan92/multi-model-agent-core 4.0.3 → 4.0.4
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 +11 -9
- package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.js +8 -1
- package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
- package/dist/lifecycle/diff-tracker.d.ts +72 -0
- package/dist/lifecycle/diff-tracker.d.ts.map +1 -0
- package/dist/lifecycle/diff-tracker.js +316 -0
- package/dist/lifecycle/diff-tracker.js.map +1 -0
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js +23 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.js +57 -6
- package/dist/lifecycle/handlers/quality-chain-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/review-diff-handler.js +38 -12
- package/dist/lifecycle/handlers/review-diff-handler.js.map +1 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.js +38 -10
- package/dist/lifecycle/handlers/spec-chain-handlers.js.map +1 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +27 -0
- package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
- package/dist/lifecycle/merge-stage-stats.js +56 -0
- package/dist/lifecycle/merge-stage-stats.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +15 -0
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +6 -0
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/reporting/headline-templates/audit.d.ts.map +1 -1
- package/dist/reporting/headline-templates/audit.js +17 -8
- package/dist/reporting/headline-templates/audit.js.map +1 -1
- package/dist/reporting/headline-templates/debug.d.ts +22 -3
- package/dist/reporting/headline-templates/debug.d.ts.map +1 -1
- package/dist/reporting/headline-templates/debug.js +38 -8
- package/dist/reporting/headline-templates/debug.js.map +1 -1
- package/dist/reporting/headline-templates/delegate.d.ts.map +1 -1
- package/dist/reporting/headline-templates/delegate.js +14 -3
- package/dist/reporting/headline-templates/delegate.js.map +1 -1
- package/dist/reporting/headline-templates/execute-plan.d.ts.map +1 -1
- package/dist/reporting/headline-templates/execute-plan.js +17 -8
- package/dist/reporting/headline-templates/execute-plan.js.map +1 -1
- package/dist/reporting/headline-templates/review.d.ts.map +1 -1
- package/dist/reporting/headline-templates/review.js +23 -6
- package/dist/reporting/headline-templates/review.js.map +1 -1
- package/dist/reporting/headline-templates/verify.d.ts.map +1 -1
- package/dist/reporting/headline-templates/verify.js +23 -6
- package/dist/reporting/headline-templates/verify.js.map +1 -1
- package/dist/reporting/headline-text.d.ts +5 -0
- package/dist/reporting/headline-text.d.ts.map +1 -1
- package/dist/reporting/headline-text.js +36 -5
- package/dist/reporting/headline-text.js.map +1 -1
- package/dist/reporting/report-parser-slots/verify-report.d.ts +17 -0
- package/dist/reporting/report-parser-slots/verify-report.d.ts.map +1 -1
- package/dist/reporting/report-parser-slots/verify-report.js +45 -3
- package/dist/reporting/report-parser-slots/verify-report.js.map +1 -1
- package/dist/reporting/severity.d.ts +22 -0
- package/dist/reporting/severity.d.ts.map +1 -1
- package/dist/reporting/severity.js +36 -0
- package/dist/reporting/severity.js.map +1 -1
- package/dist/review/annotator-output-parser.d.ts.map +1 -1
- package/dist/review/annotator-output-parser.js +94 -14
- package/dist/review/annotator-output-parser.js.map +1 -1
- package/dist/review/annotator-prompt-builder.d.ts +20 -0
- package/dist/review/annotator-prompt-builder.d.ts.map +1 -1
- package/dist/review/annotator-prompt-builder.js +52 -1
- package/dist/review/annotator-prompt-builder.js.map +1 -1
- package/dist/review/reviewer-engine.d.ts +14 -0
- package/dist/review/reviewer-engine.d.ts.map +1 -1
- package/dist/review/reviewer-engine.js.map +1 -1
- package/dist/review/reviewer-output-parser.d.ts.map +1 -1
- package/dist/review/reviewer-output-parser.js +171 -16
- package/dist/review/reviewer-output-parser.js.map +1 -1
- package/dist/review/reviewer-prompt-builder.d.ts +4 -12
- package/dist/review/reviewer-prompt-builder.d.ts.map +1 -1
- package/dist/review/reviewer-prompt-builder.js.map +1 -1
- package/dist/review/templates/diff-review.d.ts +8 -0
- package/dist/review/templates/diff-review.d.ts.map +1 -1
- package/dist/review/templates/diff-review.js +34 -2
- package/dist/review/templates/diff-review.js.map +1 -1
- package/dist/review/templates/finding-criteria.d.ts +39 -0
- package/dist/review/templates/finding-criteria.d.ts.map +1 -0
- package/dist/review/templates/finding-criteria.js +80 -0
- package/dist/review/templates/finding-criteria.js.map +1 -0
- package/dist/review/templates/quality-review-artifact.d.ts +13 -0
- package/dist/review/templates/quality-review-artifact.d.ts.map +1 -1
- package/dist/review/templates/quality-review-artifact.js +41 -3
- package/dist/review/templates/quality-review-artifact.js.map +1 -1
- package/dist/review/templates/shared.d.ts +22 -5
- package/dist/review/templates/shared.d.ts.map +1 -1
- package/dist/review/templates/spec-review.d.ts +15 -0
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +43 -3
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +23 -6
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/debug/tool-config.d.ts.map +1 -1
- package/dist/tools/debug/tool-config.js +17 -4
- package/dist/tools/debug/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 +5 -1
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/investigate/tool-config.d.ts +13 -1
- package/dist/tools/investigate/tool-config.d.ts.map +1 -1
- package/dist/tools/investigate/tool-config.js +34 -4
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/retry/tool-config.d.ts.map +1 -1
- package/dist/tools/retry/tool-config.js +27 -4
- package/dist/tools/retry/tool-config.js.map +1 -1
- package/dist/tools/review/tool-config.d.ts.map +1 -1
- package/dist/tools/review/tool-config.js +19 -4
- package/dist/tools/review/tool-config.js.map +1 -1
- package/dist/tools/verify/tool-config.d.ts.map +1 -1
- package/dist/tools/verify/tool-config.js +17 -4
- package/dist/tools/verify/tool-config.js.map +1 -1
- package/package.json +1 -1
- package/dist/intake/brief-compiler-slots/investigate.d.ts +0 -26
- package/dist/intake/brief-compiler-slots/investigate.d.ts.map +0 -1
- package/dist/intake/brief-compiler-slots/investigate.js +0 -42
- package/dist/intake/brief-compiler-slots/investigate.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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,MAAM,uBAAuB,CAAC;
|
|
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,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnI,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;gBALhB,SAAS,EAAE;QACjB,IAAI,EAAE,cAAc,CAAC;QACrB,YAAY,EAAE,cAAc,CAAC;QAC7B,IAAI,EAAE,cAAc,CAAC;KACtB,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;IAQzH,SAAS,CAAC,GAAG,EAAE,qBAAqB,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAMpF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer-prompt-builder.js","sourceRoot":"","sources":["../../src/review/reviewer-prompt-builder.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAqB;IAEtB;IAKA;IANV,YACU,SAIP,EACO,mBAAwE,EAAE;QAL1E,cAAS,GAAT,SAAS,CAIhB;QACO,qBAAgB,GAAhB,gBAAgB,CAA0D;IACjF,CAAC;IAEJ,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"reviewer-prompt-builder.js","sourceRoot":"","sources":["../../src/review/reviewer-prompt-builder.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qBAAqB;IAEtB;IAKA;IANV,YACU,SAIP,EACO,mBAAwE,EAAE;QAL1E,cAAS,GAAT,SAAS,CAIhB;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;IAED,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;CACF"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
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
|
+
*/
|
|
2
10
|
export declare const diffTemplate: ReviewTemplate;
|
|
3
11
|
//# sourceMappingURL=diff-review.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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,eAAO,MAAM,YAAY,EAAE,
|
|
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,7 +1,39 @@
|
|
|
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
|
+
*/
|
|
1
9
|
export const diffTemplate = {
|
|
2
|
-
systemPrompt:
|
|
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'),
|
|
3
25
|
buildUserPrompt(ctx) {
|
|
4
|
-
|
|
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');
|
|
5
37
|
},
|
|
6
38
|
};
|
|
7
39
|
//# sourceMappingURL=diff-review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff-review.js","sourceRoot":"","sources":["../../../src/review/templates/diff-review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE,wGAAwG;
|
|
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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared finding-quality criteria — the single source of truth for what
|
|
3
|
+
* makes a "good finding" across the implementer + annotator stages.
|
|
4
|
+
*
|
|
5
|
+
* Tool sweep #12: the implementer prompts didn't share the annotator's
|
|
6
|
+
* rubric, so workers emitted weak narrative (miscalibrated severity,
|
|
7
|
+
* unsupported claims, speculative scope) and the annotator had to
|
|
8
|
+
* either downgrade everything or rubber-stamp. This module gives
|
|
9
|
+
* implementer prompts the SAME calibration the annotator uses, so the
|
|
10
|
+
* two stages converge:
|
|
11
|
+
*
|
|
12
|
+
* - Implementer is told what counts as evidence, what severity means,
|
|
13
|
+
* and what's out of scope BEFORE it writes findings.
|
|
14
|
+
* - Annotator validates the worker emitted them properly (its rubric
|
|
15
|
+
* in `annotator-shared.ts` references the same definitions).
|
|
16
|
+
*
|
|
17
|
+
* Result: fewer false positives, fewer missed criticals, less rework
|
|
18
|
+
* (the worker self-aligned with what the reviewer will check). No
|
|
19
|
+
* heuristic short-circuits — both stages run, they just spend less
|
|
20
|
+
* time correcting each other.
|
|
21
|
+
*/
|
|
22
|
+
/** Severity ladder for read-only finding emission AND annotator
|
|
23
|
+
* validation. Same words, same meaning across stages. */
|
|
24
|
+
export declare const SEVERITY_LADDER: string;
|
|
25
|
+
/** Evidence-grounding rule. Required for every finding the worker
|
|
26
|
+
* emits. The annotator rejects findings without quotable evidence. */
|
|
27
|
+
export declare const EVIDENCE_GROUNDING: string;
|
|
28
|
+
/** Scope discipline. Workers commonly hallucinate citations into files
|
|
29
|
+
* they didn't open; this rule blocks the most common failure mode. */
|
|
30
|
+
export declare const SCOPE_DISCIPLINE: string;
|
|
31
|
+
/** What the annotator (which doubles as the read-only quality reviewer)
|
|
32
|
+
* will check the worker's output against. Pre-fix the worker had no
|
|
33
|
+
* visibility into this; now it can self-align. */
|
|
34
|
+
export declare const ANNOTATOR_CHECK_AWARENESS_RO: string;
|
|
35
|
+
/** Awareness block for delegate / execute-plan / retry implementers.
|
|
36
|
+
* Tells the worker what spec_review and quality_review will judge,
|
|
37
|
+
* so the worker self-aligns. */
|
|
38
|
+
export declare const REVIEWER_AWARENESS_AP: string;
|
|
39
|
+
//# sourceMappingURL=finding-criteria.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-criteria.d.ts","sourceRoot":"","sources":["../../../src/review/templates/finding-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;0DAC0D;AAC1D,eAAO,MAAM,eAAe,QAOhB,CAAC;AAEb;uEACuE;AACvE,eAAO,MAAM,kBAAkB,QAKnB,CAAC;AAEb;uEACuE;AACvE,eAAO,MAAM,gBAAgB,QAKjB,CAAC;AAEb;;mDAEmD;AACnD,eAAO,MAAM,4BAA4B,QAO7B,CAAC;AAEb;;iCAEiC;AACjC,eAAO,MAAM,qBAAqB,QAiBtB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared finding-quality criteria — the single source of truth for what
|
|
3
|
+
* makes a "good finding" across the implementer + annotator stages.
|
|
4
|
+
*
|
|
5
|
+
* Tool sweep #12: the implementer prompts didn't share the annotator's
|
|
6
|
+
* rubric, so workers emitted weak narrative (miscalibrated severity,
|
|
7
|
+
* unsupported claims, speculative scope) and the annotator had to
|
|
8
|
+
* either downgrade everything or rubber-stamp. This module gives
|
|
9
|
+
* implementer prompts the SAME calibration the annotator uses, so the
|
|
10
|
+
* two stages converge:
|
|
11
|
+
*
|
|
12
|
+
* - Implementer is told what counts as evidence, what severity means,
|
|
13
|
+
* and what's out of scope BEFORE it writes findings.
|
|
14
|
+
* - Annotator validates the worker emitted them properly (its rubric
|
|
15
|
+
* in `annotator-shared.ts` references the same definitions).
|
|
16
|
+
*
|
|
17
|
+
* Result: fewer false positives, fewer missed criticals, less rework
|
|
18
|
+
* (the worker self-aligned with what the reviewer will check). No
|
|
19
|
+
* heuristic short-circuits — both stages run, they just spend less
|
|
20
|
+
* time correcting each other.
|
|
21
|
+
*/
|
|
22
|
+
/** Severity ladder for read-only finding emission AND annotator
|
|
23
|
+
* validation. Same words, same meaning across stages. */
|
|
24
|
+
export const SEVERITY_LADDER = [
|
|
25
|
+
'Severity (your judgment, calibrated to impact):',
|
|
26
|
+
'- critical: must fix first — RCE, data loss, auth bypass, build broken, data corruption.',
|
|
27
|
+
'- high: real bug or security gap; blocks release.',
|
|
28
|
+
'- medium: real issue; fix soon; not blocking.',
|
|
29
|
+
'- low: minor or cosmetic issue; nice-to-fix; PASS in checklist contexts.',
|
|
30
|
+
'Calibrate to actual impact, not how alarming the wording sounds. Workers commonly inflate — resist the urge.',
|
|
31
|
+
].join('\n');
|
|
32
|
+
/** Evidence-grounding rule. Required for every finding the worker
|
|
33
|
+
* emits. The annotator rejects findings without quotable evidence. */
|
|
34
|
+
export const EVIDENCE_GROUNDING = [
|
|
35
|
+
'Evidence grounding (REQUIRED for every finding):',
|
|
36
|
+
'- Cite `file:line` (or `file:line-line` for a span) where the issue lives.',
|
|
37
|
+
'- Quote the exact code excerpt or command output that demonstrates the issue. Don\'t paraphrase — quote.',
|
|
38
|
+
'- If you cannot quote evidence directly, do NOT raise the finding. Note "investigation needed" in your summary instead.',
|
|
39
|
+
].join('\n');
|
|
40
|
+
/** Scope discipline. Workers commonly hallucinate citations into files
|
|
41
|
+
* they didn't open; this rule blocks the most common failure mode. */
|
|
42
|
+
export const SCOPE_DISCIPLINE = [
|
|
43
|
+
'Scope discipline:',
|
|
44
|
+
'- Only flag issues you verified by reading the file directly.',
|
|
45
|
+
'- If a claim depends on caller behavior or files outside the requested scope, mark "investigation needed" in your summary — do NOT speculate.',
|
|
46
|
+
'- Stay within the requested files. Don\'t audit dependencies you weren\'t asked about.',
|
|
47
|
+
].join('\n');
|
|
48
|
+
/** What the annotator (which doubles as the read-only quality reviewer)
|
|
49
|
+
* will check the worker's output against. Pre-fix the worker had no
|
|
50
|
+
* visibility into this; now it can self-align. */
|
|
51
|
+
export const ANNOTATOR_CHECK_AWARENESS_RO = [
|
|
52
|
+
'After your output, an annotator validates each finding against this rubric:',
|
|
53
|
+
'- Is the severity calibrated to actual impact (or did you inflate)?',
|
|
54
|
+
'- Does the evidence directly support the claim, or is it paraphrased?',
|
|
55
|
+
'- Is the finding within scope, or is it speculation about untouched files?',
|
|
56
|
+
'- Is the finding on-brief (matching the focus / audit type / checklist item)?',
|
|
57
|
+
'Findings that fail any of these are downgraded or dropped. Self-check before emitting.',
|
|
58
|
+
].join('\n');
|
|
59
|
+
/** Awareness block for delegate / execute-plan / retry implementers.
|
|
60
|
+
* Tells the worker what spec_review and quality_review will judge,
|
|
61
|
+
* so the worker self-aligns. */
|
|
62
|
+
export const REVIEWER_AWARENESS_AP = [
|
|
63
|
+
'After your edit, two reviewers see the cumulative diff (every change since task start):',
|
|
64
|
+
'',
|
|
65
|
+
'1. SPEC reviewer — "does the diff fulfill the brief?"',
|
|
66
|
+
' - APPROVED requires: every brief item present in the diff, no missing pieces, no out-of-scope edits.',
|
|
67
|
+
' - CHANGES_REQUIRED requires: a concrete concern tied to a specific diff line.',
|
|
68
|
+
' - Empty diff = changes_required UNLESS the brief explicitly requested a no-op.',
|
|
69
|
+
'',
|
|
70
|
+
'2. QUALITY reviewer — "is the diff sound, safe, maintainable?"',
|
|
71
|
+
' - Flags: correctness bugs, broken tests, races, security gaps, speculative dependencies.',
|
|
72
|
+
' - Does NOT flag: stylistic preferences, comment bikeshedding, unrelated pre-existing code.',
|
|
73
|
+
'',
|
|
74
|
+
'Self-check before declaring done:',
|
|
75
|
+
'- Implemented EVERY item in the brief? (no gaps)',
|
|
76
|
+
'- No edits OUTSIDE the brief? (no scope creep)',
|
|
77
|
+
'- If your edit affects callers / tests not in your filePaths, note them in your summary — even if you can\'t update them.',
|
|
78
|
+
'- Are the changes minimal and verifiable, or could they be smaller?',
|
|
79
|
+
].join('\n');
|
|
80
|
+
//# sourceMappingURL=finding-criteria.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finding-criteria.js","sourceRoot":"","sources":["../../../src/review/templates/finding-criteria.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;0DAC0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iDAAiD;IACjD,0FAA0F;IAC1F,uDAAuD;IACvD,iDAAiD;IACjD,+EAA+E;IAC/E,8GAA8G;CAC/G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;uEACuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,kDAAkD;IAClD,4EAA4E;IAC5E,0GAA0G;IAC1G,yHAAyH;CAC1H,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;uEACuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;IACnB,+DAA+D;IAC/D,+IAA+I;IAC/I,wFAAwF;CACzF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;mDAEmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,6EAA6E;IAC7E,qEAAqE;IACrE,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,wFAAwF;CACzF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;iCAEiC;AACjC,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,yFAAyF;IACzF,EAAE;IACF,uDAAuD;IACvD,yGAAyG;IACzG,kFAAkF;IAClF,mFAAmF;IACnF,EAAE;IACF,gEAAgE;IAChE,6FAA6F;IAC7F,+FAA+F;IAC/F,EAAE;IACF,mCAAmC;IACnC,kDAAkD;IAClD,gDAAgD;IAChD,2HAA2H;IAC3H,qEAAqE;CACtE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
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
|
+
*/
|
|
2
15
|
export declare const qualityAPTemplate: ReviewTemplate;
|
|
3
16
|
//# sourceMappingURL=quality-review-artifact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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,eAAO,MAAM,iBAAiB,EAAE,
|
|
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,8 +1,46 @@
|
|
|
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
|
+
*/
|
|
1
14
|
export const qualityAPTemplate = {
|
|
2
|
-
systemPrompt:
|
|
3
|
-
|
|
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'),
|
|
4
28
|
buildUserPrompt(ctx) {
|
|
5
|
-
|
|
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');
|
|
6
44
|
},
|
|
7
45
|
};
|
|
8
46
|
//# sourceMappingURL=quality-review-artifact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-review-artifact.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,YAAY,EAAE;
|
|
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"}
|
|
@@ -1,9 +1,26 @@
|
|
|
1
|
+
export interface ReviewTemplateContext {
|
|
2
|
+
workerOutput: string;
|
|
3
|
+
brief: string;
|
|
4
|
+
filesChanged?: string[];
|
|
5
|
+
/**
|
|
6
|
+
* Cumulative unified diff of every change made since task start,
|
|
7
|
+
* across all rework rounds. Empty/undefined when no changes were
|
|
8
|
+
* detected (or the route is read-only).
|
|
9
|
+
*
|
|
10
|
+
* Tool sweep #6: reviewer templates were operating blind on the
|
|
11
|
+
* worker's text claim alone. Passing the diff lets each reviewer
|
|
12
|
+
* be precise — verdicts are grounded in code evidence, not prose.
|
|
13
|
+
*/
|
|
14
|
+
diff?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Concrete concerns from previous reviewer rounds in this chain.
|
|
17
|
+
* Round 1 sees an empty list; round 2+ sees what round 1 flagged
|
|
18
|
+
* so it can verify "did the rework address X" rather than re-deriving.
|
|
19
|
+
*/
|
|
20
|
+
priorConcerns?: string[];
|
|
21
|
+
}
|
|
1
22
|
export interface ReviewTemplate {
|
|
2
23
|
systemPrompt: string;
|
|
3
|
-
buildUserPrompt(ctx:
|
|
4
|
-
workerOutput: string;
|
|
5
|
-
brief: string;
|
|
6
|
-
filesChanged?: string[];
|
|
7
|
-
}): string;
|
|
24
|
+
buildUserPrompt(ctx: ReviewTemplateContext): string;
|
|
8
25
|
}
|
|
9
26
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/review/templates/shared.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/review/templates/shared.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAAC;CACrD"}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
import type { ReviewTemplate } from './shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* Spec compliance reviewer.
|
|
4
|
+
*
|
|
5
|
+
* Tool sweep #6 rewrite: pre-fix this template gave the LLM only
|
|
6
|
+
* `Task: <brief>` + `Worker output: <text>`. The reviewer was
|
|
7
|
+
* reviewing the worker's CLAIM, not the worker's WORK — it had no
|
|
8
|
+
* way to verify whether the claim was true. Result: skeptical
|
|
9
|
+
* reviewers defaulted to "changes_required" and triggered endless
|
|
10
|
+
* rework spirals on already-correct edits.
|
|
11
|
+
*
|
|
12
|
+
* Post-fix: the reviewer also sees the cumulative diff (the truth)
|
|
13
|
+
* and any prior reviewer concerns it should verify are addressed.
|
|
14
|
+
* With evidence in hand, "changes_required" must point to a
|
|
15
|
+
* specific diff line — no more vague rejections.
|
|
16
|
+
*/
|
|
2
17
|
export declare const specTemplate: ReviewTemplate;
|
|
3
18
|
//# sourceMappingURL=spec-review.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"spec-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,cAsC1B,CAAC"}
|
|
@@ -1,8 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec compliance reviewer.
|
|
3
|
+
*
|
|
4
|
+
* Tool sweep #6 rewrite: pre-fix this template gave the LLM only
|
|
5
|
+
* `Task: <brief>` + `Worker output: <text>`. The reviewer was
|
|
6
|
+
* reviewing the worker's CLAIM, not the worker's WORK — it had no
|
|
7
|
+
* way to verify whether the claim was true. Result: skeptical
|
|
8
|
+
* reviewers defaulted to "changes_required" and triggered endless
|
|
9
|
+
* rework spirals on already-correct edits.
|
|
10
|
+
*
|
|
11
|
+
* Post-fix: the reviewer also sees the cumulative diff (the truth)
|
|
12
|
+
* and any prior reviewer concerns it should verify are addressed.
|
|
13
|
+
* With evidence in hand, "changes_required" must point to a
|
|
14
|
+
* specific diff line — no more vague rejections.
|
|
15
|
+
*/
|
|
1
16
|
export const specTemplate = {
|
|
2
|
-
systemPrompt:
|
|
3
|
-
|
|
17
|
+
systemPrompt: [
|
|
18
|
+
'You are a spec compliance reviewer. Your job is to decide whether the cumulative diff fulfills the task brief — nothing else.',
|
|
19
|
+
'',
|
|
20
|
+
'Reply with a JSON block: {"verdict":"approved"|"changes_required","concerns":["..."]}.',
|
|
21
|
+
'',
|
|
22
|
+
'Verdict rules:',
|
|
23
|
+
'- "approved": the diff implements the brief, with no missing or wrong elements. The "concerns" list MUST be empty.',
|
|
24
|
+
'- "changes_required": cite at least one concrete concern, each tied to a specific diff line or a specific missing element from the brief. Do NOT use this verdict for stylistic preferences not in the brief.',
|
|
25
|
+
'- An empty diff (no files changed) is "changes_required" UNLESS the brief explicitly requested a no-op or "no change needed".',
|
|
26
|
+
'- A diff that fully satisfies the brief is "approved" even if you would have written it differently.',
|
|
27
|
+
'',
|
|
28
|
+
'You do not see future rework rounds. Decide on this evidence alone.',
|
|
29
|
+
].join('\n'),
|
|
4
30
|
buildUserPrompt(ctx) {
|
|
5
|
-
|
|
31
|
+
const parts = [];
|
|
32
|
+
parts.push(`# Task brief\n${ctx.brief}`);
|
|
33
|
+
if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
|
|
34
|
+
parts.push(`# Prior reviewer concerns from earlier rounds in this chain\nVerify the rework has addressed each one:\n` +
|
|
35
|
+
ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n'));
|
|
36
|
+
}
|
|
37
|
+
parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
|
|
38
|
+
if (ctx.diff && ctx.diff.length > 0) {
|
|
39
|
+
parts.push(`# Cumulative diff (the truth of what changed)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
parts.push(`# Cumulative diff\n(no file changes detected)`);
|
|
43
|
+
}
|
|
44
|
+
parts.push(`# Decide\nDoes the cumulative diff fulfill the task brief? Reply with the JSON block specified in the system prompt.`);
|
|
45
|
+
return parts.join('\n\n');
|
|
6
46
|
},
|
|
7
47
|
};
|
|
8
48
|
//# sourceMappingURL=spec-review.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"spec-review.js","sourceRoot":"","sources":["../../../src/review/templates/spec-review.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;QACZ,+HAA+H;QAC/H,EAAE;QACF,wFAAwF;QACxF,EAAE;QACF,gBAAgB;QAChB,oHAAoH;QACpH,+MAA+M;QAC/M,+HAA+H;QAC/H,sGAAsG;QACtG,EAAE;QACF,qEAAqE;KACtE,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,+CAA+C,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;QAEnI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/audit/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qDAAqD,CAAC;AAE1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/audit/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qDAAqD,CAAC;AAE1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAUvE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYjE;AAID,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,EAAE,CA0B7D;AAgED,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAyBrE,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { qualityAuditTemplate } from '../../review/templates/quality-review-audi
|
|
|
3
3
|
import { auditReportSchema } from '../../reporting/report-parser-slots/audit-report.js';
|
|
4
4
|
import { auditHeadlineTemplate } from '../../reporting/headline-templates/audit.js';
|
|
5
5
|
import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
|
|
6
|
+
import { SEVERITY_LADDER, EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO, } from '../../review/templates/finding-criteria.js';
|
|
6
7
|
export function registerAudit(registry) {
|
|
7
8
|
registry.register({
|
|
8
9
|
routeName: 'audit',
|
|
@@ -73,7 +74,7 @@ export function auditBriefSlot(input) {
|
|
|
73
74
|
}];
|
|
74
75
|
}
|
|
75
76
|
const FINDING_FORMAT_INSTRUCTIONS = [
|
|
76
|
-
'Produce a narrative audit report. Use this EXACT per-finding format
|
|
77
|
+
'Produce a narrative audit report. Use this EXACT per-finding format — both the structured reviewer and the deterministic fallback extract from this same format:',
|
|
77
78
|
'',
|
|
78
79
|
'## Finding 1: <one-line title>',
|
|
79
80
|
'- Severity: critical | high | medium | low',
|
|
@@ -88,7 +89,22 @@ const FINDING_FORMAT_INSTRUCTIONS = [
|
|
|
88
89
|
'Rules:',
|
|
89
90
|
'- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) — number sequentially from 1.',
|
|
90
91
|
'- Severity / Location / Issue / Suggestion bullets are on their own lines with the labels exactly as shown.',
|
|
91
|
-
'-
|
|
92
|
+
'- If you found no issues, say "No findings." in plain prose and emit zero `## Finding N:` blocks.',
|
|
93
|
+
'',
|
|
94
|
+
// Tool sweep #12: share the annotator's rubric with the implementer
|
|
95
|
+
// so the worker self-aligns with what the reviewer will check.
|
|
96
|
+
// Result: fewer downgraded findings, fewer missed criticals.
|
|
97
|
+
SEVERITY_LADDER,
|
|
98
|
+
'',
|
|
99
|
+
EVIDENCE_GROUNDING,
|
|
100
|
+
'',
|
|
101
|
+
SCOPE_DISCIPLINE,
|
|
102
|
+
'',
|
|
103
|
+
ANNOTATOR_CHECK_AWARENESS_RO,
|
|
104
|
+
].join('\n');
|
|
105
|
+
const DELTA_AUDIT_INSTRUCTIONS = [
|
|
106
|
+
'A prior audit report is provided in the context above. Verify which prior findings have been fixed.',
|
|
107
|
+
'In your output: **omit** fixed findings; **include** still-present findings (mark "unfixed from prior audit"); **include** new findings; end with a **Fixed** summary line.',
|
|
92
108
|
].join('\n');
|
|
93
109
|
function buildFilePathsPrompt(filePaths) {
|
|
94
110
|
if (filePaths.length === 0)
|
|
@@ -107,12 +123,13 @@ function buildPrompt(brief) {
|
|
|
107
123
|
if (fileSection)
|
|
108
124
|
parts.push(fileSection);
|
|
109
125
|
}
|
|
126
|
+
// Tool sweep #11: emit FINDING_FORMAT_INSTRUCTIONS unconditionally
|
|
127
|
+
// (pre-fix the DELTA branch dropped them, leaving the worker without
|
|
128
|
+
// a format spec → annotator could not parse delta-mode output).
|
|
110
129
|
if (brief.hasContextBlocks) {
|
|
111
|
-
parts.push(
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
parts.push(FINDING_FORMAT_INSTRUCTIONS);
|
|
130
|
+
parts.push(DELTA_AUDIT_INSTRUCTIONS);
|
|
115
131
|
}
|
|
132
|
+
parts.push(FINDING_FORMAT_INSTRUCTIONS);
|
|
116
133
|
return parts.join('\n\n');
|
|
117
134
|
}
|
|
118
135
|
export const toolConfig = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/audit/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAoB,MAAM,qDAAqD,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/audit/tool-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/debug/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/debug/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAEvE,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAUjG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYjE;AAoCD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAoCjE,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { qualityDebugTemplate } from '../../review/reviewer-engine.js';
|
|
|
3
3
|
import { debugBriefSlot } from '../../intake/brief-compiler-slots/debug.js';
|
|
4
4
|
import { debugHeadlineTemplate } from '../../reporting/headline-templates/debug.js';
|
|
5
5
|
import { DEFAULT_TASK_TIMEOUT_MS } from '../../config/schema.js';
|
|
6
|
+
import { SEVERITY_LADDER, EVIDENCE_GROUNDING, SCOPE_DISCIPLINE, ANNOTATOR_CHECK_AWARENESS_RO, } from '../../review/templates/finding-criteria.js';
|
|
6
7
|
export function registerDebug(registry) {
|
|
7
8
|
registry.register({
|
|
8
9
|
routeName: 'debug',
|
|
@@ -17,13 +18,13 @@ export function registerDebug(registry) {
|
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
20
|
const FINDING_FORMAT_INSTRUCTIONS = [
|
|
20
|
-
'Use hypothesis-driven debugging. Use this EXACT per-finding format
|
|
21
|
+
'Use hypothesis-driven debugging. Use this EXACT per-finding format — both the structured reviewer and the deterministic fallback extract from this same format:',
|
|
21
22
|
'',
|
|
22
23
|
'## Finding 1: <one-line title>',
|
|
23
24
|
'- Severity: critical | high | medium | low',
|
|
24
25
|
'- Hypothesis: the candidate cause',
|
|
25
26
|
'- Evidence: trace, log, or code path with file:line',
|
|
26
|
-
'- Fix: proposed change',
|
|
27
|
+
'- Fix: proposed change (PROPOSE only — do NOT apply the fix)',
|
|
27
28
|
'',
|
|
28
29
|
'## Finding 2: <one-line title>',
|
|
29
30
|
'- Severity: ...',
|
|
@@ -32,7 +33,17 @@ const FINDING_FORMAT_INSTRUCTIONS = [
|
|
|
32
33
|
'Rules:',
|
|
33
34
|
'- Each finding heading MUST start with "## Finding N: " (h2, "Finding ", number, colon, title) — number sequentially from 1.',
|
|
34
35
|
'- Severity / Hypothesis / Evidence / Fix bullets are on their own lines with the labels exactly as shown.',
|
|
35
|
-
'-
|
|
36
|
+
'- This is a read-only diagnostic — do NOT edit any file. Propose fixes; the caller applies them.',
|
|
37
|
+
'- Limit yourself to 3-5 most-likely hypotheses. Do not enumerate implausible ones to pad the list.',
|
|
38
|
+
'',
|
|
39
|
+
// Tool sweep #12: shared rubric so worker self-aligns with the annotator.
|
|
40
|
+
SEVERITY_LADDER,
|
|
41
|
+
'',
|
|
42
|
+
EVIDENCE_GROUNDING,
|
|
43
|
+
'',
|
|
44
|
+
SCOPE_DISCIPLINE,
|
|
45
|
+
'',
|
|
46
|
+
ANNOTATOR_CHECK_AWARENESS_RO,
|
|
36
47
|
].join('\n');
|
|
37
48
|
function buildFilePathsPrompt(filePaths) {
|
|
38
49
|
if (!filePaths || filePaths.length === 0)
|
|
@@ -60,7 +71,7 @@ export const toolConfig = {
|
|
|
60
71
|
agentType: 'complex',
|
|
61
72
|
reviewPolicy: 'quality_only',
|
|
62
73
|
briefQualityPolicy: 'off',
|
|
63
|
-
done: 'Identify the root cause with evidence (file, line, mechanism)
|
|
74
|
+
done: 'Identify the root cause with evidence (file, line, mechanism) and PROPOSE a fix. Do NOT apply the fix — debug is a read-only diagnostic; the caller decides whether to apply.',
|
|
64
75
|
tools: ctx.config.defaults?.tools ?? 'full',
|
|
65
76
|
timeoutMs: ctx.config.defaults?.timeoutMs ?? DEFAULT_TASK_TIMEOUT_MS,
|
|
66
77
|
maxCostUSD: ctx.config.defaults?.maxCostUSD ?? 10,
|
|
@@ -68,6 +79,8 @@ export const toolConfig = {
|
|
|
68
79
|
cwd: ctx.projectContext?.cwd ?? ctx.cwd,
|
|
69
80
|
contextBlockIds: brief.contextBlockIds,
|
|
70
81
|
autoCommit: false,
|
|
82
|
+
filePaths: brief.filePaths && brief.filePaths.length > 0 ? brief.filePaths : undefined,
|
|
83
|
+
mainModel: ctx.mainModel ?? undefined,
|
|
71
84
|
};
|
|
72
85
|
},
|
|
73
86
|
reportSchema: { parse: (_text) => { throw new Error('no structured report emitted by this executor'); } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/debug/tool-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAuB,MAAM,4CAA4C,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.js","sourceRoot":"","sources":["../../../src/tools/debug/tool-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/execute-plan/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAMlF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-config.d.ts","sourceRoot":"","sources":["../../../src/tools/execute-plan/tool-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAMlF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAA4B,KAAK,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAMxH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;kBAOxB,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE1E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAYvE;AA0CD,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,oBAAoB,EAAE,oBAAoB,CA4B7E,CAAC"}
|