export declare enum RecordingFormat { RECORDING_FORMAT_WAV = 0, RECORDING_FORMAT_OGG_OPUS = 1, RECORDING_FORMAT_MP3 = 2, RECORDING_FORMAT_FLAC = 3 } export declare enum RecordingChannelMode { RECORDING_CHANNEL_MIXED = 0, RECORDING_CHANNEL_DUAL = 1 } export declare enum RecordingTranscriptFormat { RECORDING_TRANSCRIPT_JSON = 0, RECORDING_TRANSCRIPT_SRT = 1, RECORDING_TRANSCRIPT_VTT = 2 } export declare enum RecordingState { RECORDING_STATE_IDLE = 0, RECORDING_STATE_RECORDING = 1, RECORDING_STATE_FINALIZING = 2, RECORDING_STATE_UPLOADING = 3, RECORDING_STATE_COMPLETED = 4, RECORDING_STATE_FAILED = 5 } /** Enum values in their string-name form, as decoded by the loader. */ export type RecordingFormatName = 'RECORDING_FORMAT_WAV' | 'RECORDING_FORMAT_OGG_OPUS' | 'RECORDING_FORMAT_MP3' | 'RECORDING_FORMAT_FLAC'; export type RecordingChannelModeName = 'RECORDING_CHANNEL_MIXED' | 'RECORDING_CHANNEL_DUAL'; export type RecordingTranscriptFormatName = 'RECORDING_TRANSCRIPT_JSON' | 'RECORDING_TRANSCRIPT_SRT' | 'RECORDING_TRANSCRIPT_VTT'; export type RecordingStateName = 'RECORDING_STATE_IDLE' | 'RECORDING_STATE_RECORDING' | 'RECORDING_STATE_FINALIZING' | 'RECORDING_STATE_UPLOADING' | 'RECORDING_STATE_COMPLETED' | 'RECORDING_STATE_FAILED'; /** When CONSTRUCTING a message you may pass the string name OR the numeric value. */ export type RecordingFormatValue = RecordingFormatName | RecordingFormat; export type RecordingChannelModeValue = RecordingChannelModeName | RecordingChannelMode; export type RecordingTranscriptFormatValue = RecordingTranscriptFormatName | RecordingTranscriptFormat; export type RecordingStateValue = RecordingStateName | RecordingState; export interface SessionConfig { pipeline?: PipelineConfig; agent?: AgentConfig; room?: RoomConfig; credentials?: CredentialsConfig; limits?: SessionLimits; client_version?: VersionInfo; recording?: RecordingConfig; session_id?: string; } export interface SessionInfo { session_id: string; state: string; created_at_unix_ms: number; pipeline_mode: string; runtime_version: string; } export interface SessionRejected { reason: string; current_sessions: number; max_sessions: number; message: string; } /** CreateSession response - oneof `result` in {"session","rejected"}. */ export interface CreateSessionResponse { result?: 'session' | 'rejected'; session?: SessionInfo; rejected?: SessionRejected; sessionCapability?: string; } export interface DestroyRequest { session_id?: string; reason?: string; } export interface DestroyResponse { success: boolean; } export interface SessionInfoRequest { session_id?: string; } export interface SessionLimits { inactivity_timeout_seconds?: number; max_session_duration_seconds?: number; } export interface PipelineConfig { /** "cascade" | "realtime" (free string, not an enum). */ mode?: string; cascade?: CascadeConfig; realtime?: RealtimeProviderConfig; } export interface RealtimeProviderConfig { provider?: string; model?: string; voice?: string; realtime_mode?: string; response_modalities?: string[]; params?: Record; gemini_live_extras?: GeminiLiveExtras; } /** All scalar fields optional - absent when unset (not 0/""/false); set only what you send. */ export interface GeminiLiveExtras { top_p?: number; top_k?: number; max_output_tokens?: number; presence_penalty?: number; frequency_penalty?: number; language_code?: string; thinking_budget?: number; include_thoughts?: boolean; vad?: GeminiVadConfig; context_compression_trigger_tokens?: number; session_resumption_handle?: string; enable_resumption?: boolean; enable_input_transcription?: boolean; enable_output_transcription?: boolean; vertex?: VertexAIConfig; } /** All fields optional - absent when unset. */ export interface GeminiVadConfig { start_sensitivity?: string; end_sensitivity?: string; prefix_padding_ms?: number; silence_duration_ms?: number; } export interface CascadeConfig { stt?: STTProviderConfig; llm?: LLMProviderConfig; tts?: TTSProviderConfig; vad?: VADProviderConfig; interrupt?: InterruptConfig; eou?: EOUConfig; filler?: FillerConfig; audio?: AudioConfig; sentence_buffer?: SentenceBufferConfig; orchestrator_timing?: OrchestratorTimingConfig; voicemail?: VoicemailConfig; denoise?: DenoiseConfig; dtmf_detection_enabled?: boolean; stt_filter_patterns?: string[]; stt_word_substitutions?: Record; avatar?: AvatarProviderConfig; } export interface AvatarProviderConfig { provider?: string; avatar_id?: string; face_id?: string; model?: string; is_trinity?: boolean; params?: Record; } export interface OrchestratorTimingConfig { poll_interval_ms?: number; max_drain_secs?: number; tts_drain_grace_ms?: number; } export interface InferenceConfig { base_url?: string; } /** STT provider configuration with optional recursive `fallbacks`. */ export interface STTProviderConfig { provider?: string; model?: string; language?: string; endpointing_ms?: number; params?: Record; fallbacks?: STTProviderConfig[]; inference?: InferenceConfig; } export interface LLMProviderConfig { provider?: string; model?: string; temperature?: number; max_output_tokens?: number; params?: Record; fallbacks?: LLMProviderConfig[]; gemini_extras?: GeminiLLMExtras; inference?: InferenceConfig; } export interface TTSProviderConfig { provider?: string; voice?: string; model?: string; language?: string; params?: Record; fallbacks?: TTSProviderConfig[]; cartesia_extras?: CartesiaExtras; inference?: InferenceConfig; } export interface GeminiLLMExtras { thinking_budget?: number; include_thoughts?: boolean; safety_settings?: SafetySetting[]; vertex?: VertexAIConfig; } export interface SafetySetting { category: string; threshold: string; } export interface VertexAIConfig { project_id?: string; location?: string; service_account_json?: string; service_account_path?: string; } export interface CartesiaExtras { voice_embedding?: number[]; } export interface VADProviderConfig { threshold?: number; min_speech_ms?: number; min_silence_ms?: number; stop_threshold?: number; min_speech_duration?: number; min_silence_duration?: number; padding_duration?: number; max_buffered_speech?: number; force_cpu?: boolean; smoothing_factor?: number; } export interface InterruptConfig { mode?: string; min_duration_ms?: number; min_words?: number; cooldown_ms?: number; false_interrupt_pause_duration_ms?: number; resume_on_false_interrupt?: boolean; interrupt_fade_duration_ms?: number; } export interface EOUConfig { threshold?: number; min_wait_ms?: number; max_wait_ms?: number; provider?: string; model_id?: string; host?: string; auth_token?: string; mode?: string; } export interface FillerConfig { filter_filler_words?: boolean; filler_words?: string[]; enable_verbal_fillers?: boolean; verbal_fillers?: string[]; verbal_filler_min_words?: number; } export interface AudioConfig { /** TTS output sample rate in Hz (48000). */ tts_sample_rate?: number; playback_grace_ms?: number; } export interface SentenceBufferConfig { min_clause_len?: number; first_clause_len?: number; min_sentence_len?: number; } export interface AgentConfig { instructions?: string; tools?: ToolSchemaProto[]; registered_hooks?: string[]; before_llm_hook?: boolean; context_window?: ContextWindowConfig; append_voice_suffix?: boolean; voice_suffix?: string; mcp_servers?: MCPServerConfig[]; knowledge_base?: KnowledgeBaseConfig; inherit_context?: boolean; agent_id?: string; llm_stream_hook_enabled?: boolean; llm_stream_hook_timeout_ms?: number; alternates?: NamedAgentConfig[]; stt_hook_enabled?: boolean; stt_hook_timeout_ms?: number; tts_hook_enabled?: boolean; tts_hook_timeout_ms?: number; } export interface NamedAgentConfig { agent_id?: string; instructions?: string; tools?: ToolSchemaProto[]; } export interface ToolSchemaProto { name?: string; description?: string; /** JSON string of the JSON-Schema. */ parameters_json_schema?: string; } export interface ContextWindowConfig { max_tokens?: number; max_context_items?: number; keep_recent_turns?: number; max_tool_calls_per_turn?: number; summary_llm?: LLMProviderConfig; } export interface RoomConfig { room_id?: string; auth_token?: string; agent_name?: string; vision?: boolean; recording_enabled?: boolean; background_audio_enabled?: boolean; auto_end_session?: boolean; session_timeout_seconds?: number; no_participant_timeout_seconds?: number; signaling_base_url?: string; send_logs_to_dashboard?: boolean; dashboard_log_level?: string; audio_listener_enabled?: boolean; agent_participant_id?: string; } export interface CredentialsConfig { /** API keys, keyed by provider name (e.g. `gemini`, `openai_stt`, `denoise_gateway_token`). */ provider_keys?: Record; } export interface VersionInfo { sdk_version?: string; minimum_runtime_version?: string; proto_version?: string; } export interface InjectMessageRequest { session_id?: string; message?: ContextMessageProto; /** e.g. "start" | "end" (free string). */ position?: string; } export interface RemoveMessageRequest { session_id?: string; message_id?: string; } export interface GetContextRequest { session_id?: string; last_n?: number; } export interface GetContextResponse { messages: ContextMessageProto[]; total_messages: number; total_tokens: number; } export interface ClearContextRequest { session_id?: string; keep_system_prompt?: boolean; } export interface ContextOpResult { success: boolean; error: string; total_messages: number; total_tokens: number; } export interface ContextMessageProto { role?: string; content?: string; message_id?: string; images?: ImageContentProto[]; tool_calls?: ToolCallProto[]; tool_call_id?: string; } export interface ImageContentProto { url?: string; detail?: string; } export interface ToolCallProto { call_id?: string; name?: string; arguments_json?: string; } export interface HealthRequest { } export interface HealthResponse { healthy: boolean; active_sessions: number; max_sessions: number; version: string; } export interface ToolCallRequest { call_id: string; tool_name: string; arguments_json: string; } export interface ToolCallResponse { call_id?: string; result_json?: string; is_error?: boolean; } export interface BeforeLLMHook { messages_json: string; token_count: number; turn_number: number; } export interface BeforeLLMResponse { modified_messages_json?: string; skip_turn?: boolean; } export interface SttHookEvent { request_id?: string; text?: string; language?: string; is_final?: boolean; turn_number?: number; } export interface SttHookResponse { request_id?: string; modified_text?: string; drop?: boolean; } export interface TtsHookEvent { request_id?: string; text?: string; utterance_id?: string; voice?: string; } export interface TtsHookResponse { request_id?: string; modified_text?: string; drop?: boolean; } export interface TranscriptEvent { participant_id: string; text: string; is_final: boolean; confidence: number; language: string; start_time_us: number; end_time_us: number; turn_resumed: boolean; item_id: string; } export interface TurnComplete { user_transcript: string; agent_transcript: string; tool_calls_count: number; total_latency_ms: number; context_messages: number; context_tokens: number; } export interface SessionStateChange { state: string; reason: string; } export interface ParticipantEventProto { type: string; participant_id: string; display_name: string; } export interface AgentSpeechEvent { text: string; is_final: boolean; role: string; item_id: string; } export interface InterruptEvent { reason: string; partial_response: string; } export interface MetricsSnapshot { stt_ttfb_ms?: number; llm_ttfb_ms: number; tts_ttfb_ms: number; total_turn_latency_ms: number; tokens_in: number; tokens_out: number; cached_tokens: number; turn_number: number; tokens_total: number; input_text_tokens: number; input_audio_tokens: number; input_image_tokens: number; output_text_tokens: number; output_audio_tokens: number; output_image_tokens: number; cached_text_tokens: number; cached_audio_tokens: number; cached_image_tokens: number; thoughts_tokens: number; } export interface ErrorEvent { component: string; provider: string; severity: string; error_code: string; message: string; is_fatal: boolean; retry_attempts: number; } export interface SignalingSessionAssignedEvent { session_id: string; } export interface WarningEvent { code: string; message: string; } export interface EouDetectedEvent { probability: number; wait_ms: number; text: string; } export interface GenerationChunkEvent { text: string; metadata: Record; } export interface AgentSwitchedEvent { from: string; to: string; reason: string; } export interface TranscriptPreflightEvent { text: string; } export interface VadEventProto { kind: string; timestamp_us: number; confidence: number; speech_duration_s: number; silence_duration_s: number; } export interface GenerationStartedEvent { turn_number: number; } export interface GenerationCompleteEvent { turn_number: number; was_interrupted: boolean; } export interface SynthesisStartedEvent { text: string; } export interface FirstAudioByteEvent { ttfb_ms: number; byte_count: number; } export interface LastAudioByteEvent { duration_seconds: number; } export interface SynthesisInterruptedEvent { reason: string; } export interface WordTimingEvent { word: string; start_seconds: number; end_seconds: number; cumulative_text: string; } export interface TtsCapabilitiesEvent { can_pause: boolean; supports_word_timestamps: boolean; sample_rate: number; num_channels: number; } export interface KbDocument { id: string; content: string; score: number; metadata: Record; } export interface KbHitsEvent { query: string; documents: KbDocument[]; latency_ms: number; } export interface SttStreamStartedEvent { provider: string; model: string; } export interface SttStreamEndedEvent { provider: string; reason: string; } export interface AgentStateChangedEvent { state: string; reason: string; } export interface UserStateChangedEvent { state: string; reason: string; } export interface UserTurnStartEvent { transcript: string; } export interface UserTurnEndEvent { response_text: string; interrupted: boolean; } export interface LLMCompletedEvent { response_text: string; interrupted: boolean; } /** Per-component metrics (realtime + cascade). */ export interface ComponentMetricsEvent { component: string; metrics_json: string; } export interface TurnMetricsEvent { metrics_json: string; } /** Enable/disable user audio input (e.g. put the caller on hold). */ export interface SetUserInputEnabledCmd { enabled: boolean; } export interface LLMTokenForReviewEvent { token_id: number; text: string; } export interface AgentTurnStartEvent { turn_number: number; } export interface AgentTurnEndEvent { turn_number: number; interrupted: boolean; } export interface DTMFEvent { digit: string; participant_id: string; } export interface StreamEventProto { participant_id: string; /** e.g. "audio" | "video" | "screen". */ kind: string; enabled: boolean; } export interface AudioFrameEvent { pcm: Buffer; sample_rate: number; source: string; participant_id: string; timestamp_ms: number; } export interface VisionFrameEvent { data: Buffer; mime_type: string; width: number; height: number; participant_id: string; timestamp_ms: number; } export interface VoicemailDetectedEvent { confidence: number; detected_at_seconds: string; transcript: string; } export interface SayCommand { text?: string; interrupt_current?: boolean; voice?: string; /** When true, the spoken text cannot be interrupted. */ non_interruptible?: boolean; } export interface SayComplete { duration_seconds: number; } export interface UpdateInstructionsCmd { instructions?: string; } export interface UpdateToolsCmd { tools?: ToolSchemaProto[]; } export interface UpdateConfigCmd { config_json?: string; } export interface ShutdownCommand { reason?: string; } export interface Keepalive { } export interface CancelGenerationCmd { } export interface KnowledgeBaseUpsertCmd { documents?: KbDocument[]; } export interface KnowledgeBaseDeleteCmd { ids?: string[]; } export interface GenerateCmd { text?: string; } export interface PreloadBackgroundAudioCmd { file_url?: string; volume?: number; audio_data?: Buffer; } export interface PlayBackgroundAudioCmd { file_url?: string; volume?: number; looping?: boolean; playback_mode?: boolean; audio_data?: Buffer; } export interface StopBackgroundAudioCmd { } export interface PushAudioFrameCmd { pcm?: Buffer; sample_rate?: number; } export interface RecordingStartCmd { config?: RecordingConfig; } export interface RecordingStopCmd { } export interface SendImageCmd { mime_type?: string; data?: Buffer; } export interface MessageFrame { mime_type?: string; data?: Buffer; } export interface SendMessageWithFramesCmd { text?: string; frames?: MessageFrame[]; } export interface SendDTMFCmd { digits?: string; } export interface PublishMessageCmd { topic?: string; message?: string; options_json?: string; payload_json?: string; } export interface SubscribePubSubCmd { topic?: string; } export interface PubSubMessageEvent { topic?: string; message?: string; sender_id?: string; sender_name?: string; timestamp?: string; } export interface CallTransferCmd { transfer_to?: string; token?: string; } export interface UpdateProviderCmd { component?: string; provider?: string; params?: Record; } export interface ModifyLLMTokenCmd { token_id?: number; replacement?: string; drop?: boolean; } export interface CustomSttAudioChunk { pcm?: Buffer; sample_rate?: number; utterance_id?: string; end_of_utterance?: boolean; } export interface CustomSttResult { utterance_id?: string; text?: string; is_final?: boolean; confidence?: number; language?: string; start_time_us?: number; end_time_us?: number; } export interface CustomTtsSynthesize { text: string; utterance_id: string; voice: string; } export interface CustomTtsAudioChunk { utterance_id?: string; pcm?: Buffer; sample_rate?: number; end_of_synthesis?: boolean; } export interface RecordingConfig { enabled?: boolean; auto_start?: boolean; format?: RecordingFormatValue; channel_mode?: RecordingChannelModeValue; sample_rate?: number; bitrate_kbps?: number; storage?: RecordingStorageConfig; transcript?: RecordingTranscriptConfig; max_duration_seconds?: number; max_file_size_mb?: number; recording_beep?: boolean; redact_dtmf?: boolean; custom_metadata?: Record; recording_name?: string; recording_group?: string; apply_denoise?: boolean; normalize_audio?: boolean; trim_silence?: boolean; record_video?: boolean; record_screen_share?: boolean; record_screen_audio?: boolean; } /** oneof `storage` in {"s3"}. */ export interface RecordingStorageConfig { storage?: 's3'; s3?: S3StorageConfig; } export interface S3StorageConfig { bucket?: string; region?: string; prefix?: string; access_key_id?: string; secret_access_key?: string; session_token?: string; endpoint_url?: string; storage_class?: string; server_side_encryption?: string; kms_key_id?: string; acl?: string; multipart_upload?: boolean; multipart_part_size_mb?: number; upload_timeout_seconds?: number; max_retry_attempts?: number; tags?: Record; user_metadata?: Record; content_type_override?: string; } export interface RecordingTranscriptConfig { enabled?: boolean; format?: RecordingTranscriptFormatValue; include_word_timestamps?: boolean; include_confidence?: boolean; speaker_labels?: boolean; language?: string; } export interface RecordingStatusEvent { recording_id: string; state: RecordingStateValue; output_uri: string; duration_seconds: number; file_size_bytes: number; error_message: string; transcript_uri: string; metadata: Record; track_kind: string; } export interface VoicemailConfig { enabled?: boolean; detection_threshold?: number; max_detection_seconds?: number; custom_prompt?: string; auto_hangup?: boolean; } export interface DenoiseConfig { enabled?: boolean; provider?: string; } export interface MCPServerConfig { /** "stdio" | "sse" | "http". */ type?: string; command?: string; args?: string[]; url?: string; env?: Record; } export interface KnowledgeBaseConfig { enabled?: boolean; provider?: string; index_name?: string; top_k?: number; min_score?: number; params?: Record; } export interface A2AMessageRequest { session_id?: string; target_agent_id?: string; message_json?: string; correlation_id?: string; } export interface A2AMessageResponse { success: boolean; response_json: string; correlation_id: string; } export interface A2AMessageEvent { source_agent_id: string; message_json: string; correlation_id: string; } /** Discriminator values for {@link ClientEvent} (case names in the `sessionId` key form). */ export type ClientEventCase = 'toolResult' | 'beforeLlmResult' | 'say' | 'updateInstructions' | 'updateConfig' | 'shutdown' | 'keepalive' | 'updateTools' | 'playBackgroundAudio' | 'stopBackgroundAudio' | 'sendDtmf' | 'callTransfer' | 'updateProvider' | 'modifyLlmToken' | 'pushAudioFrame' | 'recordingStart' | 'recordingStop' | 'sendImage' | 'cancelGeneration' | 'kbUpsert' | 'kbDelete' | 'generate' | 'sendMessageWithFrames' | 'customSttResult' | 'customTtsAudio' | 'preloadBackgroundAudio' | 'sttHookResult' | 'ttsHookResult' | 'publishMessage' | 'subscribePubsub'; export interface ClientEvent { session_id?: string; request_id?: string; /** oneof discriminator - populated case name. */ event?: ClientEventCase; tool_result?: ToolCallResponse; before_llm_result?: BeforeLLMResponse; say?: SayCommand; update_instructions?: UpdateInstructionsCmd; update_config?: UpdateConfigCmd; shutdown?: ShutdownCommand; keepalive?: Keepalive; update_tools?: UpdateToolsCmd; play_background_audio?: PlayBackgroundAudioCmd; stop_background_audio?: StopBackgroundAudioCmd; send_dtmf?: SendDTMFCmd; call_transfer?: CallTransferCmd; update_provider?: UpdateProviderCmd; modify_llm_token?: ModifyLLMTokenCmd; push_audio_frame?: PushAudioFrameCmd; recording_start?: RecordingStartCmd; recording_stop?: RecordingStopCmd; send_image?: SendImageCmd; cancel_generation?: CancelGenerationCmd; kb_upsert?: KnowledgeBaseUpsertCmd; kb_delete?: KnowledgeBaseDeleteCmd; generate?: GenerateCmd; send_message_with_frames?: SendMessageWithFramesCmd; custom_stt_result?: CustomSttResult; custom_tts_audio?: CustomTtsAudioChunk; preload_background_audio?: PreloadBackgroundAudioCmd; set_user_input_enabled?: SetUserInputEnabledCmd; publish_message?: PublishMessageCmd; subscribe_pubsub?: SubscribePubSubCmd; stt_hook_result?: SttHookResponse; tts_hook_result?: TtsHookResponse; } /** Discriminator values for {@link RuntimeEvent} (case names in the `sessionId` key form). */ export type RuntimeEventCase = 'toolCall' | 'beforeLlm' | 'turnComplete' | 'sayComplete' | 'stateChange' | 'participant' | 'transcript' | 'agentSpeech' | 'metrics' | 'interrupt' | 'error' | 'warning' | 'dtmf' | 'voicemailDetected' | 'a2aMessage' | 'recordingStatus' | 'eouDetected' | 'generationChunk' | 'agentSwitched' | 'transcriptPreflight' | 'agentStateChanged' | 'userStateChanged' | 'userTurnStart' | 'userTurnEnd' | 'llmTokenForReview' | 'visionFrame' | 'audioFrame' | 'streamEvent' | 'vadEvent' | 'generationStarted' | 'generationComplete' | 'synthesisStarted' | 'firstAudioByte' | 'lastAudioByte' | 'synthesisInterrupted' | 'wordTiming' | 'ttsCapabilities' | 'kbHits' | 'sttStreamStarted' | 'sttStreamEnded' | 'agentTurnStart' | 'agentTurnEnd' | 'customSttAudio' | 'customTtsSynthesize' | 'signalingSessionAssigned' | 'llmCompleted' | 'componentMetrics' | 'turnMetrics' | 'sttHook' | 'ttsHook' | 'pubsubMessage'; export interface RuntimeEvent { session_id?: string; request_id?: string; event?: RuntimeEventCase; tool_call?: ToolCallRequest; before_llm?: BeforeLLMHook; turn_complete?: TurnComplete; say_complete?: SayComplete; state_change?: SessionStateChange; participant?: ParticipantEventProto; transcript?: TranscriptEvent; agent_speech?: AgentSpeechEvent; metrics?: MetricsSnapshot; interrupt?: InterruptEvent; error?: ErrorEvent; warning?: WarningEvent; dtmf?: DTMFEvent; voicemail_detected?: VoicemailDetectedEvent; a2a_message?: A2AMessageEvent; recording_status?: RecordingStatusEvent; eou_detected?: EouDetectedEvent; generation_chunk?: GenerationChunkEvent; agent_switched?: AgentSwitchedEvent; transcript_preflight?: TranscriptPreflightEvent; agent_state_changed?: AgentStateChangedEvent; user_state_changed?: UserStateChangedEvent; user_turn_start?: UserTurnStartEvent; user_turn_end?: UserTurnEndEvent; llm_token_for_review?: LLMTokenForReviewEvent; vision_frame?: VisionFrameEvent; audio_frame?: AudioFrameEvent; stream_event?: StreamEventProto; vad_event?: VadEventProto; generation_started?: GenerationStartedEvent; generation_complete?: GenerationCompleteEvent; synthesis_started?: SynthesisStartedEvent; first_audio_byte?: FirstAudioByteEvent; last_audio_byte?: LastAudioByteEvent; synthesis_interrupted?: SynthesisInterruptedEvent; word_timing?: WordTimingEvent; tts_capabilities?: TtsCapabilitiesEvent; kb_hits?: KbHitsEvent; stt_stream_started?: SttStreamStartedEvent; stt_stream_ended?: SttStreamEndedEvent; agent_turn_start?: AgentTurnStartEvent; agent_turn_end?: AgentTurnEndEvent; custom_stt_audio?: CustomSttAudioChunk; custom_tts_synthesize?: CustomTtsSynthesize; signaling_session_assigned?: SignalingSessionAssignedEvent; llm_completed?: LLMCompletedEvent; component_metrics?: ComponentMetricsEvent; turn_metrics?: TurnMetricsEvent; pubsub_message?: PubSubMessageEvent; stt_hook?: SttHookEvent; tts_hook?: TtsHookEvent; } export interface AgentRegistration { agent_kind?: string; agent?: AgentConfig; pipeline?: PipelineConfig; credentials?: CredentialsConfig; default_recording?: RecordingConfig; /** Advisory max concurrent sessions. */ max_concurrent_sessions?: number; labels?: Record; client_version?: VersionInfo; auth_token?: string; } export interface AgentRegistered { agent_id: string; runtime_version: string; registered_at_unix_ms: number; } export interface AgentConfigOverride { instructions?: string; greeting?: string; voice_suffix?: string; append_voice_suffix?: boolean; /** Must be true for `append_voice_suffix` to be honored. */ has_append_voice_suffix?: boolean; } export interface SessionStarted { session_id: string; room?: RoomConfig; dispatch_metadata: Record; agent_override?: AgentConfigOverride; recording_override?: RecordingConfig; limits?: SessionLimits; dispatched_at_unix_ms: number; } export interface SessionEnded { session_id: string; reason: string; final_turn?: TurnComplete; signaling_session_id: string; } export interface SessionAck { session_id?: string; accepted?: boolean; reject_reason?: string; } export interface AgentDraining { reason?: string; } /** Discriminator values for {@link AgentStreamIn} (case names in the `sessionId` key form). */ export type AgentStreamInCase = 'register' | 'sessionAck' | 'draining' | 'keepalive' | 'toolResult' | 'beforeLlmResult' | 'say' | 'updateInstructions' | 'updateConfig' | 'updateTools' | 'playBackgroundAudio' | 'stopBackgroundAudio' | 'sendDtmf' | 'callTransfer' | 'shutdown' | 'updateProvider' | 'modifyLlmToken' | 'pushAudioFrame' | 'recordingStart' | 'recordingStop' | 'sendImage' | 'cancelGeneration' | 'kbUpsert' | 'kbDelete' | 'generate' | 'sendMessageWithFrames' | 'customSttResult' | 'customTtsAudio' | 'preloadBackgroundAudio' | 'publishMessage' | 'subscribePubsub'; export interface AgentStreamIn { session_id?: string; request_id?: string; /** oneof discriminator - populated case name. */ payload?: AgentStreamInCase; register?: AgentRegistration; session_ack?: SessionAck; draining?: AgentDraining; keepalive?: Keepalive; tool_result?: ToolCallResponse; before_llm_result?: BeforeLLMResponse; say?: SayCommand; update_instructions?: UpdateInstructionsCmd; update_config?: UpdateConfigCmd; update_tools?: UpdateToolsCmd; play_background_audio?: PlayBackgroundAudioCmd; stop_background_audio?: StopBackgroundAudioCmd; send_dtmf?: SendDTMFCmd; call_transfer?: CallTransferCmd; shutdown?: ShutdownCommand; update_provider?: UpdateProviderCmd; modify_llm_token?: ModifyLLMTokenCmd; push_audio_frame?: PushAudioFrameCmd; recording_start?: RecordingStartCmd; recording_stop?: RecordingStopCmd; send_image?: SendImageCmd; cancel_generation?: CancelGenerationCmd; kb_upsert?: KnowledgeBaseUpsertCmd; kb_delete?: KnowledgeBaseDeleteCmd; generate?: GenerateCmd; send_message_with_frames?: SendMessageWithFramesCmd; custom_stt_result?: CustomSttResult; custom_tts_audio?: CustomTtsAudioChunk; preload_background_audio?: PreloadBackgroundAudioCmd; set_user_input_enabled?: SetUserInputEnabledCmd; publish_message?: PublishMessageCmd; subscribe_pubsub?: SubscribePubSubCmd; } /** Discriminator values for {@link AgentStreamOut} (case names in the `sessionId` key form). */ export type AgentStreamOutCase = 'registered' | 'sessionStarted' | 'sessionEnded' | 'toolCall' | 'beforeLlm' | 'turnComplete' | 'sayComplete' | 'stateChange' | 'participant' | 'transcript' | 'agentSpeech' | 'metrics' | 'interrupt' | 'error' | 'warning' | 'dtmf' | 'voicemailDetected' | 'a2aMessage' | 'recordingStatus' | 'eouDetected' | 'generationChunk' | 'agentSwitched' | 'transcriptPreflight' | 'agentStateChanged' | 'userStateChanged' | 'userTurnStart' | 'userTurnEnd' | 'llmTokenForReview' | 'visionFrame' | 'audioFrame' | 'streamEvent' | 'vadEvent' | 'generationStarted' | 'generationComplete' | 'synthesisStarted' | 'firstAudioByte' | 'lastAudioByte' | 'synthesisInterrupted' | 'wordTiming' | 'ttsCapabilities' | 'kbHits' | 'sttStreamStarted' | 'sttStreamEnded' | 'agentTurnStart' | 'agentTurnEnd' | 'customSttAudio' | 'customTtsSynthesize' | 'signalingSessionAssigned' | 'llmCompleted'; export interface AgentStreamOut { session_id?: string; request_id?: string; payload?: AgentStreamOutCase; registered?: AgentRegistered; session_started?: SessionStarted; session_ended?: SessionEnded; tool_call?: ToolCallRequest; before_llm?: BeforeLLMHook; turn_complete?: TurnComplete; say_complete?: SayComplete; state_change?: SessionStateChange; participant?: ParticipantEventProto; transcript?: TranscriptEvent; agent_speech?: AgentSpeechEvent; metrics?: MetricsSnapshot; interrupt?: InterruptEvent; error?: ErrorEvent; warning?: WarningEvent; dtmf?: DTMFEvent; voicemail_detected?: VoicemailDetectedEvent; a2a_message?: A2AMessageEvent; recording_status?: RecordingStatusEvent; eou_detected?: EouDetectedEvent; generation_chunk?: GenerationChunkEvent; agent_switched?: AgentSwitchedEvent; transcript_preflight?: TranscriptPreflightEvent; agent_state_changed?: AgentStateChangedEvent; user_state_changed?: UserStateChangedEvent; user_turn_start?: UserTurnStartEvent; user_turn_end?: UserTurnEndEvent; llm_token_for_review?: LLMTokenForReviewEvent; vision_frame?: VisionFrameEvent; audio_frame?: AudioFrameEvent; stream_event?: StreamEventProto; vad_event?: VadEventProto; generation_started?: GenerationStartedEvent; generation_complete?: GenerationCompleteEvent; synthesis_started?: SynthesisStartedEvent; first_audio_byte?: FirstAudioByteEvent; last_audio_byte?: LastAudioByteEvent; synthesis_interrupted?: SynthesisInterruptedEvent; word_timing?: WordTimingEvent; tts_capabilities?: TtsCapabilitiesEvent; kb_hits?: KbHitsEvent; stt_stream_started?: SttStreamStartedEvent; stt_stream_ended?: SttStreamEndedEvent; agent_turn_start?: AgentTurnStartEvent; agent_turn_end?: AgentTurnEndEvent; custom_stt_audio?: CustomSttAudioChunk; custom_tts_synthesize?: CustomTtsSynthesize; signaling_session_assigned?: SignalingSessionAssignedEvent; llm_completed?: LLMCompletedEvent; component_metrics?: ComponentMetricsEvent; turn_metrics?: TurnMetricsEvent; } export interface DispatchRequest { agent_id?: string; room?: RoomConfig; dispatch_metadata?: Record; agent_override?: AgentConfigOverride; recording_override?: RecordingConfig; limits?: SessionLimits; label_selector?: Record; session_id?: string; } export interface DispatchAccepted { session_id: string; worker_id: string; } export interface DispatchRejected { reason: string; message: string; registered_agents: number; available_agents: number; } /** oneof `result` in {"accepted","rejected"}. */ export interface DispatchResponse { result?: 'accepted' | 'rejected'; accepted?: DispatchAccepted; rejected?: DispatchRejected; } export interface TerminateRequest { session_id?: string; reason?: string; } export interface TerminateAccepted { session_id: string; terminated_at_unix_ms: number; } export interface TerminateRejected { reason: string; message: string; } /** oneof `result` in {"accepted","rejected"}. */ export interface TerminateResponse { result?: 'accepted' | 'rejected'; accepted?: TerminateAccepted; rejected?: TerminateRejected; } export interface TestEmitToolCallRequest { session_id?: string; tool_name?: string; arguments_json?: string; call_id?: string; } export interface TestEmitToolCallResponse { sent: boolean; call_id: string; message: string; }