@zhixuan92/multi-model-agent-core 4.2.1 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/config/schema.d.ts +3 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/error-codes.d.ts +1 -0
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +2 -0
- package/dist/error-codes.js.map +1 -1
- package/dist/events/running-headline-sink.d.ts.map +1 -1
- package/dist/events/running-headline-sink.js +47 -7
- package/dist/events/running-headline-sink.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +24 -20
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/identity/auth-token-store.d.ts +36 -0
- package/dist/identity/auth-token-store.d.ts.map +1 -1
- package/dist/identity/auth-token-store.js +71 -2
- package/dist/identity/auth-token-store.js.map +1 -1
- package/dist/identity/cwd-validator.d.ts.map +1 -1
- package/dist/identity/cwd-validator.js +15 -3
- package/dist/identity/cwd-validator.js.map +1 -1
- package/dist/identity/main-model-resolver.d.ts +14 -0
- package/dist/identity/main-model-resolver.d.ts.map +1 -0
- package/dist/identity/main-model-resolver.js +83 -0
- package/dist/identity/main-model-resolver.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
- package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.js +12 -14
- package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
- package/dist/intake/context-overflow-estimator.d.ts +33 -0
- package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
- package/dist/intake/context-overflow-estimator.js +36 -0
- package/dist/intake/context-overflow-estimator.js.map +1 -0
- package/dist/intake/pipeline.d.ts.map +1 -1
- package/dist/intake/pipeline.js +46 -0
- package/dist/intake/pipeline.js.map +1 -1
- package/dist/intake/plan-extractor.d.ts.map +1 -1
- package/dist/intake/plan-extractor.js +10 -1
- package/dist/intake/plan-extractor.js.map +1 -1
- package/dist/intake/types.d.ts +1 -0
- package/dist/intake/types.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.d.ts +17 -1
- package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.js +115 -2
- package/dist/lifecycle/diff-tracker.js.map +1 -1
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +152 -65
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts +21 -0
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +1 -0
- package/dist/lifecycle/handlers/files-written-cross-check.js +85 -0
- package/dist/lifecycle/handlers/files-written-cross-check.js.map +1 -0
- package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/review-handler.js +141 -0
- package/dist/lifecycle/handlers/review-handler.js.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.js +77 -0
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +4 -0
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +12 -7
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.js +21 -1
- package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
- package/dist/lifecycle/shared-compute.d.ts +9 -0
- package/dist/lifecycle/shared-compute.d.ts.map +1 -1
- package/dist/lifecycle/shared-compute.js +35 -3
- package/dist/lifecycle/shared-compute.js.map +1 -1
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +65 -85
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +48 -0
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +17 -24
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +12 -1
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/model-profiles.json +192 -53
- package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
- package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
- package/dist/providers/anthropic-messages-adapter.js +16 -1
- package/dist/providers/anthropic-messages-adapter.js.map +1 -1
- package/dist/providers/file-tracker.d.ts +33 -0
- package/dist/providers/file-tracker.d.ts.map +1 -1
- package/dist/providers/file-tracker.js +54 -0
- package/dist/providers/file-tracker.js.map +1 -1
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +27 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-shell-types.d.ts +14 -0
- package/dist/providers/runner-shell-types.d.ts.map +1 -1
- package/dist/providers/runner-shell.d.ts.map +1 -1
- package/dist/providers/runner-shell.js +103 -26
- package/dist/providers/runner-shell.js.map +1 -1
- package/dist/providers/tool-implementations.d.ts +12 -0
- package/dist/providers/tool-implementations.d.ts.map +1 -1
- package/dist/providers/tool-implementations.js +33 -0
- package/dist/providers/tool-implementations.js.map +1 -1
- package/dist/reporting/annotate-completion-parser.d.ts +39 -0
- package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
- package/dist/reporting/annotate-completion-parser.js +43 -0
- package/dist/reporting/annotate-completion-parser.js.map +1 -0
- package/dist/reporting/compose-running-headline.d.ts +15 -1
- package/dist/reporting/compose-running-headline.d.ts.map +1 -1
- package/dist/reporting/compose-running-headline.js +76 -1
- package/dist/reporting/compose-running-headline.js.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
- package/dist/review/default-engines.d.ts.map +1 -1
- package/dist/review/default-engines.js +8 -4
- package/dist/review/default-engines.js.map +1 -1
- package/dist/review/parse-review-report.d.ts +6 -0
- package/dist/review/parse-review-report.d.ts.map +1 -0
- package/dist/review/parse-review-report.js +40 -0
- package/dist/review/parse-review-report.js.map +1 -0
- package/dist/review/reviewer-engine.d.ts +12 -3
- package/dist/review/reviewer-engine.d.ts.map +1 -1
- package/dist/review/reviewer-engine.js +4 -3
- package/dist/review/reviewer-engine.js.map +1 -1
- package/dist/review/templates/annotate-completion.d.ts +12 -0
- package/dist/review/templates/annotate-completion.d.ts.map +1 -0
- package/dist/review/templates/annotate-completion.js +72 -0
- package/dist/review/templates/annotate-completion.js.map +1 -0
- package/dist/review/templates/quality-review.d.ts +3 -0
- package/dist/review/templates/quality-review.d.ts.map +1 -0
- package/dist/review/templates/quality-review.js +40 -0
- package/dist/review/templates/quality-review.js.map +1 -0
- package/dist/review/templates/rework.d.ts +3 -0
- package/dist/review/templates/rework.d.ts.map +1 -0
- package/dist/review/templates/rework.js +42 -0
- package/dist/review/templates/rework.js.map +1 -0
- package/dist/review/templates/shared.d.ts +32 -0
- package/dist/review/templates/shared.d.ts.map +1 -1
- package/dist/review/templates/spec-review.d.ts +1 -16
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +23 -31
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/stores/context-block-project-cap.d.ts +14 -0
- package/dist/stores/context-block-project-cap.d.ts.map +1 -0
- package/dist/stores/context-block-project-cap.js +68 -0
- package/dist/stores/context-block-project-cap.js.map +1 -0
- package/dist/stores/context-block-tool.d.ts +2 -0
- package/dist/stores/context-block-tool.d.ts.map +1 -1
- package/dist/stores/context-block-tool.js +3 -2
- package/dist/stores/context-block-tool.js.map +1 -1
- package/dist/stores/file-backed-context-block-store.d.ts +8 -1
- package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
- package/dist/stores/file-backed-context-block-store.js +118 -6
- package/dist/stores/file-backed-context-block-store.js.map +1 -1
- package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
- package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-criteria.js +136 -0
- package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.js +44 -0
- package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
- package/dist/tools/audit/schema.d.ts +1 -0
- package/dist/tools/audit/schema.d.ts.map +1 -1
- package/dist/tools/audit/schema.js +6 -3
- package/dist/tools/audit/schema.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts +3 -0
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +8 -0
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
- package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/delegate/implementer-criteria.js +60 -88
- package/dist/tools/delegate/implementer-criteria.js.map +1 -1
- package/dist/tools/delegate/tool-config.js +4 -4
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
- package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.js +79 -79
- package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +23 -13
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/enums.d.ts +2 -2
- package/dist/types/run-result.d.ts +71 -0
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/task-spec.d.ts +14 -0
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
- package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
- package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
- package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
- package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
- package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
- package/dist/review/templates/diff-review.d.ts +0 -11
- package/dist/review/templates/diff-review.d.ts.map +0 -1
- package/dist/review/templates/diff-review.js +0 -39
- package/dist/review/templates/diff-review.js.map +0 -1
- package/dist/review/templates/quality-review-artifact.d.ts +0 -16
- package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
- package/dist/review/templates/quality-review-artifact.js +0 -46
- package/dist/review/templates/quality-review-artifact.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Annotator JSON output schema (pipeline-redesign §3.3.4).
|
|
4
|
+
*
|
|
5
|
+
* The annotator emits structured JSON inside a ```json fenced block.
|
|
6
|
+
* This module extracts + validates the block. The `verify` slot is NOT
|
|
7
|
+
* emitted by the annotator — it's overlaid by the annotate-completion
|
|
8
|
+
* handler after parsing, using the deterministic verify-command result.
|
|
9
|
+
*/
|
|
10
|
+
declare const annotatorOutputSchema: z.ZodObject<{
|
|
11
|
+
completionPercent: z.ZodNumber;
|
|
12
|
+
perStep: z.ZodArray<z.ZodObject<{
|
|
13
|
+
step: z.ZodString;
|
|
14
|
+
status: z.ZodEnum<{
|
|
15
|
+
missing: "missing";
|
|
16
|
+
done: "done";
|
|
17
|
+
partial: "partial";
|
|
18
|
+
}>;
|
|
19
|
+
note: z.ZodNullable<z.ZodString>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
concerns: z.ZodArray<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
export type AnnotatorOutput = z.infer<typeof annotatorOutputSchema>;
|
|
24
|
+
export type ParseResult = {
|
|
25
|
+
ok: true;
|
|
26
|
+
value: AnnotatorOutput;
|
|
27
|
+
} | {
|
|
28
|
+
ok: false;
|
|
29
|
+
error: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Extract the FIRST ```json fenced block from the annotator's LLM output
|
|
33
|
+
* and validate against `annotatorOutputSchema`. Returns the parsed value
|
|
34
|
+
* on success; a structured error string on failure (the caller may retry
|
|
35
|
+
* once with a stricter prompt, then fall back per §3.3.5).
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseAnnotatorOutput(raw: string): ParseResult;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=annotate-completion-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotate-completion-parser.d.ts","sourceRoot":"","sources":["../../src/reporting/annotate-completion-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;iBAQzB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAgB7D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Annotator JSON output schema (pipeline-redesign §3.3.4).
|
|
4
|
+
*
|
|
5
|
+
* The annotator emits structured JSON inside a ```json fenced block.
|
|
6
|
+
* This module extracts + validates the block. The `verify` slot is NOT
|
|
7
|
+
* emitted by the annotator — it's overlaid by the annotate-completion
|
|
8
|
+
* handler after parsing, using the deterministic verify-command result.
|
|
9
|
+
*/
|
|
10
|
+
const annotatorOutputSchema = z.object({
|
|
11
|
+
completionPercent: z.number().int().min(0).max(100),
|
|
12
|
+
perStep: z.array(z.object({
|
|
13
|
+
step: z.string(),
|
|
14
|
+
status: z.enum(['done', 'partial', 'missing']),
|
|
15
|
+
note: z.string().nullable(),
|
|
16
|
+
})),
|
|
17
|
+
concerns: z.array(z.string()),
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Extract the FIRST ```json fenced block from the annotator's LLM output
|
|
21
|
+
* and validate against `annotatorOutputSchema`. Returns the parsed value
|
|
22
|
+
* on success; a structured error string on failure (the caller may retry
|
|
23
|
+
* once with a stricter prompt, then fall back per §3.3.5).
|
|
24
|
+
*/
|
|
25
|
+
export function parseAnnotatorOutput(raw) {
|
|
26
|
+
const match = raw.match(/```json\s*\n([\s\S]*?)\n```/);
|
|
27
|
+
if (!match) {
|
|
28
|
+
return { ok: false, error: 'no ```json fenced block found in annotator output' };
|
|
29
|
+
}
|
|
30
|
+
let parsed;
|
|
31
|
+
try {
|
|
32
|
+
parsed = JSON.parse(match[1]);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
return { ok: false, error: `JSON parse failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
36
|
+
}
|
|
37
|
+
const result = annotatorOutputSchema.safeParse(parsed);
|
|
38
|
+
if (!result.success) {
|
|
39
|
+
return { ok: false, error: `schema validation failed: ${JSON.stringify(result.error.issues)}` };
|
|
40
|
+
}
|
|
41
|
+
return { ok: true, value: result.data };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=annotate-completion-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotate-completion-parser.js","sourceRoot":"","sources":["../../src/reporting/annotate-completion-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC,CAAC;IACH,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAQH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACxG,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -12,5 +12,19 @@ export interface RunningState {
|
|
|
12
12
|
running: RunningTask[];
|
|
13
13
|
heartbeatIntervalMs?: number;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
interface RunningTaskProgress {
|
|
16
|
+
state: 'implementing' | 'reviewing' | 'done' | 'error' | string;
|
|
17
|
+
stageInfo?: string;
|
|
18
|
+
filesRead?: number;
|
|
19
|
+
filesWritten?: number;
|
|
20
|
+
toolCalls?: number;
|
|
21
|
+
errorMessage?: string;
|
|
22
|
+
files?: string[];
|
|
23
|
+
}
|
|
24
|
+
interface RunningHeadlineBatchState {
|
|
25
|
+
tasks: RunningTaskProgress[];
|
|
26
|
+
elapsedMs: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function composeRunningHeadline(s: RunningState | RunningHeadlineBatchState): string;
|
|
29
|
+
export {};
|
|
16
30
|
//# sourceMappingURL=compose-running-headline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-running-headline.d.ts","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"compose-running-headline.d.ts","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,cAAc,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,UAAU,yBAAyB;IACjC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAqHD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,YAAY,GAAG,yBAAyB,GAAG,MAAM,CAK1F"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
const DEFAULT_HEARTBEAT_INTERVAL_MS = 15_000;
|
|
2
|
-
|
|
2
|
+
function formatElapsedFromMs(ms) {
|
|
3
|
+
const elapsedS = Math.max(0, Math.floor(ms / 1000));
|
|
4
|
+
const elapsedM = Math.floor(elapsedS / 60);
|
|
5
|
+
const sec = elapsedS % 60;
|
|
6
|
+
return `${elapsedM}m ${sec}s`;
|
|
7
|
+
}
|
|
8
|
+
function formatLegacyHeadline(s) {
|
|
3
9
|
const tasksTotal = Math.max(0, s.tasksTotal);
|
|
4
10
|
const tasksStarted = Math.min(tasksTotal, Math.max(0, s.tasksStarted));
|
|
5
11
|
const tasksCompleted = Math.min(tasksStarted, Math.max(0, s.tasksCompleted));
|
|
@@ -26,4 +32,73 @@ export function composeRunningHeadline(s) {
|
|
|
26
32
|
const nRunning = Math.max(0, tasksStarted - tasksCompleted);
|
|
27
33
|
return `${tasksCompleted}/${tasksTotal} complete, ${nRunning} running, ${elapsedS}s elapsed${stallStr}`;
|
|
28
34
|
}
|
|
35
|
+
function capitalizeState(state) {
|
|
36
|
+
if (!state) {
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
return state.charAt(0).toUpperCase() + state.slice(1);
|
|
40
|
+
}
|
|
41
|
+
function formatDoneTaskLine(task) {
|
|
42
|
+
const reads = Math.max(0, task.filesRead ?? 0);
|
|
43
|
+
const toolCalls = Math.max(0, task.toolCalls ?? 0);
|
|
44
|
+
const files = Array.isArray(task.files) ? task.files : [];
|
|
45
|
+
if (files.length === 0) {
|
|
46
|
+
return `done — ${reads} read, ${toolCalls} tool calls`;
|
|
47
|
+
}
|
|
48
|
+
const shownFiles = files.slice(0, 3);
|
|
49
|
+
const fileSuffix = files.length > 3 ? `, ... +${files.length - 3} more` : '';
|
|
50
|
+
return `done — ${reads} read, ${toolCalls} tool calls — files: ${shownFiles.join(', ')}${fileSuffix}`;
|
|
51
|
+
}
|
|
52
|
+
function formatActiveTaskLine(task) {
|
|
53
|
+
const verb = capitalizeState(task.state);
|
|
54
|
+
const reads = Math.max(0, task.filesRead ?? 0);
|
|
55
|
+
const writes = Math.max(0, task.filesWritten ?? 0);
|
|
56
|
+
const calls = Math.max(0, task.toolCalls ?? 0);
|
|
57
|
+
const worker = task.stageInfo ?? 'worker';
|
|
58
|
+
return `${verb} by ${worker} - ${reads} read, ${writes} write, ${calls} tool calls`;
|
|
59
|
+
}
|
|
60
|
+
function formatTaskLine(task) {
|
|
61
|
+
if (task.state === 'done') {
|
|
62
|
+
return formatDoneTaskLine(task);
|
|
63
|
+
}
|
|
64
|
+
if (task.state === 'error') {
|
|
65
|
+
return `error: ${task.errorMessage ?? ''}`;
|
|
66
|
+
}
|
|
67
|
+
return formatActiveTaskLine(task);
|
|
68
|
+
}
|
|
69
|
+
function composeBatchHeadline(state) {
|
|
70
|
+
const tasks = state.tasks;
|
|
71
|
+
const elapsedMs = Math.max(0, state.elapsedMs);
|
|
72
|
+
const total = tasks.length;
|
|
73
|
+
if (total === 0) {
|
|
74
|
+
return `no tasks`;
|
|
75
|
+
}
|
|
76
|
+
if (total === 1) {
|
|
77
|
+
const task = tasks[0];
|
|
78
|
+
const elapsed = formatElapsedFromMs(elapsedMs);
|
|
79
|
+
if (task.state === 'done') {
|
|
80
|
+
return `[1/1] ${formatDoneTaskLine(task)}`;
|
|
81
|
+
}
|
|
82
|
+
if (task.state === 'error') {
|
|
83
|
+
return `[1/1] ${formatTaskLine(task)}`;
|
|
84
|
+
}
|
|
85
|
+
const stateLine = formatActiveTaskLine(task);
|
|
86
|
+
return `[1/1] ${stateLine.replace(' - ', ` - ${elapsed}, `)}`;
|
|
87
|
+
}
|
|
88
|
+
const doneCount = tasks.filter((task) => task.state === 'done').length;
|
|
89
|
+
const header = (doneCount > 0)
|
|
90
|
+
? `[${doneCount}/${total} done] running ${formatElapsedFromMs(elapsedMs)}`
|
|
91
|
+
: `[${total}/${total}] running ${formatElapsedFromMs(elapsedMs)}`;
|
|
92
|
+
const taskLines = tasks.map((task, index) => ` [${index + 1}] ${formatTaskLine(task)}`);
|
|
93
|
+
return [header, ...taskLines].join('\n');
|
|
94
|
+
}
|
|
95
|
+
function hasBatchShape(state) {
|
|
96
|
+
return Array.isArray(state.tasks);
|
|
97
|
+
}
|
|
98
|
+
export function composeRunningHeadline(s) {
|
|
99
|
+
if (hasBatchShape(s)) {
|
|
100
|
+
return composeBatchHeadline(s);
|
|
101
|
+
}
|
|
102
|
+
return formatLegacyHeadline(s);
|
|
103
|
+
}
|
|
29
104
|
//# sourceMappingURL=compose-running-headline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-running-headline.js","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compose-running-headline.js","sourceRoot":"","sources":["../../src/reporting/compose-running-headline.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ declare const researchReportZod: z.ZodObject<{
|
|
|
7
7
|
citations: z.ZodArray<z.ZodObject<{
|
|
8
8
|
kind: z.ZodEnum<{
|
|
9
9
|
url: "url";
|
|
10
|
-
file_line: "file_line";
|
|
11
10
|
source: "source";
|
|
11
|
+
file_line: "file_line";
|
|
12
12
|
}>;
|
|
13
13
|
label: z.ZodOptional<z.ZodString>;
|
|
14
14
|
target: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-engines.d.ts","sourceRoot":"","sources":["../../src/review/default-engines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-engines.d.ts","sourceRoot":"","sources":["../../src/review/default-engines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAexD,wBAAgB,2BAA2B,IAAI,cAAc,CAa5D;AAED,wBAAgB,4BAA4B,IAAI,eAAe,CAE9D"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { ReviewerEngine } from './reviewer-engine.js';
|
|
2
2
|
import { AnnotatorEngine } from './annotator-engine.js';
|
|
3
3
|
import { ReviewerPromptBuilder } from './reviewer-prompt-builder.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
// Pipeline-redesign (4.3.0+): spec/quality-AP/diff templates removed.
|
|
5
|
+
// Their callers (spec-chain-handlers, quality-chain-handlers, review-diff-handler)
|
|
6
|
+
// were also removed. Read-only route templates remain — they power /audit, /review,
|
|
7
|
+
// /verify, /debug, /investigate via the parallel-criteria + annotator path
|
|
8
|
+
// (separate from the execute-plan / delegate pipeline this redesign affects).
|
|
9
|
+
import { specLintTemplate } from './templates/spec-review.js';
|
|
10
|
+
import { qualityLintTemplate } from './templates/quality-review.js';
|
|
7
11
|
import { qualityAuditTemplate } from './templates/quality-review-audit.js';
|
|
8
12
|
import { qualityReviewTemplate } from './templates/quality-review-review.js';
|
|
9
13
|
import { qualityVerifyTemplate } from './templates/quality-review-verify.js';
|
|
10
14
|
import { qualityDebugTemplate } from './templates/quality-review-debug.js';
|
|
11
15
|
import { qualityInvestigateTemplate } from './templates/quality-review-investigate.js';
|
|
12
16
|
export function createDefaultReviewerEngine() {
|
|
13
|
-
return new ReviewerEngine(new ReviewerPromptBuilder({ spec:
|
|
17
|
+
return new ReviewerEngine(new ReviewerPromptBuilder({ spec: specLintTemplate, qualityForAP: qualityLintTemplate, diff: specLintTemplate }, {
|
|
14
18
|
audit: qualityAuditTemplate,
|
|
15
19
|
review: qualityReviewTemplate,
|
|
16
20
|
verify: qualityVerifyTemplate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-engines.js","sourceRoot":"","sources":["../../src/review/default-engines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,
|
|
1
|
+
{"version":3,"file":"default-engines.js","sourceRoot":"","sources":["../../src/review/default-engines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,sEAAsE;AACtE,mFAAmF;AACnF,oFAAoF;AACpF,2EAA2E;AAC3E,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,cAAc,CACvB,IAAI,qBAAqB,CACvB,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EACrF;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,0BAA0B;KACxC,CACF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-review-report.d.ts","sourceRoot":"","sources":["../../src/review/parse-review-report.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,UAAU,GAAG,kBAAkB,CAAC;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAoClE"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const VERDICT_HEADER = /^##\s*verdict\s*$/im;
|
|
2
|
+
const DEVIATIONS_HEADER = /^##\s*deviations\s*$/im;
|
|
3
|
+
export function parseReviewReport(text) {
|
|
4
|
+
const safe = (text ?? '').toString();
|
|
5
|
+
const verdictMatch = safe.match(VERDICT_HEADER);
|
|
6
|
+
const deviationsMatch = safe.match(DEVIATIONS_HEADER);
|
|
7
|
+
let verdict = 'changes_required';
|
|
8
|
+
if (verdictMatch) {
|
|
9
|
+
const after = safe.slice(verdictMatch.index + verdictMatch[0].length);
|
|
10
|
+
const firstLine = after.split('\n').map(s => s.trim()).find(s => s.length > 0) ?? '';
|
|
11
|
+
if (/approved/i.test(firstLine) && !/changes/i.test(firstLine)) {
|
|
12
|
+
verdict = 'approved';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else if (/\bapproved\b/i.test(safe) && !/changes[\s_-]?required/i.test(safe)) {
|
|
16
|
+
verdict = 'approved';
|
|
17
|
+
}
|
|
18
|
+
const deviations = [];
|
|
19
|
+
if (deviationsMatch) {
|
|
20
|
+
const tail = safe.slice(deviationsMatch.index + deviationsMatch[0].length);
|
|
21
|
+
const nextHeader = tail.search(/^##\s/im);
|
|
22
|
+
const section = nextHeader === -1 ? tail : tail.slice(0, nextHeader);
|
|
23
|
+
for (const raw of section.split('\n')) {
|
|
24
|
+
const line = raw.trim();
|
|
25
|
+
if (!line)
|
|
26
|
+
continue;
|
|
27
|
+
if (/^\(none\)$/i.test(line))
|
|
28
|
+
continue;
|
|
29
|
+
const cleaned = line.replace(/^[-*+]\s*/, '').replace(/^\d+\.\s*/, '').trim();
|
|
30
|
+
if (!cleaned)
|
|
31
|
+
continue;
|
|
32
|
+
deviations.push(cleaned);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (verdict === 'approved' && deviations.length > 0) {
|
|
36
|
+
verdict = 'changes_required';
|
|
37
|
+
}
|
|
38
|
+
return { verdict, deviations };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=parse-review-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-review-report.js","sourceRoot":"","sources":["../../src/review/parse-review-report.ts"],"names":[],"mappings":"AAKA,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAEtD,IAAI,OAAO,GAAoC,kBAAkB,CAAC;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrF,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/D,OAAO,GAAG,UAAU,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,GAAG,UAAU,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACrE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,GAAG,kBAAkB,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -2,9 +2,10 @@ import type { RunnerShell } from '../providers/runner-shell.js';
|
|
|
2
2
|
import { ReviewerPromptBuilder } from './reviewer-prompt-builder.js';
|
|
3
3
|
import { type ReviewerParseResult, type ReviewerDiffParseResult, ReviewerParseError } from './reviewer-output-parser.js';
|
|
4
4
|
export type { ReviewTemplate } from './templates/shared.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
5
|
+
export { specLintTemplate } from './templates/spec-review.js';
|
|
6
|
+
export { qualityLintTemplate } from './templates/quality-review.js';
|
|
7
|
+
export { reworkTemplate } from './templates/rework.js';
|
|
8
|
+
export { annotateCompletionTemplate } from './templates/annotate-completion.js';
|
|
8
9
|
export { qualityAuditTemplate } from './templates/quality-review-audit.js';
|
|
9
10
|
export { qualityReviewTemplate } from './templates/quality-review-review.js';
|
|
10
11
|
export { qualityVerifyTemplate } from './templates/quality-review-verify.js';
|
|
@@ -35,6 +36,14 @@ export interface ReviewerInput {
|
|
|
35
36
|
* without re-deriving them.
|
|
36
37
|
*/
|
|
37
38
|
priorConcerns?: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Verbatim plan section for execute-plan routes. Set by the
|
|
41
|
+
* spec-chain handler from `task.planContext`; threaded into the
|
|
42
|
+
* spec reviewer's user prompt as the authoritative source-of-truth
|
|
43
|
+
* for verbatim-code-block comparison. Unset for non-execute-plan
|
|
44
|
+
* routes — those routes have no "plan" to compare against.
|
|
45
|
+
*/
|
|
46
|
+
planContext?: string;
|
|
38
47
|
abortSignal?: AbortSignal;
|
|
39
48
|
deadlineMs?: number;
|
|
40
49
|
/** Forwarded to RunInput so the running-headline sink + verbose stderr
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer-engine.d.ts","sourceRoot":"","sources":["../../src/review/reviewer-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAwB,KAAK,mBAAmB,EAAE,KAAK,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewer-engine.d.ts","sourceRoot":"","sources":["../../src/review/reviewer-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ReviewerOutputParser, ReviewerParseError } from './reviewer-output-parser.js';
|
|
2
2
|
import { SAFETY_MAX_TURNS } from '../bounded-execution/safety-max-turns.js';
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
3
|
+
export { specLintTemplate } from './templates/spec-review.js';
|
|
4
|
+
export { qualityLintTemplate } from './templates/quality-review.js';
|
|
5
|
+
export { reworkTemplate } from './templates/rework.js';
|
|
6
|
+
export { annotateCompletionTemplate } from './templates/annotate-completion.js';
|
|
6
7
|
export { qualityAuditTemplate } from './templates/quality-review-audit.js';
|
|
7
8
|
export { qualityReviewTemplate } from './templates/quality-review-review.js';
|
|
8
9
|
export { qualityVerifyTemplate } from './templates/quality-review-verify.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer-engine.js","sourceRoot":"","sources":["../../src/review/reviewer-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA0D,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/I,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"reviewer-engine.js","sourceRoot":"","sources":["../../src/review/reviewer-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/quality-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,mBAAmB,EAAE,cAsCjC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const qualityLintTemplate = {
|
|
2
|
+
systemPrompt: [
|
|
3
|
+
'You are the QUALITY reviewer for a plan-execution task. You are LINT-ONLY — do NOT edit files.',
|
|
4
|
+
'Your scope: safety, correctness, error handling, edge cases, security, maintainability.',
|
|
5
|
+
'You are NOT checking plan fidelity — that is the spec reviewer\'s job (their report runs in parallel).',
|
|
6
|
+
'Read files as needed to verify. A separate REWORK stage will apply your findings.',
|
|
7
|
+
'',
|
|
8
|
+
'Output format (mandatory):',
|
|
9
|
+
'',
|
|
10
|
+
'## Verdict',
|
|
11
|
+
'approved | changes_required',
|
|
12
|
+
'',
|
|
13
|
+
'## Deviations',
|
|
14
|
+
'- <one short line per concern, naming the file and the risk>',
|
|
15
|
+
'- ...',
|
|
16
|
+
'',
|
|
17
|
+
'Rules:',
|
|
18
|
+
'- "approved" when the code is safe and correct enough to ship. Style nits do NOT block.',
|
|
19
|
+
'- "changes_required" only for substantive risks (null-handling gap, missing error path, real edge case, security surface, etc.).',
|
|
20
|
+
'- Each deviation must be specific enough that a rework worker can act on it without re-deriving.',
|
|
21
|
+
'- If approved, write "## Deviations\\n(none)".',
|
|
22
|
+
'- Do NOT use editor tools. Read-only investigation only.',
|
|
23
|
+
].join('\n'),
|
|
24
|
+
buildUserPrompt(ctx) {
|
|
25
|
+
const parts = [];
|
|
26
|
+
parts.push(`# Task brief\n${ctx.brief}`);
|
|
27
|
+
if (ctx.planContext && ctx.planContext.trim().length > 0) {
|
|
28
|
+
parts.push(`# Plan section (for context)\n\n\`\`\`markdown\n${ctx.planContext.trim()}\n\`\`\``);
|
|
29
|
+
}
|
|
30
|
+
if (ctx.diff && ctx.diff.length > 0) {
|
|
31
|
+
parts.push(`# Cumulative diff (current on-disk state)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
parts.push('# Cumulative diff\n(no file changes detected)');
|
|
35
|
+
}
|
|
36
|
+
parts.push('# Action\nReview for safety/correctness/edge-cases. Emit the report. Do not edit.');
|
|
37
|
+
return parts.join('\n\n');
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=quality-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality-review.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,YAAY,EAAE;QACZ,gGAAgG;QAChG,yFAAyF;QACzF,wGAAwG;QACxG,mFAAmF;QACnF,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,YAAY;QACZ,6BAA6B;QAC7B,EAAE;QACF,eAAe;QACf,8DAA8D;QAC9D,OAAO;QACP,EAAE;QACF,QAAQ;QACR,yFAAyF;QACzF,kIAAkI;QAClI,kGAAkG;QAClG,gDAAgD;QAChD,0DAA0D;KAC3D,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,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,mDAAmD,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,4DAA4D,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAChG,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rework.d.ts","sourceRoot":"","sources":["../../../src/review/templates/rework.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cA0C5B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const reworkTemplate = {
|
|
2
|
+
systemPrompt: [
|
|
3
|
+
'You are the REWORK worker. The implementer ran, then two reviewers (spec + quality) lint-checked the result and produced deviations.',
|
|
4
|
+
'Your job: fix every deviation. You have FULL editor tools.',
|
|
5
|
+
'',
|
|
6
|
+
'CRITICAL: this is a SINGLE-PASS pipeline. There is NO second rework round. After you, the annotator scores completeness and the commit gate fires. If you skip a fix, no commit lands.',
|
|
7
|
+
'',
|
|
8
|
+
'Per-deviation procedure:',
|
|
9
|
+
' 1. Read the relevant file ONCE (skip if already read this turn).',
|
|
10
|
+
' 2. Apply the fix with one edit call.',
|
|
11
|
+
' 3. Move on. Do not re-read; do not re-evaluate.',
|
|
12
|
+
'',
|
|
13
|
+
'Hard rules:',
|
|
14
|
+
'- Trust the reviewers — do not re-investigate whether the deviation is valid.',
|
|
15
|
+
'- If a deviation is truly impossible to fix (conflicting constraints, missing source), write "could not fix: <deviation> — reason" in your summary and move on.',
|
|
16
|
+
'- Read each file AT MOST ONCE in this stage.',
|
|
17
|
+
'',
|
|
18
|
+
'When done: write summary "Fixed: <list of deviations>. Could not fix: <list with reasons>." End your turn.',
|
|
19
|
+
].join('\n'),
|
|
20
|
+
buildUserPrompt(ctx) {
|
|
21
|
+
const parts = [];
|
|
22
|
+
parts.push(`# Task brief\n${ctx.brief}`);
|
|
23
|
+
if (ctx.planContext && ctx.planContext.trim().length > 0) {
|
|
24
|
+
parts.push(`# Plan section\n\n\`\`\`markdown\n${ctx.planContext.trim()}\n\`\`\``);
|
|
25
|
+
}
|
|
26
|
+
if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
|
|
27
|
+
parts.push(`# Reviewer deviations to fix\n${ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n')}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
parts.push('# Reviewer deviations to fix\n(none — should not have reached this stage; end immediately)');
|
|
31
|
+
}
|
|
32
|
+
if (ctx.diff && ctx.diff.length > 0) {
|
|
33
|
+
parts.push(`# Current on-disk diff\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
|
|
34
|
+
}
|
|
35
|
+
parts.push('# Action\n' +
|
|
36
|
+
'1. Fix each deviation in order.\n' +
|
|
37
|
+
'2. Apply one edit call per file. Do not re-read after editing.\n' +
|
|
38
|
+
'3. Write your summary and end your turn.');
|
|
39
|
+
return parts.join('\n\n');
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=rework.js.map
|