@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.
Files changed (137) 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 +7 -0
  6. package/dist/attemptTelemetry.d.ts.map +1 -1
  7. package/dist/attemptTelemetry.js +2 -1
  8. package/dist/attemptTelemetry.js.map +1 -1
  9. package/dist/attemptUsageCost.d.ts +24 -2
  10. package/dist/attemptUsageCost.d.ts.map +1 -1
  11. package/dist/attemptUsageCost.js +18 -2
  12. package/dist/attemptUsageCost.js.map +1 -1
  13. package/dist/budgetFailure.d.ts +1 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js.map +1 -1
  16. package/dist/candidateEvidence.d.ts +24 -0
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +26 -0
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/credential-profile-rotation.d.ts +145 -0
  21. package/dist/credential-profile-rotation.d.ts.map +1 -0
  22. package/dist/credential-profile-rotation.js +335 -0
  23. package/dist/credential-profile-rotation.js.map +1 -0
  24. package/dist/credential-profiles.d.ts +90 -130
  25. package/dist/credential-profiles.d.ts.map +1 -1
  26. package/dist/credential-profiles.js +156 -290
  27. package/dist/credential-profiles.js.map +1 -1
  28. package/dist/decisionBudget.d.ts +2 -2
  29. package/dist/decisionBudget.d.ts.map +1 -1
  30. package/dist/deepScanReducer.d.ts +14 -44
  31. package/dist/deepScanReducer.d.ts.map +1 -1
  32. package/dist/deepScanReducer.js +240 -128
  33. package/dist/deepScanReducer.js.map +1 -1
  34. package/dist/delegatedHome.d.ts +156 -0
  35. package/dist/delegatedHome.d.ts.map +1 -0
  36. package/dist/delegatedHome.js +179 -0
  37. package/dist/delegatedHome.js.map +1 -0
  38. package/dist/delegationBudgetAuthority.d.ts.map +1 -1
  39. package/dist/delegationBudgetAuthority.js.map +1 -1
  40. package/dist/delegationFailure.d.ts.map +1 -1
  41. package/dist/git-precondition.d.ts +11 -0
  42. package/dist/git-precondition.d.ts.map +1 -0
  43. package/dist/git-precondition.js +69 -0
  44. package/dist/git-precondition.js.map +1 -0
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/interaction.d.ts +14 -6
  50. package/dist/interaction.d.ts.map +1 -1
  51. package/dist/interaction.js +106 -19
  52. package/dist/interaction.js.map +1 -1
  53. package/dist/orchestrator.d.ts +64 -83
  54. package/dist/orchestrator.d.ts.map +1 -1
  55. package/dist/orchestrator.js +578 -691
  56. package/dist/orchestrator.js.map +1 -1
  57. package/dist/planBrief.d.ts +27 -0
  58. package/dist/planBrief.d.ts.map +1 -0
  59. package/dist/planBrief.js +42 -0
  60. package/dist/planBrief.js.map +1 -0
  61. package/dist/planQuestions.js +4 -1
  62. package/dist/planQuestions.js.map +1 -1
  63. package/dist/planRun.d.ts +4 -3
  64. package/dist/planRun.d.ts.map +1 -1
  65. package/dist/planRun.js +33 -33
  66. package/dist/planRun.js.map +1 -1
  67. package/dist/plannerAttempt.d.ts +64 -0
  68. package/dist/plannerAttempt.d.ts.map +1 -0
  69. package/dist/plannerAttempt.js +235 -0
  70. package/dist/plannerAttempt.js.map +1 -0
  71. package/dist/policyFindings.js.map +1 -1
  72. package/dist/requestRequirements.d.ts +43 -3
  73. package/dist/requestRequirements.d.ts.map +1 -1
  74. package/dist/requestRequirements.js +106 -13
  75. package/dist/requestRequirements.js.map +1 -1
  76. package/dist/reviewerPanel.js.map +1 -1
  77. package/dist/root-ledger.d.ts.map +1 -1
  78. package/dist/root-ledger.js +2 -0
  79. package/dist/root-ledger.js.map +1 -1
  80. package/dist/run-bounded.d.ts.map +1 -1
  81. package/dist/run-bounded.js +7 -1
  82. package/dist/run-bounded.js.map +1 -1
  83. package/dist/run-input-resolution.d.ts.map +1 -1
  84. package/dist/run-input-resolution.js +26 -8
  85. package/dist/run-input-resolution.js.map +1 -1
  86. package/dist/runEventLog.d.ts +48 -0
  87. package/dist/runEventLog.d.ts.map +1 -0
  88. package/dist/runEventLog.js +63 -0
  89. package/dist/runEventLog.js.map +1 -0
  90. package/dist/runFacts.d.ts +23 -0
  91. package/dist/runFacts.d.ts.map +1 -0
  92. package/dist/runFacts.js +179 -0
  93. package/dist/runFacts.js.map +1 -0
  94. package/dist/runFactsBuilder.d.ts +5 -0
  95. package/dist/runFactsBuilder.d.ts.map +1 -0
  96. package/dist/runFactsBuilder.js +412 -0
  97. package/dist/runFactsBuilder.js.map +1 -0
  98. package/dist/runFactsDeliverable.d.ts +13 -0
  99. package/dist/runFactsDeliverable.d.ts.map +1 -0
  100. package/dist/runFactsDeliverable.js +94 -0
  101. package/dist/runFactsDeliverable.js.map +1 -0
  102. package/dist/runFactsPresentation.d.ts +7 -0
  103. package/dist/runFactsPresentation.d.ts.map +1 -0
  104. package/dist/runFactsPresentation.js +113 -0
  105. package/dist/runFactsPresentation.js.map +1 -0
  106. package/dist/runFactsReview.d.ts +7 -0
  107. package/dist/runFactsReview.d.ts.map +1 -0
  108. package/dist/runFactsReview.js +63 -0
  109. package/dist/runFactsReview.js.map +1 -0
  110. package/dist/runSupport.d.ts +17 -15
  111. package/dist/runSupport.d.ts.map +1 -1
  112. package/dist/runSupport.js +16 -0
  113. package/dist/runSupport.js.map +1 -1
  114. package/dist/runTerminalContext.d.ts +31 -0
  115. package/dist/runTerminalContext.d.ts.map +1 -0
  116. package/dist/runTerminalContext.js +12 -0
  117. package/dist/runTerminalContext.js.map +1 -0
  118. package/dist/runTerminalResults.d.ts +80 -0
  119. package/dist/runTerminalResults.d.ts.map +1 -0
  120. package/dist/runTerminalResults.js +164 -0
  121. package/dist/runTerminalResults.js.map +1 -0
  122. package/dist/runTerminals.d.ts +4 -80
  123. package/dist/runTerminals.d.ts.map +1 -1
  124. package/dist/runTerminals.js +357 -260
  125. package/dist/runTerminals.js.map +1 -1
  126. package/dist/secretDiff.d.ts +3 -0
  127. package/dist/secretDiff.d.ts.map +1 -1
  128. package/dist/secretDiff.js +7 -0
  129. package/dist/secretDiff.js.map +1 -1
  130. package/dist/structuredOutput.d.ts.map +1 -1
  131. package/dist/structuredOutput.js.map +1 -1
  132. package/dist/task-contract-builder.d.ts +35 -0
  133. package/dist/task-contract-builder.d.ts.map +1 -0
  134. package/dist/task-contract-builder.js +114 -0
  135. package/dist/task-contract-builder.js.map +1 -0
  136. package/dist/transientClassify.js.map +1 -1
  137. package/package.json +17 -17
@@ -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,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,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,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrE,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,CA8E/F"}
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
- const knownHarnessIds = new Set(deps.registryIds);
32
- for (const key of Object.keys(input.models ?? {})) {
33
- if (!knownHarnessIds.has(key)) {
34
- throw new Error(`models map names unknown harness '${key}' (registered: ${[...knownHarnessIds].sort().join(", ")}); ` +
35
- `run \`claudexor harness list --all\``);
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 harnesses ?? []) {
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":"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"}
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"}
@@ -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":"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"}
@@ -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"}