@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.
Files changed (121) hide show
  1. package/dist/account-pool.d.ts +11 -0
  2. package/dist/account-pool.d.ts.map +1 -1
  3. package/dist/account-pool.js +9 -0
  4. package/dist/account-pool.js.map +1 -1
  5. package/dist/account-resolution.d.ts +3 -0
  6. package/dist/account-resolution.d.ts.map +1 -1
  7. package/dist/account-resolution.js +1 -0
  8. package/dist/account-resolution.js.map +1 -1
  9. package/dist/attemptTelemetry.d.ts +4 -6
  10. package/dist/attemptTelemetry.d.ts.map +1 -1
  11. package/dist/attemptTelemetry.js +1 -1
  12. package/dist/attemptTelemetry.js.map +1 -1
  13. package/dist/budgetFailure.d.ts +4 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js +4 -2
  16. package/dist/budgetFailure.js.map +1 -1
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +7 -2
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/candidateOutputs.d.ts.map +1 -1
  21. package/dist/candidateOutputs.js +6 -0
  22. package/dist/candidateOutputs.js.map +1 -1
  23. package/dist/candidateReview.d.ts +3 -1
  24. package/dist/candidateReview.d.ts.map +1 -1
  25. package/dist/candidateReview.js +6 -1
  26. package/dist/candidateReview.js.map +1 -1
  27. package/dist/candidateTerminals.d.ts +12 -1
  28. package/dist/candidateTerminals.d.ts.map +1 -1
  29. package/dist/candidateTerminals.js +51 -21
  30. package/dist/candidateTerminals.js.map +1 -1
  31. package/dist/captureRefusal.d.ts +28 -0
  32. package/dist/captureRefusal.d.ts.map +1 -0
  33. package/dist/captureRefusal.js +54 -0
  34. package/dist/captureRefusal.js.map +1 -0
  35. package/dist/continuity-terminal.d.ts +3 -1
  36. package/dist/continuity-terminal.d.ts.map +1 -1
  37. package/dist/continuity-terminal.js.map +1 -1
  38. package/dist/contract-gates.d.ts +10 -2
  39. package/dist/contract-gates.d.ts.map +1 -1
  40. package/dist/contract-gates.js +14 -1
  41. package/dist/contract-gates.js.map +1 -1
  42. package/dist/credential-profile-rotation.js +2 -3
  43. package/dist/credential-profile-rotation.js.map +1 -1
  44. package/dist/delegationFailure.d.ts +104 -7
  45. package/dist/delegationFailure.d.ts.map +1 -1
  46. package/dist/delegationFailure.js +47 -31
  47. package/dist/delegationFailure.js.map +1 -1
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/inrun-continuity-types.d.ts +13 -1
  51. package/dist/inrun-continuity-types.d.ts.map +1 -1
  52. package/dist/inrun-continuity.d.ts +9 -2
  53. package/dist/inrun-continuity.d.ts.map +1 -1
  54. package/dist/inrun-continuity.js +43 -23
  55. package/dist/inrun-continuity.js.map +1 -1
  56. package/dist/inrun-continuity.test-support.d.ts +6 -2
  57. package/dist/inrun-continuity.test-support.d.ts.map +1 -1
  58. package/dist/inrun-continuity.test-support.js +4 -1
  59. package/dist/inrun-continuity.test-support.js.map +1 -1
  60. package/dist/orchestrator-credentials.d.ts +5 -4
  61. package/dist/orchestrator-credentials.d.ts.map +1 -1
  62. package/dist/orchestrator-credentials.js +7 -4
  63. package/dist/orchestrator-credentials.js.map +1 -1
  64. package/dist/orchestrator.d.ts +11 -3
  65. package/dist/orchestrator.d.ts.map +1 -1
  66. package/dist/orchestrator.js +341 -414
  67. package/dist/orchestrator.js.map +1 -1
  68. package/dist/persistedPatch.js +2 -2
  69. package/dist/persistedPatch.js.map +1 -1
  70. package/dist/pool-attempt-evidence.d.ts +62 -0
  71. package/dist/pool-attempt-evidence.d.ts.map +1 -0
  72. package/dist/pool-attempt-evidence.js +153 -0
  73. package/dist/pool-attempt-evidence.js.map +1 -0
  74. package/dist/pre-progress-refusal.d.ts +43 -6
  75. package/dist/pre-progress-refusal.d.ts.map +1 -1
  76. package/dist/pre-progress-refusal.js +53 -8
  77. package/dist/pre-progress-refusal.js.map +1 -1
  78. package/dist/readonlyTerminals.d.ts +55 -0
  79. package/dist/readonlyTerminals.d.ts.map +1 -0
  80. package/dist/readonlyTerminals.js +205 -0
  81. package/dist/readonlyTerminals.js.map +1 -0
  82. package/dist/reviewEvidence.d.ts +4 -0
  83. package/dist/reviewEvidence.d.ts.map +1 -0
  84. package/dist/reviewEvidence.js +46 -0
  85. package/dist/reviewEvidence.js.map +1 -0
  86. package/dist/rotation-predicate.d.ts +7 -23
  87. package/dist/rotation-predicate.d.ts.map +1 -1
  88. package/dist/rotation-predicate.js +45 -0
  89. package/dist/rotation-predicate.js.map +1 -1
  90. package/dist/runEventLog.d.ts +1 -0
  91. package/dist/runEventLog.d.ts.map +1 -1
  92. package/dist/runEventLog.js +3 -2
  93. package/dist/runEventLog.js.map +1 -1
  94. package/dist/runScope.d.ts +86 -0
  95. package/dist/runScope.d.ts.map +1 -0
  96. package/dist/runScope.js +181 -0
  97. package/dist/runScope.js.map +1 -0
  98. package/dist/runTerminalContext.d.ts +4 -0
  99. package/dist/runTerminalContext.d.ts.map +1 -1
  100. package/dist/runTerminalContext.js.map +1 -1
  101. package/dist/runTerminalHelpers.d.ts +50 -0
  102. package/dist/runTerminalHelpers.d.ts.map +1 -0
  103. package/dist/runTerminalHelpers.js +200 -0
  104. package/dist/runTerminalHelpers.js.map +1 -0
  105. package/dist/runTerminalResults.d.ts +25 -3
  106. package/dist/runTerminalResults.d.ts.map +1 -1
  107. package/dist/runTerminalResults.js +61 -29
  108. package/dist/runTerminalResults.js.map +1 -1
  109. package/dist/runTerminals.d.ts +1 -12
  110. package/dist/runTerminals.d.ts.map +1 -1
  111. package/dist/runTerminals.js +113 -140
  112. package/dist/runTerminals.js.map +1 -1
  113. package/dist/secretDiff.d.ts +14 -11
  114. package/dist/secretDiff.d.ts.map +1 -1
  115. package/dist/secretDiff.js +21 -28
  116. package/dist/secretDiff.js.map +1 -1
  117. package/dist/terminalOutcome.d.ts +24 -4
  118. package/dist/terminalOutcome.d.ts.map +1 -1
  119. package/dist/terminalOutcome.js +32 -5
  120. package/dist/terminalOutcome.js.map +1 -1
  121. package/package.json +17 -17
@@ -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;AAElD,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;CAC3C;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
+ {"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":"AAkCA,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"}
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":"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"}
@@ -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): OrchestratorResult;
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":"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"}
1
+ {"version":3,"file":"runTerminalResults.d.ts","sourceRoot":"","sources":["../src/runTerminalResults.ts"],"names":[],"mappings":"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"}