
    {h                         d Z ddlZddlmZ ddlmZ ddlZddlZddlm	Z	m
Z
 ddlmZ ddlmZ e	 	 d
dej                  e   dz  dej                  e   dz  fd	       Zy)aY  
Stdio Server Transport Module

This module provides functionality for creating an stdio-based transport layer
that can be used to communicate with an MCP client through standard input/output
streams.

Example usage:
```
    async def run_server():
        async with stdio_server() as (read_stream, write_stream):
            # read_stream contains incoming JSONRPCMessages from stdin
            # write_stream allows sending JSONRPCMessages to stdout
            server = await create_my_server()
            await server.run(read_stream, write_stream, init_options)

    anyio.run(run_server)
```
    N)asynccontextmanager)TextIOWrapper)MemoryObjectReceiveStreamMemoryObjectSendStream)SessionMessagestdinstdoutc                R   K    s8t        j                  t        t        j                  j
                  d             s8t        j                  t        t        j                  j
                  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 # 1 d{  7  sw Y   yxY ww)z
    Server transport for stdio: this communicates with an MCP client by reading
    from the current process' stdin and writing to stdout.
    zutf-8)encodingr   c                     K   	 4 d {    2 3 d {   } 	 t         j                  j                  |       }t        |      }j	                  |       d {    N7 T7 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* t        j                  j                          d {  7   Y y w xY ww)N)
typesJSONRPCMessagemodel_validate_json	Exceptionsendr   anyioClosedResourceErrorlowlevel
checkpoint)linemessageexcsession_messageread_stream_writerr   s       Q/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/mcp/server/stdio.pystdin_readerz"stdio_server.<locals>.stdin_reader<   s     	.) 	C 	C"' C C$!"'"6"6"J"J4"P
 '5W&=O,11/BBB	CC % !055c::: !
 C #(	C 	C 	C 	C 	C (( 	...++---	.s   C>B> A B> B)BA"BB)A$B)BB) B> "B$	B-BB
BB)BB)B)B> "B%#B> (C>)B;/B20B;7B> :C>;B> >4C;2C53C;8C>:C;;C>c                    K   	 4 d {    2 3 d {   } | j                   j                  dd      }j                  |dz          d {    j                          d {    [7 a7 X7 !7 6 d d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        j
                  $ r* t        j                  j                          d {  7   Y y w xY ww)NT)by_aliasexclude_none
)r   model_dump_jsonwriteflushr   r   r   r   )r   jsonr	   write_stream_readers     r   stdout_writerz#stdio_server.<locals>.stdout_writerK   s     	.* ) )-@ ) )/*22BBD_cBdD ,,td{333 ,,.((	))3( .A) ) ) ) )
 (( 	...++---	.s   CB A-B BA5A/A55BA1B'A3(B-B /A51B3B5B6B BB CBBBB CB 4CCCCCCN)
r   	wrap_filer   sysr   bufferr	   create_memory_object_streamcreate_task_group
start_soon)	r   r	   read_streamwrite_streamr   r&   tgr   r%   s	   ``     @@r   stdio_serverr0   !   s      cii.>.> QRszz/@/@7!ST ',&G&G&J#(-(I(I!(L%L%.. &&( ( (B
l#
m$<''( ( ( ( ( ( (sH   C	D'DD'*D=D'D	D'D'D$DD$ D')NN)__doc__r(   
contextlibr   ior   r   anyio.lowlevelanyio.streams.memoryr   r   	mcp.typesr   mcp.shared.messager   	AsyncFilestrr0        r   <module>r<      sj   (  *    R  - )-*.6(??3$&6(OOC 4'6( 6(r;   