import { type PackageGuide } from '../llm/guide-injection'; /** * Collects the generated + authored design knowledge into the version-pinned * `@urbicon-ui/design-content` bundle (`packages/design-content/content/`). Runs * last in `docs:gen:all`, after the MCP catalog + per-component llm.txt have been * produced. The bundle is what the remote MCP server and the urbicon CLI read at * runtime — so it must be self-contained (no monorepo sibling paths). See * DESIGN-MCP-V2 §A.2. */ export interface ContentBundleEmitterConfig { /** `apps/docs/static` — the assembled catalog (`mcp/`) + per-component `llm.txt` tree. */ staticDir: string; /** Repo-root `design-system/` — `principles.md` + `patterns/*.md`. */ designSystemDir: string; /** `docs-gen/templates/llms-full-template.md` — backs the seven guide resources. */ templatePath: string; /** `blocks/src/lib/icons/icon-registry.ts` — parsed into `icons.json`. */ iconRegistryPath: string; /** `packages/design/skill/verbs` — the single-source verb recipes (DESIGN-MCP-V2 §8). */ verbsDir: string; /** * Canonical package guides copied to `guides/.md` + indexed in * `guides/index.json` — the version-matched channel behind `urbicon guide` * and the MCP guide resources (docs/DOCS-SURFACES.md). */ packageGuides: PackageGuide[]; /** `packages/design-content/content` — the bundle output (cleaned + rewritten each run). */ outputDir: string; } /** * Summary of an emitted content bundle — the counts the CLI prints after * `docs:gen:all` plus the version/hash stamped into the bundle's `meta.json`. */ export interface ContentBundleResult { /** The bundle directory that was (re)written. */ outputDir: string; /** Per-component `llm.txt` files copied into the bundle. */ llmTxtCount: number; /** Composition patterns (`design-system/patterns/*.md`) copied. */ patternCount: number; /** Design-verb recipes copied (fail-loud when zero — every MCP prompt serves one). */ verbCount: number; /** Package guides copied to `guides/.md` (fail-loud on a missing source). */ guideCount: number; /** Icons parsed out of the blocks icon registry into `icons.json`. */ iconCount: number; /** The `@urbicon-ui/design-content` package version the bundle ships under. */ version: string; /** First 12 hex chars of the catalog's SHA-256 — the bundle's content fingerprint. */ contentHash: string; } /** * Emitter for the `@urbicon-ui/design-content` bundle (see the config * interface above for the why). Stateless besides its config; `emit()` does * all the work and is safe to re-run — the output directory is wiped first. */ export declare class ContentBundleEmitter { private config; constructor(config: ContentBundleEmitterConfig); /** * Rebuild the bundle from scratch: component catalog (required), * per-component llm.txt tree, design-system principles + patterns, verb * recipes, the llms-full guide template, parsed icon metadata, and a * `meta.json` stamp (package version + content hash). Every required input * fails loud with a message naming the missing piece — never a silently * thinner bundle. */ emit(): Promise; /** * Copy every configured package guide to `guides/.md` and write the * `guides/index.json` listing (`{ slug, title, description }[]`) that the * `urbicon guide` command and the MCP guide resources enumerate. A missing * source is a build error — a silently thinner bundle would strand the * version-matched channel on stale knowledge. */ private copyPackageGuides; /** * Replace each `{{GUIDE:}}` in the bundled template copy with a * one-line pointer to the guide's own bundle file. A placeholder without a * configured guide is the template/config drift case — fail loud. */ private pointGuidePlaceholders; /** * Copy every `verbs/.md` recipe into the bundle. Returns the verb count. * Fail-loud like `principles.md`: the verbs are load-bearing (every MCP prompt * serves one), so a missing or empty source dir is a build error, never a silent * zero-verb bundle. */ private copyVerbs; /** Copy `principles.md` (required) + every `patterns/*.md`. Returns the pattern count. */ private copyDesignSystem; /** * Read a file the bundle cannot ship without; any read failure becomes a * labelled build error (fail-loud — no partial bundles). */ private readRequired; /** The bundle ships in `@urbicon-ui/design-content`; that package's version is the bundle version. */ private readVersion; } //# sourceMappingURL=ContentBundleEmitter.d.ts.map