taskflow-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/agents/analyst.md +30 -0
  2. package/dist/agents/critic.md +31 -0
  3. package/dist/agents/doc-writer.md +43 -0
  4. package/dist/agents/executor-code.md +36 -0
  5. package/dist/agents/executor-fast.md +26 -0
  6. package/dist/agents/executor-ui.md +35 -0
  7. package/dist/agents/executor.md +29 -0
  8. package/dist/agents/final-arbiter.md +29 -0
  9. package/dist/agents/plan-arbiter.md +35 -0
  10. package/dist/agents/planner.md +30 -0
  11. package/dist/agents/recover.md +28 -0
  12. package/dist/agents/reviewer.md +37 -0
  13. package/dist/agents/risk-reviewer.md +37 -0
  14. package/dist/agents/scout.md +51 -0
  15. package/dist/agents/security-reviewer.md +39 -0
  16. package/dist/agents/test-engineer.md +31 -0
  17. package/dist/agents/verifier.md +29 -0
  18. package/dist/agents/visual-explorer.md +32 -0
  19. package/dist/agents.d.ts +55 -0
  20. package/dist/agents.d.ts.map +1 -0
  21. package/dist/agents.js +265 -0
  22. package/dist/agents.js.map +1 -0
  23. package/dist/cache.d.ts +57 -0
  24. package/dist/cache.d.ts.map +1 -0
  25. package/dist/cache.js +256 -0
  26. package/dist/cache.js.map +1 -0
  27. package/dist/compile.d.ts +37 -0
  28. package/dist/compile.d.ts.map +1 -0
  29. package/dist/compile.js +324 -0
  30. package/dist/compile.js.map +1 -0
  31. package/dist/context-store.d.ts +142 -0
  32. package/dist/context-store.d.ts.map +1 -0
  33. package/dist/context-store.js +383 -0
  34. package/dist/context-store.js.map +1 -0
  35. package/dist/detached-runner.d.ts +12 -0
  36. package/dist/detached-runner.d.ts.map +1 -0
  37. package/dist/detached-runner.js +68 -0
  38. package/dist/detached-runner.js.map +1 -0
  39. package/dist/flowir/hash.d.ts +51 -0
  40. package/dist/flowir/hash.d.ts.map +1 -0
  41. package/dist/flowir/hash.js +90 -0
  42. package/dist/flowir/hash.js.map +1 -0
  43. package/dist/flowir/index.d.ts +43 -0
  44. package/dist/flowir/index.d.ts.map +1 -0
  45. package/dist/flowir/index.js +62 -0
  46. package/dist/flowir/index.js.map +1 -0
  47. package/dist/flowir/meta.d.ts +103 -0
  48. package/dist/flowir/meta.d.ts.map +1 -0
  49. package/dist/flowir/meta.js +19 -0
  50. package/dist/flowir/meta.js.map +1 -0
  51. package/dist/flowir/phasefp.d.ts +55 -0
  52. package/dist/flowir/phasefp.d.ts.map +1 -0
  53. package/dist/flowir/phasefp.js +123 -0
  54. package/dist/flowir/phasefp.js.map +1 -0
  55. package/dist/flowir/translate.d.ts +37 -0
  56. package/dist/flowir/translate.d.ts.map +1 -0
  57. package/dist/flowir/translate.js +137 -0
  58. package/dist/flowir/translate.js.map +1 -0
  59. package/dist/frontmatter.d.ts +21 -0
  60. package/dist/frontmatter.d.ts.map +1 -0
  61. package/dist/frontmatter.js +107 -0
  62. package/dist/frontmatter.js.map +1 -0
  63. package/dist/host/runner-types.d.ts +98 -0
  64. package/dist/host/runner-types.d.ts.map +1 -0
  65. package/dist/host/runner-types.js +21 -0
  66. package/dist/host/runner-types.js.map +1 -0
  67. package/dist/index.d.ts +26 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +30 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/interpolate.d.ts +52 -0
  72. package/dist/interpolate.d.ts.map +1 -0
  73. package/dist/interpolate.js +418 -0
  74. package/dist/interpolate.js.map +1 -0
  75. package/dist/paths.d.ts +23 -0
  76. package/dist/paths.d.ts.map +1 -0
  77. package/dist/paths.js +43 -0
  78. package/dist/paths.js.map +1 -0
  79. package/dist/runner-core.d.ts +49 -0
  80. package/dist/runner-core.d.ts.map +1 -0
  81. package/dist/runner-core.js +208 -0
  82. package/dist/runner-core.js.map +1 -0
  83. package/dist/runtime.d.ts +234 -0
  84. package/dist/runtime.d.ts.map +1 -0
  85. package/dist/runtime.js +2284 -0
  86. package/dist/runtime.js.map +1 -0
  87. package/dist/schema.d.ts +257 -0
  88. package/dist/schema.d.ts.map +1 -0
  89. package/dist/schema.js +795 -0
  90. package/dist/schema.js.map +1 -0
  91. package/dist/stale.d.ts +72 -0
  92. package/dist/stale.d.ts.map +1 -0
  93. package/dist/stale.js +179 -0
  94. package/dist/stale.js.map +1 -0
  95. package/dist/store.d.ts +237 -0
  96. package/dist/store.d.ts.map +1 -0
  97. package/dist/store.js +761 -0
  98. package/dist/store.js.map +1 -0
  99. package/dist/typebox-helpers.d.ts +15 -0
  100. package/dist/typebox-helpers.d.ts.map +1 -0
  101. package/dist/typebox-helpers.js +19 -0
  102. package/dist/typebox-helpers.js.map +1 -0
  103. package/dist/usage.d.ts +21 -0
  104. package/dist/usage.d.ts.map +1 -0
  105. package/dist/usage.js +33 -0
  106. package/dist/usage.js.map +1 -0
  107. package/dist/verify.d.ts +38 -0
  108. package/dist/verify.d.ts.map +1 -0
  109. package/dist/verify.js +324 -0
  110. package/dist/verify.js.map +1 -0
  111. package/dist/workspace.d.ts +64 -0
  112. package/dist/workspace.d.ts.map +1 -0
  113. package/dist/workspace.js +178 -0
  114. package/dist/workspace.js.map +1 -0
  115. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Compile a taskflow DAG to portable artifacts — zero-token, no LLM.
3
+ *
4
+ * `compileTaskflow` turns the declarative graph into:
5
+ * - a **Mermaid `flowchart`** that GitHub / GitLab / many markdown viewers
6
+ * render natively, so the DAG you declared can be screenshotted, pasted
7
+ * into a PR/issue/README, and diffed as text;
8
+ * - a **verification report** (the existing `verifyTaskflow` passes) whose
9
+ * issues are *overlaid onto the diagram* — a phase with an error is painted
10
+ * red, a warning amber — so the picture and the problems are one artifact.
11
+ *
12
+ * This is the visualization leg of the project thesis ("the plan is data, so it
13
+ * can be verified, visualized, and replayed"): the same JSON renders a graph and
14
+ * a structural audit without spending a token. It is a pure function — no I/O.
15
+ */
16
+ import type { Taskflow } from "./schema.ts";
17
+ import { type VerificationResult } from "./verify.ts";
18
+ export interface CompileResult {
19
+ /** A Mermaid `flowchart` source block (no fences). */
20
+ mermaid: string;
21
+ /** The static verification result the diagram is annotated with. */
22
+ verification: VerificationResult;
23
+ /** A self-contained markdown document: diagram (fenced) + verification report. */
24
+ markdown: string;
25
+ }
26
+ export interface CompileOptions {
27
+ /** Diagram direction. Default "TD" (top-down). "LR" for wide fan-outs. */
28
+ direction?: "TD" | "LR";
29
+ /** Document title (defaults to the flow name). */
30
+ title?: string;
31
+ }
32
+ /**
33
+ * Compile a (already schema-valid) taskflow into a Mermaid diagram + verification
34
+ * report. Pure function — zero tokens, no LLM, no I/O.
35
+ */
36
+ export declare function compileTaskflow(flow: Taskflow, opts?: CompileOptions): CompileResult;
37
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKnD,OAAO,EAA0C,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAM9F,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,YAAY,EAAE,kBAAkB,CAAC;IACjC,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAuSD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CA8BxF"}
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Compile a taskflow DAG to portable artifacts — zero-token, no LLM.
3
+ *
4
+ * `compileTaskflow` turns the declarative graph into:
5
+ * - a **Mermaid `flowchart`** that GitHub / GitLab / many markdown viewers
6
+ * render natively, so the DAG you declared can be screenshotted, pasted
7
+ * into a PR/issue/README, and diffed as text;
8
+ * - a **verification report** (the existing `verifyTaskflow` passes) whose
9
+ * issues are *overlaid onto the diagram* — a phase with an error is painted
10
+ * red, a warning amber — so the picture and the problems are one artifact.
11
+ *
12
+ * This is the visualization leg of the project thesis ("the plan is data, so it
13
+ * can be verified, visualized, and replayed"): the same JSON renders a graph and
14
+ * a structural audit without spending a token. It is a pure function — no I/O.
15
+ */
16
+ import { LOOP_DEFAULT_MAX_ITERATIONS, TOURNAMENT_DEFAULT_VARIANTS, } from "./schema.js";
17
+ import { verifyTaskflow } from "./verify.js";
18
+ // ---------------------------------------------------------------------------
19
+ // Label / id sanitization
20
+ // ---------------------------------------------------------------------------
21
+ /** Mermaid node ids must be free of spaces and syntax chars. Phase ids are
22
+ * already `[A-Za-z0-9_-]`-ish, but we defensively map anything else to `_`. */
23
+ function nodeId(phaseId) {
24
+ const cleaned = phaseId.replace(/[^A-Za-z0-9_]/g, "_");
25
+ // A leading digit is legal in Mermaid ids, but prefix to avoid edge-case
26
+ // parsers and keep ids stable/unique.
27
+ return /^[A-Za-z_]/.test(cleaned) ? cleaned : `p_${cleaned}`;
28
+ }
29
+ /** Build a stable, collision-free mapping from raw phase ids to Mermaid node
30
+ * ids. Two distinct raw ids can sanitize to the same node id (e.g.
31
+ * `audit-each` and `audit_each` both collapse to `audit_each`); we
32
+ * disambiguate by appending `_<n>` so every phase renders as its own node and
33
+ * edges never form accidental self-loops. The map covers every phase id plus
34
+ * every id referenced in `dependsOn`, so an edge resolves to the same node as
35
+ * the definition. Deterministic — input order is preserved. */
36
+ function buildNodeIds(phases) {
37
+ const idMap = new Map();
38
+ const used = new Set();
39
+ const ordered = [];
40
+ const seen = new Set();
41
+ for (const p of phases) {
42
+ if (seen.has(p.id))
43
+ continue;
44
+ seen.add(p.id);
45
+ ordered.push(p.id);
46
+ }
47
+ for (const p of phases) {
48
+ for (const d of p.dependsOn ?? []) {
49
+ if (!seen.has(d)) {
50
+ seen.add(d);
51
+ ordered.push(d);
52
+ }
53
+ }
54
+ }
55
+ for (const raw of ordered) {
56
+ const base = nodeId(raw);
57
+ let safe = base;
58
+ let n = 2;
59
+ while (used.has(safe)) {
60
+ safe = `${base}_${n}`;
61
+ n++;
62
+ }
63
+ used.add(safe);
64
+ idMap.set(raw, safe);
65
+ }
66
+ return idMap;
67
+ }
68
+ /** Escape text for use inside a Mermaid double-quoted label. Mermaid uses HTML
69
+ * entities inside quoted strings; quotes and angle brackets must be encoded,
70
+ * and newlines become `<br/>`. */
71
+ function label(text) {
72
+ return text
73
+ .replace(/&/g, "&amp;")
74
+ .replace(/"/g, "&quot;")
75
+ .replace(/</g, "&lt;")
76
+ .replace(/>/g, "&gt;")
77
+ .replace(/\\/g, "&#92;")
78
+ .replace(/\r?\n/g, "<br/>");
79
+ }
80
+ /** Truncate a task prompt to a single readable line for the node body. */
81
+ function summarize(text, max = 48) {
82
+ if (!text)
83
+ return "";
84
+ const firstLine = text.replace(/\s+/g, " ").trim();
85
+ return firstLine.length > max ? `${firstLine.slice(0, max - 1)}…` : firstLine;
86
+ }
87
+ /** Escape a free-form string for use as inline markdown text (titles,
88
+ * descriptions, report fields). Collapses whitespace to a single space so a
89
+ * multi-line name/description can't break out of a heading or blockquote, and
90
+ * neutralizes characters that start markdown constructs: backticks (code
91
+ * spans), brackets (links/images), angle brackets (raw HTML), and backslashes
92
+ * (escape sequences). */
93
+ function mdInline(text) {
94
+ if (!text)
95
+ return "";
96
+ return text
97
+ .replace(/\s+/g, " ")
98
+ .trim()
99
+ .replace(/\\/g, "\\\\")
100
+ .replace(/`/g, "\\`")
101
+ .replace(/\[/g, "\\[")
102
+ .replace(/\]/g, "\\]")
103
+ .replace(/</g, "&lt;")
104
+ .replace(/>/g, "&gt;");
105
+ }
106
+ // ---------------------------------------------------------------------------
107
+ // Per-type node rendering
108
+ // ---------------------------------------------------------------------------
109
+ /** A short type tag shown above the task summary so the shape is unambiguous
110
+ * even in monochrome renders. */
111
+ function typeTag(p) {
112
+ switch (p.type) {
113
+ case "parallel":
114
+ return `▦ parallel ×${p.branches?.length ?? 0}`;
115
+ case "map":
116
+ return `⇉ map over ${p.over ?? "?"}`;
117
+ case "gate":
118
+ return p.eval?.length ? `◇ gate (+${p.eval.length} eval)` : "◇ gate";
119
+ case "reduce":
120
+ return `▽ reduce ←${p.from?.length ?? 0}`;
121
+ case "approval":
122
+ return "⏸ approval";
123
+ case "flow":
124
+ return p.use ? `⊞ flow: ${p.use}` : "⊞ flow (inline)";
125
+ case "loop":
126
+ return `↻ loop ≤${p.maxIterations ?? LOOP_DEFAULT_MAX_ITERATIONS}`;
127
+ case "tournament":
128
+ return `🏆 tournament ×${p.variants ?? (p.branches?.length || TOURNAMENT_DEFAULT_VARIANTS)}`;
129
+ default:
130
+ return "▸ agent";
131
+ }
132
+ }
133
+ /** The body text inside a node: id, type tag, a task summary, agent. */
134
+ function nodeBody(p) {
135
+ const lines = [];
136
+ lines.push(`<b>${label(p.id)}</b>${p.final ? " ★" : ""}`);
137
+ lines.push(label(typeTag(p)));
138
+ const summary = p.type === "reduce" || p.type === "parallel"
139
+ ? summarize(p.task) // may be empty for these
140
+ : summarize(p.task ?? p.judge);
141
+ if (summary)
142
+ lines.push(label(summary));
143
+ if (p.agent)
144
+ lines.push(label(`@${p.agent}`));
145
+ return lines.join("<br/>");
146
+ }
147
+ /** Wrap the body in the Mermaid shape that matches the phase kind. Distinct
148
+ * shapes make the control-flow role readable at a glance:
149
+ * - agent → rectangle
150
+ * - parallel → subroutine (parallel fan-out)
151
+ * - map → subroutine (dynamic fan-out)
152
+ * - flow → subroutine (nested DAG)
153
+ * - reduce → trapezoid (many → one)
154
+ * - gate → rhombus (decision)
155
+ * - approval → double-circle (human stop)
156
+ * - loop → stadium (cyclic)
157
+ * - tournament → hexagon (compete)
158
+ */
159
+ function nodeShape(p, idMap) {
160
+ const id = idMap.get(p.id) ?? p.id;
161
+ const body = `"${nodeBody(p)}"`;
162
+ switch (p.type) {
163
+ case "parallel":
164
+ case "map":
165
+ case "flow":
166
+ return `${id}[[${body}]]`;
167
+ case "reduce":
168
+ return `${id}[/${body}\\]`;
169
+ case "gate":
170
+ return `${id}{${body}}`;
171
+ case "approval":
172
+ return `${id}(((${body})))`;
173
+ case "loop":
174
+ return `${id}([${body}])`;
175
+ case "tournament":
176
+ return `${id}{{${body}}}`;
177
+ default:
178
+ return `${id}[${body}]`;
179
+ }
180
+ }
181
+ // ---------------------------------------------------------------------------
182
+ // Edge rendering
183
+ // ---------------------------------------------------------------------------
184
+ /** Build the directed edges from `dependsOn`. A `when` guard becomes an edge
185
+ * label; a `join: "any"` dependency is drawn dotted (races, not waits-all). */
186
+ function edges(phases, idMap) {
187
+ const known = new Set(phases.map((p) => p.id));
188
+ const out = [];
189
+ for (const p of phases) {
190
+ const deps = p.dependsOn ?? [];
191
+ for (const d of deps) {
192
+ if (!known.has(d))
193
+ continue; // dangling ref — schema/verify reports it
194
+ const from = idMap.get(d) ?? d;
195
+ const to = idMap.get(p.id) ?? p.id;
196
+ const guard = p.when ? `|"${label(summarize(p.when, 40))}"|` : "";
197
+ // 'any' join: this phase fires on the FIRST dep — draw dotted so the
198
+ // race semantics are visible.
199
+ const arrow = p.join === "any" ? "-.->" : "-->";
200
+ out.push(`${from} ${arrow}${guard} ${to}`);
201
+ }
202
+ }
203
+ return out;
204
+ }
205
+ // ---------------------------------------------------------------------------
206
+ // Issue overlay
207
+ // ---------------------------------------------------------------------------
208
+ const CLASS_ERROR = "tfError";
209
+ const CLASS_WARN = "tfWarn";
210
+ const CLASS_FINAL = "tfFinal";
211
+ /** Map each phase id to its worst severity so the node can be painted. */
212
+ function severityByPhase(issues) {
213
+ const m = new Map();
214
+ for (const i of issues) {
215
+ if (!i.phaseId)
216
+ continue;
217
+ const prev = m.get(i.phaseId);
218
+ if (i.severity === "error" || prev === undefined)
219
+ m.set(i.phaseId, i.severity);
220
+ }
221
+ return m;
222
+ }
223
+ // ---------------------------------------------------------------------------
224
+ // Mermaid assembly
225
+ // ---------------------------------------------------------------------------
226
+ function buildMermaid(flow, verification, opts) {
227
+ const phases = flow.phases ?? [];
228
+ const dir = opts.direction ?? "TD";
229
+ const idMap = buildNodeIds(phases);
230
+ const sev = severityByPhase(verification.issues);
231
+ const lines = [];
232
+ lines.push(`flowchart ${dir}`);
233
+ // Nodes
234
+ for (const p of phases)
235
+ lines.push(`\t${nodeShape(p, idMap)}`);
236
+ // Edges
237
+ const e = edges(phases, idMap);
238
+ if (e.length) {
239
+ lines.push("");
240
+ for (const edge of e)
241
+ lines.push(`\t${edge}`);
242
+ }
243
+ // Class definitions (issue overlay + final marker). Colors are chosen to
244
+ // read on both light and dark GitHub themes.
245
+ lines.push("");
246
+ lines.push(`\tclassDef ${CLASS_ERROR} fill:#3b0d0d,stroke:#ef4444,stroke-width:2px,color:#fecaca;`);
247
+ lines.push(`\tclassDef ${CLASS_WARN} fill:#3a2e05,stroke:#f59e0b,stroke-width:2px,color:#fde68a;`);
248
+ lines.push(`\tclassDef ${CLASS_FINAL} stroke:#43d9ad,stroke-width:3px;`);
249
+ // Final phases get a distinct border (unless they already carry an issue,
250
+ // where the issue color wins — a final node that's broken should read red).
251
+ const finals = phases.filter((p) => p.final && !sev.has(p.id)).map((p) => idMap.get(p.id) ?? p.id);
252
+ if (finals.length)
253
+ lines.push(`\tclass ${finals.join(",")} ${CLASS_FINAL};`);
254
+ const errNodes = [...sev].filter(([, s]) => s === "error").map(([id]) => idMap.get(id) ?? id);
255
+ const warnNodes = [...sev].filter(([, s]) => s === "warning").map(([id]) => idMap.get(id) ?? id);
256
+ if (errNodes.length)
257
+ lines.push(`\tclass ${errNodes.join(",")} ${CLASS_ERROR};`);
258
+ if (warnNodes.length)
259
+ lines.push(`\tclass ${warnNodes.join(",")} ${CLASS_WARN};`);
260
+ return lines.join("\n");
261
+ }
262
+ // ---------------------------------------------------------------------------
263
+ // Verification report (markdown)
264
+ // ---------------------------------------------------------------------------
265
+ function buildReport(flow, verification) {
266
+ const lines = [];
267
+ const errors = verification.issues.filter((i) => i.severity === "error");
268
+ const warnings = verification.issues.filter((i) => i.severity === "warning");
269
+ const phaseCount = flow.phases?.length ?? 0;
270
+ lines.push(`**Phases:** ${phaseCount} · **Errors:** ${errors.length} · **Warnings:** ${warnings.length} · **Status:** ${verification.ok ? "✅ PASS" : "❌ FAIL"}`);
271
+ if (verification.issues.length === 0) {
272
+ lines.push("");
273
+ lines.push("✅ No structural issues found — the DAG is well-formed (no cycles, dead-ends, gate exhaustion, ref or budget problems).");
274
+ return lines.join("\n");
275
+ }
276
+ if (errors.length) {
277
+ lines.push("");
278
+ lines.push(`### ❌ Errors (${errors.length})`);
279
+ for (const e of errors)
280
+ lines.push(`- **${e.category}**${e.phaseId ? ` \`${mdInline(e.phaseId)}\`` : ""}: ${mdInline(e.message)}`);
281
+ }
282
+ if (warnings.length) {
283
+ lines.push("");
284
+ lines.push(`### ⚠️ Warnings (${warnings.length})`);
285
+ for (const w of warnings)
286
+ lines.push(`- **${w.category}**${w.phaseId ? ` \`${mdInline(w.phaseId)}\`` : ""}: ${mdInline(w.message)}`);
287
+ }
288
+ return lines.join("\n");
289
+ }
290
+ // ---------------------------------------------------------------------------
291
+ // Entry point
292
+ // ---------------------------------------------------------------------------
293
+ /**
294
+ * Compile a (already schema-valid) taskflow into a Mermaid diagram + verification
295
+ * report. Pure function — zero tokens, no LLM, no I/O.
296
+ */
297
+ export function compileTaskflow(flow, opts = {}) {
298
+ const verification = verifyTaskflow({
299
+ name: flow.name ?? "taskflow",
300
+ phases: flow.phases ?? [],
301
+ budget: flow.budget,
302
+ concurrency: flow.concurrency,
303
+ });
304
+ const mermaid = buildMermaid(flow, verification, opts);
305
+ const report = buildReport(flow, verification);
306
+ const title = opts.title ?? flow.name ?? "taskflow";
307
+ const mdLines = [];
308
+ mdLines.push(`# Taskflow: ${mdInline(title)}`);
309
+ mdLines.push("");
310
+ if (flow.description)
311
+ mdLines.push(`> ${mdInline(flow.description)}`);
312
+ mdLines.push("```mermaid");
313
+ mdLines.push(mermaid);
314
+ mdLines.push("```");
315
+ mdLines.push("");
316
+ mdLines.push("## Verification");
317
+ mdLines.push("");
318
+ mdLines.push(report);
319
+ mdLines.push("");
320
+ mdLines.push("> Legend: ▸ agent · ▦ parallel · ⇉ map · ◇ gate · ▽ reduce · ⏸ approval · ⊞ flow · ↻ loop · 🏆 tournament · ★ final. Red = error, amber = warning, green border = final. Dotted edge = `join:any`. Generated by `pi-taskflow compile` — 0 tokens.");
321
+ const markdown = mdLines.join("\n");
322
+ return { mermaid, verification, markdown };
323
+ }
324
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Shared Context Tree — the file-based blackboard + supervision-tree store.
3
+ *
4
+ * This module is the IPC substrate that lets isolated subagent processes share
5
+ * context with each other (a horizontal blackboard) and report results upward
6
+ * so a parent can react (a vertical supervision tree). It deliberately reuses
7
+ * the SAME atomic-write + file-lock primitives as the run store (`store.ts`),
8
+ * so it inherits the project's "all file ops are atomic" invariant for free.
9
+ *
10
+ * On-disk layout, rooted at PI_TASKFLOW_CTX_DIR (one directory per run):
11
+ *
12
+ * <ctxDir>/
13
+ * ├── tree.json the node tree (who spawned whom + status)
14
+ * ├── tree.json.lock lock guarding tree.json RMW cycles
15
+ * ├── findings/
16
+ * │ ├── <nodeId>.json findings written by one node (last-write-wins per key)
17
+ * │ └── <nodeId>.json.lock
18
+ * ├── reports/
19
+ * │ └── <nodeId>.json a node's upward report ({summary, structured?})
20
+ * └── pending/
21
+ * └── <nodeId>-<seq>.json a ctx_spawn intent the runtime will pick up
22
+ *
23
+ * Why per-node findings files (not one shared findings.json): sibling subagents
24
+ * run concurrently. Giving each node its OWN file means concurrent writers never
25
+ * contend on the same lock — a node only locks its own file. A reader unions the
26
+ * relevant nodes' files (its ancestors + completed siblings). This is the same
27
+ * "shard by writer" trick the run index uses to avoid a global write bottleneck.
28
+ */
29
+ /** Max bytes for a single findings value (after JSON.stringify). */
30
+ export declare const MAX_VALUE_BYTES: number;
31
+ /** Max bytes for a single report summary string. */
32
+ export declare const MAX_REPORT_BYTES: number;
33
+ /** Max bytes for a report's structured payload (after JSON.stringify). */
34
+ export declare const MAX_STRUCTURED_BYTES: number;
35
+ /** Max bytes for a single ctx_spawn task prompt. */
36
+ export declare const MAX_TASK_BYTES: number;
37
+ /** Max number of keys one node may write. */
38
+ export declare const MAX_KEYS_PER_NODE = 256;
39
+ /** Max assignments a single ctx_spawn call may queue. */
40
+ export declare const MAX_SPAWN_ASSIGNMENTS = 16;
41
+ /** Max bytes for a single ctx_spawn `subflow` payload (after JSON.stringify). */
42
+ export declare const MAX_SUBFLOW_BYTES: number;
43
+ export declare function isValidKey(key: string): boolean;
44
+ export type NodeStatus = "running" | "done" | "failed";
45
+ /** One node in the supervision tree (one subagent task). */
46
+ export interface TreeNode {
47
+ nodeId: string;
48
+ phaseId: string;
49
+ parentNodeId?: string;
50
+ status: NodeStatus;
51
+ createdAt: number;
52
+ updatedAt: number;
53
+ }
54
+ export interface ContextTree {
55
+ nodes: TreeNode[];
56
+ }
57
+ /** A node's findings — a flat string→JSON map. Last-write-wins per key. */
58
+ export type FindingsMap = Record<string, unknown>;
59
+ export interface NodeReport {
60
+ nodeId: string;
61
+ summary: string;
62
+ structured?: unknown;
63
+ at: number;
64
+ }
65
+ /**
66
+ * A queued ctx_spawn intent, picked up by the runtime after the node finishes.
67
+ * Each assignment is EITHER a flat task OR an inline sub-flow (DAG) — never both.
68
+ *
69
+ * - `task` : a single prompt string (the agent named by `agent` runs it).
70
+ * - `subflow` : an inline Taskflow ({phases:[...]} or a bare phases array)
71
+ * the runtime validates + runs as a nested sub-flow. Inner
72
+ * phases without their own `agent` fall back to `defaultAgent`.
73
+ *
74
+ * `agent` (flat) means "who executes this task"; `defaultAgent` (subflow) means
75
+ * "fallback agent for inner phases" — different semantics, hence different fields.
76
+ */
77
+ export interface SpawnAssignment {
78
+ task?: string;
79
+ agent?: string;
80
+ subflow?: unknown;
81
+ defaultAgent?: string;
82
+ }
83
+ export interface PendingSpawn {
84
+ parentNodeId: string;
85
+ assignments: SpawnAssignment[];
86
+ at: number;
87
+ }
88
+ /** Build the per-run ctx directory path under a runs root. */
89
+ export declare function ctxDirFor(runsRoot: string, runId: string): string;
90
+ /**
91
+ * Ensure the ctx directory tree exists. Idempotent; safe to call repeatedly.
92
+ * Returns the same ctxDir for chaining.
93
+ */
94
+ export declare function initCtxDir(ctxDir: string): string;
95
+ export declare function readTree(ctxDir: string): ContextTree;
96
+ /**
97
+ * Register (or update) a node in the tree. IDEMPOTENT — upserts by nodeId so a
98
+ * resume that re-runs a phase does not duplicate tree entries (which would
99
+ * double-count ancestor findings). This is the C3 resume-safety fix.
100
+ */
101
+ export declare function registerNode(ctxDir: string, nodeId: string, phaseId: string, parentNodeId: string | undefined, status?: NodeStatus): void;
102
+ export declare function setNodeStatus(ctxDir: string, nodeId: string, status: NodeStatus): void;
103
+ /** Compute a node's depth (root = 0) by walking the parent chain. */
104
+ export declare function nodeDepth(tree: ContextTree, nodeId: string): number;
105
+ /** Return the ancestor chain nodeIds for a node (excluding itself), in nearest-first order (parent, grandparent, …). */
106
+ export declare function ancestorIds(tree: ContextTree, nodeId: string): string[];
107
+ export declare function readNodeFindings(ctxDir: string, nodeId: string): FindingsMap;
108
+ /**
109
+ * Write one finding (last-write-wins per key) into THIS node's findings file.
110
+ * Only locks the node's own file → concurrent siblings never contend.
111
+ * Throws on bad key / oversized value / too many keys (caller surfaces as tool error).
112
+ */
113
+ export declare function writeFinding(ctxDir: string, nodeId: string, key: string, value: unknown): void;
114
+ /**
115
+ * Read the findings visible to a node: its OWN findings unioned with its
116
+ * ancestors' and all sibling/other nodes' findings that are already `done`.
117
+ * "done" visibility prevents reading a half-written blackboard from a sibling
118
+ * that is still running (eventual consistency: you see a sibling's findings
119
+ * once it has reported completion). The node's own findings are always visible.
120
+ *
121
+ * On key conflicts: nearer scope wins (own > ancestors > completed others),
122
+ * matching intuition that a node trusts its own/closer notes most.
123
+ *
124
+ * @param key optional — return only that key's value (or undefined).
125
+ */
126
+ export declare function readVisibleFindings(ctxDir: string, nodeId: string, key?: string): FindingsMap | unknown;
127
+ export declare function writeReport(ctxDir: string, nodeId: string, summary: string, structured?: unknown): void;
128
+ export declare function readReport(ctxDir: string, nodeId: string): NodeReport | undefined;
129
+ /** Queue a ctx_spawn intent. Each call writes a unique file the runtime picks up. */
130
+ export declare function queueSpawn(ctxDir: string, parentNodeId: string, assignments: SpawnAssignment[]): number;
131
+ /**
132
+ * Drain (read + delete) all pending spawn intents queued by a parent node.
133
+ * Returns the flattened assignment list. Used by the runtime supervision loop
134
+ * after a node's subagent finishes.
135
+ *
136
+ * INVARIANT: only call this AFTER the parent subagent process has exited. The
137
+ * read-then-unlink is not directory-locked, so a concurrent queueSpawn from a
138
+ * still-running parent could be missed. The runtime drains post-exit, so no
139
+ * concurrent writer exists.
140
+ */
141
+ export declare function drainPendingSpawns(ctxDir: string, parentNodeId: string): SpawnAssignment[];
142
+ //# sourceMappingURL=context-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-store.d.ts","sourceRoot":"","sources":["../src/context-store.ts"],"names":[],"mappings":"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"}