codex-taskflow 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +858 -0
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +209 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/svg.d.ts +50 -0
- package/dist/mcp/svg.d.ts.map +1 -0
- package/dist/mcp/svg.js +310 -0
- package/dist/mcp/svg.js.map +1 -0
- package/package.json +10 -7
package/dist/mcp/server.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* - taskflow_list : list saved flows discoverable in this cwd
|
|
17
17
|
* - taskflow_show : show a saved flow's definition
|
|
18
18
|
* - taskflow_verify : statically verify a flow (no execution)
|
|
19
|
-
* - taskflow_compile : render a flow as a
|
|
19
|
+
* - taskflow_compile : render a flow as a DAG diagram (SVG image) + status line
|
|
20
20
|
*/
|
|
21
21
|
import { type RpcHandler } from "./jsonrpc.ts";
|
|
22
22
|
/**
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAsO1E;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAyJjH;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA2BvE;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -16,22 +16,102 @@
|
|
|
16
16
|
* - taskflow_list : list saved flows discoverable in this cwd
|
|
17
17
|
* - taskflow_show : show a saved flow's definition
|
|
18
18
|
* - taskflow_verify : statically verify a flow (no execution)
|
|
19
|
-
* - taskflow_compile : render a flow as a
|
|
19
|
+
* - taskflow_compile : render a flow as a DAG diagram (SVG image) + status line
|
|
20
20
|
*/
|
|
21
21
|
import { RpcError, RPC, serveStdio } from "./jsonrpc.js";
|
|
22
22
|
import { codexSubagentRunner } from "../codex-runner.js";
|
|
23
|
-
import {
|
|
23
|
+
import { renderFlowSvg, renderFlowOutline, svgToBase64 } from "./svg.js";
|
|
24
|
+
import { discoverAgents, executeTaskflow, getFlow, listFlows, newRunId, peekRun, saveRun, DEFAULT_KEPT_RUNS, DEFAULT_RUN_AGE_DAYS, compileTaskflow, verifyTaskflow, desugar, isShorthand, validateTaskflow, readSubagentSettings, } from "taskflow-core";
|
|
24
25
|
const PROTOCOL_VERSION = "2025-06-18";
|
|
25
|
-
const SERVER_INFO = { name: "
|
|
26
|
-
/**
|
|
26
|
+
const SERVER_INFO = { name: "taskflow", title: "Taskflow", version: "0.1.3" };
|
|
27
|
+
/**
|
|
28
|
+
* MCP tools/call result with a single text block.
|
|
29
|
+
*
|
|
30
|
+
* IMPORTANT (Codex rendering): the Codex desktop app renders a `text` content
|
|
31
|
+
* block as a fixed grey "plaintext" <pre> box — it does NOT parse markdown or
|
|
32
|
+
* highlight code, wraps on whitespace, and caps the box at ~192px tall with an
|
|
33
|
+
* inner scroll. So text here is written as *plain text*: no ```fences```, no
|
|
34
|
+
* markdown tables, conclusion-first, and near-duplicate lines collapsed. Rich
|
|
35
|
+
* rendering (structuredContent/_meta) is gated to Codex's first-party "Apps"
|
|
36
|
+
* server, so third-party MCP output can't opt into it. See docs/codex-mcp.md.
|
|
37
|
+
*/
|
|
27
38
|
function textContent(text, isError = false) {
|
|
28
39
|
return { content: [{ type: "text", text }], isError };
|
|
29
40
|
}
|
|
41
|
+
/** An MCP `image` content block, optionally followed by text blocks. Codex's
|
|
42
|
+
* desktop app renders the image as `<img src="data:…">` (an inline SVG shows as
|
|
43
|
+
* a real diagram) and shows the trailing text as a caption. The CLI/TUI can't
|
|
44
|
+
* render images — it prints a bare `<image content>` placeholder — so the
|
|
45
|
+
* trailing text MUST be self-sufficient there (and for vision-less models). */
|
|
46
|
+
function imageContent(base64, mimeType, texts, isError = false) {
|
|
47
|
+
const content = [{ type: "image", data: base64, mimeType }];
|
|
48
|
+
for (const t of texts)
|
|
49
|
+
if (t)
|
|
50
|
+
content.push({ type: "text", text: t });
|
|
51
|
+
return { content, isError };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Collapse near-identical validation messages so N phases hitting the same rule
|
|
55
|
+
* render as one line with a count instead of N wall-of-text repeats (the exact
|
|
56
|
+
* ugliness this file is fighting). Strips a leading `Phase '<id>': ` / `Phase
|
|
57
|
+
* '<id>' ` prefix, groups by the remaining message, and lists the affected ids.
|
|
58
|
+
*/
|
|
59
|
+
function dedupeMessages(msgs) {
|
|
60
|
+
const groups = new Map();
|
|
61
|
+
const order = [];
|
|
62
|
+
for (const raw of msgs) {
|
|
63
|
+
const m = raw.match(/^Phase '([^']+)':?\s+(.*)$/s);
|
|
64
|
+
const key = m ? m[2] : raw;
|
|
65
|
+
const id = m ? m[1] : "";
|
|
66
|
+
if (!groups.has(key)) {
|
|
67
|
+
groups.set(key, []);
|
|
68
|
+
order.push(key);
|
|
69
|
+
}
|
|
70
|
+
if (id)
|
|
71
|
+
groups.get(key).push(id);
|
|
72
|
+
}
|
|
73
|
+
return order.map((key) => {
|
|
74
|
+
const ids = groups.get(key);
|
|
75
|
+
if (ids.length === 0)
|
|
76
|
+
return key;
|
|
77
|
+
if (ids.length === 1)
|
|
78
|
+
return `${key} (phase ${ids[0]})`;
|
|
79
|
+
const shown = ids.slice(0, 4).join(", ");
|
|
80
|
+
const more = ids.length > 4 ? ` +${ids.length - 4} more` : "";
|
|
81
|
+
return `${key} (${ids.length} phases: ${shown}${more})`;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Render verification issues as deduped, conclusion-friendly "Errors:" /
|
|
86
|
+
* "Warnings:" plaintext blocks. `extraErrors`/`extraWarnings` fold in the raw
|
|
87
|
+
* string messages from `validateTaskflow` so structural + quality issues share
|
|
88
|
+
* one deduped view. Shared by taskflow_verify and taskflow_compile's fallback.
|
|
89
|
+
*/
|
|
90
|
+
function issueBlocks(issues, extraErrors = [], extraWarnings = []) {
|
|
91
|
+
const toStr = (i) =>
|
|
92
|
+
// verifyTaskflow messages already embed the phase id in prose ("Phase 'x'
|
|
93
|
+
// is a terminal phase…"); only prepend the id for messages that don't, so
|
|
94
|
+
// dedupeMessages can strip one consistent prefix and collapse same-rule hits.
|
|
95
|
+
i.phaseId && !/^Phase '/.test(i.message) ? `Phase '${i.phaseId}': ${i.message}` : i.message;
|
|
96
|
+
const rawErrors = [...extraErrors, ...issues.filter((i) => i.severity === "error").map(toStr)];
|
|
97
|
+
const rawWarnings = [...extraWarnings, ...issues.filter((i) => i.severity === "warning").map(toStr)];
|
|
98
|
+
// Count reflects the true number of issues; the lines below are the *deduped*
|
|
99
|
+
// compact view (N same-rule hits collapse to one line + a phase list).
|
|
100
|
+
const errors = dedupeMessages(rawErrors);
|
|
101
|
+
const warnings = dedupeMessages(rawWarnings);
|
|
102
|
+
const errBlock = errors.length ? `\n\nErrors:\n${errors.map((e) => `- ${e}`).join("\n")}` : "";
|
|
103
|
+
const warnBlock = warnings.length ? `\n\nWarnings:\n${warnings.map((w) => `- ${w}`).join("\n")}` : "";
|
|
104
|
+
return { errorCount: rawErrors.length, warningCount: rawWarnings.length, text: `${errBlock}${warnBlock}` };
|
|
105
|
+
}
|
|
106
|
+
/** Pluralize a count for a compact status line. */
|
|
107
|
+
function count(n, noun) {
|
|
108
|
+
return `${n} ${noun}${n === 1 ? "" : "s"}`;
|
|
109
|
+
}
|
|
30
110
|
const TOOLS = [
|
|
31
111
|
{
|
|
32
112
|
name: "taskflow_run",
|
|
33
113
|
title: "Run a taskflow",
|
|
34
|
-
description: "Run a taskflow DAG and return its final output. Provide EITHER `name` (a saved flow) OR `define` (an inline flow definition: {name, phases:[…]} or a shorthand {task} / {tasks} / {chain}). Subagents execute as codex sessions. Intermediate phase outputs stay in the runtime; only the final phase output is returned.",
|
|
114
|
+
description: "Run a taskflow DAG and return its final output. Provide EITHER `name` (a saved flow) OR `define` (an inline flow definition: {name, phases:[…]} or a shorthand {task} / {tasks} / {chain}). Subagents execute as codex sessions. Intermediate phase outputs stay in the runtime; only the final phase output is returned — the reported runId can be passed to taskflow_peek to inspect intermediate phase outputs afterwards.",
|
|
35
115
|
inputSchema: {
|
|
36
116
|
type: "object",
|
|
37
117
|
additionalProperties: false,
|
|
@@ -76,7 +156,7 @@ const TOOLS = [
|
|
|
76
156
|
{
|
|
77
157
|
name: "taskflow_compile",
|
|
78
158
|
title: "Compile a taskflow to a diagram",
|
|
79
|
-
description: "Render a flow as a
|
|
159
|
+
description: "Render a flow's DAG as a diagram (an inline SVG image) with issues overlaid (red=error, amber=warning, green=final), plus a compact status line. No execution. Provide `name` or `define`.",
|
|
80
160
|
inputSchema: {
|
|
81
161
|
type: "object",
|
|
82
162
|
additionalProperties: false,
|
|
@@ -86,6 +166,23 @@ const TOOLS = [
|
|
|
86
166
|
},
|
|
87
167
|
},
|
|
88
168
|
},
|
|
169
|
+
{
|
|
170
|
+
name: "taskflow_peek",
|
|
171
|
+
title: "Peek at a run's phase output",
|
|
172
|
+
description: "Inspect one phase's intermediate output from a stored run (post-hoc debugging). Use the runId reported by taskflow_run. Omit `phaseId` to list the run's phases. Output is hard-truncated (default 4000 chars) so a peek never floods the context window. Read-only.",
|
|
173
|
+
inputSchema: {
|
|
174
|
+
type: "object",
|
|
175
|
+
additionalProperties: false,
|
|
176
|
+
properties: {
|
|
177
|
+
runId: { type: "string", description: "The run to inspect (from a prior taskflow_run or the runs index)." },
|
|
178
|
+
phaseId: { type: "string", description: "Phase to peek at. Omit to list all phases with status + output size." },
|
|
179
|
+
json: { type: "boolean", description: "Return the phase's parsed JSON instead of its text output." },
|
|
180
|
+
item: { type: "number", description: "For map/parallel phases: the 1-based item section to extract." },
|
|
181
|
+
limit: { type: "number", description: "Truncation cap in chars (default 4000, max 32000)." },
|
|
182
|
+
},
|
|
183
|
+
required: ["runId"],
|
|
184
|
+
},
|
|
185
|
+
},
|
|
89
186
|
];
|
|
90
187
|
/** Resolve a flow from params: inline `define` (desugared) or saved `name`. */
|
|
91
188
|
function resolveFlow(cwd, params) {
|
|
@@ -102,7 +199,7 @@ function resolveFlow(cwd, params) {
|
|
|
102
199
|
}
|
|
103
200
|
function mkRunState(def, args, cwd) {
|
|
104
201
|
return {
|
|
105
|
-
runId:
|
|
202
|
+
runId: newRunId(def.name ?? "flow"),
|
|
106
203
|
flowName: def.name ?? "flow",
|
|
107
204
|
def,
|
|
108
205
|
args,
|
|
@@ -139,12 +236,44 @@ export function makeToolHandlers(cwd) {
|
|
|
139
236
|
const state = mkRunState(def, args.args ?? {}, cwd);
|
|
140
237
|
if (args.incremental === true)
|
|
141
238
|
deps.cacheScopeDefault = "cross-run";
|
|
142
|
-
|
|
239
|
+
// Persist run state (throttled + final) so taskflow_peek / resume can read
|
|
240
|
+
// intermediate phase outputs after the run — same contract as the pi adapter.
|
|
241
|
+
const cleanupConfig = { maxKeep: DEFAULT_KEPT_RUNS, maxAgeDays: DEFAULT_RUN_AGE_DAYS };
|
|
242
|
+
let lastPersist = 0;
|
|
243
|
+
deps.persist = (s) => {
|
|
244
|
+
const now = Date.now();
|
|
245
|
+
if (now - lastPersist >= 1000) {
|
|
246
|
+
lastPersist = now;
|
|
247
|
+
saveRun(s, cleanupConfig);
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
const res = await executeTaskflow(state, deps).finally(() => {
|
|
251
|
+
// Terminal persist must survive a throwing runtime ("never lose work") —
|
|
252
|
+
// and persistence itself must never sink a completed run.
|
|
253
|
+
try {
|
|
254
|
+
saveRun(state, cleanupConfig);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
/* fail-open */
|
|
258
|
+
}
|
|
259
|
+
});
|
|
143
260
|
const header = res.ok ? "✓ taskflow complete" : "✗ taskflow did not fully succeed";
|
|
144
|
-
const
|
|
145
|
-
const usageLine = `\n\n—
|
|
261
|
+
const u = res.totalUsage;
|
|
262
|
+
const usageLine = `\n\n— ${u.turns} turns · in ${u.input} · out ${u.output} tokens · run ${state.runId}`;
|
|
146
263
|
return textContent(`${header}\n\n${res.finalOutput}${usageLine}`, !res.ok);
|
|
147
264
|
},
|
|
265
|
+
taskflow_peek: async (args) => {
|
|
266
|
+
const runId = String(args.runId ?? "");
|
|
267
|
+
if (!runId)
|
|
268
|
+
return textContent("taskflow_peek requires `runId`.", true);
|
|
269
|
+
const res = peekRun(cwd, runId, {
|
|
270
|
+
phaseId: typeof args.phaseId === "string" ? args.phaseId : undefined,
|
|
271
|
+
json: args.json === true,
|
|
272
|
+
item: typeof args.item === "number" ? args.item : undefined,
|
|
273
|
+
limit: typeof args.limit === "number" ? args.limit : undefined,
|
|
274
|
+
});
|
|
275
|
+
return textContent(res.text, !res.ok);
|
|
276
|
+
},
|
|
148
277
|
taskflow_list: async () => {
|
|
149
278
|
const flows = listFlows(cwd);
|
|
150
279
|
if (flows.length === 0)
|
|
@@ -157,30 +286,84 @@ export function makeToolHandlers(cwd) {
|
|
|
157
286
|
const saved = getFlow(cwd, name);
|
|
158
287
|
if (!saved)
|
|
159
288
|
return textContent(`No saved flow named "${name}".`, true);
|
|
160
|
-
|
|
289
|
+
// No ```json``` fence: Codex shows text blocks as raw plaintext, so a fence
|
|
290
|
+
// would render as literal backticks. The JSON is already monospaced there.
|
|
291
|
+
return textContent(JSON.stringify(saved.def, null, 2));
|
|
161
292
|
},
|
|
162
293
|
taskflow_verify: async (args) => {
|
|
163
294
|
const def = resolveFlow(cwd, args);
|
|
164
|
-
// Two layers: validateTaskflow catches structural errors (cycles, missing
|
|
165
|
-
// deps, undefined refs); verifyTaskflow adds the deeper static-quality
|
|
166
|
-
// issues. Combine both so the tool matches the `/tf verify` behavior.
|
|
167
295
|
const val = validateTaskflow(def);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
|
|
296
|
+
// verifyTaskflow iterates flow.phases and throws if it isn't an array
|
|
297
|
+
// (e.g. a missing `phases`). Only skip it in that unsafe case; otherwise
|
|
298
|
+
// run it so its static-quality warnings (e.g. terminal-not-final) still
|
|
299
|
+
// surface alongside validateTaskflow's structural errors.
|
|
300
|
+
const phasesIterable = Array.isArray(def.phases);
|
|
301
|
+
const result = phasesIterable
|
|
302
|
+
? verifyTaskflow(def)
|
|
303
|
+
: { ok: false, issues: [] };
|
|
304
|
+
const { errorCount, warningCount, text } = issueBlocks(result.issues, val.errors, val.warnings);
|
|
305
|
+
const passed = val.ok && result.ok && errorCount === 0;
|
|
306
|
+
// Conclusion-first (the plaintext box is short + scrolls): verdict + counts
|
|
307
|
+
// on line 1, deduped detail below.
|
|
308
|
+
const head = passed
|
|
309
|
+
? warningCount
|
|
310
|
+
? `✓ verification PASSED — ${count(warningCount, "warning")}`
|
|
311
|
+
: "✓ verification PASSED"
|
|
312
|
+
: `✗ verification FAILED — ${count(errorCount, "error")}, ${count(warningCount, "warning")}`;
|
|
313
|
+
return textContent(`${head}${text}`, !passed);
|
|
179
314
|
},
|
|
180
315
|
taskflow_compile: async (args) => {
|
|
181
316
|
const def = resolveFlow(cwd, args);
|
|
317
|
+
const val = validateTaskflow(def);
|
|
318
|
+
// compileTaskflow / verifyTaskflow / renderFlowSvg all assume phases is an
|
|
319
|
+
// array of objects that each have a string id (they iterate it and index
|
|
320
|
+
// id.replace(...)). A hard-malformed def (non-array phases, a phase missing
|
|
321
|
+
// its id) would throw, so when the shape isn't renderable we return the
|
|
322
|
+
// structured validation errors as text instead of rendering.
|
|
323
|
+
const phases = def.phases;
|
|
324
|
+
const renderable = Array.isArray(phases) && phases.every((p) => p != null && typeof p.id === "string");
|
|
325
|
+
if (!renderable) {
|
|
326
|
+
const { errorCount, warningCount, text } = issueBlocks([], val.errors, val.warnings);
|
|
327
|
+
const caption = `${def.name ?? "taskflow"} — ${count(errorCount, "error")} · ${count(warningCount, "warning")} · ✗ FAIL`;
|
|
328
|
+
return textContent(`${caption}${text}`, true);
|
|
329
|
+
}
|
|
330
|
+
// Merge structural validation into the compile report. compileTaskflow's
|
|
331
|
+
// own verification.ok is true even for a structurally-invalid (but
|
|
332
|
+
// renderable) flow, so a validate-clean check is what stops a false ✓ PASS.
|
|
333
|
+
// We still render the diagram + outline so such a flow can be inspected
|
|
334
|
+
// visually; truncate coerces non-string fields so the renderer won't throw.
|
|
182
335
|
const result = compileTaskflow(def);
|
|
183
|
-
|
|
336
|
+
const v = result.verification;
|
|
337
|
+
const { errorCount, warningCount, text } = issueBlocks(v.issues, val.errors, val.warnings);
|
|
338
|
+
const passed = val.ok && v.ok && errorCount === 0;
|
|
339
|
+
const status = passed ? "✓ PASS" : "✗ FAIL";
|
|
340
|
+
const caption = `${def.name ?? "taskflow"} — ${count(def.phases?.length ?? 0, "phase")} · ${count(errorCount, "error")} · ${count(warningCount, "warning")} · ${status}`;
|
|
341
|
+
// A text outline that stands on its own — the CLI/TUI can't render images
|
|
342
|
+
// (it shows a bare `<image content>` placeholder), and a vision-less model
|
|
343
|
+
// would otherwise see nothing. Includes the layered DAG + deduped issues.
|
|
344
|
+
const outline = renderFlowOutline(def, v);
|
|
345
|
+
const textReport = `${caption}\n\n${outline}${text}`;
|
|
346
|
+
// Fold validation errors into the issue set the SVG colors by, so node
|
|
347
|
+
// coloring matches the text report (a phase with only a validation error
|
|
348
|
+
// still shows red). Validation messages start with `Phase '<id>':`.
|
|
349
|
+
const mergedVerification = {
|
|
350
|
+
...v,
|
|
351
|
+
ok: passed,
|
|
352
|
+
issues: [
|
|
353
|
+
...v.issues,
|
|
354
|
+
...val.errors.map((message) => {
|
|
355
|
+
const m = /^Phase '([^']+)'/.exec(message);
|
|
356
|
+
return { phaseId: m?.[1], message, severity: "error", category: "ref-integrity" };
|
|
357
|
+
}),
|
|
358
|
+
],
|
|
359
|
+
};
|
|
360
|
+
// Desktop app: the SVG image renders as a real diagram; the outline rides
|
|
361
|
+
// along as its caption/fallback. Oversized graphs skip the image and rely
|
|
362
|
+
// on the text report alone.
|
|
363
|
+
const svg = renderFlowSvg(def, mergedVerification);
|
|
364
|
+
if (svg)
|
|
365
|
+
return imageContent(svgToBase64(svg), "image/svg+xml", [textReport], !passed);
|
|
366
|
+
return textContent(textReport, !passed);
|
|
184
367
|
},
|
|
185
368
|
};
|
|
186
369
|
}
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EACN,cAAc,EACd,eAAe,EACf,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GAKpB,MAAM,eAAe,CAAC;AAEvB,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAW,CAAC;AAUvF;;;;;;;;;;GAUG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IACjD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;;;gFAIgF;AAChF,SAAS,YAAY,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAe,EAAE,OAAO,GAAG,KAAK;IACvF,MAAM,OAAO,GAAmC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAc;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACjC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,MAAM,YAAY,KAAK,GAAG,IAAI,GAAG,CAAC;IACzD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CACnB,MAA2B,EAC3B,cAAwB,EAAE,EAC1B,gBAA0B,EAAE;IAE5B,MAAM,KAAK,GAAG,CAAC,CAAoB,EAAE,EAAE;IACtC,0EAA0E;IAC1E,0EAA0E;IAC1E,8EAA8E;IAC9E,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7F,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,8EAA8E;IAC9E,uEAAuE;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,GAAG,SAAS,EAAE,EAAE,CAAC;AAC5G,CAAC;AAED,mDAAmD;AACnD,SAAS,KAAK,CAAC,CAAS,EAAE,IAAY;IACrC,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,KAAK,GAAc;IACxB;QACC,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACV,gaAAga;QACja,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;gBACrE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;gBAC1F,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;gBACvF,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,+CAA+C,EAAE;aAC9F;SACD;KACD;IACD;QACC,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,kGAAkG;QAC/G,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;KAC5E;IACD;QACC,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,EAAE;YAChF,QAAQ,EAAE,CAAC,MAAM,CAAC;SAClB;KACD;IACD;QACC,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,sHAAsH;QACnI,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B;SACD;KACD;IACD;QACC,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,4LAA4L;QACzM,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B;SACD;KACD;IACD;QACC,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACV,sQAAsQ;QACvQ,WAAW,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;gBAC3G,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;gBAChH,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4DAA4D,EAAE;gBACpG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+DAA+D,EAAE;gBACtG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oDAAoD,EAAE;aAC5F;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACnB;KACD;CACD,CAAC;AAEF,+EAA+E;AAC/E,SAAS,WAAW,CAAC,GAAW,EAAE,MAA2C;IAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,MAAmB,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,wBAAwB,MAAM,CAAC,IAAI,gBAAgB,GAAG,GAAG,CAAC,CAAC;QAC9G,OAAO,KAAK,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,oEAAoE,CAAC,CAAC;AAC9G,CAAC;AAED,SAAS,UAAU,CAAC,GAAa,EAAE,IAA6B,EAAE,GAAW;IAC5E,OAAO;QACN,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM;QAC5B,GAAG;QACH,IAAI;QACJ,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG;KACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC3C,OAAO;QACN,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,OAAO,WAAW,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAEpF,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;YACxC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvF,MAAM,IAAI,GAAgB;gBACzB,GAAG;gBACH,MAAM;gBACN,OAAO,EAAE,mBAAmB,CAAC,OAAO;aACpC,CAAC;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAG,IAAI,CAAC,IAAgC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI;gBAAG,IAAqD,CAAC,iBAAiB,GAAG,WAAW,CAAC;YAEtH,2EAA2E;YAC3E,8EAA8E;YAC9E,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;YACvF,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;oBAC/B,WAAW,GAAG,GAAG,CAAC;oBAClB,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC3D,yEAAyE;gBACzE,0DAA0D;gBAC1D,IAAI,CAAC;oBACJ,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACR,eAAe;gBAChB,CAAC;YACF,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kCAAkC,CAAC;YACnF,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;YACzB,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,MAAM,iBAAiB,KAAK,CAAC,KAAK,EAAE,CAAC;YACzG,OAAO,WAAW,CAAC,GAAG,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK;gBAAE,OAAO,WAAW,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;gBAC/B,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACpE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI;gBACxB,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC3D,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC9D,CAAC,CAAC;YACH,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,aAAa,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC,+CAA+C,CAAC,CAAC;YAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAC7F,OAAO,WAAW,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,OAAO,WAAW,CAAC,wBAAwB,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;YACvE,4EAA4E;YAC5E,2EAA2E;YAC3E,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAClC,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,0DAA0D;YAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAE,GAA4B,CAAC,MAAM,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,cAAc;gBAC5B,CAAC,CAAC,cAAc,CAAC,GAA2C,CAAC;gBAC7D,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAiD,EAAE,CAAC;YAC5E,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,UAAU,KAAK,CAAC,CAAC;YACvD,4EAA4E;YAC5E,mCAAmC;YACnC,MAAM,IAAI,GAAG,MAAM;gBAClB,CAAC,CAAC,YAAY;oBACb,CAAC,CAAC,2BAA2B,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE;oBAC7D,CAAC,CAAC,uBAAuB;gBAC1B,CAAC,CAAC,2BAA2B,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9F,OAAO,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAClC,2EAA2E;YAC3E,yEAAyE;YACzE,4EAA4E;YAC5E,wEAAwE;YACxE,6DAA6D;YAC7D,MAAM,MAAM,GAAI,GAA4B,CAAC,MAAM,CAAC;YACpD,MAAM,UAAU,GACf,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,OAAQ,CAAsB,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YAC3G,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrF,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,UAAU,MAAM,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC;gBACzH,OAAO,WAAW,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,yEAAyE;YACzE,mEAAmE;YACnE,4EAA4E;YAC5E,wEAAwE;YACxE,4EAA4E;YAC5E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,KAAK,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,UAAU,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,MAAM,EAAE,CAAC;YACzK,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,GAAG,IAAI,EAAE,CAAC;YACrD,uEAAuE;YACvE,yEAAyE;YACzE,oEAAoE;YACpE,MAAM,kBAAkB,GAAG;gBAC1B,GAAG,CAAC;gBACJ,EAAE,EAAE,MAAM;gBACV,MAAM,EAAE;oBACP,GAAG,CAAC,CAAC,MAAM;oBACX,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC7B,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAgB,EAAE,QAAQ,EAAE,eAAwB,EAAE,CAAC;oBACrG,CAAC,CAAC;iBACF;aACD,CAAC;YACF,0EAA0E;YAC1E,0EAA0E;YAC1E,4BAA4B;YAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACnD,IAAI,GAAG;gBAAE,OAAO,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACvF,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;KACD,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,OAAO;QACN,UAAU,EAAE,GAAG,EAAE;YAChB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO;gBACN,eAAe,EAAE,gBAAgB;gBACjC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC/C,UAAU,EAAE,WAAW;aACvB,CAAC;QACH,CAAC;QACD,0DAA0D;QAC1D,2BAA2B,EAAE,GAAG,EAAE;YACjC,WAAW,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAChB,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACtC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAA2D,CAAC;YACnF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,KAAK,WAAW,CAAC,CAAC,sDAAsD;YACxE,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;KACD,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,OAAO,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render a taskflow DAG for the Codex hosts, in two forms:
|
|
3
|
+
*
|
|
4
|
+
* - `renderFlowSvg` — a self-contained SVG "card" for the Codex **desktop
|
|
5
|
+
* app**, which renders an MCP `image` content block
|
|
6
|
+
* as `<img src="data:…">` in Chromium (an inline SVG
|
|
7
|
+
* data URI shows as an actual diagram).
|
|
8
|
+
* - `renderFlowOutline` — a compact monospace ASCII outline for the Codex
|
|
9
|
+
* **CLI/TUI**, which cannot render images: the Rust
|
|
10
|
+
* binary substitutes a bare `<image content>`
|
|
11
|
+
* placeholder for image blocks, so a picture is
|
|
12
|
+
* useless there (and a vision-less model would see
|
|
13
|
+
* only that placeholder). The outline is plain text
|
|
14
|
+
* that reads in the terminal AND feeds the model.
|
|
15
|
+
*
|
|
16
|
+
* We can't tell the two hosts apart from inside the server (every Codex
|
|
17
|
+
* frontend connects with the same MCP client id, `codex-mcp-client`), so
|
|
18
|
+
* `taskflow_compile` returns BOTH blocks: the desktop app shows the image and
|
|
19
|
+
* ignores the trailing text, while the CLI/TUI shows the text and renders the
|
|
20
|
+
* image as a harmless placeholder. One payload, correct on every host.
|
|
21
|
+
*
|
|
22
|
+
* This is host presentation, so it lives in the codex adapter — core keeps its
|
|
23
|
+
* portable Mermaid/markdown artifact (`compileTaskflow`) and its zero-runtime
|
|
24
|
+
* -deps guarantee. Both renderers reuse core's exported `topoLayers` (layout)
|
|
25
|
+
* and `dependenciesOf` (edges) so they share the engine's exact DAG semantics.
|
|
26
|
+
* Pure functions, no I/O.
|
|
27
|
+
*/
|
|
28
|
+
import { type Taskflow, type VerificationResult } from "taskflow-core";
|
|
29
|
+
/** Above this phase count the card stops being legible once scaled — the caller
|
|
30
|
+
* should fall back to the text report instead of embedding a postage stamp. */
|
|
31
|
+
export declare const SVG_PHASE_LIMIT = 60;
|
|
32
|
+
/**
|
|
33
|
+
* Render `flow` (annotated with `verification`) as an SVG string. Layered
|
|
34
|
+
* top-down using core's `topoLayers`; edges follow `dependenciesOf`. Returns a
|
|
35
|
+
* complete `<svg …>…</svg>` document (no XML prolog — it's inlined as a data
|
|
36
|
+
* URI). Returns `null` when the flow is too large to render legibly.
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderFlowSvg(flow: Taskflow, verification: VerificationResult): string | null;
|
|
39
|
+
/** Base64 of an SVG string, for an MCP `image` content block (`image/svg+xml`). */
|
|
40
|
+
export declare function svgToBase64(svg: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Render the DAG as a compact monospace outline: one line per phase, grouped by
|
|
43
|
+
* topological layer (phases in the same layer run concurrently), each showing
|
|
44
|
+
* its id, type tag, agent, and upstream deps. This is the CLI/TUI counterpart
|
|
45
|
+
* to `renderFlowSvg` — it degrades to readable text where images can't render,
|
|
46
|
+
* and (unlike an image placeholder) still tells a vision-less model the shape
|
|
47
|
+
* of the graph. Deterministic; issue markers mirror the SVG overlay.
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderFlowOutline(flow: Taskflow, verification: VerificationResult): string;
|
|
50
|
+
//# sourceMappingURL=svg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../src/mcp/svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAMN,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAEvB,MAAM,eAAe,CAAC;AAmBvB;gFACgF;AAChF,eAAO,MAAM,eAAe,KAAK,CAAC;AAqHlC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CA2H7F;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAYD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,GAAG,MAAM,CA0B1F"}
|