@claudexor/orchestrator 3.1.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) 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 +17 -1
  10. package/dist/attemptUsageCost.d.ts.map +1 -1
  11. package/dist/attemptUsageCost.js +11 -1
  12. package/dist/attemptUsageCost.js.map +1 -1
  13. package/dist/budgetFailure.js.map +1 -1
  14. package/dist/credential-profile-rotation.d.ts +145 -0
  15. package/dist/credential-profile-rotation.d.ts.map +1 -0
  16. package/dist/credential-profile-rotation.js +315 -0
  17. package/dist/credential-profile-rotation.js.map +1 -0
  18. package/dist/credential-profiles.d.ts +35 -134
  19. package/dist/credential-profiles.d.ts.map +1 -1
  20. package/dist/credential-profiles.js +73 -295
  21. package/dist/credential-profiles.js.map +1 -1
  22. package/dist/decisionBudget.d.ts +2 -2
  23. package/dist/decisionBudget.d.ts.map +1 -1
  24. package/dist/deepScanReducer.d.ts +14 -44
  25. package/dist/deepScanReducer.d.ts.map +1 -1
  26. package/dist/deepScanReducer.js +240 -128
  27. package/dist/deepScanReducer.js.map +1 -1
  28. package/dist/delegationBudgetAuthority.d.ts.map +1 -1
  29. package/dist/delegationBudgetAuthority.js.map +1 -1
  30. package/dist/delegationFailure.d.ts.map +1 -1
  31. package/dist/git-precondition.d.ts +11 -0
  32. package/dist/git-precondition.d.ts.map +1 -0
  33. package/dist/git-precondition.js +69 -0
  34. package/dist/git-precondition.js.map +1 -0
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/interaction.d.ts +14 -6
  40. package/dist/interaction.d.ts.map +1 -1
  41. package/dist/interaction.js +106 -19
  42. package/dist/interaction.js.map +1 -1
  43. package/dist/orchestrator.d.ts +39 -83
  44. package/dist/orchestrator.d.ts.map +1 -1
  45. package/dist/orchestrator.js +480 -676
  46. package/dist/orchestrator.js.map +1 -1
  47. package/dist/planBrief.d.ts +27 -0
  48. package/dist/planBrief.d.ts.map +1 -0
  49. package/dist/planBrief.js +42 -0
  50. package/dist/planBrief.js.map +1 -0
  51. package/dist/planRun.d.ts +4 -3
  52. package/dist/planRun.d.ts.map +1 -1
  53. package/dist/planRun.js +33 -33
  54. package/dist/planRun.js.map +1 -1
  55. package/dist/plannerAttempt.d.ts +64 -0
  56. package/dist/plannerAttempt.d.ts.map +1 -0
  57. package/dist/plannerAttempt.js +235 -0
  58. package/dist/plannerAttempt.js.map +1 -0
  59. package/dist/policyFindings.js.map +1 -1
  60. package/dist/requestRequirements.d.ts +28 -1
  61. package/dist/requestRequirements.d.ts.map +1 -1
  62. package/dist/requestRequirements.js +89 -10
  63. package/dist/requestRequirements.js.map +1 -1
  64. package/dist/reviewerPanel.js.map +1 -1
  65. package/dist/root-ledger.d.ts.map +1 -1
  66. package/dist/root-ledger.js +2 -0
  67. package/dist/root-ledger.js.map +1 -1
  68. package/dist/run-bounded.d.ts.map +1 -1
  69. package/dist/run-bounded.js +7 -1
  70. package/dist/run-bounded.js.map +1 -1
  71. package/dist/run-input-resolution.d.ts.map +1 -1
  72. package/dist/run-input-resolution.js +26 -8
  73. package/dist/run-input-resolution.js.map +1 -1
  74. package/dist/runEventLog.d.ts +48 -0
  75. package/dist/runEventLog.d.ts.map +1 -0
  76. package/dist/runEventLog.js +63 -0
  77. package/dist/runEventLog.js.map +1 -0
  78. package/dist/runFacts.d.ts +23 -0
  79. package/dist/runFacts.d.ts.map +1 -0
  80. package/dist/runFacts.js +179 -0
  81. package/dist/runFacts.js.map +1 -0
  82. package/dist/runFactsBuilder.d.ts +5 -0
  83. package/dist/runFactsBuilder.d.ts.map +1 -0
  84. package/dist/runFactsBuilder.js +412 -0
  85. package/dist/runFactsBuilder.js.map +1 -0
  86. package/dist/runFactsDeliverable.d.ts +13 -0
  87. package/dist/runFactsDeliverable.d.ts.map +1 -0
  88. package/dist/runFactsDeliverable.js +94 -0
  89. package/dist/runFactsDeliverable.js.map +1 -0
  90. package/dist/runFactsPresentation.d.ts +7 -0
  91. package/dist/runFactsPresentation.d.ts.map +1 -0
  92. package/dist/runFactsPresentation.js +113 -0
  93. package/dist/runFactsPresentation.js.map +1 -0
  94. package/dist/runFactsReview.d.ts +7 -0
  95. package/dist/runFactsReview.d.ts.map +1 -0
  96. package/dist/runFactsReview.js +63 -0
  97. package/dist/runFactsReview.js.map +1 -0
  98. package/dist/runSupport.d.ts +17 -15
  99. package/dist/runSupport.d.ts.map +1 -1
  100. package/dist/runSupport.js +16 -0
  101. package/dist/runSupport.js.map +1 -1
  102. package/dist/runTerminalContext.d.ts +31 -0
  103. package/dist/runTerminalContext.d.ts.map +1 -0
  104. package/dist/runTerminalContext.js +12 -0
  105. package/dist/runTerminalContext.js.map +1 -0
  106. package/dist/runTerminalResults.d.ts +55 -0
  107. package/dist/runTerminalResults.d.ts.map +1 -0
  108. package/dist/runTerminalResults.js +134 -0
  109. package/dist/runTerminalResults.js.map +1 -0
  110. package/dist/runTerminals.d.ts +4 -80
  111. package/dist/runTerminals.d.ts.map +1 -1
  112. package/dist/runTerminals.js +357 -260
  113. package/dist/runTerminals.js.map +1 -1
  114. package/dist/secretDiff.d.ts +3 -0
  115. package/dist/secretDiff.d.ts.map +1 -1
  116. package/dist/secretDiff.js +7 -0
  117. package/dist/secretDiff.js.map +1 -1
  118. package/dist/structuredOutput.d.ts.map +1 -1
  119. package/dist/structuredOutput.js.map +1 -1
  120. package/dist/task-contract-builder.d.ts +35 -0
  121. package/dist/task-contract-builder.d.ts.map +1 -0
  122. package/dist/task-contract-builder.js +114 -0
  123. package/dist/task-contract-builder.js.map +1 -0
  124. package/dist/transientClassify.js.map +1 -1
  125. package/package.json +17 -17
@@ -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"}
@@ -0,0 +1,412 @@
1
+ import { join } from "node:path";
2
+ import { deriveApplyEligibility } from "@claudexor/delivery";
3
+ import { CouncilProjection, DecisionRecord, RunTelemetry, SCHEMA_VERSION, TaskContract, WorkProduct, needsDecision, requiredActionsFor, validateRunFactsInvariants, } from "@claudexor/schema";
4
+ import { nowIso, readTextSafe, redactSecrets, sha256 } from "@claudexor/util";
5
+ import { readReviewArtifacts } from "./runFactsReview.js";
6
+ import { canonicalDeliverable } from "./runFactsDeliverable.js";
7
+ import { terminalPresentation } from "./runFactsPresentation.js";
8
+ function parseArtifact(store, path, schema) {
9
+ // Three-state read (fail loudly): a missing canonical artifact is a
10
+ // legitimate absence, but a present-yet-invalid one is corrupted terminal
11
+ // evidence. Returning null for it would silently rewrite contract truth
12
+ // (e.g. a corrupted task.yaml projecting as "gates not configured" in the
13
+ // immutable receipt), so it throws instead and lands in the fail-closed
14
+ // terminal-facts path.
15
+ const raw = store.readYaml(path);
16
+ if (raw === null) {
17
+ if (readTextSafe(path) === null)
18
+ return null;
19
+ throw new Error(`canonical run artifact is not readable YAML: ${path}`);
20
+ }
21
+ const parsed = schema.safeParse(raw);
22
+ if (!parsed.success) {
23
+ const issues = parsed.error.issues
24
+ .slice(0, 3)
25
+ .map((issue) => `${issue.path.join(".") || "<root>"}: ${issue.message}`)
26
+ .join("; ");
27
+ throw new Error(`canonical run artifact is invalid: ${path} (${issues})`);
28
+ }
29
+ return parsed.data;
30
+ }
31
+ function participantRole(args) {
32
+ if (args.mode === "plan") {
33
+ if (args.mergeAttemptId && args.attemptId === args.mergeAttemptId)
34
+ return "merge";
35
+ return "planner";
36
+ }
37
+ if (args.mode === "ask" && args.hasDeepScanProjection) {
38
+ return args.attemptId === args.reducerAttemptId ? "reducer" : "scout";
39
+ }
40
+ return "candidate";
41
+ }
42
+ function councilRosterEvidence(ctx, council) {
43
+ const events = ctx.log.readAll().events;
44
+ let startedMembers = [];
45
+ const failedByHarness = new Map();
46
+ const draftedHarnessIds = new Set();
47
+ const harnessByAttempt = new Map();
48
+ let mergedEventSeen = false;
49
+ for (const event of events) {
50
+ const payload = event.payload;
51
+ if (event.type === "council.started") {
52
+ const members = payload["members"];
53
+ if (Array.isArray(members)) {
54
+ startedMembers = members.filter((member) => typeof member === "string" && member.length > 0);
55
+ }
56
+ }
57
+ else if (event.type === "council.member.failed") {
58
+ const attemptId = payload["attempt_id"];
59
+ const harnessId = payload["harness_id"];
60
+ if (typeof attemptId === "string" && typeof harnessId === "string") {
61
+ failedByHarness.set(harnessId, attemptId);
62
+ harnessByAttempt.set(attemptId, harnessId);
63
+ }
64
+ }
65
+ else if (event.type === "council.draft") {
66
+ const harnessId = payload["harness_id"];
67
+ if (typeof harnessId === "string")
68
+ draftedHarnessIds.add(harnessId);
69
+ }
70
+ else if (event.type === "harness.started" || event.type === "budget.lease.created") {
71
+ const attemptId = payload["attempt_id"];
72
+ const harnessId = payload["harness_id"];
73
+ if (typeof attemptId === "string" && typeof harnessId === "string") {
74
+ harnessByAttempt.set(attemptId, harnessId);
75
+ }
76
+ }
77
+ else if (event.type === "council.merged") {
78
+ mergedEventSeen = true;
79
+ }
80
+ }
81
+ const memberHarnessIds = startedMembers.length > 0
82
+ ? startedMembers
83
+ : (council?.members.map((member) => member.harnessId) ?? []);
84
+ if (memberHarnessIds.length === 0)
85
+ return null;
86
+ const membershipByHarness = new Map(council?.members.map((member) => [member.harnessId, member]) ?? []);
87
+ const members = memberHarnessIds.map((harnessId, index) => {
88
+ const membership = membershipByHarness.get(harnessId);
89
+ return {
90
+ attemptId: failedByHarness.get(harnessId) ?? `p${String(index + 1).padStart(2, "0")}`,
91
+ harnessId,
92
+ failed: membership?.status === "failed" || failedByHarness.has(harnessId),
93
+ drafted: draftedHarnessIds.has(harnessId) ||
94
+ membership?.status === "drafted" ||
95
+ membership?.status === "merged",
96
+ };
97
+ });
98
+ const mergeAttemptId = council || mergedEventSeen ? `p${String(memberHarnessIds.length + 1).padStart(2, "0")}` : null;
99
+ const primaryHarnessId = council?.members.find((member) => member.role === "primary")?.harnessId ?? null;
100
+ return {
101
+ members,
102
+ mergeAttemptId,
103
+ mergeHarnessId: (mergeAttemptId ? harnessByAttempt.get(mergeAttemptId) : null) ??
104
+ council?.mergedBy ??
105
+ primaryHarnessId,
106
+ mergeFailed: council !== null && council.mergedBy === null,
107
+ };
108
+ }
109
+ function participantsFor(args) {
110
+ const { ctx, mode, telemetry, council } = args;
111
+ const reducerAttemptId = telemetry?.deep_scan_synthesis?.reducer_attempt_id ?? null;
112
+ const hasDeepScanProjection = telemetry?.deep_scan_synthesis != null;
113
+ const councilEvidence = mode === "plan" ? councilRosterEvidence(ctx, council) : null;
114
+ // Stable council ids keep denied pre-spawn lanes role-labelled.
115
+ const mergeAttemptId = councilEvidence?.mergeAttemptId ?? null;
116
+ const attempts = telemetry
117
+ ? telemetry.attempts.map((attempt) => ({
118
+ attempt_id: attempt.attempt_id,
119
+ harness_id: attempt.harness_id,
120
+ role: participantRole({
121
+ mode,
122
+ attemptId: attempt.attempt_id,
123
+ mergeAttemptId,
124
+ reducerAttemptId,
125
+ hasDeepScanProjection,
126
+ }),
127
+ deliverable_present: attempt.outcome.deliverable_present,
128
+ status: attempt.outcome.status,
129
+ }))
130
+ : (() => {
131
+ const started = new Map();
132
+ for (const event of ctx.log.readAll().events) {
133
+ if (event.type !== "harness.started")
134
+ continue;
135
+ const attemptId = event.payload["attempt_id"];
136
+ const harnessId = event.payload["harness_id"];
137
+ if (typeof attemptId === "string" && typeof harnessId === "string") {
138
+ started.set(attemptId, harnessId);
139
+ }
140
+ }
141
+ return [...started].map(([attemptId, harnessId]) => ({
142
+ attempt_id: attemptId,
143
+ harness_id: harnessId,
144
+ role: participantRole({
145
+ mode,
146
+ attemptId,
147
+ mergeAttemptId,
148
+ reducerAttemptId,
149
+ hasDeepScanProjection,
150
+ }),
151
+ deliverable_present: false,
152
+ status: null,
153
+ }));
154
+ })();
155
+ if (councilEvidence) {
156
+ const presentAttemptIds = new Set(attempts.flatMap((attempt) => (attempt.attempt_id ? [attempt.attempt_id] : [])));
157
+ for (const member of councilEvidence.members) {
158
+ if (presentAttemptIds.has(member.attemptId))
159
+ continue;
160
+ attempts.push({
161
+ attempt_id: member.attemptId,
162
+ harness_id: member.harnessId,
163
+ role: "planner",
164
+ deliverable_present: member.drafted,
165
+ status: member.failed ? "failed" : member.drafted ? "success" : null,
166
+ });
167
+ presentAttemptIds.add(member.attemptId);
168
+ }
169
+ if (councilEvidence.mergeAttemptId &&
170
+ councilEvidence.mergeHarnessId &&
171
+ !presentAttemptIds.has(councilEvidence.mergeAttemptId)) {
172
+ attempts.push({
173
+ attempt_id: councilEvidence.mergeAttemptId,
174
+ harness_id: councilEvidence.mergeHarnessId,
175
+ role: "merge",
176
+ deliverable_present: !councilEvidence.mergeFailed,
177
+ status: councilEvidence.mergeFailed ? "failed" : "success",
178
+ });
179
+ }
180
+ const councilOrder = new Map([
181
+ ...councilEvidence.members.map((member) => member.attemptId),
182
+ ...(councilEvidence.mergeAttemptId ? [councilEvidence.mergeAttemptId] : []),
183
+ ].map((attemptId, index) => [attemptId, index]));
184
+ attempts.sort((left, right) => (left.attempt_id
185
+ ? (councilOrder.get(left.attempt_id) ?? Number.MAX_SAFE_INTEGER)
186
+ : Number.MAX_SAFE_INTEGER) -
187
+ (right.attempt_id
188
+ ? (councilOrder.get(right.attempt_id) ?? Number.MAX_SAFE_INTEGER)
189
+ : Number.MAX_SAFE_INTEGER));
190
+ }
191
+ for (const harnessId of args.reviewerHarnessIds) {
192
+ attempts.push({
193
+ attempt_id: null,
194
+ harness_id: harnessId,
195
+ role: "reviewer",
196
+ deliverable_present: false,
197
+ status: null,
198
+ });
199
+ }
200
+ return attempts;
201
+ }
202
+ function gateReceipts(ctx) {
203
+ const receipts = [];
204
+ for (const event of ctx.log.readAll().events) {
205
+ if (event.type !== "gate.completed")
206
+ continue;
207
+ const payload = event.payload;
208
+ const attemptId = payload["attempt_id"];
209
+ const rawGates = payload["gates"];
210
+ if (typeof attemptId !== "string" || !Array.isArray(rawGates))
211
+ continue;
212
+ const gates = [];
213
+ for (const raw of rawGates) {
214
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
215
+ continue;
216
+ const record = raw;
217
+ if (typeof record["id"] !== "string" || typeof record["status"] !== "string")
218
+ continue;
219
+ gates.push({ id: record["id"], status: record["status"] });
220
+ }
221
+ receipts.push({ attemptId, gates });
222
+ }
223
+ return receipts;
224
+ }
225
+ function terminalGateReceipt(ctx, telemetry, decision, producerAttemptId) {
226
+ const receipts = gateReceipts(ctx);
227
+ if (decision?.final_verify?.attempted) {
228
+ const emitted = [...receipts]
229
+ .reverse()
230
+ .find((candidate) => candidate.attemptId === "final-verify");
231
+ if (emitted)
232
+ return emitted;
233
+ // An attempted final verify is authoritative even with no emitted gates.
234
+ return {
235
+ attemptId: "final-verify",
236
+ gates: decision.final_verify.gates.map((gate) => ({
237
+ id: gate.id,
238
+ status: gate.status,
239
+ })),
240
+ };
241
+ }
242
+ const authoritativeAttemptId = decision?.winner ?? producerAttemptId ?? telemetry?.final_attempt_id ?? null;
243
+ if (authoritativeAttemptId) {
244
+ // Never promote a losing candidate's gates merely because the winner's
245
+ // receipt is missing. Missing authority fails closed in gateProjection.
246
+ return ([...receipts].reverse().find((candidate) => candidate.attemptId === authoritativeAttemptId) ??
247
+ null);
248
+ }
249
+ return receipts.at(-1) ?? null;
250
+ }
251
+ function gateProjection(ctx, contract, telemetry, decision, producerAttemptId, terminalOutcome) {
252
+ const commands = contract?.tests.commands ?? [];
253
+ if (commands.length === 0) {
254
+ return {
255
+ gates: {
256
+ configured: false,
257
+ required: 0,
258
+ total: 0,
259
+ executed: false,
260
+ state: "not_configured",
261
+ receipt_attempt_id: null,
262
+ },
263
+ // FinalVerifier and the protected live apply are deterministic checks
264
+ // that run even when the contract configures no gates. A fail-closed
265
+ // terminal CHECKS axis wins over the unconfigured default — otherwise a
266
+ // refused delivery would normalize to run.completed and become
267
+ // apply-eligible. gates.* stays honestly not_configured: it describes
268
+ // configured contract gates only.
269
+ checks: terminalOutcome.checks === "failed" ? "failed" : "not_configured",
270
+ };
271
+ }
272
+ const receipt = terminalGateReceipt(ctx, telemetry, decision, producerAttemptId);
273
+ const configuredIds = new Set(commands.map((command) => command.id));
274
+ const observed = new Map((receipt?.gates ?? [])
275
+ .filter((gate) => configuredIds.has(gate.id))
276
+ .map((gate) => [gate.id, gate.status]));
277
+ const allConfiguredObserved = commands.every((command) => observed.has(command.id));
278
+ const allRequiredPassed = commands
279
+ .filter((command) => command.required)
280
+ .every((command) => observed.get(command.id) === "passed");
281
+ if (!receipt || observed.size === 0) {
282
+ return {
283
+ gates: {
284
+ configured: true,
285
+ required: commands.filter((command) => command.required).length,
286
+ total: commands.length,
287
+ executed: false,
288
+ state: "skipped",
289
+ receipt_attempt_id: null,
290
+ },
291
+ // Missing required gate receipts fail closed as skipped.
292
+ checks: "failed",
293
+ };
294
+ }
295
+ const observedState = !allConfiguredObserved
296
+ ? "skipped"
297
+ : allRequiredPassed
298
+ ? "passed"
299
+ : "failed";
300
+ // A protected live delivery can be refused after a fresh verify passed
301
+ // (for example, when the target changes between verification and mutation).
302
+ // The terminal CHECKS axis is then fail-closed even though the now-stale
303
+ // receipt was green. Preserve that terminal truth and mark the receipt
304
+ // non-authoritative instead of greenwashing the blocked outcome.
305
+ const state = observedState === "passed" && terminalOutcome.checks === "failed" ? "skipped" : observedState;
306
+ return {
307
+ gates: {
308
+ configured: true,
309
+ required: commands.filter((command) => command.required).length,
310
+ total: commands.length,
311
+ executed: true,
312
+ state,
313
+ receipt_attempt_id: receipt.attemptId,
314
+ },
315
+ checks: state === "passed" ? "passed" : "failed",
316
+ };
317
+ }
318
+ function applyStateOf(workProduct) {
319
+ const value = workProduct?.meta["apply_state"];
320
+ return value === "not_applied" ||
321
+ value === "applied" ||
322
+ value === "applied_review_blocked" ||
323
+ value === "reverted"
324
+ ? value
325
+ : null;
326
+ }
327
+ /** Build and validate the terminal projection from canonical artifacts. */
328
+ export function buildRunFacts(ctx, terminalOutcome) {
329
+ const contract = parseArtifact(ctx.store, join(ctx.paths.contextDir, "task.yaml"), TaskContract);
330
+ const telemetry = parseArtifact(ctx.store, join(ctx.paths.finalDir, "telemetry.yaml"), RunTelemetry);
331
+ const workProduct = parseArtifact(ctx.store, join(ctx.paths.finalDir, "work_product.yaml"), WorkProduct);
332
+ const decision = parseArtifact(ctx.store, join(ctx.paths.arbitrationDir, "decision.yaml"), DecisionRecord);
333
+ const council = parseArtifact(ctx.store, join(ctx.paths.root, "council", "membership.yaml"), CouncilProjection);
334
+ const operatorDecision = ctx.store.readYaml(join(ctx.paths.arbitrationDir, "operator_decision.yaml"));
335
+ const patch = readTextSafe(join(ctx.paths.finalDir, "patch.diff")) ?? "";
336
+ const operatorDecisionMatchesPatch = !!operatorDecision &&
337
+ patch.trim().length > 0 &&
338
+ (operatorDecision["action"] === "accept_risk" ||
339
+ operatorDecision["action"] === "override_needs_human") &&
340
+ operatorDecision["patch_sha256"] === sha256(patch);
341
+ const deliverable = canonicalDeliverable({
342
+ ctx,
343
+ mode: ctx.mode,
344
+ workProduct,
345
+ telemetry,
346
+ decision,
347
+ });
348
+ const reviews = readReviewArtifacts(ctx, decision?.winner ?? telemetry?.final_attempt_id ?? null);
349
+ const gate = gateProjection(ctx, contract, telemetry, decision, deliverable.producer_attempt_id, terminalOutcome);
350
+ const outcome = {
351
+ ...terminalOutcome,
352
+ checks: gate.checks,
353
+ ...(gate.checks === "failed" && terminalOutcome.lifecycle === "succeeded"
354
+ ? { reason: "checks_failed" }
355
+ : {}),
356
+ };
357
+ const operatorDecisionPresent = operatorDecisionMatchesPatch && needsDecision(outcome, false);
358
+ const participants = participantsFor({
359
+ ctx,
360
+ mode: ctx.mode,
361
+ telemetry,
362
+ council,
363
+ reviewerHarnessIds: reviews.reviewerHarnessIds,
364
+ });
365
+ const decisionWithCanonicalFacts = decision ? { ...decision, facts: outcome } : null;
366
+ const applyEligibility = patch.trim() && contract && decisionWithCanonicalFacts
367
+ ? deriveApplyEligibility({
368
+ state: outcome.lifecycle,
369
+ decision: decisionWithCanonicalFacts,
370
+ workProduct,
371
+ patch,
372
+ originalRepoRoot: contract.repo.root,
373
+ targetRepoRoot: contract.repo.root,
374
+ operatorDecision: operatorDecisionPresent && typeof operatorDecision?.["patch_sha256"] === "string"
375
+ ? {
376
+ action: String(operatorDecision["action"]),
377
+ patch_sha256: operatorDecision["patch_sha256"],
378
+ }
379
+ : null,
380
+ applyState: applyStateOf(workProduct),
381
+ workState: outcome.work_state ?? null,
382
+ })
383
+ : null;
384
+ const rawFacts = {
385
+ schema_version: SCHEMA_VERSION,
386
+ run_id: ctx.runId,
387
+ task_id: ctx.taskId,
388
+ mode: ctx.mode,
389
+ outcome,
390
+ deliverable,
391
+ presentation: terminalPresentation(ctx),
392
+ participants: {
393
+ planners: participants.filter((participant) => participant.role === "planner").length,
394
+ attempts: participants,
395
+ },
396
+ gates: gate.gates,
397
+ review: {
398
+ state: outcome.review,
399
+ blocker_ids: reviews.blockerIds,
400
+ blockers: reviews.blockerIds.length,
401
+ },
402
+ apply: {
403
+ eligibility: applyEligibility,
404
+ operator_decision_present: operatorDecisionPresent,
405
+ },
406
+ required_actions: requiredActionsFor(outcome, operatorDecisionPresent),
407
+ generated_at: nowIso(),
408
+ };
409
+ // Redact once so every surface can preserve exact object identity.
410
+ return validateRunFactsInvariants(JSON.parse(redactSecrets(JSON.stringify(rawFacts))));
411
+ }
412
+ //# sourceMappingURL=runFactsBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runFactsBuilder.js","sourceRoot":"","sources":["../src/runFactsBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EACjB,cAAc,EAEd,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,0BAA0B,GAG3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAcjE,SAAS,aAAa,CACpB,KAAoB,EACpB,IAAY,EACZ,MAMC;IAED,oEAAoE;IACpE,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,wEAAwE;IACxE,uBAAuB;IACvB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,IAMxB;IACC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc;YAAE,OAAO,OAAO,CAAC;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACxE,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAwB,EACxB,OAAiC;IAEjC,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;IACxC,IAAI,cAAc,GAAa,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,cAAc,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAoB,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACnE,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC1C,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACrF,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACnE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC3C,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GACpB,cAAc,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC,IAAI,EAAE,CAC5E,CAAC;IACF,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO;YACL,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACrF,SAAS;YACT,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;YACzE,OAAO,EACL,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;gBAChC,UAAU,EAAE,MAAM,KAAK,SAAS;gBAChC,UAAU,EAAE,MAAM,KAAK,QAAQ;SAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,cAAc,GAClB,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,MAAM,gBAAgB,GACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;IAElF,OAAO;QACL,OAAO;QACP,cAAc;QACd,cAAc,EACZ,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,OAAO,EAAE,QAAQ;YACjB,gBAAgB;QAClB,WAAW,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAMxB;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,gBAAgB,GAAG,SAAS,EAAE,mBAAmB,EAAE,kBAAkB,IAAI,IAAI,CAAC;IACpF,MAAM,qBAAqB,GAAG,SAAS,EAAE,mBAAmB,IAAI,IAAI,CAAC;IACrE,MAAM,eAAe,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,gEAAgE;IAChE,MAAM,cAAc,GAAG,eAAe,EAAE,cAAc,IAAI,IAAI,CAAC;IAC/D,MAAM,QAAQ,GAAqB,SAAS;QAC1C,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,eAAe,CAAC;gBACpB,IAAI;gBACJ,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,cAAc;gBACd,gBAAgB;gBAChB,qBAAqB;aACtB,CAAC;YACF,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB;YACxD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;SAC/B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;gBAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;oBAAE,SAAS;gBAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnD,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,SAAS;gBACrB,IAAI,EAAE,eAAe,CAAC;oBACpB,IAAI;oBACJ,SAAS;oBACT,cAAc;oBACd,gBAAgB;oBAChB,qBAAqB;iBACtB,CAAC;gBACF,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE,IAAI;aACb,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC;IACT,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAChF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,SAAS;YACtD,QAAQ,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,IAAI,EAAE,SAAS;gBACf,mBAAmB,EAAE,MAAM,CAAC,OAAO;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;aACrE,CAAC,CAAC;YACH,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;QACD,IACE,eAAe,CAAC,cAAc;YAC9B,eAAe,CAAC,cAAc;YAC9B,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,EACtD,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,UAAU,EAAE,eAAe,CAAC,cAAc;gBAC1C,UAAU,EAAE,eAAe,CAAC,cAAc;gBAC1C,IAAI,EAAE,OAAO;gBACb,mBAAmB,EAAE,CAAC,eAAe,CAAC,WAAW;gBACjD,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;aAC3D,CAAC,CAAC;QACL,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B;YACE,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5D,GAAG,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC,CACzD,CAAC;QACF,QAAQ,CAAC,IAAI,CACX,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,CAAC,IAAI,CAAC,UAAU;YACd,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAChE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC5B,CAAC,KAAK,CAAC,UAAU;gBACf,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC;gBACjE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAC/B,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC;YACZ,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,UAAU;YAChB,mBAAmB,EAAE,KAAK;YAC1B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAOD,SAAS,YAAY,CAAC,GAAwB;IAC5C,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,SAAS;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACxE,MAAM,KAAK,GAAyB,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpE,MAAM,MAAM,GAAG,GAA8B,CAAC;YAC9C,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ;gBAAE,SAAS;YACvF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAwB,EACxB,SAA8B,EAC9B,QAA+B,EAC/B,iBAAgC;IAEhC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC;aAC1B,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;QAC/D,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,yEAAyE;QACzE,OAAO;YACL,SAAS,EAAE,cAAc;YACzB,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChD,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IACD,MAAM,sBAAsB,GAC1B,QAAQ,EAAE,MAAM,IAAI,iBAAiB,IAAI,SAAS,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAC/E,IAAI,sBAAsB,EAAE,CAAC;QAC3B,uEAAuE;QACvE,wEAAwE;QACxE,OAAO,CACL,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,sBAAsB,CAAC;YAC3F,IAAI,CACL,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CACrB,GAAwB,EACxB,QAA6B,EAC7B,SAA8B,EAC9B,QAA+B,EAC/B,iBAAgC,EAChC,eAAgC;IAKhC,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE;gBACL,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,gBAAgB;gBACvB,kBAAkB,EAAE,IAAI;aACzB;YACD,sEAAsE;YACtE,qEAAqE;YACrE,wEAAwE;YACxE,+DAA+D;YAC/D,sEAAsE;YACtE,kCAAkC;YAClC,MAAM,EAAE,eAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB;SAC1E,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;SACnB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAU,CAAC,CAClD,CAAC;IACF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,iBAAiB,GAAG,QAAQ;SAC/B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;SACrC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE;gBACL,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAC/D,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,SAAS;gBAChB,kBAAkB,EAAE,IAAI;aACzB;YACD,yDAAyD;YACzD,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,qBAAqB;QAC1C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,iBAAiB;YACjB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC;IACf,uEAAuE;IACvE,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,KAAK,GACT,aAAa,KAAK,QAAQ,IAAI,eAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;IAChG,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;YAC/D,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;YACd,KAAK;YACL,kBAAkB,EAAE,OAAO,CAAC,SAAS;SACtC;QACD,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,WAA+B;IACnD,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,KAAK,KAAK,aAAa;QAC5B,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,wBAAwB;QAClC,KAAK,KAAK,UAAU;QACpB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAC3B,GAAwB,EACxB,eAAgC;IAEhC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,aAAa,CAC7B,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAC1C,YAAY,CACb,CAAC;IACF,MAAM,WAAW,GAAG,aAAa,CAC/B,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAC7C,WAAW,CACZ,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAC5B,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,EAC/C,cAAc,CACf,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAC3B,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAClD,iBAAiB,CAClB,CAAC;IACF,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,wBAAwB,CAAC,CACzD,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,4BAA4B,GAChC,CAAC,CAAC,gBAAgB;QAClB,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,aAAa;YAC3C,gBAAgB,CAAC,QAAQ,CAAC,KAAK,sBAAsB,CAAC;QACxD,gBAAgB,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,oBAAoB,CAAC;QACvC,GAAG;QACH,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW;QACX,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,SAAS,EAAE,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,cAAc,CACzB,GAAG,EACH,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,CAAC,mBAAmB,EAC/B,eAAe,CAChB,CAAC;IACF,MAAM,OAAO,GAAoB;QAC/B,GAAG,eAAe;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,eAAe,CAAC,SAAS,KAAK,WAAW;YACvE,CAAC,CAAC,EAAE,MAAM,EAAE,eAAwB,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,MAAM,uBAAuB,GAAG,4BAA4B,IAAI,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,eAAe,CAAC;QACnC,GAAG;QACH,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS;QACT,OAAO;QACP,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC/C,CAAC,CAAC;IACH,MAAM,0BAA0B,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,MAAM,gBAAgB,GACpB,KAAK,CAAC,IAAI,EAAE,IAAI,QAAQ,IAAI,0BAA0B;QACpD,CAAC,CAAC,sBAAsB,CAAC;YACrB,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,QAAQ,EAAE,0BAA0B;YACpC,WAAW;YACX,KAAK;YACL,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;YACpC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;YAClC,gBAAgB,EACd,uBAAuB,IAAI,OAAO,gBAAgB,EAAE,CAAC,cAAc,CAAC,KAAK,QAAQ;gBAC/E,CAAC,CAAC;oBACE,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBAC1C,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC;iBAC/C;gBACH,CAAC,CAAC,IAAI;YACV,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC;YACrC,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;SACtC,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,cAAc;QAC9B,MAAM,EAAE,GAAG,CAAC,KAAK;QACjB,OAAO,EAAE,GAAG,CAAC,MAAM;QACnB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO;QACP,WAAW;QACX,YAAY,EAAE,oBAAoB,CAAC,GAAG,CAAC;QACvC,YAAY,EAAE;YACZ,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,MAAM;YACrF,QAAQ,EAAE,YAAY;SACvB;QACD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE;YACN,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;SACpC;QACD,KAAK,EAAE;YACL,WAAW,EAAE,gBAAgB;YAC7B,yBAAyB,EAAE,uBAAuB;SACnD;QACD,gBAAgB,EAAE,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,CAAC;QACtE,YAAY,EAAE,MAAM,EAAE;KACvB,CAAC;IACF,mEAAmE;IACnE,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { DecisionRecord, RunFacts, RunTelemetry, WorkProduct } from "@claudexor/schema";
2
+ import type { AnnouncedRunContext } from "./runTerminals.js";
3
+ import type { OrchestratorResult } from "./orchestrator.js";
4
+ /** The canonical primary deliverable of a terminal run: mode/result-kind
5
+ * ordered candidate paths probed with lstat and a real-content requirement. */
6
+ export declare function canonicalDeliverable(args: {
7
+ ctx: AnnouncedRunContext;
8
+ mode: OrchestratorResult["mode"];
9
+ workProduct: WorkProduct | null;
10
+ telemetry: RunTelemetry | null;
11
+ decision: DecisionRecord | null;
12
+ }): RunFacts["deliverable"];
13
+ //# sourceMappingURL=runFactsDeliverable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runFactsDeliverable.d.ts","sourceRoot":"","sources":["../src/runFactsDeliverable.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAU5D;+EAC+E;AAC/E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,mBAAmB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,GAAG,QAAQ,CAAC,aAAa,CAAC,CA0F1B"}