Ë
    ïñþi    ã                   ój  — 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	m
Z
 d dlZd dlZd dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ  e j8                  e«      Zdedefd„Z dededz  fd„Z!edddeddfdede"eef   dz  de#de#dedejH                  dz  deegdf   dz  fd„«       Z%y)é    N)ÚCallable)Úasynccontextmanager)ÚAny)Úparse_qsÚurljoinÚurlparse)Ú
TaskStatus)ÚMemoryObjectReceiveStreamÚMemoryObjectSendStream)ÚSSEErrorÚaconnect_sse)ÚMcpHttpClientFactoryÚcreate_mcp_http_client)ÚSessionMessageÚurlÚreturnc                 ó@   — t        | t        | «      j                  «      S )N)r   r   Úpath)r   s    úN/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/mcp/client/sse.pyÚremove_request_paramsr      s   € Ü�3œ ›×*Ñ*Ó+Ð+ó    Úendpoint_urlc                 óš   — t        t        | «      j                  «      }|j                  dd g«      d   xs |j                  dd g«      d   S )NÚ	sessionIdr   Ú
session_id)r   r   ÚqueryÚget)r   Úquery_paramss     r   Ú!_extract_session_id_from_endpointr      sM   € ÜœH \Ó2×8Ñ8Ó9€LØ×Ñ˜K¨$¨Ó0°Ñ3Ò`°|×7GÑ7GÈÐW[ÐV\Ó7]Ð^_Ñ7`Ð`r   é   i,  ÚheadersÚtimeoutÚsse_read_timeoutÚhttpx_client_factoryÚauthÚon_session_createdc           	     ó  ‡ ‡‡‡‡‡‡K  — t        j                  d«      \  Š}t        j                  d«      \  ŠŠt        j                  «       4 ƒd{  –—† }	 t        j	                  dt        ‰ «      › �«        |||t        j                  ||¬«      ¬«      4 ƒd{  –—† Št        ‰d‰ «      4 ƒd{  –—† Š‰j                  j                  «        t        j	                  d«       t         j                  fdt        t           fˆˆˆˆ fd	„}	d
t        fˆˆˆfd„}
|j                  |	«      ƒ d{  –—† }t        j	                  d|› �«       |j                  |
|«       	 |‰f­–— |j                   j#                  «        ddd«      ƒd{  –—†  ddd«      ƒd{  –—†  ‰j%                  «       ƒ d{  –—†  ‰j%                  «       ƒ d{  –—†  ddd«      ƒd{  –—†  y7 �Œ�7 �ŒG7 �Œ47 Œº# |j                   j#                  «        w xY w7 Œ# 1 ƒd{  –—†7  sw Y   Œ�xY w7 Œ†# 1 ƒd{  –—†7  sw Y   Œ–xY w7 Œ…7 Œo# ‰j%                  «       ƒ d{  –—†7   ‰j%                  «       ƒ d{  –—†7   w xY w7 Œ˜# 1 ƒd{  –—†7  sw Y   yxY w­w)a9  
    Client transport for SSE.

    `sse_read_timeout` determines how long (in seconds) the client will wait for a new
    event before disconnecting. All other HTTP operations are controlled by `timeout`.

    Args:
        url: The SSE endpoint URL.
        headers: Optional headers to include in requests.
        timeout: HTTP timeout for regular operations.
        sse_read_timeout: Timeout for SSE read operations.
        auth: Optional HTTPX authentication handler.
        on_session_created: Optional callback invoked with the session ID when received.
    r   NzConnecting to SSE endpoint: )Úread)r!   r%   r"   ÚGETzSSE connection establishedÚtask_statusc              “   óH  •K  — 	 ‰j                  «       2 3 d {  –—† }t        j                  d|j                  › �«       |j                  xdk(  rÆ t	        ‰|j
                  «      }t        j                  d|› �«       t        ‰«      }t        |«      }|j                  |j                  k7  s|j                  |j                  k7  r%d|› �}t        j                  |«       t        |«      ‚‰rt        |«      }|r ‰|«       | j                  |«       �Œdk(  rv|j
                  s�Œ	 t        j                  j                  |j
                  «      }t        j                  d|› �«       t'        |«      }	‰j%                  |	«      ƒ d {  –—†  �Œ{	 t        j)                  d|j                  › �«       �Œ 7 �Œœ# t         $ r:}t        j#                  d«       ‰j%                  |«      ƒ d {  –—†7   Y d }~�Œád }~ww xY w7 Œt6 nh# t*        $ r}
t        j#                  d	«       |
‚d }
~
wt         $ r9}t        j#                  d
«       ‰j%                  |«      ƒ d {  –—†7   Y d }~nd }~ww xY w‰j-                  «       ƒ d {  –—†7   y # ‰j-                  «       ƒ d {  –—†7   w xY w­w)NzReceived SSE event: ÚendpointzReceived endpoint URL: z2Endpoint origin does not match connection origin: ÚmessagezReceived server message: zError parsing server messagezUnknown SSE event: zEncountered SSE exceptionzError in sse_reader)Ú	aiter_sseÚloggerÚdebugÚeventr   Údatar   ÚnetlocÚschemeÚerrorÚ
ValueErrorr   ÚstartedÚtypesÚJSONRPCMessageÚmodel_validate_jsonÚ	ExceptionÚ	exceptionÚsendr   Úwarningr   Úaclose)r*   Ússer   Ú
url_parsedÚendpoint_parsedÚ	error_msgr   r-   ÚexcÚsession_messageÚsse_excÚevent_sourcer&   Úread_stream_writerr   s              €€€€r   Ú
sse_readerzsse_client.<locals>.sse_readerL   sF  øè ø€ ð4>Ø-9×-CÑ-CÓ-E÷ +Zð +Z cÜ &§¡Ð/CÀCÇIÁIÀ;Ð-OÔ PØ&)§i¡iÝ)3Ü7>¸sÀCÇHÁHÓ7M¨Ü(.¯©Ð7NÈ|ÈnÐ5]Ô(^ä5=¸c³]¨
Ü:BÀ<Ó:P¨à,6×,=Ñ,=À×AWÑAWÒ,WØ/9×/@Ñ/@ÀO×DZÑDZÒ/Zð 3eÐeqÐdrÐ0sð -6ô -3¯L©L¸Ô,CÜ2<¸YÓ2GÐ,Gá+=Ü9ZÐ[gÓ9h¨JÙ/9Ù0BÀ:Ô0Nà(3×(;Ñ(;¸LÖ(Iã)2à/2¯xªxÙ,4ð)5Ü6;×6JÑ6J×6^Ñ6^Ø03·±ó7.¨Gô -3¯L©LÐ;TÐU\ÐT]Ð9^Ô,_ô ;IÈÓ:Q¨Ø.@×.EÑ.EÀoÓ.V×(VÒ(VØ)*Ü(.¯©Ð9LÈSÏYÉYÈKÐ7XÖ(YðW+ZúôF 09ò )5Ü,2×,<Ñ,<Ð=[Ô,\Ø2D×2IÑ2IÈ#Ó2N×,NÑ,NÝ,4ûð)5úð )WøñS .FøôX  (ò *Ü"×,Ñ,Ð-HÔIØ")˜MûÜ(ò ?Ü"×,Ñ,Ð-BÔCØ"4×"9Ñ"9¸#Ó">×>Ö>ûð?úð #5×";Ñ";Ó"=×=Ò=øÐ"4×";Ñ";Ó"=×=Ò=üsÔ   ƒJ"…H •H ™F5šH �DH Ä)AF8Å*H Æ	G>Æ
+H Æ5H Æ8	G;Ç)G6Ç*G-Ç+G6Ç0H Ç6G;Ç;H È H ÈJ È	I'ÈH"È"I'È.)I"ÉIÉI"ÉJ É"I'É'J É*J"É=J É>J"ÊJÊJÊJÊJ"r   c           
   “   óT  •K  — 	 ‰4 ƒd {  –—†  ‰2 3 d {  –—† }t         j                  d|› �«       ‰j                  | |j                  j	                  ddd¬«      ¬«      ƒ d {  –—† }|j                  «        t         j                  d|j                  › �«       Œ‹7 Œ‘7 Œˆ7 Œ;6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wn$# t        $ r t         j                  d«       Y nw xY w‰j                  «       ƒ d {  –—†7   y # ‰j                  «       ƒ d {  –—†7   w xY w­w)NzSending client message: TÚjson)Úby_aliasÚmodeÚexclude_none)rK   z"Client message sent successfully: zError in post_writer)
r/   r0   Úpostr-   Ú
model_dumpÚraise_for_statusÚstatus_coder;   r<   r?   )r   rE   ÚresponseÚclientÚwrite_streamÚwrite_stream_readers      €€€r   Úpost_writerzsse_client.<locals>.post_writer…   s*  øè ø€ ð8Ø':÷ nñ nØ=P÷ !nð !n¨/Ü$*§L¡LÐ3KÈOÐK\Ð1]Ô$^Ø5;·[±[Ø(4Ø-<×-DÑ-D×-OÑ-OØ59Ø17Ø9=ð .Pó .*ð 6Aó 6&÷ 0& Hð %-×$=Ñ$=Ô$?Ü$*§L¡LÐ3UÐV^×VjÑVjÐUkÐ1lÕ$mðnøð!nøð0&øð >Q÷n÷ n÷ n÷ nó nüô  )ò EÜ"×,Ñ,Ð-CÖDðEúð #/×"5Ñ"5Ó"7×7Ò7ø ,×"5Ñ"5Ó"7×7Ò7üsÄ   ƒD(…C ‹BŒC �B6’B#–B—B#šAB6Á%B!Á&7B6ÂC ÂB#Â!B6Â#B6Â$C Â/B2Â0C Â6CÂ<B?Â=CÃC ÃD
 ÃC-Ã*D
 Ã,C-Ã-D
 Ã0D(ÄDÄD(Ä
D%ÄD!ÄD%Ä%D(z(Starting post writer with endpoint URL: )ÚanyioÚcreate_memory_object_streamÚcreate_task_groupr/   r0   r   ÚhttpxÚTimeoutr   rS   rQ   ÚTASK_STATUS_IGNOREDr	   ÚstrÚstartÚ
start_soonÚcancel_scopeÚcancelr?   )r   r!   r"   r#   r$   r%   r&   Úread_streamÚtgrI   rW   r   rT   rG   rH   rU   rV   s   `     `     @@@@@r   Ú
sse_clientre      s[  þè ø€ ô< ',×&GÑ&GÈÓ&JÑ#Ð˜Ü(-×(IÑ(IÈ!Ó(LÑ%€LÐ%ä×&Ñ&Ó(÷ e(ð e(¨Bðd	(Ü�L‰LÐ7Ô8MÈcÓ8RÐ7SÐTÔUÙ+Ø d´E·M±MÀ'ÐP`Ô4aô÷ _1ð _1àÜ'ØØØó÷ \1ð \1ð "Ø ×)Ñ)×:Ñ:Ô<Ü—L‘LÐ!=Ô>ô 8=×7PÑ7Pñ7>Ü%/´¡_÷7>ð 7>ðr8¼÷ 8ð( *,¯©°*Ó)=×#=�LÜ—L‘LÐ#KÈLÈ>Ð!ZÔ[Ø—M‘M +¨|Ô<ð1Ø)¨<Ð7Ó7àŸ™×.Ñ.Ô0÷y\1÷ \1÷_1÷ _1ðB %×+Ñ+Ó-×-Ð-Ø×%Ñ%Ó'×'Ð'÷Ke(÷ e(ñ e(ùð_1ùð\1ùðj $>ùð Ÿ™×.Ñ.Õ0úðy\1ø÷ \1÷ \1ñ \1úð_1ø÷ _1÷ _1ñ _1úðB .øØ'ùð %×+Ñ+Ó-×-Ñ-Ø×%Ñ%Ó'×'Ò'úðKe(ø÷ e(÷ e(ñ e(üsX  ‰A	JÁG!ÁJÁI6ÁAH=ÂG$ÂH=Â!H$Â3G'
Â4H$Â7A8HÄ/G*
Ä0.HÅG,Å&HÆ H$ÆHÆH$ÆH=ÆH"ÆH=Æ I6Æ3H9Æ4I6ÇH;ÇI6ÇJÇI4ÇJÇ$H=Ç'H$Ç*HÇ,H	ÈHÈH$ÈHÈHÈHÈH$È"H=È$H6	È*H-È+H6	È2H=È9I6È;I6È=I1ÉI
ÉI1É*I-
É+I1É1I6É4JÉ6JÉ<I?É=JÊJ)&ÚloggingÚcollections.abcr   Ú
contextlibr   Útypingr   Úurllib.parser   r   r   rX   r[   Ú	anyio.abcr	   Úanyio.streams.memoryr
   r   Ú	httpx_sser   r   Ú	mcp.typesr8   Úmcp.shared._httpx_utilsr   r   Úmcp.shared.messager   Ú	getLoggerÚ__name__r/   r^   r   r   ÚdictÚfloatÚAuthre   © r   r   ú<module>rw      s  ðÛ Ý $Ý *Ý ß 4Ñ 4ã Û Ý  ß Rß ,å ß PÝ -à	ˆ×	Ñ	˜8Ó	$€ð,˜sð , só ,ða°Cð a¸CÀ$¹Jó að
 ð &*ØØ$Ø1GØ"Ø7;ñE(Ø	ðE(à�#�s�(‰^˜dÑ"ðE(ð ðE(ð ð	E(ð
 /ðE(ð �*‰*�tÑ
ðE(ð ! # ¨ Ñ-°Ñ4òE(ó ñE(r   