/** * The text report that rides every successful theme read/write — the model's * eyes. An LLM cannot see the rendered HUD, so the one moment it can learn * "your literal value will not render" or "your edit also changed X" is inside * the tool response, in text, immediately. * * Two sections: * changed: leaf-level diff of what the write actually did — the confirmation * of the intended edit AND of anything a full replace changed * without meaning to. * contrast: the derived-ink pairings computed with EXACTLY the engine's * arithmetic (theme-color-math mirrors engine colorMath, gate- * checked), so "SUBSTITUTED -> renders #X" is a promise about the * pixels, not an estimate. * * Deliberately report-only: the engine self-heals every pairing marked * SUBSTITUTED, so nothing here blocks a write. The report exists so the agent * can decide whether the substitute serves the user's ask — a lime accent that * renders as forest green might be exactly right, or reason to pick a colour * the ground can carry. */ export interface ThemeReportOptions { /** The theme before this write, for the diff section. Omit for read-only reports. */ before?: unknown; /** How the written theme was produced, e.g. `preset rift-raider + patch`. */ baseLabel: string; } export declare function buildThemeReport(after: unknown, options: ThemeReportOptions): string;