@zhixuan92/multi-model-agent-core 4.5.1 → 4.5.2
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 +6 -4
- package/dist/escalation/fallback-helpers.d.ts.map +1 -1
- package/dist/escalation/fallback-helpers.js +0 -1
- package/dist/escalation/fallback-helpers.js.map +1 -1
- package/dist/events/event-builder.d.ts.map +1 -1
- package/dist/events/event-builder.js +41 -11
- package/dist/events/event-builder.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +0 -2
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.js +5 -7
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts +0 -2
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +1 -9
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/reporting/headline-templates/audit.d.ts.map +1 -1
- package/dist/reporting/headline-templates/audit.js +10 -14
- package/dist/reporting/headline-templates/audit.js.map +1 -1
- package/dist/reporting/headline-templates/debug.d.ts +3 -5
- package/dist/reporting/headline-templates/debug.d.ts.map +1 -1
- package/dist/reporting/headline-templates/debug.js +5 -8
- package/dist/reporting/headline-templates/debug.js.map +1 -1
- package/dist/reporting/headline-templates/review.d.ts.map +1 -1
- package/dist/reporting/headline-templates/review.js +6 -7
- package/dist/reporting/headline-templates/review.js.map +1 -1
- package/dist/review/default-engines.d.ts +0 -2
- package/dist/review/default-engines.d.ts.map +1 -1
- package/dist/review/default-engines.js +0 -4
- package/dist/review/default-engines.js.map +1 -1
- package/dist/review/index.d.ts +0 -4
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/index.js +0 -4
- package/dist/review/index.js.map +1 -1
- package/dist/review/review-types.d.ts +0 -16
- package/dist/review/review-types.d.ts.map +1 -1
- package/dist/review/review-types.js +4 -1
- package/dist/review/review-types.js.map +1 -1
- package/dist/types/run-result.d.ts +0 -11
- package/dist/types/run-result.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/reporting/annotate-completion-parser.d.ts +0 -39
- package/dist/reporting/annotate-completion-parser.d.ts.map +0 -1
- package/dist/reporting/annotate-completion-parser.js +0 -43
- package/dist/reporting/annotate-completion-parser.js.map +0 -1
- package/dist/review/annotator-engine.d.ts +0 -44
- package/dist/review/annotator-engine.d.ts.map +0 -1
- package/dist/review/annotator-engine.js +0 -115
- package/dist/review/annotator-engine.js.map +0 -1
- package/dist/review/annotator-output-parser.d.ts +0 -13
- package/dist/review/annotator-output-parser.d.ts.map +0 -1
- package/dist/review/annotator-output-parser.js +0 -104
- package/dist/review/annotator-output-parser.js.map +0 -1
- package/dist/review/annotator-prompt-builder.d.ts +0 -29
- package/dist/review/annotator-prompt-builder.d.ts.map +0 -1
- package/dist/review/annotator-prompt-builder.js +0 -87
- package/dist/review/annotator-prompt-builder.js.map +0 -1
- package/dist/review/review-verdict-aggregator.d.ts +0 -17
- package/dist/review/review-verdict-aggregator.d.ts.map +0 -1
- package/dist/review/review-verdict-aggregator.js +0 -30
- package/dist/review/review-verdict-aggregator.js.map +0 -1
|
@@ -4,22 +4,18 @@ export const auditHeadlineTemplate = {
|
|
|
4
4
|
compose({ report, status, runResult, task }) {
|
|
5
5
|
const r = report;
|
|
6
6
|
const reportInapplicable = !r || isNotApplicable(r);
|
|
7
|
-
// Source priority for findings (
|
|
7
|
+
// Source priority for findings (v4.5.2+):
|
|
8
8
|
// 1. Structured report's `findings` (rare — only when the worker
|
|
9
9
|
// emitted proper JSON matching the audit reportSchema).
|
|
10
|
-
// 2. runResult.
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// Without this third fallback, audits where the annotator
|
|
16
|
-
// failed report `0 findings (0 high)` even though the
|
|
17
|
-
// implementer's narrative carried valid findings.
|
|
10
|
+
// 2. parseNarrativeFindings(runResult.output) — recovers findings
|
|
11
|
+
// directly from the implementer's `## Finding N:` output when
|
|
12
|
+
// no structured report was emitted. This is the load-bearing
|
|
13
|
+
// path for read-route audits (their workers emit narrative,
|
|
14
|
+
// not structured JSON).
|
|
18
15
|
const reportFindings = !reportInapplicable && Array.isArray(r?.findings) ? r.findings : [];
|
|
19
|
-
const annotated = runResult?.annotatedFindings ?? [];
|
|
20
16
|
let findings = reportFindings.length > 0
|
|
21
17
|
? reportFindings
|
|
22
|
-
:
|
|
18
|
+
: [];
|
|
23
19
|
if (findings.length === 0 && typeof runResult?.output === 'string') {
|
|
24
20
|
const narrative = parseNarrativeFindings(runResult.output);
|
|
25
21
|
if (narrative.length > 0)
|
|
@@ -29,9 +25,9 @@ export const auditHeadlineTemplate = {
|
|
|
29
25
|
return `[${status}] audit completed`;
|
|
30
26
|
}
|
|
31
27
|
const high = countHighOrCritical(findings);
|
|
32
|
-
// Document path fallback
|
|
33
|
-
//
|
|
34
|
-
//
|
|
28
|
+
// Document path fallback: when narrative-parse is the active source,
|
|
29
|
+
// the structured report's documentPath is absent; pull from the task's
|
|
30
|
+
// filePaths instead.
|
|
35
31
|
const path = (!reportInapplicable && typeof r?.documentPath === 'string' ? r.documentPath : '')
|
|
36
32
|
|| task?.filePaths?.[0]
|
|
37
33
|
|| '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/audit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;QACzC,MAAM,CAAC,GAAG,MAAiD,CAAC;QAC5D,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAEpD,
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/audit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;QACzC,MAAM,CAAC,GAAG,MAAiD,CAAC;QAC5D,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,mEAAmE;QACnE,6DAA6D;QAC7D,oEAAoE;QACpE,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,6BAA6B;QAC7B,MAAM,cAAc,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,IAAI,QAAQ,GACV,cAAc,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAE,cAAgD;YACnD,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,SAAS,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,GAAG,SAAS,CAAC;QACjD,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAChD,OAAO,IAAI,MAAM,mBAAmB,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAE3C,qEAAqE;QACrE,uEAAuE;QACvE,qBAAqB;QACrB,MAAM,IAAI,GACR,CAAC,CAAC,kBAAkB,IAAI,OAAO,CAAC,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;eAC/E,IAA6C,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;eAC9D,EAAE,CAAC;QAER,OAAO,IAAI,MAAM,WAAW,IAAI,KAAK,QAAQ,CAAC,MAAM,cAAc,IAAI,QAAQ,CAAC;IACjF,CAAC;CACF,CAAC"}
|
|
@@ -13,11 +13,9 @@ import type { HeadlineTemplate } from '../headline-composer.js';
|
|
|
13
13
|
* and no findings count — operator could not tell ok from error and
|
|
14
14
|
* had no signal about how many real findings landed.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* 2. parseNarrativeFindings(runResult.output) — recovers `## Finding N:`
|
|
20
|
-
* blocks from the implementer's narrative when the annotator errored.
|
|
16
|
+
* Findings source (v4.5.2+): parseNarrativeFindings(runResult.output)
|
|
17
|
+
* recovers `## Finding N:` blocks directly from the implementer's
|
|
18
|
+
* narrative.
|
|
21
19
|
*
|
|
22
20
|
* Note: debug's reportSchema.parse is intentionally a thrower (the tool
|
|
23
21
|
* doesn't emit a structured report), so `report` is always notApplicable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/reporting/headline-templates/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/reporting/headline-templates/debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBAoBnC,CAAC"}
|
|
@@ -13,11 +13,9 @@ import { countHighOrCritical, parseNarrativeFindings } from '../severity.js';
|
|
|
13
13
|
* and no findings count — operator could not tell ok from error and
|
|
14
14
|
* had no signal about how many real findings landed.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* 2. parseNarrativeFindings(runResult.output) — recovers `## Finding N:`
|
|
20
|
-
* blocks from the implementer's narrative when the annotator errored.
|
|
16
|
+
* Findings source (v4.5.2+): parseNarrativeFindings(runResult.output)
|
|
17
|
+
* recovers `## Finding N:` blocks directly from the implementer's
|
|
18
|
+
* narrative.
|
|
21
19
|
*
|
|
22
20
|
* Note: debug's reportSchema.parse is intentionally a thrower (the tool
|
|
23
21
|
* doesn't emit a structured report), so `report` is always notApplicable
|
|
@@ -25,9 +23,8 @@ import { countHighOrCritical, parseNarrativeFindings } from '../severity.js';
|
|
|
25
23
|
*/
|
|
26
24
|
export const debugHeadlineTemplate = {
|
|
27
25
|
compose({ status, runResult, task }) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (findings.length === 0 && typeof runResult?.output === 'string') {
|
|
26
|
+
let findings = [];
|
|
27
|
+
if (typeof runResult?.output === 'string') {
|
|
31
28
|
const narrative = parseNarrativeFindings(runResult.output);
|
|
32
29
|
if (narrative.length > 0)
|
|
33
30
|
findings = narrative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/debug.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;QACjC,IAAI,QAAQ,GAAkC,EAAE,CAAC;QACjD,IAAI,OAAO,SAAS,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,GAAG,SAAS,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GACP,IAA6C,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,MAAM,mBAAmB,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,IAAI;YACT,CAAC,CAAC,IAAI,MAAM,WAAW,IAAI,KAAK,QAAQ,CAAC,MAAM,cAAc,IAAI,QAAQ;YACzE,CAAC,CAAC,IAAI,MAAM,YAAY,QAAQ,CAAC,MAAM,cAAc,IAAI,QAAQ,CAAC;IACtE,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/reporting/headline-templates/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/reporting/headline-templates/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,eAAO,MAAM,sBAAsB,EAAE,gBAuCpC,CAAC"}
|
|
@@ -4,16 +4,15 @@ export const reviewHeadlineTemplate = {
|
|
|
4
4
|
compose({ report, status, taskBrief, runResult, task }) {
|
|
5
5
|
const r = report;
|
|
6
6
|
const reportInapplicable = !r || isNotApplicable(r);
|
|
7
|
-
// Source priority (
|
|
8
|
-
// 1. report.findings (structured
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
7
|
+
// Source priority (v4.5.2+):
|
|
8
|
+
// 1. report.findings (structured — when the worker emitted proper JSON
|
|
9
|
+
// matching the per-route report schema)
|
|
10
|
+
// 2. parseNarrativeFindings(runResult.output) (recover from the
|
|
11
|
+
// implementer's `## Finding N:` blocks when no structured report)
|
|
12
12
|
const reportFindings = !reportInapplicable && Array.isArray(r?.findings) ? r.findings : [];
|
|
13
|
-
const annotated = runResult?.annotatedFindings ?? [];
|
|
14
13
|
let findings = reportFindings.length > 0
|
|
15
14
|
? reportFindings
|
|
16
|
-
:
|
|
15
|
+
: [];
|
|
17
16
|
if (findings.length === 0 && typeof runResult?.output === 'string') {
|
|
18
17
|
const narrative = parseNarrativeFindings(runResult.output);
|
|
19
18
|
if (narrative.length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/review.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;QACpD,MAAM,CAAC,GAAG,MAAkD,CAAC;QAC7D,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAEpD
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/reporting/headline-templates/review.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;QACpD,MAAM,CAAC,GAAG,MAAkD,CAAC;QAC7D,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QAEpD,6BAA6B;QAC7B,yEAAyE;QACzE,6CAA6C;QAC7C,kEAAkE;QAClE,uEAAuE;QACvE,MAAM,cAAc,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,IAAI,QAAQ,GACV,cAAc,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAE,cAAgD;YACnD,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,SAAS,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,GAAG,SAAS,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,GACR,CAAC,CAAC,kBAAkB,IAAI,OAAO,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;eACvE,IAA6C,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;eAC9D,EAAE,CAAC;QAER,gEAAgE;QAChE,iEAAiE;QACjE,8DAA8D;QAC9D,yDAAyD;QACzD,+DAA+D;QAC/D,0DAA0D;QAC1D,mDAAmD;QACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,MAAM,oBAAoB,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,MAAM,YAAY,IAAI,KAAK,QAAQ,CAAC,MAAM,cAAc,QAAQ,YAAY,CAAC;IAC1F,CAAC;CACF,CAAC"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
import { ReviewerEngine } from './reviewer-engine.js';
|
|
2
|
-
import { AnnotatorEngine } from './annotator-engine.js';
|
|
3
2
|
export declare function createDefaultReviewerEngine(): ReviewerEngine;
|
|
4
|
-
export declare function createDefaultAnnotatorEngine(): AnnotatorEngine;
|
|
5
3
|
//# sourceMappingURL=default-engines.d.ts.map
|
|
@@ -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;
|
|
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,wBAAgB,2BAA2B,IAAI,cAAc,CAY5D"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReviewerEngine } from './reviewer-engine.js';
|
|
2
|
-
import { AnnotatorEngine } from './annotator-engine.js';
|
|
3
2
|
import { ReviewerPromptBuilder } from './reviewer-prompt-builder.js';
|
|
4
3
|
// Pipeline-redesign (4.3.0+): spec/quality-AP/diff templates removed.
|
|
5
4
|
// Their callers (spec-chain-handlers, quality-chain-handlers, review-diff-handler)
|
|
@@ -20,7 +19,4 @@ export function createDefaultReviewerEngine() {
|
|
|
20
19
|
investigate: qualityInvestigateTemplate,
|
|
21
20
|
}));
|
|
22
21
|
}
|
|
23
|
-
export function createDefaultAnnotatorEngine() {
|
|
24
|
-
return new AnnotatorEngine();
|
|
25
|
-
}
|
|
26
22
|
//# sourceMappingURL=default-engines.js.map
|
|
@@ -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,
|
|
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,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,sEAAsE;AACtE,mFAAmF;AACnF,oFAAoF;AACpF,kEAAkE;AAClE,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,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,EAC7D;QACE,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,0BAA0B;KACxC,CACF,CACF,CAAC;AACJ,CAAC"}
|
package/dist/review/index.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
export * from './reviewer-engine.js';
|
|
2
|
-
export * from './annotator-engine.js';
|
|
3
2
|
export * from './reviewer-prompt-builder.js';
|
|
4
|
-
export * from './annotator-prompt-builder.js';
|
|
5
3
|
export * from './reviewer-output-parser.js';
|
|
6
|
-
export * from './annotator-output-parser.js';
|
|
7
|
-
export * from './review-verdict-aggregator.js';
|
|
8
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAEA,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
package/dist/review/index.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
// review/index.ts — public surface barrel; per architecture.md:262-275.
|
|
2
2
|
export * from './reviewer-engine.js';
|
|
3
|
-
export * from './annotator-engine.js';
|
|
4
3
|
export * from './reviewer-prompt-builder.js';
|
|
5
|
-
export * from './annotator-prompt-builder.js';
|
|
6
4
|
export * from './reviewer-output-parser.js';
|
|
7
|
-
export * from './annotator-output-parser.js';
|
|
8
|
-
export * from './review-verdict-aggregator.js';
|
|
9
5
|
//# sourceMappingURL=index.js.map
|
package/dist/review/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC"}
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
export type FindingSeverity = 'critical' | 'high' | 'medium' | 'low';
|
|
2
|
-
export interface AnnotatedFinding {
|
|
3
|
-
id: string;
|
|
4
|
-
claim: string;
|
|
5
|
-
evidence: string;
|
|
6
|
-
evidenceGrounded: boolean;
|
|
7
|
-
category?: string;
|
|
8
|
-
/** Annotator's final severity judgment (replaces the worker's stated
|
|
9
|
-
* severity). Field name matches the JSON the LLM emits per
|
|
10
|
-
* ANNOTATOR_RUBRIC — was previously typed as `reviewerSeverity` which
|
|
11
|
-
* didn't match the runtime shape, so type-narrowing was a lie. */
|
|
12
|
-
severity?: FindingSeverity;
|
|
13
|
-
annotatorConfidence: number | null;
|
|
14
|
-
suggestion?: string;
|
|
15
|
-
}
|
|
16
1
|
export type ReviewerVerdict = 'approved' | 'changes_required';
|
|
17
|
-
export type AnnotatorVerdict = 'annotated' | 'error';
|
|
18
2
|
//# sourceMappingURL=review-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-types.d.ts","sourceRoot":"","sources":["../../src/review/review-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-types.d.ts","sourceRoot":"","sources":["../../src/review/review-types.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
// Shared types for the v4 review surface.
|
|
1
|
+
// Shared types for the v4 review surface.
|
|
2
|
+
//
|
|
3
|
+
// FindingSeverity lives in reporting/severity.ts — the live event-builder /
|
|
4
|
+
// bucketing path. Don't duplicate it here.
|
|
2
5
|
export {};
|
|
3
6
|
//# sourceMappingURL=review-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-types.js","sourceRoot":"","sources":["../../src/review/review-types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"review-types.js","sourceRoot":"","sources":["../../src/review/review-types.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,4EAA4E;AAC5E,2CAA2C"}
|
|
@@ -86,11 +86,6 @@ export interface RunResult {
|
|
|
86
86
|
metadata: number;
|
|
87
87
|
cap: number;
|
|
88
88
|
};
|
|
89
|
-
concerns?: Array<{
|
|
90
|
-
source: 'review' | 'spec_review' | 'quality_review' | 'diff_review' | 'verification' | 'diff_truncated';
|
|
91
|
-
severity: 'critical' | 'low' | 'medium' | 'high';
|
|
92
|
-
message: string;
|
|
93
|
-
}>;
|
|
94
89
|
structuredError?: {
|
|
95
90
|
code: 'validator_verify_command_failed' | 'validator_commit_metadata_invalid' | 'validator_commit_metadata_repair_modified_files' | 'validator_dirty_worktree' | 'review_diff_rejected' | 'runner_crash' | 'provider_rate_limited' | 'provider_api_error' | 'provider_transport_failure' | 'provider_timeout' | 'provider_api_aborted' | 'validator_silent_incomplete' | 'config_main_agent_pricing_unresolvable';
|
|
96
91
|
message: string;
|
|
@@ -138,12 +133,6 @@ export interface RunResult {
|
|
|
138
133
|
qualityReviewStatus?: 'approved' | 'changes_required' | 'annotated' | 'skipped' | 'error' | 'not_applicable';
|
|
139
134
|
qualityReviewReason?: string;
|
|
140
135
|
diffReviewStatus?: 'approved' | 'changes_required' | 'skipped' | 'error' | 'not_applicable';
|
|
141
|
-
annotatedFindings?: import('../review/review-types.js').AnnotatedFinding[];
|
|
142
|
-
/** Reviewer findings extracted via typed structured output (OpenAI Agent.outputType).
|
|
143
|
-
* null on non-review-mode runs and on Claude/Codex runners (which still use the
|
|
144
|
-
* JSON-block extraction path). When non-null, downstream consumers MUST prefer it
|
|
145
|
-
* over parseReviewerFindings(...). */
|
|
146
|
-
parsedFindings: import('../review/review-types.js').AnnotatedFinding[] | null;
|
|
147
136
|
structuredReport?: import('../reporting/structured-report.js').ParsedStructuredReport;
|
|
148
137
|
agents?: {
|
|
149
138
|
implementer: 'standard' | 'complex' | 'not_run';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../../src/types/run-result.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,UAAU,EACX,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,CAAA;IACjB,KAAK,EAAE,UAAU,CAAA;IACjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAE7B,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,mDAAmD;IACnD,aAAa,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAA;IAC/C,6CAA6C;IAC7C,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qHAAqH;IACrH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iFAAiF;IACjF,YAAY,CAAC,EAAE;QACb,GAAG,EAAE,OAAO,CAAC;QACb,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB;;;;;;6BAMyB;IACzB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B;;;sEAGkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,aAAa,EAAE,aAAa,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,uBAAuB,CAAA;IAC/G,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/E,
|
|
1
|
+
{"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../../src/types/run-result.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhixuan92/multi-model-agent-core",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { Session } from '../types/run-result.js';
|
|
2
|
-
import { type AnnotatorRoute } from './annotator-prompt-builder.js';
|
|
3
|
-
import { type AnnotatorParseResult } from './annotator-output-parser.js';
|
|
4
|
-
export interface AnnotatorInput {
|
|
5
|
-
/** N parallel sub-worker narratives, one per criterion the dispatcher
|
|
6
|
-
* fanned out. With N=1 the engine behaves as a single-narrative
|
|
7
|
-
* annotator (legacy compatibility for any non-fan-out caller). */
|
|
8
|
-
workerOutputs: Array<{
|
|
9
|
-
criterion: string;
|
|
10
|
-
narrative: string;
|
|
11
|
-
}>;
|
|
12
|
-
brief: string;
|
|
13
|
-
cwd: string;
|
|
14
|
-
route: AnnotatorRoute;
|
|
15
|
-
abortSignal?: AbortSignal;
|
|
16
|
-
deadlineMs?: number;
|
|
17
|
-
/** Forwarded to RunInput so the running-headline sink + verbose stderr
|
|
18
|
-
* show stage="Annotating" while the read-only review pass runs. */
|
|
19
|
-
bus?: import('../events/event-emitter.js').EventEmitter;
|
|
20
|
-
batchId?: string;
|
|
21
|
-
taskIndex?: number;
|
|
22
|
-
tier?: string;
|
|
23
|
-
stageLabel?: string;
|
|
24
|
-
}
|
|
25
|
-
export interface AnnotatorCallResult extends AnnotatorParseResult {
|
|
26
|
-
/** Raw assistant text from the shell run — per-tool compose_response handlers
|
|
27
|
-
* parse this via their per-tool report schema (audit, review, verify each
|
|
28
|
-
* have their own shape that does not match AnnotatedFinding). */
|
|
29
|
-
finalAssistantText: string;
|
|
30
|
-
cost: {
|
|
31
|
-
inputTokens: number;
|
|
32
|
-
outputTokens: number;
|
|
33
|
-
turnCount: number;
|
|
34
|
-
toolCallCount: number;
|
|
35
|
-
costUSD: number | null;
|
|
36
|
-
durationMs: number | null;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export declare class AnnotatorEngine {
|
|
40
|
-
private builder;
|
|
41
|
-
private parser;
|
|
42
|
-
annotate(session: Session, input: AnnotatorInput): Promise<AnnotatorCallResult>;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=annotator-engine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotator-engine.d.ts","sourceRoot":"","sources":["../../src/review/annotator-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAchG,MAAM,WAAW,cAAc;IAC7B;;uEAEmE;IACnE,aAAa,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;wEACoE;IACpE,GAAG,CAAC,EAAE,OAAO,4BAA4B,EAAE,YAAY,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D;;sEAEkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAClJ;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA2D;IAC1E,OAAO,CAAC,MAAM,CAA+B;IAEvC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAmFtF"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { AnnotatorPromptBuilder } from './annotator-prompt-builder.js';
|
|
2
|
-
import { AnnotatorOutputParser } from './annotator-output-parser.js';
|
|
3
|
-
import { HUMAN_LABEL } from '../lifecycle/stage-labels.js';
|
|
4
|
-
import { annotatorAuditTemplate } from './templates/annotator-audit.js';
|
|
5
|
-
import { annotatorReviewTemplate } from './templates/annotator-review.js';
|
|
6
|
-
import { annotatorDebugTemplate } from './templates/annotator-debug.js';
|
|
7
|
-
import { annotatorInvestigateTemplate } from './templates/annotator-investigate.js';
|
|
8
|
-
const DEFAULT_ANNOTATOR_TEMPLATES = {
|
|
9
|
-
audit: annotatorAuditTemplate,
|
|
10
|
-
review: annotatorReviewTemplate,
|
|
11
|
-
debug: annotatorDebugTemplate,
|
|
12
|
-
investigate: annotatorInvestigateTemplate,
|
|
13
|
-
};
|
|
14
|
-
/** Sentinel narrative emitted by sub-workers when their criterion has no
|
|
15
|
-
* matches in the artifact. Filtered out before merging so the annotator
|
|
16
|
-
* doesn't waste tokens parsing empty content. */
|
|
17
|
-
const NO_FINDINGS_SENTINEL = 'No findings for this criterion.';
|
|
18
|
-
export class AnnotatorEngine {
|
|
19
|
-
builder = new AnnotatorPromptBuilder(DEFAULT_ANNOTATOR_TEMPLATES);
|
|
20
|
-
parser = new AnnotatorOutputParser();
|
|
21
|
-
async annotate(session, input) {
|
|
22
|
-
// Drop "No findings for this criterion." sentinels — they're valid
|
|
23
|
-
// empty results, not findings to merge. If ALL narratives are empty
|
|
24
|
-
// sentinels, send a synthetic empty narrative so the annotator
|
|
25
|
-
// returns [] via its standard "no findings raised" path.
|
|
26
|
-
const usableOutputs = input.workerOutputs.filter(o => o.narrative.trim() !== NO_FINDINGS_SENTINEL);
|
|
27
|
-
const inputsForPrompt = usableOutputs.length > 0
|
|
28
|
-
? usableOutputs
|
|
29
|
-
: [{ criterion: 'all sub-workers reported no findings', narrative: '(all sub-worker narratives were "No findings for this criterion." — return [])' }];
|
|
30
|
-
const prompt = this.builder.build(input.route, { workerOutputs: inputsForPrompt, brief: input.brief });
|
|
31
|
-
// Per-annotator wall-clock guard. Same 10-min hard / 5-min soft pattern
|
|
32
|
-
// as the warmer + per-angle caps so the merge step can't hang the route.
|
|
33
|
-
// On hard cap, the abortSignal fires and the merge result returns with
|
|
34
|
-
// errorCode='aborted'; the parser then yields an empty findings list and
|
|
35
|
-
// the read-only route's soft-success path takes over (lifecycle returns
|
|
36
|
-
// implementer narratives even when annotator failed). Bounds total
|
|
37
|
-
// route wall: warmer (≤10) + max angle (≤10) + merge (≤10) + slack ≈ 32 min.
|
|
38
|
-
const annotatorAbort = new AbortController();
|
|
39
|
-
const combinedAbort = new AbortController();
|
|
40
|
-
if (input.abortSignal) {
|
|
41
|
-
if (input.abortSignal.aborted)
|
|
42
|
-
combinedAbort.abort();
|
|
43
|
-
else
|
|
44
|
-
input.abortSignal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
|
|
45
|
-
}
|
|
46
|
-
annotatorAbort.signal.addEventListener('abort', () => combinedAbort.abort(), { once: true });
|
|
47
|
-
let capHit = false;
|
|
48
|
-
const softTimer = setTimeout(() => {
|
|
49
|
-
input.bus?.emit({
|
|
50
|
-
event: 'criteria_annotator_soft_warning',
|
|
51
|
-
ts: new Date().toISOString(),
|
|
52
|
-
...(input.batchId !== undefined && { batchId: input.batchId }),
|
|
53
|
-
...(input.taskIndex !== undefined && { taskIndex: input.taskIndex }),
|
|
54
|
-
elapsedMs: ANNOTATOR_SOFT_WARN_MS,
|
|
55
|
-
remainingMs: ANNOTATOR_HARD_CAP_MS - ANNOTATOR_SOFT_WARN_MS,
|
|
56
|
-
});
|
|
57
|
-
}, ANNOTATOR_SOFT_WARN_MS);
|
|
58
|
-
const hardTimer = setTimeout(() => {
|
|
59
|
-
capHit = true;
|
|
60
|
-
input.bus?.emit({
|
|
61
|
-
event: 'criteria_annotator_hard_cap',
|
|
62
|
-
ts: new Date().toISOString(),
|
|
63
|
-
...(input.batchId !== undefined && { batchId: input.batchId }),
|
|
64
|
-
...(input.taskIndex !== undefined && { taskIndex: input.taskIndex }),
|
|
65
|
-
elapsedMs: ANNOTATOR_HARD_CAP_MS,
|
|
66
|
-
});
|
|
67
|
-
annotatorAbort.abort();
|
|
68
|
-
}, ANNOTATOR_HARD_CAP_MS);
|
|
69
|
-
try {
|
|
70
|
-
const turn = await session.send(`${prompt}\n\nAnnotate the findings above.`, { stageLabel: input.stageLabel ?? HUMAN_LABEL.annotating });
|
|
71
|
-
// Adapt TurnResult → the shape this engine's parser + cost
|
|
72
|
-
// extractor uses.
|
|
73
|
-
const result = {
|
|
74
|
-
finalAssistantText: turn.output,
|
|
75
|
-
errorCode: turn.errorCode,
|
|
76
|
-
usage: turn.usage,
|
|
77
|
-
turns: turn.turns,
|
|
78
|
-
toolCalls: Object.values(turn.toolCallsByName).reduce((a, b) => a + b, 0),
|
|
79
|
-
costUSD: turn.costUSD,
|
|
80
|
-
durationMs: turn.durationMs,
|
|
81
|
-
};
|
|
82
|
-
if (capHit) {
|
|
83
|
-
return {
|
|
84
|
-
finalAssistantText: '',
|
|
85
|
-
verdict: 'error',
|
|
86
|
-
annotatedFindings: [],
|
|
87
|
-
concerns: [],
|
|
88
|
-
diagnostics: { extraSections: {} },
|
|
89
|
-
cost: extractCost(result),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
const parsed = this.parser.parse({ finalAssistantText: result.finalAssistantText, errorCode: result.errorCode });
|
|
93
|
-
return { ...parsed, finalAssistantText: result.finalAssistantText ?? '', cost: extractCost(result) };
|
|
94
|
-
}
|
|
95
|
-
finally {
|
|
96
|
-
clearTimeout(softTimer);
|
|
97
|
-
clearTimeout(hardTimer);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/** Per-annotator wall-clock cap. Same constants as the warmer + per-angle
|
|
102
|
-
* caps in providers/runner-shell.ts and lifecycle/parallel-criteria-dispatcher.ts. */
|
|
103
|
-
const ANNOTATOR_HARD_CAP_MS = 10 * 60 * 1000;
|
|
104
|
-
const ANNOTATOR_SOFT_WARN_MS = 5 * 60 * 1000;
|
|
105
|
-
function extractCost(r) {
|
|
106
|
-
return {
|
|
107
|
-
inputTokens: r.usage?.inputTokens ?? 0,
|
|
108
|
-
outputTokens: r.usage?.outputTokens ?? 0,
|
|
109
|
-
turnCount: r.turns ?? 0,
|
|
110
|
-
toolCallCount: typeof r.toolCalls === 'number' ? r.toolCalls : 0,
|
|
111
|
-
costUSD: r.costUSD ?? null,
|
|
112
|
-
durationMs: r.durationMs ?? null,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=annotator-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"annotator-engine.js","sourceRoot":"","sources":["../../src/review/annotator-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAuB,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAA6B,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,2BAA2B,GAAG;IAClC,KAAK,EAAE,sBAAsB;IAC7B,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,4BAA4B;CACjC,CAAC;AAqBX;;kDAEkD;AAClD,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAU/D,MAAM,OAAO,eAAe;IAClB,OAAO,GAAG,IAAI,sBAAsB,CAAC,2BAA2B,CAAC,CAAC;IAClE,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAE7C,KAAK,CAAC,QAAQ,CAAC,OAAgB,EAAE,KAAqB;QACpD,mEAAmE;QACnE,oEAAoE;QACpE,+DAA+D;QAC/D,0DAA0D;QAC1D,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,oBAAoB,CACjD,CAAC;QACF,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;YAC9C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,sCAAsC,EAAE,SAAS,EAAE,gFAAgF,EAAE,CAAC,CAAC;QACzJ,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvG,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,mEAAmE;QACnE,6EAA6E;QAC7E,MAAM,cAAc,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,WAAW,CAAC,OAAO;gBAAE,aAAa,CAAC,KAAK,EAAE,CAAC;;gBAChD,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;gBACd,KAAK,EAAE,iCAAiC;gBACxC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpE,SAAS,EAAE,sBAAsB;gBACjC,WAAW,EAAE,qBAAqB,GAAG,sBAAsB;aAC5D,CAAC,CAAC;QACL,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;gBACd,KAAK,EAAE,6BAA6B;gBACpC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpE,SAAS,EAAE,qBAAqB;aACjC,CAAC,CAAC;YACH,cAAc,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAC7B,GAAG,MAAM,kCAAkC,EAC3C,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,EAAE,CAC3D,CAAC;YACF,2DAA2D;YAC3D,kBAAkB;YAClB,MAAM,MAAM,GAAG;gBACb,kBAAkB,EAAE,IAAI,CAAC,MAAM;gBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,kBAAkB,EAAE,EAAE;oBACtB,OAAO,EAAE,OAAO;oBAChB,iBAAiB,EAAE,EAAE;oBACrB,QAAQ,EAAE,EAAE;oBACZ,WAAW,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;oBAClC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;iBACQ,CAAC;YACtC,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACjH,OAAO,EAAE,GAAG,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACvG,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAED;uFACuF;AACvF,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7C,SAAS,WAAW,CAAC,CAAuJ;IAC1K,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;QACtC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;QACxC,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QACvB,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { AnnotatedFinding } from './review-types.js';
|
|
2
|
-
export interface AnnotatorParseResult {
|
|
3
|
-
verdict: 'annotated' | 'error';
|
|
4
|
-
annotatedFindings: AnnotatedFinding[];
|
|
5
|
-
errorReason?: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class AnnotatorOutputParser {
|
|
8
|
-
parse(input: {
|
|
9
|
-
finalAssistantText: string | undefined;
|
|
10
|
-
errorCode?: string;
|
|
11
|
-
}): AnnotatorParseResult;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=annotator-output-parser.d.ts.map
|