/** * Deterministic canvas enrichment (no LLM, no user token, no file reads, no * cache). Given the already-extracted CanvasGraph (core/canvas-graph.ts), it * computes the same CanvasEnrichment shape the old AI task returned * (core/canvas-enrichment.ts) — a summary line, footer notes, and a * cross-workflow tie — entirely from the graph's own structure. Pure and * total: the same graph in always yields the same enrichment out, and every * string is kept within ENRICHMENT_LIMITS so the layout can't break. * * What it deliberately does NOT reproduce from the retired AI pass: free-prose * per-step descriptions and condition-named edge labels, which needed a reading * of the step bodies. The base render already conveys role (node border + * classify-derived sublabel) and outcome (edge color), so their absence * degrades to "less prose", never "less structure". */ import { type CanvasEnrichment } from "./canvas-enrichment.js"; import type { CanvasGraph } from "./canvas-graph.js"; /** * A one-line description of the workflow's shape — step count, branch points, * and terminal outcomes — the deterministic stand-in for the AI summary. Reads * the same graph the diagram is drawn from, so it can never disagree with it. */ export declare function deriveSummary(graph: CanvasGraph): string; /** * Footer notes: the graph's own validation warnings (unreachable steps, no path * to a terminal) — facts worth surfacing that the diagram can't show on its own. * Undefined when the graph is clean, capped to the contract's count/length. */ export declare function deriveNotes(graph: CanvasGraph): string[] | undefined; /** * The cross-workflow tie, derived from the dashed launched-workflow nodes the * extraction already merged in (core/canvas-graph.ts's mergeLaunchesIntoGraph, * fed by the grep in core/canvas-interconnections.ts). Undefined when this * workflow launches none. */ export declare function deriveCrossWorkflow(graph: CanvasGraph): string | undefined; /** * Builds the deterministic enrichment for a graph. Only sets a field when it * has real content, so an annotation-light but valid workflow renders its clean * base — matching the "every field optional" contract the AI enrichment had. */ export declare function deriveEnrichment(graph: CanvasGraph): CanvasEnrichment; //# sourceMappingURL=canvas-derive.d.ts.map