export type TtsProvider = "elevenlabs" | "openai"; export type TtsMode = "final" | "all"; export type TtsModelOverrideConfig = { /** Enable model-provided overrides for TTS. */ enabled?: boolean; /** Allow model-provided TTS text blocks. */ allowText?: boolean; /** Allow model-provided provider override. */ allowProvider?: boolean; /** Allow model-provided voice/voiceId override. */ allowVoice?: boolean; /** Allow model-provided modelId override. */ allowModelId?: boolean; /** Allow model-provided voice settings override. */ allowVoiceSettings?: boolean; /** Allow model-provided normalization or language overrides. */ allowNormalization?: boolean; /** Allow model-provided seed override. */ allowSeed?: boolean; }; export type TtsConfig = { /** Enable auto-TTS (can be overridden by local prefs). */ enabled?: boolean; /** Apply TTS to final replies only or to all replies (tool/block/final). */ mode?: TtsMode; /** Primary TTS provider (fallbacks are automatic). */ provider?: TtsProvider; /** Optional model override for TTS auto-summary (provider/model or alias). */ summaryModel?: string; /** Allow the model to override TTS parameters. */ modelOverrides?: TtsModelOverrideConfig; /** ElevenLabs configuration. */ elevenlabs?: { apiKey?: string; baseUrl?: string; voiceId?: string; modelId?: string; seed?: number; applyTextNormalization?: "auto" | "on" | "off"; languageCode?: string; voiceSettings?: { stability?: number; similarityBoost?: number; style?: number; useSpeakerBoost?: boolean; speed?: number; }; }; /** OpenAI configuration. */ openai?: { apiKey?: string; model?: string; voice?: string; }; /** Optional path for local TTS user preferences JSON. */ prefsPath?: string; /** Hard cap for text sent to TTS (chars). */ maxTextLength?: number; /** API request timeout (ms). */ timeoutMs?: number; };