Ë
    uPêjP,  ã                   óº   — d dl Z d dlmZmZ d dlmZmZmZmZ d dl	Z	d dl
mZmZmZmZ d dl­ d dlmZ d dlmZ erd dlmZ d	d
lmZ eZeZneZeZ G d„ de«      Zy)é    N)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚFinalÚcast)ÚResponseInputParamÚ!ResponsesAPIOptionalRequestParamsÚResponsesAPIResponseÚResponsesAPIStreamingResponse)Ú*)ÚGenericLiteLLMParams)ÚLlmProviders)ÚLoggingé   ©ÚBaseLLMExceptionc                   óØ  — e Zd Zd„ Zeedefd„«       «       Zed„ «       Z	de
fd„Z	 	 	 	 d;deded	ed
ededz  dedz  de
dz  de
dz  deeedz  f   fd„Zededefd„«       Zededede
defd„«       Zededededz  defd„«       Zed
edz  dedefd„«       Zededeez  dedededefd„«       Zededej6                  dedefd„«       Zededededefd„«       Z eded
edededeeef   f
d „«       Z!edej6                  dede"fd!„«       Z#eded
edededeeef   f
d"„«       Z$edej6                  dedefd#„«       Z%e	 	 	 	 	 d<ded
ededed$edz  d%edz  d&ee   dz  d'e&d(e'd)   deeef   fd*„«       Z(edej6                  dedefd+„«       Z)d,ed-e&deejT                  z  de+fd.„Z,	 d=dedz  de
dz  d/edz  de
fd0„Z-de
fd1„Z.d
edz  dedefd2„Z/de
fd3„Z0eded
edededeeef   f
d4„«       Z1edej6                  dedefd5„«       Z2ededeez  ded
edededeeef   fd6„«       Z3edej6                  dedefd7„«       Z4e5deez  deez  fd8„«       Z6e5d9eee7f   deee7f   fd:„«       Z8y)>ÚBaseResponsesAPIConfigc                  ó   — y ©N© ©Úselfs    ús/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/responses/transformation.pyÚ__init__zBaseResponsesAPIConfig.__init__   s   € Øó    Úreturnc                  ó   — y r   r   r   s    r   Úcustom_llm_providerz*BaseResponsesAPIConfig.custom_llm_provider!   s   € ð 	r   c                 ó  — | j                   j                  «       D ��ci c]`  \  }}|j                  d«      sJ|j                  d«      s9t        |t        j
                  t        j                  t        t        f«      s|�||“Œb c}}S c c}}w )NÚ__Ú_abc)	Ú__dict__ÚitemsÚ
startswithÚ
isinstanceÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚclassmethodÚstaticmethod)ÚclsÚkÚvs      r   Ú
get_configz!BaseResponsesAPIConfig.get_config&   s€   € ð Ÿ™×*Ñ*Ó,÷
á��1Ø—<‘< Ô%Ø—L‘L Ô(ÜØä×&Ñ&Ü×-Ñ-ÜÜ ð	ôð �ð ˆq‰Dó
ð 	
ùó 
s   žA%Bc                  ó   — y)zÍReturn True if this provider handles the file_search tool natively.

        Override in provider subclasses that support file_search without
        LiteLLM emulation (e.g. OpenAI, Azure OpenAI).
        Fr   r   s    r   Úsupports_native_file_searchz2BaseResponsesAPIConfig.supports_native_file_search9   s   € ð r   NÚheadersÚoptional_paramsÚrequest_dataÚapi_baseÚapi_keyÚmodelÚstreamÚfake_streamc	                 ó
   — |dfS )a<  Sign the request after the body is finalized.

        Default is a no-op (returns headers unchanged, no signed body). Providers
        whose endpoint requires request signing (e.g. Bedrock Mantle SigV4)
        override this and return the signed body bytes so the handler sends those
        exact bytes.
        Nr   )	r   r3   r4   r5   r6   r7   r8   r9   r:   s	            r   Úsign_requestz#BaseResponsesAPIConfig.sign_requestA   s   € ð$ ˜ˆ}Ðr   c                  ó   — y r   r   )r   r8   s     r   Úget_supported_openai_paramsz2BaseResponsesAPIConfig.get_supported_openai_paramsU   s   € àr   Úresponse_api_optional_paramsÚdrop_paramsc                  ó   — y r   r   )r   r?   r8   r@   s       r   Úmap_openai_paramsz(BaseResponsesAPIConfig.map_openai_paramsY   ó   € ð 	r   Úlitellm_paramsc                 ó   — i S r   r   )r   r3   r8   rD   s       r   Úvalidate_environmentz+BaseResponsesAPIConfig.validate_environmentb   s   € àˆ	r   c                 ó    — |€t        d«      ‚|S )z{
        OPTIONAL

        Get the complete url for the request

        Some providers need `model` in `api_base`
        zapi_base is required)Ú
ValueError)r   r6   rD   s      r   Úget_complete_urlz'BaseResponsesAPIConfig.get_complete_urlf   s   € ð ÐÜÐ3Ó4Ð4Øˆr   ÚinputÚ$response_api_optional_request_paramsc                  ó   — y r   r   )r   r8   rJ   rK   rD   r3   s         r   Útransform_responses_api_requestz6BaseResponsesAPIConfig.transform_responses_api_requestw   s   € ð 	r   Úraw_responseÚlogging_objc                  ó   — y r   r   )r   r8   rN   rO   s       r   Útransform_response_api_responsez6BaseResponsesAPIConfig.transform_response_api_response‚   rC   r   Úparsed_chunkc                  ó   — y)zb
        Transform a parsed streaming response chunk into a ResponsesAPIStreamingResponse
        Nr   )r   r8   rR   rO   s       r   Útransform_streaming_responsez3BaseResponsesAPIConfig.transform_streaming_response‹   s   � r   Úresponse_idc                  ó   — y r   r   ©r   rU   r6   rD   r3   s        r   Ú%transform_delete_response_api_requestz<BaseResponsesAPIConfig.transform_delete_response_api_request™   ó   € ð 	r   c                  ó   — y r   r   ©r   rN   rO   s      r   Ú&transform_delete_response_api_responsez=BaseResponsesAPIConfig.transform_delete_response_api_response£   ó   € ð 	r   c                  ó   — y r   r   rW   s        r   Ú"transform_get_response_api_requestz9BaseResponsesAPIConfig.transform_get_response_api_request²   rY   r   c                  ó   — y r   r   r[   s      r   Ú#transform_get_response_api_responsez:BaseResponsesAPIConfig.transform_get_response_api_response¼   r]   r   ÚafterÚbeforeÚincludeÚlimitÚorder)ÚascÚdescc
                  ó   — y r   r   )
r   rU   r6   rD   r3   rb   rc   rd   re   rf   s
             r   Ú"transform_list_input_items_requestz9BaseResponsesAPIConfig.transform_list_input_items_requestÇ   s   € ð 	r   c                  ó   — y r   r   r[   s      r   Ú#transform_list_input_items_responsez:BaseResponsesAPIConfig.transform_list_input_items_responseÖ   r]   r   Úerror_messageÚstatus_codec                 ó$   — ddl m}  ||||¬«      ‚)Nr   r   )rn   Úmessager3   )Úchat.transformationr   )r   rm   rn   r3   r   s        r   Úget_error_classz&BaseResponsesAPIConfig.get_error_classâ   s   € Ý:áØ#Ø!Øô
ð 	
r   r    c                  ó   — y)zQReturns True if litellm should fake a stream for the given model and stream valueFr   )r   r8   r9   r    s       r   Úshould_fake_streamz)BaseResponsesAPIConfig.should_fake_streamë   s   € ð r   c                  ó   — y)aœ  
        Returns True if the provider has a native WebSocket endpoint for Responses API.

        Providers with native websocket support can connect directly to wss:// endpoints.
        Providers without native support will use the ManagedResponsesWebSocketHandler
        which makes HTTP streaming calls and forwards events over the websocket.

        Default: False (use managed websocket handler)
        Fr   r   s    r   Úsupports_native_websocketz0BaseResponsesAPIConfig.supports_native_websocketô   s   € ð r   c                 ól   — | j                  ||¬«      }|j                  dd«      j                  dd«      S )a@  
        Return the wss:// URL for the provider's native Responses WebSocket endpoint.

        Defaults to converting the HTTP URL from get_complete_url. Providers whose
        WebSocket path differs from their HTTP path (e.g. Azure uses
        /openai/v1/responses without api-version) should override this.
        )r6   rD   zhttps://zwss://zhttp://zws://)rI   Úreplace)r   r6   rD   Úhttp_urls       r   Úget_websocket_urlz(BaseResponsesAPIConfig.get_websocket_url   s:   € ð ×/Ñ/¸ÐR`Ð/ÓaˆØ×Ñ 
¨HÓ5×=Ñ=¸iÈÓQÐQr   c                  ó   — y)zô
        Return True if the model should be appended as a ?model= query param to
        the WebSocket URL. Providers that identify the model via the request body
        (e.g. Azure Responses API) should override this to return False.
        Tr   r   s    r   Úmodel_in_websocket_urlz-BaseResponsesAPIConfig.model_in_websocket_url  s   € ð r   c                  ó   — y r   r   rW   s        r   Ú%transform_cancel_response_api_requestz<BaseResponsesAPIConfig.transform_cancel_response_api_request  rY   r   c                  ó   — y r   r   r[   s      r   Ú&transform_cancel_response_api_responsez=BaseResponsesAPIConfig.transform_cancel_response_api_response$  r]   r   c                  ó   — y r   r   )r   r8   rJ   rK   r6   rD   r3   s          r   Ú&transform_compact_response_api_requestz=BaseResponsesAPIConfig.transform_compact_response_api_request3  s   € ð 	r   c                  ó   — y r   r   r[   s      r   Ú'transform_compact_response_api_responsez>BaseResponsesAPIConfig.transform_compact_response_api_response?  r]   r   c           	      óB  — t        | t        «      s| S g }| D ]q  }t        |t        «      rN|j                  d«      dk(  r:|j	                  |j                  «       D ��ci c]  \  }}|dk7  sŒ||“Œ c}}«       Œa|j	                  |«       Œs t        t        |«      S c c}}w )zM
        Remove ``namespace`` from ``custom_tool_call`` input items.
        ÚtypeÚcustom_tool_callÚ	namespace)r'   ÚlistÚdictÚgetÚappendr%   r   r	   )rJ   ÚoutÚitemr.   r/   s        r   Ú5strip_custom_tool_call_namespace_from_responses_inputzLBaseResponsesAPIConfig.strip_custom_tool_call_namespace_from_responses_inputK  s�   € ô ˜%¤Ô&ØˆLØ "ˆØò 	!ˆDÜ˜$¤Ô%¨$¯(©(°6Ó*:Ð>PÒ*PØ—
‘
¨T¯Z©Z«\×N¡T Q¨¸QÀ+Ó=M˜A˜q™DÓNÕOà—
‘
˜4Õ ð		!ô
 Ô&¨Ó,Ð,ùó Os   ÁBÁ*BÚdatac                 ój   — t        | t        «      rd| vr| S i | ¥dt        j                  | d   «      i¥S )zHApply provider-agnostic fixes to an outbound Responses API request dict.rJ   )r'   rŠ   r   r�   )r�   s    r   Ú$normalize_responses_api_request_dictz;BaseResponsesAPIConfig.normalize_responses_api_request_dict\  sI   € ô ˜$¤Ô%¨¸Ñ)<ØˆKð
Øð
àÔ+×aÑaÐbfÐgnÑboÓpñ
ð 	
r   )NNNN)NNNé   rh   r   )9Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r   r    r+   r0   Úboolr2   rŠ   ÚstrÚtupleÚbytesr<   r‰   r>   r
   rB   r   rF   rI   r	   rM   ÚhttpxÚResponseÚLiteLLMLoggingObjr   rQ   r   rT   rX   ÚDeleteResponseResultr\   r_   ra   ÚintÚLiteralrj   rl   ÚHeadersr   rr   rt   rv   rz   r|   r~   r€   r‚   r„   r,   r�   r   r’   r   r   r   r   r      sm  „ òð Øð \ò ó ó ðð ñ
ó ð
ð$¨Tó ð #Ø Ø"Ø#'ñàðð ðð ð	ð
 ðð �t‘ðð �T‰zðð �t‘ðð ˜D‘[ðð 
ˆt�U˜T‘\Ð!Ñ	"óð( ð°ð ¸ò ó ðð ðà&Gðð ðð ð	ð
 
òó ðð ð¨Dð ¸ð ÐNbÐeiÑNið Ðnrò ó ðð ðà˜‘*ðð ðð 
ò	ó ðð  ðàðð Ð'Ñ'ðð /3ð	ð
 -ðð ðð 
òó ðð ðàðð —n‘nðð 'ð	ð
 
òó ðð ðàðð ðð 'ð	ð
 
'òó ðð ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð ð !Ø!Ø$(ØØ(.ñàðð ðð -ð	ð
 ðð �T‰zðð �d‘
ðð �c‘˜TÑ!ðð ðð �}Ñ%ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð +/ñ	à�T‰zðð �t‘ðð ! 4™Zð	ð
 
óð
¨4ó 
ðRà˜‘*ðRð ðRð 
ó	Rð¨ó ð ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð ð	àð	ð Ð'Ñ'ð	ð /3ð		ð
 ð	ð -ð	ð ð	ð 
ˆs�DˆyÑ	ò	ó ð	ð ðà—n‘nðð 'ðð 
ò	ó ðð ð-ØÐ'Ñ'ð-à	Ð!Ñ	!ò-ó ð-ð  ð
°4¸¸S¸±>ð 
ÀdÈ3ÐPSÈ8Ánò 
ó ñ
r   r   )r(   Úabcr   r   Útypingr   r   r   r   rœ   Úlitellm.types.llms.openair	   r
   r   r   Úlitellm.types.responses.mainÚlitellm.types.routerr   Úlitellm.types.utilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjrq   r   Ú_BaseLLMExceptionrž   r   r   r   r   ú<module>r¬      sX   ðÛ ß #ß 2Ó 2ã ÷ó ô +Ý 5Ý ,áÝXåKà*ÐØ(ÑàÐØÐôG
˜Sõ G
r   