@zhixuan92/multi-model-agent-core 4.2.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +4 -3
- package/dist/config/schema.js.map +1 -1
- package/dist/error-codes.d.ts +1 -0
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +2 -0
- package/dist/error-codes.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +24 -20
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/identity/auth-token-store.d.ts +36 -0
- package/dist/identity/auth-token-store.d.ts.map +1 -1
- package/dist/identity/auth-token-store.js +71 -2
- package/dist/identity/auth-token-store.js.map +1 -1
- package/dist/identity/cwd-validator.d.ts.map +1 -1
- package/dist/identity/cwd-validator.js +15 -3
- package/dist/identity/cwd-validator.js.map +1 -1
- package/dist/identity/main-model-resolver.d.ts +14 -0
- package/dist/identity/main-model-resolver.d.ts.map +1 -0
- package/dist/identity/main-model-resolver.js +83 -0
- package/dist/identity/main-model-resolver.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
- package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.js +12 -14
- package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
- package/dist/intake/context-overflow-estimator.d.ts +33 -0
- package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
- package/dist/intake/context-overflow-estimator.js +36 -0
- package/dist/intake/context-overflow-estimator.js.map +1 -0
- package/dist/intake/pipeline.d.ts.map +1 -1
- package/dist/intake/pipeline.js +46 -0
- package/dist/intake/pipeline.js.map +1 -1
- package/dist/intake/plan-extractor.d.ts.map +1 -1
- package/dist/intake/plan-extractor.js +10 -1
- package/dist/intake/plan-extractor.js.map +1 -1
- package/dist/intake/types.d.ts +1 -0
- package/dist/intake/types.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.d.ts +17 -1
- package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.js +115 -2
- package/dist/lifecycle/diff-tracker.js.map +1 -1
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +106 -71
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/review-handler.js +141 -0
- package/dist/lifecycle/handlers/review-handler.js.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.js +77 -0
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +4 -0
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +12 -7
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.js +21 -1
- package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
- package/dist/lifecycle/shared-compute.d.ts +9 -0
- package/dist/lifecycle/shared-compute.d.ts.map +1 -1
- package/dist/lifecycle/shared-compute.js +35 -3
- package/dist/lifecycle/shared-compute.js.map +1 -1
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +65 -85
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +48 -0
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +17 -24
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +12 -1
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/model-profiles.json +192 -53
- package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
- package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
- package/dist/providers/anthropic-messages-adapter.js +16 -1
- package/dist/providers/anthropic-messages-adapter.js.map +1 -1
- package/dist/providers/file-tracker.d.ts +12 -0
- package/dist/providers/file-tracker.d.ts.map +1 -1
- package/dist/providers/file-tracker.js +16 -0
- package/dist/providers/file-tracker.js.map +1 -1
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +27 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-shell-types.d.ts +14 -0
- package/dist/providers/runner-shell-types.d.ts.map +1 -1
- package/dist/providers/runner-shell.d.ts.map +1 -1
- package/dist/providers/runner-shell.js +38 -6
- package/dist/providers/runner-shell.js.map +1 -1
- package/dist/providers/tool-implementations.d.ts +12 -0
- package/dist/providers/tool-implementations.d.ts.map +1 -1
- package/dist/providers/tool-implementations.js +33 -0
- package/dist/providers/tool-implementations.js.map +1 -1
- package/dist/reporting/annotate-completion-parser.d.ts +39 -0
- package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
- package/dist/reporting/annotate-completion-parser.js +43 -0
- package/dist/reporting/annotate-completion-parser.js.map +1 -0
- package/dist/reporting/compose-running-headline.d.ts +15 -1
- package/dist/reporting/compose-running-headline.d.ts.map +1 -1
- package/dist/reporting/compose-running-headline.js +76 -1
- package/dist/reporting/compose-running-headline.js.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
- package/dist/review/default-engines.d.ts.map +1 -1
- package/dist/review/default-engines.js +8 -4
- package/dist/review/default-engines.js.map +1 -1
- package/dist/review/parse-review-report.d.ts +6 -0
- package/dist/review/parse-review-report.d.ts.map +1 -0
- package/dist/review/parse-review-report.js +40 -0
- package/dist/review/parse-review-report.js.map +1 -0
- package/dist/review/reviewer-engine.d.ts +12 -3
- package/dist/review/reviewer-engine.d.ts.map +1 -1
- package/dist/review/reviewer-engine.js +4 -3
- package/dist/review/reviewer-engine.js.map +1 -1
- package/dist/review/templates/annotate-completion.d.ts +12 -0
- package/dist/review/templates/annotate-completion.d.ts.map +1 -0
- package/dist/review/templates/annotate-completion.js +72 -0
- package/dist/review/templates/annotate-completion.js.map +1 -0
- package/dist/review/templates/quality-review.d.ts +3 -0
- package/dist/review/templates/quality-review.d.ts.map +1 -0
- package/dist/review/templates/quality-review.js +40 -0
- package/dist/review/templates/quality-review.js.map +1 -0
- package/dist/review/templates/rework.d.ts +3 -0
- package/dist/review/templates/rework.d.ts.map +1 -0
- package/dist/review/templates/rework.js +42 -0
- package/dist/review/templates/rework.js.map +1 -0
- package/dist/review/templates/shared.d.ts +32 -0
- package/dist/review/templates/shared.d.ts.map +1 -1
- package/dist/review/templates/spec-review.d.ts +1 -16
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +23 -31
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/stores/context-block-project-cap.d.ts +14 -0
- package/dist/stores/context-block-project-cap.d.ts.map +1 -0
- package/dist/stores/context-block-project-cap.js +68 -0
- package/dist/stores/context-block-project-cap.js.map +1 -0
- package/dist/stores/context-block-tool.d.ts +2 -0
- package/dist/stores/context-block-tool.d.ts.map +1 -1
- package/dist/stores/context-block-tool.js +3 -2
- package/dist/stores/context-block-tool.js.map +1 -1
- package/dist/stores/file-backed-context-block-store.d.ts +8 -1
- package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
- package/dist/stores/file-backed-context-block-store.js +116 -4
- package/dist/stores/file-backed-context-block-store.js.map +1 -1
- package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
- package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-criteria.js +136 -0
- package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.js +44 -0
- package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
- package/dist/tools/audit/schema.d.ts +1 -0
- package/dist/tools/audit/schema.d.ts.map +1 -1
- package/dist/tools/audit/schema.js +6 -3
- package/dist/tools/audit/schema.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts +3 -0
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +8 -0
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
- package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/delegate/implementer-criteria.js +60 -88
- package/dist/tools/delegate/implementer-criteria.js.map +1 -1
- package/dist/tools/delegate/tool-config.js +4 -4
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
- package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.js +79 -79
- package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +23 -13
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/types/enums.d.ts +2 -2
- package/dist/types/run-result.d.ts +58 -0
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/task-spec.d.ts +14 -0
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
- package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
- package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
- package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
- package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
- package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
- package/dist/review/templates/diff-review.d.ts +0 -11
- package/dist/review/templates/diff-review.d.ts.map +0 -1
- package/dist/review/templates/diff-review.js +0 -39
- package/dist/review/templates/diff-review.js.map +0 -1
- package/dist/review/templates/quality-review-artifact.d.ts +0 -16
- package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
- package/dist/review/templates/quality-review-artifact.js +0 -46
- package/dist/review/templates/quality-review-artifact.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-diff-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/review-diff-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { LifecycleState } from '../stage-plan-types.js';
|
|
2
|
-
/**
|
|
3
|
-
* StageHandler for row 5.1 (run_verify_command).
|
|
4
|
-
*
|
|
5
|
-
* Reads from state:
|
|
6
|
-
* - state.task: TaskSpec with verifyCommand + cwd + timeoutMs
|
|
7
|
-
* - state.executionContext: timing budgets, bus, stageStats
|
|
8
|
-
* - state.verifyResult: idempotency guard — if an upstream stage already
|
|
9
|
-
* populated it (e.g., a verify-tool route running its own verification),
|
|
10
|
-
* this handler skips so verify doesn't run twice.
|
|
11
|
-
*
|
|
12
|
-
* Writes to state:
|
|
13
|
-
* - state.verifyResult: VerifyStageResult
|
|
14
|
-
* - state.stageStats: aggregated via endVerifyStage()
|
|
15
|
-
*
|
|
16
|
-
* Emits via ctx.bus:
|
|
17
|
-
* - 'verify_step' per step
|
|
18
|
-
* - 'verify_skipped' when no command or skipped
|
|
19
|
-
*
|
|
20
|
-
* The runCondition on row 5.1 (toolCategory==='artifact_producing' &&
|
|
21
|
-
* route!=='verify' && reviewPolicy!=='none' && !terminal) gates entry; once
|
|
22
|
-
* inside, the handler defensively no-ops on missing state slots.
|
|
23
|
-
*/
|
|
24
|
-
export declare function runVerifyCommandHandler(state: LifecycleState): Promise<void>;
|
|
25
|
-
//# sourceMappingURL=run-verify-command-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-verify-command-handler.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/run-verify-command-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BlF"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { runVerifyStage } from './verify-stage.js';
|
|
2
|
-
/**
|
|
3
|
-
* StageHandler for row 5.1 (run_verify_command).
|
|
4
|
-
*
|
|
5
|
-
* Reads from state:
|
|
6
|
-
* - state.task: TaskSpec with verifyCommand + cwd + timeoutMs
|
|
7
|
-
* - state.executionContext: timing budgets, bus, stageStats
|
|
8
|
-
* - state.verifyResult: idempotency guard — if an upstream stage already
|
|
9
|
-
* populated it (e.g., a verify-tool route running its own verification),
|
|
10
|
-
* this handler skips so verify doesn't run twice.
|
|
11
|
-
*
|
|
12
|
-
* Writes to state:
|
|
13
|
-
* - state.verifyResult: VerifyStageResult
|
|
14
|
-
* - state.stageStats: aggregated via endVerifyStage()
|
|
15
|
-
*
|
|
16
|
-
* Emits via ctx.bus:
|
|
17
|
-
* - 'verify_step' per step
|
|
18
|
-
* - 'verify_skipped' when no command or skipped
|
|
19
|
-
*
|
|
20
|
-
* The runCondition on row 5.1 (toolCategory==='artifact_producing' &&
|
|
21
|
-
* route!=='verify' && reviewPolicy!=='none' && !terminal) gates entry; once
|
|
22
|
-
* inside, the handler defensively no-ops on missing state slots.
|
|
23
|
-
*/
|
|
24
|
-
export async function runVerifyCommandHandler(state) {
|
|
25
|
-
// Idempotency: if a prior stage already populated verifyResult, skip so
|
|
26
|
-
// verify doesn't run twice.
|
|
27
|
-
if (state.verifyResult)
|
|
28
|
-
return;
|
|
29
|
-
const task = state.task;
|
|
30
|
-
const ctx = state.executionContext;
|
|
31
|
-
// Defensive no-op when state.task / state.executionContext aren't set.
|
|
32
|
-
if (!task || !ctx)
|
|
33
|
-
return;
|
|
34
|
-
const verifyCommand = task.verifyCommand;
|
|
35
|
-
const cwd = ctx.cwd;
|
|
36
|
-
const taskTimeoutMs = ctx.timing.timeoutMs;
|
|
37
|
-
const taskStartMs = ctx.timing.startMs;
|
|
38
|
-
const verification = await runVerifyStage({
|
|
39
|
-
cwd,
|
|
40
|
-
verifyCommand,
|
|
41
|
-
taskTimeoutMs,
|
|
42
|
-
taskStartMs,
|
|
43
|
-
});
|
|
44
|
-
state.verifyResult = verification;
|
|
45
|
-
emitVerifyEvents(ctx.bus, verification, { batchId: ctx.batchId, taskIndex: ctx.taskIndex ?? 0 });
|
|
46
|
-
// Stage stats integration deferred: endVerifyStage takes cost meter +
|
|
47
|
-
// agent info + idle stats that don't yet flow through ExecutionContext.
|
|
48
|
-
// Step 6 (terminal handlers) will fold verify outcome into stageStats once
|
|
49
|
-
// cost-rollup and idle tracking are part of the context.
|
|
50
|
-
}
|
|
51
|
-
function emitVerifyEvents(bus, verification, taskCtx) {
|
|
52
|
-
if (!bus)
|
|
53
|
-
return;
|
|
54
|
-
// verify_step / verify_skipped extend TaskBase which requires batchId
|
|
55
|
-
// and taskIndex. The 4.0.x emit was missing both — schema validation
|
|
56
|
-
// failed at emit-time and crashed the lifecycle. Surfaced only after
|
|
57
|
-
// the reviewer-parser stopped throwing on malformed reviewer output;
|
|
58
|
-
// before that, the lifecycle never reached this stage.
|
|
59
|
-
for (const step of verification.steps) {
|
|
60
|
-
bus.emit({
|
|
61
|
-
event: 'verify_step',
|
|
62
|
-
ts: new Date().toISOString(),
|
|
63
|
-
...(taskCtx.batchId !== undefined && { batchId: taskCtx.batchId }),
|
|
64
|
-
taskIndex: taskCtx.taskIndex,
|
|
65
|
-
command: step.command,
|
|
66
|
-
status: step.status,
|
|
67
|
-
...(step.exitCode !== null && { exitCode: step.exitCode }),
|
|
68
|
-
...(step.signal !== null && { signal: step.signal }),
|
|
69
|
-
durationMs: step.durationMs,
|
|
70
|
-
...(step.errorMessage !== null && { errorMessage: step.errorMessage }),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
if (verification.status === 'skipped') {
|
|
74
|
-
bus.emit({
|
|
75
|
-
event: 'verify_skipped',
|
|
76
|
-
ts: new Date().toISOString(),
|
|
77
|
-
...(taskCtx.batchId !== undefined && { batchId: taskCtx.batchId }),
|
|
78
|
-
taskIndex: taskCtx.taskIndex,
|
|
79
|
-
reason: verification.skipReason ?? 'no_command',
|
|
80
|
-
stage: 'verifying',
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=run-verify-command-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-verify-command-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/run-verify-command-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAA0B,MAAM,mBAAmB,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAqB;IACjE,wEAAwE;IACxE,4BAA4B;IAC5B,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO;IAE/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgD,CAAC;IAEnE,uEAAuE;IACvE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO;IAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAEvC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC;QACxC,GAAG;QACH,aAAa;QACb,aAAa;QACb,WAAW;KACZ,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IAElC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjG,sEAAsE;IACtE,wEAAwE;IACxE,2EAA2E;IAC3E,yDAAyD;AAC3D,CAAC;AAED,SAAS,gBAAgB,CACvB,GAA6B,EAC7B,YAA+B,EAC/B,OAA2D;IAE3D,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,sEAAsE;IACtE,qEAAqE;IACrE,qEAAqE;IACrE,qEAAqE;IACrE,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,aAAa;YACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACpD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5C,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC;YACP,KAAK,EAAE,gBAAgB;YACvB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,YAAY,CAAC,UAAU,IAAI,YAAY;YAC/C,KAAK,EAAE,WAAW;SACQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { LifecycleState } from '../stage-plan-types.js';
|
|
2
|
-
export declare const specReviewRound1Handler: (state: LifecycleState) => Promise<void>;
|
|
3
|
-
export declare const specReviewRound2Handler: (state: LifecycleState) => Promise<void>;
|
|
4
|
-
export declare const specReviewRound3Handler: (state: LifecycleState) => Promise<void>;
|
|
5
|
-
export declare const specReworkRound1Handler: (state: LifecycleState) => Promise<void>;
|
|
6
|
-
export declare const specReworkRound2Handler: (state: LifecycleState) => Promise<void>;
|
|
7
|
-
/**
|
|
8
|
-
* Settle handler (row 4.6). Reads the three round verdicts and writes
|
|
9
|
-
* state.specChainPassed.
|
|
10
|
-
*
|
|
11
|
-
* Cascade rule:
|
|
12
|
-
* - Any 'approved' verdict in the chain ⇒ chain passed (true)
|
|
13
|
-
* - 'changes_required' through round 3 ⇒ chain failed (false)
|
|
14
|
-
* - 'error' in any round ⇒ chain failed (false), state.terminal = true
|
|
15
|
-
*
|
|
16
|
-
* Runs runOnTerminal so the chain-pass slot is authoritative even on
|
|
17
|
-
* hard-fail paths. Idempotent: skips when state.specChainPassed is
|
|
18
|
-
* already populated.
|
|
19
|
-
*/
|
|
20
|
-
export declare function settleSpecChainHandler(state: LifecycleState): void;
|
|
21
|
-
//# sourceMappingURL=spec-chain-handlers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-chain-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/spec-chain-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkT7D,eAAO,MAAM,uBAAuB,UAxHkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAwHpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAzHkB,cAAc,KAAG,OAAO,CAAC,IAAI,CAyHpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UA1HkB,cAAc,KAAG,OAAO,CAAC,IAAI,CA0HpB,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAvDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAuDf,CAAC;AAChE,eAAO,MAAM,uBAAuB,UAxDa,cAAc,KAAG,OAAO,CAAC,IAAI,CAwDf,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBlE"}
|
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import { pickReviewer, pickEscalation } from '../../escalation/policy.js';
|
|
2
|
-
import { ReviewerParseError } from '../../review/reviewer-engine.js';
|
|
3
|
-
import { delegateWithEscalation } from '../../escalation/delegate-with-escalation.js';
|
|
4
|
-
import { runWithFallback, TRANSPORT_FAILURES, isReviewTransportFailure, makeSyntheticRunResult, } from '../../escalation/fallback.js';
|
|
5
|
-
import { makeSkippedReviewResult } from '../../review/skipped-result.js';
|
|
6
|
-
import { makeRunnerShell } from '../../providers/make-runner-shell.js';
|
|
7
|
-
import { mergeStageStats, replaceLastRunResultPreservingTrackers } from '../merge-stage-stats.js';
|
|
8
|
-
async function runSpecReviewRound(input) {
|
|
9
|
-
const { state, ctx, round } = input;
|
|
10
|
-
const last = state.lastRunResult;
|
|
11
|
-
if (!last)
|
|
12
|
-
return null;
|
|
13
|
-
const baseTier = ctx.assignedTier;
|
|
14
|
-
const reviewerTier = pickReviewer({ loop: 'spec', attemptIndex: round - 1, baseTier });
|
|
15
|
-
const task = state.task;
|
|
16
|
-
if (!task)
|
|
17
|
-
return null;
|
|
18
|
-
state.specUnavailable ??= new Map();
|
|
19
|
-
const specUnavailable = state.specUnavailable;
|
|
20
|
-
// Tool sweep #6: produce the cumulative diff so the reviewer sees
|
|
21
|
-
// the actual code change, not just the worker's text claim. Empty
|
|
22
|
-
// string when no diff tracker (read-only routes) or no changes.
|
|
23
|
-
let cumulativeDiff = '';
|
|
24
|
-
if (state.diffTracker) {
|
|
25
|
-
try {
|
|
26
|
-
cumulativeDiff = await state.diffTracker.cumulativeDiff();
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// Diff failures shouldn't block review. Falls back to text-only.
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const priorConcerns = Array.isArray(state.priorSpecConcerns) ? state.priorSpecConcerns : [];
|
|
33
|
-
const reviewerCall = await runWithFallback({
|
|
34
|
-
assigned: reviewerTier,
|
|
35
|
-
providerFor: (tier) => ctx.providers[tier],
|
|
36
|
-
unavailableTiers: specUnavailable,
|
|
37
|
-
isTransportFailure: (r) => isReviewTransportFailure(r),
|
|
38
|
-
getStatus: (r) => r.status,
|
|
39
|
-
makeSyntheticFailure: () => makeSkippedReviewResult('all_tiers_unavailable'),
|
|
40
|
-
call: async (provider, usedTier) => {
|
|
41
|
-
const shell = makeRunnerShell(provider);
|
|
42
|
-
const engine = ctx.reviewerEngine;
|
|
43
|
-
if (!engine)
|
|
44
|
-
throw new Error('reviewerEngine not configured');
|
|
45
|
-
try {
|
|
46
|
-
return engine.runSpec(shell, {
|
|
47
|
-
workerOutput: last.output,
|
|
48
|
-
brief: task.prompt ?? '',
|
|
49
|
-
cwd: ctx.cwd,
|
|
50
|
-
route: (state.route ?? ctx.route),
|
|
51
|
-
diff: cumulativeDiff,
|
|
52
|
-
priorConcerns,
|
|
53
|
-
abortSignal: ctx.stall.controller.signal,
|
|
54
|
-
deadlineMs: ctx.timing.deadlineMs,
|
|
55
|
-
...(ctx.bus && { bus: ctx.bus }),
|
|
56
|
-
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
57
|
-
...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
|
|
58
|
-
tier: usedTier,
|
|
59
|
-
stageLabel: 'Spec review',
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
if (err instanceof ReviewerParseError) {
|
|
64
|
-
return { verdict: 'error', concerns: [] };
|
|
65
|
-
}
|
|
66
|
-
throw err;
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
if (reviewerCall.bothUnavailable)
|
|
71
|
-
return null;
|
|
72
|
-
const out = reviewerCall.result;
|
|
73
|
-
if ('status' in out && out.status === 'skipped')
|
|
74
|
-
return null;
|
|
75
|
-
return out;
|
|
76
|
-
}
|
|
77
|
-
async function runSpecRework(input) {
|
|
78
|
-
const { state, ctx, round } = input;
|
|
79
|
-
const task = state.task;
|
|
80
|
-
if (!task)
|
|
81
|
-
return null;
|
|
82
|
-
const attemptIndex = round - 1; // rework_1 → attemptIndex 1, rework_2 → attemptIndex 2
|
|
83
|
-
const baseTier = ctx.assignedTier;
|
|
84
|
-
const decision = pickEscalation({ loop: 'spec', attemptIndex, baseTier });
|
|
85
|
-
state.specChainAttemptIndex = attemptIndex;
|
|
86
|
-
state.specUnavailable ??= new Map();
|
|
87
|
-
const specUnavailable = state.specUnavailable;
|
|
88
|
-
const reworkPrompt = (task.prompt ?? '') + '\n\n[spec rework — address the prior reviewer feedback]';
|
|
89
|
-
const reworkTask = { ...task, prompt: reworkPrompt };
|
|
90
|
-
const reworkCall = await runWithFallback({
|
|
91
|
-
assigned: decision.impl,
|
|
92
|
-
providerFor: (tier) => ctx.providers[tier],
|
|
93
|
-
unavailableTiers: specUnavailable,
|
|
94
|
-
isTransportFailure: (r) => TRANSPORT_FAILURES.has(r.status) && r.incompleteReason === undefined,
|
|
95
|
-
getStatus: (r) => r.status,
|
|
96
|
-
makeSyntheticFailure: (assigned) => makeSyntheticRunResult(assigned, 'all_tiers_unavailable'),
|
|
97
|
-
call: (provider, usedTier) => delegateWithEscalation({
|
|
98
|
-
prompt: reworkTask.prompt,
|
|
99
|
-
cwd: ctx.cwd,
|
|
100
|
-
agentType: usedTier,
|
|
101
|
-
briefQualityPolicy: 'off',
|
|
102
|
-
timeoutMs: ctx.timing.timeoutMs,
|
|
103
|
-
}, [provider], {
|
|
104
|
-
explicitlyPinned: true,
|
|
105
|
-
taskDeadlineMs: ctx.timing.deadlineMs,
|
|
106
|
-
abortSignal: ctx.stall.controller.signal,
|
|
107
|
-
assignedTier: usedTier,
|
|
108
|
-
// Without bus the rework's runner-shell.emit calls go nowhere — the
|
|
109
|
-
// implementer turns then run silently, the reviewer keeps seeing
|
|
110
|
-
// (slightly) updated code, and the chain marches through 3 rounds
|
|
111
|
-
// with no visible Implementing events. Pass the same bus + ids the
|
|
112
|
-
// initial-impl call uses so verbose stderr + the running headline
|
|
113
|
-
// surface the rework's progress.
|
|
114
|
-
...(ctx.bus && { bus: ctx.bus }),
|
|
115
|
-
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
116
|
-
...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
|
|
117
|
-
stageLabel: `Spec rework round ${round - 1}`,
|
|
118
|
-
}),
|
|
119
|
-
});
|
|
120
|
-
if (reworkCall.bothUnavailable)
|
|
121
|
-
return null;
|
|
122
|
-
const result = reworkCall.result;
|
|
123
|
-
if (result.status !== 'ok')
|
|
124
|
-
return null;
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
127
|
-
function makeSpecReviewHandler(round) {
|
|
128
|
-
const slot = `specReviewRound${round}Verdict`;
|
|
129
|
-
return async function specReviewRoundHandler(state) {
|
|
130
|
-
if (state[slot])
|
|
131
|
-
return; // idempotency
|
|
132
|
-
const ctx = state.executionContext;
|
|
133
|
-
if (!ctx)
|
|
134
|
-
return; // defensive no-op
|
|
135
|
-
const result = await runSpecReviewRound({ state, ctx, round });
|
|
136
|
-
if (!result)
|
|
137
|
-
return;
|
|
138
|
-
state[slot] = result.verdict;
|
|
139
|
-
// Tool sweep #6: accumulate concerns across rounds so the next
|
|
140
|
-
// reviewer can verify the rework addressed each one. We append
|
|
141
|
-
// unique concerns (skip duplicates from earlier rounds).
|
|
142
|
-
if (Array.isArray(result.concerns) && result.concerns.length > 0) {
|
|
143
|
-
const prior = Array.isArray(state.priorSpecConcerns) ? state.priorSpecConcerns : [];
|
|
144
|
-
const seen = new Set(prior);
|
|
145
|
-
const merged = [...prior];
|
|
146
|
-
for (const c of result.concerns) {
|
|
147
|
-
if (typeof c === 'string' && !seen.has(c)) {
|
|
148
|
-
seen.add(c);
|
|
149
|
-
merged.push(c);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
state.priorSpecConcerns = merged;
|
|
153
|
-
}
|
|
154
|
-
// Persist concerns into lastRunResult so the wire's per-stage
|
|
155
|
-
// findingsBySeverity (driven by rr.concerns) reflects what the
|
|
156
|
-
// reviewer raised — without this, findings_critical/high/medium/low
|
|
157
|
-
// for spec_review stays 0 even on changes_required outcomes.
|
|
158
|
-
persistSpecReviewConcerns(state, result);
|
|
159
|
-
// Record per-round cost so wire task.completed sums reviewer tokens
|
|
160
|
-
// and the spec_review stage entry has cumulative roundsUsed across
|
|
161
|
-
// 1..3 rounds. Reviewer tier is derived from policy (round-based).
|
|
162
|
-
const baseTier = ctx.assignedTier;
|
|
163
|
-
const reviewerTier = (round - 1 < 2)
|
|
164
|
-
? (baseTier === 'standard' ? 'complex' : 'standard')
|
|
165
|
-
: baseTier; // round 3 swaps back to base tier per SPEC_LOOP policy
|
|
166
|
-
const reviewerProvider = ctx.providers[reviewerTier];
|
|
167
|
-
mergeStageStats(state, 'spec_review', {
|
|
168
|
-
inputTokens: result.cost?.inputTokens ?? 0,
|
|
169
|
-
outputTokens: result.cost?.outputTokens ?? 0,
|
|
170
|
-
turnCount: result.cost?.turnCount ?? 0,
|
|
171
|
-
toolCallCount: result.cost?.toolCallCount ?? 0,
|
|
172
|
-
costUSD: result.cost?.costUSD ?? null,
|
|
173
|
-
durationMs: result.cost?.durationMs ?? null,
|
|
174
|
-
}, {
|
|
175
|
-
tier: reviewerTier,
|
|
176
|
-
model: reviewerProvider?.config?.model ?? null,
|
|
177
|
-
verdict: result.verdict,
|
|
178
|
-
});
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
/** Push reviewer concerns into state.lastRunResult.concerns so the wire
|
|
182
|
-
* findingsBySeverity bucket for spec_review counts them. Spec reviewer
|
|
183
|
-
* emits free-text concerns (no per-item severity), so we default to
|
|
184
|
-
* 'medium' — this matches the v3.x defaulting in event-builder. */
|
|
185
|
-
function persistSpecReviewConcerns(state, result) {
|
|
186
|
-
const last = state.lastRunResult;
|
|
187
|
-
if (!last)
|
|
188
|
-
return;
|
|
189
|
-
const reviewerConcerns = result.concerns;
|
|
190
|
-
if (!Array.isArray(reviewerConcerns) || reviewerConcerns.length === 0)
|
|
191
|
-
return;
|
|
192
|
-
const newConcerns = reviewerConcerns.map(text => ({
|
|
193
|
-
source: 'spec_review',
|
|
194
|
-
severity: 'medium',
|
|
195
|
-
message: text,
|
|
196
|
-
}));
|
|
197
|
-
last.concerns = [...(last.concerns ?? []), ...newConcerns];
|
|
198
|
-
}
|
|
199
|
-
function makeSpecReworkHandler(round) {
|
|
200
|
-
return async function specReworkHandler(state) {
|
|
201
|
-
const ctx = state.executionContext;
|
|
202
|
-
if (!ctx)
|
|
203
|
-
return;
|
|
204
|
-
const newResult = await runSpecRework({ state, ctx, round: (round + 1) });
|
|
205
|
-
if (!newResult) {
|
|
206
|
-
// The rework's implementer call did not return an ok RunResult.
|
|
207
|
-
// Don't silently fall through to the next review round — that would
|
|
208
|
-
// re-review the unchanged code and produce the "3 reviews, 0 reworks"
|
|
209
|
-
// pattern. Mark the chain failed so the next round's `!s.terminal`
|
|
210
|
-
// gate stops the cascade and settle_spec_chain can record the
|
|
211
|
-
// failure on the wire envelope.
|
|
212
|
-
state.specReworkFailed = true;
|
|
213
|
-
state.terminal = true;
|
|
214
|
-
if (ctx.verbose && typeof ctx.verboseStream === 'function') {
|
|
215
|
-
ctx.verboseStream(`[mmagent verbose] event=spec_rework_failed ts=${new Date().toISOString()} batch_id=${ctx.batchId ?? ''} task_index=${ctx.taskIndex ?? 0} round=${round}\n`);
|
|
216
|
-
}
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
// Tool sweep #6: union filesRead/filesWritten/toolCalls + preserve
|
|
220
|
-
// stageStats. Pre-fix this branch only kept stageStats and dropped
|
|
221
|
-
// file-tracker arrays — a spec-rework with 0 writes wiped the
|
|
222
|
-
// implementer's recorded write, the envelope's filesWritten went
|
|
223
|
-
// empty, and downstream qualityReviewStatus reported "no file
|
|
224
|
-
// artifacts to review" despite the file being modified on disk.
|
|
225
|
-
replaceLastRunResultPreservingTrackers(state, newResult);
|
|
226
|
-
// Record rework cost in spec_rework stage stats so wire telemetry sees
|
|
227
|
-
// it. round=1 → attemptIndex 1, round=2 → attemptIndex 2; rework tier
|
|
228
|
-
// mirrors pickEscalation (impl=standard for attemptIndex 1; impl=complex
|
|
229
|
-
// for attemptIndex 2 when baseTier=standard).
|
|
230
|
-
const baseTier = ctx.assignedTier;
|
|
231
|
-
const reworkTier = (round === 2 && baseTier === 'standard') ? 'complex' : baseTier;
|
|
232
|
-
const reworkProvider = ctx.providers[reworkTier];
|
|
233
|
-
mergeStageStats(state, 'spec_rework', {
|
|
234
|
-
inputTokens: newResult.usage?.inputTokens ?? 0,
|
|
235
|
-
outputTokens: newResult.usage?.outputTokens ?? 0,
|
|
236
|
-
cachedReadTokens: newResult.usage?.cachedReadTokens ?? 0,
|
|
237
|
-
cachedNonReadTokens: newResult.usage?.cachedNonReadTokens ?? 0,
|
|
238
|
-
turnCount: newResult.turns ?? 0,
|
|
239
|
-
toolCallCount: Array.isArray(newResult.toolCalls) ? newResult.toolCalls.length : 0,
|
|
240
|
-
costUSD: newResult.cost?.costUSD ?? null,
|
|
241
|
-
durationMs: newResult.durationMs ?? null,
|
|
242
|
-
filesReadCount: Array.isArray(newResult.filesRead) ? newResult.filesRead.length : 0,
|
|
243
|
-
filesWrittenCount: Array.isArray(newResult.filesWritten) ? newResult.filesWritten.length : 0,
|
|
244
|
-
}, {
|
|
245
|
-
tier: reworkTier,
|
|
246
|
-
model: reworkProvider?.config?.model ?? null,
|
|
247
|
-
});
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
export const specReviewRound1Handler = makeSpecReviewHandler(1);
|
|
251
|
-
export const specReviewRound2Handler = makeSpecReviewHandler(2);
|
|
252
|
-
export const specReviewRound3Handler = makeSpecReviewHandler(3);
|
|
253
|
-
export const specReworkRound1Handler = makeSpecReworkHandler(1);
|
|
254
|
-
export const specReworkRound2Handler = makeSpecReworkHandler(2);
|
|
255
|
-
/**
|
|
256
|
-
* Settle handler (row 4.6). Reads the three round verdicts and writes
|
|
257
|
-
* state.specChainPassed.
|
|
258
|
-
*
|
|
259
|
-
* Cascade rule:
|
|
260
|
-
* - Any 'approved' verdict in the chain ⇒ chain passed (true)
|
|
261
|
-
* - 'changes_required' through round 3 ⇒ chain failed (false)
|
|
262
|
-
* - 'error' in any round ⇒ chain failed (false), state.terminal = true
|
|
263
|
-
*
|
|
264
|
-
* Runs runOnTerminal so the chain-pass slot is authoritative even on
|
|
265
|
-
* hard-fail paths. Idempotent: skips when state.specChainPassed is
|
|
266
|
-
* already populated.
|
|
267
|
-
*/
|
|
268
|
-
export function settleSpecChainHandler(state) {
|
|
269
|
-
if (typeof state.specChainPassed === 'boolean')
|
|
270
|
-
return; // idempotency
|
|
271
|
-
const v1 = state.specReviewRound1Verdict;
|
|
272
|
-
const v2 = state.specReviewRound2Verdict;
|
|
273
|
-
const v3 = state.specReviewRound3Verdict;
|
|
274
|
-
if (v1 === undefined && v2 === undefined && v3 === undefined)
|
|
275
|
-
return; // defensive no-op
|
|
276
|
-
if (v1 === 'approved' || v2 === 'approved' || v3 === 'approved') {
|
|
277
|
-
state.specChainPassed = true;
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
if (v1 === 'error' || v2 === 'error' || v3 === 'error') {
|
|
281
|
-
state.specChainPassed = false;
|
|
282
|
-
state.terminal = true;
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
state.specChainPassed = false;
|
|
286
|
-
}
|
|
287
|
-
//# sourceMappingURL=spec-chain-handlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-chain-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/spec-chain-handlers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAA4B,MAAM,gCAAgC,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAC;AAyClG,KAAK,UAAU,kBAAkB,CAAC,KAAuB;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,aAAsC,CAAC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAc,GAAG,CAAC,YAAY,CAAC;IAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEvF,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,KAAK,CAAC,eAAe,KAAK,IAAI,GAAG,EAAoB,CAAC;IACtD,MAAM,eAAe,GAAmB,KAAK,CAAC,eAAe,CAAC;IAE9D,kEAAkE;IAClE,kEAAkE;IAClE,gEAAgE;IAChE,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5F,MAAM,YAAY,GAAG,MAAM,eAAe,CAA2C;QACnF,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAyB;QAC7E,gBAAgB,EAAE,eAAe;QACjC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAwB,CAAC;QAC7E,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsC,CAAC,MAAM;QAChE,oBAAoB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;QAC5E,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;YAClC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC9D,IAAI,CAAC;gBACH,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC3B,YAAY,EAAE,IAAI,CAAC,MAAM;oBACzB,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;oBACxB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAgB;oBAChD,IAAI,EAAE,cAAc;oBACpB,aAAa;oBACb,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;oBACxC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;oBACjC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;oBAChC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;oBACxD,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;oBAClE,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,aAAa;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;oBACtC,OAAO,EAAE,OAAO,EAAE,OAAgB,EAAE,QAAQ,EAAE,EAAE,EAAmC,CAAC;gBACtF,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC;IAChC,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,GAAyB,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAuB;IAClD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAA4B,CAAC;IAChD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,uDAAuD;IACvF,MAAM,QAAQ,GAAc,GAAG,CAAC,YAAY,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE1E,KAAK,CAAC,qBAAqB,GAAG,YAAY,CAAC;IAC3C,KAAK,CAAC,eAAe,KAAK,IAAI,GAAG,EAAoB,CAAC;IACtD,MAAM,eAAe,GAAmB,KAAK,CAAC,eAAe,CAAC;IAE9D,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,yDAAyD,CAAC;IACrG,MAAM,UAAU,GAAa,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAE/D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAY;QAClD,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,WAAW,EAAE,CAAC,IAAe,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAyB;QAC7E,gBAAgB,EAAE,eAAe;QACjC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS;QAC/F,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;QAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,uBAAuB,CAAC;QAC7F,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAC3B,sBAAsB,CACpB;YACE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS,EAAE,QAAQ;YACnB,kBAAkB,EAAE,KAAK;YACzB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;SAChC,EACD,CAAC,QAAQ,CAAC,EACV;YACE,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;YACrC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;YACxC,YAAY,EAAE,QAAQ;YACtB,oEAAoE;YACpE,iEAAiE;YACjE,kEAAkE;YAClE,mEAAmE;YACnE,kEAAkE;YAClE,iCAAiC;YACjC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAChC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAC1D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;YAChE,UAAU,EAAE,qBAAqB,KAAK,GAAG,CAAC,EAAE;SAC7C,CACF;KACJ,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAgB;IAC7C,MAAM,IAAI,GAAG,kBAAkB,KAAK,SAAkB,CAAC;IACvD,OAAO,KAAK,UAAU,sBAAsB,CAAC,KAAqB;QAChE,IAAI,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,cAAc;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,kBAAkB;QACpC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,+DAA+D;QAC/D,+DAA+D;QAC/D,yDAAyD;QACzD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACZ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC;QACnC,CAAC;QACD,8DAA8D;QAC9D,+DAA+D;QAC/D,oEAAoE;QACpE,6DAA6D;QAC7D,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,MAAM,QAAQ,GAAc,GAAG,CAAC,YAAY,CAAC;QAC7C,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;YACpD,CAAC,CAAC,QAAQ,CAAC,CAAC,uDAAuD;QACrE,MAAM,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACrD,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE;YACpC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,IAAI,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC;YACtC,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC;YAC9C,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;YACrC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,IAAI;SAC5C,EAAE;YACD,IAAI,EAAE,YAAY;YAClB,KAAK,EAAG,gBAAgB,EAAE,MAAyC,EAAE,KAAK,IAAI,IAAI;YAClF,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;;oEAGoE;AACpE,SAAS,yBAAyB,CAAC,KAAqB,EAAE,MAA0B;IAClF,MAAM,IAAI,GAAG,KAAK,CAAC,aAAsC,CAAC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9E,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,EAAE,aAAsB;QAC9B,QAAQ,EAAE,QAAiB;QAC3B,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAY;IACzC,OAAO,KAAK,UAAU,iBAAiB,CAAC,KAAqB;QAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAU,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,gEAAgE;YAChE,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,8DAA8D;YAC9D,gCAAgC;YAChC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC9B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC3D,GAAG,CAAC,aAAa,CACf,iDAAiD,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,GAAG,CAAC,OAAO,IAAI,EAAE,eAAe,GAAG,CAAC,SAAS,IAAI,CAAC,UAAU,KAAK,IAAI,CAC5J,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,mEAAmE;QACnE,8DAA8D;QAC9D,iEAAiE;QACjE,8DAA8D;QAC9D,gEAAgE;QAChE,sCAAsC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzD,uEAAuE;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,8CAA8C;QAC9C,MAAM,QAAQ,GAAc,GAAG,CAAC,YAAY,CAAC;QAC7C,MAAM,UAAU,GAAc,CAAC,KAAK,KAAK,CAAC,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9F,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjD,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE;YACpC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;YAC9C,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;YAChD,gBAAgB,EAAE,SAAS,CAAC,KAAK,EAAE,gBAAgB,IAAI,CAAC;YACxD,mBAAmB,EAAE,SAAS,CAAC,KAAK,EAAE,mBAAmB,IAAI,CAAC;YAC9D,SAAS,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;YAC/B,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClF,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;YACxC,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,IAAI;YACxC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC7F,EAAE;YACD,IAAI,EAAE,UAAU;YAChB,KAAK,EAAG,cAAc,EAAE,MAAyC,EAAE,KAAK,IAAI,IAAI;SACjF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,SAAS;QAAE,OAAO,CAAC,cAAc;IACtE,MAAM,EAAE,GAAG,KAAK,CAAC,uBAAuB,CAAC;IACzC,MAAM,EAAE,GAAG,KAAK,CAAC,uBAAuB,CAAC;IACzC,MAAM,EAAE,GAAG,KAAK,CAAC,uBAAuB,CAAC;IAEzC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,CAAC,kBAAkB;IAExF,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,UAAU,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QAChE,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACvD,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;QAC9B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,OAAO;IACT,CAAC;IACD,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AAChC,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ReviewTemplate } from './shared.js';
|
|
2
|
-
/**
|
|
3
|
-
* Diff reviewer — the final cross-check that looks at the cumulative
|
|
4
|
-
* diff in isolation and decides if it's acceptable as a whole.
|
|
5
|
-
*
|
|
6
|
-
* Tool sweep #6 fix: the template name was a misnomer pre-fix —
|
|
7
|
-
* the reviewer received only the worker's text summary, never the
|
|
8
|
-
* actual diff. Now it sees the diff (matches the name).
|
|
9
|
-
*/
|
|
10
|
-
export declare const diffTemplate: ReviewTemplate;
|
|
11
|
-
//# sourceMappingURL=diff-review.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff-review.d.ts","sourceRoot":"","sources":["../../../src/review/templates/diff-review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,cAgC1B,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Diff reviewer — the final cross-check that looks at the cumulative
|
|
3
|
-
* diff in isolation and decides if it's acceptable as a whole.
|
|
4
|
-
*
|
|
5
|
-
* Tool sweep #6 fix: the template name was a misnomer pre-fix —
|
|
6
|
-
* the reviewer received only the worker's text summary, never the
|
|
7
|
-
* actual diff. Now it sees the diff (matches the name).
|
|
8
|
-
*/
|
|
9
|
-
export const diffTemplate = {
|
|
10
|
-
systemPrompt: [
|
|
11
|
-
'You are reviewing the cumulative diff produced by all rework rounds. Decide whether the overall change is acceptable.',
|
|
12
|
-
'',
|
|
13
|
-
'Reply with EXACTLY one of these single-line verdicts:',
|
|
14
|
-
'- `APPROVE` — the diff is acceptable as-is.',
|
|
15
|
-
'- `CONCERNS: <one-line summary of concerns>` — the diff has flaws but is on the right track.',
|
|
16
|
-
'- `REJECT: <one-line reason>` — the diff is wrong enough that it should not be applied.',
|
|
17
|
-
'',
|
|
18
|
-
'Decision criteria:',
|
|
19
|
-
'- Is the diff scoped to what the brief asked for? Out-of-scope edits are a CONCERN at minimum.',
|
|
20
|
-
'- Are the changes internally consistent (e.g., a renamed symbol updated everywhere it appears in the diff)?',
|
|
21
|
-
'- Does the diff introduce obvious correctness or security issues that the spec/quality reviews missed?',
|
|
22
|
-
'',
|
|
23
|
-
'Do NOT re-litigate the brief itself — that is the spec reviewer\'s job. Focus on the diff as a whole.',
|
|
24
|
-
].join('\n'),
|
|
25
|
-
buildUserPrompt(ctx) {
|
|
26
|
-
const parts = [];
|
|
27
|
-
parts.push(`# Task brief\n${ctx.brief}`);
|
|
28
|
-
parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
|
|
29
|
-
if (ctx.diff && ctx.diff.length > 0) {
|
|
30
|
-
parts.push(`# Cumulative diff (what you are reviewing)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
parts.push(`# Cumulative diff\n(no file changes detected — APPROVE only if the brief requested a no-op)`);
|
|
34
|
-
}
|
|
35
|
-
parts.push(`# Decide\nReply with one of APPROVE, CONCERNS: <text>, or REJECT: <text>.`);
|
|
36
|
-
return parts.join('\n\n');
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=diff-review.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff-review.js","sourceRoot":"","sources":["../../../src/review/templates/diff-review.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,YAAY,EAAE;QACZ,uHAAuH;QACvH,EAAE;QACF,uDAAuD;QACvD,6CAA6C;QAC7C,8FAA8F;QAC9F,yFAAyF;QACzF,EAAE;QACF,oBAAoB;QACpB,gGAAgG;QAChG,6GAA6G;QAC7G,wGAAwG;QACxG,EAAE;QACF,uGAAuG;KACxG,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,6DAA6D,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;QAC5G,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAExF,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ReviewTemplate } from './shared.js';
|
|
2
|
-
/**
|
|
3
|
-
* Quality reviewer for artifact-producing routes (delegate, execute-plan,
|
|
4
|
-
* retry).
|
|
5
|
-
*
|
|
6
|
-
* Tool sweep #6: pre-fix this template only saw `Task: <brief>` +
|
|
7
|
-
* `Worker output: <text>`. Quality findings were rooted in the
|
|
8
|
-
* worker's prose claim — false positives ("the worker claimed X but
|
|
9
|
-
* didn't really") were common, and real regressions in the diff
|
|
10
|
-
* could be missed if the worker's summary glossed over them.
|
|
11
|
-
*
|
|
12
|
-
* Post-fix: reviewer sees the cumulative diff. Findings must be
|
|
13
|
-
* specific to diff lines.
|
|
14
|
-
*/
|
|
15
|
-
export declare const qualityAPTemplate: ReviewTemplate;
|
|
16
|
-
//# sourceMappingURL=quality-review-artifact.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-review-artifact.d.ts","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAsC/B,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Quality reviewer for artifact-producing routes (delegate, execute-plan,
|
|
3
|
-
* retry).
|
|
4
|
-
*
|
|
5
|
-
* Tool sweep #6: pre-fix this template only saw `Task: <brief>` +
|
|
6
|
-
* `Worker output: <text>`. Quality findings were rooted in the
|
|
7
|
-
* worker's prose claim — false positives ("the worker claimed X but
|
|
8
|
-
* didn't really") were common, and real regressions in the diff
|
|
9
|
-
* could be missed if the worker's summary glossed over them.
|
|
10
|
-
*
|
|
11
|
-
* Post-fix: reviewer sees the cumulative diff. Findings must be
|
|
12
|
-
* specific to diff lines.
|
|
13
|
-
*/
|
|
14
|
-
export const qualityAPTemplate = {
|
|
15
|
-
systemPrompt: [
|
|
16
|
-
'You are a code quality reviewer. Check whether the cumulative diff is sound, safe, and maintainable.',
|
|
17
|
-
'',
|
|
18
|
-
'Reply with a JSON block: {"verdict":"approved"|"concerns","concerns":["..."]}.',
|
|
19
|
-
'',
|
|
20
|
-
'Verdict rules:',
|
|
21
|
-
'- "approved": the diff has no quality concerns worth blocking on. The "concerns" list MUST be empty.',
|
|
22
|
-
'- "concerns": cite at least one specific concern, each tied to a specific diff line. Do not raise stylistic preferences not relevant to correctness, safety, or maintainability.',
|
|
23
|
-
'- An empty diff is "approved" (nothing to review).',
|
|
24
|
-
'',
|
|
25
|
-
'Examples of legitimate concerns: input not validated; resource not closed; race condition introduced; tests broken; new dependency introduced without justification.',
|
|
26
|
-
'Examples of out-of-scope concerns: bracket placement; comment punctuation; unrelated pre-existing code.',
|
|
27
|
-
].join('\n'),
|
|
28
|
-
buildUserPrompt(ctx) {
|
|
29
|
-
const parts = [];
|
|
30
|
-
parts.push(`# Task brief\n${ctx.brief}`);
|
|
31
|
-
if (ctx.priorConcerns && ctx.priorConcerns.length > 0) {
|
|
32
|
-
parts.push(`# Prior reviewer concerns from earlier rounds in this chain\nVerify the rework has addressed each one:\n` +
|
|
33
|
-
ctx.priorConcerns.map((c, i) => `${i + 1}. ${c}`).join('\n'));
|
|
34
|
-
}
|
|
35
|
-
parts.push(`# Worker's most recent summary\n${ctx.workerOutput || '(no summary)'}`);
|
|
36
|
-
if (ctx.diff && ctx.diff.length > 0) {
|
|
37
|
-
parts.push(`# Cumulative diff (the truth of what changed)\n\n\`\`\`diff\n${ctx.diff}\n\`\`\``);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
parts.push(`# Cumulative diff\n(no file changes detected — verdict should be "approved")`);
|
|
41
|
-
}
|
|
42
|
-
parts.push(`# Decide\nIs the cumulative diff sound, safe, and maintainable? Reply with the JSON block specified in the system prompt.`);
|
|
43
|
-
return parts.join('\n\n');
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=quality-review-artifact.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality-review-artifact.js","sourceRoot":"","sources":["../../../src/review/templates/quality-review-artifact.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,YAAY,EAAE;QACZ,sGAAsG;QACtG,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,gBAAgB;QAChB,sGAAsG;QACtG,kLAAkL;QAClL,oDAAoD;QACpD,EAAE;QACF,sKAAsK;QACtK,yGAAyG;KAC1G,CAAC,IAAI,CAAC,IAAI,CAAC;IAEZ,eAAe,CAAC,GAAG;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAEzC,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,0GAA0G;gBAC1G,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,YAAY,IAAI,cAAc,EAAE,CAAC,CAAC;QAEpF,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,gEAAgE,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC7F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,2HAA2H,CAAC,CAAC;QAExI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|