
    {hF
                        d dl mZ d dlmZ d dlmZmZ d dlm	Z	 d dl
m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  ee      Z G d d      Zy)    )annotations)Callable)TYPE_CHECKINGAny)	ToolError)Tool)
get_logger)LifespanContextTRequestT)ToolAnnotations)Context)ServerSessionTc                      e Zd ZdZ	 d	dd	 	 	 d
dZddZddZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 	 	 ddZy)ToolManagerzManages FastMCP tools.N)toolsc                   i | _         |\|D ]W  }|r:|j                  | j                   v r"t        j                  d|j                          || j                   |j                  <   Y || _        y )NTool already exists: )_toolsnameloggerwarningwarn_on_duplicate_tools)selfr   r   tools       f/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/mcp/server/fastmcp/tools/tool_manager.py__init__zToolManager.__init__   sf     (* .*tyyDKK/GNN%:499+#FG)-DII&.
 (?$    c                8    | j                   j                  |      S )zGet tool by name.)r   get)r   r   s     r   get_toolzToolManager.get_tool%   s    {{t$$r   c                H    t        | j                  j                               S )zList all registered tools.)listr   values)r   s    r   
list_toolszToolManager.list_tools)   s    DKK&&())r   c                   t        j                  ||||||      }| j                  j                  |j                        }|r0| j
                  r"t        j                  d|j                          |S || j                  |j                  <   |S )zAdd a tool to the server.)r   titledescriptionr   structured_outputr   )r   from_functionr   r   r   r   r   r   )	r   fnr   r&   r'   r   r(   r   existings	            r   add_toolzToolManager.add_tool-   s~     !!##/
 ;;??499-++!6tyykBCO!%DIIr   c                   K   | j                  |      }|st        d|       |j                  |||       d{   S 7 w)z#Call a tool by name with arguments.zUnknown tool: )contextconvert_resultN)r    r   run)r   r   	argumentsr.   r/   r   s         r   	call_toolzToolManager.call_toolG   sF      }}T"nTF344XXiXXXXXs   9AA A)T)r   boolr   zlist[Tool] | None)r   strreturnzTool | None)r5   z
list[Tool])NNNNN)r*   zCallable[..., Any]r   
str | Noner&   r6   r'   r6   r   zToolAnnotations | Noner(   zbool | Noner5   r   )NF)
r   r4   r1   zdict[str, Any]r.   z:Context[ServerSessionT, LifespanContextT, RequestT] | Noner/   r3   r5   r   )	__name__
__module____qualname____doc__r   r    r$   r,   r2    r   r   r   r      s      )-? $(	?!%? !	?%*   "&.2)-  	
   , ' 
< OS$YY "Y L	Y
 Y 
Yr   r   N)
__future__r   _annotationscollections.abcr   typingr   r   mcp.server.fastmcp.exceptionsr   mcp.server.fastmcp.tools.baser   $mcp.server.fastmcp.utilities.loggingr	   mcp.shared.contextr
   r   	mcp.typesr   mcp.server.fastmcp.serverr   mcp.server.sessionr   r7   r   r   r;   r   r   <module>rG      s>    2 $ % 3 . ; 9 %11	H	@Y @Yr   