Ë
    uPêj_  ã                   ól   — d Z ddlmZ ddl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.
é    )ÚAsyncIterator)ÚTYPE_CHECKINGÚFinal)ÚLiteLLMSendMessageResponse)Ú	A2AClient)Ú	AgentCardÚSendMessageRequestÚSendStreamingMessageRequestÚSendStreamingMessageResponsec            	       óp   — e Zd ZdZ	 	 ddededeeef   dz  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       ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/a2a_protocol/client.pyÚ__init__zA2AClient.__init__2   s"   € ð !ˆŒØˆŒØ*ˆÔØ15ˆÕó    Ú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_clientE   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_cardQ   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_message[   s3   è ø€ å;à"&×"2Ñ"2Ó"4×4ˆ
Ù"¨jÀ'ÔJ×JÐJð 5øØ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_streamingb   sH   è ø€ õ 	Fà"&×"2Ñ"2Ó"4×4ˆ
Ù2¸jÐRYÔZ÷ 	ð 	�%ØŒKð 5øð	øÑZùs(   ‚A œ:�A «>¯<°>³A ¼>¾A )g      N@N)r   ÚA2AClientType)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚfloatÚdictr   r   r   r   r$   r   r(   © r   r   r   r      sz   „ ñð< Ø/3ñ	6àð6ð ð6ð ˜C ˜H‘~¨Ñ,ó	6ó&
 ó
ðKÐ*>ð KÐC]ó KðØ4ðà	Ð5Ñ	6ôr   r   N)r-   Úcollections.abcr   Útypingr   r   Úlitellm.types.agentsr   Ú
a2a.clientr   r)   Ú	a2a.typesr   r	   r
   r   r1   r   r   ú<module>r7      s1   ðñõ *ß 'å ;áÝ5÷ó ÷Tò Tr   