
    )`i                        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mZ erd d	lmZ d d
lmZ  ee          Z G d d          ZdS )    )annotations)Callable)TYPE_CHECKINGAny)	ToolError)Tool)
get_logger)LifespanContextTRequestT)IconToolAnnotations)Context)ServerSessionTc                  b    e Zd ZdZ	 d*ddd+d	Zd,dZd-dZ	 	 	 	 	 	 	 d.d/dZd0d!Z	 	 d1d2d)Z	dS )3ToolManagerzManages FastMCP tools.TN)toolswarn_on_duplicate_toolsboolr   list[Tool] | Nonec                   i | _         |F|D ]C}|r0|j        | j         v r"t                              d|j                    || j         |j        <   D|| _        d S )NTool already exists: )_toolsnameloggerwarningr   )selfr   r   tools       y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/server/fastmcp/tools/tool_manager.py__init__zToolManager.__init__   ss     (* . .* HtyDK/G/GNN#F49#F#FGGG)-DI&&'>$$$    r   strreturnTool | Nonec                6    | j                             |          S )zGet tool by name.)r   getr   r   s     r   get_toolzToolManager.get_tool%   s    {t$$$r    
list[Tool]c                N    t          | j                                                  S )zList all registered tools.)listr   values)r   s    r   
list_toolszToolManager.list_tools)   s    DK&&(()))r    fnCallable[..., Any]
str | Nonetitledescriptionr   ToolAnnotations | Noneiconslist[Icon] | Nonemetadict[str, Any] | Nonestructured_outputbool | Noner   c	           
         t          j        ||||||||          }	| j                            |	j                  }
|
r+| j        r"t                              d|	j                    |
S |	| j        |	j        <   |	S )zAdd a tool to the server.)r   r0   r1   r   r3   r5   r7   r   )r   from_functionr   r%   r   r   r   r   )r   r-   r   r0   r1   r   r3   r5   r7   r   existings              r   add_toolzToolManager.add_tool-   s     !##/	
 	
 	
 ;??49-- 	+ DBtyBBCCCO!%DIr    Nonec                L    || j         vrt          d|           | j         |= dS )zRemove a tool by name.Unknown tool: N)r   r   r&   s     r   remove_toolzToolManager.remove_toolK   s6    t{""3T33444Kr    F	argumentsdict[str, Any]context:Context[ServerSessionT, LifespanContextT, RequestT] | Noneconvert_resultr   c                   K   |                      |          }|st          d|           |                    |||           d{V S )z#Call a tool by name with arguments.r?   )rC   rE   N)r'   r   run)r   r   rA   rC   rE   r   s         r   	call_toolzToolManager.call_toolQ   sb       }}T"" 	53T33444XXiXXXXXXXXXXr    )T)r   r   r   r   )r   r!   r"   r#   )r"   r(   )NNNNNNN)r-   r.   r   r/   r0   r/   r1   r/   r   r2   r3   r4   r5   r6   r7   r8   r"   r   )r   r!   r"   r=   )NF)
r   r!   rA   rB   rC   rD   rE   r   r"   r   )
__name__
__module____qualname____doc__r   r'   r,   r<   r@   rH    r    r   r   r      s           )-? $(	? ? ? ? ? ?% % % %* * * *   "&.2#'&*)-    <    OS$Y Y Y Y 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   r   mcp.server.fastmcp.serverr   mcp.server.sessionr   rI   r   r   rM   r    r   <module>rY      s(   2 2 2 2 2 2 $ $ $ $ $ $ % % % % % % % % 3 3 3 3 3 3 . . . . . . ; ; ; ; ; ; 9 9 9 9 9 9 9 9 + + + + + + + + 2111111111111	H		JY JY JY JY JY JY JY JY JY JYr    