
    {h	                         d dl Z d dlmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ  e j&                  e      Zeded	e
d
efd       Zy)    N)asynccontextmanager)MemoryObjectReceiveStreamMemoryObjectSendStream)ValidationError)ReceiveScopeSend)	WebSocket)SessionMessagescopereceivesendc                  	
K   t        | ||      		j                  d       d{    t        j                  d      \  }t        j                  d      \  }
	fd}	
fd}t        j                         4 d{   }|j                  |       |j                  |       ||f ddd      d{    y7 7 @7 	# 1 d{  7  sw Y   yxY ww)z
    WebSocket server transport for MCP. This is an ASGI application, suitable to be
    used with a framework like Starlette and a server like Hypercorn.
    mcp)subprotocolNr   c                     K   	 4 d {    j                         2 3 d {   } 	 t        j                  j                  |       }t        |      }j                  |       d {    N7 b7 K# t        $ r$}j                  |       d {  7   Y d }~zd }~ww xY w7 96 d d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        j                  $ r j                          d {  7   Y y w xY ww)N)
	iter_texttypesJSONRPCMessagemodel_validate_jsonr   r   r   anyioClosedResourceErrorclose)msgclient_messageexcsession_messageread_stream_writer	websockets       U/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/mcp/server/websocket.py	ws_readerz#websocket_server.<locals>.ws_reader#   s     	$) 	C 	C!*!4!4!6 C C#!).)=)=)Q)QRU)V
 '5^&DO,11/BBB	CC + !055c::: !
 C "7	C 	C 	C 	C 	C (( 	$//###	$s   C>C A.C B7B$A0B$B7A2	B7(B")B7.C 0B$2	B;BB
BB7BB7$B7%C 0B31C 6C>7C	=C >C	C C>	C &C;2C53C;8C>:C;;C>c                  h  K   	 4 d {    2 3 d {   } | j                   j                  dd      }j                  |       d {    @7 F7 =7 	6 d d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        j                  $ r j                          d {  7   Y y w xY ww)NT)by_aliasexclude_none)messagemodel_dump_json	send_textr   r   r   )r   objr   write_stream_readers     r    	ws_writerz#websocket_server.<locals>.ws_writer2   s     	$* 3 3-@ 3 3/)11AA4^bAcC#--c222332 .A3 3 3 3 3 (( 	$//###	$s   B2B  AB  A+AAA2A+AA+B  AA+A+B  $A'%B  *B2+A=1A42A=9B  <B2=B   &B/&B)'B/,B2.B//B2)r
   acceptr   create_memory_object_streamcreate_task_group
start_soon)r   r   r   read_streamwrite_streamr!   r*   tgr   r   r)   s           @@@r    websocket_serverr2      s      %$/I


u

--- ',&G&G&J#(-(I(I!(L%L%$$ &&( * *B
i 
i L))* * *G .F* * * * *sX   #CC ACCC*C/C:C;CCCCCCC)logging
contextlibr   r   anyio.streams.memoryr   r   pydantic_corer   starlette.typesr   r   r	   starlette.websocketsr
   	mcp.typesr   mcp.shared.messager   	getLogger__name__loggerr2        r    <module>r@      s^     *  R ) 0 0 *  -			8	$ -*% -*' -* -* -*r?   