/** * Generates the per-session Claude Code `--settings` file and the tiny * hook-emitter script it points at. * * Nothing here touches the user's own `~/.claude` config — everything is * written under the harness's generated-config directory and passed to * `claude` via `--settings ` for the lifetime of one session. */ /** * The Claude Code hook events the harness listens for. */ declare const HOOK_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "Stop", "SessionEnd"]; export type ClaudeHookEvent = (typeof HOOK_EVENTS)[number]; /** * The two Claude Code themes that paint with the terminal's own 16-color ANSI * palette (`ansi:`) instead of hardcoded 256-color hex. Selecting one of * these is what makes the embedded xterm's palette (Terminal.tsx's * DARK_ANSI/LIGHT_ANSI) authoritative over Claude's accent colors — without it * Claude emits fixed 256-color indices the palette can't touch. `theme` is not * a documented settings.json key but is honoured by Claude Code (verified on * 2.1.220); an older/newer build that ignores it simply falls back to its * default 256-color rendering, so this degrades gracefully rather than failing. */ export type ClaudeAnsiTheme = "dark-ansi" | "light-ansi"; export interface GenerateClaudeSettingsOptions { /** The harness session this config is generated for. */ harnessSessionId: string; /** * Root directory generated configs live under. Defaults to * `HARNESS_PATHS.generated` (`~/.sapiom/harness/generated`). Override in * tests to avoid touching the real home directory. */ generatedRoot?: string; /** * ANSI theme to pin for this session so the app's terminal palette controls * Claude's colors. Match it to the app theme (dark app → `dark-ansi`) or * secondary/dim text loses contrast. Omitted → no `theme` key is written and * Claude keeps its default (256-color) rendering. */ claudeTheme?: ClaudeAnsiTheme; /** * Native Claude Code notice shown only for a fresh SessionStart event. * This is display-only orientation, not model context or a user turn. */ sessionStartSystemMessage?: string; } export interface GeneratedClaudeSettings { /** Absolute path to the generated settings.json (pass as `--settings`). */ settingsPath: string; /** Absolute path to the generated emit.cjs hook script. */ emitScriptPath: string; } /** * Write the generated settings.json + emit.cjs for one harness session. * Returns the settings.json path — pass it as `claude --settings `. */ export declare function generateClaudeSettings(options: GenerateClaudeSettingsOptions): Promise; export {}; //# sourceMappingURL=claude-settings.d.ts.map