@claudexor/orchestrator 3.1.2 → 3.3.7-rc.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.
Files changed (137) hide show
  1. package/dist/attemptFinalize.d.ts +14 -11
  2. package/dist/attemptFinalize.d.ts.map +1 -1
  3. package/dist/attemptFinalize.js +41 -14
  4. package/dist/attemptFinalize.js.map +1 -1
  5. package/dist/attemptTelemetry.d.ts +7 -0
  6. package/dist/attemptTelemetry.d.ts.map +1 -1
  7. package/dist/attemptTelemetry.js +2 -1
  8. package/dist/attemptTelemetry.js.map +1 -1
  9. package/dist/attemptUsageCost.d.ts +24 -2
  10. package/dist/attemptUsageCost.d.ts.map +1 -1
  11. package/dist/attemptUsageCost.js +18 -2
  12. package/dist/attemptUsageCost.js.map +1 -1
  13. package/dist/budgetFailure.d.ts +1 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js.map +1 -1
  16. package/dist/candidateEvidence.d.ts +24 -0
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +26 -0
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/credential-profile-rotation.d.ts +145 -0
  21. package/dist/credential-profile-rotation.d.ts.map +1 -0
  22. package/dist/credential-profile-rotation.js +335 -0
  23. package/dist/credential-profile-rotation.js.map +1 -0
  24. package/dist/credential-profiles.d.ts +90 -130
  25. package/dist/credential-profiles.d.ts.map +1 -1
  26. package/dist/credential-profiles.js +156 -290
  27. package/dist/credential-profiles.js.map +1 -1
  28. package/dist/decisionBudget.d.ts +2 -2
  29. package/dist/decisionBudget.d.ts.map +1 -1
  30. package/dist/deepScanReducer.d.ts +14 -44
  31. package/dist/deepScanReducer.d.ts.map +1 -1
  32. package/dist/deepScanReducer.js +240 -128
  33. package/dist/deepScanReducer.js.map +1 -1
  34. package/dist/delegatedHome.d.ts +156 -0
  35. package/dist/delegatedHome.d.ts.map +1 -0
  36. package/dist/delegatedHome.js +179 -0
  37. package/dist/delegatedHome.js.map +1 -0
  38. package/dist/delegationBudgetAuthority.d.ts.map +1 -1
  39. package/dist/delegationBudgetAuthority.js.map +1 -1
  40. package/dist/delegationFailure.d.ts.map +1 -1
  41. package/dist/git-precondition.d.ts +11 -0
  42. package/dist/git-precondition.d.ts.map +1 -0
  43. package/dist/git-precondition.js +69 -0
  44. package/dist/git-precondition.js.map +1 -0
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/interaction.d.ts +14 -6
  50. package/dist/interaction.d.ts.map +1 -1
  51. package/dist/interaction.js +106 -19
  52. package/dist/interaction.js.map +1 -1
  53. package/dist/orchestrator.d.ts +64 -83
  54. package/dist/orchestrator.d.ts.map +1 -1
  55. package/dist/orchestrator.js +578 -691
  56. package/dist/orchestrator.js.map +1 -1
  57. package/dist/planBrief.d.ts +27 -0
  58. package/dist/planBrief.d.ts.map +1 -0
  59. package/dist/planBrief.js +42 -0
  60. package/dist/planBrief.js.map +1 -0
  61. package/dist/planQuestions.js +4 -1
  62. package/dist/planQuestions.js.map +1 -1
  63. package/dist/planRun.d.ts +4 -3
  64. package/dist/planRun.d.ts.map +1 -1
  65. package/dist/planRun.js +33 -33
  66. package/dist/planRun.js.map +1 -1
  67. package/dist/plannerAttempt.d.ts +64 -0
  68. package/dist/plannerAttempt.d.ts.map +1 -0
  69. package/dist/plannerAttempt.js +235 -0
  70. package/dist/plannerAttempt.js.map +1 -0
  71. package/dist/policyFindings.js.map +1 -1
  72. package/dist/requestRequirements.d.ts +43 -3
  73. package/dist/requestRequirements.d.ts.map +1 -1
  74. package/dist/requestRequirements.js +106 -13
  75. package/dist/requestRequirements.js.map +1 -1
  76. package/dist/reviewerPanel.js.map +1 -1
  77. package/dist/root-ledger.d.ts.map +1 -1
  78. package/dist/root-ledger.js +2 -0
  79. package/dist/root-ledger.js.map +1 -1
  80. package/dist/run-bounded.d.ts.map +1 -1
  81. package/dist/run-bounded.js +7 -1
  82. package/dist/run-bounded.js.map +1 -1
  83. package/dist/run-input-resolution.d.ts.map +1 -1
  84. package/dist/run-input-resolution.js +26 -8
  85. package/dist/run-input-resolution.js.map +1 -1
  86. package/dist/runEventLog.d.ts +48 -0
  87. package/dist/runEventLog.d.ts.map +1 -0
  88. package/dist/runEventLog.js +63 -0
  89. package/dist/runEventLog.js.map +1 -0
  90. package/dist/runFacts.d.ts +23 -0
  91. package/dist/runFacts.d.ts.map +1 -0
  92. package/dist/runFacts.js +179 -0
  93. package/dist/runFacts.js.map +1 -0
  94. package/dist/runFactsBuilder.d.ts +5 -0
  95. package/dist/runFactsBuilder.d.ts.map +1 -0
  96. package/dist/runFactsBuilder.js +412 -0
  97. package/dist/runFactsBuilder.js.map +1 -0
  98. package/dist/runFactsDeliverable.d.ts +13 -0
  99. package/dist/runFactsDeliverable.d.ts.map +1 -0
  100. package/dist/runFactsDeliverable.js +94 -0
  101. package/dist/runFactsDeliverable.js.map +1 -0
  102. package/dist/runFactsPresentation.d.ts +7 -0
  103. package/dist/runFactsPresentation.d.ts.map +1 -0
  104. package/dist/runFactsPresentation.js +113 -0
  105. package/dist/runFactsPresentation.js.map +1 -0
  106. package/dist/runFactsReview.d.ts +7 -0
  107. package/dist/runFactsReview.d.ts.map +1 -0
  108. package/dist/runFactsReview.js +63 -0
  109. package/dist/runFactsReview.js.map +1 -0
  110. package/dist/runSupport.d.ts +17 -15
  111. package/dist/runSupport.d.ts.map +1 -1
  112. package/dist/runSupport.js +16 -0
  113. package/dist/runSupport.js.map +1 -1
  114. package/dist/runTerminalContext.d.ts +31 -0
  115. package/dist/runTerminalContext.d.ts.map +1 -0
  116. package/dist/runTerminalContext.js +12 -0
  117. package/dist/runTerminalContext.js.map +1 -0
  118. package/dist/runTerminalResults.d.ts +80 -0
  119. package/dist/runTerminalResults.d.ts.map +1 -0
  120. package/dist/runTerminalResults.js +164 -0
  121. package/dist/runTerminalResults.js.map +1 -0
  122. package/dist/runTerminals.d.ts +4 -80
  123. package/dist/runTerminals.d.ts.map +1 -1
  124. package/dist/runTerminals.js +357 -260
  125. package/dist/runTerminals.js.map +1 -1
  126. package/dist/secretDiff.d.ts +3 -0
  127. package/dist/secretDiff.d.ts.map +1 -1
  128. package/dist/secretDiff.js +7 -0
  129. package/dist/secretDiff.js.map +1 -1
  130. package/dist/structuredOutput.d.ts.map +1 -1
  131. package/dist/structuredOutput.js.map +1 -1
  132. package/dist/task-contract-builder.d.ts +35 -0
  133. package/dist/task-contract-builder.d.ts.map +1 -0
  134. package/dist/task-contract-builder.js +114 -0
  135. package/dist/task-contract-builder.js.map +1 -0
  136. package/dist/transientClassify.js.map +1 -1
  137. package/package.json +17 -17
@@ -1,5 +1,5 @@
1
1
  import type { CostEvidence, DeepScanSynthesis, ExternalContextPolicy, HarnessEvent, HarnessRunSpec } from "@claudexor/schema";
2
- import { type BudgetLedger } from "@claudexor/budget";
2
+ import type { BudgetLedger } from "@claudexor/budget";
3
3
  import type { RunPaths } from "@claudexor/artifact-store";
4
4
  import type { EventLog } from "@claudexor/event-log";
5
5
  import { type BudgetDenial } from "./budgetFailure.js";
@@ -8,15 +8,7 @@ import { type WorkReportEnvelopeMode } from "./attemptFinalize.js";
8
8
  import { type AttemptTelemetry } from "./attemptTelemetry.js";
9
9
  /** The reducer runs under the fixed `synth` attempt id (roster/cost visible). */
10
10
  export declare const DEEP_SCAN_REDUCER_ATTEMPT_ID = "synth";
11
- /**
12
- * #27 / D-6: the HONEST fallback artifact for a deep scan whose bounded
13
- * synthesis reducer did not run or did not succeed. It is explicitly labeled a
14
- * raw scout bundle (a marker heading), never presented as a merged synthesis:
15
- * the per-scout reports are concatenated verbatim with attribution, the roster
16
- * denominator stays honest, and omissions are preserved. `skipped` (a single
17
- * width-1 report) and `failed` (reducer error/timeout/budget-denial or no
18
- * synthesize-capable route) get distinct honest intros.
19
- */
11
+ /** Honest attributed fallback; never presents raw scout reports as a merge. */
20
12
  export declare function rawScoutBundle(args: {
21
13
  succeeded: {
22
14
  attemptId: string;
@@ -37,34 +29,28 @@ export interface ReducerHome {
37
29
  env: Record<string, string>;
38
30
  dispose: () => void;
39
31
  }
40
- /** The engine-owned bits the reducer needs. `buildSpec` keeps the orchestrator's
41
- * private route/session/knob machinery on the caller side and hands back only a
42
- * finished, public `HarnessRunSpec` plus the disclosed web policy/model, so this
43
- * module stays free of those private types (mirrors the council extraction). */
32
+ /** Engine-owned dependencies; private route/session machinery stays with the caller. */
44
33
  export interface DeepScanReducerDeps {
45
- /** Provision a fresh disposable read-only home (auth is home-independent). */
46
34
  newReadOnlyHome: () => ReducerHome;
47
- /** Per-attempt budget cost evidence (finite estimate floor + billing knowledge). */
48
35
  costEvidence: (harnessId: string, attemptId: string) => CostEvidence;
49
- /** Build the finished readonly/synthesize spec bound to the reducer home. */
50
- buildSpec: (routed: RoutedAdapter, homeEnv: Record<string, string>, prompt: string, attemptId: string) => {
36
+ buildSpec: (routed: RoutedAdapter, homeEnv: Record<string, string>, prompt: string, attemptId: string) => Promise<{
37
+ spec: HarnessRunSpec;
38
+ webPolicy: ExternalContextPolicy;
39
+ effectiveWeb: ExternalContextPolicy;
40
+ model: string | null;
41
+ workReportMode: WorkReportEnvelopeMode;
42
+ }> | {
51
43
  spec: HarnessRunSpec;
52
44
  webPolicy: ExternalContextPolicy;
53
45
  effectiveWeb: ExternalContextPolicy;
54
46
  model: string | null;
55
- /** D-16: the WorkReport transport mode compiled onto the reducer spec, so the
56
- * reducer output is unwrapped + finalized through the SAME contract as every
57
- * other attempt (never a fourth divergent deliverable predicate). Inactive on
58
- * a route with no work_report transport (the report passes through untouched). */
59
47
  workReportMode: WorkReportEnvelopeMode;
60
48
  };
61
- /** Hard (total) timeout for the single bounded pass. */
62
49
  hardTimeoutMs: number;
63
- /** Inactivity watchdog timeout (shared with the scout lane). */
50
+ /** Production defaults to the process-reap proof window. */
51
+ cleanupGraceMs?: number;
64
52
  inactivityTimeoutMs: number;
65
- /** Whether the run's contract requires web evidence (telemetry seed). */
66
53
  webRequired: boolean;
67
- /** Optional quota event sink (same owner as the agent loop). */
68
54
  quotaEventSink?: (harnessId: string, ev: HarnessEvent) => void;
69
55
  }
70
56
  export interface DeepScanReducerArgs {
@@ -99,25 +85,9 @@ export type DeepScanReducerResult = {
99
85
  } | {
100
86
  status: "cancelled";
101
87
  };
102
- /**
103
- * #27 / D-6: the deep-scan bounded synthesis reducer. After the scouts finish,
104
- * ONE synthesize-intent attempt merges the raw scout reports into a real
105
- * synthesis. It is READ-ONLY and file-backed (the scout report files are pointed
106
- * at by absolute path — the argv-size law: reports ride a file, never argv),
107
- * reserves a budget lease like any attempt, and is bounded by a hard timeout. Its
108
- * telemetry is pushed to the run roster (cost/route visible). On
109
- * failure/timeout/budget-denial the caller degrades to an HONEST raw bundle; this
110
- * function never fabricates a synthesis.
111
- */
88
+ /** One budgeted, bounded, read-only synthesis over file-backed scout reports. */
112
89
  export declare function runDeepScanReducer(deps: DeepScanReducerDeps, args: DeepScanReducerArgs): Promise<DeepScanReducerResult>;
113
- /**
114
- * #27 / D-6: decide the deep-scan synthesis outcome and, when warranted, run the
115
- * bounded reducer. Returns the typed `DeepScanSynthesis` telemetry status plus
116
- * the merged report (non-null only on a clean reducer success; the caller writes
117
- * an honest raw bundle otherwise). A width-1 (single-report) scan skips the
118
- * reducer; a budget-stopped/cancelled scan degrades without spending on a merge;
119
- * a scan with no synthesize-capable route degrades honestly.
120
- */
90
+ /** Run the reducer only when multiple reports and an eligible route exist. */
121
91
  export declare function resolveDeepScanSynthesis(deps: DeepScanReducerDeps, args: {
122
92
  succeeded: {
123
93
  attemptId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deepScanReducer.d.ts","sourceRoot":"","sources":["../src/deepScanReducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepScanReducer.d.ts","sourceRoot":"","sources":["../src/deepScanReducer.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,36 @@
1
1
  import { join } from "node:path";
2
- import { attemptUsageCostSettlement } from "@claudexor/budget";
3
- import { AnswerAssembly, withInactivityWatchdog } from "@claudexor/core";
2
+ import { AnswerAssembly, countsAsAgentProgress, withInactivityWatchdog } from "@claudexor/core";
4
3
  import { appendLine, redactSecrets, safeInvoke } from "@claudexor/util";
5
4
  import { buildDeepScanReducerPrompt } from "@claudexor/synthesis";
6
5
  import { classifyBudgetFailure } from "./budgetFailure.js";
7
6
  import { finalizeAttempt, unwrapWorkReportEnvelope, } from "./attemptFinalize.js";
8
7
  import { redactHarnessEvent, harnessEventPayload, observeBudgetSignals, safeErrorMessage, } from "./runSupport.js";
9
8
  import { createAttemptTelemetry, observeAttemptTelemetry, setAttemptOutcome, telemetrySummary, toolWarnings, } from "./attemptTelemetry.js";
9
+ import { settleGrantedAttemptLease } from "./attemptUsageCost.js";
10
10
  /** The reducer runs under the fixed `synth` attempt id (roster/cost visible). */
11
11
  export const DEEP_SCAN_REDUCER_ATTEMPT_ID = "synth";
12
- /**
13
- * #27 / D-6: the HONEST fallback artifact for a deep scan whose bounded
14
- * synthesis reducer did not run or did not succeed. It is explicitly labeled a
15
- * raw scout bundle (a marker heading), never presented as a merged synthesis:
16
- * the per-scout reports are concatenated verbatim with attribution, the roster
17
- * denominator stays honest, and omissions are preserved. `skipped` (a single
18
- * width-1 report) and `failed` (reducer error/timeout/budget-denial or no
19
- * synthesize-capable route) get distinct honest intros.
20
- */
12
+ const REDUCER_CLEANUP_GRACE_MS = 8_000;
13
+ const REDUCER_CLEANUP_EVENT_TYPES = new Set([
14
+ "started",
15
+ "usage",
16
+ "error",
17
+ "status",
18
+ "context",
19
+ "completed",
20
+ ]);
21
+ /** Keep the scoped HOME alive for cooperative teardown, but never forever. */
22
+ async function waitForCleanup(work, graceMs) {
23
+ let timer;
24
+ await Promise.race([
25
+ work.catch(() => undefined),
26
+ new Promise((resolve) => {
27
+ // Referenced: this timer owns eventual HOME/lease cleanup.
28
+ timer = setTimeout(resolve, Math.max(1, graceMs));
29
+ }),
30
+ ]);
31
+ clearTimeout(timer);
32
+ }
33
+ /** Honest attributed fallback; never presents raw scout reports as a merge. */
21
34
  export function rawScoutBundle(args) {
22
35
  const total = args.succeeded.length + args.unsuccessful.length;
23
36
  const intro = args.status?.status === "skipped"
@@ -53,16 +66,7 @@ export function rawScoutBundle(args) {
53
66
  ]),
54
67
  ].join("\n");
55
68
  }
56
- /**
57
- * #27 / D-6: the deep-scan bounded synthesis reducer. After the scouts finish,
58
- * ONE synthesize-intent attempt merges the raw scout reports into a real
59
- * synthesis. It is READ-ONLY and file-backed (the scout report files are pointed
60
- * at by absolute path — the argv-size law: reports ride a file, never argv),
61
- * reserves a budget lease like any attempt, and is bounded by a hard timeout. Its
62
- * telemetry is pushed to the run roster (cost/route visible). On
63
- * failure/timeout/budget-denial the caller degrades to an HONEST raw bundle; this
64
- * function never fabricates a synthesis.
65
- */
69
+ /** One budgeted, bounded, read-only synthesis over file-backed scout reports. */
66
70
  export async function runDeepScanReducer(deps, args) {
67
71
  const { ledger, log, paths } = args;
68
72
  const attemptId = DEEP_SCAN_REDUCER_ATTEMPT_ID;
@@ -96,79 +100,232 @@ export async function runDeepScanReducer(deps, args) {
96
100
  },
97
101
  };
98
102
  }
99
- // A fresh disposable read-only home: the scouts' shared route context was
100
- // already disposed, and auth truth is home-independent (credentials come from
101
- // the profile/keychain/default store), so a fresh home shares the auth source.
102
- const reducerHome = deps.newReadOnlyHome();
103
- const prompt = buildDeepScanReducerPrompt(args.goal, args.scoutReports);
104
- const built = deps.buildSpec(args.routed, reducerHome.env, prompt, attemptId);
105
- const spec = built.spec;
106
- // Hard (total) timeout — one attempt, no failover/transient retry loop.
103
+ const cleanupGraceMs = deps.cleanupGraceMs ?? REDUCER_CLEANUP_GRACE_MS;
107
104
  const reducerAbort = new AbortController();
108
- let timedOut = false;
109
- const hardTimer = setTimeout(() => {
110
- timedOut = true;
105
+ let resolveStop;
106
+ const stopped = new Promise((resolve) => {
107
+ resolveStop = resolve;
108
+ });
109
+ let stopReason = null;
110
+ let activeSessionId = null;
111
+ let cancelTask = null;
112
+ const cancelActiveSession = () => {
113
+ if (!activeSessionId || cancelTask)
114
+ return;
115
+ cancelTask = Promise.resolve()
116
+ .then(() => adapter.cancel?.(activeSessionId ?? ""))
117
+ .catch(() => undefined);
118
+ };
119
+ const requestStop = (reason) => {
120
+ if (stopReason)
121
+ return;
122
+ stopReason = reason;
111
123
  reducerAbort.abort();
112
- void adapter.cancel?.(spec.session_id)?.catch(() => { });
113
- }, deps.hardTimeoutMs);
124
+ resolveStop(reason);
125
+ cancelActiveSession();
126
+ };
127
+ // The one total deadline starts immediately after admission, before HOME or
128
+ // async route preparation can retain either the HOME or budget lease.
129
+ const hardTimer = setTimeout(() => requestStop("timeout"), deps.hardTimeoutMs);
130
+ const onOuterAbort = () => requestStop("cancelled");
131
+ if (args.signal?.aborted)
132
+ onOuterAbort();
133
+ else
134
+ args.signal?.addEventListener("abort", onOuterAbort, { once: true });
135
+ let reducerHome = null;
136
+ let settlementTelemetry = null;
137
+ let cost = 0;
138
+ let costEstimated = false;
139
+ const cleanupAttempt = () => {
140
+ clearTimeout(hardTimer);
141
+ args.signal?.removeEventListener("abort", onOuterAbort);
142
+ try {
143
+ reducerHome?.dispose();
144
+ }
145
+ finally {
146
+ settleGrantedAttemptLease({
147
+ ledger,
148
+ leaseId: lease.lease?.lease_id ?? "",
149
+ attemptId,
150
+ harnessId: adapter.id,
151
+ costUsd: cost,
152
+ costEstimated,
153
+ authMode: settlementTelemetry?.authMode,
154
+ usageCost: settlementTelemetry?.usageCost,
155
+ preStreamFailureSource: "deep-scan-reducer-pre-stream",
156
+ });
157
+ }
158
+ };
159
+ const finishBeforeHarness = (result) => {
160
+ const telemetry = settlementTelemetry ?? createAttemptTelemetry("auto", deps.webRequired, "auto", [], null);
161
+ setAttemptOutcome(telemetry, {
162
+ deliverablePresent: false,
163
+ gatesPassed: null,
164
+ harnessErrored: result.status === "failed",
165
+ webRequiredUnsatisfied: false,
166
+ });
167
+ args.attemptTelemetries.push({ attemptId, harnessId: adapter.id, telemetry });
168
+ cleanupAttempt();
169
+ return result;
170
+ };
171
+ const resultForStop = (reason) => reason === "cancelled"
172
+ ? { status: "cancelled" }
173
+ : { status: "failed", error: `deep-scan reducer timed out after ${deps.hardTimeoutMs}ms` };
174
+ if (stopReason)
175
+ return finishBeforeHarness(resultForStop(stopReason));
176
+ let prompt;
177
+ try {
178
+ // A fresh disposable read-only home: auth remains home-independent.
179
+ reducerHome = deps.newReadOnlyHome();
180
+ prompt = buildDeepScanReducerPrompt(args.goal, args.scoutReports);
181
+ }
182
+ catch (error) {
183
+ return finishBeforeHarness({
184
+ status: "failed",
185
+ error: `deep-scan reducer setup failed: ${safeErrorMessage(error)}`,
186
+ });
187
+ }
188
+ const buildTask = Promise.resolve().then(() => deps.buildSpec(args.routed, reducerHome?.env ?? {}, prompt, attemptId));
189
+ const prepared = await Promise.race([
190
+ buildTask.then((built) => ({ kind: "built", built }), (error) => ({ kind: "error", error })),
191
+ stopped.then((reason) => ({
192
+ kind: "stopped",
193
+ reason,
194
+ })),
195
+ ]);
196
+ if (prepared.kind === "stopped") {
197
+ await waitForCleanup(buildTask, cleanupGraceMs);
198
+ return finishBeforeHarness(resultForStop(prepared.reason));
199
+ }
200
+ if (prepared.kind === "error") {
201
+ return finishBeforeHarness({
202
+ status: "failed",
203
+ error: `deep-scan reducer setup failed: ${safeErrorMessage(prepared.error)}`,
204
+ });
205
+ }
206
+ const built = prepared.built;
207
+ const spec = built.spec;
208
+ activeSessionId = spec.session_id;
209
+ if (stopReason) {
210
+ cancelActiveSession();
211
+ if (cancelTask)
212
+ await waitForCleanup(cancelTask, cleanupGraceMs);
213
+ return finishBeforeHarness(resultForStop(stopReason));
214
+ }
114
215
  spec.extra["abortSignal"] = args.signal
115
216
  ? AbortSignal.any([args.signal, reducerAbort.signal])
116
217
  : reducerAbort.signal;
117
218
  const telemetry = createAttemptTelemetry(built.webPolicy, deps.webRequired || built.webPolicy === "cached" || built.webPolicy === "live", built.effectiveWeb, [], built.model);
219
+ settlementTelemetry = telemetry;
118
220
  const answer = new AnswerAssembly();
119
221
  const attemptEventsPath = join(paths.attemptsDir, attemptId, "events.jsonl");
120
222
  const budgetSignalState = { quotaPressureDisclosed: false };
121
- let cost = 0;
122
- let costEstimated = false;
123
223
  let harnessError = null;
124
- log.emit("harness.started", {
125
- harness_id: adapter.id,
126
- attempt_id: attemptId,
127
- external_context_policy: built.webPolicy,
128
- });
224
+ let stoppedDuringRun = null;
225
+ const observeEvent = (event, acceptDeliverable) => {
226
+ const safeEv = redactHarnessEvent(event);
227
+ if (!acceptDeliverable && !REDUCER_CLEANUP_EVENT_TYPES.has(safeEv.type))
228
+ return;
229
+ safeInvoke(args.onHarnessEvent, safeEv);
230
+ log.emit("harness.event", harnessEventPayload(adapter.id, attemptId, safeEv));
231
+ appendLine(attemptEventsPath, JSON.stringify(safeEv));
232
+ observeAttemptTelemetry(telemetry, safeEv);
233
+ observeBudgetSignals(ledger, log, adapter.id, attemptId, safeEv, budgetSignalState);
234
+ deps.quotaEventSink?.(adapter.id, safeEv);
235
+ if (safeEv.type === "usage" && safeEv.usage?.cost_usd) {
236
+ cost += safeEv.usage.cost_usd;
237
+ if (safeEv.usage.estimated)
238
+ costEstimated = true;
239
+ log.emit("budget.observation", {
240
+ harness_id: adapter.id,
241
+ attempt_id: attemptId,
242
+ kind: "spend",
243
+ usd: safeEv.usage.cost_usd,
244
+ estimated: safeEv.usage.estimated === true,
245
+ });
246
+ }
247
+ if (acceptDeliverable)
248
+ answer.observe(safeEv);
249
+ if (safeEv.type === "error") {
250
+ harnessError = safeEv.error ? redactSecrets(safeEv.error) : "harness emitted an error";
251
+ }
252
+ };
253
+ const drainAfterStop = async (iterator, pending) => {
254
+ let timer;
255
+ const deadline = new Promise((resolve) => {
256
+ timer = setTimeout(() => resolve(null), Math.max(1, cleanupGraceMs));
257
+ });
258
+ try {
259
+ let current = pending;
260
+ for (;;) {
261
+ const next = await Promise.race([current.catch(() => null), deadline]);
262
+ if (!next || next.done)
263
+ break;
264
+ observeEvent(next.value, false);
265
+ current = iterator.next();
266
+ }
267
+ const cleanup = cancelTask ? [cancelTask] : [];
268
+ try {
269
+ const returned = iterator.return?.(undefined);
270
+ if (returned)
271
+ cleanup.push(Promise.resolve(returned));
272
+ }
273
+ catch { }
274
+ if (cleanup.length > 0)
275
+ await Promise.race([Promise.allSettled(cleanup), deadline]);
276
+ }
277
+ finally {
278
+ clearTimeout(timer);
279
+ }
280
+ };
129
281
  try {
282
+ log.emit("harness.started", {
283
+ harness_id: adapter.id,
284
+ attempt_id: attemptId,
285
+ external_context_policy: built.webPolicy,
286
+ });
130
287
  const watched = withInactivityWatchdog(adapter.run(spec), {
131
288
  timeoutMs: deps.inactivityTimeoutMs,
289
+ countsAsProgress: countsAsAgentProgress,
132
290
  onTimeout: () => {
133
291
  reducerAbort.abort();
134
- void adapter.cancel?.(spec.session_id)?.catch(() => { });
292
+ cancelActiveSession();
135
293
  },
136
294
  isSuspended: () => false,
295
+ cleanupDeadlineMs: cleanupGraceMs,
137
296
  });
138
- for await (const ev of watched) {
139
- if (reducerAbort.signal.aborted)
297
+ const iterator = watched[Symbol.asyncIterator]();
298
+ for (;;) {
299
+ const pending = iterator.next();
300
+ const next = await Promise.race([
301
+ pending.then((result) => ({ kind: "next", result }), (error) => ({ kind: "error", error })),
302
+ stopped.then((reason) => ({
303
+ kind: "stopped",
304
+ reason,
305
+ })),
306
+ ]);
307
+ if (next.kind === "stopped") {
308
+ stoppedDuringRun = next.reason;
309
+ await drainAfterStop(iterator, pending);
140
310
  break;
141
- const safeEv = redactHarnessEvent(ev);
142
- safeInvoke(args.onHarnessEvent, safeEv);
143
- log.emit("harness.event", harnessEventPayload(adapter.id, attemptId, safeEv));
144
- appendLine(attemptEventsPath, JSON.stringify(safeEv));
145
- observeAttemptTelemetry(telemetry, safeEv);
146
- observeBudgetSignals(ledger, log, adapter.id, attemptId, safeEv, budgetSignalState);
147
- deps.quotaEventSink?.(adapter.id, safeEv);
148
- if (safeEv.type === "usage" && safeEv.usage?.cost_usd) {
149
- cost += safeEv.usage.cost_usd;
150
- if (safeEv.usage.estimated)
151
- costEstimated = true;
152
- log.emit("budget.observation", {
153
- harness_id: adapter.id,
154
- attempt_id: attemptId,
155
- kind: "spend",
156
- usd: safeEv.usage.cost_usd,
157
- estimated: safeEv.usage.estimated === true,
158
- });
159
311
  }
160
- answer.observe(safeEv);
161
- if (safeEv.type === "error")
162
- harnessError = safeEv.error ? redactSecrets(safeEv.error) : "harness emitted an error";
312
+ if (stopReason) {
313
+ stoppedDuringRun = stopReason;
314
+ await drainAfterStop(iterator, pending);
315
+ break;
316
+ }
317
+ if (next.kind === "error")
318
+ throw next.error;
319
+ if (next.result.done)
320
+ break;
321
+ observeEvent(next.result.value, true);
163
322
  }
164
323
  }
165
324
  catch (err) {
166
325
  harnessError = safeErrorMessage(err);
167
326
  }
168
327
  finally {
169
- clearTimeout(hardTimer);
170
- reducerHome.dispose();
171
- ledger.settle(lease.lease?.lease_id ?? "", attemptUsageCostSettlement(cost, costEstimated, attemptId, adapter.id, telemetry.authMode, telemetry.usageCost));
328
+ cleanupAttempt();
172
329
  }
173
330
  // D-16: unwrap the WorkReport envelope and finalize through the SAME contract as
174
331
  // every other attempt — a capable reducer route that broke its WorkReport
@@ -188,7 +345,7 @@ export async function runDeepScanReducer(deps, args) {
188
345
  workReportViolation: unwrapped.contractViolation,
189
346
  contextTerminalExhausted: telemetry.contextExhausted,
190
347
  });
191
- if (timedOut && !harnessError)
348
+ if (stoppedDuringRun === "timeout")
192
349
  harnessError = `deep-scan reducer timed out after ${deps.hardTimeoutMs}ms`;
193
350
  // A reducer must produce a CLEAN merged synthesis: a broken WorkReport contract,
194
351
  // a needs_input/incomplete attestation, or a terminal context exhaustion is a
@@ -209,11 +366,11 @@ export async function runDeepScanReducer(deps, args) {
209
366
  // reducer streamed is a cancellation — not a clean synthesis and not a typed
210
367
  // failure. Any partial output is discarded (deliverablePresent forced false)
211
368
  // so it can never be accepted as a merge, and the run terminalizes cancelled.
212
- const runCancelled = args.signal?.aborted === true;
369
+ const runCancelled = stoppedDuringRun === "cancelled";
213
370
  setAttemptOutcome(telemetry, {
214
371
  deliverablePresent: reportPresent && !runCancelled,
215
372
  gatesPassed: null,
216
- harnessErrored: harnessError !== null || runCancelled,
373
+ harnessErrored: harnessError !== null,
217
374
  webRequiredUnsatisfied: false,
218
375
  workState: finalized.workState,
219
376
  });
@@ -246,52 +403,24 @@ export async function runDeepScanReducer(deps, args) {
246
403
  });
247
404
  return { status: "success", report };
248
405
  }
249
- /**
250
- * #27 / D-6: decide the deep-scan synthesis outcome and, when warranted, run the
251
- * bounded reducer. Returns the typed `DeepScanSynthesis` telemetry status plus
252
- * the merged report (non-null only on a clean reducer success; the caller writes
253
- * an honest raw bundle otherwise). A width-1 (single-report) scan skips the
254
- * reducer; a budget-stopped/cancelled scan degrades without spending on a merge;
255
- * a scan with no synthesize-capable route degrades honestly.
256
- */
406
+ /** Run the reducer only when multiple reports and an eligible route exist. */
257
407
  export async function resolveDeepScanSynthesis(deps, args) {
408
+ const unreduced = (status, reason, reducerAttemptId = null) => ({
409
+ deepScanSynthesis: { status, reducer_attempt_id: reducerAttemptId, reason },
410
+ reducedReport: null,
411
+ });
258
412
  if (args.succeeded.length < 2) {
259
- return {
260
- deepScanSynthesis: {
261
- status: "skipped",
262
- reducer_attempt_id: null,
263
- reason: "single scout report needs no merge",
264
- },
265
- reducedReport: null,
266
- };
413
+ return unreduced("skipped", "single scout report needs no merge");
267
414
  }
268
415
  if (args.budgetStopped || args.aborted) {
269
- return {
270
- deepScanSynthesis: {
271
- status: "failed",
272
- reducer_attempt_id: null,
273
- reason: args.aborted
274
- ? "run cancelled before synthesis"
275
- : "budget exhausted before synthesis",
276
- },
277
- reducedReport: null,
278
- };
416
+ return unreduced("failed", args.aborted ? "run cancelled before synthesis" : "budget exhausted before synthesis");
279
417
  }
280
- // Eligible route: a successful scout whose harness manifest supports the
281
- // synthesize intent. Deep-scan repeats a surviving harness, so any routed slot
282
- // for that harness id is a valid reducer route.
418
+ // A successful scout's synthesize-capable route owns the merge.
283
419
  const eligible = args.succeeded
284
420
  .map((s) => args.adapters.find((a) => a.adapter.id === s.harnessId && a.supportsSynthesize))
285
421
  .find((a) => Boolean(a));
286
422
  if (!eligible) {
287
- return {
288
- deepScanSynthesis: {
289
- status: "failed",
290
- reducer_attempt_id: null,
291
- reason: "no synthesize-capable route among the scout harnesses",
292
- },
293
- reducedReport: null,
294
- };
423
+ return unreduced("failed", "no synthesize-capable route among the scout harnesses");
295
424
  }
296
425
  const reduced = await runDeepScanReducer(deps, {
297
426
  taskId: args.taskId,
@@ -319,30 +448,13 @@ export async function resolveDeepScanSynthesis(deps, args) {
319
448
  reducedReport: reduced.report,
320
449
  };
321
450
  }
322
- // INV-116: a mid-reducer cancellation degrades with NO merged report (the
323
- // partial output is discarded). The schema status has no `cancelled` member,
324
- // so it is disclosed as a failed synthesis whose reason names the cancel; the
325
- // run's own terminal is routed to `cancelled` by the caller's re-check.
451
+ // DeepScanSynthesis has no cancelled member; the outer run still terminalizes cancelled.
326
452
  if (reduced.status === "cancelled") {
327
- return {
328
- deepScanSynthesis: {
329
- status: "failed",
330
- reducer_attempt_id: DEEP_SCAN_REDUCER_ATTEMPT_ID,
331
- reason: "run cancelled during synthesis",
332
- },
333
- reducedReport: null,
334
- };
453
+ return unreduced("failed", "run cancelled during synthesis", DEEP_SCAN_REDUCER_ATTEMPT_ID);
335
454
  }
336
455
  const reason = reduced.status === "budget_denied"
337
456
  ? `reducer budget-denied: ${classifyBudgetFailure({ denial: reduced.denial, terminal: args.ledger.terminal() }).safeMessage}`
338
457
  : reduced.error;
339
- return {
340
- deepScanSynthesis: {
341
- status: "failed",
342
- reducer_attempt_id: DEEP_SCAN_REDUCER_ATTEMPT_ID,
343
- reason,
344
- },
345
- reducedReport: null,
346
- };
458
+ return unreduced("failed", reason, DEEP_SCAN_REDUCER_ATTEMPT_ID);
347
459
  }
348
460
  //# sourceMappingURL=deepScanReducer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepScanReducer.js","sourceRoot":"","sources":["../src/deepScanReducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepScanReducer.js","sourceRoot":"","sources":["../src/deepScanReducer.ts"],"names":[],"mappings":"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"}