
    "<i                        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
 d dlmZ d dlmZmZ d dlmZmZmZ d d	lmZ d d
lmZ  ee          Z G d d          ZdS )    )annotationsN)	AwaitableCallable)Any)GetPromptResult)settings)NotFoundErrorPromptError)FunctionPromptPromptPromptResult)DuplicateBehavior)
get_loggerc                  \    e Zd ZdZ	 	 d d!dZd"dZd#dZd$dZ	 	 	 d%d&dZd'dZ		 d(d)dZ
dS )*PromptManagerzManages FastMCP prompts.Nduplicate_behaviorDuplicateBehavior | Nonemask_error_detailsbool | Nonec                    i | _         |pt          j        | _        |d}|t          j        vr2t          d| dd                    t          j                             || _        d S )NwarnzInvalid duplicate_behavior: z. Must be one of: z, )_promptsr   r   r   __args__
ValueErrorjoinr   )selfr   r   s      /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fastmcp/prompts/prompt_manager.py__init__zPromptManager.__init__   s    
 ,."4"S8S %!'%6%???K/A K K#'99->-G#H#HK K  
 #5    keystrreturnboolc                B   K   |                                   d{V }||v S )zCheck if a prompt exists.N)get_promptsr   r    promptss      r   
has_promptzPromptManager.has_prompt)   s3      ((********g~r   r   c                v   K   |                                   d{V }||v r||         S t          d|           )zGet prompt by key.NzUnknown prompt: )r%   r	   r&   s      r   
get_promptzPromptManager.get_prompt.   sS      ((********'>>3<4s44555r   dict[str, Prompt]c                .   K   t          | j                  S )zK
        Gets the complete, unfiltered inventory of local prompts.
        )dictr   )r   s    r   r%   zPromptManager.get_prompts5   s       DM"""r   fn5Callable[..., PromptResult | Awaitable[PromptResult]]name
str | Nonedescriptiontagsset[str] | Noner   c                    t           j        rt          j        dt          d           t          j        ||||          }|                     |          S )z Create a prompt from a function.zkPromptManager.add_prompt_from_fn() is deprecated. Use Prompt.from_function() and call add_prompt() instead.   )
stacklevel)r0   r2   r3   )r   deprecation_warningswarningsr   DeprecationWarningr   from_function
add_prompt)r   r.   r0   r2   r3   prompts         r   add_prompt_from_fnz PromptManager.add_prompt_from_fn;   sg     ( 	M}"   
  -T{
 
 
 v&&&r   r=   c                v   | j                             |j                  }|r| j        dk    r2t                              d|j                    || j         |j        <   nZ| j        dk    r|| j         |j        <   n?| j        dk    rt          d|j                   | j        dk    r|S n|| j         |j        <   |S )zAdd a prompt to the manager.r   zPrompt already exists: replaceerrorignore)r   getr    r   loggerwarningr   )r   r=   existings      r   r<   zPromptManager.add_promptO   s     =$$VZ00 	/&&00EEEFFF,2fj))(I55,2fj))(G33 !G6:!G!GHHH(H44 5 )/DM&*%r   	argumentsdict[str, Any] | Noner   c                  K   |                      |           d{V }	 |                    |           d{V }t          |j        |          S # t          $ r$}t
                              d|           |d}~wt          $ rR}t
                              d|           | j        rt	          d|          |t	          d|d|           |d}~ww xY w)zv
        Internal API for servers: Finds and renders a prompt, respecting the
        filtered protocol path.
        N)r2   messageszError rendering prompt z: )	r*   renderr   r2   r
   rD   	exception	Exceptionr   )r   r0   rG   r=   rJ   es         r   render_promptzPromptManager.render_prompta   s)      t,,,,,,,,	R#]]955555555H"v/AHUUUU 	 	 	?t??@@@G 	R 	R 	R?t??@@@& R!"DD"D"DEE1L!"ID"I"Ia"I"IJJPQQ	Rs$   0A 
CA99CACC)NN)r   r   r   r   )r    r!   r"   r#   )r    r!   r"   r   )r"   r+   )NNN)
r.   r/   r0   r1   r2   r1   r3   r4   r"   r   )r=   r   r"   r   )N)r0   r!   rG   rH   r"   r   )__name__
__module____qualname____doc__r   r(   r*   r%   r>   r<   rO    r   r   r   r      s        "" 8<*.5 5 5 5 5(   
6 6 6 6# # # #  "& $' ' ' ' '(   * ,0R R R R R R Rr   r   )
__future__r   _annotationsr9   collections.abcr   r   typingr   mcpr   fastmcpr   fastmcp.exceptionsr	   r
   fastmcp.prompts.promptr   r   r   fastmcp.settingsr   fastmcp.utilities.loggingr   rP   rD   r   rT   r   r   <module>r_      s   2 2 2 2 2 2  / / / / / / / /                   9 9 9 9 9 9 9 9 G G G G G G G G G G . . . . . . 0 0 0 0 0 0	H		dR dR dR dR dR dR dR dR dR dRr   