/** * @module tui/canvas/ca-director * * The VisualIntent control plane. One tiny singleton connects everyone who * WANTS to steer the Living Canvas (the fast-lane router, the smart model's * `screen` tool, slash commands, voice mood) to whichever CA compositor is * currently on screen — with zero coupling and zero added latency. * * The LLM never touches pixels or rules directly: it emits an intent * ({family, energy, palette, mood}) and the active compositor turns it into * deterministic GPU motion. Intents arriving while no compositor is active are * remembered and applied the moment one attaches, so a fast-lane intent that * lands before the scene finishes building is never lost. */ import type { CaCompositor, VisualIntent } from "./gpu/ca-compositor.js"; /** Mood names the models can speak naturally, mapped to concrete intents. */ export declare const MOOD_PRESETS: Record; /** Raw model-emitted intent — family/palette arrive as free-form strings. */ export type DirectedIntent = Omit & { family?: string | number; palette?: string; mood?: string; }; /** Normalize a model-emitted intent (mood name → params; clamp everything). */ export declare function resolveIntent(raw: DirectedIntent | string | null | undefined): VisualIntent | null; declare class CaDirector { private active; private lastIntent; /** Scenes attach their compositor when it comes up, null when they die. */ setActive(compositor: CaCompositor | null): void; /** Apply an intent NOW (and remember it for the next compositor). */ apply(raw: DirectedIntent | string | null | undefined): boolean; /** Live mic level (0..1) — the canvas breathes while you speak. */ setAudioLevel(level: number): void; getLastIntent(): VisualIntent | null; isLive(): boolean; } /** The process-wide director (one canvas is ever on screen). */ export declare const caDirector: CaDirector; export {};