"""
This file contains the handler for xAI's Grok Voice Agent API `/v1/realtime` endpoint.

xAI's Realtime API is fully OpenAI-compatible, so we inherit from OpenAIRealtime
and only override the configuration differences.

This requires websockets, and is currently only supported on LiteLLM Proxy.
"""

from litellm.constants import XAI_API_BASE

from ...openai.realtime.handler import OpenAIRealtime


class XAIRealtime(OpenAIRealtime):
    """
    Handler for xAI Grok Voice Agent API.

    xAI's Realtime API uses the same WebSocket protocol as OpenAI but with:
    - Different endpoint: wss://api.x.ai/v1/realtime (via _get_default_api_base)
    - No OpenAI-Beta header required (via _get_additional_headers)
    - Model: grok-4-1-fast-non-reasoning

    All WebSocket logic is inherited from OpenAIRealtime.
    """

    def _get_default_api_base(self) -> str:
        """xAI uses a different API base URL."""
        return XAI_API_BASE

    def _get_additional_headers(
        self,
        api_key: str,
        *,
        openai_beta_realtime: bool = False,
    ) -> dict:
        """
        xAI does NOT require the OpenAI-Beta header.
        Only send Authorization header.
        """
        return {
            "Authorization": f"Bearer {api_key}",
        }
