@zhixuan92/multi-model-agent-core 3.7.0 → 3.8.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/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 +40 -0
- package/dist/executors/_shared/findings-schema.d.ts.map +1 -0
- package/dist/executors/_shared/findings-schema.js +23 -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 +22 -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.js +10 -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 +91 -0
- package/dist/observability/events.d.ts.map +1 -1
- package/dist/observability/events.js +27 -0
- package/dist/observability/events.js.map +1 -1
- package/dist/review/quality-only-prompts.d.ts +20 -0
- package/dist/review/quality-only-prompts.d.ts.map +1 -0
- package/dist/review/quality-only-prompts.js +108 -0
- package/dist/review/quality-only-prompts.js.map +1 -0
- package/dist/review/quality-reviewer.d.ts +4 -1
- package/dist/review/quality-reviewer.d.ts.map +1 -1
- package/dist/review/quality-reviewer.js +6 -4
- package/dist/review/quality-reviewer.js.map +1 -1
- package/dist/run-tasks/index.d.ts +5 -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 +4 -1
- package/dist/run-tasks/reviewed-lifecycle.d.ts.map +1 -1
- package/dist/run-tasks/reviewed-lifecycle.js +188 -106
- package/dist/run-tasks/reviewed-lifecycle.js.map +1 -1
- package/dist/tool-schemas/audit.d.ts +17 -0
- package/dist/tool-schemas/audit.d.ts.map +1 -1
- package/dist/tool-schemas/debug.d.ts +17 -0
- package/dist/tool-schemas/debug.d.ts.map +1 -1
- package/dist/tool-schemas/delegate.d.ts +17 -0
- package/dist/tool-schemas/delegate.d.ts.map +1 -1
- package/dist/tool-schemas/execute-plan.d.ts +17 -0
- package/dist/tool-schemas/execute-plan.d.ts.map +1 -1
- package/dist/tool-schemas/investigate.d.ts +17 -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 +17 -0
- package/dist/tool-schemas/retry.d.ts.map +1 -1
- package/dist/tool-schemas/review.d.ts +17 -0
- package/dist/tool-schemas/review.d.ts.map +1 -1
- package/dist/tool-schemas/shared-output.d.ts +17 -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 +17 -0
- package/dist/tool-schemas/verify.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- 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.0** — read-only reviewed lifecycle: all 5 read-only routes (audit, review, verify, investigate, debug) now run a single `quality_only` review with bounded rework, structured `findings[]` worker output, and forced cross-tier review (worker complex, reviewer standard). Verify worker tier upgraded to complex. `MMAGENT_READ_ONLY_REVIEW` kill switch for rollback. 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,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Structured finding shape emitted by all 5 read-only mma-* workers.
|
|
4
|
+
* Used by the quality-review stage to iterate per-finding judgments.
|
|
5
|
+
*
|
|
6
|
+
* - `severity` is lowercase to match RunResult.concerns[].severity.
|
|
7
|
+
* - `file` and `line` are independently nullable: project-level findings
|
|
8
|
+
* have both null; multi-line findings keep `line` pointing at the start
|
|
9
|
+
* of the cited region and use `sourceQuote` for the full text.
|
|
10
|
+
* - `line` is 1-indexed (editor convention).
|
|
11
|
+
* - `sourceQuote` and `suggestedFix` are optional.
|
|
12
|
+
*/
|
|
13
|
+
export declare const findingSchema: z.ZodObject<{
|
|
14
|
+
id: z.ZodString;
|
|
15
|
+
severity: z.ZodEnum<{
|
|
16
|
+
low: "low";
|
|
17
|
+
medium: "medium";
|
|
18
|
+
high: "high";
|
|
19
|
+
}>;
|
|
20
|
+
file: z.ZodNullable<z.ZodString>;
|
|
21
|
+
line: z.ZodNullable<z.ZodNumber>;
|
|
22
|
+
claim: z.ZodString;
|
|
23
|
+
sourceQuote: z.ZodOptional<z.ZodString>;
|
|
24
|
+
suggestedFix: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export declare const findingsSchema: z.ZodArray<z.ZodObject<{
|
|
27
|
+
id: z.ZodString;
|
|
28
|
+
severity: z.ZodEnum<{
|
|
29
|
+
low: "low";
|
|
30
|
+
medium: "medium";
|
|
31
|
+
high: "high";
|
|
32
|
+
}>;
|
|
33
|
+
file: z.ZodNullable<z.ZodString>;
|
|
34
|
+
line: z.ZodNullable<z.ZodNumber>;
|
|
35
|
+
claim: z.ZodString;
|
|
36
|
+
sourceQuote: z.ZodOptional<z.ZodString>;
|
|
37
|
+
suggestedFix: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
export type Finding = z.infer<typeof findingSchema>;
|
|
40
|
+
//# 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;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;iBAQxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;kBAAyB,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Structured finding shape emitted by all 5 read-only mma-* workers.
|
|
4
|
+
* Used by the quality-review stage to iterate per-finding judgments.
|
|
5
|
+
*
|
|
6
|
+
* - `severity` is lowercase to match RunResult.concerns[].severity.
|
|
7
|
+
* - `file` and `line` are independently nullable: project-level findings
|
|
8
|
+
* have both null; multi-line findings keep `line` pointing at the start
|
|
9
|
+
* of the cited region and use `sourceQuote` for the full text.
|
|
10
|
+
* - `line` is 1-indexed (editor convention).
|
|
11
|
+
* - `sourceQuote` and `suggestedFix` are optional.
|
|
12
|
+
*/
|
|
13
|
+
export const findingSchema = z.object({
|
|
14
|
+
id: z.string().min(1),
|
|
15
|
+
severity: z.enum(['high', 'medium', 'low']),
|
|
16
|
+
file: z.string().nullable(),
|
|
17
|
+
line: z.number().int().min(1).nullable(),
|
|
18
|
+
claim: z.string().min(1),
|
|
19
|
+
sourceQuote: z.string().optional(),
|
|
20
|
+
suggestedFix: z.string().optional(),
|
|
21
|
+
});
|
|
22
|
+
export const findingsSchema = z.array(findingSchema);
|
|
23
|
+
//# 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;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,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,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,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":"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"}
|
|
@@ -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;AAO5C,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,CAkJzB"}
|
|
@@ -1,36 +1,36 @@
|
|
|
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';
|
|
10
13
|
export async function executeInvestigate(ctx, args) {
|
|
11
14
|
const { config } = ctx;
|
|
12
15
|
const cwd = ctx.projectContext.cwd;
|
|
13
16
|
const spec = compileInvestigate(args.input, args.resolvedContextBlocks, args.canonicalizedFilePaths, args.relativeFilePathsForPrompt, cwd);
|
|
14
17
|
const taskSpec = {
|
|
15
18
|
...spec,
|
|
19
|
+
agentType: 'complex',
|
|
20
|
+
reviewPolicy: 'quality_only',
|
|
16
21
|
timeoutMs: config.defaults?.timeoutMs ?? 1_800_000,
|
|
17
22
|
maxCostUSD: config.defaults?.maxCostUSD ?? 10,
|
|
18
23
|
sandboxPolicy: config.defaults?.sandboxPolicy ?? 'cwd-only',
|
|
19
|
-
briefQualityPolicy: 'off',
|
|
20
24
|
};
|
|
25
|
+
const resolved = resolveAgent('complex', [], config);
|
|
21
26
|
const startMs = Date.now();
|
|
22
|
-
let
|
|
27
|
+
let result;
|
|
23
28
|
let runtimeError;
|
|
24
29
|
try {
|
|
25
|
-
|
|
30
|
+
result = await executeReviewedLifecycle(taskSpec, resolved, config, 0, undefined, {
|
|
26
31
|
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
27
32
|
...(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
|
-
});
|
|
33
|
+
}, { logger: ctx.logger }, ctx.recorder, ctx.route ?? 'investigate', ctx.client, ctx.triggeringSkill, ctx.bus);
|
|
34
34
|
}
|
|
35
35
|
catch (e) {
|
|
36
36
|
runtimeError = e instanceof Error ? e : new Error(String(e));
|
|
@@ -65,11 +65,10 @@ export async function executeInvestigate(ctx, args) {
|
|
|
65
65
|
},
|
|
66
66
|
workerStatus: 'failed',
|
|
67
67
|
};
|
|
68
|
-
|
|
68
|
+
result = fallback;
|
|
69
69
|
}
|
|
70
70
|
const wallClockMs = Date.now() - startMs;
|
|
71
|
-
|
|
72
|
-
// Pull lifecycle signals (set by the lifecycle in Task 13a).
|
|
71
|
+
// Pull lifecycle signals (set by executeReviewedLifecycle).
|
|
73
72
|
const capExhausted = result?.capExhausted;
|
|
74
73
|
const workerError = runtimeError ?? result?.workerError;
|
|
75
74
|
const lifecycleClarificationRequested = Boolean(result?.lifecycleClarificationRequested);
|
|
@@ -108,17 +107,23 @@ export async function executeInvestigate(ctx, args) {
|
|
|
108
107
|
unresolvedCount: result?.structuredReport?.unresolved?.length ?? 0,
|
|
109
108
|
...(derived.incompleteReason !== undefined && { incompleteReason: derived.incompleteReason }),
|
|
110
109
|
});
|
|
110
|
+
const flag = resolveReadOnlyReviewFlag();
|
|
111
|
+
const useQualityReview = flag.isEnabledFor('investigate_codebase');
|
|
112
|
+
const reviewVerdicts = mapReviewVerdicts(result, !useQualityReview);
|
|
111
113
|
return {
|
|
112
114
|
headline,
|
|
113
|
-
results,
|
|
114
|
-
batchTimings: computeTimings(wallClockMs,
|
|
115
|
-
costSummary: computeAggregateCost(
|
|
115
|
+
results: [result],
|
|
116
|
+
batchTimings: computeTimings(wallClockMs, [result]),
|
|
117
|
+
costSummary: computeAggregateCost([result]),
|
|
116
118
|
structuredReport: notApplicable('per-task structured report carried on result'),
|
|
117
119
|
error: notApplicable('batch succeeded'),
|
|
118
120
|
proposedInterpretation: notApplicable('batch not awaiting clarification'),
|
|
119
|
-
batchId: ctx.batchId ?? randomUUID(),
|
|
121
|
+
batchId: ctx.batchId ?? randomUUID(),
|
|
120
122
|
wallClockMs,
|
|
121
123
|
parentModel: ctx.parentModel ?? config.defaults?.parentModel,
|
|
124
|
+
specReviewVerdict: reviewVerdicts.specReviewVerdict,
|
|
125
|
+
qualityReviewVerdict: reviewVerdicts.qualityReviewVerdict,
|
|
126
|
+
roundsUsed: reviewVerdicts.roundsUsed,
|
|
122
127
|
};
|
|
123
128
|
}
|
|
124
129
|
//# 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":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EACL,kBAAkB,GAEnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAA4B,MAAM,4CAA4C,CAAC;AAChH,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;AAC1F,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAS/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAqB,EACrB,IAA8B;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC;IAEnC,MAAM,IAAI,GAAG,kBAAkB,CAC7B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,0BAA0B,EAC/B,GAAG,CACJ,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,GAAG,IAAI;QACP,SAAS,EAAE,SAAkB;QAC7B,YAAY,EAAE,cAAuB;QACrC,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;KAC5D,CAAC;IAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,MAAiB,CAAC;IACtB,IAAI,YAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,wBAAwB,CACrC,QAAe,EACf,QAAQ,EACR,MAAM,EACN,CAAC,EACD,SAAS,EACT;YACE,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC;SACnF,EACD,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACtB,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,KAAK,IAAI,aAAa,EAC1B,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,GAAG,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAc;YAC1B,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,OAAgB;YACxB,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;YACzE,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,EAAE;YACb,kBAAkB,EAAE,KAAK;YACzB,aAAa,EAAE,EAAE;YACjB,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,CAAC;YACb,gBAAgB,EAAE;gBAChB,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,EAAE;gBAChB,cAAc,EAAE,EAAE;gBAClB,mBAAmB,EAAE,EAAE;gBACvB,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,EAAE;aAClB;YACD,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE;gBACf,IAAI,EAAE,gBAAyB;gBAC/B,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,sBAAsB;aAC9B;YACD,YAAY,EAAE,QAAiB;SACR,CAAC;QAC1B,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAEzC,4DAA4D;IAC5D,MAAM,YAAY,GAAI,MAAc,EAAE,YAA0D,CAAC;IACjG,MAAM,WAAW,GAAG,YAAY,IAAM,MAAc,EAAE,WAAiC,CAAC;IACxF,MAAM,+BAA+B,GAAG,OAAO,CAAE,MAAc,EAAE,+BAA+B,CAAC,CAAC;IAElG,uBAAuB;IACvB,MAAM,WAAW,GAAG,wBAAwB,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAEnE,yDAAyD;IACzD,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,KAAK,mBAAmB;WAC9D,WAAW,CAAC,aAAa,CAAC,wBAAwB,CAAC;IACxD,MAAM,YAAY,GAAG,+BAA+B,IAAI,kBAAkB,CAAC;IAE3E,MAAM,OAAO,GAAG,6BAA6B,CAAC;QAC5C,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,WAAW;KACZ,CAAC,CAAC;IAEH,0EAA0E;IAC1E,IAAI,aAA8C,CAAC;IACnD,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC7C,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;QAC1C,IAAI,MAAM,EAAE,gBAAgB,EAAE,CAAC;YAC5B,MAAM,CAAC,gBAAwB,CAAC,aAAa,GAAG,aAAa,CAAC;QACjE,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,MAAM,EAAE,CAAC;QACV,MAAc,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACpD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAc,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,kCAAkC,CAAC;QAClD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;QAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;QACnD,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI;QACzD,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;KAC9F,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,yBAAyB,EAAE,CAAC;IACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAEpE,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,YAAY,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;QACnD,WAAW,EAAE,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3C,gBAAgB,EAAE,aAAa,CAAC,8CAA8C,CAAC;QAC/E,KAAK,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACvC,sBAAsB,EAAE,aAAa,CAAC,kCAAkC,CAAC;QACzE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,UAAU,EAAE;QACpC,WAAW;QACX,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW;QAC5D,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;QACnD,oBAAoB,EAAE,cAAc,CAAC,oBAAoB;QACzD,UAAU,EAAE,cAAc,CAAC,UAAU;KACtC,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|