/** * The **Theme Prompt Builder** — assembles the compact, deterministic prompts * the LLM receives. It keeps the token budget small by sending the variable * *catalog* (names + types, grouped by category) rather than 200 raw CSS * variables or any application context, and it pins the exact JSON output * contract so responses are machine-parseable. * * The output contract intentionally reuses the Photon AI provider's existing * `{ actions, reply }` envelope so no provider change is needed: the theme is * returned as a single `photonTheme` action's params. * * @packageDocumentation */ import type { GeneratedTheme, ThemeOptimizeOptions, ThemeVariableRegistryReader } from '../../types/theme-ai.types'; /** Builds system + user prompts for the theme-generation flows. */ export declare class ThemePromptBuilder { private readonly registry; constructor(registry: ThemeVariableRegistryReader); /** * The stable system instruction: role, hard rules, the JSON output contract, * and the full allowed-variable catalog. Sent once per request as the system * turn; the catalog is what makes "never invent variables / never emit CSS" * enforceable. */ buildSystemPrompt(): string; /** User turn for a fresh theme. */ buildGeneratePrompt(prompt: string): string; /** * User turn for a modification. Includes the current values so the model * changes only what the request implies and leaves the rest alone. */ buildModifyPrompt(prompt: string, current: GeneratedTheme | null): string; /** User turn for an optimization pass over the current theme. */ buildOptimizePrompt(options: ThemeOptimizeOptions, current: GeneratedTheme | null): string; /** * System + user prompts for an explanation. The explainer wants prose, not a * theme, so it overrides the output contract to a small JSON explanation. */ buildExplainSystemPrompt(): string; /** User turn for an explanation of the given theme. */ buildExplainPrompt(theme: GeneratedTheme): string; /** * Full per-category catalog: every variable with its human name, value type * and current base value, so the model can reason about what each token does * and which to change (`--pg-colors-header-background = #f8fafc (Header * background, color)`). */ private buildCatalog; } //# sourceMappingURL=theme-prompt-builder.d.ts.map