Ë
    uPêjk  ã                   óf   — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ  G d„ de«      Zy)	é    )ÚFinalN)ÚBaseLLMModelInfo©Úget_secret_str)ÚAllMessageValues)ÚProviderSpecificModelInfoc                   ó  — e Zd Zdededz  fd„Z	 	 ddededee   deded	edz  d
edz  defd„Z	e
dd
edz  dedz  fd„«       Ze
	 	 dd	edz  dededz  fd„«       Ze
dededz  fd„«       Zdd	edz  d
edz  dee   fd„Zy)ÚXAIModelInfoÚmodelÚreturnNc                 ó
   — ddiS )zE
        Default values all models of this provider support.
        Úsupports_web_searchT© )Úselfr   s     úb/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/xai/common_utils.pyÚget_provider_infozXAIModelInfo.get_provider_info   s   € ð " 4ð
ð 	
ó    ÚheadersÚmessagesÚoptional_paramsÚlitellm_paramsÚapi_keyÚapi_basec                 ó4   — |�d|› �|d<   d|vr	d|vrd|d<   |S )NúBearer ÚAuthorizationzcontent-typezContent-Typezapplication/jsonr   )r   r   r   r   r   r   r   r   s           r   Úvalidate_environmentz!XAIModelInfo.validate_environment   s;   € ð ÐØ)0°°	Ð':ˆG�OÑ$ð  Ñ(¨^À7Ñ-JØ&8ˆG�NÑ#àˆr   c                 ó(   — | xs t        d«      xs dS )NÚXAI_API_BASEzhttps://api.x.air   )r   s    r   Úget_api_basezXAIModelInfo.get_api_base+   s   € àÒOœ>¨.Ó9ÒOÐ=OÐOr   Úlegacy_generic_before_envc                 ó®   — |r3| xs/ t         j                  xs t         j                  xs t        d«      S | xs t         j                  xs t        d«      S )aÌ  
        Resolve xAI API keys while preserving endpoint-specific legacy order.

        Chat uses xai_key before XAI_API_KEY without adding a generic
        litellm.api_key fallback. Responses and realtime historically
        preferred litellm.api_key over XAI_API_KEY, so those paths opt into
        the legacy order with legacy_generic_before_env=True. In both modes,
        the provider-specific litellm.xai_key takes precedence over fallbacks.
        ÚXAI_API_KEY)ÚlitellmÚxai_keyr   r   )r   r!   s     r   Úget_api_keyzXAIModelInfo.get_api_key/   sC   € ñ %ØÒaœgŸo™oÒa´·±ÒaÄNÐS`ÓDaÐaàÒJœ'Ÿ/™/ÒJ¬^¸MÓ-JÐJr   c                 ó&   — | j                  dd«      S )Núxai/Ú )Úreplace)r   s    r   Úget_base_modelzXAIModelInfo.get_base_modelB   s   € à�}‰}˜V RÓ(Ð(r   c                 óÂ  — | j                  |«      }| j                  |«      }|�|€t        d«      ‚t        j                  j                  |› d�dd|› �i¬«      }	 |j                  «        |j                  «       d   }g }|D ]  }|d	   }d
|z   }|j                  |«       Œ |S # t        j                  $ r& t        d|j                  › d|j                  › �«      ‚w xY w)NzyXAI API base or key is not set. Set XAI_API_BASE and provide an xAI API key via api_key, litellm.xai_key, or XAI_API_KEY.z
/v1/modelsr   r   )Úurlr   z.Failed to fetch models from XAI. Status code: z, Response: ÚdataÚidr(   )r    r&   Ú
ValueErrorr$   Úmodule_level_clientÚgetÚraise_for_statusÚhttpxÚHTTPStatusErrorÚ	ExceptionÚstatus_codeÚtextÚjsonÚappend)	r   r   r   ÚresponseÚmodelsÚlitellm_model_namesr   Ústripped_model_nameÚlitellm_model_names	            r   Ú
get_modelszXAIModelInfo.get_modelsF   s  € Ø×$Ñ$ XÓ.ˆØ×"Ñ" 7Ó+ˆØÐ˜w˜Üð Lóð ô "×5Ñ5×9Ñ9Ø�*˜JÐ'Ø$¨°¨yÐ&9Ð:ð :ó 
ˆð
	Ø×%Ñ%Ô'ð !Ÿ™›¨Ñ/ˆà%'ÐØò 	;ˆEØ"'¨¡+ÐØ!'Ð*=Ñ!=ÐØ×&Ñ&Ð'9Õ:ð	;ð #Ð"øô ×$Ñ$ò 	ÜØ@À×AUÑAUÐ@VÐVbÐck×cpÑcpÐbqÐróð ð	ús   ÁB% Â%9C)NN)N)NF)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   ÚdictÚlistr   r   Ústaticmethodr    Úboolr&   r+   r@   r   r   r   r
   r
      sE  „ ð	
àð	
ð 
# TÑ	)ó	
ð$ #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð& ñP˜s T™zð P°S¸4±Zò Pó ðPð à"Ø*/ñKØ�t‘ðKà#'ðKð 
ˆt‰òKó ðKð$ ð)˜cð ) c¨D¡jò )ó ð)ñ# #¨¡*ð #¸sÀT¹zð #ÐUYÐZ]ÑU^ô #r   r
   )Útypingr   r4   r$   Ú litellm.llms.base_llm.base_utilsr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair   Úlitellm.types.utilsr   r
   r   r   r   ú<module>rN      s)   ðÝ ã ã Ý =Ý 7Ý 6Ý 9ôT#Ð#õ T#r   