acpus 0.5.2 → 0.6.0-alpha.1

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 (140) hide show
  1. package/README.md +19 -5
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/agent-progress-format.d.ts +7 -0
  4. package/dist/agent-progress-format.d.ts.map +1 -0
  5. package/dist/agent-progress-format.js +102 -0
  6. package/dist/agent-progress-format.js.map +1 -0
  7. package/dist/authoring/core.d.ts +2 -0
  8. package/dist/authoring/core.d.ts.map +1 -0
  9. package/dist/authoring/core.js +2 -0
  10. package/dist/authoring/core.js.map +1 -0
  11. package/dist/authoring/expression.d.ts +2 -0
  12. package/dist/authoring/expression.d.ts.map +1 -0
  13. package/dist/authoring/expression.js +2 -0
  14. package/dist/authoring/expression.js.map +1 -0
  15. package/dist/authoring/tasks/git.d.ts +2 -0
  16. package/dist/authoring/tasks/git.d.ts.map +1 -0
  17. package/dist/authoring/tasks/git.js +2 -0
  18. package/dist/authoring/tasks/git.js.map +1 -0
  19. package/dist/catalog.d.ts +18 -24
  20. package/dist/catalog.d.ts.map +1 -1
  21. package/dist/catalog.js +164 -174
  22. package/dist/catalog.js.map +1 -1
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +14 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/commands/daemon.d.ts +14 -0
  28. package/dist/commands/daemon.d.ts.map +1 -0
  29. package/dist/commands/daemon.js +89 -0
  30. package/dist/commands/daemon.js.map +1 -0
  31. package/dist/commands/doctor.d.ts +11 -0
  32. package/dist/commands/doctor.d.ts.map +1 -0
  33. package/dist/commands/doctor.js +26 -0
  34. package/dist/commands/doctor.js.map +1 -0
  35. package/dist/commands/hooks.d.ts +11 -0
  36. package/dist/commands/hooks.d.ts.map +1 -0
  37. package/dist/commands/hooks.js +64 -0
  38. package/dist/commands/hooks.js.map +1 -0
  39. package/dist/commands/json.d.ts +7 -0
  40. package/dist/commands/json.d.ts.map +1 -0
  41. package/dist/commands/json.js +43 -0
  42. package/dist/commands/json.js.map +1 -0
  43. package/dist/commands/runs-picker.d.ts +21 -0
  44. package/dist/commands/runs-picker.d.ts.map +1 -0
  45. package/dist/commands/runs-picker.js +76 -0
  46. package/dist/commands/runs-picker.js.map +1 -0
  47. package/dist/commands/runs.d.ts +12 -0
  48. package/dist/commands/runs.d.ts.map +1 -0
  49. package/dist/commands/runs.js +285 -0
  50. package/dist/commands/runs.js.map +1 -0
  51. package/dist/commands/skill.d.ts +11 -0
  52. package/dist/commands/skill.d.ts.map +1 -0
  53. package/dist/commands/skill.js +221 -0
  54. package/dist/commands/skill.js.map +1 -0
  55. package/dist/commands/web.d.ts +24 -0
  56. package/dist/commands/web.d.ts.map +1 -0
  57. package/dist/commands/web.js +57 -0
  58. package/dist/commands/web.js.map +1 -0
  59. package/dist/commands/workflow.d.ts +11 -0
  60. package/dist/commands/workflow.d.ts.map +1 -0
  61. package/dist/commands/workflow.js +324 -0
  62. package/dist/commands/workflow.js.map +1 -0
  63. package/dist/daemon-entry.d.ts +3 -0
  64. package/dist/daemon-entry.d.ts.map +1 -0
  65. package/dist/daemon-entry.js +26 -0
  66. package/dist/daemon-entry.js.map +1 -0
  67. package/dist/errors.d.ts +19 -0
  68. package/dist/errors.d.ts.map +1 -0
  69. package/dist/errors.js +28 -0
  70. package/dist/errors.js.map +1 -0
  71. package/dist/output.d.ts +91 -11
  72. package/dist/output.d.ts.map +1 -1
  73. package/dist/output.js +203 -44
  74. package/dist/output.js.map +1 -1
  75. package/dist/program.d.ts +9 -0
  76. package/dist/program.d.ts.map +1 -0
  77. package/dist/program.js +85 -0
  78. package/dist/program.js.map +1 -0
  79. package/dist/run-status-surface.d.ts +12 -0
  80. package/dist/run-status-surface.d.ts.map +1 -0
  81. package/dist/run-status-surface.js +324 -0
  82. package/dist/run-status-surface.js.map +1 -0
  83. package/dist/workflow-preparation.d.ts +3 -0
  84. package/dist/workflow-preparation.d.ts.map +1 -0
  85. package/dist/workflow-preparation.js +34 -0
  86. package/dist/workflow-preparation.js.map +1 -0
  87. package/package.json +35 -35
  88. package/skills/acpus/SKILL.md +120 -0
  89. package/skills/acpus/eval/evaluations.md +47 -0
  90. package/skills/acpus/examples/hooks.example.json +17 -0
  91. package/skills/acpus/examples/workflows/adversarial-review/workflow.ts +248 -0
  92. package/skills/acpus/examples/workflows/change-approval/workflow.ts +121 -0
  93. package/skills/acpus/examples/workflows/issue-triage/tasks.ts +14 -0
  94. package/skills/acpus/examples/workflows/issue-triage/workflow.ts +146 -0
  95. package/skills/acpus/examples/workflows/multi-aspect-brainstorm/workflow.ts +304 -0
  96. package/skills/acpus/examples/workflows/worktree-tournament/workflow.ts +194 -0
  97. package/skills/acpus/references/authoring.md +205 -0
  98. package/skills/acpus/references/cli-operations.md +94 -0
  99. package/skills/acpus/references/hooks-json.md +81 -0
  100. package/skills/acpus/references/runtime-recovery.md +97 -0
  101. package/dist/agent-activity.d.ts +0 -3
  102. package/dist/agent-activity.d.ts.map +0 -1
  103. package/dist/agent-activity.js +0 -50
  104. package/dist/agent-activity.js.map +0 -1
  105. package/dist/agent-overrides.d.ts +0 -3
  106. package/dist/agent-overrides.d.ts.map +0 -1
  107. package/dist/agent-overrides.js +0 -39
  108. package/dist/agent-overrides.js.map +0 -1
  109. package/dist/follow.d.ts +0 -23
  110. package/dist/follow.d.ts.map +0 -1
  111. package/dist/follow.js +0 -164
  112. package/dist/follow.js.map +0 -1
  113. package/dist/hooks.d.ts +0 -4
  114. package/dist/hooks.d.ts.map +0 -1
  115. package/dist/hooks.js +0 -159
  116. package/dist/hooks.js.map +0 -1
  117. package/dist/index.d.ts +0 -3
  118. package/dist/index.d.ts.map +0 -1
  119. package/dist/index.js +0 -592
  120. package/dist/index.js.map +0 -1
  121. package/dist/io.d.ts +0 -3
  122. package/dist/io.d.ts.map +0 -1
  123. package/dist/io.js +0 -27
  124. package/dist/io.js.map +0 -1
  125. package/dist/observations.d.ts +0 -39
  126. package/dist/observations.d.ts.map +0 -1
  127. package/dist/observations.js +0 -83
  128. package/dist/observations.js.map +0 -1
  129. package/dist/runs-show.d.ts +0 -40
  130. package/dist/runs-show.d.ts.map +0 -1
  131. package/dist/runs-show.js +0 -296
  132. package/dist/runs-show.js.map +0 -1
  133. package/dist/supervisor-client.d.ts +0 -9
  134. package/dist/supervisor-client.d.ts.map +0 -1
  135. package/dist/supervisor-client.js +0 -8
  136. package/dist/supervisor-client.js.map +0 -1
  137. package/dist/supervisor.d.ts +0 -18
  138. package/dist/supervisor.d.ts.map +0 -1
  139. package/dist/supervisor.js +0 -24
  140. package/dist/supervisor.js.map +0 -1
package/dist/index.js DELETED
@@ -1,592 +0,0 @@
1
- #!/usr/bin/env node
2
- import { applyAgentOverrides, compileWorkflow, lintWorkflow, parseDurationMs, parseWorkflowSpecForOverrides, serializeWorkflowSpecForOverrides, workflowSourceResolver } from "@acpus/core";
3
- import { Command, InvalidArgumentError } from "commander";
4
- import { readFileSync } from "node:fs";
5
- import { dirname, join, relative } from "node:path";
6
- import { fileURLToPath } from "node:url";
7
- import { findWorkflowCatalogEntry, listWorkflowCatalog, looksLikeWorkflowPath, resolveWorkflowPath, resolveWorkflowTarget } from "./catalog.js";
8
- import { parseInput, readTextFile } from "./io.js";
9
- import { printCompile, printError, printLint } from "./output.js";
10
- import { ensureSupervisor, EXIT_SUPERVISOR_ERROR, isSupervisorConnectionError } from "./supervisor.js";
11
- import { followRun } from "./follow.js";
12
- import { formatRunShow } from "./runs-show.js";
13
- import { buildHooksCommand } from "./hooks.js";
14
- import { ForkRejectedError } from "@acpus/runtime";
15
- import { parseAgentOverridesInput } from "./agent-overrides.js";
16
- const EXIT_DSL_STATIC_ERROR = 10;
17
- const EXIT_RUNTIME_ERROR = 20;
18
- const EXIT_FORK_REJECTED = 21;
19
- const EXIT_USER_CANCEL = 2;
20
- const EXIT_CLI_ERROR = 1;
21
- const program = new Command();
22
- const cliPackageJson = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "package.json"), "utf8"));
23
- program
24
- .name("acpus")
25
- .description("Local durable ACP workflow runner")
26
- .version(cliPackageJson.version ?? "0.0.0");
27
- const workflows = new Command("workflows")
28
- .alias("wf")
29
- .description("discover, inspect, lint, and run Workflow Specs");
30
- workflows
31
- .command("list")
32
- .option("--json", "write JSON output")
33
- .action((options) => {
34
- try {
35
- const entries = listWorkflowCatalog();
36
- if (options.json) {
37
- console.log(JSON.stringify(entries));
38
- return;
39
- }
40
- printWorkflowList(entries);
41
- }
42
- catch (error) {
43
- printError(errorMessage(error), { json: options.json, quiet: false });
44
- process.exitCode = EXIT_RUNTIME_ERROR;
45
- }
46
- });
47
- workflows
48
- .command("show")
49
- .argument("<refOrName>", "Workflow Catalog ref or unique workflow name")
50
- .option("--json", "write JSON output")
51
- .action((refOrName, options) => {
52
- try {
53
- const entry = findWorkflowCatalogEntry(refOrName);
54
- if (options.json) {
55
- console.log(JSON.stringify(entry));
56
- return;
57
- }
58
- printWorkflowDetails(entry);
59
- }
60
- catch (error) {
61
- printError(errorMessage(error), { json: options.json, quiet: false });
62
- process.exitCode = EXIT_RUNTIME_ERROR;
63
- }
64
- });
65
- workflows
66
- .command("lint")
67
- .argument("<refOrPath>", "Workflow Catalog ref/name or workflow YAML spec path")
68
- .option("--strict", "treat warnings as errors")
69
- .option("--json", "write JSON output")
70
- .option("--quiet", "only write final output")
71
- .action((refOrPath, options) => {
72
- try {
73
- const sourcePath = resolveLintTarget(refOrPath);
74
- const result = lintWorkflow(readTextFile(sourcePath), {
75
- sourcePath,
76
- strict: options.strict,
77
- includeResolver: createWorkspaceIncludeResolver()
78
- });
79
- printLint(result, options);
80
- process.exitCode = result.ok ? 0 : EXIT_DSL_STATIC_ERROR;
81
- }
82
- catch (error) {
83
- printError(errorMessage(error), options);
84
- process.exitCode = EXIT_RUNTIME_ERROR;
85
- }
86
- });
87
- workflows
88
- .command("run")
89
- .argument("<refOrPath>", "Workflow Catalog ref/name or workflow YAML spec path")
90
- .option("--dry-run", "compile to IR and print schedule without execution")
91
- .option("--input <value>", "inline JSON or path to YAML/JSON input object")
92
- .option("--agents <value>", "inline JSON/YAML or path to JSON/YAML Agent Overrides object")
93
- .option("--background", "submit and return immediately (no follow)")
94
- .option("--visualize", "submit and open TUI visualizer")
95
- .option("--skip-hooks", "submit this run without loading or executing hooks")
96
- .option("--json", "write JSONL observations (follow mode) or JSON (background)")
97
- .option("--quiet", "only write final output")
98
- .option("--poll <duration>", "follow-mode poll interval (e.g. 2s, 1m, 500ms; default 10s, min 1s)", (value) => {
99
- const ms = parseDurationMs(value, { strict: false });
100
- if (ms < 1000) {
101
- throw new InvalidArgumentError("--poll must be >= 1s (e.g. 2s, 1m, 500ms)");
102
- }
103
- return ms;
104
- })
105
- .action(async (refOrPath, options) => {
106
- if (rejectConflictingSubmissionOptions(options))
107
- return;
108
- try {
109
- const target = resolveWorkflowTarget(refOrPath);
110
- const parsedInput = parseInput(options.input);
111
- const parsedAgentOverrides = parseAgentOverridesInput(options.agents);
112
- if (options.dryRun) {
113
- const overrideResult = parsedAgentOverrides === undefined
114
- ? undefined
115
- : applyAgentOverrides(parseWorkflowSpec(target.source), parsedAgentOverrides);
116
- const result = compileWorkflow(overrideResult ? serializeWorkflowSpecForOverrides(overrideResult.effectiveSpec) : target.source, {
117
- sourcePath: target.sourcePath,
118
- includeResolver: createWorkspaceIncludeResolver()
119
- });
120
- const output = parsedInput === undefined || !result.ir
121
- ? result
122
- : { ...result, ir: { ...result.ir, runtimeInput: parsedInput } };
123
- printCompile({
124
- ...output,
125
- agentOverrides: overrideResult?.agentOverrides,
126
- submissionWarnings: overrideResult?.warnings
127
- }, options);
128
- printSubmissionWarnings(overrideResult?.warnings ?? [], options);
129
- process.exitCode = result.ok ? 0 : EXIT_DSL_STATIC_ERROR;
130
- return;
131
- }
132
- const client = await ensureSupervisor();
133
- const runState = await client.startRun(target.source, parsedInput, target.sourcePath, target.workflowRef, parsedAgentOverrides, Boolean(options.skipHooks));
134
- if (options.background) {
135
- if (options.json) {
136
- console.log(JSON.stringify(runState));
137
- }
138
- else if (!options.quiet) {
139
- console.log(`Run ${runState.runId} started: ${runState.workflowName}`);
140
- if (runState.workflowRef)
141
- console.log(`Workflow: ${runState.workflowRef}`);
142
- console.log(`Status: ${runState.status}`);
143
- }
144
- process.exitCode = 0;
145
- return;
146
- }
147
- printSubmissionWarnings(runState.submissionWarnings ?? [], options);
148
- if (options.visualize) {
149
- await launchVisualizer(client, runState.runId);
150
- process.exitCode = 0;
151
- return;
152
- }
153
- const terminalStatus = await followRun(client, runState.runId, { json: options.json, intervalMs: options.poll });
154
- process.exitCode = exitCodeForRunStatus(terminalStatus);
155
- }
156
- catch (error) {
157
- printError(errorMessage(error), options);
158
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
159
- }
160
- });
161
- program.addCommand(workflows);
162
- const runs = new Command("runs")
163
- .description("list, inspect, clean, visualize, and control Workflow Runs");
164
- runs
165
- .command("list")
166
- .option("--json", "write JSON output")
167
- .action(async (options) => {
168
- try {
169
- const client = await ensureSupervisor();
170
- const runList = await client.listRuns();
171
- if (options.json) {
172
- console.log(JSON.stringify(runList));
173
- }
174
- else if (runList.length === 0) {
175
- console.log("No runs found.");
176
- }
177
- else {
178
- for (const run of runList) {
179
- const source = run.workflowRef ?? run.workflowSourcePath ?? "-";
180
- const lineageNote = run.lineage ? ` forked from ${run.lineage.sourceRunId}` : "";
181
- console.log(`${run.runId} ${run.workflowName} ${run.status} ${run.updatedAt} ${source}${lineageNote}`);
182
- }
183
- }
184
- }
185
- catch (error) {
186
- printError(errorMessage(error), { json: options.json, quiet: false });
187
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
188
- }
189
- });
190
- runs
191
- .command("show")
192
- .argument("<runId>", "run ID to inspect")
193
- .option("--json", "write JSON output")
194
- .action(async (runId, options) => {
195
- try {
196
- const client = await ensureSupervisor();
197
- const run = await client.getRun(runId);
198
- if (options.json) {
199
- const { nodes, ...rest } = run;
200
- const cleaned = nodes
201
- ? { ...rest, nodes: nodes.map(({ renderedPrompt: _, ...node }) => node) }
202
- : rest;
203
- console.log(JSON.stringify(cleaned));
204
- return;
205
- }
206
- console.log(await formatRunShow(run, client, Date.now(), await loadIrForShow(client, run)));
207
- }
208
- catch (error) {
209
- printError(errorMessage(error), { json: options.json, quiet: false });
210
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
211
- }
212
- });
213
- runs
214
- .command("clean")
215
- .option("--dry-run", "report deletions without removing Run directories")
216
- .option("--json", "write JSON output")
217
- .action(async (options) => {
218
- try {
219
- const client = await ensureSupervisor();
220
- const result = await client.cleanRuns({ dryRun: options.dryRun });
221
- if (options.json) {
222
- console.log(JSON.stringify(result));
223
- }
224
- else {
225
- printCleanResult(result);
226
- }
227
- }
228
- catch (error) {
229
- printError(errorMessage(error), { json: options.json, quiet: false });
230
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
231
- }
232
- });
233
- runs
234
- .command("visualize")
235
- .argument("[runId]", "run ID to observe (omit to pick from a list)")
236
- .option("--serve [listen]", "serve a read-only browser visualizer, optionally on <port> or <host:port>")
237
- .description("open a TUI visualizer to observe and control a running workflow")
238
- .action(async (runId, options) => {
239
- try {
240
- if (options.serve !== undefined) {
241
- const { parseListen, serveTui } = await import("@acpus/tui/serve");
242
- try {
243
- parseListen(options.serve);
244
- }
245
- catch (error) {
246
- printError(errorMessage(error), { json: false, quiet: false });
247
- process.exitCode = EXIT_CLI_ERROR;
248
- return;
249
- }
250
- const client = await ensureSupervisor();
251
- await serveTui({ runId, endpoint: client.endpoint, listen: options.serve });
252
- return;
253
- }
254
- const client = await ensureSupervisor();
255
- await launchVisualizer(client, runId);
256
- }
257
- catch (error) {
258
- printError(errorMessage(error), { json: false, quiet: false });
259
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
260
- }
261
- });
262
- for (const action of ["pause", "resume", "cancel"]) {
263
- runs
264
- .command(action)
265
- .argument("<runId>", "run ID")
266
- .option("--json", "output machine-readable JSON")
267
- .action(async (runId, options) => {
268
- try {
269
- const client = await ensureSupervisor();
270
- const run = action === "pause"
271
- ? await client.pauseRun(runId)
272
- : action === "resume"
273
- ? await client.resumeRun(runId)
274
- : await client.cancelRun(runId);
275
- if (options.json)
276
- console.log(JSON.stringify(run));
277
- else
278
- console.log(`Run ${runId} ${pastTense(action)} (status: ${run.status})`);
279
- }
280
- catch (error) {
281
- printError(errorMessage(error), { json: Boolean(options.json), quiet: false });
282
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
283
- }
284
- });
285
- }
286
- runs
287
- .command("retry")
288
- .argument("<runId>", "run ID")
289
- .option("--node <nodeKey>", "retry a specific Node Key instead of the whole run")
290
- .option("--json", "output machine-readable JSON")
291
- .action(async (runId, options) => {
292
- try {
293
- const client = await ensureSupervisor();
294
- if (options.node) {
295
- const state = await client.retryNode(runId, options.node);
296
- if (options.json)
297
- console.log(JSON.stringify(state));
298
- else
299
- console.log(`Node ${options.node} retried (state: ${state.state})`);
300
- }
301
- else {
302
- const run = await client.retryRun(runId);
303
- if (options.json)
304
- console.log(JSON.stringify(run));
305
- else
306
- console.log(`Run ${runId} retried (status: ${run.status})`);
307
- }
308
- }
309
- catch (error) {
310
- printError(errorMessage(error), { json: Boolean(options.json), quiet: false });
311
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
312
- }
313
- });
314
- runs
315
- .command("signal")
316
- .argument("<runId>", "run ID")
317
- .requiredOption("--node <nodeKey>", "the Signal Node Key to deliver the payload to")
318
- .requiredOption("--payload <value>", "inline JSON or path to a YAML/JSON payload object")
319
- .option("--json", "output machine-readable JSON")
320
- .description("deliver an external decision payload to a Signal Node awaiting a decision")
321
- .action(async (runId, options) => {
322
- let payload;
323
- try {
324
- const parsed = parseInput(options.payload, "--payload");
325
- if (parsed === undefined) {
326
- throw new Error("--payload is required");
327
- }
328
- payload = parsed;
329
- }
330
- catch (error) {
331
- printError(errorMessage(error), { json: Boolean(options.json), quiet: false });
332
- process.exitCode = EXIT_RUNTIME_ERROR;
333
- return;
334
- }
335
- try {
336
- const client = await ensureSupervisor();
337
- const state = await client.signalNode(runId, options.node, payload);
338
- if (options.json)
339
- console.log(JSON.stringify(state));
340
- else
341
- console.log(`Node ${options.node} signaled (state: ${state.state})`);
342
- }
343
- catch (error) {
344
- printError(errorMessage(error), { json: Boolean(options.json), quiet: false });
345
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
346
- }
347
- });
348
- runs
349
- .command("replay")
350
- .argument("<runId>", "run ID")
351
- .option("--json", "output machine-readable JSON")
352
- .description("deterministically replay a Run and verify its interpretation")
353
- .action(async (runId, options) => {
354
- try {
355
- const client = await ensureSupervisor();
356
- const result = await client.replay(runId);
357
- if (options.json) {
358
- console.log(JSON.stringify(result));
359
- }
360
- else if (result.ok) {
361
- console.log(`Replay OK: ${runId} reproduced deterministically.`);
362
- }
363
- else {
364
- console.log(`Replay MISMATCH: ${runId} (${result.mismatches.length} discrepancies)`);
365
- for (const m of result.mismatches.slice(0, 10)) {
366
- console.log(` ${m.nodeKey} [${m.kind}] expected=${m.expected ?? "-"} actual=${m.actual ?? "-"}`);
367
- }
368
- }
369
- if (!result.ok)
370
- process.exitCode = EXIT_RUNTIME_ERROR;
371
- }
372
- catch (error) {
373
- printError(errorMessage(error), { json: Boolean(options.json), quiet: false });
374
- process.exitCode = isSupervisorConnectionError(error) ? EXIT_SUPERVISOR_ERROR : EXIT_RUNTIME_ERROR;
375
- }
376
- });
377
- runs
378
- .command("fork")
379
- .argument("<sourceRunId>", "terminal source Run to fork from")
380
- .argument("<refOrPath>", "Workflow Catalog ref/name or workflow YAML spec path with the repaired Spec")
381
- .option("--from <nodeKey>", "force the Fork Origin to a specific Node Key (default: first divergence)")
382
- .option("--input <value>", "inline JSON or path to YAML/JSON input (default: inherit from source Run)")
383
- .option("--agents <value>", "inline JSON/YAML or path to JSON/YAML Agent Overrides object")
384
- .option("--dry-run", "compute the fork plan without creating a new Run")
385
- .option("--background", "submit and return immediately (no follow)")
386
- .option("--visualize", "submit and open TUI visualizer")
387
- .option("--json", "write JSON output")
388
- .option("--quiet", "only write final output")
389
- .option("--poll <duration>", "follow-mode poll interval (e.g. 2s, 1m, 500ms; default 10s, min 1s)", (value) => {
390
- const ms = parseDurationMs(value, { strict: false });
391
- if (ms < 1000) {
392
- throw new InvalidArgumentError("--poll must be >= 1s (e.g. 2s, 1m, 500ms)");
393
- }
394
- return ms;
395
- })
396
- .description("derive a new Run from a terminal Run, inheriting matching Run Checkpoints from the source")
397
- .action(async (sourceRunId, refOrPath, options) => {
398
- if (rejectConflictingSubmissionOptions(options))
399
- return;
400
- try {
401
- const target = resolveWorkflowTarget(refOrPath);
402
- const parsedInput = parseInput(options.input);
403
- const parsedAgentOverrides = parseAgentOverridesInput(options.agents);
404
- const client = await ensureSupervisor();
405
- const result = await client.forkRun(sourceRunId, target.source, {
406
- sourcePath: target.sourcePath,
407
- workflowRef: target.workflowRef,
408
- input: parsedInput,
409
- overrideOriginNodeKey: options.from,
410
- dryRun: options.dryRun,
411
- agentOverrides: parsedAgentOverrides
412
- });
413
- if (options.dryRun) {
414
- if (options.json) {
415
- console.log(JSON.stringify(result));
416
- }
417
- else if (!options.quiet) {
418
- console.log(`Fork plan for ${sourceRunId}:`);
419
- console.log(` Fork Origin: ${result.plan.forkOriginNodeKey} (${result.plan.boundaryReason})`);
420
- console.log(` Inherited Nodes: ${result.plan.inheritedNodeKeys.length}`);
421
- for (const key of result.plan.inheritedNodeKeys)
422
- console.log(` + ${key}`);
423
- }
424
- printSubmissionWarnings(result.submissionWarnings ?? [], options);
425
- process.exitCode = 0;
426
- return;
427
- }
428
- if (!result.run) {
429
- printError("Supervisor returned no Run for non-dry-run fork", options);
430
- process.exitCode = EXIT_RUNTIME_ERROR;
431
- return;
432
- }
433
- if (options.background) {
434
- if (options.json) {
435
- console.log(JSON.stringify(result));
436
- }
437
- else if (!options.quiet) {
438
- console.log(`Run ${result.run.runId} forked from ${sourceRunId}`);
439
- console.log(`Fork Origin: ${result.plan.forkOriginNodeKey}`);
440
- console.log(`Inherited: ${result.plan.inheritedNodeKeys.length} node(s)`);
441
- console.log(`Status: ${result.run.status}`);
442
- }
443
- printSubmissionWarnings(result.run.submissionWarnings ?? [], options);
444
- process.exitCode = 0;
445
- return;
446
- }
447
- printSubmissionWarnings(result.run.submissionWarnings ?? [], options);
448
- if (options.visualize) {
449
- await launchVisualizer(client, result.run.runId);
450
- process.exitCode = 0;
451
- return;
452
- }
453
- const terminalStatus = await followRun(client, result.run.runId, { json: options.json, intervalMs: options.poll ?? undefined });
454
- process.exitCode = exitCodeForRunStatus(terminalStatus);
455
- }
456
- catch (error) {
457
- const message = errorMessage(error);
458
- printError(message, options);
459
- if (isSupervisorConnectionError(error)) {
460
- process.exitCode = EXIT_SUPERVISOR_ERROR;
461
- }
462
- else if (error instanceof ForkRejectedError) {
463
- process.exitCode = EXIT_FORK_REJECTED;
464
- }
465
- else {
466
- process.exitCode = EXIT_RUNTIME_ERROR;
467
- }
468
- }
469
- });
470
- program.addCommand(runs);
471
- program.addCommand(buildHooksCommand());
472
- program.parse();
473
- function resolveLintTarget(refOrPath) {
474
- if (looksLikeWorkflowPath(refOrPath))
475
- return resolveWorkflowPath(refOrPath);
476
- return findWorkflowCatalogEntry(refOrPath).path;
477
- }
478
- function printWorkflowList(entries) {
479
- if (entries.length === 0) {
480
- console.log("No workflows found.");
481
- return;
482
- }
483
- console.log("SCOPE STATUS REF NAME PATH");
484
- for (const entry of entries) {
485
- console.log(`${pad(entry.scope, 8)} ${pad(entry.status, 9)} ${pad(entry.ref ?? "-", 20)} ${pad(entry.name ?? "-", 20)} ${displayPath(entry.path)}`);
486
- }
487
- }
488
- function printWorkflowDetails(entry) {
489
- console.log(`Workflow: ${entry.name ?? "-"}`);
490
- console.log(`Ref: ${entry.ref ?? "-"}`);
491
- console.log(`Scope: ${entry.scope}`);
492
- console.log(`Status: ${entry.status}`);
493
- console.log(`Path: ${entry.path}`);
494
- if (entry.description)
495
- console.log(`Description: ${entry.description}`);
496
- if (entry.inputKeys.length > 0)
497
- console.log(`Inputs: ${entry.inputKeys.join(", ")}`);
498
- if (entry.diagnostics.length > 0) {
499
- console.log();
500
- console.log("Diagnostics:");
501
- for (const diagnostic of entry.diagnostics) {
502
- console.log(` ${diagnostic.severity.toUpperCase()} ${diagnostic.code} ${diagnostic.path}: ${diagnostic.message}`);
503
- }
504
- }
505
- }
506
- function printCleanResult(result) {
507
- const verb = result.dryRun ? "Would delete" : "Deleted";
508
- console.log(`${verb} ${result.deletedCount} terminal run(s), ${formatBytes(result.bytesReclaimed)}.`);
509
- if (result.skippedCount > 0) {
510
- console.log(`Skipped ${result.skippedCount} run(s).`);
511
- }
512
- }
513
- function exitCodeForRunStatus(status) {
514
- switch (status) {
515
- case "completed": return 0;
516
- case "failed": return EXIT_RUNTIME_ERROR;
517
- case "cancelled":
518
- case "paused": return EXIT_USER_CANCEL;
519
- default: return 0;
520
- }
521
- }
522
- function pad(value, width) {
523
- return value.length >= width ? value : value + " ".repeat(width - value.length);
524
- }
525
- function displayPath(path) {
526
- const rel = relative(process.cwd(), path);
527
- return rel && !rel.startsWith("..") && !rel.startsWith("/") ? rel : path;
528
- }
529
- function createWorkspaceIncludeResolver() {
530
- return workflowSourceResolver().createIncludeResolver();
531
- }
532
- function parseWorkflowSpec(source) {
533
- return parseWorkflowSpecForOverrides(source);
534
- }
535
- function printSubmissionWarnings(warnings, options) {
536
- if (options.json || options.quiet || warnings.length === 0)
537
- return;
538
- for (const warning of warnings) {
539
- console.error(`WARNING ${warning.code} ${warning.agent}: ${warning.message}`);
540
- }
541
- }
542
- function rejectConflictingSubmissionOptions(options) {
543
- if (options.background && options.visualize) {
544
- printError("--background and --visualize are mutually exclusive", options);
545
- process.exitCode = EXIT_CLI_ERROR;
546
- return true;
547
- }
548
- if (options.visualize && options.json) {
549
- printError("--visualize and --json are mutually exclusive", options);
550
- process.exitCode = EXIT_CLI_ERROR;
551
- return true;
552
- }
553
- return false;
554
- }
555
- async function launchVisualizer(client, runId) {
556
- const { runTui } = await import("@acpus/tui");
557
- await runTui({ runId, endpoint: client.endpoint });
558
- }
559
- function formatBytes(bytes) {
560
- if (bytes < 1024)
561
- return `${bytes} B`;
562
- if (bytes < 1024 * 1024)
563
- return `${(bytes / 1024).toFixed(1)} KiB`;
564
- return `${(bytes / (1024 * 1024)).toFixed(1)} MiB`;
565
- }
566
- function pastTense(action) {
567
- if (action === "pause")
568
- return "paused";
569
- if (action === "resume")
570
- return "resumed";
571
- return "cancelled";
572
- }
573
- function errorMessage(error) {
574
- return error instanceof Error ? error.message : String(error);
575
- }
576
- /**
577
- * Best-effort IR fetch for `runs show`. Only needed to surface the prompt and
578
- * expected payload schema of an awaiting Signal Node, so skip the round-trip
579
- * unless one exists, and swallow errors (display degrades gracefully).
580
- */
581
- async function loadIrForShow(client, run) {
582
- const hasAwaitingSignal = run.nodes?.some((n) => n.kind === "run.signal" && n.state === "awaiting");
583
- if (!hasAwaitingSignal)
584
- return undefined;
585
- try {
586
- return await client.getIr(run.runId);
587
- }
588
- catch {
589
- return undefined;
590
- }
591
- }
592
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAC/B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAClE,CAAC;AAE1B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,mCAAmC,CAAC;KAChD,OAAO,CAAC,cAAc,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;AAE9C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACvC,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,iDAAiD,CAAC,CAAC;AAElE,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,CAAC,OAA2B,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IACxC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,aAAa,EAAE,8CAA8C,CAAC;KACvE,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,CAAC,SAAiB,EAAE,OAA2B,EAAE,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IACxC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,aAAa,EAAE,sDAAsD,CAAC;KAC/E,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,CAAC,SAAiB,EAAE,OAA8D,EAAE,EAAE;IAC5F,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACpD,UAAU;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe,EAAE,8BAA8B,EAAE;SAClD,CAAC,CAAC;QACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IACxC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,KAAK,CAAC;KACd,QAAQ,CAAC,aAAa,EAAE,sDAAsD,CAAC;KAC/E,MAAM,CAAC,WAAW,EAAE,oDAAoD,CAAC;KACzE,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,8DAA8D,CAAC;KAC1F,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;KACnE,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,cAAc,EAAE,oDAAoD,CAAC;KAC5E,MAAM,CAAC,QAAQ,EAAE,6DAA6D,CAAC;KAC/E,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,qEAAqE,EAAE,CAAC,KAAa,EAAE,EAAE;IACpH,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;KACD,MAAM,CAAC,KAAK,EACX,SAAiB,EACjB,OAA8K,EAC9K,EAAE;IACF,IAAI,kCAAkC,CAAC,OAAO,CAAC;QAAE,OAAO;IAExD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,oBAAoB,KAAK,SAAS;gBACvD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,eAAe,CAC5B,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAChG;gBACA,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,eAAe,EAAE,8BAA8B,EAAE;aAChD,CACF,CAAC;YACF,MAAM,MAAM,GAAG,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE;gBACpD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,CAAC;YACnE,YAAY,CAAC;gBACX,GAAG,MAAM;gBACT,cAAc,EAAE,cAAc,EAAE,cAAc;gBAC9C,kBAAkB,EAAE,cAAc,EAAE,QAAQ;aAC7C,EAAE,OAAO,CAAC,CAAC;YACZ,uBAAuB,CAAC,cAAc,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YACjE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAE5J,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,KAAK,aAAa,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;gBACvE,IAAI,QAAQ,CAAC,WAAW;oBAAE,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,uBAAuB,CAAC,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAEpE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAE9B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC7B,WAAW,CAAC,4DAA4D,CAAC,CAAC;AAE7E,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC;gBAChE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,KAAK,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA2B,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK;gBACnB,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;gBACzE,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;KACxE,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,OAA6C,EAAE,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,WAAW,CAAC;KACpB,QAAQ,CAAC,SAAS,EAAE,8CAA8C,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,2EAA2E,CAAC;KACvG,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,OAAqC,EAAE,EAAE;IACjF,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACnE,IAAI,CAAC;gBACH,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACxC,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;IAC5D,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC7B,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA2B,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,KAAK,OAAO;gBAC5B,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC9B,CAAC,CAAC,MAAM,KAAK,QAAQ;oBACnB,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC/B,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;;gBAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACrG,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,IAAI;KACD,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC7B,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;KAChF,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA0C,EAAE,EAAE;IAC1E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;;gBAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,CAAC,IAAI,oBAAoB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;;gBAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC7B,cAAc,CAAC,kBAAkB,EAAE,+CAA+C,CAAC;KACnF,cAAc,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KACxF,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA0D,EAAE,EAAE;IAC1F,IAAI,OAAgC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,CAAC,IAAI,qBAAqB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC7B,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;KAChD,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA2B,EAAE,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,gCAAgC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,KAAK,MAAM,CAAC,UAAU,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACrF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,QAAQ,IAAI,GAAG,WAAW,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACrG,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,IAAI;KACD,OAAO,CAAC,MAAM,CAAC;KACf,QAAQ,CAAC,eAAe,EAAE,kCAAkC,CAAC;KAC7D,QAAQ,CAAC,aAAa,EAAE,6EAA6E,CAAC;KACtG,MAAM,CAAC,kBAAkB,EAAE,0EAA0E,CAAC;KACtG,MAAM,CAAC,iBAAiB,EAAE,2EAA2E,CAAC;KACtG,MAAM,CAAC,kBAAkB,EAAE,8DAA8D,CAAC;KAC1F,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;KACnE,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,qEAAqE,EAAE,CAAC,KAAa,EAAE,EAAE;IACpH,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;KACD,WAAW,CAAC,2FAA2F,CAAC;KACxG,MAAM,CAAC,KAAK,EACX,WAAmB,EACnB,SAAiB,EACjB,OAAwK,EACxK,EAAE;IACF,IAAI,kCAAkC,CAAC,OAAO,CAAC;QAAE,OAAO;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE;YAC9D,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,WAAW;YAClB,qBAAqB,EAAE,OAAO,CAAC,IAAI;YACnC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,oBAAoB;SACrC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,GAAG,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;gBAC/F,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB;oBAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,UAAU,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,gBAAgB,WAAW,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QAChI,OAAO,CAAC,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,QAAQ,GAAG,qBAAqB,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YAC9C,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,IAAI,qBAAqB,CAAC,SAAS,CAAC;QAAE,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5E,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA+B;IACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA2B;IACvD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAsB;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,YAAY,qBAAqB,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACtG,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,YAAY,UAAU,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAiB;IAC7C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3B,KAAK,QAAQ,EAAE,OAAO,kBAAkB,CAAC;QACzC,KAAK,WAAW,CAAC;QACjB,KAAK,QAAQ,EAAE,OAAO,gBAAgB,CAAC;QACvC,SAAS,OAAO,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa;IACvC,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,SAAS,8BAA8B;IACrC,OAAO,sBAAsB,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,OAAO,6BAA6B,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAsD,EACtD,OAA4C;IAE5C,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,kCAAkC,CAAC,OAAuF;IACjI,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5C,UAAU,CAAC,qDAAqD,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,UAAU,CAAC,+CAA+C,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAA2B,EAAE,KAAc;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,MAAqC;IACtD,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,MAA4E,EAC5E,GAAsC;IAEtC,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IACpG,IAAI,CAAC,iBAAiB;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/io.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare function readTextFile(path: string): string;
2
- export declare function parseInput(value: string | undefined, label?: string): Record<string, unknown> | undefined;
3
- //# sourceMappingURL=io.d.ts.map
package/dist/io.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,SAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAe5G"}
package/dist/io.js DELETED
@@ -1,27 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- import { parse as parseYaml } from "yaml";
4
- export function readTextFile(path) {
5
- return readFileSync(path, "utf8");
6
- }
7
- export function parseInput(value, label = "--input") {
8
- if (value === undefined) {
9
- return undefined;
10
- }
11
- const possiblePath = resolve(process.cwd(), value);
12
- if (existsSync(possiblePath)) {
13
- const contents = readTextFile(possiblePath);
14
- if (possiblePath.endsWith(".yaml") || possiblePath.endsWith(".yml")) {
15
- return ensureObject(parseYaml(contents), label);
16
- }
17
- return ensureObject(JSON.parse(contents), label);
18
- }
19
- return ensureObject(JSON.parse(value), label);
20
- }
21
- function ensureObject(value, label) {
22
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
23
- throw new Error(`${label} must resolve to an object.`);
24
- }
25
- return value;
26
- }
27
- //# sourceMappingURL=io.js.map