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.
@@ -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 Mermaid diagram + verify report
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
  /**
@@ -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;AA2H1E;;;;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,CAoEjH;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"}
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"}
@@ -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 Mermaid diagram + verify report
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 { discoverAgents, executeTaskflow, getFlow, listFlows, compileTaskflow, verifyTaskflow, desugar, isShorthand, validateTaskflow, readSubagentSettings, } from "taskflow-core";
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: "pi-taskflow", title: "pi-taskflow", version: "0.0.28" };
26
- /** MCP tools/call content block (text only — sufficient for our outputs). */
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 Mermaid flowchart + a static verification report (markdown). No execution. Provide `name` or `define`.",
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: `mcp-${def.name ?? "flow"}-${Date.now()}`,
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
- const res = await executeTaskflow(state, deps);
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 usage = res.totalUsage;
145
- const usageLine = `\n\n— usage: ${usage.turns} turns, in ${usage.input}, out ${usage.output}`;
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
- return textContent("```json\n" + JSON.stringify(saved.def, null, 2) + "\n```");
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
- const result = verifyTaskflow(def);
169
- const errors = result.issues.filter((i) => i.severity === "error");
170
- const warnings = result.issues.filter((i) => i.severity === "warning");
171
- const passed = val.ok && result.ok && errors.length === 0;
172
- const ok = passed ? "✓ verification PASSED" : "✗ verification FAILED";
173
- const fmt = (i) => `- ${i.category}${i.phaseId ? ` [${i.phaseId}]` : ""}: ${i.message}`;
174
- const valErrs = val.errors.length ? `\n\nErrors:\n- ${val.errors.join("\n- ")}` : "";
175
- const errs = errors.length ? `${valErrs ? "" : "\n\nErrors:"}\n${errors.map(fmt).join("\n")}` : "";
176
- const allWarn = [...val.warnings.map((w) => `- ${w}`), ...warnings.map(fmt)];
177
- const warns = allWarn.length ? `\n\nWarnings:\n${allWarn.join("\n")}` : "";
178
- return textContent(`${ok}${valErrs}${errs}${warns}`, !passed);
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
- return textContent(result.markdown, !result.verification.ok);
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
  }
@@ -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":"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"}
@@ -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"}