Xj jddlZddlmZddlmZddlmZddlmZm Z m Z ddl Z ddl Z ddl mZddlmZmZddlmZmZddlmZdd lmZmZdd lmZej8eZd ed efd Z ded edzfdZ!edddeddfd ede"eefdzde#de#dede jHdzdeegdfdzfdZ%y)N)Callable)asynccontextmanager)Any)parse_qsurljoinurlparse) TaskStatus)MemoryObjectReceiveStreamMemoryObjectSendStream)SSEError aconnect_sse)McpHttpClientFactorycreate_mcp_http_client)SessionMessageurlreturnc@t|t|jS)N)rrpath)rs b/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/mcp/client/sse.pyremove_request_paramsrs 3 ** ++ endpoint_urlctt|j}|jddgdxs|jddgdS)N sessionIdr session_id)rrqueryget)r query_paramss r!_extract_session_id_from_endpointrsMH\2889L   K$ 0 3 `|7G7G W[V\7]^_7``ri,headerstimeoutsse_read_timeouthttpx_client_factoryauthon_session_createdc  Ktjd\}tjd\tj4d{} tj dt |||t j||4d{ t d4d{ jjtj dtjfdttf fd } d tf fd } |j| d{} tj d | |j| |  |f|j j#dddd{dddd{j%d{j%d{dddd{y77G747#|j j#wxYw7#1d{7swYxYw7#1d{7swYxYw77o#j%d{7j%d{7wxYw7#1d{7swYyxYww) 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. rNzConnecting to SSE endpoint: )read)r!r%r"GETzSSE connection established task_statuscHK j23d{}tjd|j|jxdk(rt |j }tjd|t }t |}|j|jk7s|j|jk7r%d|}tj|t| rt|}|r ||j|dk(rv|j s tjj|j }tjd|t'|} j%| d{{ tj)d|j7#t $r:}tj#d j%|d{7Yd}~d}~wwxYw7t6nh#t*$r} tj#d | d} ~ wt $r9}tj#d  j%|d{7Yd}~nd}~wwxYw j-d{7y# j-d{7wxYww) NzReceived SSE event: endpointzReceived endpoint URL: z2Endpoint origin does not match connection origin: messagezReceived server message: zError parsing server messagezUnknown SSE event: zEncountered SSE exceptionzError in sse_reader) aiter_sseloggerdebugeventrdatarnetlocschemeerror ValueErrorrstartedtypesJSONRPCMessagemodel_validate_json Exception exceptionsendrwarningr aclose)r*sser url_parsedendpoint_parsed error_msgrr-excsession_messagesse_exc event_sourcer&read_stream_writerrs r sse_readerzsse_client..sse_readerLsF4>-9-C-C-E+Z+Zc & /CCII;-O P&)ii)37>sCHH7M (. 7N|n5](^5=c] :B<:P,6,=,=AWAW,W/9/@/@ODZDZ/Z3eeqdr0s-6-3LL,C2>>?#5";";"==="4";";"===sJ"HHF5HD H)AF8*H G> +H5H8 G;)G6*G-+G60H6G;;HHJ I' H"" I'.)I"II"J"I''J*J"=J>J"JJJJ"rc TK 4d{23d{}tjd|j||jj dddd{}|j tjd|j 777;6dddd{7n#1d{7swYnxYwn$#t$rtjdYnwxYwjd{7y#jd{7wxYww)NzSending client message: Tjson)by_aliasmode exclude_none)rKz"Client message sent successfully: zError in post_writer) r/r0postr- model_dumpraise_for_status status_coder;r<r?)rrEresponseclient write_streamwrite_stream_readers r post_writerzsse_client..post_writers*8': n n=P !n !n/$*LL3KOK\1]$^5;[[(4-<-D-D-O-O59179=.P.*6A6&0&H%-$=$=$?$*LL3UV^VjVjUk1l$m n !n0&>Q n n n n n )E",,-CDE#/"5"5"777,"5"5"777sD(C BC B6B#BB#A B6%B!&7B6C B#!B6#B6$ C /B20C 6C<B? =CC D C-*D ,C--D 0D(DD( D%D!D%%D(z(Starting post writer with endpoint URL: )anyiocreate_memory_object_streamcreate_task_groupr/r0rhttpxTimeoutr rSrQTASK_STATUS_IGNOREDr strstart start_soon cancel_scopecancelr?)rr!r"r#r$r%r& read_streamtgrIrWrrTrGrHrUrVs` ` @@@@@r sse_clientres[<',&G&G&J# (-(I(I!(L%L%&&(e(e(Bd ( LL78Mc8R7ST U+dEMM'P`4a_ 1_ 1'\1\1" ))::<LL!=>8=7P7P7>%/_7>7>r88(*,*)=#=LLL#KL>!Z[MM+|<1)<77..0y\1\1_ 1_ 1B%++- - -%%' ' 'Ke(e(e(_ 1\1j$>..0y\1\1\1\1_ 1_ 1_ 1_ 1B . '%++- - -%%' ' 'Ke(e(e(e(sXA J G!J I6AH=G$H=!H$3G' 4H$7A8H /G* 0.H G,&H  H$ H  H$ H=H"H= I63H94I6 H; I6 J I4J $H='H$*H ,H H  H$ H HH H$"H=$H6 *H-+H6 2H=9I6;I6=I1I I1*I- +I11I64J 6J<I? =JJ )&loggingcollections.abcr contextlibrtypingr urllib.parserrrrXr[ anyio.abcr anyio.streams.memoryr r httpx_sser r mcp.typesr8mcp.shared._httpx_utilsrrmcp.shared.messager getLogger__name__r/r^rrdictfloatAuthrerrrws$*44 R,P-   8 $,s,s,aCaC$Ja &*$1G"7;E( E( #s(^d "E(E( E( / E( **t  E(!#-4E(E(r