Voce Codegen - #104
Conversation
… override allowlist voice_config was an untyped dict threaded through three merge layers: a typo'd key silently fell back to defaults, and merge_client_voice_overrides applied any client key over server config — recording stayed server-only only because build_voice_session happened to read it from defaults. - Add timbal.voice.config with VoiceConfig + RecordingConfig (extra="forbid"). merge_voice_config validates at server boot, so bad keys/values fail fast; dicts, callables, and VoiceConfig instances are all accepted. - Filter client hello keys through an explicit CLIENT_SETTABLE_VOICE_FIELDS allowlist. recording is structurally excluded; model stays client-settable for the playground picker. Client values skip re-validation on purpose — the per-key guards in build_voice_session degrade instead of 500-ing. - Consume attributes instead of merged.get() in build_voice_session, warmup_voice_stack, and both transports; rding env+user merge now validates through RecordingConfig inside the existing non-fatal try. Also includes the previous (uncommitted) round: voice_config added to codegen AGENT_FIELDS, and TIMBAL_VOICE_LANGUAGE unset now means provider auto-detect instead of defaulting to "es".
PR SummaryMedium Risk Overview Server behavior changes: Codegen: Docs in Reviewed by Cursor Bugbot for commit d771397. Bugbot is set up for automated code reviews on this repo. Configure here. |
No description provided.