@zhixuan92/multi-model-agent-core 4.2.1 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/config/schema.d.ts +3 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/error-codes.d.ts +1 -0
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +2 -0
- package/dist/error-codes.js.map +1 -1
- package/dist/events/running-headline-sink.d.ts.map +1 -1
- package/dist/events/running-headline-sink.js +47 -7
- package/dist/events/running-headline-sink.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +24 -20
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/identity/auth-token-store.d.ts +36 -0
- package/dist/identity/auth-token-store.d.ts.map +1 -1
- package/dist/identity/auth-token-store.js +71 -2
- package/dist/identity/auth-token-store.js.map +1 -1
- package/dist/identity/cwd-validator.d.ts.map +1 -1
- package/dist/identity/cwd-validator.js +15 -3
- package/dist/identity/cwd-validator.js.map +1 -1
- package/dist/identity/main-model-resolver.d.ts +14 -0
- package/dist/identity/main-model-resolver.d.ts.map +1 -0
- package/dist/identity/main-model-resolver.js +83 -0
- package/dist/identity/main-model-resolver.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.d.ts +10 -11
- package/dist/intake/brief-compiler-slots/delegate.d.ts.map +1 -1
- package/dist/intake/brief-compiler-slots/delegate.js +12 -14
- package/dist/intake/brief-compiler-slots/delegate.js.map +1 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js +3 -1
- package/dist/intake/brief-compiler-slots/execute-plan.js.map +1 -1
- package/dist/intake/context-overflow-estimator.d.ts +33 -0
- package/dist/intake/context-overflow-estimator.d.ts.map +1 -0
- package/dist/intake/context-overflow-estimator.js +36 -0
- package/dist/intake/context-overflow-estimator.js.map +1 -0
- package/dist/intake/pipeline.d.ts.map +1 -1
- package/dist/intake/pipeline.js +46 -0
- package/dist/intake/pipeline.js.map +1 -1
- package/dist/intake/plan-extractor.d.ts.map +1 -1
- package/dist/intake/plan-extractor.js +10 -1
- package/dist/intake/plan-extractor.js.map +1 -1
- package/dist/intake/types.d.ts +1 -0
- package/dist/intake/types.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.d.ts +17 -1
- package/dist/lifecycle/diff-tracker.d.ts.map +1 -1
- package/dist/lifecycle/diff-tracker.js +115 -2
- package/dist/lifecycle/diff-tracker.js.map +1 -1
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts +9 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js +171 -0
- package/dist/lifecycle/handlers/annotate-completion-handler.js.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js +67 -0
- package/dist/lifecycle/handlers/annotate-criteria-handler.js.map +1 -0
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +152 -65
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts +21 -0
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +1 -0
- package/dist/lifecycle/handlers/files-written-cross-check.js +85 -0
- package/dist/lifecycle/handlers/files-written-cross-check.js.map +1 -0
- package/dist/lifecycle/handlers/review-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/review-handler.js +141 -0
- package/dist/lifecycle/handlers/review-handler.js.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts +3 -0
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -0
- package/dist/lifecycle/handlers/rework-handler.js +77 -0
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -0
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +16 -3
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +4 -0
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +12 -7
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts +1 -1
- package/dist/lifecycle/parallel-criteria-routes.d.ts.map +1 -1
- package/dist/lifecycle/parallel-criteria-routes.js +21 -1
- package/dist/lifecycle/parallel-criteria-routes.js.map +1 -1
- package/dist/lifecycle/shared-compute.d.ts +9 -0
- package/dist/lifecycle/shared-compute.d.ts.map +1 -1
- package/dist/lifecycle/shared-compute.js +35 -3
- package/dist/lifecycle/shared-compute.js.map +1 -1
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +65 -85
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +48 -0
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +17 -24
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +12 -1
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/model-profiles.json +192 -53
- package/dist/providers/anthropic-messages-adapter.d.ts +8 -0
- package/dist/providers/anthropic-messages-adapter.d.ts.map +1 -1
- package/dist/providers/anthropic-messages-adapter.js +16 -1
- package/dist/providers/anthropic-messages-adapter.js.map +1 -1
- package/dist/providers/file-tracker.d.ts +33 -0
- package/dist/providers/file-tracker.d.ts.map +1 -1
- package/dist/providers/file-tracker.js +54 -0
- package/dist/providers/file-tracker.js.map +1 -1
- package/dist/providers/provider-factory.d.ts.map +1 -1
- package/dist/providers/provider-factory.js +27 -2
- package/dist/providers/provider-factory.js.map +1 -1
- package/dist/providers/runner-shell-types.d.ts +14 -0
- package/dist/providers/runner-shell-types.d.ts.map +1 -1
- package/dist/providers/runner-shell.d.ts.map +1 -1
- package/dist/providers/runner-shell.js +103 -26
- package/dist/providers/runner-shell.js.map +1 -1
- package/dist/providers/tool-implementations.d.ts +12 -0
- package/dist/providers/tool-implementations.d.ts.map +1 -1
- package/dist/providers/tool-implementations.js +33 -0
- package/dist/providers/tool-implementations.js.map +1 -1
- package/dist/reporting/annotate-completion-parser.d.ts +39 -0
- package/dist/reporting/annotate-completion-parser.d.ts.map +1 -0
- package/dist/reporting/annotate-completion-parser.js +43 -0
- package/dist/reporting/annotate-completion-parser.js.map +1 -0
- package/dist/reporting/compose-running-headline.d.ts +15 -1
- package/dist/reporting/compose-running-headline.d.ts.map +1 -1
- package/dist/reporting/compose-running-headline.js +76 -1
- package/dist/reporting/compose-running-headline.js.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +1 -1
- package/dist/review/default-engines.d.ts.map +1 -1
- package/dist/review/default-engines.js +8 -4
- package/dist/review/default-engines.js.map +1 -1
- package/dist/review/parse-review-report.d.ts +6 -0
- package/dist/review/parse-review-report.d.ts.map +1 -0
- package/dist/review/parse-review-report.js +40 -0
- package/dist/review/parse-review-report.js.map +1 -0
- package/dist/review/reviewer-engine.d.ts +12 -3
- package/dist/review/reviewer-engine.d.ts.map +1 -1
- package/dist/review/reviewer-engine.js +4 -3
- package/dist/review/reviewer-engine.js.map +1 -1
- package/dist/review/templates/annotate-completion.d.ts +12 -0
- package/dist/review/templates/annotate-completion.d.ts.map +1 -0
- package/dist/review/templates/annotate-completion.js +72 -0
- package/dist/review/templates/annotate-completion.js.map +1 -0
- package/dist/review/templates/quality-review.d.ts +3 -0
- package/dist/review/templates/quality-review.d.ts.map +1 -0
- package/dist/review/templates/quality-review.js +40 -0
- package/dist/review/templates/quality-review.js.map +1 -0
- package/dist/review/templates/rework.d.ts +3 -0
- package/dist/review/templates/rework.d.ts.map +1 -0
- package/dist/review/templates/rework.js +42 -0
- package/dist/review/templates/rework.js.map +1 -0
- package/dist/review/templates/shared.d.ts +32 -0
- package/dist/review/templates/shared.d.ts.map +1 -1
- package/dist/review/templates/spec-review.d.ts +1 -16
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +23 -31
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/stores/context-block-project-cap.d.ts +14 -0
- package/dist/stores/context-block-project-cap.d.ts.map +1 -0
- package/dist/stores/context-block-project-cap.js +68 -0
- package/dist/stores/context-block-project-cap.js.map +1 -0
- package/dist/stores/context-block-tool.d.ts +2 -0
- package/dist/stores/context-block-tool.d.ts.map +1 -1
- package/dist/stores/context-block-tool.js +3 -2
- package/dist/stores/context-block-tool.js.map +1 -1
- package/dist/stores/file-backed-context-block-store.d.ts +8 -1
- package/dist/stores/file-backed-context-block-store.d.ts.map +1 -1
- package/dist/stores/file-backed-context-block-store.js +118 -6
- package/dist/stores/file-backed-context-block-store.js.map +1 -1
- package/dist/tools/audit/plan-audit-criteria.d.ts +35 -0
- package/dist/tools/audit/plan-audit-criteria.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-criteria.js +136 -0
- package/dist/tools/audit/plan-audit-criteria.js.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts +15 -0
- package/dist/tools/audit/plan-audit-verdict.d.ts.map +1 -0
- package/dist/tools/audit/plan-audit-verdict.js +44 -0
- package/dist/tools/audit/plan-audit-verdict.js.map +1 -0
- package/dist/tools/audit/schema.d.ts +1 -0
- package/dist/tools/audit/schema.d.ts.map +1 -1
- package/dist/tools/audit/schema.js +6 -3
- package/dist/tools/audit/schema.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts +3 -0
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +8 -0
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/delegate/implementer-criteria.d.ts +31 -47
- package/dist/tools/delegate/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/delegate/implementer-criteria.js +60 -88
- package/dist/tools/delegate/implementer-criteria.js.map +1 -1
- package/dist/tools/delegate/tool-config.js +4 -4
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.d.ts +42 -37
- package/dist/tools/execute-plan/implementer-criteria.d.ts.map +1 -1
- package/dist/tools/execute-plan/implementer-criteria.js +79 -79
- package/dist/tools/execute-plan/implementer-criteria.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +23 -13
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/enums.d.ts +2 -2
- package/dist/types/run-result.d.ts +71 -0
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/task-spec.d.ts +14 -0
- package/dist/types/task-spec.d.ts.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts +0 -22
- package/dist/lifecycle/handlers/quality-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/quality-chain-handlers.js +0 -369
- package/dist/lifecycle/handlers/quality-chain-handlers.js.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.d.ts +0 -31
- package/dist/lifecycle/handlers/review-diff-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/review-diff-handler.js +0 -168
- package/dist/lifecycle/handlers/review-diff-handler.js.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts +0 -25
- package/dist/lifecycle/handlers/run-verify-command-handler.d.ts.map +0 -1
- package/dist/lifecycle/handlers/run-verify-command-handler.js +0 -84
- package/dist/lifecycle/handlers/run-verify-command-handler.js.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts +0 -21
- package/dist/lifecycle/handlers/spec-chain-handlers.d.ts.map +0 -1
- package/dist/lifecycle/handlers/spec-chain-handlers.js +0 -287
- package/dist/lifecycle/handlers/spec-chain-handlers.js.map +0 -1
- package/dist/review/templates/diff-review.d.ts +0 -11
- package/dist/review/templates/diff-review.d.ts.map +0 -1
- package/dist/review/templates/diff-review.js +0 -39
- package/dist/review/templates/diff-review.js.map +0 -1
- package/dist/review/templates/quality-review-artifact.d.ts +0 -16
- package/dist/review/templates/quality-review-artifact.d.ts.map +0 -1
- package/dist/review/templates/quality-review-artifact.js +0 -46
- package/dist/review/templates/quality-review-artifact.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { delegateWithEscalation } from '../../escalation/delegate-with-escalation.js';
|
|
2
|
+
import { replaceLastRunResultPreservingTrackers } from '../merge-stage-stats.js';
|
|
3
|
+
import { reworkTemplate } from '../../review/templates/rework.js';
|
|
4
|
+
export async function reworkHandler(state) {
|
|
5
|
+
if (state.terminal)
|
|
6
|
+
return;
|
|
7
|
+
if (state.reworkApplied !== undefined || state.reworkError !== undefined)
|
|
8
|
+
return;
|
|
9
|
+
if (state.reviewVerdict !== 'changes_required')
|
|
10
|
+
return;
|
|
11
|
+
const ctx = state.executionContext;
|
|
12
|
+
const task = state.task;
|
|
13
|
+
const last = state.lastRunResult;
|
|
14
|
+
if (!ctx || !task || !last)
|
|
15
|
+
return;
|
|
16
|
+
const findings = state.reviewFindings ?? [];
|
|
17
|
+
if (findings.length === 0) {
|
|
18
|
+
state.reworkApplied = false;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let cumulativeDiff = '';
|
|
22
|
+
if (state.diffTracker) {
|
|
23
|
+
try {
|
|
24
|
+
cumulativeDiff = await state.diffTracker.cumulativeDiff();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
cumulativeDiff = '';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const reworkTier = 'complex';
|
|
31
|
+
const provider = ctx.providers[reworkTier];
|
|
32
|
+
if (!provider) {
|
|
33
|
+
state.reworkError = `no provider available for tier ${reworkTier}`;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const concerns = findings.map(f => `[${f.source}] ${f.text}`);
|
|
37
|
+
const promptCtx = {
|
|
38
|
+
brief: task.prompt ?? '',
|
|
39
|
+
workerOutput: last.output ?? '',
|
|
40
|
+
diff: cumulativeDiff,
|
|
41
|
+
planContext: task.planContext,
|
|
42
|
+
priorConcerns: concerns,
|
|
43
|
+
};
|
|
44
|
+
const fullPrompt = reworkTemplate.systemPrompt + '\n\n' + reworkTemplate.buildUserPrompt(promptCtx);
|
|
45
|
+
let result;
|
|
46
|
+
try {
|
|
47
|
+
result = await delegateWithEscalation({
|
|
48
|
+
prompt: fullPrompt,
|
|
49
|
+
cwd: ctx.cwd,
|
|
50
|
+
agentType: reworkTier,
|
|
51
|
+
briefQualityPolicy: 'off',
|
|
52
|
+
timeoutMs: ctx.timing.timeoutMs,
|
|
53
|
+
tools: 'full',
|
|
54
|
+
}, [provider], {
|
|
55
|
+
explicitlyPinned: true,
|
|
56
|
+
taskDeadlineMs: ctx.timing.deadlineMs,
|
|
57
|
+
abortSignal: ctx.stall.controller.signal,
|
|
58
|
+
assignedTier: reworkTier,
|
|
59
|
+
...(ctx.bus && { bus: ctx.bus }),
|
|
60
|
+
...(ctx.batchId !== undefined && { batchId: ctx.batchId }),
|
|
61
|
+
...(ctx.taskIndex !== undefined && { taskIndex: ctx.taskIndex }),
|
|
62
|
+
stageLabel: 'Rework',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
state.reworkError = err instanceof Error ? err.message : String(err);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (result.status !== 'ok') {
|
|
70
|
+
state.reworkError = `rework returned status: ${result.status}`;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
state.reworkApplied = true;
|
|
74
|
+
state.reworkOutput = result.output;
|
|
75
|
+
replaceLastRunResultPreservingTrackers(state, result);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=rework-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rework-handler.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/rework-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkC7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAqBxE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"terminal-handlers.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkC7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAqBxE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAyHnE;AAMD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAkBzE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAoCtE;AAqED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhF"}
|
|
@@ -42,12 +42,16 @@ export function emitTaskTerminalHandler(state) {
|
|
|
42
42
|
let outputTokens = 0;
|
|
43
43
|
let cachedReadTokens = 0;
|
|
44
44
|
let cachedNonReadTokens = 0;
|
|
45
|
-
let totalCostUSD = null;
|
|
46
45
|
let toolCallsTotal = 0;
|
|
47
46
|
let turnsTotal = 0;
|
|
48
47
|
let filesReadTotal = 0;
|
|
49
48
|
let filesWrittenTotal = 0;
|
|
50
49
|
const ss = last?.stageStats;
|
|
50
|
+
// A11.2: compute actualCostUSD as the sum of every stage's costUSD.
|
|
51
|
+
// costUSD and totalCostUSD are back-compat aliases for the same value.
|
|
52
|
+
// costDeltaVsMainUSD comes from the top-level cost field on RunResult.
|
|
53
|
+
let actualCostUSD = null;
|
|
54
|
+
let costDeltaVsMainUSD = null;
|
|
51
55
|
if (ss) {
|
|
52
56
|
for (const stage of Object.values(ss)) {
|
|
53
57
|
if (!stage || !stage['entered'])
|
|
@@ -62,9 +66,10 @@ export function emitTaskTerminalHandler(state) {
|
|
|
62
66
|
filesWrittenTotal += stage['filesWrittenCount'] ?? 0;
|
|
63
67
|
const stageCost = stage['costUSD'];
|
|
64
68
|
if (stageCost !== null && stageCost !== undefined) {
|
|
65
|
-
|
|
69
|
+
actualCostUSD = (actualCostUSD ?? 0) + stageCost;
|
|
66
70
|
}
|
|
67
71
|
}
|
|
72
|
+
costDeltaVsMainUSD = last?.cost?.costDeltaVsMainUSD ?? null;
|
|
68
73
|
}
|
|
69
74
|
// Fallback to last.usage when stageStats wasn't populated (legacy paths).
|
|
70
75
|
if (inputTokens === 0 && outputTokens === 0 && last?.usage) {
|
|
@@ -123,7 +128,15 @@ export function emitTaskTerminalHandler(state) {
|
|
|
123
128
|
outputTokens,
|
|
124
129
|
cachedReadTokens,
|
|
125
130
|
cachedNonReadTokens,
|
|
126
|
-
|
|
131
|
+
// A11.2 — populate the full cost surface on the task_completed envelope.
|
|
132
|
+
// actualCostUSD is the new canonical field (sum of every stage's costUSD).
|
|
133
|
+
// costUSD and totalCostUSD are back-compat aliases — emit all three so
|
|
134
|
+
// existing callers and new callers both get the value they expect.
|
|
135
|
+
// costDeltaVsMainUSD: delta vs estimated main-tier cost (from CostBreakdown).
|
|
136
|
+
actualCostUSD,
|
|
137
|
+
costUSD: actualCostUSD,
|
|
138
|
+
totalCostUSD: actualCostUSD,
|
|
139
|
+
costDeltaVsMainUSD,
|
|
127
140
|
taskMaxIdleMs: null,
|
|
128
141
|
stallTriggered: false,
|
|
129
142
|
stages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AA+B1E,MAAM,UAAU,4BAA4B,CAAC,KAAqB;IAChE,IAAI,KAAK,CAAC,eAAe;QAAE,OAAO;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,gBAEL,CAAC;IACd,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,IAAI,GAAG,KAAK,CAAC,aAAsC,CAAC;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,MAAM,EAAE,GAAG,YAAY,UAAU,EAAE,EAAE,CAAC;IACtC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACpC,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,8DAA8D;QAChE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAqB;IAC3D,IAAI,KAAK,CAAC,mBAAmB;QAAE,OAAO;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC,iDAAiD;QACnF,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAsC,CAAC;IAE1D,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,gEAAgE;IAChE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,
|
|
1
|
+
{"version":3,"file":"terminal-handlers.js","sourceRoot":"","sources":["../../../src/lifecycle/handlers/terminal-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Provider, TaskSpec, MultiModelConfig, AgentType } from '../types.js';
|
|
2
2
|
import type { EventEmitter } from '../events/event-emitter.js';
|
|
3
3
|
import type { ActivityTracker, HeartbeatTickInfo } from '../bounded-execution/activity-tracker.js';
|
|
4
|
+
import type { WallClockGuard } from '../bounded-execution/wall-clock-guard.js';
|
|
4
5
|
import type { CanonicalIdentity } from '../config/canonical-model-identity.js';
|
|
5
6
|
import type { HttpServerLog } from '../events/http-server-log.js';
|
|
6
7
|
import type { ProjectContext } from '../stores/project-context-registry.js';
|
|
@@ -43,6 +44,9 @@ export interface ExecutionContext {
|
|
|
43
44
|
budgets: {
|
|
44
45
|
maxCostUSD: number | undefined;
|
|
45
46
|
};
|
|
47
|
+
/** Wall-clock budget guard. Throws GuardError once budgetMs since task start
|
|
48
|
+
* is exceeded. Stage entries + tool-call boundaries call checkOrThrow(). */
|
|
49
|
+
wallClockGuard: WallClockGuard;
|
|
46
50
|
stall: {
|
|
47
51
|
controller: AbortController;
|
|
48
52
|
/** ms timestamp of the most recent runner event; updated by markRunnerEvent. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-context.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAE/B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,oIAAoI;IACpI,YAAY,EAAE,SAAS,CAAC;IACxB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,iHAAiH;IACjH,kBAAkB,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,uFAAuF;IACvF,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAGnD,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle-context.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAE/B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,oIAAoI;IACpI,YAAY,EAAE,SAAS,CAAC;IACxB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,iHAAiH;IACjH,kBAAkB,EAAE,QAAQ,GAAG,SAAS,CAAC;IACzC,uFAAuF;IACvF,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD,mBAAmB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAGnD,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CAAC;IAEF;iFAC6E;IAC7E,cAAc,EAAE,cAAc,CAAC;IAG/B,KAAK,EAAE;QACL,UAAU,EAAE,eAAe,CAAC;QAC5B,gFAAgF;QAChF,aAAa,EAAE,MAAM,CAAC;QACtB,4DAA4D;QAC5D,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IAGF,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEvC,yFAAyF;IACzF,0BAA0B,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAGtF,GAAG,EAAE,YAAY,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,8EAA8E;IAC9E,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,uDAAuD;IACvD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEpD,mFAAmF;IACnF,QAAQ,CAAC,EAAE;QACT,mBAAmB,EAAE,CAAC,MAAM,EAAE;YAC5B,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,QAAQ,CAAC;YACnB,SAAS,EAAE,OAAO,aAAa,EAAE,SAAS,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC;YAC9D,oBAAoB,CAAC,EAAE,OAAO,CAAC;SAChC,KAAK,IAAI,CAAC;KACZ,CAAC;IAGF,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,+FAA+F;IAC/F,cAAc,CAAC,EAAE,OAAO,8BAA8B,EAAE,cAAc,CAAC;IACvE,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,+BAA+B,EAAE,eAAe,CAAC;IAG1E,qFAAqF;IACrF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-driver.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle-driver.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3E,qBAAa,eAAe;IACd,OAAO,CAAC,IAAI;IAAa,OAAO,CAAC,QAAQ;gBAAjC,IAAI,EAAE,SAAS,EAAU,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAE7E,GAAG,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;CAqBjE"}
|
|
@@ -8,13 +8,6 @@ export class LifecycleDriver {
|
|
|
8
8
|
async run(initialState) {
|
|
9
9
|
const state = initialState;
|
|
10
10
|
for (const row of this.plan.rows) {
|
|
11
|
-
// Rows marked runOnTerminal still evaluate their runCondition even
|
|
12
|
-
// after a prior row set state.terminal=true. This is how settle_*_chain,
|
|
13
|
-
// compose_response, register_terminal_block, emit_task_terminal,
|
|
14
|
-
// persist_to_batch_registry, and flush_telemetry continue to fire on
|
|
15
|
-
// hard-fail paths so chain-pass slots, response envelopes, and
|
|
16
|
-
// telemetry stay authoritative. Non-runOnTerminal rows are skipped
|
|
17
|
-
// (continue, not break) so later runOnTerminal rows still fire.
|
|
18
11
|
if (state.terminal && !row.runOnTerminal)
|
|
19
12
|
continue;
|
|
20
13
|
if (!row.runCondition(state))
|
|
@@ -22,6 +15,18 @@ export class LifecycleDriver {
|
|
|
22
15
|
const handler = this.handlers[row.handlerKey];
|
|
23
16
|
if (!handler)
|
|
24
17
|
throw new Error(`no handler registered for key '${row.handlerKey}'`);
|
|
18
|
+
const ctx = state.executionContext;
|
|
19
|
+
if (ctx && !row.runOnTerminal) {
|
|
20
|
+
try {
|
|
21
|
+
ctx.wallClockGuard.checkOrThrow();
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
state.terminal = true;
|
|
25
|
+
state.errorCode = err.errorCode ?? 'guard_wall_clock';
|
|
26
|
+
state.error = err instanceof Error ? err.message : String(err);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
25
30
|
await handler(state);
|
|
26
31
|
}
|
|
27
32
|
return state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle-driver.js","sourceRoot":"","sources":["../../src/lifecycle/lifecycle-driver.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,eAAe;IACN;IAAyB;IAA7C,YAAoB,IAAe,EAAU,QAAsC;QAA/D,SAAI,GAAJ,IAAI,CAAW;QAAU,aAAQ,GAAR,QAAQ,CAA8B;IAAG,CAAC;IAEvF,KAAK,CAAC,GAAG,CAAC,YAA4B;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,SAAS;YACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,SAAS;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnF,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgD,CAAC;YACnE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;gBAAC,CAAC;gBAC1C,OAAO,GAAG,EAAE,CAAC;oBACX,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,KAAgC,CAAC,SAAS,GAAI,GAA8B,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAC7G,KAA4B,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvF,SAAS;gBACX,CAAC;YACH,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CriterionEntry } from '../tools/criteria-types.js';
|
|
2
2
|
import { type CachedPrefixTarget } from '../tools/parallel-criteria-prompt.js';
|
|
3
|
-
export type ReadOnlyRouteName = 'audit' | 'review' | 'verify' | 'debug' | 'investigate';
|
|
3
|
+
export type ReadOnlyRouteName = 'audit' | 'audit_plan' | 'review' | 'verify' | 'debug' | 'investigate';
|
|
4
4
|
export interface ReadOnlyRouteSpec {
|
|
5
5
|
criteria: readonly CriterionEntry[];
|
|
6
6
|
buildPrefix: (target: CachedPrefixTarget) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-criteria-routes.d.ts","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"parallel-criteria-routes.d.ts","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,sCAAsC,CAAC;AAoB9C,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AA+IvG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IACpC,WAAW,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,MAAM,CAAC;IACpD,WAAW,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC;CACpD;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAczB,CAAC;AAElD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAEzE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { buildReadOnlyCachedPrefix, buildReadOnlyCriterionSuffix, } from '../tools/parallel-criteria-prompt.js';
|
|
2
2
|
import { AUDIT_PURPOSE_ORIENTATION, EVIDENCE_RULE_AUDIT, SCOPE_RULE_AUDIT, ANNOTATOR_AWARENESS_AUDIT, AUDIT_CRITERIA, } from '../tools/audit/implementer-criteria.js';
|
|
3
|
+
import { PLAN_AUDIT_PURPOSE_ORIENTATION, EVIDENCE_RULE_PLAN_AUDIT, SCOPE_RULE_PLAN_AUDIT, ANNOTATOR_AWARENESS_PLAN_AUDIT, PLAN_AUDIT_CRITERIA, } from '../tools/audit/plan-audit-criteria.js';
|
|
3
4
|
import { REVIEW_PURPOSE_ORIENTATION, EVIDENCE_RULE_REVIEW, SCOPE_RULE_REVIEW, ANNOTATOR_AWARENESS_REVIEW, REVIEW_CRITERIA, } from '../tools/review/implementer-criteria.js';
|
|
4
5
|
import { VERIFY_PURPOSE_ORIENTATION, EVIDENCE_RULE_VERIFY, SCOPE_RULE_VERIFY, ANNOTATOR_AWARENESS_VERIFY, VERIFY_CRITERIA, } from '../tools/verify/implementer-criteria.js';
|
|
5
6
|
import { DEBUG_PURPOSE_ORIENTATION, EVIDENCE_RULE_DEBUG, SCOPE_RULE_DEBUG, ANNOTATOR_AWARENESS_DEBUG, DEBUG_CRITERIA, } from '../tools/debug/implementer-criteria.js';
|
|
@@ -37,6 +38,18 @@ const ROUTE_SEMANTICS = {
|
|
|
37
38
|
},
|
|
38
39
|
mustEmitAtLeastOne: false,
|
|
39
40
|
},
|
|
41
|
+
audit_plan: {
|
|
42
|
+
goalLine: 'Apply THIS verification perspective to every task in the plan above. Each finding is a plan-vs-codebase coherence issue grounded in real file:line evidence. Verify before flagging — use read_file / grep to inspect the source files the plan names.',
|
|
43
|
+
emptyOutcomeLine: 'If your perspective finds no plan-vs-codebase drift after grounding in the actual source files, respond with the literal text "No findings for this criterion." — that is the EXPECTED outcome on a clean plan. Do NOT pad with prose-quality observations (those belong in auditType=default, not here).',
|
|
44
|
+
findingMeaningParagraph: 'A finding is a CONCRETE PLAN-VS-CODEBASE DRIFT viewed through this perspective: the plan names a symbol / path / signature / import / test helper / verify command / cross-task dependency that the actual codebase does not match. Title = "<task ID>: <one-line drift>". Severity reflects whether the task can dispatch.',
|
|
45
|
+
severityMeanings: {
|
|
46
|
+
critical: 'plan would BLOCK dispatch — e.g. wrong method name (perspective 2), missing modify-target file (perspective 1), wrong signature (perspective 3), missing module export (perspective 4), out-of-order task dependency (perspective 7), wrong tooling (perspective 8). A literal worker freezes on this.',
|
|
47
|
+
high: 'load-bearing ambiguity — multiple matching symbols and the plan does not disambiguate, OR test harness missing in claimed shape, OR step depends on later step recoverably. Task may execute but produces an ambiguous artifact.',
|
|
48
|
+
medium: 'step ordering inferable but undeclared, cross-task dependency unstated, verify command vague but recoverable, missing parent dirs for create-targets. Fixable by reordering or adding a sentence; doesn\'t block dispatch.',
|
|
49
|
+
low: 'cosmetic — naming preference, missing metadata, minor cross-reference. Does not affect executability.',
|
|
50
|
+
},
|
|
51
|
+
mustEmitAtLeastOne: false,
|
|
52
|
+
},
|
|
40
53
|
review: {
|
|
41
54
|
goalLine: 'Find ALL issues of THIS specific kind in the diff / source above.',
|
|
42
55
|
emptyOutcomeLine: 'If none exist, respond with the literal text "No findings for this criterion." — that is a fully valid outcome. Do NOT pad to avoid returning empty.',
|
|
@@ -94,6 +107,13 @@ const ROUTE_BLOCKS = {
|
|
|
94
107
|
annotatorAwareness: ANNOTATOR_AWARENESS_AUDIT,
|
|
95
108
|
criteria: AUDIT_CRITERIA,
|
|
96
109
|
},
|
|
110
|
+
audit_plan: {
|
|
111
|
+
orientation: PLAN_AUDIT_PURPOSE_ORIENTATION,
|
|
112
|
+
evidenceRule: EVIDENCE_RULE_PLAN_AUDIT,
|
|
113
|
+
scopeRule: SCOPE_RULE_PLAN_AUDIT,
|
|
114
|
+
annotatorAwareness: ANNOTATOR_AWARENESS_PLAN_AUDIT,
|
|
115
|
+
criteria: PLAN_AUDIT_CRITERIA,
|
|
116
|
+
},
|
|
97
117
|
review: {
|
|
98
118
|
orientation: REVIEW_PURPOSE_ORIENTATION,
|
|
99
119
|
evidenceRule: EVIDENCE_RULE_REVIEW,
|
|
@@ -128,7 +148,7 @@ const ROUTE_BLOCKS = {
|
|
|
128
148
|
* Each entry returns the full builders so the orchestrator can fan out
|
|
129
149
|
* without route-specific branching code.
|
|
130
150
|
*/
|
|
131
|
-
export const READ_ONLY_ROUTES = Object.fromEntries(['audit', 'review', 'verify', 'debug', 'investigate'].map((route) => {
|
|
151
|
+
export const READ_ONLY_ROUTES = Object.fromEntries(['audit', 'audit_plan', 'review', 'verify', 'debug', 'investigate'].map((route) => {
|
|
132
152
|
const semantics = ROUTE_SEMANTICS[route];
|
|
133
153
|
const blocks = {
|
|
134
154
|
...ROUTE_BLOCKS[route],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-criteria-routes.js","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parallel-criteria-routes.js","sourceRoot":"","sources":["../../src/lifecycle/parallel-criteria-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import type { RunResult } from '../types.js';
|
|
2
2
|
import type { BatchTimings, BatchAggregateCost } from './executor-output-types.js';
|
|
3
3
|
export declare function computeTimings(wallClockMs: number, results: RunResult[]): BatchTimings;
|
|
4
|
+
/**
|
|
5
|
+
* Sum costUSD across entered stages of a single RunResult. Returns null
|
|
6
|
+
* when no entered stage carried a finite cost (mock-provider runs); used
|
|
7
|
+
* by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
|
|
8
|
+
*/
|
|
9
|
+
export declare function sumStageCosts(stageStats: Record<string, {
|
|
10
|
+
entered?: boolean;
|
|
11
|
+
costUSD?: number | null;
|
|
12
|
+
} | undefined> | undefined): number | null;
|
|
4
13
|
export declare function computeAggregateCost(results: RunResult[]): BatchAggregateCost;
|
|
5
14
|
//# sourceMappingURL=shared-compute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"shared-compute.d.ts","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAItF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAa/I;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,kBAAkB,CA0B7E"}
|
|
@@ -3,17 +3,49 @@ export function computeTimings(wallClockMs, results) {
|
|
|
3
3
|
const estimatedParallelSavingsMs = Math.max(0, sumOfTaskMs - wallClockMs);
|
|
4
4
|
return { wallClockMs, sumOfTaskMs, estimatedParallelSavingsMs };
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Sum costUSD across entered stages of a single RunResult. Returns null
|
|
8
|
+
* when no entered stage carried a finite cost (mock-provider runs); used
|
|
9
|
+
* by both A11.1 (batch roll-up) and A11.2 (per-task envelope).
|
|
10
|
+
*/
|
|
11
|
+
export function sumStageCosts(stageStats) {
|
|
12
|
+
if (!stageStats)
|
|
13
|
+
return null;
|
|
14
|
+
let total = 0;
|
|
15
|
+
let anyFinite = false;
|
|
16
|
+
for (const stage of Object.values(stageStats)) {
|
|
17
|
+
if (!stage?.entered)
|
|
18
|
+
continue;
|
|
19
|
+
const c = stage.costUSD;
|
|
20
|
+
if (typeof c === 'number' && Number.isFinite(c)) {
|
|
21
|
+
total += c;
|
|
22
|
+
anyFinite = true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return anyFinite ? total : null;
|
|
26
|
+
}
|
|
6
27
|
export function computeAggregateCost(results) {
|
|
7
28
|
let totalActualCostUSD = 0;
|
|
8
29
|
let totalCostDeltaVsMainUSD = 0;
|
|
30
|
+
let anyCostFinite = false;
|
|
9
31
|
for (const r of results) {
|
|
10
|
-
|
|
11
|
-
|
|
32
|
+
// Sum per-task via the shared helper. The top-level r.cost field is a
|
|
33
|
+
// stale implementer-only reading and must NOT be used for the public
|
|
34
|
+
// envelope's roll-up. (Bug observed 2026-05-10: r.cost was null in real
|
|
35
|
+
// audit envelopes while stageStats[*].costUSD carried ~$2.06 / ~$3.71
|
|
36
|
+
// per task.)
|
|
37
|
+
const taskSum = sumStageCosts(r.stageStats);
|
|
38
|
+
if (taskSum !== null) {
|
|
39
|
+
totalActualCostUSD += taskSum;
|
|
40
|
+
anyCostFinite = true;
|
|
12
41
|
}
|
|
13
42
|
if (r.cost?.costDeltaVsMainUSD !== null && r.cost?.costDeltaVsMainUSD !== undefined) {
|
|
14
43
|
totalCostDeltaVsMainUSD += r.cost.costDeltaVsMainUSD;
|
|
15
44
|
}
|
|
16
45
|
}
|
|
17
|
-
return {
|
|
46
|
+
return {
|
|
47
|
+
totalActualCostUSD: anyCostFinite ? totalActualCostUSD : 0,
|
|
48
|
+
totalCostDeltaVsMainUSD,
|
|
49
|
+
};
|
|
18
50
|
}
|
|
19
51
|
//# sourceMappingURL=shared-compute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"shared-compute.js","sourceRoot":"","sources":["../../src/lifecycle/shared-compute.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,OAAoB;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC1E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkG;IAC9H,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,OAAO;YAAE,SAAS;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,uBAAuB,GAAG,CAAC,CAAC;IAChC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sEAAsE;QACtE,aAAa;QACb,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,UAAoG,CAAC,CAAC;QACtI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,kBAAkB,IAAI,OAAO,CAAC;YAC9B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACpF,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1D,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAgBvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAkJhE"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper for the `reviewPolicy === 'none'` commit path (pipeline-redesign §2.5).
|
|
3
|
+
* When reviewPolicy is 'none', stages 2–4 are skipped, so state.commitGatePercent
|
|
4
|
+
* is undefined when the commit gate runs. This helper returns 100 if files were
|
|
5
|
+
* written (so the gate trivially passes) or 0 otherwise. Same code path as the
|
|
6
|
+
* LLM-mediated case — just emits a deterministic value when annotation didn't run.
|
|
7
|
+
*/
|
|
8
|
+
function deriveBypassCommitPercent(s) {
|
|
9
|
+
if (s.reviewPolicy !== 'none')
|
|
10
|
+
return 0;
|
|
11
|
+
const last = s.lastRunResult;
|
|
12
|
+
const writes = last?.filesWritten;
|
|
13
|
+
return Array.isArray(writes) && writes.length > 0 ? 100 : 0;
|
|
14
|
+
}
|
|
1
15
|
export function buildStagePlan(category) {
|
|
2
16
|
const isAP = category === 'artifact_producing';
|
|
3
17
|
const isRO = category === 'read_only';
|
|
@@ -39,97 +53,63 @@ export function buildStagePlan(category) {
|
|
|
39
53
|
&& !s.terminal,
|
|
40
54
|
isRework: false, handlerKey: 'check_files_written',
|
|
41
55
|
},
|
|
42
|
-
// Stage 4 —
|
|
43
|
-
// 4.1:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// 4.
|
|
48
|
-
{ rowId: '4.
|
|
49
|
-
runCondition: (s) => isAP && s.
|
|
50
|
-
isRework:
|
|
51
|
-
|
|
52
|
-
{ rowId: '4.3', stageName: 'spec_review_round_2', schemaStage: 'spec_review',
|
|
53
|
-
runCondition: (s) => isAP && s.specReviewRound1Verdict === 'changes_required' && !s.terminal,
|
|
54
|
-
isRework: false, handlerKey: 'spec_review_round_2' },
|
|
55
|
-
// 4.4: rework_for_spec_round_2 (rotates tier per C9) — fires when round_2 verdict=changes_required
|
|
56
|
-
{ rowId: '4.4', stageName: 'rework_for_spec_round_2', schemaStage: 'spec_rework',
|
|
57
|
-
runCondition: (s) => isAP && s.specReviewRound2Verdict === 'changes_required' && !s.terminal,
|
|
58
|
-
isRework: true, handlerKey: 'rework_for_spec_round_2' },
|
|
59
|
-
// 4.5: spec_review_round_3 — final spec attempt
|
|
60
|
-
{ rowId: '4.5', stageName: 'spec_review_round_3', schemaStage: 'spec_review',
|
|
61
|
-
runCondition: (s) => isAP && s.specReviewRound2Verdict === 'changes_required' && !s.terminal,
|
|
62
|
-
isRework: false, handlerKey: 'spec_review_round_3' },
|
|
63
|
-
// 4.5.x: settle_spec_chain — sets state.specChainPassed per spec § C10.
|
|
64
|
-
// runOnTerminal: settle still fires after a hard-fail in the chain so
|
|
65
|
-
// chain-pass slots get authoritative values for compose_response.
|
|
66
|
-
{ rowId: '4.5.x', stageName: 'settle_spec_chain',
|
|
67
|
-
runCondition: (s) => isAP && s.reviewPolicy === 'full',
|
|
68
|
-
isRework: false, handlerKey: 'settle_spec_chain', runOnTerminal: true },
|
|
69
|
-
// Stage 4 — Quality chain (rows 4.6–4.10; artifact-producing OR read-only annotator path)
|
|
70
|
-
// 4.6: quality_review_round_1 — fires when reviewPolicy in {full, quality_only} AND
|
|
71
|
-
// (artifact_producing AND spec passed OR n/a) OR read_only (no spec chain to gate on).
|
|
72
|
-
// For read-only tools this is the AnnotatorEngine pass; verdict will be 'annotated'.
|
|
73
|
-
{ rowId: '4.6', stageName: 'quality_review_round_1', schemaStage: 'quality_review',
|
|
74
|
-
runCondition: (s) => (isAP || isRO)
|
|
75
|
-
&& (s.reviewPolicy === 'full' || s.reviewPolicy === 'quality_only')
|
|
76
|
-
&& (isRO || s.reviewPolicy !== 'full' || s.specChainPassed === true)
|
|
77
|
-
&& !s.terminal,
|
|
78
|
-
isRework: false, handlerKey: 'quality_review_round_1' },
|
|
79
|
-
// 4.7: rework_for_quality_round_1 — gated on changes_required only.
|
|
80
|
-
// ReviewVerdictEnum still permits 'concerns' but the v4 reviewer prompts
|
|
81
|
-
// never emit it (the binary contract is approved | changes_required); both
|
|
82
|
-
// 'concerns' and 'approved' fall through. Annotator output 'annotated'
|
|
83
|
-
// naturally fails this gate as well.
|
|
84
|
-
{ rowId: '4.7', stageName: 'rework_for_quality_round_1', schemaStage: 'quality_rework',
|
|
85
|
-
runCondition: (s) => isAP && s.qualityReviewRound1Verdict === 'changes_required' && !s.terminal,
|
|
86
|
-
isRework: true, handlerKey: 'rework_for_quality_round_1' },
|
|
87
|
-
// 4.8: quality_review_round_2
|
|
88
|
-
{ rowId: '4.8', stageName: 'quality_review_round_2', schemaStage: 'quality_review',
|
|
89
|
-
runCondition: (s) => isAP && s.qualityReviewRound1Verdict === 'changes_required' && !s.terminal,
|
|
90
|
-
isRework: false, handlerKey: 'quality_review_round_2' },
|
|
91
|
-
// 4.9: rework_for_quality_round_2 (rotates tier)
|
|
92
|
-
{ rowId: '4.9', stageName: 'rework_for_quality_round_2', schemaStage: 'quality_rework',
|
|
93
|
-
runCondition: (s) => isAP && s.qualityReviewRound2Verdict === 'changes_required' && !s.terminal,
|
|
94
|
-
isRework: true, handlerKey: 'rework_for_quality_round_2' },
|
|
95
|
-
// 4.10: quality_review_round_3 — final quality attempt
|
|
96
|
-
{ rowId: '4.10', stageName: 'quality_review_round_3', schemaStage: 'quality_review',
|
|
97
|
-
runCondition: (s) => isAP && s.qualityReviewRound2Verdict === 'changes_required' && !s.terminal,
|
|
98
|
-
isRework: false, handlerKey: 'quality_review_round_3' },
|
|
99
|
-
// 4.10.x: settle_quality_chain — mirrors quality_review_round_1's gate so we
|
|
100
|
-
// only settle when at least one quality round was supposed to fire.
|
|
101
|
-
// runOnTerminal: same rationale as settle_spec_chain.
|
|
102
|
-
{ rowId: '4.10.x', stageName: 'settle_quality_chain',
|
|
103
|
-
runCondition: (s) => (isAP || isRO)
|
|
104
|
-
&& (s.reviewPolicy === 'full' || s.reviewPolicy === 'quality_only')
|
|
105
|
-
&& (isRO || s.reviewPolicy !== 'full' || s.specChainPassed === true),
|
|
106
|
-
isRework: false, handlerKey: 'settle_quality_chain', runOnTerminal: true },
|
|
107
|
-
// 4.11: review_diff — fires when reviewPolicy in {full, diff_only} AND, for 'full', prior chains passed
|
|
108
|
-
{ rowId: '4.11', stageName: 'review_diff', schemaStage: 'diff_review',
|
|
56
|
+
// ── Stage 4 — Lint-review + rework split (4.3.0+) ──────────────────────
|
|
57
|
+
// 4.1: review (parallel spec + quality, lint-only, readonly tools).
|
|
58
|
+
// Emits state.reviewVerdict + state.reviewFindings.
|
|
59
|
+
// 4.2: rework (complex tier, full tools, single pass). Skipped when
|
|
60
|
+
// reviewVerdict === 'approved'.
|
|
61
|
+
// 4.3 / 4.4: annotate_completion / annotate_criteria (unchanged).
|
|
62
|
+
{ rowId: '4.1', stageName: 'review', schemaStage: 'review',
|
|
63
|
+
runCondition: (s) => isAP && s.reviewPolicy !== 'none' && !s.terminal,
|
|
64
|
+
isRework: false, handlerKey: 'review' },
|
|
65
|
+
{ rowId: '4.2', stageName: 'rework', schemaStage: 'rework',
|
|
109
66
|
runCondition: (s) => isAP
|
|
110
|
-
&&
|
|
111
|
-
&&
|
|
67
|
+
&& s.reviewPolicy !== 'none'
|
|
68
|
+
&& s.reviewVerdict === 'changes_required'
|
|
112
69
|
&& !s.terminal,
|
|
113
|
-
isRework:
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
{ rowId: '
|
|
119
|
-
runCondition: (s) =>
|
|
120
|
-
&& s.route !== 'verify'
|
|
70
|
+
isRework: true, handlerKey: 'rework' },
|
|
71
|
+
// 4.3: annotate completion — artifact-producing routes only. Standard
|
|
72
|
+
// tier with readonly tools. Runs verifyCommand deterministically first,
|
|
73
|
+
// then invokes annotator LLM. Sets state.completionAnnotation and
|
|
74
|
+
// state.commitGatePercent.
|
|
75
|
+
{ rowId: '4.3', stageName: 'annotate_completion', schemaStage: 'annotating',
|
|
76
|
+
runCondition: (s) => isAP
|
|
121
77
|
&& s.reviewPolicy !== 'none'
|
|
122
78
|
&& !s.terminal,
|
|
123
|
-
isRework: false, handlerKey: '
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
&& !s.readOnlyTask
|
|
79
|
+
isRework: false, handlerKey: 'annotate_completion' },
|
|
80
|
+
// 4.4: annotate criteria — read-only routes. Merges per-criterion
|
|
81
|
+
// workerOutputs (from dispatchParallelCriteria in run_initial_impl)
|
|
82
|
+
// via AnnotatorEngine.annotate. Surfaces "Annotating" as a distinct
|
|
83
|
+
// user-facing stage matching the artifact-producing Annotating stage.
|
|
84
|
+
{ rowId: '4.4', stageName: 'annotate_criteria', schemaStage: 'annotating',
|
|
85
|
+
runCondition: (s) => isRO
|
|
131
86
|
&& s.reviewPolicy !== 'none'
|
|
132
87
|
&& !s.terminal,
|
|
88
|
+
isRework: false, handlerKey: 'annotate_criteria' },
|
|
89
|
+
// 5.2: git_commit — fires when autoCommit + worker wrote files +
|
|
90
|
+
// !readOnlyTask + !terminal AND commitGatePercent ≥ completionThreshold.
|
|
91
|
+
//
|
|
92
|
+
// 4.3.0 (pipeline redesign §2.5, §3.1): replaces the binary "reviews
|
|
93
|
+
// passed" gate with a threshold check. state.commitGatePercent is set by
|
|
94
|
+
// annotate_completion (row 4.3) for reviewPolicy in {full, quality_only,
|
|
95
|
+
// diff_only}. For reviewPolicy='none', stages 4.1/4.2/4.3 are skipped, so
|
|
96
|
+
// commitGatePercent is undefined; deriveBypassCommitPercent returns 100
|
|
97
|
+
// when files were written (else 0) — uniform code path, single threshold.
|
|
98
|
+
{ rowId: '5.2', stageName: 'git_commit', schemaStage: 'committing',
|
|
99
|
+
runCondition: (s) => {
|
|
100
|
+
if (s.autoCommit !== true)
|
|
101
|
+
return false;
|
|
102
|
+
const last = s.lastRunResult;
|
|
103
|
+
const writes = last?.filesWritten;
|
|
104
|
+
if (!Array.isArray(writes) || writes.length === 0)
|
|
105
|
+
return false;
|
|
106
|
+
if (s.readOnlyTask)
|
|
107
|
+
return false;
|
|
108
|
+
if (s.terminal)
|
|
109
|
+
return false;
|
|
110
|
+
const percent = s.commitGatePercent ?? deriveBypassCommitPercent(s);
|
|
111
|
+
return percent >= (s.completionThreshold ?? 80);
|
|
112
|
+
},
|
|
133
113
|
isRework: false, handlerKey: 'git_commit' },
|
|
134
114
|
// 5.3.rcb: register_to_block_store — fires for register-context-block
|
|
135
115
|
// route only, before compose_response. Sets state.blockRegistration
|