@zhixuan92/multi-model-agent-core 3.7.0 → 3.8.1
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/read-only-review-flag.d.ts +8 -0
- package/dist/config/read-only-review-flag.d.ts.map +1 -0
- package/dist/config/read-only-review-flag.js +13 -0
- package/dist/config/read-only-review-flag.js.map +1 -0
- package/dist/executors/_shared/findings-schema.d.ts +80 -0
- package/dist/executors/_shared/findings-schema.d.ts.map +1 -0
- package/dist/executors/_shared/findings-schema.js +35 -0
- package/dist/executors/_shared/findings-schema.js.map +1 -0
- package/dist/executors/_shared/review-verdict-mapping.d.ts +16 -0
- package/dist/executors/_shared/review-verdict-mapping.d.ts.map +1 -0
- package/dist/executors/_shared/review-verdict-mapping.js +24 -0
- package/dist/executors/_shared/review-verdict-mapping.js.map +1 -0
- package/dist/executors/audit.d.ts.map +1 -1
- package/dist/executors/audit.js +21 -5
- package/dist/executors/audit.js.map +1 -1
- package/dist/executors/debug.d.ts.map +1 -1
- package/dist/executors/debug.js +11 -2
- package/dist/executors/debug.js.map +1 -1
- package/dist/executors/investigate.d.ts.map +1 -1
- package/dist/executors/investigate.js +23 -17
- package/dist/executors/investigate.js.map +1 -1
- package/dist/executors/review.d.ts.map +1 -1
- package/dist/executors/review.js +48 -48
- package/dist/executors/review.js.map +1 -1
- package/dist/executors/types.d.ts +4 -1
- package/dist/executors/types.d.ts.map +1 -1
- package/dist/executors/verify.d.ts.map +1 -1
- package/dist/executors/verify.js +43 -8
- package/dist/executors/verify.js.map +1 -1
- package/dist/intake/compilers/investigate.d.ts.map +1 -1
- package/dist/intake/compilers/investigate.js +3 -4
- package/dist/intake/compilers/investigate.js.map +1 -1
- package/dist/intake/resolve.d.ts.map +1 -1
- package/dist/intake/resolve.js +24 -10
- package/dist/intake/resolve.js.map +1 -1
- package/dist/intake/types.d.ts +1 -1
- package/dist/intake/types.d.ts.map +1 -1
- package/dist/observability/events.d.ts +84 -0
- package/dist/observability/events.d.ts.map +1 -1
- package/dist/observability/events.js +23 -1
- package/dist/observability/events.js.map +1 -1
- package/dist/review/aggregate-result.d.ts +1 -1
- package/dist/review/aggregate-result.d.ts.map +1 -1
- package/dist/review/aggregate-result.js.map +1 -1
- package/dist/review/quality-only-prompts.d.ts +26 -0
- package/dist/review/quality-only-prompts.d.ts.map +1 -0
- package/dist/review/quality-only-prompts.js +155 -0
- package/dist/review/quality-only-prompts.js.map +1 -0
- package/dist/review/quality-reviewer.d.ts +54 -10
- package/dist/review/quality-reviewer.d.ts.map +1 -1
- package/dist/review/quality-reviewer.js +158 -17
- package/dist/review/quality-reviewer.js.map +1 -1
- package/dist/run-tasks/index.d.ts +6 -0
- package/dist/run-tasks/index.d.ts.map +1 -1
- package/dist/run-tasks/index.js +1 -1
- package/dist/run-tasks/index.js.map +1 -1
- package/dist/run-tasks/reviewed-lifecycle.d.ts +5 -1
- package/dist/run-tasks/reviewed-lifecycle.d.ts.map +1 -1
- package/dist/run-tasks/reviewed-lifecycle.js +234 -162
- package/dist/run-tasks/reviewed-lifecycle.js.map +1 -1
- package/dist/tool-schemas/audit.d.ts +19 -0
- package/dist/tool-schemas/audit.d.ts.map +1 -1
- package/dist/tool-schemas/debug.d.ts +19 -0
- package/dist/tool-schemas/debug.d.ts.map +1 -1
- package/dist/tool-schemas/delegate.d.ts +19 -0
- package/dist/tool-schemas/delegate.d.ts.map +1 -1
- package/dist/tool-schemas/execute-plan.d.ts +19 -0
- package/dist/tool-schemas/execute-plan.d.ts.map +1 -1
- package/dist/tool-schemas/investigate.d.ts +19 -4
- package/dist/tool-schemas/investigate.d.ts.map +1 -1
- package/dist/tool-schemas/investigate.js +0 -1
- package/dist/tool-schemas/investigate.js.map +1 -1
- package/dist/tool-schemas/retry.d.ts +19 -0
- package/dist/tool-schemas/retry.d.ts.map +1 -1
- package/dist/tool-schemas/review.d.ts +19 -0
- package/dist/tool-schemas/review.d.ts.map +1 -1
- package/dist/tool-schemas/shared-output.d.ts +19 -0
- package/dist/tool-schemas/shared-output.d.ts.map +1 -1
- package/dist/tool-schemas/shared-output.js +6 -0
- package/dist/tool-schemas/shared-output.js.map +1 -1
- package/dist/tool-schemas/verify.d.ts +19 -0
- package/dist/tool-schemas/verify.d.ts.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -104,7 +104,7 @@ As of 3.4.0 every task-execution event the worker emits to the verbose stderr st
|
|
|
104
104
|
|
|
105
105
|
## What's new
|
|
106
106
|
|
|
107
|
-
Latest: **3.
|
|
107
|
+
Latest: **3.8.1** — read-only review becomes annotation, not gating. The 5 read-only routes (audit, review, verify, investigate, debug) now run a single reviewer pass that annotates each worker finding with `reviewerConfidence` (0-100) and an optional `reviewerSeverity` correction — no rework loop, restoring 3.7.0-comparable wall-clock. `Finding` schema simplified (drop `file`/`line`/`sourceQuote`; required `evidence`; rename `suggestedFix` → `suggestion`). Full history: [CHANGELOG](https://github.com/zhixuan312/multi-model-agent/blob/master/CHANGELOG.md).
|
|
108
108
|
|
|
109
109
|
## Full documentation
|
|
110
110
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const READ_ONLY_ROUTES: readonly ["audit_document", "review_code", "verify_work", "investigate_codebase", "debug_task"];
|
|
2
|
+
type ReadOnlyRoute = (typeof READ_ONLY_ROUTES)[number];
|
|
3
|
+
export interface ReadOnlyReviewFlag {
|
|
4
|
+
isEnabledFor(route: ReadOnlyRoute): boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveReadOnlyReviewFlag(): ReadOnlyReviewFlag;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=read-only-review-flag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only-review-flag.d.ts","sourceRoot":"","sources":["../../src/config/read-only-review-flag.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,gBAAgB,iGAEZ,CAAC;AAEX,KAAK,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;CAC7C;AAED,wBAAgB,yBAAyB,IAAI,kBAAkB,CAM9D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const READ_ONLY_ROUTES = [
|
|
2
|
+
'audit_document', 'review_code', 'verify_work', 'investigate_codebase', 'debug_task',
|
|
3
|
+
];
|
|
4
|
+
export function resolveReadOnlyReviewFlag() {
|
|
5
|
+
const raw = process.env['MMAGENT_READ_ONLY_REVIEW'];
|
|
6
|
+
if (raw === undefined)
|
|
7
|
+
return { isEnabledFor: () => true };
|
|
8
|
+
if (raw === 'disabled')
|
|
9
|
+
return { isEnabledFor: () => false };
|
|
10
|
+
const allowed = new Set(raw.split(',').map((s) => s.trim()).filter(Boolean));
|
|
11
|
+
return { isEnabledFor: (route) => allowed.has(route) };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=read-only-review-flag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only-review-flag.js","sourceRoot":"","sources":["../../src/config/read-only-review-flag.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG;IACvB,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,sBAAsB,EAAE,YAAY;CAC5E,CAAC;AAQX,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACpD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,OAAO,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Finding shape emitted by all 5 read-only mma-* workers, then annotated by
|
|
4
|
+
* the quality-review stage with reviewer fields.
|
|
5
|
+
*
|
|
6
|
+
* Two phases:
|
|
7
|
+
* - WorkerFinding: what the worker emits (no reviewer fields).
|
|
8
|
+
* - AnnotatedFinding: WorkerFinding + reviewer-added confidence and optional
|
|
9
|
+
* severity-correction. This is what ends up in the executor envelope.
|
|
10
|
+
*
|
|
11
|
+
* - severity: lowercase to match RunResult.concerns[].severity.
|
|
12
|
+
* - evidence: required, ≥20 chars. Embed file:line as prose plus a one-sentence
|
|
13
|
+
* explanation of what the cited code shows. Forces grounding so reviewer
|
|
14
|
+
* confidence is meaningful.
|
|
15
|
+
* - suggestion: optional. For investigate, may be a follow-up question rather
|
|
16
|
+
* than a code fix.
|
|
17
|
+
* - reviewerConfidence: integer 0-100. Reviewer's confidence that the finding
|
|
18
|
+
* is correct, on-brief, and well-grounded in the worker's evidence.
|
|
19
|
+
* - reviewerSeverity: only present when the reviewer disagrees with the
|
|
20
|
+
* worker's severity (workers tend to inflate; reviewer can dial down).
|
|
21
|
+
*/
|
|
22
|
+
export declare const workerFindingSchema: z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
severity: z.ZodEnum<{
|
|
25
|
+
low: "low";
|
|
26
|
+
medium: "medium";
|
|
27
|
+
high: "high";
|
|
28
|
+
}>;
|
|
29
|
+
claim: z.ZodString;
|
|
30
|
+
evidence: z.ZodString;
|
|
31
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strict>;
|
|
33
|
+
export declare const workerFindingsSchema: z.ZodArray<z.ZodObject<{
|
|
34
|
+
id: z.ZodString;
|
|
35
|
+
severity: z.ZodEnum<{
|
|
36
|
+
low: "low";
|
|
37
|
+
medium: "medium";
|
|
38
|
+
high: "high";
|
|
39
|
+
}>;
|
|
40
|
+
claim: z.ZodString;
|
|
41
|
+
evidence: z.ZodString;
|
|
42
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strict>>;
|
|
44
|
+
export declare const annotatedFindingSchema: z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
severity: z.ZodEnum<{
|
|
47
|
+
low: "low";
|
|
48
|
+
medium: "medium";
|
|
49
|
+
high: "high";
|
|
50
|
+
}>;
|
|
51
|
+
claim: z.ZodString;
|
|
52
|
+
evidence: z.ZodString;
|
|
53
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
54
|
+
reviewerConfidence: z.ZodNumber;
|
|
55
|
+
reviewerSeverity: z.ZodOptional<z.ZodEnum<{
|
|
56
|
+
low: "low";
|
|
57
|
+
medium: "medium";
|
|
58
|
+
high: "high";
|
|
59
|
+
}>>;
|
|
60
|
+
}, z.core.$strict>;
|
|
61
|
+
export declare const annotatedFindingsSchema: z.ZodArray<z.ZodObject<{
|
|
62
|
+
id: z.ZodString;
|
|
63
|
+
severity: z.ZodEnum<{
|
|
64
|
+
low: "low";
|
|
65
|
+
medium: "medium";
|
|
66
|
+
high: "high";
|
|
67
|
+
}>;
|
|
68
|
+
claim: z.ZodString;
|
|
69
|
+
evidence: z.ZodString;
|
|
70
|
+
suggestion: z.ZodOptional<z.ZodString>;
|
|
71
|
+
reviewerConfidence: z.ZodNumber;
|
|
72
|
+
reviewerSeverity: z.ZodOptional<z.ZodEnum<{
|
|
73
|
+
low: "low";
|
|
74
|
+
medium: "medium";
|
|
75
|
+
high: "high";
|
|
76
|
+
}>>;
|
|
77
|
+
}, z.core.$strict>>;
|
|
78
|
+
export type WorkerFinding = z.infer<typeof workerFindingSchema>;
|
|
79
|
+
export type AnnotatedFinding = z.infer<typeof annotatedFindingSchema>;
|
|
80
|
+
//# sourceMappingURL=findings-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings-schema.d.ts","sourceRoot":"","sources":["../../../src/executors/_shared/findings-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;mBAGhC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;kBAGxB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;mBAAkC,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Finding shape emitted by all 5 read-only mma-* workers, then annotated by
|
|
4
|
+
* the quality-review stage with reviewer fields.
|
|
5
|
+
*
|
|
6
|
+
* Two phases:
|
|
7
|
+
* - WorkerFinding: what the worker emits (no reviewer fields).
|
|
8
|
+
* - AnnotatedFinding: WorkerFinding + reviewer-added confidence and optional
|
|
9
|
+
* severity-correction. This is what ends up in the executor envelope.
|
|
10
|
+
*
|
|
11
|
+
* - severity: lowercase to match RunResult.concerns[].severity.
|
|
12
|
+
* - evidence: required, ≥20 chars. Embed file:line as prose plus a one-sentence
|
|
13
|
+
* explanation of what the cited code shows. Forces grounding so reviewer
|
|
14
|
+
* confidence is meaningful.
|
|
15
|
+
* - suggestion: optional. For investigate, may be a follow-up question rather
|
|
16
|
+
* than a code fix.
|
|
17
|
+
* - reviewerConfidence: integer 0-100. Reviewer's confidence that the finding
|
|
18
|
+
* is correct, on-brief, and well-grounded in the worker's evidence.
|
|
19
|
+
* - reviewerSeverity: only present when the reviewer disagrees with the
|
|
20
|
+
* worker's severity (workers tend to inflate; reviewer can dial down).
|
|
21
|
+
*/
|
|
22
|
+
export const workerFindingSchema = z.object({
|
|
23
|
+
id: z.string().min(1),
|
|
24
|
+
severity: z.enum(['high', 'medium', 'low']),
|
|
25
|
+
claim: z.string().min(1),
|
|
26
|
+
evidence: z.string().min(20),
|
|
27
|
+
suggestion: z.string().optional(),
|
|
28
|
+
}).strict();
|
|
29
|
+
export const workerFindingsSchema = z.array(workerFindingSchema).refine((arr) => new Set(arr.map(f => f.id)).size === arr.length, { message: 'duplicate finding id within array' });
|
|
30
|
+
export const annotatedFindingSchema = workerFindingSchema.extend({
|
|
31
|
+
reviewerConfidence: z.number().int().min(0).max(100),
|
|
32
|
+
reviewerSeverity: z.enum(['high', 'medium', 'low']).optional(),
|
|
33
|
+
}).strict();
|
|
34
|
+
export const annotatedFindingsSchema = z.array(annotatedFindingSchema);
|
|
35
|
+
//# sourceMappingURL=findings-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings-schema.js","sourceRoot":"","sources":["../../../src/executors/_shared/findings-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,CACrE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EACxD,EAAE,OAAO,EAAE,mCAAmC,EAAE,CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,MAAM,CAAC;IAC/D,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpD,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC/D,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RunResult, ReviewVerdict } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Map RunResult review fields (from executeReviewedLifecycle) into the
|
|
4
|
+
* ExecutorOutput envelope shape. Centralizes the rename + type-narrowing
|
|
5
|
+
* + roundsUsed computation across all 5 read-only executors.
|
|
6
|
+
*
|
|
7
|
+
* Note: specReviewStatus's union is narrower than ReviewVerdict (no 'concerns').
|
|
8
|
+
* For read-only routes (quality_only), specReviewStatus is always
|
|
9
|
+
* 'not_applicable', so the cast is safe in practice.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mapReviewVerdicts(result: RunResult, killSwitchActive: boolean): {
|
|
12
|
+
specReviewVerdict: ReviewVerdict;
|
|
13
|
+
qualityReviewVerdict: ReviewVerdict;
|
|
14
|
+
roundsUsed: number;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=review-verdict-mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-verdict-mapping.d.ts","sourceRoot":"","sources":["../../../src/executors/_shared/review-verdict-mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,OAAO,GACxB;IACD,iBAAiB,EAAE,aAAa,CAAC;IACjC,oBAAoB,EAAE,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB,CAaA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map RunResult review fields (from executeReviewedLifecycle) into the
|
|
3
|
+
* ExecutorOutput envelope shape. Centralizes the rename + type-narrowing
|
|
4
|
+
* + roundsUsed computation across all 5 read-only executors.
|
|
5
|
+
*
|
|
6
|
+
* Note: specReviewStatus's union is narrower than ReviewVerdict (no 'concerns').
|
|
7
|
+
* For read-only routes (quality_only), specReviewStatus is always
|
|
8
|
+
* 'not_applicable', so the cast is safe in practice.
|
|
9
|
+
*/
|
|
10
|
+
export function mapReviewVerdicts(result, killSwitchActive) {
|
|
11
|
+
if (killSwitchActive) {
|
|
12
|
+
return { specReviewVerdict: 'skipped', qualityReviewVerdict: 'skipped', roundsUsed: 0 };
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
specReviewVerdict: (result.specReviewStatus ?? 'not_applicable'),
|
|
16
|
+
qualityReviewVerdict: (result.qualityReviewStatus ?? 'not_applicable'),
|
|
17
|
+
// CRITICAL: reviewRounds.quality starts at 1 (initial quality review attempt) and
|
|
18
|
+
// increments per rework. So roundsUsed equals reviewRounds.quality directly —
|
|
19
|
+
// do NOT add 1. If reviewRounds is undefined (lifecycle didn't populate it on
|
|
20
|
+
// success path — see Task 3 Step 6), default to 1 (one attempt assumed).
|
|
21
|
+
roundsUsed: result.reviewRounds?.quality ?? 1,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=review-verdict-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-verdict-mapping.js","sourceRoot":"","sources":["../../../src/executors/_shared/review-verdict-mapping.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,gBAAyB;IAMzB,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,OAAO;QACL,iBAAiB,EAAE,CAAC,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,CAAkB;QACjF,oBAAoB,EAAE,CAAC,MAAM,CAAC,mBAAmB,IAAI,gBAAgB,CAAkB;QACvF,kFAAkF;QAClF,8EAA8E;QAC9E,8EAA8E;QAC9E,yEAAyE;QACzE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/executors/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/executors/audit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAuGtD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,WAAW,CAAC,CAiHtB"}
|
package/dist/executors/audit.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
// packages/core/src/executors/audit.ts
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { runTasks } from '../run-tasks/index.js';
|
|
4
|
+
import { executeReviewedLifecycle } from '../run-tasks/reviewed-lifecycle.js';
|
|
5
|
+
import { resolveAgent } from '../routing/resolve-agent.js';
|
|
6
|
+
import { buildAuditQualityPrompt } from '../review/quality-only-prompts.js';
|
|
7
|
+
import { mapReviewVerdicts } from './_shared/review-verdict-mapping.js';
|
|
4
8
|
import { computeTimings, computeAggregateCost } from './shared-compute.js';
|
|
5
9
|
import { notApplicable } from '../reporting/not-applicable.js';
|
|
6
10
|
import { composeTerminalHeadline } from '../reporting/compose-terminal-headline.js';
|
|
11
|
+
import { resolveReadOnlyReviewFlag } from '../config/read-only-review-flag.js';
|
|
7
12
|
// --- Ported from packages/mcp/src/tools/audit-document.ts ---
|
|
8
13
|
function resolveAuditTypeText(auditType) {
|
|
9
14
|
if (auditType === 'general')
|
|
@@ -83,7 +88,7 @@ export async function executeAudit(ctx, input) {
|
|
|
83
88
|
const parentModel = ctx.parentModel ?? config.defaults?.parentModel ?? undefined;
|
|
84
89
|
const baseTaskSpec = {
|
|
85
90
|
agentType: 'complex',
|
|
86
|
-
reviewPolicy: '
|
|
91
|
+
reviewPolicy: 'quality_only',
|
|
87
92
|
briefQualityPolicy: 'off',
|
|
88
93
|
done: resolveAuditDoneCondition(input.auditType, hasContextBlocks),
|
|
89
94
|
tools: config.defaults?.tools ?? 'full',
|
|
@@ -107,7 +112,7 @@ export async function executeAudit(ctx, input) {
|
|
|
107
112
|
const startMs = Date.now();
|
|
108
113
|
let results;
|
|
109
114
|
try {
|
|
110
|
-
results = await runTasks(tasks, config, { runtime, ...(ctx.batchId !== undefined && { batchId: ctx.batchId }), ...(ctx.recordHeartbeat !== undefined && { recordHeartbeat: ctx.recordHeartbeat }), logger: ctx.logger, ...(ctx.recorder !== undefined && { recorder: ctx.recorder }), ...(ctx.route !== undefined && { route: ctx.route }), ...(ctx.client !== undefined && { client: ctx.client }), ...(ctx.triggeringSkill !== undefined && { triggeringSkill: ctx.triggeringSkill }) });
|
|
115
|
+
results = await runTasks(tasks, config, { runtime, ...(ctx.batchId !== undefined && { batchId: ctx.batchId }), ...(ctx.recordHeartbeat !== undefined && { recordHeartbeat: ctx.recordHeartbeat }), logger: ctx.logger, ...(ctx.recorder !== undefined && { recorder: ctx.recorder }), ...(ctx.route !== undefined && { route: ctx.route }), ...(ctx.client !== undefined && { client: ctx.client }), ...(ctx.triggeringSkill !== undefined && { triggeringSkill: ctx.triggeringSkill }), qualityReviewPromptBuilder: buildAuditQualityPrompt });
|
|
111
116
|
}
|
|
112
117
|
catch (e) {
|
|
113
118
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -117,6 +122,9 @@ export async function executeAudit(ctx, input) {
|
|
|
117
122
|
const ctxId = autoRegisterContextBlock(results, contextBlockStore);
|
|
118
123
|
const batchTimings = computeTimings(wallClockMs, results);
|
|
119
124
|
const costSummary = computeAggregateCost(results);
|
|
125
|
+
const flag = resolveReadOnlyReviewFlag();
|
|
126
|
+
const useQualityReview = flag.isEnabledFor('audit_document');
|
|
127
|
+
const verdicts = mapReviewVerdicts(results[0], !useQualityReview);
|
|
120
128
|
return {
|
|
121
129
|
headline: composeTerminalHeadline({ tool: 'audit', awaitingClarification: false, tasksTotal: tasks.length, tasksCompleted: results.length }),
|
|
122
130
|
results,
|
|
@@ -128,23 +136,30 @@ export async function executeAudit(ctx, input) {
|
|
|
128
136
|
batchId: randomUUID(),
|
|
129
137
|
wallClockMs,
|
|
130
138
|
parentModel,
|
|
139
|
+
...verdicts,
|
|
131
140
|
...(ctxId !== undefined && { contextBlockId: ctxId }),
|
|
132
141
|
};
|
|
133
142
|
}
|
|
134
143
|
// Single-task mode
|
|
135
144
|
const auditTypeText = resolveAuditTypeText(input.auditType);
|
|
136
145
|
const prompt = buildAuditPrompt(auditTypeText, input.document, input.filePaths, hasContextBlocks);
|
|
137
|
-
|
|
146
|
+
const task = { ...baseTaskSpec, prompt };
|
|
147
|
+
let result;
|
|
138
148
|
try {
|
|
139
|
-
|
|
149
|
+
const resolved = resolveAgent('complex', [], config);
|
|
150
|
+
result = await executeReviewedLifecycle(task, resolved, config, 0, undefined, { batchId: ctx.batchId, recordHeartbeat: ctx.recordHeartbeat }, { logger: ctx.logger, verbose: config.diagnostics?.verbose ?? false }, ctx.recorder, ctx.route ?? 'audit', ctx.client, ctx.triggeringSkill, ctx.bus, buildAuditQualityPrompt);
|
|
140
151
|
}
|
|
141
152
|
catch (e) {
|
|
142
153
|
const msg = e instanceof Error ? e.message : String(e);
|
|
143
|
-
|
|
154
|
+
result = { output: '', status: 'error', usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0, costUSD: null }, turns: 0, filesRead: [], filesWritten: [], toolCalls: [], outputIsDiagnostic: false, escalationLog: [], error: msg, errorCode: 'executor_error', retryable: false, durationMs: 0, structuredError: { code: 'executor_error', message: msg, where: 'executor:audit' }, workerStatus: 'failed' };
|
|
144
155
|
}
|
|
156
|
+
const results = [result];
|
|
145
157
|
const ctxId = autoRegisterContextBlock(results, contextBlockStore);
|
|
146
158
|
const batchTimings = computeTimings(0, results);
|
|
147
159
|
const costSummary = computeAggregateCost(results);
|
|
160
|
+
const flag2 = resolveReadOnlyReviewFlag();
|
|
161
|
+
const useQualityReview2 = flag2.isEnabledFor('audit_document');
|
|
162
|
+
const verdicts = mapReviewVerdicts(result, !useQualityReview2);
|
|
148
163
|
return {
|
|
149
164
|
headline: composeTerminalHeadline({ tool: 'audit', awaitingClarification: false, tasksTotal: 1, tasksCompleted: results.length }),
|
|
150
165
|
results,
|
|
@@ -156,6 +171,7 @@ export async function executeAudit(ctx, input) {
|
|
|
156
171
|
batchId: randomUUID(),
|
|
157
172
|
wallClockMs: 0,
|
|
158
173
|
parentModel,
|
|
174
|
+
...verdicts,
|
|
159
175
|
...(ctxId !== undefined && { contextBlockId: ctxId }),
|
|
160
176
|
};
|
|
161
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/executors/audit.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/executors/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/executors/debug.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/executors/debug.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AA6BtD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,WAAW,CAAC,CA2DtB"}
|
package/dist/executors/debug.js
CHANGED
|
@@ -4,6 +4,9 @@ import { runTasks } from '../run-tasks/index.js';
|
|
|
4
4
|
import { computeTimings, computeAggregateCost } from './shared-compute.js';
|
|
5
5
|
import { notApplicable } from '../reporting/not-applicable.js';
|
|
6
6
|
import { composeTerminalHeadline } from '../reporting/compose-terminal-headline.js';
|
|
7
|
+
import { buildDebugQualityPrompt } from '../review/quality-only-prompts.js';
|
|
8
|
+
import { mapReviewVerdicts } from './_shared/review-verdict-mapping.js';
|
|
9
|
+
import { resolveReadOnlyReviewFlag } from '../config/read-only-review-flag.js';
|
|
7
10
|
// --- Ported from packages/mcp/src/tools/debug-task.ts ---
|
|
8
11
|
function buildFilePathsPrompt(filePaths) {
|
|
9
12
|
if (!filePaths || filePaths.length === 0)
|
|
@@ -35,7 +38,7 @@ export async function executeDebug(ctx, input) {
|
|
|
35
38
|
const parentModel = ctx.parentModel ?? config.defaults?.parentModel ?? undefined;
|
|
36
39
|
const taskSpec = {
|
|
37
40
|
agentType: 'complex',
|
|
38
|
-
reviewPolicy: '
|
|
41
|
+
reviewPolicy: 'quality_only',
|
|
39
42
|
briefQualityPolicy: 'off',
|
|
40
43
|
done: 'Identify the root cause with evidence (file, line, mechanism). Propose a fix. Verify the fix resolves the problem.',
|
|
41
44
|
tools: config.defaults?.tools ?? 'full',
|
|
@@ -50,7 +53,7 @@ export async function executeDebug(ctx, input) {
|
|
|
50
53
|
const runtime = contextBlockStore ? { contextBlockStore } : undefined;
|
|
51
54
|
let results;
|
|
52
55
|
try {
|
|
53
|
-
results = await runTasks([{ ...taskSpec, prompt }], config, { runtime, ...(ctx.batchId !== undefined && { batchId: ctx.batchId }), ...(ctx.recordHeartbeat !== undefined && { recordHeartbeat: ctx.recordHeartbeat }), logger: ctx.logger, ...(ctx.recorder !== undefined && { recorder: ctx.recorder }), ...(ctx.route !== undefined && { route: ctx.route }), ...(ctx.client !== undefined && { client: ctx.client }), ...(ctx.triggeringSkill !== undefined && { triggeringSkill: ctx.triggeringSkill }) });
|
|
56
|
+
results = await runTasks([{ ...taskSpec, prompt }], config, { runtime, ...(ctx.batchId !== undefined && { batchId: ctx.batchId }), ...(ctx.recordHeartbeat !== undefined && { recordHeartbeat: ctx.recordHeartbeat }), logger: ctx.logger, ...(ctx.recorder !== undefined && { recorder: ctx.recorder }), ...(ctx.route !== undefined && { route: ctx.route }), ...(ctx.client !== undefined && { client: ctx.client }), ...(ctx.triggeringSkill !== undefined && { triggeringSkill: ctx.triggeringSkill }), qualityReviewPromptBuilder: buildDebugQualityPrompt });
|
|
54
57
|
}
|
|
55
58
|
catch (e) {
|
|
56
59
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -59,6 +62,9 @@ export async function executeDebug(ctx, input) {
|
|
|
59
62
|
const ctxId = autoRegisterContextBlock(results, contextBlockStore);
|
|
60
63
|
const batchTimings = computeTimings(0, results);
|
|
61
64
|
const costSummary = computeAggregateCost(results);
|
|
65
|
+
const flag = resolveReadOnlyReviewFlag();
|
|
66
|
+
const useQualityReview = flag.isEnabledFor('debug_task');
|
|
67
|
+
const verdicts = mapReviewVerdicts(results[0], !useQualityReview);
|
|
62
68
|
return {
|
|
63
69
|
headline: composeTerminalHeadline({ tool: 'debug', awaitingClarification: false, tasksTotal: 1, tasksCompleted: results.length }),
|
|
64
70
|
results,
|
|
@@ -70,6 +76,9 @@ export async function executeDebug(ctx, input) {
|
|
|
70
76
|
batchId: randomUUID(),
|
|
71
77
|
wallClockMs: 0,
|
|
72
78
|
parentModel,
|
|
79
|
+
specReviewVerdict: verdicts.specReviewVerdict,
|
|
80
|
+
qualityReviewVerdict: verdicts.qualityReviewVerdict,
|
|
81
|
+
roundsUsed: verdicts.roundsUsed,
|
|
73
82
|
...(ctxId !== undefined && { contextBlockId: ctxId }),
|
|
74
83
|
};
|
|
75
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/executors/debug.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/executors/debug.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAE/E,2DAA2D;AAE3D,SAAS,oBAAoB,CAAC,SAAoB;IAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,OAAO,kCAAkC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA0C,EAC1C,KAAgF;IAEhF,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAqB,EACrB,KAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC;IAE1C,MAAM,KAAK,GAAa,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,SAAS,CAAC;IAEjF,MAAM,QAAQ,GAAsB;QAClC,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,cAAc;QAC5B,kBAAkB,EAAE,KAAK;QACzB,IAAI,EAAE,oHAAoH;QAC1H,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,MAAM;QACvC,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,SAAS;QAClD,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE;QAC7C,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,IAAI,UAAU;QAC3D,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG;QAC3B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,WAAW;QACX,UAAU,EAAE,KAAK;KAClB,CAAC;IACF,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAc,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACljB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAgB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAyB,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,YAAY,EAAE,QAAiB,EAAE,CAAC,CAAC;IAClb,CAAC;IACD,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAElE,OAAO;QACL,QAAQ,EAAE,uBAAuB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACjI,OAAO;QACP,YAAY;QACZ,WAAW;QACX,gBAAgB,EAAE,aAAa,CAAC,+CAA+C,CAAC;QAChF,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACvC,sBAAsB,EAAE,aAAa,CAAC,kCAAkC,CAAC;QACzE,OAAO,EAAE,UAAU,EAAE;QACrB,WAAW,EAAE,CAAC;QACd,WAAW;QACX,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;QACnD,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/executors/investigate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/executors/investigate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAM5D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oCAAoC,CAAC;AAQ5C,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,0BAA0B,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAmJzB"}
|
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
// packages/core/src/executors/investigate.ts
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import {
|
|
3
|
+
import { executeReviewedLifecycle } from '../run-tasks/reviewed-lifecycle.js';
|
|
4
|
+
import { resolveAgent } from '../routing/resolve-agent.js';
|
|
4
5
|
import { computeTimings, computeAggregateCost } from './shared-compute.js';
|
|
5
6
|
import { notApplicable } from '../reporting/not-applicable.js';
|
|
6
7
|
import { compileInvestigate, } from '../intake/compilers/investigate.js';
|
|
7
8
|
import { parseInvestigationReport } from '../reporting/parse-investigation-report.js';
|
|
8
9
|
import { deriveInvestigateWorkerStatus } from '../reporting/derive-investigate-status.js';
|
|
9
10
|
import { composeInvestigateTerminalHeadline } from '../reporting/compose-investigate-headline.js';
|
|
11
|
+
import { mapReviewVerdicts } from './_shared/review-verdict-mapping.js';
|
|
12
|
+
import { resolveReadOnlyReviewFlag } from '../config/read-only-review-flag.js';
|
|
13
|
+
import { buildInvestigateQualityPrompt } from '../review/quality-only-prompts.js';
|
|
10
14
|
export async function executeInvestigate(ctx, args) {
|
|
11
15
|
const { config } = ctx;
|
|
12
16
|
const cwd = ctx.projectContext.cwd;
|
|
13
17
|
const spec = compileInvestigate(args.input, args.resolvedContextBlocks, args.canonicalizedFilePaths, args.relativeFilePathsForPrompt, cwd);
|
|
14
18
|
const taskSpec = {
|
|
15
19
|
...spec,
|
|
20
|
+
agentType: 'complex',
|
|
21
|
+
reviewPolicy: 'quality_only',
|
|
16
22
|
timeoutMs: config.defaults?.timeoutMs ?? 1_800_000,
|
|
17
23
|
maxCostUSD: config.defaults?.maxCostUSD ?? 10,
|
|
18
24
|
sandboxPolicy: config.defaults?.sandboxPolicy ?? 'cwd-only',
|
|
19
|
-
briefQualityPolicy: 'off',
|
|
20
25
|
};
|
|
26
|
+
const resolved = resolveAgent('complex', [], config);
|
|
21
27
|
const startMs = Date.now();
|
|
22
|
-
let
|
|
28
|
+
let result;
|
|
23
29
|
let runtimeError;
|
|
24
30
|
try {
|
|
25
|
-
|
|
31
|
+
result = await executeReviewedLifecycle(taskSpec, resolved, config, 0, undefined, {
|
|
26
32
|
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
27
33
|
...(ctx.recordHeartbeat !== undefined && { recordHeartbeat: ctx.recordHeartbeat }),
|
|
28
|
-
|
|
29
|
-
...(ctx.recorder !== undefined && { recorder: ctx.recorder }),
|
|
30
|
-
...(ctx.route !== undefined && { route: ctx.route }),
|
|
31
|
-
...(ctx.client !== undefined && { client: ctx.client }),
|
|
32
|
-
...(ctx.triggeringSkill !== undefined && { triggeringSkill: ctx.triggeringSkill }),
|
|
33
|
-
});
|
|
34
|
+
}, { logger: ctx.logger }, ctx.recorder, ctx.route ?? 'investigate', ctx.client, ctx.triggeringSkill, ctx.bus, buildInvestigateQualityPrompt);
|
|
34
35
|
}
|
|
35
36
|
catch (e) {
|
|
36
37
|
runtimeError = e instanceof Error ? e : new Error(String(e));
|
|
@@ -65,11 +66,10 @@ export async function executeInvestigate(ctx, args) {
|
|
|
65
66
|
},
|
|
66
67
|
workerStatus: 'failed',
|
|
67
68
|
};
|
|
68
|
-
|
|
69
|
+
result = fallback;
|
|
69
70
|
}
|
|
70
71
|
const wallClockMs = Date.now() - startMs;
|
|
71
|
-
|
|
72
|
-
// Pull lifecycle signals (set by the lifecycle in Task 13a).
|
|
72
|
+
// Pull lifecycle signals (set by executeReviewedLifecycle).
|
|
73
73
|
const capExhausted = result?.capExhausted;
|
|
74
74
|
const workerError = runtimeError ?? result?.workerError;
|
|
75
75
|
const lifecycleClarificationRequested = Boolean(result?.lifecycleClarificationRequested);
|
|
@@ -108,17 +108,23 @@ export async function executeInvestigate(ctx, args) {
|
|
|
108
108
|
unresolvedCount: result?.structuredReport?.unresolved?.length ?? 0,
|
|
109
109
|
...(derived.incompleteReason !== undefined && { incompleteReason: derived.incompleteReason }),
|
|
110
110
|
});
|
|
111
|
+
const flag = resolveReadOnlyReviewFlag();
|
|
112
|
+
const useQualityReview = flag.isEnabledFor('investigate_codebase');
|
|
113
|
+
const reviewVerdicts = mapReviewVerdicts(result, !useQualityReview);
|
|
111
114
|
return {
|
|
112
115
|
headline,
|
|
113
|
-
results,
|
|
114
|
-
batchTimings: computeTimings(wallClockMs,
|
|
115
|
-
costSummary: computeAggregateCost(
|
|
116
|
+
results: [result],
|
|
117
|
+
batchTimings: computeTimings(wallClockMs, [result]),
|
|
118
|
+
costSummary: computeAggregateCost([result]),
|
|
116
119
|
structuredReport: notApplicable('per-task structured report carried on result'),
|
|
117
120
|
error: notApplicable('batch succeeded'),
|
|
118
121
|
proposedInterpretation: notApplicable('batch not awaiting clarification'),
|
|
119
|
-
batchId: ctx.batchId ?? randomUUID(),
|
|
122
|
+
batchId: ctx.batchId ?? randomUUID(),
|
|
120
123
|
wallClockMs,
|
|
121
124
|
parentModel: ctx.parentModel ?? config.defaults?.parentModel,
|
|
125
|
+
specReviewVerdict: reviewVerdicts.specReviewVerdict,
|
|
126
|
+
qualityReviewVerdict: reviewVerdicts.qualityReviewVerdict,
|
|
127
|
+
roundsUsed: reviewVerdicts.roundsUsed,
|
|
122
128
|
};
|
|
123
129
|
}
|
|
124
130
|
//# sourceMappingURL=investigate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/executors/investigate.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/executors/investigate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/executors/review.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/executors/review.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAkFvD,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2BD,wBAAsB,aAAa,CACjC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,YAAY,CAAC,CA0FvB"}
|