+
    Q(i                        R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	H
t
Ht ]! ]4      P                  R,          t]! ]! ]! ]4      4      RRRR7      tR R	 ltR
 R ltR R ltR R ltR R ltRR R lltR R ltRR R lltR# )z=Code generation for app.py and SKILL.md via Jinja2 templates.)Path)Any)EnvironmentFileSystemLoader)schema_to_python_typeto_python_identifierextract_params	templatesT)loaderkeep_trailing_newlinelstrip_blockstrim_blocksc                0    V ^8  d   QhR\         R\         /# )   	tool_namereturn)str)formats   "Y/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/mcp_skill/generator.py__annotate__r      s     2 2c 2c 2    c                    V P                  R R4      P                  R4      p0 RmpV Uu. uF;  q3P                  4       V9  g   K  \        V4      ^8  g   K+  VP                  4       NK=  	  ppV'       d   RP	                  V4      # T # u upi )-_, >   aanbyinisofontoforgetsetthe)replacesplitlowerlenjoin)r   wordsskipwtagss   &    r   _generate_tagsr0      sr    c3'--c2EVD$Mu!	(=I#a&1*IAGGIuDM"499T?1	1 Ns   BBBc                R    V ^8  d   QhR\         R\        \        ,          R\         /# )r   method_nameparamsr   )r   listdict)r   s   "r   r   r      s%       d4j S r   c                     R .pV F]  pVR,          '       d'   VP                  VR,           RVR,           24       K8  VP                  VR,           RVR,           R24       K_  	  RP                  V4      # )selfrequirednamez: typez = Noner   )appendr+   )r2   r3   partsps   &&  r   _build_method_signaturer>      sm    HEZ==LLAfI;b645LLAfI;b67;<	 
 99Ur   c                R    V ^8  d   QhR\         \        \        3,          R\        /# )r   
propertiesr   )r5   r   r   )r   s   "r   r   r   '   s"     # #DcN #s #r   c                    . p\        V P                  4       4      R ,           F  pW,          pVP                  RR4      pVR8X  d   VP                  V R24       K:  VR8X  d   VP                  V R24       KW  VR8X  d   VP                  V R24       Kt  VR8X  d   VP                  V R	24       K  VP                  V R
24       K  	  RP	                  V4      # ):N   Nr:   stringz
="example"integerz=1numberz=1.0booleanz=Truez="value"r   )r4   keysr$   r;   r+   )r@   example_argspnpspts   &    r   _build_example_argsrL   '   s    L:??$%b))^VVFH%>2$j 129_2$b	*8^2$d,9_2$e-2$h0 * 99\""r   c                h    V ^8  d   QhR\         R\        \         \        ,          \        3,          /# r   toolsr   )r4   tupler5   r   )r   s   "r   r   r   9   s'        D  U4:s?%;  r   c                    \        4       p. pV  F  p\        VP                  V4      p\        VP                  ;'       g    / 4      pTP                  R TRVP                  R\        WE4      RVP                  ;'       g    RRV Uu. uF;  pR VR ,          RVR,          RVP                  R4      ;'       g    RR	VR	,          /NK=  	  upR
\        VP                  4      /4       K  	  RP                  R V 4       4      pW'3# u upi )r9   r   	signaturedescriptionzExecute this tool.r3   r:   doczNo descriptionr8   r/   r   c              3   :   "   T F  pR VR,           2x  K  	  R# 5i)zself.r9   N ).0ms   & r   	<genexpr>#_prepare_methods.<locals>.<genexpr>R   s     AAeAfI;/s   )r%   r   r9   r   inputSchemar;   r>   rS   r$   r0   r+   )rO   existing_namesmethodstoolr2   r3   r=   method_refss   &       r   _prepare_methodsr`   9   s
   "uNG*499nE 0 0 6 6B7K0E4++CC/C    A AfIAfI155/CC3C*	   N499-
 		 * ))AAAKs   /D6Dc                F    V ^8  d   QhR\         R\         \        ,          /# rN   )r4   r5   )r   s   "r   r   r   V   s      d tDz r   c                    . pV  F  pVP                   ;'       g    / pVP                  R / 4      pVP                  R. 4      pVP                  P                  RR4      P                  RR4      pTP	                  RVP                  RVP
                  ;'       g    RRTR	\        V4      R
VP                  4        UUu. uF*  w  rxRVR\        V4      RWu9   RVP                  RR4      /NK,  	  upp/4       K  	  V# u uppi )r@   r8   r   r   .r9   rS   zNo description available.safe_methodrH   r3   r:    )	r[   r$   r9   r'   r;   rS   rL   itemsr   )	rO   docsr^   input_schemar@   r8   rd   rI   rJ   s	   &        r   _prepare_tool_docsri   V   s   D''--2!%%lB7
##J3ii''S199#sCDII4++JJ/J;/
; )..0 1FB B1"5!266-#<	 1
 	 * Ks   <0C;Nc                    V ^8  d   QhR\         R\         R\        R\         R\         R,          R\         R,          R\         R,          R	\         /# )
r   
class_name
server_urlrO   	auth_typeauth_headerN
skill_namemodule_namer   r   r4   )r   s   "r   r   r   p   sd     ! !!! ! 	!
 t! d
! t! 	!r   c                 l   \        V4      w  rxV'       dS   R P                  R VR,           4       4      p	\        V4      ^8  d   V	R\        V4      ^,
           R2,          p	RV	 2p
MRp
\        P	                  R4      pTP                  T V P                  RR	4      TTTTT;'       g    TV
VVR
7
      pV# )r   c              3   8   "   T F  qP                   x  K  	  R # 5i)N)r9   )rW   ts   & r   rY   "generate_app_py.<locals>.<genexpr>|   s      ;As   :N   Nz and z morezinteract with tools: zinteract with the MCP serverz	app.py.j2Appre   )
rk   	base_namerl   rm   rn   ro   rp   briefr]   r_   )r`   r+   r*   _envget_templaterenderr'   )rk   rl   rO   rm   rn   ro   rp   r]   r_   tool_summaryry   templatecodes   &&&&&&&      r   generate_app_pyr   p   s     ,E2Gyy ;r ;;u:>eCJN#3599L'~6.  -H??$$UB/--:  D Kr   c                F    V ^8  d   QhR\         R\        \         ,          /# )r   rm   r   rq   )r   s   "r   r   r      s      S T#Y r   c                     R .# )z	mcp-skillrV   )rm   s   &r   _compute_dependenciesr      s
    =r   c                    V ^8  d   QhR\         R\         R\        R\         R\         R\         R,          R\         R,          R	\         R,          R
\         /	# )r   ro   rS   rO   rk   rm   rn   Nrp   short_descriptionr   rq   )r   s   "r   r   r      sn     " """ " 	"
 " t" t" Tz" 	"r   c                 |   \        V4      R 8  d   VR,          R,           p\        V4      p\        V4      p	\        P	                  R4      p
T
P                  T T;'       g    T TT;'       g    T VVVVV	R7	      pVP                  R4      p\        V4      R8  d"   RP                  VR,          4      pVR,          pV# )	i   :Ni  Nz...zskill.md.j2)	ro   rp   rS   r   rk   rm   rn   rO   dependencies
i  :Ni  Nz,

*...additional tools omitted for brevity*
)r*   ri   r   rz   r{   r|   r(   r+   )ro   rS   rO   rk   rm   rn   rp   r   	tool_docsr   r~   contentcontent_liness   &&&&&&&&     r   generate_skill_mdr      s     ;$!%(50"5)I(3L  /Hoo--:+99z!  
G MM$'M
=C))M$/0DDNr   )noneNNN)rw   r   NNN)__doc__pathlibr   typingr   jinja2r   r   mcp_skill.type_mapperr   r   r   __file__parent_TEMPLATE_DIRr   rz   r0   r>   rL   r`   ri   r   r   r   rV   r   r   <module>r      s    C   0  X%%3C./	2#$ :4!H" "r   