§
    ­eîi°  ã                  óà  — d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	m
Z
mZ ddlZddlmZmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZ e	rdd
lmZ ddlmZ ddlm Z m!Z!  G d„ de¦  «        Z" G d„ de"¦  «        Z# G d„ de"¦  «        Z$ ee#e$z           e#e$z  ¦  «        Z%e&e"z  e'e&e
f         z  ee&e"z  e'e&e
f         z           z  Z(e(ee(         z  Z) G d„ de¦  «        Z* G d„ de¦  «        Z+dS )z!Base classes for FastMCP prompts.é    )ÚannotationsN)Ú	AwaitableÚCallableÚSequence)ÚTYPE_CHECKINGÚAnyÚLiteral)Ú	BaseModelÚFieldÚTypeAdapterÚvalidate_call)Úfind_context_parameterÚinject_context)Úfunc_metadata)ÚContentBlockÚIconÚTextContent)ÚContext)ÚServerSessionT)ÚLifespanContextTÚRequestTc                  ó:   ‡ — e Zd ZU dZded<   ded<   d
ˆ fd	„Zˆ xZS )ÚMessagez#Base class for all prompt messages.úLiteral['user', 'assistant']Úroler   Úcontentústr | ContentBlockÚkwargsr   c                óŠ   •— t          |t          ¦  «        rt          d|¬¦  «        } t          ¦   «         j        dd|i|¤Ž d S )NÚtext©Útyper    r   © )Ú
isinstanceÚstrr   ÚsuperÚ__init__©Úselfr   r   Ú	__class__s      €úc/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/mcp/server/fastmcp/prompts/base.pyr'   zMessage.__init__   sO   ø€ Ý�g�sÑ#Ô#ð 	=Ý! v°GÐ<Ñ<Ô<ˆGØ�‰ŒÔÐ3Ð3 Ð3¨FÐ3Ð3Ð3Ð3Ð3ó    ©r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r'   Ú__classcell__©r*   s   @r+   r   r      s]   ø€ € € € € € Ø-Ð-à&Ð&Ð&Ñ&ØÐÐÑð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r,   r   c                  ó4   ‡ — e Zd ZU dZdZded<   d
ˆ fd	„Zˆ xZS )ÚUserMessagezA message from the user.Úuserr   r   r   r   r   r   c                ó>   •—  t          ¦   «         j        dd|i|¤Ž d S ©Nr   r#   ©r&   r'   r(   s      €r+   r'   zUserMessage.__init__'   ó+   ø€ Ø�‰ŒÔÐ3Ð3 Ð3¨FÐ3Ð3Ð3Ð3Ð3r,   r-   ©r.   r/   r0   r1   r   r2   r'   r3   r4   s   @r+   r6   r6   "   sV   ø€ € € € € € Ø"Ð"à)/€DÐ/Ð/Ð/Ñ/ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r,   r6   c                  ó4   ‡ — e Zd ZU dZdZded<   d
ˆ fd	„Zˆ xZS )ÚAssistantMessagezA message from the assistant.Ú	assistantr   r   r   r   r   r   c                ó>   •—  t          ¦   «         j        dd|i|¤Ž d S r9   r:   r(   s      €r+   r'   zAssistantMessage.__init__0   r;   r,   r-   r<   r4   s   @r+   r>   r>   +   sV   ø€ € € € € € Ø'Ð'à)4€DÐ4Ð4Ð4Ñ4ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r,   r>   c                  ó~   — e Zd ZU dZ ed¬¦  «        Zded<    edd¬¦  «        Zded	<    ed
d¬¦  «        Zded<   dS )ÚPromptArgumentz+An argument that can be passed to a prompt.zName of the argument©Údescriptionr%   ÚnameNz%Description of what the argument doesú
str | NonerD   Fz Whether the argument is required©ÚdefaultrD   ÚboolÚrequired)	r.   r/   r0   r1   r   rE   r2   rD   rJ   r#   r,   r+   rB   rB   :   sy   € € € € € € Ø5Ð5à�Ð"8Ð9Ñ9Ô9€DÐ9Ð9Ð9Ñ9Ø#˜e DÐ6]Ð^Ñ^Ô^€KÐ^Ð^Ð^Ñ^Ø�U 5Ð6XÐYÑYÔY€HÐYÐYÐYÑYÐYÐYr,   rB   c                  ó@  — e Zd ZU dZ ed¬¦  «        Zded<    edd¬¦  «        Zded	<    edd
¬¦  «        Zded<    edd¬¦  «        Z	ded<    ed¬¦  «        Z
ded<    edd¬¦  «        Zded<    eddd¬¦  «        Zded<   e	 	 	 	 	 d!d"d„¦   «         Z	 	 d#d$d „ZdS )%ÚPromptz7A prompt template that can be rendered with parameters.zName of the promptrC   r%   rE   Nz"Human-readable title of the promptrF   Útitlez#Description of what the prompt doesrD   z*Arguments that can be passed to the promptzlist[PromptArgument] | NoneÚ	argumentsT)Úexcludeú5Callable[..., PromptResult | Awaitable[PromptResult]]Úfnz&Optional list of icons for this promptrG   úlist[Icon] | NoneÚiconsz-Name of the kwarg that should receive context)rD   rO   Úcontext_kwargÚreturnc           	     óþ  — |p|j         }|dk    rt          d¦  «        ‚|€t          |¦  «        }t          ||�|gng ¬¦  «        }|j                             ¦   «         }	g }
d|	v rp|	d                              ¦   «         D ]U\  }}||	                     dg ¦  «        v }|
                     t          ||                     d¦  «        |¬¦  «        ¦  «         ŒVt          |¦  «        } | |||p|j        pd	|
|||¬
¦  «        S )zåCreate a Prompt from a function.

        The function can return:
        - A string (converted to a message)
        - A Message object
        - A dict (converted to a message)
        - A sequence of any of the above
        z<lambda>z,You must provide a name for lambda functionsN)Ú
skip_namesÚ
propertiesrJ   rD   )rE   rD   rJ   Ú )rE   rM   rD   rN   rQ   rS   rT   )r.   Ú
ValueErrorr   r   Ú	arg_modelÚmodel_json_schemaÚitemsÚgetÚappendrB   r   r1   )ÚclsrQ   rE   rM   rD   rS   rT   Ú	func_nameÚfunc_arg_metadataÚ
parametersrN   Ú
param_nameÚparamrJ   s                 r+   Úfrom_functionzPrompt.from_functionM   sY  € ð$ Ð'˜BœKˆ	à˜
Ò"Ð"ÝÐKÑLÔLÐLð Ð Ý2°2Ñ6Ô6ˆMõ *ØØ*7Ð*C˜��Èð
ñ 
ô 
Ðð 'Ô0×BÒBÑDÔDˆ
ð +-ˆ	Ø˜:Ð%Ð%Ø%/°Ô%=×%CÒ%CÑ%EÔ%Eð ð Ñ!�
˜EØ%¨¯ª¸
ÀBÑ)GÔ)GÐG�Ø× Ò Ý"Ø'Ø$)§I¢I¨mÑ$<Ô$<Ø!)ðñ ô ñô ð ð õ ˜2ÑÔˆàˆsØØØ#Ð7 r¤zÐ7°RØØØØ'ð
ñ 
ô 
ð 	
r,   údict[str, Any] | NoneÚcontextú:Context[ServerSessionT, LifespanContextT, RequestT] | Noneúlist[Message]c              ƒ  ó  K  — | j         r;d„ | j         D ¦   «         }t          |pi ¦  «        }||z
  }|rt          d|› �¦  «        ‚	 t          | j        |pi || j        ¦  «        } | j        di |¤Ž}t          j        |¦  «        r|ƒ d{V —†}t          |t          t          z  ¦  «        s|g}g }|D �].}		 t          |	t          ¦  «        r|                     |	¦  «         nßt          |	t          ¦  «        r.|                     t                               |	¦  «        ¦  «         nœt          |	t           ¦  «        r5t#          d|	¬¦  «        }
|                     t%          |
¬¦  «        ¦  «         nRt'          j        |	t           d¬¦  «                             ¦   «         }
|                     t          d	|
¬
¦  «        ¦  «         �Œ# t,          $ r t          d|	› �¦  «        ‚w xY w|S # t,          $ r}t          d| j        › d|› �¦  «        ‚d}~ww xY w)z!Render the prompt with arguments.c                ó*   — h | ]}|j         ¯	|j        ’ŒS r#   )rJ   rE   )Ú.0Úargs     r+   ú	<setcomp>z Prompt.render.<locals>.<setcomp>‘   s!   € ÐKÐKÐK S¸c¼lÐK˜œÐKÐKÐKr,   zMissing required arguments: Nr    r!   )r   é   )ÚfallbackÚindentr7   )r   r   z,Could not convert prompt result to message: zError rendering prompt z: r#   )rN   ÚsetrZ   r   rQ   rT   ÚinspectÚiscoroutiner$   ÚlistÚtupler   r_   ÚdictÚmessage_validatorÚvalidate_pythonr%   r   r6   Úpydantic_coreÚto_jsonÚdecodeÚ	ExceptionrE   )r)   rN   rh   rJ   ÚprovidedÚmissingÚ	call_argsÚresultÚmessagesÚmsgr   Úes               r+   ÚrenderzPrompt.render‰   si  è è € ð Œ>ð 	KØKÐK¨D¬NÐKÑKÔKˆHÝ˜9˜?¨Ñ+Ô+ˆHØ Ñ)ˆGØð KÝ Ð!IÀÐ!IÐ!IÑJÔJÐJð 	Iå& t¤w°	°¸RÀÈ$ÔJ\Ñ]Ô]ˆIð �T”WÐ)Ð)˜yÐ)Ð)ˆFÝÔ" 6Ñ*Ô*ð &Ø%˜˜˜˜˜˜�õ ˜f¥d­U¡lÑ3Ô3ð "Ø ˜�ð ')ˆHØð [ñ [�ð[Ý! #¥wÑ/Ô/ð 	OØ Ÿš¨Ñ,Ô,Ð,Ð,Ý# C­Ñ.Ô.ð OØ ŸšÕ(9×(IÒ(IÈ#Ñ(NÔ(NÑOÔOÐOÐOÝ# C­Ñ-Ô-ð OÝ"-°6ÀÐ"DÑ"DÔ"D˜Ø Ÿš­¸GÐ(DÑ(DÔ(DÑEÔEÐEÐEå"/Ô"7¸ÅcÐRSÐ"TÑ"TÔ"T×"[Ò"[Ñ"]Ô"]˜Ø Ÿš­°VÀWÐ(MÑ(MÔ(MÑNÔNÐNùøÝ ð [ð [ð [Ý$Ð%YÐTWÐ%YÐ%YÑZÔZÐZð[øøøð ˆOøÝð 	Ið 	Ið 	IÝÐG°t´yÐGÐGÀAÐGÐGÑHÔHÐHøøøøð	Iøøøs2   ÁA.G# Â5D
GÆ?G# ÇGÇG# Ç#
HÇ-HÈH)NNNNN)rQ   rP   rE   rF   rM   rF   rD   rF   rS   rR   rT   rF   rU   rL   )NN)rN   rg   rh   ri   rU   rj   )r.   r/   r0   r1   r   rE   r2   rM   rD   rN   rQ   rS   rT   Úclassmethodrf   r†   r#   r,   r+   rL   rL   B   s^  € € € € € € ØAÐAà�Ð"6Ð7Ñ7Ô7€DÐ7Ð7Ð7Ñ7Ø˜˜dÐ0TÐUÑUÔU€EÐUÐUÐUÑUØ#˜e DÐ6[Ð\Ñ\Ô\€KÐ\Ð\Ð\Ñ\Ø-2¨U°4ÐEqÐ-rÑ-rÔ-r€IÐrÐrÐrÑrØ@EÀÈdÐ@SÑ@SÔ@S€BÐSÐSÐSÑSØ$˜u¨TÐ?gÐhÑhÔh€EÐhÐhÐhÑhØ %  dÐ8gÐquÐ vÑ vÔ v€MÐvÐvÐvÑvàð  Ø Ø"&Ø#'Ø$(ð9
ð 9
ð 9
ð 9
ñ „[ð9
ðz ,0ØNRð.Ið .Ið .Ið .Ið .Ið .Ið .Ir,   rL   ),r1   Ú
__future__r   rt   Úcollections.abcr   r   r   Útypingr   r   r	   r{   Úpydanticr
   r   r   r   Ú.mcp.server.fastmcp.utilities.context_injectionr   r   Ú*mcp.server.fastmcp.utilities.func_metadatar   Ú	mcp.typesr   r   r   Úmcp.server.fastmcp.serverr   Úmcp.server.sessionr   Úmcp.shared.contextr   r   r   r6   r>   ry   r%   rx   ÚSyncPromptResultÚPromptResultrB   rL   r#   r,   r+   ú<module>r”      s  ðØ 'Ð 'à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà aÐ aÐ aÐ aÐ aÐ aÐ aÐ aØ DÐ DÐ DÐ DÐ DÐ DØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5àð >Ø1Ð1Ð1Ð1Ð1Ð1Ø1Ð1Ð1Ð1Ð1Ð1Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ð	4ð 	4ð 	4ð 	4ð 	4ˆiñ 	4ô 	4ð 	4ð4ð 4ð 4ð 4ð 4�'ñ 4ô 4ð 4ð4ð 4ð 4ð 4ð 4�wñ 4ô 4ð 4ð @�K Ð.>Ñ >Ô?ÀÐN^Ñ@^Ñ_Ô_Ð à˜‘= 4¨¨S¨¤>Ñ1°H¸SÀ7¹]ÈTÐRUÐWZÐRZÌ^Ñ=[Ô4\Ñ\Ð Ø )Ð,<Ô"=Ñ=€ðZð Zð Zð Zð Z�Yñ Zô Zð ZðuIð uIð uIð uIð uIˆYñ uIô uIð uIð uIð uIr,   