@claudexor/orchestrator 3.1.1 → 3.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 (173) 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 +16 -20
  6. package/dist/attemptTelemetry.d.ts.map +1 -1
  7. package/dist/attemptTelemetry.js +38 -70
  8. package/dist/attemptTelemetry.js.map +1 -1
  9. package/dist/attemptUsageCost.d.ts +47 -0
  10. package/dist/attemptUsageCost.d.ts.map +1 -0
  11. package/dist/attemptUsageCost.js +191 -0
  12. package/dist/attemptUsageCost.js.map +1 -0
  13. package/dist/budgetFailure.d.ts +3 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js.map +1 -1
  16. package/dist/candidateEvidence.d.ts +5 -0
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +3 -1
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/candidateOutputs.d.ts +19 -0
  21. package/dist/candidateOutputs.d.ts.map +1 -1
  22. package/dist/candidateOutputs.js +201 -67
  23. package/dist/candidateOutputs.js.map +1 -1
  24. package/dist/credential-profile-rotation.d.ts +145 -0
  25. package/dist/credential-profile-rotation.d.ts.map +1 -0
  26. package/dist/credential-profile-rotation.js +315 -0
  27. package/dist/credential-profile-rotation.js.map +1 -0
  28. package/dist/credential-profiles.d.ts +35 -134
  29. package/dist/credential-profiles.d.ts.map +1 -1
  30. package/dist/credential-profiles.js +73 -295
  31. package/dist/credential-profiles.js.map +1 -1
  32. package/dist/decisionBudget.d.ts +43 -0
  33. package/dist/decisionBudget.d.ts.map +1 -0
  34. package/dist/decisionBudget.js +84 -0
  35. package/dist/decisionBudget.js.map +1 -0
  36. package/dist/decisionTerminalReconciliation.d.ts +18 -0
  37. package/dist/decisionTerminalReconciliation.d.ts.map +1 -0
  38. package/dist/decisionTerminalReconciliation.js +26 -0
  39. package/dist/decisionTerminalReconciliation.js.map +1 -0
  40. package/dist/deepScanReducer.d.ts +14 -44
  41. package/dist/deepScanReducer.d.ts.map +1 -1
  42. package/dist/deepScanReducer.js +240 -128
  43. package/dist/deepScanReducer.js.map +1 -1
  44. package/dist/delegation-parent-activation.d.ts +6 -0
  45. package/dist/delegation-parent-activation.d.ts.map +1 -0
  46. package/dist/delegation-parent-activation.js +13 -0
  47. package/dist/delegation-parent-activation.js.map +1 -0
  48. package/dist/delegationBudgetAuthority.d.ts +30 -0
  49. package/dist/delegationBudgetAuthority.d.ts.map +1 -0
  50. package/dist/delegationBudgetAuthority.js +157 -0
  51. package/dist/delegationBudgetAuthority.js.map +1 -0
  52. package/dist/delegationFailure.d.ts +58 -0
  53. package/dist/delegationFailure.d.ts.map +1 -0
  54. package/dist/delegationFailure.js +184 -0
  55. package/dist/delegationFailure.js.map +1 -0
  56. package/dist/delegationToolEvidence.d.ts +20 -0
  57. package/dist/delegationToolEvidence.d.ts.map +1 -0
  58. package/dist/delegationToolEvidence.js +46 -0
  59. package/dist/delegationToolEvidence.js.map +1 -0
  60. package/dist/git-precondition.d.ts +11 -0
  61. package/dist/git-precondition.d.ts.map +1 -0
  62. package/dist/git-precondition.js +69 -0
  63. package/dist/git-precondition.js.map +1 -0
  64. package/dist/index.d.ts +3 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +3 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/interaction.d.ts +14 -6
  69. package/dist/interaction.d.ts.map +1 -1
  70. package/dist/interaction.js +106 -19
  71. package/dist/interaction.js.map +1 -1
  72. package/dist/orchestrator.d.ts +62 -115
  73. package/dist/orchestrator.d.ts.map +1 -1
  74. package/dist/orchestrator.js +671 -965
  75. package/dist/orchestrator.js.map +1 -1
  76. package/dist/plan-prompt.d.ts +3 -0
  77. package/dist/plan-prompt.d.ts.map +1 -0
  78. package/dist/plan-prompt.js +28 -0
  79. package/dist/plan-prompt.js.map +1 -0
  80. package/dist/planBrief.d.ts +27 -0
  81. package/dist/planBrief.d.ts.map +1 -0
  82. package/dist/planBrief.js +42 -0
  83. package/dist/planBrief.js.map +1 -0
  84. package/dist/planRun.d.ts +4 -3
  85. package/dist/planRun.d.ts.map +1 -1
  86. package/dist/planRun.js +33 -33
  87. package/dist/planRun.js.map +1 -1
  88. package/dist/plannerAttempt.d.ts +64 -0
  89. package/dist/plannerAttempt.d.ts.map +1 -0
  90. package/dist/plannerAttempt.js +235 -0
  91. package/dist/plannerAttempt.js.map +1 -0
  92. package/dist/policyFindings.js.map +1 -1
  93. package/dist/requestRequirements.d.ts +45 -1
  94. package/dist/requestRequirements.d.ts.map +1 -1
  95. package/dist/requestRequirements.js +158 -11
  96. package/dist/requestRequirements.js.map +1 -1
  97. package/dist/reviewerPanel.js.map +1 -1
  98. package/dist/root-ledger.d.ts +13 -0
  99. package/dist/root-ledger.d.ts.map +1 -0
  100. package/dist/root-ledger.js +21 -0
  101. package/dist/root-ledger.js.map +1 -0
  102. package/dist/routing-failure.d.ts +6 -0
  103. package/dist/routing-failure.d.ts.map +1 -0
  104. package/dist/routing-failure.js +12 -0
  105. package/dist/routing-failure.js.map +1 -0
  106. package/dist/run-bounded.d.ts +3 -0
  107. package/dist/run-bounded.d.ts.map +1 -0
  108. package/dist/run-bounded.js +23 -0
  109. package/dist/run-bounded.js.map +1 -0
  110. package/dist/run-input-resolution.d.ts +10 -0
  111. package/dist/run-input-resolution.d.ts.map +1 -0
  112. package/dist/run-input-resolution.js +88 -0
  113. package/dist/run-input-resolution.js.map +1 -0
  114. package/dist/runEventLog.d.ts +48 -0
  115. package/dist/runEventLog.d.ts.map +1 -0
  116. package/dist/runEventLog.js +63 -0
  117. package/dist/runEventLog.js.map +1 -0
  118. package/dist/runFacts.d.ts +23 -0
  119. package/dist/runFacts.d.ts.map +1 -0
  120. package/dist/runFacts.js +179 -0
  121. package/dist/runFacts.js.map +1 -0
  122. package/dist/runFactsBuilder.d.ts +5 -0
  123. package/dist/runFactsBuilder.d.ts.map +1 -0
  124. package/dist/runFactsBuilder.js +412 -0
  125. package/dist/runFactsBuilder.js.map +1 -0
  126. package/dist/runFactsDeliverable.d.ts +13 -0
  127. package/dist/runFactsDeliverable.d.ts.map +1 -0
  128. package/dist/runFactsDeliverable.js +94 -0
  129. package/dist/runFactsDeliverable.js.map +1 -0
  130. package/dist/runFactsPresentation.d.ts +7 -0
  131. package/dist/runFactsPresentation.d.ts.map +1 -0
  132. package/dist/runFactsPresentation.js +113 -0
  133. package/dist/runFactsPresentation.js.map +1 -0
  134. package/dist/runFactsReview.d.ts +7 -0
  135. package/dist/runFactsReview.d.ts.map +1 -0
  136. package/dist/runFactsReview.js +63 -0
  137. package/dist/runFactsReview.js.map +1 -0
  138. package/dist/runSupport.d.ts +17 -15
  139. package/dist/runSupport.d.ts.map +1 -1
  140. package/dist/runSupport.js +16 -0
  141. package/dist/runSupport.js.map +1 -1
  142. package/dist/runTelemetryWriter.d.ts +5 -2
  143. package/dist/runTelemetryWriter.d.ts.map +1 -1
  144. package/dist/runTelemetryWriter.js +72 -1
  145. package/dist/runTelemetryWriter.js.map +1 -1
  146. package/dist/runTerminalContext.d.ts +31 -0
  147. package/dist/runTerminalContext.d.ts.map +1 -0
  148. package/dist/runTerminalContext.js +12 -0
  149. package/dist/runTerminalContext.js.map +1 -0
  150. package/dist/runTerminalResults.d.ts +55 -0
  151. package/dist/runTerminalResults.d.ts.map +1 -0
  152. package/dist/runTerminalResults.js +134 -0
  153. package/dist/runTerminalResults.js.map +1 -0
  154. package/dist/runTerminals.d.ts +8 -57
  155. package/dist/runTerminals.d.ts.map +1 -1
  156. package/dist/runTerminals.js +423 -135
  157. package/dist/runTerminals.js.map +1 -1
  158. package/dist/secretDiff.d.ts +32 -0
  159. package/dist/secretDiff.d.ts.map +1 -0
  160. package/dist/secretDiff.js +140 -0
  161. package/dist/secretDiff.js.map +1 -0
  162. package/dist/structuredOutput.d.ts.map +1 -1
  163. package/dist/structuredOutput.js.map +1 -1
  164. package/dist/task-contract-builder.d.ts +35 -0
  165. package/dist/task-contract-builder.d.ts.map +1 -0
  166. package/dist/task-contract-builder.js +114 -0
  167. package/dist/task-contract-builder.js.map +1 -0
  168. package/dist/terminalOutcome.d.ts +22 -0
  169. package/dist/terminalOutcome.d.ts.map +1 -0
  170. package/dist/terminalOutcome.js +39 -0
  171. package/dist/terminalOutcome.js.map +1 -0
  172. package/dist/transientClassify.js.map +1 -1
  173. package/package.json +17 -17
@@ -8,129 +8,125 @@
8
8
  * forever.
9
9
  */
10
10
  import { join } from "node:path";
11
- import { makeOutcomeFacts } from "@claudexor/schema";
12
- import { redactSecrets } from "@claudexor/util";
13
- export function writeFailure(store, paths, failure) {
14
- store.writeYaml(join(paths.finalDir, "failure.yaml"), {
15
- phase: failure.phase,
16
- category: failure.category,
17
- code: failure.code ?? null,
18
- harnessId: failure.harnessId ?? null,
19
- attemptId: failure.attemptId ?? null,
20
- safeMessage: redactSecrets(failure.safeMessage),
21
- rawDetailRef: failure.rawDetailRef ?? null,
22
- logRefs: failure.logRefs ?? [],
23
- eventRefs: failure.eventRefs ?? [],
24
- runDir: failure.runDir ?? paths.root,
25
- nextActions: failure.nextActions ?? [],
26
- });
27
- }
28
- /**
29
- * Terminal result for a cancelled run: emits run.failed with status
30
- * "cancelled" so every mode ends consistently. `writeTelemetry` carries the
31
- * PARTIAL attempt telemetry collected before the abort — a cancelled run
32
- * must still account for what it spent and observed; it used to be
33
- * written only by convergence.
34
- */
35
- export function cancelledResult(log, runId, taskId, mode, runDir, candidates, writeTelemetry, spendUsd,
36
- /** The abort signal that ended the run: a STRING reason (e.g.
37
- * `wall_clock_exceeded` from the maxSeconds deadline) is surfaced; a plain
38
- * user cancel aborts with a DOMException reason and stays a bare cancel. */
39
- cancelSignal,
40
- /** Materializes the diagnostic summary the output.ready below announces. */
41
- store) {
42
- if (writeTelemetry) {
43
- try {
44
- writeTelemetry();
45
- }
46
- catch {
47
- /* partial telemetry is best-effort on the cancel path */
48
- }
49
- }
50
- const cancelReason = typeof cancelSignal?.reason === "string" && cancelSignal.reason
51
- ? cancelSignal.reason
52
- : undefined;
53
- const summaryText = cancelReason === "wall_clock_exceeded"
54
- ? "run cancelled: wall-clock deadline (maxSeconds) exceeded"
55
- : "run cancelled";
56
- // Materialize the diagnostic summary BEFORE announcing it — output.ready must
57
- // point at a file that exists (partial-output honesty), and it must precede
58
- // the terminal in every mode (INV-116).
59
- let summaryWritten = false;
60
- if (store) {
61
- try {
62
- store.writeText(join(runDir, "final", "summary.md"), `# Run ${runId} (${mode})\n\n- Lifecycle: cancelled\n${cancelReason ? `- Reason: ${cancelReason}\n` : ""}\n${summaryText}\n`);
63
- summaryWritten = true;
64
- }
65
- catch {
66
- /* best-effort: a write failure must not mask the cancel terminal */
67
- }
11
+ import { makeOutcomeFacts, needsOperatorAttention, RunOutcomeFacts, } from "@claudexor/schema";
12
+ import { readTextSafe, redactSecrets } from "@claudexor/util";
13
+ import { budgetFailureRecord, classifyBudgetFailure } from "./budgetFailure.js";
14
+ import { reconcileDecisionBudget, settledBudgetSnapshot, } from "./decisionBudget.js";
15
+ import { reconcileDecisionTerminal } from "./decisionTerminalReconciliation.js";
16
+ import { prepareRunFactsFailureReceipt, prepareRunFactsReceipt } from "./runFacts.js";
17
+ import { cancelledResult, failTerminally, writeFailure } from "./runTerminalResults.js";
18
+ import { clearFailureArtifact, reconcileWorkProductTerminal, terminalOutcomeFacts, } from "./terminalOutcome.js";
19
+ export { cancelledResult, failTerminally, writeFailure };
20
+ function ownsDelegateDrain(context) {
21
+ try {
22
+ return context.recheckBudgetAfterBarrier?.() === true;
68
23
  }
69
- // output.ready is EVIDENCE (release wave sol #3): announce the summary only
70
- // when the file actually materialized a failed write still gets its
71
- // terminal below, just without a pointer to a nonexistent artifact.
72
- if (summaryWritten) {
73
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
24
+ catch {
25
+ // Reconciliation is an extra authority granted only to a proven Delegate
26
+ // drain owner. An unreadable ownership predicate must fail closed instead
27
+ // of touching an ordinary Agent's already-terminal artifacts.
28
+ return false;
74
29
  }
75
- const cancelFacts = makeOutcomeFacts("cancelled", {
76
- reason: cancelReason === "wall_clock_exceeded" ? "wall_clock_exceeded" : "user_cancelled",
77
- });
78
- log.emit("run.failed", {
79
- lifecycle: "cancelled",
80
- facts: cancelFacts,
81
- reason: cancelFacts.reason,
82
- ...(cancelReason ? { cancel_reason: cancelReason } : {}),
83
- });
84
- return {
85
- runId,
86
- taskId,
87
- mode,
88
- lifecycle: "cancelled",
89
- facts: cancelFacts,
90
- winner: null,
91
- runDir,
92
- summary: summaryText,
93
- candidates,
94
- ...(spendUsd !== undefined ? { spendUsd } : {}),
95
- ...(cancelReason ? { cancelReason } : {}),
96
- };
97
30
  }
98
- /**
99
- * Terminal safety net for an unexpected throw in a post-announce phase.
100
- * Every run must end with failure.yaml + summary + a terminal run.failed
101
- * event.
102
- */
103
- export function failTerminally(log, store, paths, runId, taskId, mode, phase, err, spendUsd) {
104
- const message = redactSecrets(err instanceof Error ? err.message : String(err));
105
- const failFacts = makeOutcomeFacts("failed", { reason: "harness_failed" });
106
- store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Lifecycle: failed\n- Phase: ${phase}\n\n${message}\n`);
107
- writeFailure(store, paths, {
108
- phase,
109
- category: "internal",
110
- safeMessage: message,
111
- runDir: paths.root,
112
- nextActions: ["Open diagnostics", "Retry the run"],
31
+ function postDrainBudgetFailure(context, terminal, budget, prior) {
32
+ const mapping = classifyBudgetFailure({ denial: null, terminal });
33
+ const facts = terminalOutcomeFacts(prior.facts, "failed", mapping.reason);
34
+ reconcileDecisionBudget(context, budget, { facts, why: mapping.safeMessage });
35
+ reconcileWorkProductTerminal(context, facts);
36
+ 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${mapping.safeMessage}\n`);
37
+ writeFailure(context.store, context.paths, budgetFailureRecord(mapping, { runDir: context.paths.root }));
38
+ context.log.emit("output.ready", {
39
+ kind: "summary",
40
+ path: "final/summary.md",
41
+ state: "diagnostic",
113
42
  });
114
- log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
115
- log.emit("run.failed", {
43
+ context.log.emit("run.failed", {
116
44
  lifecycle: "failed",
117
- facts: failFacts,
118
- reason: failFacts.reason,
119
- phase,
120
- error: message,
45
+ facts,
46
+ reason: mapping.reason,
47
+ phase: "budget",
48
+ error: mapping.safeMessage,
121
49
  failure_ref: "final/failure.yaml",
122
50
  });
123
51
  return {
124
- runId,
125
- taskId,
126
- mode,
52
+ ...prior,
127
53
  lifecycle: "failed",
128
- facts: failFacts,
54
+ facts,
55
+ summary: mapping.safeMessage,
56
+ spendUsd: budget.spendUsd,
57
+ };
58
+ }
59
+ function terminalEventTypeFor(_originalType, outcome) {
60
+ if (outcome.lifecycle !== "succeeded")
61
+ return "run.failed";
62
+ if (needsOperatorAttention(outcome, false))
63
+ return "run.blocked";
64
+ // The canonical axes own terminal type. Preserving a producer-authored
65
+ // run.blocked with clean axes creates an unexplainable block (no reason or
66
+ // required action), so it is normalized to completed.
67
+ return "run.completed";
68
+ }
69
+ function cancellationFacts(signal, prior) {
70
+ return terminalOutcomeFacts(prior, "cancelled", typeof signal.reason === "string" && signal.reason === "wall_clock_exceeded"
71
+ ? "wall_clock_exceeded"
72
+ : "user_cancelled");
73
+ }
74
+ function terminalOutcomeFromPayload(payload) {
75
+ const parsed = RunOutcomeFacts.safeParse(payload["facts"]);
76
+ if (parsed.success)
77
+ return parsed.data;
78
+ // Older in-process terminal producers (including the Delegate drain
79
+ // contract) supplied only lifecycle. Keep that compatible while treating an
80
+ // explicitly malformed facts object as a contradiction that must fail
81
+ // closed through the terminal-facts path below.
82
+ if (!Object.prototype.hasOwnProperty.call(payload, "facts")) {
83
+ const lifecycle = payload["lifecycle"];
84
+ if (lifecycle === "succeeded" ||
85
+ lifecycle === "failed" ||
86
+ lifecycle === "cancelled" ||
87
+ lifecycle === "interrupted") {
88
+ return makeOutcomeFacts(lifecycle);
89
+ }
90
+ }
91
+ return RunOutcomeFacts.parse(payload["facts"]);
92
+ }
93
+ function settledSpend(a) {
94
+ try {
95
+ return a.spend ? a.spend() : null;
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ function isTerminalRecoveryRequired(error) {
102
+ return (!!error &&
103
+ typeof error === "object" &&
104
+ "code" in error &&
105
+ error.code === "terminal_recovery_required");
106
+ }
107
+ function committedOutcome(a) {
108
+ const terminal = [...a.log.readAll().events]
109
+ .reverse()
110
+ .find((event) => event.type === "run.completed" ||
111
+ event.type === "run.blocked" ||
112
+ event.type === "run.failed");
113
+ const parsed = RunOutcomeFacts.safeParse(terminal?.payload["facts"]);
114
+ return parsed.success ? parsed.data : null;
115
+ }
116
+ function committedResult(a, outcome, spendUsd) {
117
+ const summary = readTextSafe(join(a.paths.finalDir, "summary.md"))?.trim().slice(0, 400) ??
118
+ `run terminal committed with lifecycle ${outcome.lifecycle}`;
119
+ return {
120
+ runId: a.runId,
121
+ taskId: a.taskId,
122
+ mode: a.mode,
123
+ lifecycle: outcome.lifecycle,
124
+ facts: outcome,
129
125
  winner: null,
130
- runDir: paths.root,
131
- summary: message,
126
+ runDir: a.paths.root,
127
+ summary,
132
128
  candidates: [],
133
- ...(spendUsd !== undefined ? { spendUsd } : {}),
129
+ spendUsd,
134
130
  };
135
131
  }
136
132
  /**
@@ -141,6 +137,9 @@ export function failTerminally(log, store, paths, runId, taskId, mode, phase, er
141
137
  * internal failure.
142
138
  */
143
139
  export async function guardAnnouncedRun(signal, body,
140
+ /** Awaited after strategy work but before a deferred terminal is flushed.
141
+ * Delegate parents use it to fence admission and drain child settlements. */
142
+ beforeTerminal,
144
143
  /**
145
144
  * Invoked once with the announced runId when the strategy settles (return OR
146
145
  * throw). The single per-run terminalization hook: per-run engine state keyed
@@ -149,40 +148,329 @@ export async function guardAnnouncedRun(signal, body,
149
148
  */
150
149
  onSettled) {
151
150
  let announced = null;
151
+ let preparedResult = null;
152
+ let canonicalOutcome = null;
153
+ let terminalPreparationError = null;
154
+ let barrierAttempted = false;
155
+ let barrierFailed = false;
156
+ const runBarrier = async (context) => {
157
+ if (barrierAttempted)
158
+ return;
159
+ barrierAttempted = true;
160
+ try {
161
+ await beforeTerminal?.(context);
162
+ }
163
+ catch (error) {
164
+ barrierFailed = true;
165
+ throw error;
166
+ }
167
+ };
152
168
  try {
153
- return await body((a) => {
154
- announced = a;
155
- });
156
- }
157
- catch (err) {
158
- // TS cannot see the closure assignment; the cast is safe (set-once).
159
- const a = announced;
160
- if (!a)
161
- throw err;
162
- // Settled-spend accounting is part of the terminal contract on EVERY
163
- // path (the orchestrate executor aggregates it); a broken spend snapshot
164
- // must not mask the original failure, so it degrades to null loudly-typed.
165
- let spendUsd = null;
169
+ let result;
166
170
  try {
167
- spendUsd = a.spend ? a.spend() : null;
171
+ result = await body((a) => {
172
+ announced = a;
173
+ a.log.setBeforeTerminal((originalType, payload) => {
174
+ try {
175
+ // Cancellation wins only until the synchronous terminal commit
176
+ // starts. A later abort cannot rewrite an already-durable success.
177
+ const payloadOutcome = terminalOutcomeFromPayload(payload);
178
+ const terminalOutcome = signal?.aborted
179
+ ? cancellationFacts(signal, payloadOutcome)
180
+ : payloadOutcome;
181
+ const prepared = prepareRunFactsReceipt(a, terminalOutcome);
182
+ canonicalOutcome = prepared.facts.outcome;
183
+ return {
184
+ type: terminalEventTypeFor(originalType, prepared.facts.outcome),
185
+ payload: {
186
+ ...payload,
187
+ lifecycle: prepared.facts.outcome.lifecycle,
188
+ facts: prepared.facts.outcome,
189
+ reason: prepared.facts.outcome.reason,
190
+ run_facts: prepared.facts,
191
+ },
192
+ commit: prepared.commit,
193
+ rollback: () => {
194
+ prepared.rollback();
195
+ canonicalOutcome = null;
196
+ },
197
+ };
198
+ }
199
+ catch (error) {
200
+ // A contradictory terminal projection must fail the run, not throw
201
+ // out of the hook and retry the same contradiction forever.
202
+ const detail = redactSecrets(error instanceof Error ? error.message : String(error));
203
+ terminalPreparationError = `terminal facts preparation failed: ${detail}`;
204
+ const failureOutcome = makeOutcomeFacts("failed", {
205
+ reason: "harness_failed",
206
+ });
207
+ let failureRefWritten = false;
208
+ try {
209
+ a.store.writeText(join(a.paths.finalDir, "summary.md"), `# Run ${a.runId} (${a.mode})\n\n- Lifecycle: failed\n- Phase: terminal_facts\n\n${terminalPreparationError}\n`);
210
+ writeFailure(a.store, a.paths, {
211
+ phase: "terminal_facts",
212
+ category: "internal",
213
+ safeMessage: terminalPreparationError,
214
+ runDir: a.paths.root,
215
+ nextActions: ["Open diagnostics", "Inspect final/run_facts.yaml", "Retry the run"],
216
+ });
217
+ failureRefWritten = true;
218
+ }
219
+ catch {
220
+ /* terminal event remains the fail-closed authority */
221
+ }
222
+ try {
223
+ const prepared = prepareRunFactsFailureReceipt(a, failureOutcome);
224
+ canonicalOutcome = prepared.facts.outcome;
225
+ return {
226
+ type: "run.failed",
227
+ payload: {
228
+ lifecycle: prepared.facts.outcome.lifecycle,
229
+ facts: prepared.facts.outcome,
230
+ reason: prepared.facts.outcome.reason,
231
+ run_facts: prepared.facts,
232
+ phase: "terminal_facts",
233
+ error: terminalPreparationError,
234
+ ...(failureRefWritten ? { failure_ref: "final/failure.yaml" } : {}),
235
+ },
236
+ commit: prepared.commit,
237
+ rollback: () => {
238
+ prepared.rollback();
239
+ canonicalOutcome = null;
240
+ },
241
+ };
242
+ }
243
+ catch {
244
+ // If even the minimal receipt cannot be written, still commit an
245
+ // honest failed terminal. The daemon job state then fails closed.
246
+ canonicalOutcome = failureOutcome;
247
+ return {
248
+ type: "run.failed",
249
+ payload: {
250
+ lifecycle: failureOutcome.lifecycle,
251
+ facts: failureOutcome,
252
+ reason: failureOutcome.reason,
253
+ phase: "terminal_facts",
254
+ error: terminalPreparationError,
255
+ ...(failureRefWritten ? { failure_ref: "final/failure.yaml" } : {}),
256
+ },
257
+ };
258
+ }
259
+ }
260
+ });
261
+ });
262
+ preparedResult = result;
263
+ const context = announced;
264
+ if (context) {
265
+ await runBarrier(context);
266
+ const budget = settledBudgetSnapshot(context);
267
+ const delegateBarrierArmed = ownsDelegateDrain(context);
268
+ if (delegateBarrierArmed && signal?.aborted) {
269
+ context.log.clearDeferredTerminal();
270
+ const cancelFacts = terminalOutcomeFacts(result.facts, "cancelled", signal.reason === "wall_clock_exceeded" ? "wall_clock_exceeded" : "user_cancelled");
271
+ const cancelSummary = signal.reason === "wall_clock_exceeded"
272
+ ? "run cancelled: wall-clock deadline (maxSeconds) exceeded"
273
+ : "run cancelled";
274
+ let reconciledCancelFacts = cancelFacts;
275
+ try {
276
+ reconcileDecisionBudget(context, budget);
277
+ reconciledCancelFacts = reconcileDecisionTerminal(context, {
278
+ facts: cancelFacts,
279
+ why: cancelSummary,
280
+ preparedFacts: result.facts,
281
+ });
282
+ reconcileWorkProductTerminal(context, reconciledCancelFacts);
283
+ clearFailureArtifact(context);
284
+ }
285
+ catch {
286
+ /* the cancellation terminal below remains authoritative */
287
+ }
288
+ const cancelled = cancelledResult(context.log, context.runId, context.taskId, context.mode, context.paths.root, result.candidates, undefined, budget.spendUsd, signal, context.store, reconciledCancelFacts);
289
+ context.log.flushDeferredTerminal();
290
+ result = {
291
+ ...result,
292
+ lifecycle: "cancelled",
293
+ facts: cancelled.facts,
294
+ summary: cancelled.summary,
295
+ spendUsd: cancelled.spendUsd,
296
+ ...(cancelled.cancelReason ? { cancelReason: cancelled.cancelReason } : {}),
297
+ };
298
+ }
299
+ else {
300
+ const budgetTerminal = delegateBarrierArmed ? (context.budgetTerminal?.() ?? null) : null;
301
+ if (budgetTerminal && result.lifecycle === "succeeded") {
302
+ context.log.clearDeferredTerminal();
303
+ result = postDrainBudgetFailure(context, budgetTerminal, budget, result);
304
+ context.log.flushDeferredTerminal();
305
+ }
306
+ else {
307
+ if (delegateBarrierArmed)
308
+ reconcileDecisionBudget(context, budget);
309
+ context.log.flushDeferredTerminal();
310
+ if (budget.spendUsd !== null)
311
+ result = { ...result, spendUsd: budget.spendUsd };
312
+ }
313
+ }
314
+ }
168
315
  }
169
- catch {
170
- spendUsd = null;
316
+ catch (err) {
317
+ // TS cannot see the closure assignment; the cast is safe (set-once).
318
+ const a = announced;
319
+ if (!a)
320
+ throw err;
321
+ // The partition journal already owns this terminal. A safety-net emit
322
+ // would hit the poisoned writer, erase the typed recovery signal, and
323
+ // let the daemon persist a false generic failure over durable truth.
324
+ if (isTerminalRecoveryRequired(err))
325
+ throw err;
326
+ if (a.log.terminalCommitted()) {
327
+ const outcome = canonicalOutcome ?? committedOutcome(a);
328
+ if (!outcome)
329
+ throw err;
330
+ const spendUsd = settledSpend(a);
331
+ result = preparedResult
332
+ ? {
333
+ ...preparedResult,
334
+ lifecycle: outcome.lifecycle,
335
+ facts: outcome,
336
+ ...(spendUsd !== null ? { spendUsd } : {}),
337
+ }
338
+ : committedResult(a, outcome, spendUsd);
339
+ }
340
+ else {
341
+ a.log.clearDeferredTerminal();
342
+ let terminalError = err;
343
+ try {
344
+ await runBarrier(a);
345
+ }
346
+ catch (barrierError) {
347
+ terminalError = barrierError;
348
+ }
349
+ // Settled-spend accounting is part of the terminal contract on EVERY
350
+ // path (the orchestrate executor aggregates it); a broken spend snapshot
351
+ // must not mask the original failure, so it degrades to null loudly-typed.
352
+ const budget = settledBudgetSnapshot(a);
353
+ const spendUsd = budget.spendUsd;
354
+ const delegateBarrierArmed = ownsDelegateDrain(a);
355
+ if (signal?.aborted && terminalError === err) {
356
+ const priorFacts = preparedResult?.facts;
357
+ const cancelFacts = terminalOutcomeFacts(priorFacts, "cancelled", signal.reason === "wall_clock_exceeded" ? "wall_clock_exceeded" : "user_cancelled");
358
+ const cancelSummary = signal.reason === "wall_clock_exceeded"
359
+ ? "run cancelled: wall-clock deadline (maxSeconds) exceeded"
360
+ : "run cancelled";
361
+ let reconciledCancelFacts = cancelFacts;
362
+ try {
363
+ if (delegateBarrierArmed)
364
+ reconcileDecisionBudget(a, budget);
365
+ reconciledCancelFacts = reconcileDecisionTerminal(a, {
366
+ facts: cancelFacts,
367
+ why: cancelSummary,
368
+ ...(preparedResult ? { preparedFacts: preparedResult.facts } : {}),
369
+ });
370
+ reconcileWorkProductTerminal(a, reconciledCancelFacts);
371
+ clearFailureArtifact(a);
372
+ }
373
+ catch {
374
+ /* the cancellation terminal below remains authoritative */
375
+ }
376
+ const cancelled = cancelledResult(a.log, a.runId, a.taskId, a.mode, a.paths.root, preparedResult?.candidates ?? [], undefined, spendUsd,
377
+ // A wall-clock abort surfaced as a throw must keep its reason and
378
+ // materialize the diagnostic summary, exactly like the checkpoint paths.
379
+ signal, a.store, reconciledCancelFacts);
380
+ a.log.flushDeferredTerminal();
381
+ result = preparedResult
382
+ ? {
383
+ ...preparedResult,
384
+ lifecycle: "cancelled",
385
+ facts: cancelled.facts,
386
+ summary: cancelled.summary,
387
+ spendUsd: cancelled.spendUsd,
388
+ ...(cancelled.cancelReason ? { cancelReason: cancelled.cancelReason } : {}),
389
+ }
390
+ : cancelled;
391
+ }
392
+ else {
393
+ const priorFacts = preparedResult?.facts;
394
+ const pendingFacts = terminalOutcomeFacts(priorFacts, "failed", "harness_failed");
395
+ const pendingSummary = redactSecrets(terminalError instanceof Error ? terminalError.message : String(terminalError));
396
+ let reconciledFailureFacts = pendingFacts;
397
+ try {
398
+ if (delegateBarrierArmed)
399
+ reconcileDecisionBudget(a, budget);
400
+ reconciledFailureFacts = reconcileDecisionTerminal(a, {
401
+ facts: pendingFacts,
402
+ why: pendingSummary,
403
+ ...(preparedResult ? { preparedFacts: preparedResult.facts } : {}),
404
+ });
405
+ reconcileWorkProductTerminal(a, reconciledFailureFacts);
406
+ }
407
+ catch {
408
+ /* the failure terminal below remains authoritative */
409
+ }
410
+ const failed = failTerminally(a.log, a.store, a.paths, a.runId, a.taskId, a.mode, barrierFailed ? "delegation_drain" : a.phase, terminalError, spendUsd, { priorFacts: reconciledFailureFacts });
411
+ a.log.flushDeferredTerminal();
412
+ result = preparedResult
413
+ ? {
414
+ ...preparedResult,
415
+ lifecycle: "failed",
416
+ facts: failed.facts,
417
+ summary: failed.summary,
418
+ spendUsd: failed.spendUsd,
419
+ }
420
+ : failed;
421
+ }
422
+ }
423
+ }
424
+ // Defensive fallback for a strategy that returned without a terminal emit:
425
+ // materialize/announce a summary when needed, then pass through the same
426
+ // pre-terminal receipt transaction as every normal strategy.
427
+ const a = announced;
428
+ if (a && !a.log.terminalCommitted()) {
429
+ const events = a.log.readAll().events;
430
+ if (!events.some((event) => event.type === "output.ready")) {
431
+ const summaryPath = join(a.paths.finalDir, "summary.md");
432
+ let summaryPresent = readTextSafe(summaryPath) !== null;
433
+ if (!summaryPresent) {
434
+ try {
435
+ a.store.writeText(summaryPath, `# Run ${a.runId} (${a.mode})\n\n${redactSecrets(result.summary)}\n`);
436
+ summaryPresent = true;
437
+ }
438
+ catch {
439
+ /* never point output.ready at a file that did not materialize */
440
+ }
441
+ }
442
+ if (summaryPresent) {
443
+ a.log.emit("output.ready", {
444
+ kind: "summary",
445
+ path: "final/summary.md",
446
+ state: "diagnostic",
447
+ });
448
+ }
449
+ }
450
+ a.log.emit(terminalEventTypeFor("run.completed", result.facts), {
451
+ lifecycle: result.facts.lifecycle,
452
+ facts: result.facts,
453
+ reason: result.facts.reason,
454
+ });
171
455
  }
172
- if (signal?.aborted) {
173
- return cancelledResult(a.log, a.runId, a.taskId, a.mode, a.paths.root, [], undefined, spendUsd,
174
- // A wall-clock abort surfaced as a throw must keep its reason and
175
- // materialize the diagnostic summary, exactly like the checkpoint paths.
176
- signal, a.store);
456
+ // TS cannot see assignments performed inside EventLog's hook closure.
457
+ const settledOutcome = canonicalOutcome;
458
+ if (settledOutcome) {
459
+ result = {
460
+ ...result,
461
+ lifecycle: settledOutcome.lifecycle,
462
+ facts: settledOutcome,
463
+ ...(terminalPreparationError ? { winner: null, summary: terminalPreparationError } : {}),
464
+ };
177
465
  }
178
- return failTerminally(a.log, a.store, a.paths, a.runId, a.taskId, a.mode, a.phase, err, spendUsd);
466
+ return result;
179
467
  }
180
468
  finally {
181
469
  // Release per-run engine state on EVERY terminal path (normal return, failure
182
470
  // net, cancel), but only for a run that actually announced a runId.
183
471
  const settled = announced;
184
472
  if (settled)
185
- onSettled?.(settled.runId);
473
+ await onSettled?.(settled.runId);
186
474
  }
187
475
  }
188
476
  //# sourceMappingURL=runTerminals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runTerminals.js","sourceRoot":"","sources":["../src/runTerminals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runTerminals.js","sourceRoot":"","sources":["../src/runTerminals.ts"],"names":[],"mappings":"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"}