Ë
    uPêjË  ã                   ó¤   — d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZ erddlmZ  G d„ de«      Z ed	d	¬
«       G d„ d«      «       Zy)a¨  
The per-request context an MCP gateway handler needs.

Listing and executing MCP tools both need the caller's identity, their MCP auth
headers, and the request's trace/tag identifiers. Every gateway surface resolves
the same set from its own kwargs, so resolving it in one place keeps a new
surface from silently dropping a field: omitting the auth headers, for instance,
still executes the tool, just with no credentials.
é    )ÚIterableÚMappingÚSequence)Ú	dataclass)ÚTYPE_CHECKINGÚAnyÚFinal)ÚNotRequiredÚReadOnlyÚ	TypedDict)ÚUserAPIKeyAuthc                   ó(   — e Zd ZU dZeed      ed<   y)Ú_AuthCarryingMetadatazUThe one key this module reads out of a request's ``metadata`` / ``litellm_metadata``.úUserAPIKeyAuth | NoneÚuser_api_key_authN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   Ú__annotations__© ó    új/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/responses/mcp/request_context.pyr   r      s   … Ù_à Ð,CÑ DÑEÔEr   r   T)ÚfrozenÚslotsc                   ó
  — e Zd ZU dZded<   dZedz  ed<   dZeeeeef   f   dz  ed<   dZ	eeef   dz  ed<   dZ
eeef   dz  ed<   dZee   dz  ed	<   dZedz  ed
<   dZedz  ed<   edeeef   dee   dz  dd fd„«       Zy)ÚMCPRequestContextzLEverything a gateway handler must forward to MCP tool listing and execution.r   r   NÚmcp_auth_headerÚmcp_server_auth_headersÚoauth2_headersÚraw_headersÚrequest_tagsÚlitellm_trace_idÚlitellm_call_idÚkwargsÚtoolsÚreturnc                 ó¶  — ddl m} ddlm} |j	                  d«      xs i }|j	                  d«      xs i }|j	                  d«      xs$ |j	                  d«      xs |j	                  d«      }|j                  |j	                  d«      |¬«      \  }}	}
} | |||	|
||j                  t        |«      «      |j	                  d	«      |j	                  d
«      ¬«      S )a5  
        Build the context from a gateway handler's kwargs.

        ``user_api_key_auth`` is read from both metadata keys because routes differ:
        LITELLM_METADATA_ROUTES (``/v1/messages``, ``/responses``) carry it in
        ``litellm_metadata`` while ``/chat/completions`` uses ``metadata``.
        r   )ÚLiteLLM_Proxy_MCP_Handler)ÚResponsesAPIRequestUtilsÚlitellm_metadataÚmetadatar   Úsecret_fields)r-   r&   r#   r$   )r   r   r   r    r!   r"   r#   r$   )Ú/litellm.responses.mcp.litellm_proxy_mcp_handlerr)   Úlitellm.responses.utilsr*   ÚgetÚ extract_mcp_headers_from_requestÚ_get_parent_request_tagsÚdict)Úclsr%   r&   r)   r*   r+   r,   r   r   r   r    r!   s               r   ÚresolvezMCPRequestContext.resolve(   sï   € õ	
õ 	Eà9?¿¹ÐDVÓ9WÒ9]Ð[]ÐØ17·±¸JÓ1GÒ1MÈ2ˆà�J‰JÐ*Ó+ò 1Ø×#Ñ#Ð$7Ó8ò1à�|‰|Ð/Ó0ð 	ð %×EÑEØ Ÿ*™* _Ó5Øð Fó 
ñ	
ØØ#ØØñ Ø/Ø+Ø$;Ø)Ø#Ø2×KÑKÌDÐQWËLÓYØ#ŸZ™ZÐ(:Ó;Ø"ŸJ™JÐ'8Ó9ô	
ð 		
r   )r   r   r   r   r   r   Ústrr   r   r    r!   r"   r   r#   r$   Úclassmethodr   r   Úobjectr5   r   r   r   r   r      sÝ   … áVà.Ó.Ø"&€O�S˜4‘ZÓ&ØFJÐ˜W S¨'°#°s°(Ñ*;Ð%;Ñ<¸tÑCÓJØ/3€N�G˜C ˜HÑ%¨Ñ,Ó3Ø,0€K�˜˜c˜Ñ" TÑ)Ó0Ø)-€L�(˜3‘- $Ñ&Ó-Ø#'Ð�c˜D‘jÓ'Ø"&€O�S˜4‘ZÓ&àð,
à˜˜S˜Ñ!ð,
ð ˜Ñ $Ñ&ð,
ð 
ò	,
ó ñ,
r   r   N)r   Úcollections.abcr   r   r   Údataclassesr   Útypingr   r   r	   Útyping_extensionsr
   r   r   Úlitellm.proxy._typesr   r   r   r   r   r   ú<module>r>      sU   ðñ÷ 8Ñ 7Ý !ß ,Ñ ,ç >Ñ >áÝ3ôF˜Iô Fñ �$˜dÔ#÷9
ð 9
ó $ñ9
r   