@claudexor/orchestrator 4.1.0 → 4.2.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/dist/account-pool.d.ts +11 -0
- package/dist/account-pool.d.ts.map +1 -1
- package/dist/account-pool.js +9 -0
- package/dist/account-pool.js.map +1 -1
- package/dist/account-resolution.d.ts +3 -0
- package/dist/account-resolution.d.ts.map +1 -1
- package/dist/account-resolution.js +1 -0
- package/dist/account-resolution.js.map +1 -1
- package/dist/attemptTelemetry.d.ts +4 -6
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +1 -1
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/budgetFailure.d.ts +4 -1
- package/dist/budgetFailure.d.ts.map +1 -1
- package/dist/budgetFailure.js +4 -2
- package/dist/budgetFailure.js.map +1 -1
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +7 -2
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/candidateOutputs.d.ts.map +1 -1
- package/dist/candidateOutputs.js +6 -0
- package/dist/candidateOutputs.js.map +1 -1
- package/dist/candidateReview.d.ts +3 -1
- package/dist/candidateReview.d.ts.map +1 -1
- package/dist/candidateReview.js +6 -1
- package/dist/candidateReview.js.map +1 -1
- package/dist/candidateTerminals.d.ts +12 -1
- package/dist/candidateTerminals.d.ts.map +1 -1
- package/dist/candidateTerminals.js +51 -21
- package/dist/candidateTerminals.js.map +1 -1
- package/dist/captureRefusal.d.ts +28 -0
- package/dist/captureRefusal.d.ts.map +1 -0
- package/dist/captureRefusal.js +54 -0
- package/dist/captureRefusal.js.map +1 -0
- package/dist/continuity-terminal.d.ts +3 -1
- package/dist/continuity-terminal.d.ts.map +1 -1
- package/dist/continuity-terminal.js.map +1 -1
- package/dist/contract-gates.d.ts +10 -2
- package/dist/contract-gates.d.ts.map +1 -1
- package/dist/contract-gates.js +14 -1
- package/dist/contract-gates.js.map +1 -1
- package/dist/credential-profile-rotation.js +2 -3
- package/dist/credential-profile-rotation.js.map +1 -1
- package/dist/delegationFailure.d.ts +104 -7
- package/dist/delegationFailure.d.ts.map +1 -1
- package/dist/delegationFailure.js +47 -31
- package/dist/delegationFailure.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/inrun-continuity-types.d.ts +13 -1
- package/dist/inrun-continuity-types.d.ts.map +1 -1
- package/dist/inrun-continuity.d.ts +9 -2
- package/dist/inrun-continuity.d.ts.map +1 -1
- package/dist/inrun-continuity.js +43 -23
- package/dist/inrun-continuity.js.map +1 -1
- package/dist/inrun-continuity.test-support.d.ts +6 -2
- package/dist/inrun-continuity.test-support.d.ts.map +1 -1
- package/dist/inrun-continuity.test-support.js +4 -1
- package/dist/inrun-continuity.test-support.js.map +1 -1
- package/dist/orchestrator-credentials.d.ts +5 -4
- package/dist/orchestrator-credentials.d.ts.map +1 -1
- package/dist/orchestrator-credentials.js +7 -4
- package/dist/orchestrator-credentials.js.map +1 -1
- package/dist/orchestrator.d.ts +11 -3
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +341 -414
- package/dist/orchestrator.js.map +1 -1
- package/dist/persistedPatch.js +2 -2
- package/dist/persistedPatch.js.map +1 -1
- package/dist/pool-attempt-evidence.d.ts +62 -0
- package/dist/pool-attempt-evidence.d.ts.map +1 -0
- package/dist/pool-attempt-evidence.js +153 -0
- package/dist/pool-attempt-evidence.js.map +1 -0
- package/dist/pre-progress-refusal.d.ts +43 -6
- package/dist/pre-progress-refusal.d.ts.map +1 -1
- package/dist/pre-progress-refusal.js +53 -8
- package/dist/pre-progress-refusal.js.map +1 -1
- package/dist/readonlyTerminals.d.ts +55 -0
- package/dist/readonlyTerminals.d.ts.map +1 -0
- package/dist/readonlyTerminals.js +205 -0
- package/dist/readonlyTerminals.js.map +1 -0
- package/dist/reviewEvidence.d.ts +4 -0
- package/dist/reviewEvidence.d.ts.map +1 -0
- package/dist/reviewEvidence.js +46 -0
- package/dist/reviewEvidence.js.map +1 -0
- package/dist/rotation-predicate.d.ts +7 -23
- package/dist/rotation-predicate.d.ts.map +1 -1
- package/dist/rotation-predicate.js +45 -0
- package/dist/rotation-predicate.js.map +1 -1
- package/dist/runEventLog.d.ts +1 -0
- package/dist/runEventLog.d.ts.map +1 -1
- package/dist/runEventLog.js +3 -2
- package/dist/runEventLog.js.map +1 -1
- package/dist/runScope.d.ts +86 -0
- package/dist/runScope.d.ts.map +1 -0
- package/dist/runScope.js +181 -0
- package/dist/runScope.js.map +1 -0
- package/dist/runTerminalContext.d.ts +4 -0
- package/dist/runTerminalContext.d.ts.map +1 -1
- package/dist/runTerminalContext.js.map +1 -1
- package/dist/runTerminalHelpers.d.ts +50 -0
- package/dist/runTerminalHelpers.d.ts.map +1 -0
- package/dist/runTerminalHelpers.js +200 -0
- package/dist/runTerminalHelpers.js.map +1 -0
- package/dist/runTerminalResults.d.ts +25 -3
- package/dist/runTerminalResults.d.ts.map +1 -1
- package/dist/runTerminalResults.js +61 -29
- package/dist/runTerminalResults.js.map +1 -1
- package/dist/runTerminals.d.ts +1 -12
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +113 -140
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts +14 -11
- package/dist/secretDiff.d.ts.map +1 -1
- package/dist/secretDiff.js +21 -28
- package/dist/secretDiff.js.map +1 -1
- package/dist/terminalOutcome.d.ts +24 -4
- package/dist/terminalOutcome.d.ts.map +1 -1
- package/dist/terminalOutcome.js +32 -5
- package/dist/terminalOutcome.js.map +1 -1
- package/package.json +17 -17
package/dist/runScope.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-run process custody: mint one scope marker before the first launch,
|
|
3
|
+
* carry it (plus the host facts a scoped HOME owes the child) in every harness
|
|
4
|
+
* `spec.env` the run builds, and end the marker's members at the whole-run
|
|
5
|
+
* terminal barrier on every terminal — the engine side of "a finished
|
|
6
|
+
* delegated run ends every OS process it left" (owner 1A).
|
|
7
|
+
*
|
|
8
|
+
* The durable discovery index lives in the daemon data root and is injected as
|
|
9
|
+
* a {@link RunScopeCustodian} (the daemon wires {@link DaemonRunScopeIndex};
|
|
10
|
+
* tests inject a temp one). An embedder without one still gets in-process
|
|
11
|
+
* custody — a minted marker, carried and reaped at the barrier — but no
|
|
12
|
+
* crash-recovery index, which is disclosed here rather than silently absent.
|
|
13
|
+
*/
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
import { harnessHostFactsEnv, mintRunScopeMarker, reapScopeMembers, scopeMarkerEnv, } from "@claudexor/core";
|
|
16
|
+
import { RunProcessScopeOutcome, } from "@claudexor/schema";
|
|
17
|
+
/**
|
|
18
|
+
* The default custodian for an embedder/test with no daemon index: it mints
|
|
19
|
+
* and reaps in process (no durable crash-recovery record), remembering each
|
|
20
|
+
* marker's opening time so the census can skip processes older than the
|
|
21
|
+
* scope. The reaper's own per-marker coalescing makes repeat settles safe.
|
|
22
|
+
*/
|
|
23
|
+
export function createInProcessRunScopeCustodian(reap = reapScopeMembers) {
|
|
24
|
+
const openedAt = new Map();
|
|
25
|
+
return {
|
|
26
|
+
async open() {
|
|
27
|
+
const marker = mintRunScopeMarker();
|
|
28
|
+
openedAt.set(marker, new Date().toISOString());
|
|
29
|
+
return { marker };
|
|
30
|
+
},
|
|
31
|
+
async settle(_runId, marker) {
|
|
32
|
+
const scopeStartAt = openedAt.get(marker) ?? null;
|
|
33
|
+
openedAt.delete(marker);
|
|
34
|
+
return reap({ marker, scopeStartAt });
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export const inProcessRunScopeCustodian = createInProcessRunScopeCustodian();
|
|
39
|
+
/**
|
|
40
|
+
* Add the run's scope marker (and, when the env is a scoped native-state HOME,
|
|
41
|
+
* the host facts) to a harness spec env WITHOUT overwriting the existing
|
|
42
|
+
* HOME/config/auth patch. The marker is applied last so it always survives.
|
|
43
|
+
* `baseEnv` may be absent (an in-place run that inherits the operator env):
|
|
44
|
+
* the marker still applies so the run can end what it leaves. Returns
|
|
45
|
+
* `undefined` only when there is no marker (custody disabled).
|
|
46
|
+
*/
|
|
47
|
+
export function scopedSpecEnv(marker, baseEnv, options = {}) {
|
|
48
|
+
if (!marker)
|
|
49
|
+
return baseEnv;
|
|
50
|
+
return {
|
|
51
|
+
...(baseEnv ?? {}),
|
|
52
|
+
...harnessHostFactsEnv(baseEnv, options),
|
|
53
|
+
...scopeMarkerEnv(marker),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The env patch for a deterministic command the run itself launches (its
|
|
58
|
+
* candidate gates, final verification and adoption): the scope marker alone, so
|
|
59
|
+
* whatever the command leaves running is ended at the whole-run barrier. The
|
|
60
|
+
* gate keeps its own HOME and allowlist; nothing is cleaned up per command.
|
|
61
|
+
*/
|
|
62
|
+
export function runScopeGateEnv(marker) {
|
|
63
|
+
return marker ? scopeMarkerEnv(marker) : undefined;
|
|
64
|
+
}
|
|
65
|
+
function toFacts(marker, outcome) {
|
|
66
|
+
return RunProcessScopeOutcome.parse({
|
|
67
|
+
marker,
|
|
68
|
+
coverage: outcome.coverage,
|
|
69
|
+
census: outcome.census,
|
|
70
|
+
census_failure: outcome.censusFailure,
|
|
71
|
+
restricted: outcome.restricted,
|
|
72
|
+
ended: outcome.ended.map((m) => ({ pid: m.pid, start_token: m.startToken })),
|
|
73
|
+
survivors: outcome.survivors.map((m) => ({ pid: m.pid, start_token: m.startToken })),
|
|
74
|
+
unreadable: outcome.unreadable.map((u) => ({ pid: u.pid, reason: u.reason })),
|
|
75
|
+
reused_groups: outcome.reusedGroups,
|
|
76
|
+
settled: outcome.settled,
|
|
77
|
+
completeness: outcome.completeness,
|
|
78
|
+
completeness_reason: outcome.completenessReason,
|
|
79
|
+
incomplete: outcome.incomplete,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** The outcome written when the custodian itself failed: unknown, never clean. */
|
|
83
|
+
export function failedScopeOutcome(reason) {
|
|
84
|
+
return {
|
|
85
|
+
coverage: "marker",
|
|
86
|
+
census: "failed",
|
|
87
|
+
censusFailure: reason,
|
|
88
|
+
ended: [],
|
|
89
|
+
survivors: [],
|
|
90
|
+
unreadable: [],
|
|
91
|
+
reusedGroups: [],
|
|
92
|
+
settled: false,
|
|
93
|
+
incomplete: false,
|
|
94
|
+
completeness: "not_provable",
|
|
95
|
+
completenessReason: reason,
|
|
96
|
+
restricted: process.platform === "darwin",
|
|
97
|
+
durationMs: 0,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Write the scope outcome to its OWN terminal artifact (`final/process_scope.yaml`)
|
|
102
|
+
* so it survives the record rewrites and projections the immutable RunFacts
|
|
103
|
+
* receipt goes through. Best-effort: a write failure never fails an
|
|
104
|
+
* already-terminal run (the reap itself already happened).
|
|
105
|
+
*/
|
|
106
|
+
export function writeRunScopeFacts(ctx, marker, outcome) {
|
|
107
|
+
try {
|
|
108
|
+
const facts = toFacts(marker, outcome);
|
|
109
|
+
ctx.store.writeYaml(join(ctx.paths.finalDir, "process_scope.yaml"), facts);
|
|
110
|
+
return facts;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* The route-admitting readiness probe and the run must share the EXACT env
|
|
118
|
+
* (W3.3 / TZ-1 §B: evidence gathered in one env while the run executes in
|
|
119
|
+
* another is not evidence). The marker and host facts therefore join the
|
|
120
|
+
* route context itself, so the probe, the model inventory and the spawn all
|
|
121
|
+
* see one env; `scopedSpecEnv` on the eventual spec is then idempotent.
|
|
122
|
+
*/
|
|
123
|
+
export function scopedRouteContext(ctx, marker) {
|
|
124
|
+
if (!marker)
|
|
125
|
+
return ctx;
|
|
126
|
+
const envForHarness = ctx.envForHarness;
|
|
127
|
+
return {
|
|
128
|
+
...ctx,
|
|
129
|
+
env: scopedSpecEnv(marker, ctx.env) ?? ctx.env,
|
|
130
|
+
...(envForHarness
|
|
131
|
+
? {
|
|
132
|
+
envForHarness: (harnessId) => {
|
|
133
|
+
const lane = envForHarness(harnessId);
|
|
134
|
+
return lane ? (scopedSpecEnv(marker, lane) ?? lane) : null;
|
|
135
|
+
},
|
|
136
|
+
}
|
|
137
|
+
: {}),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export async function openRunScopeCustody(custodian, runId) {
|
|
141
|
+
const custody = custodian ?? inProcessRunScopeCustodian;
|
|
142
|
+
const { marker } = await custody.open(runId);
|
|
143
|
+
let announcedContext = null;
|
|
144
|
+
let settlement = null;
|
|
145
|
+
const settle = () => {
|
|
146
|
+
settlement ??= custody
|
|
147
|
+
.settle(runId, marker)
|
|
148
|
+
.catch((error) => failedScopeOutcome(`scope settlement failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
149
|
+
return settlement;
|
|
150
|
+
};
|
|
151
|
+
let recorded = false;
|
|
152
|
+
const record = async () => {
|
|
153
|
+
const outcome = await settle();
|
|
154
|
+
if (!announcedContext || recorded)
|
|
155
|
+
return;
|
|
156
|
+
recorded = true;
|
|
157
|
+
writeRunScopeFacts(announcedContext, marker, outcome);
|
|
158
|
+
};
|
|
159
|
+
return {
|
|
160
|
+
marker,
|
|
161
|
+
announced: (announce) => (a) => {
|
|
162
|
+
announcedContext = a;
|
|
163
|
+
announce(a);
|
|
164
|
+
a.log.deferTerminal();
|
|
165
|
+
},
|
|
166
|
+
barrier: async (drain) => {
|
|
167
|
+
try {
|
|
168
|
+
await drain();
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
await record();
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
record,
|
|
175
|
+
settleUnannounced: async () => {
|
|
176
|
+
if (!announcedContext)
|
|
177
|
+
await settle();
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=runScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runScope.js","sourceRoot":"","sources":["../src/runScope.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { ArtifactStore } from "@claudexor/artifact-store";
|
|
|
2
2
|
import type { BudgetLedger, BudgetTerminal } from "@claudexor/budget";
|
|
3
3
|
import type { EventLog } from "@claudexor/event-log";
|
|
4
4
|
import type { ModeKind } from "@claudexor/schema";
|
|
5
|
+
import type { ContinuityTerminalFacts } from "./continuity-terminal.js";
|
|
5
6
|
export interface AnnouncedRunContext {
|
|
6
7
|
log: EventLog;
|
|
7
8
|
store: ArtifactStore;
|
|
@@ -24,6 +25,9 @@ export interface AnnouncedRunContext {
|
|
|
24
25
|
* Ordinary runs may already have emitted a non-deferred terminal and must
|
|
25
26
|
* never be terminalized a second time by the post-drain recheck. */
|
|
26
27
|
recheckBudgetAfterBarrier?: () => boolean;
|
|
28
|
+
/** The lane's own attempts once they exist (each with its tries' accounts):
|
|
29
|
+
* a failure this owner stamps after the strategy names their failed tries. */
|
|
30
|
+
attempts?: () => readonly ContinuityTerminalFacts[];
|
|
27
31
|
}
|
|
28
32
|
type AnnouncedRunIdentity = Pick<AnnouncedRunContext, "log" | "store" | "paths" | "runId" | "taskId" | "mode" | "phase">;
|
|
29
33
|
export declare function announcedRunContext(identity: AnnouncedRunIdentity, ledger: BudgetLedger, hasDelegateAuthority: () => boolean): AnnouncedRunContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTerminalContext.d.ts","sourceRoot":"","sources":["../src/runTerminalContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"runTerminalContext.d.ts","sourceRoot":"","sources":["../src/runTerminalContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd;oEACgE;IAChE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC7D;kFAC8E;IAC9E,cAAc,CAAC,EAAE,MAAM,cAAc,CAAC;IACtC;;wEAEoE;IACpE,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1C;kFAC8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,SAAS,uBAAuB,EAAE,CAAC;CACrD;AAED,KAAK,oBAAoB,GAAG,IAAI,CAC9B,mBAAmB,EACnB,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAClE,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,YAAY,EACpB,oBAAoB,EAAE,MAAM,OAAO,GAClC,mBAAmB,CAUrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTerminalContext.js","sourceRoot":"","sources":["../src/runTerminalContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runTerminalContext.js","sourceRoot":"","sources":["../src/runTerminalContext.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,mBAAmB,CACjC,QAA8B,EAC9B,MAAoB,EACpB,oBAAmC;IAEnC,OAAO;QACL,GAAG,QAAQ;QACX,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;QACnC,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;QACxC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE;QACrD,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvC,yBAAyB,EAAE,oBAAoB;KAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type CancelReasonCode, type PoolAttemptFailure, type RunOutcomeFacts as RunOutcomeFactsType } from "@claudexor/schema";
|
|
2
|
+
import type { BudgetTerminal } from "@claudexor/budget";
|
|
3
|
+
import type { TerminalRunEventType } from "@claudexor/event-log";
|
|
4
|
+
import { type SettledBudgetSnapshot } from "./decisionBudget.js";
|
|
5
|
+
import type { OrchestratorResult } from "./orchestrator.js";
|
|
6
|
+
import type { AnnouncedRunContext } from "./runTerminalContext.js";
|
|
7
|
+
export declare function ownsDelegateDrain(context: AnnouncedRunContext): boolean;
|
|
8
|
+
export declare function postDrainBudgetFailure(context: AnnouncedRunContext, terminal: Exclude<BudgetTerminal, null>, budget: SettledBudgetSnapshot, prior: OrchestratorResult): OrchestratorResult;
|
|
9
|
+
/** The terminal-facts failure's message with the run's list, like every
|
|
10
|
+
* failure terminal; an unreadable history costs only the list, never the terminal. */
|
|
11
|
+
export declare function terminalFactsFailure(context: AnnouncedRunContext, detail: string): {
|
|
12
|
+
message: string;
|
|
13
|
+
poolAttempts: PoolAttemptFailure[];
|
|
14
|
+
};
|
|
15
|
+
/** A cancellation the terminal commit chose over the strategy's own verdict. */
|
|
16
|
+
export interface CommittedCancellation {
|
|
17
|
+
summary: string;
|
|
18
|
+
cancelReason?: string;
|
|
19
|
+
payload: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The cancel landed after the strategy's last checkpoint, so the terminal
|
|
23
|
+
* commit (not the strategy) chose it: state it like every cancelled terminal.
|
|
24
|
+
* The run's collected attempts name their earlier failed tries on the event and
|
|
25
|
+
* in summary.md; the verdict's own failure cause and record are not the
|
|
26
|
+
* cancel's (a cancellation has none), except a record that carries capture
|
|
27
|
+
* facts: it stays on the public failure surface re-labelled with this same
|
|
28
|
+
* statement (`clearFailureArtifact`), and the event keeps its address. Best
|
|
29
|
+
* effort: an unreadable history costs only the list, an unwritable artifact
|
|
30
|
+
* never the terminal.
|
|
31
|
+
*/
|
|
32
|
+
export declare function commitCancellation(context: AnnouncedRunContext, signal: AbortSignal, payload: Record<string, unknown>): CommittedCancellation;
|
|
33
|
+
export declare function terminalEventTypeFor(_originalType: TerminalRunEventType, outcome: RunOutcomeFactsType): TerminalRunEventType;
|
|
34
|
+
/** Map an abort-signal reason token to its typed terminal RunReason. The
|
|
35
|
+
* abort reason is the ONE channel a cancel's provenance survives on — before
|
|
36
|
+
* this mapping every host-initiated cancel coerced to user_cancelled (the
|
|
37
|
+
* daemon's own ctrl-c relay and the MCP host teardown included). The client
|
|
38
|
+
* vocabulary is read from CANCEL_REASON_CODES so a future member cannot be
|
|
39
|
+
* silently coerced away here while the HTTP boundary already admits it;
|
|
40
|
+
* wall_clock_exceeded stays daemon-internal (deliberately NOT in the client
|
|
41
|
+
* enum — unforgeable). Unknown tokens keep the user_cancelled coercion for
|
|
42
|
+
* wire compatibility. */
|
|
43
|
+
export declare function cancelReasonFromSignalToken(reason: unknown): "wall_clock_exceeded" | CancelReasonCode;
|
|
44
|
+
export declare function cancellationFacts(signal: AbortSignal, prior: RunOutcomeFactsType): RunOutcomeFactsType;
|
|
45
|
+
export declare function terminalOutcomeFromPayload(payload: Record<string, unknown>): RunOutcomeFactsType;
|
|
46
|
+
export declare function settledSpend(a: AnnouncedRunContext): number | null;
|
|
47
|
+
export declare function isTerminalRecoveryRequired(error: unknown): boolean;
|
|
48
|
+
export declare function committedOutcome(a: AnnouncedRunContext): RunOutcomeFactsType | null;
|
|
49
|
+
export declare function committedResult(a: AnnouncedRunContext, outcome: RunOutcomeFactsType, spendUsd: number | null): OrchestratorResult;
|
|
50
|
+
//# sourceMappingURL=runTerminalHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runTerminalHelpers.d.ts","sourceRoot":"","sources":["../src/runTerminalHelpers.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,gBAAgB,EAKrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,IAAI,mBAAmB,EAC5C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAQnE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CASvE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,EACvC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CAoCpB;AAED;sFACsF;AACtF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAOzD;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,qBAAqB,CA8BvB;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,oBAAoB,EACnC,OAAO,EAAE,mBAAmB,GAC3B,oBAAoB,CAOtB;AAED;;;;;;;;yBAQyB;AACzB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,GACd,qBAAqB,GAAG,gBAAgB,CAG1C;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,mBAAmB,GACzB,mBAAmB,CAErB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAmBhG;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAMlE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,IAAI,CAWnF;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,mBAAmB,EACtB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,kBAAkB,CAgBpB"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers of the whole-strategy terminal net (`runTerminals.ts`): the
|
|
3
|
+
* terminal event type from the canonical axes, cancel-reason mapping, payload
|
|
4
|
+
* decoding, committed-outcome recovery and the post-drain budget failure.
|
|
5
|
+
*/
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { makeOutcomeFacts, needsOperatorAttention, normalizeCancelReasonCode, RunOutcomeFacts, } from "@claudexor/schema";
|
|
8
|
+
import { readTextSafe } from "@claudexor/util";
|
|
9
|
+
import { budgetFailureRecord, classifyBudgetFailure } from "./budgetFailure.js";
|
|
10
|
+
import { poolFailure } from "./pool-attempt-evidence.js";
|
|
11
|
+
import { reconcileDecisionBudget } from "./decisionBudget.js";
|
|
12
|
+
import { cancellationStatement, writeFailure } from "./runTerminalResults.js";
|
|
13
|
+
import { clearFailureArtifact, reconcileWorkProductTerminal, terminalOutcomeFacts, } from "./terminalOutcome.js";
|
|
14
|
+
export function ownsDelegateDrain(context) {
|
|
15
|
+
try {
|
|
16
|
+
return context.recheckBudgetAfterBarrier?.() === true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Reconciliation is an extra authority granted only to a proven Delegate
|
|
20
|
+
// drain owner. An unreadable ownership predicate must fail closed instead
|
|
21
|
+
// of touching an ordinary Agent's already-terminal artifacts.
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function postDrainBudgetFailure(context, terminal, budget, prior) {
|
|
26
|
+
const mapping = classifyBudgetFailure({ denial: null, terminal });
|
|
27
|
+
const facts = terminalOutcomeFacts(prior.facts, "failed", mapping.reason);
|
|
28
|
+
reconcileDecisionBudget(context, budget, { facts, why: mapping.safeMessage });
|
|
29
|
+
reconcileWorkProductTerminal(context, facts);
|
|
30
|
+
const { message, poolAttempts } = poolFailure(mapping.safeMessage, context.attempts?.() ?? []);
|
|
31
|
+
context.store.writeText(join(context.paths.finalDir, "summary.md"), `# Run ${context.runId} (${context.mode})\n\n- Lifecycle: failed (${mapping.reason})\n- Phase: budget\n\n${message}\n`);
|
|
32
|
+
writeFailure(context.store, context.paths, {
|
|
33
|
+
...budgetFailureRecord(mapping, { runDir: context.paths.root }),
|
|
34
|
+
safeMessage: message,
|
|
35
|
+
poolAttempts,
|
|
36
|
+
});
|
|
37
|
+
context.log.emit("output.ready", {
|
|
38
|
+
kind: "summary",
|
|
39
|
+
path: "final/summary.md",
|
|
40
|
+
state: "diagnostic",
|
|
41
|
+
});
|
|
42
|
+
context.log.emit("run.failed", {
|
|
43
|
+
lifecycle: "failed",
|
|
44
|
+
facts,
|
|
45
|
+
reason: mapping.reason,
|
|
46
|
+
phase: "budget",
|
|
47
|
+
error: message,
|
|
48
|
+
pool_attempts: poolAttempts,
|
|
49
|
+
failure_ref: "final/failure.yaml",
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
...prior,
|
|
53
|
+
lifecycle: "failed",
|
|
54
|
+
facts,
|
|
55
|
+
summary: message,
|
|
56
|
+
spendUsd: budget.spendUsd,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** The terminal-facts failure's message with the run's list, like every
|
|
60
|
+
* failure terminal; an unreadable history costs only the list, never the terminal. */
|
|
61
|
+
export function terminalFactsFailure(context, detail) {
|
|
62
|
+
const message = `terminal facts preparation failed: ${detail}`;
|
|
63
|
+
try {
|
|
64
|
+
return poolFailure(message, context.attempts?.() ?? []);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return { message, poolAttempts: [] };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The cancel landed after the strategy's last checkpoint, so the terminal
|
|
72
|
+
* commit (not the strategy) chose it: state it like every cancelled terminal.
|
|
73
|
+
* The run's collected attempts name their earlier failed tries on the event and
|
|
74
|
+
* in summary.md; the verdict's own failure cause and record are not the
|
|
75
|
+
* cancel's (a cancellation has none), except a record that carries capture
|
|
76
|
+
* facts: it stays on the public failure surface re-labelled with this same
|
|
77
|
+
* statement (`clearFailureArtifact`), and the event keeps its address. Best
|
|
78
|
+
* effort: an unreadable history costs only the list, an unwritable artifact
|
|
79
|
+
* never the terminal.
|
|
80
|
+
*/
|
|
81
|
+
export function commitCancellation(context, signal, payload) {
|
|
82
|
+
let attempts = null;
|
|
83
|
+
try {
|
|
84
|
+
attempts = context.attempts?.() ?? null;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* the cancellation stands without its list */
|
|
88
|
+
}
|
|
89
|
+
const statement = cancellationStatement(context.runId, context.mode, signal, attempts ?? []);
|
|
90
|
+
try {
|
|
91
|
+
context.store.writeText(join(context.paths.finalDir, "summary.md"), statement.markdown);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
/* the terminal event remains the authority */
|
|
95
|
+
}
|
|
96
|
+
let failureKept = false;
|
|
97
|
+
try {
|
|
98
|
+
failureKept = clearFailureArtifact(context, { summary: statement.summary });
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
/* the terminal event remains the authority */
|
|
102
|
+
}
|
|
103
|
+
const { phase: _phase, error: _error, failure_ref: _failureRef, ...kept } = payload;
|
|
104
|
+
return {
|
|
105
|
+
summary: statement.summary,
|
|
106
|
+
...(statement.cancelReason ? { cancelReason: statement.cancelReason } : {}),
|
|
107
|
+
payload: {
|
|
108
|
+
...kept,
|
|
109
|
+
...(failureKept ? { failure_ref: "final/failure.yaml" } : {}),
|
|
110
|
+
...(statement.cancelReason ? { cancel_reason: statement.cancelReason } : {}),
|
|
111
|
+
...(attempts ? { pool_attempts: statement.poolAttempts } : {}),
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function terminalEventTypeFor(_originalType, outcome) {
|
|
116
|
+
if (outcome.lifecycle !== "succeeded")
|
|
117
|
+
return "run.failed";
|
|
118
|
+
if (needsOperatorAttention(outcome, false))
|
|
119
|
+
return "run.blocked";
|
|
120
|
+
// The canonical axes own terminal type. Preserving a producer-authored
|
|
121
|
+
// run.blocked with clean axes creates an unexplainable block (no reason or
|
|
122
|
+
// required action), so it is normalized to completed.
|
|
123
|
+
return "run.completed";
|
|
124
|
+
}
|
|
125
|
+
/** Map an abort-signal reason token to its typed terminal RunReason. The
|
|
126
|
+
* abort reason is the ONE channel a cancel's provenance survives on — before
|
|
127
|
+
* this mapping every host-initiated cancel coerced to user_cancelled (the
|
|
128
|
+
* daemon's own ctrl-c relay and the MCP host teardown included). The client
|
|
129
|
+
* vocabulary is read from CANCEL_REASON_CODES so a future member cannot be
|
|
130
|
+
* silently coerced away here while the HTTP boundary already admits it;
|
|
131
|
+
* wall_clock_exceeded stays daemon-internal (deliberately NOT in the client
|
|
132
|
+
* enum — unforgeable). Unknown tokens keep the user_cancelled coercion for
|
|
133
|
+
* wire compatibility. */
|
|
134
|
+
export function cancelReasonFromSignalToken(reason) {
|
|
135
|
+
if (reason === "wall_clock_exceeded")
|
|
136
|
+
return "wall_clock_exceeded";
|
|
137
|
+
return normalizeCancelReasonCode(reason) ?? "user_cancelled";
|
|
138
|
+
}
|
|
139
|
+
export function cancellationFacts(signal, prior) {
|
|
140
|
+
return terminalOutcomeFacts(prior, "cancelled", cancelReasonFromSignalToken(signal.reason));
|
|
141
|
+
}
|
|
142
|
+
export function terminalOutcomeFromPayload(payload) {
|
|
143
|
+
const parsed = RunOutcomeFacts.safeParse(payload["facts"]);
|
|
144
|
+
if (parsed.success)
|
|
145
|
+
return parsed.data;
|
|
146
|
+
// Older in-process terminal producers (including the Delegate drain
|
|
147
|
+
// contract) supplied only lifecycle. Keep that compatible while treating an
|
|
148
|
+
// explicitly malformed facts object as a contradiction that must fail
|
|
149
|
+
// closed through the terminal-facts path below.
|
|
150
|
+
if (!Object.prototype.hasOwnProperty.call(payload, "facts")) {
|
|
151
|
+
const lifecycle = payload["lifecycle"];
|
|
152
|
+
if (lifecycle === "succeeded" ||
|
|
153
|
+
lifecycle === "failed" ||
|
|
154
|
+
lifecycle === "cancelled" ||
|
|
155
|
+
lifecycle === "interrupted") {
|
|
156
|
+
return makeOutcomeFacts(lifecycle);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return RunOutcomeFacts.parse(payload["facts"]);
|
|
160
|
+
}
|
|
161
|
+
export function settledSpend(a) {
|
|
162
|
+
try {
|
|
163
|
+
return a.spend ? a.spend() : null;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export function isTerminalRecoveryRequired(error) {
|
|
170
|
+
return (!!error &&
|
|
171
|
+
typeof error === "object" &&
|
|
172
|
+
"code" in error &&
|
|
173
|
+
error.code === "terminal_recovery_required");
|
|
174
|
+
}
|
|
175
|
+
export function committedOutcome(a) {
|
|
176
|
+
const terminal = [...a.log.readAll().events]
|
|
177
|
+
.reverse()
|
|
178
|
+
.find((event) => event.type === "run.completed" ||
|
|
179
|
+
event.type === "run.blocked" ||
|
|
180
|
+
event.type === "run.failed");
|
|
181
|
+
const parsed = RunOutcomeFacts.safeParse(terminal?.payload["facts"]);
|
|
182
|
+
return parsed.success ? parsed.data : null;
|
|
183
|
+
}
|
|
184
|
+
export function committedResult(a, outcome, spendUsd) {
|
|
185
|
+
const summary = readTextSafe(join(a.paths.finalDir, "summary.md"))?.trim().slice(0, 400) ??
|
|
186
|
+
`run terminal committed with lifecycle ${outcome.lifecycle}`;
|
|
187
|
+
return {
|
|
188
|
+
runId: a.runId,
|
|
189
|
+
taskId: a.taskId,
|
|
190
|
+
mode: a.mode,
|
|
191
|
+
lifecycle: outcome.lifecycle,
|
|
192
|
+
facts: outcome,
|
|
193
|
+
winner: null,
|
|
194
|
+
runDir: a.paths.root,
|
|
195
|
+
summary,
|
|
196
|
+
candidates: [],
|
|
197
|
+
spendUsd,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=runTerminalHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runTerminalHelpers.js","sourceRoot":"","sources":["../src/runTerminalHelpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAEL,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,GAGhB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,qBAAqB,CAAC;AAG1F,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,yBAAyB,EAAE,EAAE,KAAK,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,0EAA0E;QAC1E,8DAA8D;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA4B,EAC5B,QAAuC,EACvC,MAA6B,EAC7B,KAAyB;IAEzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,4BAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,KAAK,CAAC,SAAS,CACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,EAC1C,SAAS,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,6BAA6B,OAAO,CAAC,MAAM,yBAAyB,OAAO,IAAI,CACvH,CAAC;IACF,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;QACzC,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/D,WAAW,EAAE,OAAO;QACpB,YAAY;KACb,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;QAC/B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;QAC7B,SAAS,EAAE,QAAQ;QACnB,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,YAAY;QAC3B,WAAW,EAAE,oBAAoB;KAClC,CAAC,CAAC;IACH,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,QAAQ;QACnB,KAAK;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED;sFACsF;AACtF,MAAM,UAAU,oBAAoB,CAClC,OAA4B,EAC5B,MAAc;IAEd,MAAM,OAAO,GAAG,sCAAsC,MAAM,EAAE,CAAC;IAC/D,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AASD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA4B,EAC5B,MAAmB,EACnB,OAAgC;IAEhC,IAAI,QAAQ,GAA8C,IAAI,CAAC;IAC/D,IAAI,CAAC;QACH,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7F,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACpF,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE;YACP,GAAG,IAAI;YACP,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,aAAmC,EACnC,OAA4B;IAE5B,IAAI,OAAO,CAAC,SAAS,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC;IAC3D,IAAI,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IACjE,uEAAuE;IACvE,2EAA2E;IAC3E,sDAAsD;IACtD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;yBAQyB;AACzB,MAAM,UAAU,2BAA2B,CACzC,MAAe;IAEf,IAAI,MAAM,KAAK,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACnE,OAAO,yBAAyB,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAmB,EACnB,KAA0B;IAE1B,OAAO,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,2BAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAgC;IACzE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACvC,oEAAoE;IACpE,4EAA4E;IAC5E,sEAAsE;IACtE,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,IACE,SAAS,KAAK,WAAW;YACzB,SAAS,KAAK,QAAQ;YACtB,SAAS,KAAK,WAAW;YACzB,SAAS,KAAK,aAAa,EAC3B,CAAC;YACD,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAsB;IACjD,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACvD,OAAO,CACL,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,KAAK,4BAA4B,CACpE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAsB;IACrD,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;SACzC,OAAO,EAAE;SACT,IAAI,CACH,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,KAAK,CAAC,IAAI,KAAK,aAAa;QAC5B,KAAK,CAAC,IAAI,KAAK,YAAY,CAC9B,CAAC;IACJ,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,CAAsB,EACtB,OAA4B,EAC5B,QAAuB;IAEvB,MAAM,OAAO,GACX,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACxE,yCAAyC,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/D,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;QACpB,OAAO;QACP,UAAU,EAAE,EAAE;QACd,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ArtifactStore } from "@claudexor/artifact-store";
|
|
2
2
|
import type { EventLog } from "@claudexor/event-log";
|
|
3
|
-
import { RunFailure, RunFailureCode, type ModeKind, type RunOutcomeFacts, type RunResumable, type VendorFailureEvidence, HarnessRequestRefusal } from "@claudexor/schema";
|
|
3
|
+
import { RunFailure, RunFailureCode, type ModeKind, type RunOutcomeFacts, type RunResumable, type VendorFailureEvidence, type PoolAttemptFailure, HarnessRequestRefusal } from "@claudexor/schema";
|
|
4
4
|
import type { OrchestratorResult } from "./orchestrator.js";
|
|
5
5
|
import { type ContinuityTerminalFacts } from "./continuity-terminal.js";
|
|
6
6
|
export declare function writeFailure(store: ArtifactStore, paths: ReturnType<ArtifactStore["runPaths"]>, failure: {
|
|
@@ -24,6 +24,9 @@ export declare function writeFailure(store: ArtifactStore, paths: ReturnType<Art
|
|
|
24
24
|
* null/omitted when no vendor-typed evidence exists. Opaque evidence. */
|
|
25
25
|
vendorFailure?: VendorFailureEvidence | null;
|
|
26
26
|
requestRefusal?: HarnessRequestRefusal;
|
|
27
|
+
captureFailure?: RunFailure["captureFailure"];
|
|
28
|
+
/** Every failed try with its own account, in order (empty = none). */
|
|
29
|
+
poolAttempts?: readonly PoolAttemptFailure[];
|
|
27
30
|
nextActions?: string[];
|
|
28
31
|
}): void;
|
|
29
32
|
/** The typed provenance an error declared about its own terminal. */
|
|
@@ -50,6 +53,17 @@ export declare function requestRefusalFailure(requestRefusal: HarnessRequestRefu
|
|
|
50
53
|
* reduces it to a message string.
|
|
51
54
|
*/
|
|
52
55
|
export declare function declaredFailure(err: unknown): DeclaredFailure;
|
|
56
|
+
/**
|
|
57
|
+
* The one statement of a cancellation, shared by every cancelled terminal: the
|
|
58
|
+
* cancel first (a STRING abort reason, e.g. the maxSeconds deadline, is named),
|
|
59
|
+
* then the run's earlier failed tries; `markdown` is its summary.md.
|
|
60
|
+
*/
|
|
61
|
+
export declare function cancellationStatement(runId: string, mode: ModeKind, cancelSignal: AbortSignal | undefined, attempts: readonly ContinuityTerminalFacts[]): {
|
|
62
|
+
cancelReason?: string;
|
|
63
|
+
summary: string;
|
|
64
|
+
markdown: string;
|
|
65
|
+
poolAttempts: PoolAttemptFailure[];
|
|
66
|
+
};
|
|
53
67
|
/**
|
|
54
68
|
* Terminal result for a cancelled run: emits run.failed with status
|
|
55
69
|
* "cancelled" so every mode ends consistently. `writeTelemetry` carries the
|
|
@@ -72,19 +86,27 @@ store?: ArtifactStore,
|
|
|
72
86
|
* when cancellation wins during the Delegate terminal barrier. */
|
|
73
87
|
priorFacts?: RunOutcomeFacts,
|
|
74
88
|
/** The attempt's continuation facts (cause wall_clock/cancelled, carriers), when any. */
|
|
75
|
-
resumable?: RunResumable | null
|
|
89
|
+
resumable?: RunResumable | null,
|
|
90
|
+
/** The run's attempts: their earlier failed tries stay diagnostic history
|
|
91
|
+
* beside the cancellation (a cancelled try has no row; no failure record). */
|
|
92
|
+
attempts?: readonly ContinuityTerminalFacts[]): OrchestratorResult;
|
|
76
93
|
/**
|
|
77
94
|
* Shared post-announce failure terminal. Unexpected throws use its internal
|
|
78
95
|
* defaults; known callers may supply narrow typed provenance. Every run ends
|
|
79
96
|
* with failure.yaml + summary + a terminal run.failed event.
|
|
80
97
|
*/
|
|
81
98
|
export declare function failTerminally(log: EventLog, store: ArtifactStore, paths: ReturnType<ArtifactStore["runPaths"]>, runId: string, taskId: string, mode: ModeKind, phase: string, err: unknown, spendUsd?: number | null, failureMeta?: {
|
|
82
|
-
category?: "harness_error" | "internal";
|
|
99
|
+
category?: "harness_error" | "internal" | "project";
|
|
100
|
+
captureFailure?: RunFailure["captureFailure"];
|
|
83
101
|
harnessId?: string;
|
|
84
102
|
attemptId?: string;
|
|
85
103
|
rawDetailRef?: string;
|
|
86
104
|
nextActions?: string[];
|
|
105
|
+
/** Actions that follow this terminal's own remedy (an earlier record's capture actions). */
|
|
106
|
+
followUps?: readonly string[];
|
|
87
107
|
priorFacts?: RunOutcomeFacts;
|
|
88
108
|
continuity?: readonly ContinuityTerminalFacts[];
|
|
109
|
+
/** Every attempt whose failed tries this terminal names (default: `continuity`). */
|
|
110
|
+
attempts?: readonly ContinuityTerminalFacts[];
|
|
89
111
|
}): OrchestratorResult;
|
|
90
112
|
//# sourceMappingURL=runTerminalResults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runTerminalResults.d.ts","sourceRoot":"","sources":["../src/runTerminalResults.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,UAAU,EACV,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"runTerminalResults.d.ts","sourceRoot":"","sources":["../src/runTerminalResults.ts"],"names":[],"mappings":"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"}
|