Ë
    uPêj  ã                   ó„   — d dl m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
mZ d dlmZ  G d„ d	e«      Z G d
„ de«      Zy)é    )ÚFinalN)Úverbose_logger)ÚBaseLLMException)ÚOpenAIGPTConfig)Úget_secret_strÚnormalize_nonempty_secret_str)ÚAllMessageValuesc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚCloudflareErrorc                 óô   •— || _         || _        t        j                  dd¬«      | _        t        j
                  || j                  ¬«      | _        t        ‰| �!  ||| j                  | j                  ¬«       y )NÚPOSTzhttps://api.cloudflare.com)ÚmethodÚurl)Ústatus_codeÚrequest)r   Úmessager   Úresponse)	r   r   ÚhttpxÚRequestr   ÚResponser   ÚsuperÚ__init__)Úselfr   r   Ú	__class__s      €úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/cloudflare/chat/transformation.pyr   zCloudflareError.__init__   sa   ø€ Ø&ˆÔØˆŒÜ—}‘}¨FÐ8TÔUˆŒÜŸ™°;ÈÏÉÔUˆŒÜ‰ÑØ#ØØ—L‘LØ—]‘]ð	 	õ 	
ó    )Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__©r   s   @r   r   r      s   ø„ ÷

ð 

r   r   c                   óè   ‡ — e Zd Z	 ddedz  dedz  dededededz  defˆ fd	„Zededz  de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ˆ fd„Zdededeej                  z  defd„Zˆ xZS )ÚCloudflareChatConfigNÚapi_baseÚapi_keyÚmodelÚoptional_paramsÚlitellm_paramsÚstreamÚreturnc                 óL   •— t         ‰| �  | j                  |«      |||||¬«      S )N)r$   r%   r&   r'   r(   r)   )r   Úget_complete_urlÚ_resolve_api_base)r   r$   r%   r&   r'   r(   r)   r   s          €r   r,   z%CloudflareChatConfig.get_complete_url   s9   ø€ ô ‰wÑ'Ø×+Ñ+¨HÓ5ØØØ+Ø)Øð (ó 
ð 	
r   c                 óê   — | s't        t        d«      «      }|€t        d«      ‚d|› d�S | j                  d«      }|j	                  d«      r't        j                  d«       |d t        d«        › d�S | S )NÚCLOUDFLARE_ACCOUNT_IDzhMissing CLOUDFLARE_ACCOUNT_ID - set CLOUDFLARE_ACCOUNT_ID in the environment or pass api_base explicitlyz.https://api.cloudflare.com/client/v4/accounts/z/ai/v1ú/z/ai/runz™Cloudflare api_base ending in '/ai/run' is the legacy Workers AI path and no longer serves OpenAI-compatible requests; rewriting to the '/ai/v1' endpoint)r   r   Ú
ValueErrorÚrstripÚendswithr   ÚwarningÚlen)r$   Ú
account_idÚtrimmeds      r   r-   z&CloudflareChatConfig._resolve_api_base0   s�   € áÜ =¼nÐMdÓ>eÓ fˆJØÐ!Ü Ø~óð ð DÀJÀ<ÈvÐVÐVØ!Ÿ™¨Ó-ˆØ×Ñ˜IÔ&Ü×"Ñ"ð lôð Ð/¤ Y£ Ð0Ð1°Ð8Ð8Øˆr   ÚheadersÚmessagesc           	      óJ   •— |€t        d«      ‚t        ‰| �	  |||||||¬«      S )NzƒMissing Cloudflare API Key - A call is being made to cloudflare but no key is set either in the environment variables or via params)r8   r&   r9   r'   r(   r%   r$   )r1   r   Úvalidate_environment)	r   r8   r&   r9   r'   r(   r%   r$   r   s	           €r   r;   z)CloudflareChatConfig.validate_environmentA   sK   ø€ ð ˆ?Üð Vóð ô ‰wÑ+ØØØØ+Ø)ØØð ,ó 
ð 	
r   Úerror_messager   c                 ó   — t        ||¬«      S )N)r   r   )r   )r   r<   r   r8   s       r   Úget_error_classz$CloudflareChatConfig.get_error_classY   s   € ÜØ#Ø!ô
ð 	
r   )N)NN)r   r   r   ÚstrÚdictÚboolr,   Ústaticmethodr-   Úlistr	   r;   Úintr   ÚHeadersr   r>   r    r!   s   @r   r#   r#      s  ø„ ð #ñ
à˜‘*ð
ð �t‘ð
ð ð	
ð
 ð
ð ð
ð �t‘ð
ð 
õ
ð$ ð C¨$¡Jð °3ò ó ðð. #Ø#ñ
àð
ð ð
ð Ð'Ñ(ð	
ð
 ð
ð ð
ð �t‘ð
ð ˜‘*ð
ð 
õ
ð0
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfv÷ 
r   r#   )Útypingr   r   Úlitellm._loggingr   Ú)litellm.llms.base_llm.chat.transformationr   Ú+litellm.llms.openai.chat.gpt_transformationr   Úlitellm.secret_managers.mainr   r   Úlitellm.types.llms.openair	   r   r#   © r   r   ú<module>rM      s9   ðÝ ã å +Ý FÝ G÷õ 7ô
Ð&ô 
ô@
˜?õ @
r   