+
    Q(iF                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
 ^ RIHtHtHtHtHtHtHt ^ RIt^ RIHt ^ RIHt ^ RIt^ RIHt ^ R	IHt ^ R
IHtHtH t  ^ RI!H"t" ^ RI#H$t$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ]'       d   ^ RI0H1t1 ^ RI2H3t3 ]! R]R]3,          R7      t4]-! ]54      t6] ! R R]4      4       t7]	! RRR7       ! R R4      4       t8 ! R R]4      t9]R R  l4       t:]R!RR"RR#RR$RR%RR&RR'RR(R/R) R* ll4       t:]R0R+RR!RR"RR#RR$RR%RR&RR'RR(R/	R, R- lll4       t:R0R+RR!RR"RR#RR$RR%RR&RR'RR(R/	R. R/ lllt:R# )1z)Standalone @prompt decorator for FastMCP.)annotationsN)Callable)	dataclassfield)TYPE_CHECKINGAnyLiteralProtocolTypeVaroverloadruntime_checkable)Icon)SkipJsonSchema)resolve_task_config)PromptError)PromptPromptArgumentPromptResult)	AuthCheck)transform_context_annotationswithout_injected_parameters)
TaskConfig)call_sync_fn_in_threadpool)compress_schema)
get_logger)get_cached_typeadapter)Docket)	ExecutionF.)boundc                  2    ] tR t^0t$ RtR]R&   R R ltRtR# )DecoratedPromptz.Protocol for functions decorated with @prompt.
PromptMeta__fastmcp__c               $    V ^8  d   QhRRRRRR/# )   argsr   kwargsreturn )formats   "e/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/fastmcp/prompts/function_prompt.py__annotate__DecoratedPrompt.__annotate__6   s    ==c=S=S=    c                	    R # Nr)   )selfr&   r'   s   &*,r+   __call__DecoratedPrompt.__call__6   s    #r.   r)   N)__name__
__module____qualname____firstlineno____doc____annotations__r2   __static_attributes__r)   r.   r+   r!   r!   0   s    8==r.   r!   T)frozenkw_onlyc                      ] tR t^9t$ Rt]! RRR7      tR]R&   RtR]R	&   Rt	R
]R&   Rt
R]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )r"   z8Metadata attached to functions by the @prompt decorator.promptF)defaultinitzLiteral['prompt']typeN
str | Nonenamestr | int | Noneversiontitledescriptionlist[Icon] | Noneiconsset[str] | Nonetagsdict[str, Any] | Nonemetabool | TaskConfig | Nonetask"AuthCheck | list[AuthCheck] | NoneauthTboolenabledr)   )r4   r5   r6   r7   r8   r   rA   r9   rC   rE   rF   rG   rI   rK   rM   rO   rQ   rS   r:   r)   r.   r+   r"   r"   9   s    B#H5AD
AD* $G$E:"K"#E# D/ "&D
&%)D
")/3D
,3GTr.   r"   c                      ] tR t^Jt$ RtR]R&   ]RRRRRRRRR	RR
RRRRRRRRR/
R R ll4       tR R ltRR R llt	R R lt
RRRR/R R lltRtR# )FunctionPromptzA prompt that is a function.z"SkipJsonSchema[Callable[..., Any]]fnmetadataNrC   rE   rF   rG   rI   rK   rM   rO   rQ   c               H    V ^8  d   QhRRRRRRRRR	RR
RRRRRRRRRRRRR/# )r%   rV   Callable[..., Any]rW   zPromptMeta | NonerC   rB   rE   rD   rF   rG   rI   rH   rK   rJ   rM   rL   rO   rN   rQ   rP   r(   rU   r)   )r*   s   "r+   r,   FunctionPrompt.__annotate__P   s     [
 [
[
 $	[
 [
 "[
 [
  [
 ![
 [
 $[
 '[
 1[
 
[
r.   c       
        t   \         ;QJ d!    R W4WVWxWV3	 4       F  '       g   K   RM	  RM! R W4WVWxWV3	 4       4      pVe   V'       d   \        R4      hVf   \        VVVVVVV	V
VR7	      pVP                  ;'       g,    \	        VRR4      ;'       g    VP
                  P                  pVR8X  d   \        R	4      h\        P                  ! V4      pVP                  P                  4        Fk  pVP                  \        P                  P                  8X  d   \        R
4      hVP                  \        P                  P                  8X  g   Kb  \        R4      h	  VP                   ;'       g    \        P"                  ! V4      pVP$                  pVf   \'        RR7      pM/\)        V\*        4      '       d   \&        P,                  ! V4      pMTpVP/                  W4       \        P0                  ! V4      '       g   VP2                  p\)        V\4        4      '       d   VP6                  p\9        V4      p\;        V4      p\=        V4      pVP?                  4       p\A        VRR7      p. pRV9   Ed   VR,          PC                  4        F  w  ppVPE                  R4      pVVP                  9   d   VP                  V,          pVPF                  \        P                  PH                  8w  dk   VPF                  \J        JdW    \=        VPF                  4      pVP?                  4       p\L        PN                  ! VRR7      pRV 2pV'       d	   V RV 2pMTp VPW                  \Y        VVVVPE                  R. 4      9   R7      4       EK  	  T ! TVPZ                  e   \K        VPZ                  4      MRVP\                  TVP^                  TVP`                  ;'       g    \c        4       VVPd                  VVPf                  R7      #   \P         d"   p\R        PU                  RTT4        Rp?LRp?ii ; i)a  Create a Prompt from a function.

Args:
    fn: The function to wrap
    metadata: PromptMeta object with all configuration. If provided,
        individual parameters must not be passed.
    name, title, etc.: Individual parameters for backwards compatibility.
        Cannot be used together with metadata parameter.

The function can return:
- str: wrapped as single user Message
- list[Message | str]: converted to list[Message]
- PromptResult: used directly
c              3  *   "   T F	  pVR Jx  K  	  R # 5ir0   r)   ).0xs   & r+   	<genexpr>/FunctionPrompt.from_function.<locals>.<genexpr>o   s      )
W TMWs   TFNz|Cannot pass both 'metadata' and individual parameters to from_function(). Use metadata alone or individual parameters alone.	rC   rE   rF   rG   rI   rK   rM   rO   rQ   r4   z<lambda>z,You must provide a name for lambda functionsz1Functions with *args are not supported as promptsz4Functions with **kwargs are not supported as prompts	forbidden)mode)prune_titles
propertiesrG   )
separatorsz8Provide as a JSON string matching the following schema: z

z4Failed to generate schema for prompt argument %s: %srequired)rC   rG   rg   )rC   rE   rF   rG   rI   	argumentsrK   rV   rM   task_configrQ   ),:)4any	TypeErrorr"   rC   getattr	__class__r4   
ValueErrorinspect	signature
parametersvalueskind	ParameterVAR_POSITIONALVAR_KEYWORDrG   getdocrO   r   
isinstancerR   	from_boolvalidate_function	isroutiner2   staticmethod__func__r   r   r   json_schemar   itemsget
annotationemptystrjsondumps	Exceptionloggerdebugappendr   rE   rF   rI   rK   setrM   rQ   )clsrV   rW   rC   rE   rF   rG   rI   rK   rM   rO   rQ   individual_params_provided	func_namesigparam
task_valueri   
wrapped_fntype_adapterrs   rh   
param_namearg_description	sig_paramparam_adapterparam_schema
schema_strschema_notees   &&$$$$$$$$$$                  r+   from_functionFunctionPrompt.from_functionO   s   @ &)S )
UdRVW)
SSS )
UdRVW)
 &
"
 $>E  !'
H MMSSWRT:SSbll>S>S 	 
"KLL #^^**,EzzW..=== !TUUzzW..::: !WXX	 - **@@gnnR.@ ]]
$+6K
D))$..z:K$K%%b4   $$Bb,''B +2. 14
-j9!--/
$ZdC
 +-	:%%/%=%C%C%E!
E"'))M": / #z :I!,,0A0A0G0GG%00;,B9CWCW,XM+8+D+D+FL *.LZ)XJ -eeodp*qK.5D4ET+2W2=   "'$3!+z~~j"/M!MC &FR -5-=-=-IC(()t..#..''#%#
 	
!  ) "LL V * ! s   APPP7P22P7c                    V ^8  d   QhRRRR/# )r%   r'   zdict[str, Any]r(   r)   )r*   s   "r+   r,   rZ      s     *  *  * > * r.   c                   ^ RI Hp V! V P                  4      p\        P                  ! V4      p/ pVP                  4        F  w  rgWdP                  9   d   VP                  V,          pVP                  \        P                  P                  8X  g+   VP                  \        J g   \        V\        4      '       g   WuV&   K   \        VP                  4      p	 V	P                  V4      WV&   K  WuV&   K  	  V#   \        \        \         P"                  3 d    T	P%                  T4      YV&    K  i ; i  \        \        \         P"                  3 d(   p
\'        RT RT RTP                   RT
 24      T
hRp
?
ii ; i)zGConvert string arguments to expected types based on function signature.)r   zCould not convert argument 'z' with value 'z' to expected type z	. Error: N)fastmcp.server.dependenciesr   rV   rq   rr   r   rs   r   rv   r   r   rz   r   validate_jsonrp   rm   pydantic_coreValidationErrorvalidate_pythonr   )r1   r'   r   
wrapper_fnr   converted_kwargsr   param_valuer   adapterr   s   &&         r+   _convert_string_arguments(FunctionPrompt._convert_string_arguments   sj   K09

+'-||~#J^^+z2 $$(9(9(?(??''3.#K553>Z0!"89I9I"J;B;P;P +<,8  0;,A (6D   !+I}7T7TU ;B;R;R +<,8
 '	=3P3PQ !)::,nU`Ta b0050@0@/A1#O  !!!s6   D2C883D/+D2.D//D22 E9"E44E9c                    V ^8  d   QhRRRR/# )r%   rh   rL   r(   r   r)   )r*   s   "r+   r,   rZ     s"     0M 0M(0M 
0Mr.   c                L  "   V P                   '       dl   V P                    Uu0 uF"  q"P                  '       g   K  VP                  kK$  	  pp\        T;'       g    / 4      pW4,
          pV'       d   \	        RV 24      h V'       d   VP                  4       M/ pV P                  V4      p\        P                  ! V P                  4      p\        VP                  P                  4       4      pVP                  4        U	U
u/ uF  w  rW9   g   K  WbK  	  pp	p
\        V P                  4      p\        P                  ! V P                  4      '       d   VP                  V4      G Rj  xL
 pMD\!        VP                  V4      G Rj  xL
 p\        P"                  ! V4      '       d   VG Rj  xL
 pV P%                  V4      # u upi u up
p	i  Le LH L$  \&         dB   p\(        P+                  RT P                   24       \-        RT P                   R24      ThRp?ii ; i5i)z!Render the prompt with arguments.zMissing required arguments: NzError rendering prompt .)rh   rg   rC   r   rp   copyr   rq   rr   rV   rs   keysr   r   iscoroutinefunctionr   r   isawaitableconvert_resultr   r   	exceptionr   )r1   rh   argrg   providedmissingr'   r   valid_paramskvr   resultr   s   &&            r+   renderFunctionPrompt.render  s     >>>,0NNKNSllNHK9??+H)G #?y!IJJ#	M)2Y^^%F 33F;F ##DGG,Cs~~2245L'-||~K~tq9Jdad~FK 2$'':L **47733+;;FCC  : 00&   &&v..#)\F&&v..M L& L D
 *  	M6tyykBC 7		{!DE1L	Ms   !H$GGH$%H$G 	A9G 
G	G	AG )G*G G	G )G .G/G H$	G G G H! <HH!!H$c                    V ^8  d   QhRRRR/# )r%   docketr   r(   Noner)   )r*   s   "r+   r,   rZ   K  s     3 36 3d 3r.   c                    V P                   P                  4       '       g   R# VP                  V P                  V P                  .R7       R# )zRegister this prompt with docket for background execution.

FunctionPrompt registers the underlying function, which has the user's
Depends parameters for docket to resolve.
N)names)ri   supports_tasksregisterrV   key)r1   r   s   &&r+   register_with_docket#FunctionPrompt.register_with_docketK  s6     ..00z2r.   fn_keytask_keyc               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r%   r   r   rh   rL   r   rB   r   r'   r   r(   r   r)   )r*   s   "r+   r,   rZ   U  sN     K KK )K
 K K K 
Kr.   c                  "   T;'       g    V P                   pV'       d   WER&   VP                  ! V3/ VB ! R/ T;'       g    / B G Rj  xL
 #  L5i)aw  Schedule this prompt for background execution via docket.

FunctionPrompt splats the arguments dict since .fn expects **kwargs.

Args:
    docket: The Docket instance
    arguments: Prompt arguments
    fn_key: Function lookup key in Docket registry (defaults to self.key)
    task_key: Redis storage key for the result
    **kwargs: Additional kwargs passed to docket.add()
r   Nr)   )r   add)r1   r   rh   r   r   r'   
lookup_keys   &&&$$, r+   add_to_docketFunctionPrompt.add_to_docketU  sJ     ( ''txx
$5MZZ
5f5JbJJJJs   A!AAAAr)   r0   )r4   r5   r6   r7   r8   r9   classmethodr   r   r   r   r   r:   r)   r.   r+   rU   rU   J   s    &**[
 '+	[
  [
 %)[
 ![
 #'[
 $([
 !%[
 '+[
 *.[
 48[
 [
z* X0Md3K
 "K  $K Kr.   rU   c                    V ^8  d   QhRRRR/# r%   rV   r   r(   r)   )r*   s   "r+   r,   r,   p  s      q Q r.   c                    R # r0   r)   )rV   s   &r+   r>   r>   o  s    r.   rE   rF   rG   rI   rK   rM   rO   rQ   c               @    V ^8  d   QhRRRRRRRRRR	R
RRRRRRRRR/
# )r%   
name_or_fnr   rE   rD   rF   rB   rG   rI   rH   rK   rJ   rM   rL   rO   rN   rQ   rP   r(   Callable[[F], F]r)   )r*   s   "r+   r,   r,   r  sn        	
      # - r.   c                   R # r0   r)   )	r   rE   rF   rG   rI   rK   rM   rO   rQ   s	   &$$$$$$$$r+   r>   r>   q  s     r.   rC   c               D    V ^8  d   QhRRRRRRRRRRR	R
RRRRRRRRRR/# )r%   r   r   rC   rB   rE   rD   rF   rG   rI   rH   rK   rJ   rM   rL   rO   rN   rQ   rP   r(   r   r)   )r*   s   "r+   r,   r,     sx        	
       # - r.   c       	            R # r0   r)   )
r   rC   rE   rF   rG   rI   rK   rM   rO   rQ   s
   &$$$$$$$$$r+   r>   r>   ~  s     r.   c               D    V ^8  d   QhRRRRRRRRRRR	R
RRRRRRRRRR/# )r%   r   zstr | Callable[..., Any] | NonerC   rB   rE   rD   rF   rG   rI   rH   rK   rJ   rM   rL   rO   rN   rQ   rP   r(   r   r)   )r*   s   "r+   r,   r,     s     R R/R R 	R
 R R R R  R #R -R 	Rr.   c       	   	       aaaaaaaa	aaaa \        V \        4      '       d   \        R4      hR V	VVVVVVV3R lloR V	VVVVVVV3R lloR VV3R llo\        P                  ! V 4      '       d	   S! W4      # \        V \
        4      '       d   Ve   \        R4      hV oMV f   VoM\        R	\        V 4       24      hR
 VV3R llp
V
# )zStandalone decorator to mark a function as an MCP prompt.

Returns the original function with metadata attached. Register with a server
using mcp.add_prompt().
zwTo decorate a classmethod, use @classmethod above @prompt. See https://gofastmcp.com/servers/prompts#using-with-methodsc               $    V ^8  d   QhRRRRRR/# )r%   rV   rY   prompt_namerB   r(   rU   r)   )r*   s   "r+   r,   prompt.<locals>.__annotate__  s)     F FF-7F	Fr.   c                j   < \        VS
S	SSSS\        S4      SR 7	      p\        P                  WR7      # )ra   )rW   )r"   r   rU   r   )rV   r   prompt_metarQ   rG   rI   rM   rK   rO   rF   rE   s   && r+   create_promptprompt.<locals>.create_prompt  sE     !#$T*

 ++B+EEr.   c               $    V ^8  d   QhRRRRRR/# r%   rV   r   r   rB   r(   r)   )r*   s   "r+   r,   r     s!      A J 1 r.   c                |   < \        VSS
SSSSS	SR 7	      p\        V R4      '       d   V P                  MT pW#n        V # )ra   r   )r"   hasattrr   r#   )rV   r   rW   targetrQ   rG   rI   rM   rK   rO   rF   rE   s   &&  r+   attach_metadataprompt.<locals>.attach_metadata  sL    #

 !(J 7 7R%	r.   c               $    V ^8  d   QhRRRRRR/# r   r)   )r*   s   "r+   r,   r     s!     	0 	0a 	0j 	0Q 	0r.   c                   < \         P                  P                  R 8X  d&   \        P                  ! R\
        ^R7       S! W4      # S! W4      # )objectzdecorator_mode='object' is deprecated and will be removed in a future version. Decorators now return the original function with metadata attached.)
stacklevel)fastmcpsettingsdecorator_modewarningswarnDeprecationWarning)rV   r   r   r   s   &&r+   	decoratorprompt.<locals>.decorator  sG    **h6MMV"	 !11r//r.   z6Cannot specify name both as first argument and keywordzInvalid first argument: c                    V ^8  d   QhRRRR/# r   r)   )r*   s   "r+   r,   r     s     * *A *! *r.   c                   < S! V S4      # r0   r)   )rV   r   r   s   &r+   wrapperprompt.<locals>.wrapper  s    [))r.   )rz   r   rm   rq   r}   r   rA   )r   rC   rE   rF   rG   rI   rK   rM   rO   rQ   r   r   r   r   r   s   &$dddddddd @@@@r+   r>   r>     s    $ *k**K
 	

F F"  	0 	0 $$**	J	$	$TUU 		24
3C2DEFF* * Nr.   r0   );r8   
__future__r   rq   r   r   collections.abcr   dataclassesr   r   typingr   r   r   r	   r
   r   r   r   	mcp.typesr   pydantic.json_schemar   r   fastmcp.decoratorsr   fastmcp.exceptionsr   fastmcp.prompts.promptr   r   r   !fastmcp.server.auth.authorizationr   r   r   r   fastmcp.server.tasks.configr   fastmcp.utilities.async_utilsr   fastmcp.utilities.json_schemar   fastmcp.utilities.loggingr   fastmcp.utilities.typesr   r   r   docket.executionr   r   r4   r   r!   r"   rU   r>   r)   r.   r+   <module>r
     s   / "    $ (     /  2 * G G 7 3 D 9 0 :*CxS)*	H	 >h > > $%  & bKV bKJ	 
  
 	 !% 	
 #  $ ! #' &* 04 
 
  !%	
  #  $ ! #' &* 04 
R R !%	R
 R #R  $R !R #'R &*R 04R Rr.   