Ë
    ×AHjk  ã                   óh   — d Z ddlmZmZmZmZ ddlmZ erddlm	Z
 ddlmZmZmZmZ  G d„ d«      Z	y)	zW
LiteLLM A2A Client class.

Provides a class-based interface for A2A agent invocation.
é    )ÚTYPE_CHECKINGÚAsyncIteratorÚDictÚOptional)ÚLiteLLMSendMessageResponse)Ú	A2AClient)Ú	AgentCardÚSendMessageRequestÚSendStreamingMessageRequestÚSendStreamingMessageResponsec            
       óp   — e Zd ZdZ	 	 ddededeeeef      fd„Zdd„Z	dd	„Z
d
ddefd„Zd
dded   fd„Zy)r   aõ  
    LiteLLM wrapper for A2A agent invocation.

    Creates the underlying A2A client once on first use and reuses it.

    Example:
        ```python
        from litellm.a2a_protocol import A2AClient
        from a2a.types import SendMessageRequest, MessageSendParams
        from uuid import uuid4

        client = A2AClient(base_url="http://localhost:10001")

        request = SendMessageRequest(
            id=str(uuid4()),
            params=MessageSendParams(
                message={
                    "role": "user",
                    "parts": [{"kind": "text", "text": "Hello!"}],
                    "messageId": uuid4().hex,
                }
            )
        )
        response = await client.send_message(request)
        ```
    NÚbase_urlÚtimeoutÚextra_headersc                 ó<   — || _         || _        || _        d| _        y)a&  
        Initialize the A2A client wrapper.

        Args:
            base_url: The base URL of the A2A agent (e.g., "http://localhost:10001")
            timeout: Request timeout in seconds (default: 60.0)
            extra_headers: Optional additional headers to include in requests
        N)r   r   r   Ú_a2a_client)Úselfr   r   r   s       úS/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/a2a_protocol/client.pyÚ__init__zA2AClient.__init__1   s"   € ð !ˆŒØˆŒØ*ˆÔØ6:ˆÕó    Úreturnc              ƒ   ó¶   K  — | j                   €<ddlm}  || j                  | j                  | j
                  ¬«      ƒ d{  –—† | _         | j                   S 7 Œ­w)z(Get or create the underlying A2A client.Nr   )Úcreate_a2a_client©r   r   r   )r   Úlitellm.a2a_protocol.mainr   r   r   r   )r   r   s     r   Ú_get_clientzA2AClient._get_clientD   sQ   è ø€ à×ÑÐ#ÝCá%6ØŸ™ØŸ™Ø"×0Ñ0ô&÷  ˆDÔð
 ×ÑÐð ús   ‚?AÁAÁAc              ƒ   ó|   K  — ddl m}  || j                  | j                  | j                  ¬«      ƒ d{  –—† S 7 Œ­w)z%Fetch the agent card from the server.r   )Úaget_agent_cardr   N)r   r   r   r   r   )r   r   s     r   Úget_agent_cardzA2AClient.get_agent_cardP   s7   è ø€ å=á$Ø—]‘]Ø—L‘LØ×,Ñ,ô
÷ 
ð 	
ð 
ús   ‚3<µ:¶<Úrequestr
   c              ƒ   ór   K  — ddl m} | j                  «       ƒ d{  –—† } |||¬«      ƒ d{  –—† S 7 Œ7 Œ­w)z Send a message to the A2A agent.r   )Úasend_messageN©Ú
a2a_clientr    )r   r"   r   )r   r    r"   r$   s       r   Úsend_messagezA2AClient.send_messageZ   s5   è ø€ õ 	<à×+Ñ+Ó-×-ˆ
Ù"¨jÀ'ÔJ×JÐJð .øØJús   ‚7œ37®5¯7µ7r   r   c                ó„   K  — ddl m} | j                  «       ƒ d{  –—† } |||¬«      2 3 d{  –—† }|­–— Œ7 Œ7 Œ6 y­w)z*Send a streaming message to the A2A agent.r   )Úasend_message_streamingNr#   )r   r'   r   )r   r    r'   r$   Úchunks        r   Úsend_message_streamingz A2AClient.send_message_streamingc   sN   è ø€ õ 	Fà×+Ñ+Ó-×-ˆ
Ù2Ø!¨7ô
÷ 	ð 	%ð ŒKð	 .øð	øñ 
ùs(   ‚A œ:A «>¯<°>³A ¼>¾A )g      N@N)r   ÚA2AClientType)r   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚfloatr   r   r   r   r   r   r%   r   r)   © r   r   r   r      sz   „ ñð< Ø26ñ	;àð;ð ð;ð    S¨# X¡Ñ/ó	;ó&
 ó
ðKØ+ðKà	#óKð
Ø4ð
à	Ð5Ñ	6ô
r   r   N)r.   Útypingr   r   r   r   Úlitellm.types.agentsr   Ú
a2a.clientr   r*   Ú	a2a.typesr	   r
   r   r   r1   r   r   ú<module>r6      s2   ðñ÷ @Ó ?å ;áÝ5÷ó ÷Xò Xr   