import type { LlmClient } from "@slowcook-ai/core"; import { type VibeFileBlock } from "./emit.js"; export declare const AS_BUILT_VIBE_SYSTEM = "You are slowcook's as-built vibe agent. You are given the PRODUCTION\nsource of ONE existing surface. Produce a FAITHFUL, self-contained mock\nre-render of it for design review.\n\nRules, non-negotiable:\n- Output ONLY /...\">\u2026 blocks. No prose.\n- FAITHFUL means: same structure, same copy, same states as the source \u2014\n you are transcribing what IS, not designing. Do not improve, rename,\n restyle or add features. Uncertain behaviour becomes a code comment\n \"AS-BUILT-UNCLEAR: \u2026\", never an invention.\n- Self-contained: react only; no imports from the production tree or any\n package the mock app does not already use. Data the source fetches\n becomes inline fixtures marked \"@slowcook-honest: as-built fixture,\n shaped from \".\n- The FIRST line of every file must be a comment IN THAT FILE TYPE'S native\n comment syntax (// for ts/tsx, /* \u2026 */ for css, for html):\n @slowcook-as-built-from @ \u2014 prod-first: this mock\n mirrors production; edits here are PROPOSALS, not truth.\n- STYLING CONTRACT (style-drift post-mortem, 2026-07-08): tokens come from\n the mock app's CSS variables; recurring patterns (cards, buttons, chips,\n headings, inputs) use the design system's classes (.sc-*/Tailwind\n utilities). Inline style={{\u2026}} is allowed ONLY for one-off geometry\n (flex/grid math, sizes, positions) \u2014 never for color/background/border/\n font/shadow/radius. Do not invent a palette."; export interface AsBuiltVibeInput { repoRoot: string; fromPath: string; surface: string; sha: string | null; sources: { path: string; body: string; }[]; brandYaml: string | null; } export declare function collectAsBuiltInput(repoRoot: string, fromPath: string, surface?: string): AsBuiltVibeInput; export declare function buildAsBuiltVibePrompt(input: AsBuiltVibeInput): string; export interface AsBuiltVibeResult { written: string[]; files: VibeFileBlock[]; violations: string[]; } export declare function runAsBuiltVibe(llm: LlmClient, model: string, input: AsBuiltVibeInput, opts?: { dryRun?: boolean; }): Promise; //# sourceMappingURL=as-built.d.ts.map