@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.
- package/dist/attemptFinalize.d.ts +14 -11
- package/dist/attemptFinalize.d.ts.map +1 -1
- package/dist/attemptFinalize.js +41 -14
- package/dist/attemptFinalize.js.map +1 -1
- package/dist/attemptTelemetry.d.ts +16 -20
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +38 -70
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/attemptUsageCost.d.ts +47 -0
- package/dist/attemptUsageCost.d.ts.map +1 -0
- package/dist/attemptUsageCost.js +191 -0
- package/dist/attemptUsageCost.js.map +1 -0
- package/dist/budgetFailure.d.ts +3 -1
- package/dist/budgetFailure.d.ts.map +1 -1
- package/dist/budgetFailure.js.map +1 -1
- package/dist/candidateEvidence.d.ts +5 -0
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +3 -1
- package/dist/candidateEvidence.js.map +1 -1
- package/dist/candidateOutputs.d.ts +19 -0
- package/dist/candidateOutputs.d.ts.map +1 -1
- package/dist/candidateOutputs.js +201 -67
- package/dist/candidateOutputs.js.map +1 -1
- package/dist/credential-profile-rotation.d.ts +145 -0
- package/dist/credential-profile-rotation.d.ts.map +1 -0
- package/dist/credential-profile-rotation.js +315 -0
- package/dist/credential-profile-rotation.js.map +1 -0
- package/dist/credential-profiles.d.ts +35 -134
- package/dist/credential-profiles.d.ts.map +1 -1
- package/dist/credential-profiles.js +73 -295
- package/dist/credential-profiles.js.map +1 -1
- package/dist/decisionBudget.d.ts +43 -0
- package/dist/decisionBudget.d.ts.map +1 -0
- package/dist/decisionBudget.js +84 -0
- package/dist/decisionBudget.js.map +1 -0
- package/dist/decisionTerminalReconciliation.d.ts +18 -0
- package/dist/decisionTerminalReconciliation.d.ts.map +1 -0
- package/dist/decisionTerminalReconciliation.js +26 -0
- package/dist/decisionTerminalReconciliation.js.map +1 -0
- package/dist/deepScanReducer.d.ts +14 -44
- package/dist/deepScanReducer.d.ts.map +1 -1
- package/dist/deepScanReducer.js +240 -128
- package/dist/deepScanReducer.js.map +1 -1
- package/dist/delegation-parent-activation.d.ts +6 -0
- package/dist/delegation-parent-activation.d.ts.map +1 -0
- package/dist/delegation-parent-activation.js +13 -0
- package/dist/delegation-parent-activation.js.map +1 -0
- package/dist/delegationBudgetAuthority.d.ts +30 -0
- package/dist/delegationBudgetAuthority.d.ts.map +1 -0
- package/dist/delegationBudgetAuthority.js +157 -0
- package/dist/delegationBudgetAuthority.js.map +1 -0
- package/dist/delegationFailure.d.ts +58 -0
- package/dist/delegationFailure.d.ts.map +1 -0
- package/dist/delegationFailure.js +184 -0
- package/dist/delegationFailure.js.map +1 -0
- package/dist/delegationToolEvidence.d.ts +20 -0
- package/dist/delegationToolEvidence.d.ts.map +1 -0
- package/dist/delegationToolEvidence.js +46 -0
- package/dist/delegationToolEvidence.js.map +1 -0
- package/dist/git-precondition.d.ts +11 -0
- package/dist/git-precondition.d.ts.map +1 -0
- package/dist/git-precondition.js +69 -0
- package/dist/git-precondition.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +14 -6
- package/dist/interaction.d.ts.map +1 -1
- package/dist/interaction.js +106 -19
- package/dist/interaction.js.map +1 -1
- package/dist/orchestrator.d.ts +62 -115
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +671 -965
- package/dist/orchestrator.js.map +1 -1
- package/dist/plan-prompt.d.ts +3 -0
- package/dist/plan-prompt.d.ts.map +1 -0
- package/dist/plan-prompt.js +28 -0
- package/dist/plan-prompt.js.map +1 -0
- package/dist/planBrief.d.ts +27 -0
- package/dist/planBrief.d.ts.map +1 -0
- package/dist/planBrief.js +42 -0
- package/dist/planBrief.js.map +1 -0
- package/dist/planRun.d.ts +4 -3
- package/dist/planRun.d.ts.map +1 -1
- package/dist/planRun.js +33 -33
- package/dist/planRun.js.map +1 -1
- package/dist/plannerAttempt.d.ts +64 -0
- package/dist/plannerAttempt.d.ts.map +1 -0
- package/dist/plannerAttempt.js +235 -0
- package/dist/plannerAttempt.js.map +1 -0
- package/dist/policyFindings.js.map +1 -1
- package/dist/requestRequirements.d.ts +45 -1
- package/dist/requestRequirements.d.ts.map +1 -1
- package/dist/requestRequirements.js +158 -11
- package/dist/requestRequirements.js.map +1 -1
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/root-ledger.d.ts +13 -0
- package/dist/root-ledger.d.ts.map +1 -0
- package/dist/root-ledger.js +21 -0
- package/dist/root-ledger.js.map +1 -0
- package/dist/routing-failure.d.ts +6 -0
- package/dist/routing-failure.d.ts.map +1 -0
- package/dist/routing-failure.js +12 -0
- package/dist/routing-failure.js.map +1 -0
- package/dist/run-bounded.d.ts +3 -0
- package/dist/run-bounded.d.ts.map +1 -0
- package/dist/run-bounded.js +23 -0
- package/dist/run-bounded.js.map +1 -0
- package/dist/run-input-resolution.d.ts +10 -0
- package/dist/run-input-resolution.d.ts.map +1 -0
- package/dist/run-input-resolution.js +88 -0
- package/dist/run-input-resolution.js.map +1 -0
- package/dist/runEventLog.d.ts +48 -0
- package/dist/runEventLog.d.ts.map +1 -0
- package/dist/runEventLog.js +63 -0
- package/dist/runEventLog.js.map +1 -0
- package/dist/runFacts.d.ts +23 -0
- package/dist/runFacts.d.ts.map +1 -0
- package/dist/runFacts.js +179 -0
- package/dist/runFacts.js.map +1 -0
- package/dist/runFactsBuilder.d.ts +5 -0
- package/dist/runFactsBuilder.d.ts.map +1 -0
- package/dist/runFactsBuilder.js +412 -0
- package/dist/runFactsBuilder.js.map +1 -0
- package/dist/runFactsDeliverable.d.ts +13 -0
- package/dist/runFactsDeliverable.d.ts.map +1 -0
- package/dist/runFactsDeliverable.js +94 -0
- package/dist/runFactsDeliverable.js.map +1 -0
- package/dist/runFactsPresentation.d.ts +7 -0
- package/dist/runFactsPresentation.d.ts.map +1 -0
- package/dist/runFactsPresentation.js +113 -0
- package/dist/runFactsPresentation.js.map +1 -0
- package/dist/runFactsReview.d.ts +7 -0
- package/dist/runFactsReview.d.ts.map +1 -0
- package/dist/runFactsReview.js +63 -0
- package/dist/runFactsReview.js.map +1 -0
- package/dist/runSupport.d.ts +17 -15
- package/dist/runSupport.d.ts.map +1 -1
- package/dist/runSupport.js +16 -0
- package/dist/runSupport.js.map +1 -1
- package/dist/runTelemetryWriter.d.ts +5 -2
- package/dist/runTelemetryWriter.d.ts.map +1 -1
- package/dist/runTelemetryWriter.js +72 -1
- package/dist/runTelemetryWriter.js.map +1 -1
- package/dist/runTerminalContext.d.ts +31 -0
- package/dist/runTerminalContext.d.ts.map +1 -0
- package/dist/runTerminalContext.js +12 -0
- package/dist/runTerminalContext.js.map +1 -0
- package/dist/runTerminalResults.d.ts +55 -0
- package/dist/runTerminalResults.d.ts.map +1 -0
- package/dist/runTerminalResults.js +134 -0
- package/dist/runTerminalResults.js.map +1 -0
- package/dist/runTerminals.d.ts +8 -57
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +423 -135
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts +32 -0
- package/dist/secretDiff.d.ts.map +1 -0
- package/dist/secretDiff.js +140 -0
- package/dist/secretDiff.js.map +1 -0
- package/dist/structuredOutput.d.ts.map +1 -1
- package/dist/structuredOutput.js.map +1 -1
- package/dist/task-contract-builder.d.ts +35 -0
- package/dist/task-contract-builder.d.ts.map +1 -0
- package/dist/task-contract-builder.js +114 -0
- package/dist/task-contract-builder.js.map +1 -0
- package/dist/terminalOutcome.d.ts +22 -0
- package/dist/terminalOutcome.d.ts.map +1 -0
- package/dist/terminalOutcome.js +39 -0
- package/dist/terminalOutcome.js.map +1 -0
- package/dist/transientClassify.js.map +1 -1
- package/package.json +17 -17
package/dist/runTerminals.js
CHANGED
|
@@ -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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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("
|
|
115
|
-
log.emit("run.failed", {
|
|
43
|
+
context.log.emit("run.failed", {
|
|
116
44
|
lifecycle: "failed",
|
|
117
|
-
facts
|
|
118
|
-
reason:
|
|
119
|
-
phase,
|
|
120
|
-
error:
|
|
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
|
-
|
|
125
|
-
taskId,
|
|
126
|
-
mode,
|
|
52
|
+
...prior,
|
|
127
53
|
lifecycle: "failed",
|
|
128
|
-
facts
|
|
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
|
|
126
|
+
runDir: a.paths.root,
|
|
127
|
+
summary,
|
|
132
128
|
candidates: [],
|
|
133
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
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
|
package/dist/runTerminals.js.map
CHANGED
|
@@ -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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"}
|