@async/pipeline 0.1.5 → 0.2.3

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 (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/cli.d.ts +1 -1
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +5 -1
  6. package/dist/cli.js.map +1 -1
  7. package/dist/internal/core/index.d.ts +77 -41
  8. package/dist/internal/core/index.d.ts.map +1 -1
  9. package/dist/internal/core/index.js +150 -26
  10. package/dist/internal/core/index.js.map +1 -1
  11. package/dist/internal/lima/index.d.ts +1 -1
  12. package/dist/internal/lima/index.d.ts.map +1 -1
  13. package/dist/internal/lima/index.js +1 -1
  14. package/dist/internal/lima/index.js.map +1 -1
  15. package/dist/internal/node/cli.d.ts +5 -2
  16. package/dist/internal/node/cli.d.ts.map +1 -1
  17. package/dist/internal/node/cli.js +396 -89
  18. package/dist/internal/node/cli.js.map +1 -1
  19. package/dist/internal/node/doctor.d.ts +1 -1
  20. package/dist/internal/node/doctor.d.ts.map +1 -1
  21. package/dist/internal/node/doctor.js +50 -1
  22. package/dist/internal/node/doctor.js.map +1 -1
  23. package/dist/internal/node/github.d.ts +2 -0
  24. package/dist/internal/node/github.d.ts.map +1 -1
  25. package/dist/internal/node/github.js +59 -11
  26. package/dist/internal/node/github.js.map +1 -1
  27. package/dist/internal/node/index.d.ts +1 -0
  28. package/dist/internal/node/index.d.ts.map +1 -1
  29. package/dist/internal/node/index.js +1 -0
  30. package/dist/internal/node/index.js.map +1 -1
  31. package/dist/internal/node/loader.d.ts.map +1 -1
  32. package/dist/internal/node/loader.js +4 -0
  33. package/dist/internal/node/loader.js.map +1 -1
  34. package/dist/internal/node/mcp.d.ts +16 -0
  35. package/dist/internal/node/mcp.d.ts.map +1 -0
  36. package/dist/internal/node/mcp.js +243 -0
  37. package/dist/internal/node/mcp.js.map +1 -0
  38. package/dist/internal/node/runner.d.ts +64 -49
  39. package/dist/internal/node/runner.d.ts.map +1 -1
  40. package/dist/internal/node/runner.js +648 -138
  41. package/dist/internal/node/runner.js.map +1 -1
  42. package/dist/internal/node/sources.d.ts +3 -0
  43. package/dist/internal/node/sources.d.ts.map +1 -1
  44. package/dist/internal/node/sources.js +24 -7
  45. package/dist/internal/node/sources.js.map +1 -1
  46. package/dist/internal/node/store.d.ts +86 -0
  47. package/dist/internal/node/store.d.ts.map +1 -1
  48. package/dist/internal/node/store.js +322 -24
  49. package/dist/internal/node/store.js.map +1 -1
  50. package/package.json +7 -5
@@ -0,0 +1,243 @@
1
+ import { readFile, readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { createInterface } from "node:readline";
4
+ import { buildGraph, tasksForJob } from "../core/index.js";
5
+ import { runJob } from "./runner.js";
6
+ import { readPipelineMetadata } from "./sources.js";
7
+ import { computeTaskInputManifest, diffInputManifests, readCacheInputManifest, readContextPacks, readTaskBaseline } from "./store.js";
8
+ /**
9
+ * ADR-0002: a hand-rolled MCP server over stdio. The protocol surface this
10
+ * server needs — initialize, ping, tools/list, tools/call as line-delimited
11
+ * JSON-RPC 2.0 — is small and pinned, which is what keeps the zero-runtime-
12
+ * dependency promise intact. Every tool delegates to the same internals the
13
+ * CLI uses, so the MCP surface cannot drift from `--format json` output.
14
+ */
15
+ const MCP_PROTOCOL_VERSION = "2025-06-18";
16
+ const TOOLS = [
17
+ {
18
+ name: "list_tasks",
19
+ description: "List the pipeline's tasks and jobs: ids, descriptions, dependencies, inputs, outputs, cache settings, and job targets. Reads metadata only; executes nothing.",
20
+ inputSchema: { type: "object", properties: {}, additionalProperties: false },
21
+ readOnly: true
22
+ },
23
+ {
24
+ name: "graph",
25
+ description: "The dependency graph and deterministic execution order, for the whole pipeline or expanded from one job's targets.",
26
+ inputSchema: { type: "object", properties: { job: { type: "string", description: "Optional job id to expand" } }, additionalProperties: false },
27
+ readOnly: true
28
+ },
29
+ {
30
+ name: "explain_task",
31
+ description: "The full normalized definition of one task.",
32
+ inputSchema: { type: "object", properties: { task: { type: "string" } }, required: ["task"], additionalProperties: false },
33
+ readOnly: true
34
+ },
35
+ {
36
+ name: "metadata",
37
+ description: "Full pipeline metadata as JSON. Does not clone sources, run prepare, execute tasks, or evaluate deferred shell callbacks.",
38
+ inputSchema: { type: "object", properties: { includeSources: { type: "boolean" } }, additionalProperties: false },
39
+ readOnly: true
40
+ },
41
+ {
42
+ name: "list_runs",
43
+ description: "Recent run records under .async/runs: id, job, status, timings.",
44
+ inputSchema: { type: "object", properties: { limit: { type: "number", description: "Max records, newest first (default 20)" } }, additionalProperties: false },
45
+ readOnly: true
46
+ },
47
+ {
48
+ name: "read_run",
49
+ description: "One run's execution record plus any failure context packs (error, redacted log tail, input diff vs last passing state, reproduction command).",
50
+ inputSchema: { type: "object", properties: { runId: { type: "string" } }, required: ["runId"], additionalProperties: false },
51
+ readOnly: true
52
+ },
53
+ {
54
+ name: "diff_inputs",
55
+ description: "Which of a task's declared input files changed (content digests) since the task last passed. Reads files; executes nothing.",
56
+ inputSchema: { type: "object", properties: { task: { type: "string" } }, required: ["task"], additionalProperties: false },
57
+ readOnly: true
58
+ },
59
+ {
60
+ name: "run_job",
61
+ description: "Run a job through the scheduler: same run lock, cache, records, and evidence as the CLI. Only available when the server was started with --allow-run.",
62
+ inputSchema: {
63
+ type: "object",
64
+ properties: {
65
+ job: { type: "string" },
66
+ force: { type: "boolean", description: "Re-run tasks while still recording fresh cache entries" }
67
+ },
68
+ required: ["job"],
69
+ additionalProperties: false
70
+ },
71
+ readOnly: false
72
+ }
73
+ ];
74
+ export async function runMcpServer(options) {
75
+ const lines = createInterface({ input: options.input, crlfDelay: Infinity });
76
+ for await (const line of lines) {
77
+ const trimmed = line.trim();
78
+ if (!trimmed)
79
+ continue;
80
+ let message;
81
+ try {
82
+ message = JSON.parse(trimmed);
83
+ }
84
+ catch {
85
+ options.write(JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } }));
86
+ continue;
87
+ }
88
+ const response = await handleMessage(message, options);
89
+ if (response !== undefined)
90
+ options.write(JSON.stringify(response));
91
+ }
92
+ return 0;
93
+ }
94
+ async function handleMessage(message, options) {
95
+ if (!message.method)
96
+ return undefined; // responses and malformed traffic are ignored
97
+ if (message.method.startsWith("notifications/"))
98
+ return undefined;
99
+ const id = message.id ?? null;
100
+ if (message.method === "initialize") {
101
+ return result(id, {
102
+ protocolVersion: MCP_PROTOCOL_VERSION,
103
+ capabilities: { tools: {} },
104
+ serverInfo: { name: "async-pipeline", version: options.serverVersion ?? "0.0.0" }
105
+ });
106
+ }
107
+ if (message.method === "ping")
108
+ return result(id, {});
109
+ if (message.method === "tools/list") {
110
+ const tools = TOOLS
111
+ .filter((tool) => tool.readOnly || options.allowRun)
112
+ .map(({ name, description, inputSchema }) => ({ name, description, inputSchema }));
113
+ return result(id, { tools });
114
+ }
115
+ if (message.method === "tools/call") {
116
+ const name = typeof message.params?.name === "string" ? message.params.name : "";
117
+ const args = (message.params?.arguments ?? {});
118
+ const tool = TOOLS.find((candidate) => candidate.name === name);
119
+ if (!tool) {
120
+ return error(id, -32602, `Unknown tool "${name}".`);
121
+ }
122
+ try {
123
+ const payload = await callTool(name, args, options);
124
+ return result(id, { content: [{ type: "text", text: JSON.stringify(payload, null, 2) }] });
125
+ }
126
+ catch (cause) {
127
+ const text = cause instanceof Error ? cause.message : String(cause);
128
+ return result(id, { content: [{ type: "text", text }], isError: true });
129
+ }
130
+ }
131
+ return error(id, -32601, `Method "${message.method}" not found.`);
132
+ }
133
+ async function callTool(name, args, options) {
134
+ const { pipeline, store } = options;
135
+ if (name === "list_tasks") {
136
+ return {
137
+ pipeline: pipeline.name,
138
+ tasks: Object.values(pipeline.tasks).map((task) => ({
139
+ id: task.id,
140
+ description: task.description,
141
+ dependsOn: task.dependsOn,
142
+ inputs: task.inputs,
143
+ outputs: task.outputs,
144
+ cache: task.cache.enabled
145
+ })),
146
+ jobs: Object.values(pipeline.jobs).map((job) => ({ id: job.id, target: job.target, trigger: job.trigger }))
147
+ };
148
+ }
149
+ if (name === "graph") {
150
+ const jobId = typeof args.job === "string" ? args.job : undefined;
151
+ const graph = jobId ? tasksForJob(pipeline, jobId) : buildGraph(pipeline);
152
+ return graph;
153
+ }
154
+ if (name === "explain_task") {
155
+ const task = pipeline.tasks[requireString(args, "task")];
156
+ if (!task)
157
+ throw new Error(`Unknown task "${String(args.task)}".`);
158
+ return JSON.parse(JSON.stringify(task, (_key, value) => (typeof value === "function" ? "[function]" : value)));
159
+ }
160
+ if (name === "metadata") {
161
+ return readPipelineMetadata(options.configPath, {
162
+ cwd: options.cwd,
163
+ includeSources: args.includeSources === true,
164
+ store
165
+ });
166
+ }
167
+ if (name === "list_runs") {
168
+ const limit = typeof args.limit === "number" && args.limit > 0 ? Math.floor(args.limit) : 20;
169
+ let entries;
170
+ try {
171
+ entries = (await readdir(store.runsDir)).sort().reverse();
172
+ }
173
+ catch {
174
+ return { runs: [] };
175
+ }
176
+ const runs = [];
177
+ for (const entry of entries.slice(0, limit)) {
178
+ try {
179
+ const record = JSON.parse(await readFile(join(store.runsDir, entry, "execution.json"), "utf8"));
180
+ runs.push({ id: record.id, jobId: record.jobId, status: record.status, startedAt: record.startedAt, finishedAt: record.finishedAt });
181
+ }
182
+ catch {
183
+ // Partial or foreign directories under runs/ are skipped, not fatal.
184
+ }
185
+ }
186
+ return { runs };
187
+ }
188
+ if (name === "read_run") {
189
+ const runId = requireString(args, "runId");
190
+ const record = JSON.parse(await readFile(join(store.runsDir, runId, "execution.json"), "utf8"));
191
+ const contextPacks = await readContextPacks(store, runId);
192
+ return { record, contextPacks };
193
+ }
194
+ if (name === "diff_inputs") {
195
+ const taskId = requireString(args, "task");
196
+ const task = pipeline.tasks[taskId];
197
+ if (!task)
198
+ throw new Error(`Unknown task "${taskId}".`);
199
+ const baseline = await readTaskBaseline(store, taskId);
200
+ const baselineManifest = baseline ? await readCacheInputManifest(store, baseline.cacheKey) : null;
201
+ const current = await computeTaskInputManifest(pipeline, task, options.cwd);
202
+ if (!baseline || !baselineManifest) {
203
+ return { task: taskId, baselineMissing: true, currentFiles: Object.keys(current.files).length };
204
+ }
205
+ return {
206
+ task: taskId,
207
+ baselineCacheKey: baseline.cacheKey,
208
+ baselineRecordedAt: baseline.recordedAt,
209
+ ...diffInputManifests(baselineManifest, current)
210
+ };
211
+ }
212
+ if (name === "run_job") {
213
+ if (!options.allowRun) {
214
+ throw new Error("run_job is disabled. Start the server with `async-pipeline mcp --allow-run` to expose it.");
215
+ }
216
+ const jobId = requireString(args, "job");
217
+ return runJob(pipeline, {
218
+ id: jobId,
219
+ cwd: options.cwd,
220
+ env: options.env,
221
+ mode: options.env.CI ? "ci" : "manual",
222
+ force: args.force === true,
223
+ // stdout is the JSON-RPC channel: task output must never echo into it.
224
+ // It still lands in task logs and the execution record as always.
225
+ echo: false
226
+ });
227
+ }
228
+ throw new Error(`Unknown tool "${name}".`);
229
+ }
230
+ function requireString(args, key) {
231
+ const value = args[key];
232
+ if (typeof value !== "string" || value.length === 0) {
233
+ throw new Error(`Tool argument "${key}" must be a non-empty string.`);
234
+ }
235
+ return value;
236
+ }
237
+ function result(id, payload) {
238
+ return { jsonrpc: "2.0", id, result: payload };
239
+ }
240
+ function error(id, code, message) {
241
+ return { jsonrpc: "2.0", id, error: { code, message } };
242
+ }
243
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,YAAY,CAAC;AA6B1C,MAAM,KAAK,GAAqB;IAC9B;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+JAA+J;QAC5K,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC5E,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oHAAoH;QACjI,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC/I,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6CAA6C;QAC1D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC1H,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,2HAA2H;QACxI,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE;QACjH,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC9J,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,+IAA+I;QAC5J,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC5H,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,6HAA6H;QAC1I,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE;QAC1H,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,uJAAuJ;QACpK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,wDAAwD,EAAE;aAClG;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;YACjB,oBAAoB,EAAE,KAAK;SAC5B;QACD,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,OAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7G,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAuB,EAAE,OAAyB;IAC7E,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,CAAC,8CAA8C;IACrF,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,EAAE,EAAE;YAChB,eAAe,EAAE,oBAAoB;YACrC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO,EAAE;SAClF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;aACnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAA4B,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,iBAAiB,IAAI,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAA6B,EAAE,OAAyB;IAC5F,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEpC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClD,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;aAC1B,CAAC,CAAC;YACH,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5G,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,OAAO,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAC5C,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAoB,CAAC;gBACnH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACvI,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAoB,CAAC;QACnH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClG,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClG,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;YACnC,kBAAkB,EAAE,QAAQ,CAAC,UAAU;YACvC,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,QAAQ,EAAE;YACtB,EAAE,EAAE,KAAK;YACT,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI;YAC1B,uEAAuE;YACvE,kEAAkE;YAClE,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B,EAAE,GAAW;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,+BAA+B,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,EAA0B,EAAE,OAAgB;IAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,KAAK,CAAC,EAA0B,EAAE,IAAY,EAAE,OAAe;IACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;AAC1D,CAAC"}
@@ -1,18 +1,26 @@
1
- import type { CommandPolicy, ExecutionRecord, NormalizedPipeline, NormalizedTask } from "../core/index.js";
1
+ import type { CommandPolicy, ExecutionRecord, NormalizedPipeline, NormalizedTask, SandboxDefinition, SandboxId } from "../core/index.js";
2
2
  export interface CommandResult {
3
3
  code: number;
4
4
  stdout: string;
5
5
  stderr: string;
6
6
  timedOut?: boolean;
7
7
  }
8
+ export interface RunShellOptions {
9
+ cwd: string;
10
+ env: NodeJS.ProcessEnv;
11
+ task: NormalizedTask;
12
+ timeoutMs?: number;
13
+ echo?: boolean;
14
+ redactValues?: readonly string[];
15
+ /**
16
+ * Env keys safe to forward into isolated executors (docker). When omitted,
17
+ * isolating executors forward nothing beyond their own defaults.
18
+ */
19
+ forwardEnvKeys?: readonly string[];
20
+ }
8
21
  export interface CommandExecutor {
9
22
  name: string;
10
- runShell(command: string, options: {
11
- cwd: string;
12
- env: NodeJS.ProcessEnv;
13
- task: NormalizedTask;
14
- timeoutMs?: number;
15
- }): Promise<CommandResult>;
23
+ runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
16
24
  checkTool?(tool: string): Promise<boolean>;
17
25
  }
18
26
  export type CommandPolicyStatus = "allowed" | "mocked" | "denied" | "approval-required";
@@ -33,33 +41,23 @@ export interface CommandRecord {
33
41
  finishedAt: string;
34
42
  durationMs: number;
35
43
  }
36
- export interface WorkspaceCommands {
44
+ export interface PipelineCommands {
37
45
  run(invocation: CommandInvocation, next: () => Promise<CommandResult>): Promise<CommandResult>;
38
46
  records(): CommandRecord[];
39
47
  }
40
48
  export interface PipelineFileSystem {
41
49
  kind: "host";
42
50
  }
43
- export interface PipelineWorkspace {
51
+ export interface ExecutionContext {
44
52
  cwd: string;
45
53
  env: NodeJS.ProcessEnv;
46
54
  fs: PipelineFileSystem;
47
55
  executor: CommandExecutor;
48
- commands?: WorkspaceCommands;
49
- }
50
- export interface HostWorkspaceOptions {
51
- cwd?: string;
52
- env?: NodeJS.ProcessEnv;
53
- executor?: CommandExecutor;
54
- commands?: WorkspaceCommands;
56
+ commands?: PipelineCommands;
55
57
  }
56
58
  export declare class HostCommandExecutor implements CommandExecutor {
57
59
  name: string;
58
- runShell(command: string, options: {
59
- cwd: string;
60
- env: NodeJS.ProcessEnv;
61
- timeoutMs?: number;
62
- }): Promise<CommandResult>;
60
+ runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
63
61
  checkTool(tool: string): Promise<boolean>;
64
62
  }
65
63
  export interface DockerVolume {
@@ -67,14 +65,6 @@ export interface DockerVolume {
67
65
  target: string;
68
66
  readonly?: boolean;
69
67
  }
70
- export interface DockerWorkspaceOptions {
71
- image: string;
72
- cwd?: string;
73
- env?: NodeJS.ProcessEnv;
74
- workdir?: string;
75
- volumes?: DockerVolume[];
76
- commands?: WorkspaceCommands;
77
- }
78
68
  export declare class DockerCommandExecutor implements CommandExecutor {
79
69
  private readonly options;
80
70
  name: string;
@@ -84,11 +74,7 @@ export declare class DockerCommandExecutor implements CommandExecutor {
84
74
  workdir: string;
85
75
  volumes: DockerVolume[];
86
76
  });
87
- runShell(command: string, options: {
88
- cwd: string;
89
- env: NodeJS.ProcessEnv;
90
- timeoutMs?: number;
91
- }): Promise<CommandResult>;
77
+ runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
92
78
  checkTool(tool: string): Promise<boolean>;
93
79
  private dockerCommand;
94
80
  private containerCwd;
@@ -97,30 +83,59 @@ export declare class LimaCommandExecutor implements CommandExecutor {
97
83
  private readonly vm;
98
84
  name: string;
99
85
  constructor(vm?: string);
100
- runShell(command: string, options: {
101
- cwd: string;
102
- env: NodeJS.ProcessEnv;
103
- task: NormalizedTask;
104
- timeoutMs?: number;
105
- }): Promise<CommandResult>;
86
+ runShell(command: string, options: RunShellOptions): Promise<CommandResult>;
106
87
  checkTool(tool: string): Promise<boolean>;
107
88
  }
108
- export declare function hostWorkspace(options?: HostWorkspaceOptions): PipelineWorkspace;
109
- export declare function dockerWorkspace(options: DockerWorkspaceOptions): PipelineWorkspace;
110
- export declare function limaWorkspace(options?: {
111
- vm?: string;
89
+ /**
90
+ * Resolve flat run options into the execution context a run uses: host by
91
+ * default, or the selected sandbox (by id from `pipeline.sandboxes`, or an
92
+ * inline definition).
93
+ */
94
+ export declare function resolveExecutionContext(pipeline: NormalizedPipeline, target?: RunTarget): ExecutionContext;
95
+ export declare function commandProxy(policy?: CommandPolicy): PipelineCommands;
96
+ export interface RunTarget {
112
97
  cwd?: string;
113
98
  env?: NodeJS.ProcessEnv;
114
- commands?: WorkspaceCommands;
115
- }): PipelineWorkspace;
116
- export declare function commandProxy(policy?: CommandPolicy): WorkspaceCommands;
117
- export interface RunOptions {
99
+ executor?: CommandExecutor;
100
+ commands?: PipelineCommands;
101
+ sandbox?: SandboxId | SandboxDefinition;
102
+ }
103
+ export interface RunOptions extends RunTarget {
118
104
  id: string;
119
105
  mode?: "manual" | "ci";
120
106
  concurrency?: number;
121
- workspace?: PipelineWorkspace;
107
+ force?: boolean;
108
+ echo?: boolean;
122
109
  }
123
110
  export type RunSingleTaskOptions = Omit<RunOptions, "id">;
124
111
  export declare function runJob(pipeline: NormalizedPipeline, options: RunOptions): Promise<ExecutionRecord>;
112
+ export interface TaskPlanEntry {
113
+ id: string;
114
+ cacheEnabled: boolean;
115
+ predicted: "run" | "cached" | "unknown";
116
+ cacheKey?: string;
117
+ reason?: string;
118
+ }
119
+ export interface JobPlan {
120
+ jobId: string;
121
+ executionOrder: string[];
122
+ entries: TaskPlanEntry[];
123
+ }
124
+ /**
125
+ * Computes the execution order and predicted cache behavior for a job without running it.
126
+ * Predictions reuse the real cache-key chain but do not validate cached output files.
127
+ */
128
+ export declare function planJob(pipeline: NormalizedPipeline, options: {
129
+ id: string;
130
+ } & RunTarget): Promise<JobPlan>;
125
131
  export declare function runSingleTask(pipeline: NormalizedPipeline, taskId: string, options?: RunSingleTaskOptions): Promise<ExecutionRecord>;
132
+ /**
133
+ * Abort the run: terminate every live task process group (SIGTERM-style
134
+ * signal first, SIGKILL after a grace period), refuse to start new task
135
+ * processes, and hard-exit if the run has not finalized its execution
136
+ * record by the deadline. Idempotent; the first caller wins.
137
+ */
138
+ export declare function beginShutdown(signal: NodeJS.Signals, exitCode: number): void;
139
+ /** Exit code requested by an in-progress shutdown, if any. */
140
+ export declare function shutdownExitCode(): number | null;
126
141
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAmE,aAAa,EAAuB,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAqB,iBAAiB,EAAE,SAAS,EAAuF,MAAM,sBAAsB,CAAC;AAK3U,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,mBAAmB,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC/F,OAAO,IAAI,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,EAAE,EAAE,kBAAkB,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,qBAAa,mBAAoB,YAAW,eAAe;IACzD,IAAI,SAAU;IAEd,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIhD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,qBAAsB,YAAW,eAAe;IAG/C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,IAAI,SAAY;gBAEa,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE;IAElH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAIrE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;CAMrB;AAED,qBAAa,mBAAoB,YAAW,eAAe;IAG7C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,IAAI,SAAU;gBAEe,EAAE,SAAmB;IAElD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;IAKrE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAOhD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,GAAE,SAAc,GAAG,gBAAgB,CA8B9G;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,aAA6B,GAAG,gBAAgB,CAgCpF;AAuBD,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAE1D,wBAAsB,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAcxG;AA4MD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAiFjH;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC,CAU9I;AAmtBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAU5E;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD"}