@claudexor/orchestrator 3.1.2 → 3.3.7-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +7 -0
- package/dist/attemptTelemetry.d.ts.map +1 -1
- package/dist/attemptTelemetry.js +2 -1
- package/dist/attemptTelemetry.js.map +1 -1
- package/dist/attemptUsageCost.d.ts +24 -2
- package/dist/attemptUsageCost.d.ts.map +1 -1
- package/dist/attemptUsageCost.js +18 -2
- package/dist/attemptUsageCost.js.map +1 -1
- package/dist/budgetFailure.d.ts +1 -1
- package/dist/budgetFailure.d.ts.map +1 -1
- package/dist/budgetFailure.js.map +1 -1
- package/dist/candidateEvidence.d.ts +24 -0
- package/dist/candidateEvidence.d.ts.map +1 -1
- package/dist/candidateEvidence.js +26 -0
- package/dist/candidateEvidence.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 +335 -0
- package/dist/credential-profile-rotation.js.map +1 -0
- package/dist/credential-profiles.d.ts +90 -130
- package/dist/credential-profiles.d.ts.map +1 -1
- package/dist/credential-profiles.js +156 -290
- package/dist/credential-profiles.js.map +1 -1
- package/dist/decisionBudget.d.ts +2 -2
- package/dist/decisionBudget.d.ts.map +1 -1
- 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/delegatedHome.d.ts +156 -0
- package/dist/delegatedHome.d.ts.map +1 -0
- package/dist/delegatedHome.js +179 -0
- package/dist/delegatedHome.js.map +1 -0
- package/dist/delegationBudgetAuthority.d.ts.map +1 -1
- package/dist/delegationBudgetAuthority.js.map +1 -1
- package/dist/delegationFailure.d.ts.map +1 -1
- 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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -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 +64 -83
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +578 -691
- package/dist/orchestrator.js.map +1 -1
- 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/planQuestions.js +4 -1
- package/dist/planQuestions.js.map +1 -1
- 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 +43 -3
- package/dist/requestRequirements.d.ts.map +1 -1
- package/dist/requestRequirements.js +106 -13
- package/dist/requestRequirements.js.map +1 -1
- package/dist/reviewerPanel.js.map +1 -1
- package/dist/root-ledger.d.ts.map +1 -1
- package/dist/root-ledger.js +2 -0
- package/dist/root-ledger.js.map +1 -1
- package/dist/run-bounded.d.ts.map +1 -1
- package/dist/run-bounded.js +7 -1
- package/dist/run-bounded.js.map +1 -1
- package/dist/run-input-resolution.d.ts.map +1 -1
- package/dist/run-input-resolution.js +26 -8
- package/dist/run-input-resolution.js.map +1 -1
- 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/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 +80 -0
- package/dist/runTerminalResults.d.ts.map +1 -0
- package/dist/runTerminalResults.js +164 -0
- package/dist/runTerminalResults.js.map +1 -0
- package/dist/runTerminals.d.ts +4 -80
- package/dist/runTerminals.d.ts.map +1 -1
- package/dist/runTerminals.js +357 -260
- package/dist/runTerminals.js.map +1 -1
- package/dist/secretDiff.d.ts +3 -0
- package/dist/secretDiff.d.ts.map +1 -1
- package/dist/secretDiff.js +7 -0
- package/dist/secretDiff.js.map +1 -1
- 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/transientClassify.js.map +1 -1
- package/package.json +17 -17
package/dist/run-bounded.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-bounded.js","sourceRoot":"","sources":["../src/run-bounded.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAU,EACV,KAAa,EACb,IAA+C;IAE/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7D,SAAS,CAAC;YACR,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO;YAChC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"run-bounded.js","sourceRoot":"","sources":["../src/run-bounded.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAU,EACV,KAAa,EACb,IAA+C;IAE/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7D,SAAS,CAAC;YACR,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC;YACnB,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO;YAChC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,0EAA0E;IAC1E,4EAA4E;IAC5E,kCAAkC;IAClC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAC3B,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAC1E,CAAC;IACF,IAAI,QAAQ;QAAE,MAAM,QAAQ,CAAC,MAAM,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-input-resolution.d.ts","sourceRoot":"","sources":["../src/run-input-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"run-input-resolution.d.ts","sourceRoot":"","sources":["../src/run-input-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAqF/F"}
|
|
@@ -28,13 +28,15 @@ export function resolveRunInputDefaults(input, deps) {
|
|
|
28
28
|
throw new Error(`contradictory web policy: web='${input.web}' vs externalContextPolicy='${input.externalContextPolicy}' (pass one, or equal values)`);
|
|
29
29
|
}
|
|
30
30
|
const web = input.web ?? input.externalContextPolicy ?? "auto";
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
// Materialize this iterable exactly once: registry.keys() is repeatable, but
|
|
32
|
+
// embedders are allowed to supply any Iterable. The same frozen universe is
|
|
33
|
+
// also the lane snapshot for a pure Auto pool, whose eventual lanes are not
|
|
34
|
+
// known until routing but whose Settings defaults must already be immutable.
|
|
35
|
+
const knownHarnessIds = [...new Set(deps.registryIds)];
|
|
36
|
+
const knownHarnessIdSet = new Set(knownHarnessIds);
|
|
37
|
+
validateHarnessMap("models", input.models, knownHarnessIds, knownHarnessIdSet);
|
|
38
|
+
validateHarnessMap("efforts", input.efforts, knownHarnessIds, knownHarnessIdSet);
|
|
39
|
+
const snapshotLaneIds = harnesses ?? knownHarnessIds;
|
|
38
40
|
const models = { ...input.models };
|
|
39
41
|
if (input.model) {
|
|
40
42
|
const scalarTarget = primaryHarness ?? (harnesses?.length === 1 ? harnesses[0] : undefined);
|
|
@@ -46,11 +48,17 @@ export function resolveRunInputDefaults(input, deps) {
|
|
|
46
48
|
models[scalarTarget] ??= input.model;
|
|
47
49
|
}
|
|
48
50
|
const harnessCfg = cfg.global.harnesses;
|
|
49
|
-
for (const harnessId of
|
|
51
|
+
for (const harnessId of snapshotLaneIds) {
|
|
50
52
|
const defaultModel = harnessCfg[harnessId]?.default_model;
|
|
51
53
|
if (defaultModel)
|
|
52
54
|
models[harnessId] ??= defaultModel;
|
|
53
55
|
}
|
|
56
|
+
const efforts = { ...input.efforts };
|
|
57
|
+
for (const harnessId of snapshotLaneIds) {
|
|
58
|
+
const effort = input.effort ?? harnessCfg[harnessId]?.effort;
|
|
59
|
+
if (effort)
|
|
60
|
+
efforts[harnessId] ??= effort;
|
|
61
|
+
}
|
|
54
62
|
return {
|
|
55
63
|
...input,
|
|
56
64
|
harnesses,
|
|
@@ -58,6 +66,8 @@ export function resolveRunInputDefaults(input, deps) {
|
|
|
58
66
|
primaryHarnessExplicit: explicitPrimary !== undefined,
|
|
59
67
|
model: undefined,
|
|
60
68
|
models,
|
|
69
|
+
effort: undefined,
|
|
70
|
+
efforts,
|
|
61
71
|
routingGoal: input.routingGoal ??
|
|
62
72
|
deps.routingGoal ??
|
|
63
73
|
cfg.project.budget?.routing_goal ??
|
|
@@ -67,4 +77,12 @@ export function resolveRunInputDefaults(input, deps) {
|
|
|
67
77
|
externalContextPolicy: web,
|
|
68
78
|
};
|
|
69
79
|
}
|
|
80
|
+
function validateHarnessMap(name, values, knownHarnessIds, knownHarnessIdSet) {
|
|
81
|
+
for (const key of Object.keys(values ?? {})) {
|
|
82
|
+
if (knownHarnessIdSet.has(key))
|
|
83
|
+
continue;
|
|
84
|
+
throw new Error(`${name} map names unknown harness '${key}' (registered: ${[...knownHarnessIds].sort().join(", ")}); ` +
|
|
85
|
+
`run \`claudexor harness list --all\``);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
70
88
|
//# sourceMappingURL=run-input-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-input-resolution.js","sourceRoot":"","sources":["../src/run-input-resolution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AASpD,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,KAAe,EAAE,IAA4B;IACnF,IACE,KAAK,CAAC,WAAW,KAAK,KAAK;QAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC,EACjE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9F,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC;IAC7C,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IACzD,MAAM,cAAc,GAClB,eAAe;QACf,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,aAAa;QACb,SAAS,CAAC;IACZ,IAAI,cAAc,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/E,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,oBAAoB,eAAe,0CAA0C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gBACpG,qCAAqC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,eAAe,gBAAgB,CACzG,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,8DAA8D,cAAc,kCAAkC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACrI,oFAAoF,SAAS,CAAC,CAAC,CAAC,KAAK;YACrG,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAC/C,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,CAAC,GAAG,+BAA+B,KAAK,CAAC,qBAAqB,+BAA+B,CACrI,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,qBAAqB,IAAI,MAAM,CAAC;IAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-input-resolution.js","sourceRoot":"","sources":["../src/run-input-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ArtifactStore, RunPaths } from "@claudexor/artifact-store";
|
|
2
|
+
import type { BudgetLedger } from "@claudexor/budget";
|
|
3
|
+
import { EventLog } from "@claudexor/event-log";
|
|
4
|
+
import type { ModeKind, QuotaSnapshot, RunEvent, TaskContract } from "@claudexor/schema";
|
|
5
|
+
import type { DelegationBudgetAuthority } from "./delegationBudgetAuthority.js";
|
|
6
|
+
import type { RunInput } from "./orchestrator.js";
|
|
7
|
+
import { type AnnouncedRunContext } from "./runTerminalContext.js";
|
|
8
|
+
interface RunEventLogInput {
|
|
9
|
+
threadId?: string;
|
|
10
|
+
onEventPersist?: (event: RunEvent) => void;
|
|
11
|
+
onEvent?: (event: RunEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
interface RunAnnouncementInput {
|
|
14
|
+
input: RunInput;
|
|
15
|
+
contract: TaskContract;
|
|
16
|
+
quotaSnapshots: readonly QuotaSnapshot[];
|
|
17
|
+
store: ArtifactStore;
|
|
18
|
+
authority?: DelegationBudgetAuthority;
|
|
19
|
+
runId: string;
|
|
20
|
+
taskId: string;
|
|
21
|
+
mode: ModeKind;
|
|
22
|
+
phase: "race" | "convergence" | "plan" | "report";
|
|
23
|
+
prompt: string;
|
|
24
|
+
}
|
|
25
|
+
/** Keep durable-journal and live-observer callback ordering identical at every run entry point. */
|
|
26
|
+
export declare function createRunEventLog(eventsPath: string, runId: string, taskId: string, input: RunEventLogInput): EventLog;
|
|
27
|
+
/**
|
|
28
|
+
* Everything after EventLog construction and before `run.created` persists is
|
|
29
|
+
* still pre-announce: a ledger or durable-sink refusal must escape without the
|
|
30
|
+
* terminal safety net. Release live-writer ownership across that whole window
|
|
31
|
+
* so a failed startup cannot strand the run path behind the duplicate-owner
|
|
32
|
+
* fence.
|
|
33
|
+
*/
|
|
34
|
+
export declare function prepareRunAnnouncement<T>(log: EventLog, prepare: () => T): T;
|
|
35
|
+
/**
|
|
36
|
+
* One startup boundary for every run strategy. A delegated ledger must be
|
|
37
|
+
* attached before run.created (X339), while caller-visible publication must
|
|
38
|
+
* wait until that event reaches the durable sink. Arm the whole-run terminal
|
|
39
|
+
* guard before any later preamble callback/event can fail.
|
|
40
|
+
*/
|
|
41
|
+
export declare function beginAnnouncedRun(start: RunAnnouncementInput, announce: (context: AnnouncedRunContext) => void): {
|
|
42
|
+
store: ArtifactStore;
|
|
43
|
+
paths: RunPaths;
|
|
44
|
+
log: EventLog;
|
|
45
|
+
ledger: BudgetLedger;
|
|
46
|
+
};
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=runEventLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runEventLog.d.ts","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExF,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mGAAmG;AACnG,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,QAAQ,CASV;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAO5E;AAcD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAC/C;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAyBhF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { EventLog } from "@claudexor/event-log";
|
|
2
|
+
import { redactSecrets, safeInvoke } from "@claudexor/util";
|
|
3
|
+
import { createRootLedger } from "./root-ledger.js";
|
|
4
|
+
import { announcedRunContext } from "./runTerminalContext.js";
|
|
5
|
+
/** Keep durable-journal and live-observer callback ordering identical at every run entry point. */
|
|
6
|
+
export function createRunEventLog(eventsPath, runId, taskId, input) {
|
|
7
|
+
return new EventLog(eventsPath, runId, taskId, input.onEventPersist, input.threadId, input.onEvent);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Everything after EventLog construction and before `run.created` persists is
|
|
11
|
+
* still pre-announce: a ledger or durable-sink refusal must escape without the
|
|
12
|
+
* terminal safety net. Release live-writer ownership across that whole window
|
|
13
|
+
* so a failed startup cannot strand the run path behind the duplicate-owner
|
|
14
|
+
* fence.
|
|
15
|
+
*/
|
|
16
|
+
export function prepareRunAnnouncement(log, prepare) {
|
|
17
|
+
try {
|
|
18
|
+
return prepare();
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
log.dispose();
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function announcePreparedProjectGitInitialization(input, log) {
|
|
26
|
+
const result = input.projectGitInitialization;
|
|
27
|
+
if (!result || (!result.initialized && !result.baselineCommitted))
|
|
28
|
+
return;
|
|
29
|
+
log.emit("project.git.initialized", {
|
|
30
|
+
repo_root: input.repoRoot,
|
|
31
|
+
initialized: result.initialized,
|
|
32
|
+
baseline_committed: result.baselineCommitted,
|
|
33
|
+
gitignore_seeded: result.gitignoreSeeded,
|
|
34
|
+
head_sha: result.headSha,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One startup boundary for every run strategy. A delegated ledger must be
|
|
39
|
+
* attached before run.created (X339), while caller-visible publication must
|
|
40
|
+
* wait until that event reaches the durable sink. Arm the whole-run terminal
|
|
41
|
+
* guard before any later preamble callback/event can fail.
|
|
42
|
+
*/
|
|
43
|
+
export function beginAnnouncedRun(start, announce) {
|
|
44
|
+
const { input, contract, quotaSnapshots, store, authority, runId, taskId, mode, phase } = start;
|
|
45
|
+
const paths = store.createRun(runId);
|
|
46
|
+
const log = createRunEventLog(paths.eventsPath, runId, taskId, input);
|
|
47
|
+
const ledger = prepareRunAnnouncement(log, () => {
|
|
48
|
+
const preparedLedger = createRootLedger({
|
|
49
|
+
input,
|
|
50
|
+
contract,
|
|
51
|
+
log,
|
|
52
|
+
authority,
|
|
53
|
+
quotaSnapshots,
|
|
54
|
+
});
|
|
55
|
+
log.emit("run.created", { mode, prompt: redactSecrets(start.prompt) });
|
|
56
|
+
return preparedLedger;
|
|
57
|
+
});
|
|
58
|
+
announce(announcedRunContext({ log, store, paths, runId, taskId, mode, phase }, ledger, () => authority?.hasParent(runId) === true));
|
|
59
|
+
safeInvoke(input.onRunStart, { runId, taskId, runDir: paths.root });
|
|
60
|
+
announcePreparedProjectGitInitialization(input, log);
|
|
61
|
+
return { store, paths, log, ledger };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=runEventLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runEventLog.js","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type RunFacts, type RunOutcomeFacts } from "@claudexor/schema";
|
|
2
|
+
import type { AnnouncedRunContext } from "./runTerminals.js";
|
|
3
|
+
import { buildRunFacts } from "./runFactsBuilder.js";
|
|
4
|
+
export { buildRunFacts };
|
|
5
|
+
export interface PreparedRunFactsReceipt {
|
|
6
|
+
facts: RunFacts;
|
|
7
|
+
/** Publish telemetry compatibility + the canonical receipt commit marker. */
|
|
8
|
+
commit: () => void;
|
|
9
|
+
/** Restore the exact pre-commit marker/telemetry bytes after event failure. */
|
|
10
|
+
rollback: () => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Prepare the validated receipt before terminal append. EventLog owns the
|
|
14
|
+
* commit boundary and invokes rollback if the terminal cannot become durable.
|
|
15
|
+
*/
|
|
16
|
+
export declare function prepareRunFactsReceipt(ctx: AnnouncedRunContext, terminalOutcome: RunOutcomeFacts): PreparedRunFactsReceipt;
|
|
17
|
+
/**
|
|
18
|
+
* A terminal-facts contradiction is itself a failed run. This minimal receipt
|
|
19
|
+
* deliberately does not trust the contradictory artifact graph, but still
|
|
20
|
+
* gives every surface a valid, fail-closed canonical outcome.
|
|
21
|
+
*/
|
|
22
|
+
export declare function prepareRunFactsFailureReceipt(ctx: AnnouncedRunContext, failureOutcome: RunOutcomeFacts): PreparedRunFactsReceipt;
|
|
23
|
+
//# sourceMappingURL=runFacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runFacts.d.ts","sourceRoot":"","sources":["../src/runFacts.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,KAAK,QAAQ,EACb,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,QAAQ,CAAC;IAChB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AA6HD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,mBAAmB,EACxB,eAAe,EAAE,eAAe,GAC/B,uBAAuB,CAEzB;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,mBAAmB,EACxB,cAAc,EAAE,eAAe,GAC9B,uBAAuB,CAoCzB"}
|
package/dist/runFacts.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { closeSync, constants, fsyncSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { RunTelemetry, SCHEMA_VERSION, requiredActionsFor, validateRunFactsInvariants, } from "@claudexor/schema";
|
|
5
|
+
import { nowIso } from "@claudexor/util";
|
|
6
|
+
import { buildRunFacts } from "./runFactsBuilder.js";
|
|
7
|
+
import { terminalFactsFailurePresentation } from "./runFactsPresentation.js";
|
|
8
|
+
export { buildRunFacts };
|
|
9
|
+
function textSnapshot(path) {
|
|
10
|
+
try {
|
|
11
|
+
return { existed: true, text: readFileSync(path, "utf8") };
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error.code === "ENOENT") {
|
|
15
|
+
return { existed: false, text: "" };
|
|
16
|
+
}
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function restoreSnapshot(path, prior) {
|
|
21
|
+
if (!prior.existed) {
|
|
22
|
+
let removed = false;
|
|
23
|
+
try {
|
|
24
|
+
unlinkSync(path);
|
|
25
|
+
removed = true;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error.code !== "ENOENT")
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
if (removed)
|
|
32
|
+
fsyncParentDirectory(dirname(path));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
replaceTextAtomically(path, prior.text);
|
|
36
|
+
}
|
|
37
|
+
function fsyncParentDirectory(parent) {
|
|
38
|
+
const parentFd = openSync(parent, constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
|
|
39
|
+
try {
|
|
40
|
+
fsyncSync(parentFd);
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
closeSync(parentFd);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function replaceTextAtomically(path, text) {
|
|
47
|
+
const parent = dirname(path);
|
|
48
|
+
const tmp = join(parent, `.run-facts-restore-${randomUUID()}.tmp`);
|
|
49
|
+
let fileFd = null;
|
|
50
|
+
try {
|
|
51
|
+
fileFd = openSync(tmp, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
52
|
+
writeFileSync(fileFd, text, "utf8");
|
|
53
|
+
fsyncSync(fileFd);
|
|
54
|
+
closeSync(fileFd);
|
|
55
|
+
fileFd = null;
|
|
56
|
+
renameSync(tmp, path);
|
|
57
|
+
fsyncParentDirectory(parent);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (fileFd !== null)
|
|
61
|
+
closeSync(fileFd);
|
|
62
|
+
try {
|
|
63
|
+
unlinkSync(tmp);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error.code !== "ENOENT")
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function writeYamlAtomically(ctx, path, value) {
|
|
72
|
+
const parent = dirname(path);
|
|
73
|
+
const tmp = join(parent, `.run-facts-${randomUUID()}.tmp`);
|
|
74
|
+
try {
|
|
75
|
+
ctx.store.writeYaml(tmp, value);
|
|
76
|
+
const fileFd = openSync(tmp, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
77
|
+
try {
|
|
78
|
+
fsyncSync(fileFd);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
closeSync(fileFd);
|
|
82
|
+
}
|
|
83
|
+
renameSync(tmp, path);
|
|
84
|
+
fsyncParentDirectory(parent);
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
try {
|
|
88
|
+
unlinkSync(tmp);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if (error.code !== "ENOENT")
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function persistPreparedRunFacts(ctx, facts) {
|
|
97
|
+
const telemetryPath = join(ctx.paths.finalDir, "telemetry.yaml");
|
|
98
|
+
const receiptPath = join(ctx.paths.finalDir, "run_facts.yaml");
|
|
99
|
+
const parsedTelemetry = RunTelemetry.safeParse(ctx.store.readYaml(telemetryPath));
|
|
100
|
+
const telemetry = parsedTelemetry.success ? parsedTelemetry.data : null;
|
|
101
|
+
const embedded = telemetry ? RunTelemetry.parse({ ...telemetry, run_facts: facts }) : null;
|
|
102
|
+
let priorTelemetry = null;
|
|
103
|
+
let priorReceipt = null;
|
|
104
|
+
let committed = false;
|
|
105
|
+
let rolledBack = false;
|
|
106
|
+
const rollback = () => {
|
|
107
|
+
if (rolledBack)
|
|
108
|
+
return;
|
|
109
|
+
if (priorReceipt)
|
|
110
|
+
restoreSnapshot(receiptPath, priorReceipt);
|
|
111
|
+
if (priorTelemetry)
|
|
112
|
+
restoreSnapshot(telemetryPath, priorTelemetry);
|
|
113
|
+
rolledBack = true;
|
|
114
|
+
};
|
|
115
|
+
const commit = () => {
|
|
116
|
+
if (committed)
|
|
117
|
+
return;
|
|
118
|
+
if (rolledBack)
|
|
119
|
+
throw new Error("cannot commit a rolled-back RunFacts receipt");
|
|
120
|
+
priorTelemetry = textSnapshot(telemetryPath);
|
|
121
|
+
priorReceipt = textSnapshot(receiptPath);
|
|
122
|
+
if (embedded)
|
|
123
|
+
writeYamlAtomically(ctx, telemetryPath, embedded);
|
|
124
|
+
// Land the canonical marker last, after its telemetry compatibility copy.
|
|
125
|
+
writeYamlAtomically(ctx, receiptPath, facts);
|
|
126
|
+
committed = true;
|
|
127
|
+
};
|
|
128
|
+
return { facts, commit, rollback };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Prepare the validated receipt before terminal append. EventLog owns the
|
|
132
|
+
* commit boundary and invokes rollback if the terminal cannot become durable.
|
|
133
|
+
*/
|
|
134
|
+
export function prepareRunFactsReceipt(ctx, terminalOutcome) {
|
|
135
|
+
return persistPreparedRunFacts(ctx, buildRunFacts(ctx, terminalOutcome));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* A terminal-facts contradiction is itself a failed run. This minimal receipt
|
|
139
|
+
* deliberately does not trust the contradictory artifact graph, but still
|
|
140
|
+
* gives every surface a valid, fail-closed canonical outcome.
|
|
141
|
+
*/
|
|
142
|
+
export function prepareRunFactsFailureReceipt(ctx, failureOutcome) {
|
|
143
|
+
const facts = validateRunFactsInvariants({
|
|
144
|
+
schema_version: SCHEMA_VERSION,
|
|
145
|
+
run_id: ctx.runId,
|
|
146
|
+
task_id: ctx.taskId,
|
|
147
|
+
mode: ctx.mode,
|
|
148
|
+
outcome: failureOutcome,
|
|
149
|
+
deliverable: {
|
|
150
|
+
present: false,
|
|
151
|
+
kind: null,
|
|
152
|
+
path: null,
|
|
153
|
+
producer_attempt_id: null,
|
|
154
|
+
},
|
|
155
|
+
presentation: terminalFactsFailurePresentation(ctx),
|
|
156
|
+
participants: { planners: 0, attempts: [] },
|
|
157
|
+
gates: {
|
|
158
|
+
configured: false,
|
|
159
|
+
required: 0,
|
|
160
|
+
total: 0,
|
|
161
|
+
executed: false,
|
|
162
|
+
state: "not_configured",
|
|
163
|
+
receipt_attempt_id: null,
|
|
164
|
+
},
|
|
165
|
+
review: {
|
|
166
|
+
state: failureOutcome.review,
|
|
167
|
+
blocker_ids: [],
|
|
168
|
+
blockers: 0,
|
|
169
|
+
},
|
|
170
|
+
apply: {
|
|
171
|
+
eligibility: null,
|
|
172
|
+
operator_decision_present: false,
|
|
173
|
+
},
|
|
174
|
+
required_actions: requiredActionsFor(failureOutcome, false),
|
|
175
|
+
generated_at: nowIso(),
|
|
176
|
+
});
|
|
177
|
+
return persistPreparedRunFacts(ctx, facts);
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=runFacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runFacts.js","sourceRoot":"","sources":["../src/runFacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,0BAA0B,GAG3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,CAAC;AAezB,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAmB;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtE,CAAC;QACD,IAAI,OAAO;YAAE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CACvB,MAAM,EACN,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU,CAClE,CAAC;IACF,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,IAAY;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,UAAU,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CACf,GAAG,EACH,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,EAChF,KAAK,CACN,CAAC;QACF,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,SAAS,CAAC,MAAM,CAAC,CAAC;QAClB,MAAM,GAAG,IAAI,CAAC;QACd,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAwB,EAAE,IAAY,EAAE,KAAc;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,UAAU,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,UAAU,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,GAAwB,EACxB,KAAe;IAEf,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,IAAI,cAAc,GAAwB,IAAI,CAAC;IAC/C,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,UAAU;YAAE,OAAO;QACvB,IAAI,YAAY;YAAE,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,cAAc;YAAE,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACnE,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,SAAS;YAAE,OAAO;QACtB,IAAI,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAChF,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,QAAQ;YAAE,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChE,0EAA0E;QAC1E,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7C,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAwB,EACxB,eAAgC;IAEhC,OAAO,uBAAuB,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAAwB,EACxB,cAA+B;IAE/B,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACvC,cAAc,EAAE,cAAc;QAC9B,MAAM,EAAE,GAAG,CAAC,KAAK;QACjB,OAAO,EAAE,GAAG,CAAC,MAAM;QACnB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,cAAc;QACvB,WAAW,EAAE;YACX,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,mBAAmB,EAAE,IAAI;SAC1B;QACD,YAAY,EAAE,gCAAgC,CAAC,GAAG,CAAC;QACnD,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,KAAK,EAAE;YACL,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,CAAC;YACR,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,gBAAgB;YACvB,kBAAkB,EAAE,IAAI;SACzB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,cAAc,CAAC,MAAM;YAC5B,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,CAAC;SACZ;QACD,KAAK,EAAE;YACL,WAAW,EAAE,IAAI;YACjB,yBAAyB,EAAE,KAAK;SACjC;QACD,gBAAgB,EAAE,kBAAkB,CAAC,cAAc,EAAE,KAAK,CAAC;QAC3D,YAAY,EAAE,MAAM,EAAE;KACvB,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RunFacts, type RunOutcomeFacts } from "@claudexor/schema";
|
|
2
|
+
import type { AnnouncedRunContext } from "./runTerminals.js";
|
|
3
|
+
/** Build and validate the terminal projection from canonical artifacts. */
|
|
4
|
+
export declare function buildRunFacts(ctx: AnnouncedRunContext, terminalOutcome: RunOutcomeFacts): RunFacts;
|
|
5
|
+
//# sourceMappingURL=runFactsBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runFactsBuilder.d.ts","sourceRoot":"","sources":["../src/runFactsBuilder.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,QAAQ,EAQR,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmZ7D,2EAA2E;AAC3E,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,eAAe,EAAE,eAAe,GAC/B,QAAQ,CAgHV"}
|