+
    „WÝjžf  ã                  ó¾  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHt R	t/ tR
]R&   R R ltR R ltR R lt]
! RR7       ! R R4      4       tRt Rt!0 RXmt"0 RYmt#0 RZmt$0 R[mt%]PL                  ! R4      t']PL                  ! R4      t(]PL                  ! R4      t)]PL                  ! R4      t* ! R R]+4      t,]
! RR7       ! R R4      4       t-]
! RR7       ! R  R!4      4       t.]
! RR7       ! R" R#4      4       t/]0! 0 R\m4      t1]0! 0 R]m4      t2R^R$ R% llt3R& R' lt4R( R) lt5R* R+ lt6R, R- lt7R. R/ lt8R0 R1 lt9R2 R3 lt:R4 R5 lt;R6 R7 lt<R8 R9 lt=R: R; lt>R< R= lt?R>R/R? R@ llt@RA RB ltARC RD ltBRE RF ltCR_RG RH lltDRI RJ ltERKR/RL RM lltFRN RO ltGRP RQ ltHRR RS ltIRT RU ltJRV RW ltKR# )`zGCompatibility helpers for Agent Plugins v1 portable directory packages.)ÚannotationsN)Ú	dataclass)ÚPath)ÚAnyÚDictÚMappingÚTuple)Úurlsplit)Ú	yaml_load)ÚDeclarationÚparse_declarationzcom.nousresearch.hermeszdict[str, dict]Ú	_LIVENESSc               ó    € V ^8„  d   QhRRRR/# )é   Úserver_nameÚstrÚreturnúdict | None© )Úformats   "ÚLC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\agent_plugins.pyÚ__annotate__r      s   € ÷ 6ñ 6˜cð 6 kñ 6ó    c                óN   € \         P                  V 4      pVe   \        V4      # R# )z<Return a copy of the portable server's liveness declaration.N)r   ÚgetÚdict©r   Úvalues   & r   Úliveness_forr      s$   € ä�M‰M˜+Ó&€EØÒ+Œ4�‹;Ð5°Ð5r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r   Úobjectr   ÚNoner   )r   s   "r   r   r      s&   € ÷ Uñ U˜sð U¨6ð U°dñ Ur   c                ó¬   € Vf   \         P                  V R 4       R # \        V\        4      '       d   \        V4      \         V &   R # \	        RV  R24      h)Nzserver 'ú' liveness must be an object)r   ÚpopÚ
isinstancer   ÚAgentPluginErrorr   s   &&r   Ú_set_livenessr'      sE   € Ø‚}Ü�‰�k 4Ö(Ü	�Eœ4×	 Ò	 Ü!% e£Œ	�+Óä ¨+¨Ð6RÐSÓTÐTr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r!   r   )r   s   "r   r   r   %   s   € ÷ %ñ % ð %¨ñ %r   c                ó2   € \         P                  V R 4       R # ©N)r   r$   )r   s   &r   Ú_clear_livenessr+   %   s   € Ü‡M�M�+˜tÖ$r   T)Úfrozenc                  ó,   € ] tR t^)t$ R]R&   R]R&   RtR# )ÚAgentPluginServerDeclarationr   Údeclarationr   Úlivenessr   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   r   r   r.   r.   )   s   ‡ àÓØ×r   r.   z:https://agent-plugins.org/schemas/1.0.0/plugin.schema.jsonz7https://agent-plugins.org/schemas/1.0.0/mcp.schema.jsonz3^(?!.*(?:--|\.\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$z"^(?!.*--)[a-z0-9]+(?:-[a-z0-9]+)*$z\$\{(PLUGIN_ROOT|PLUGIN_DATA)\}z^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$c                  ó   € ] tR t^<tRtRtR# )r&   z+Fatal portable manifest validation failure.r   N)r2   r3   r4   r5   Ú__doc__r7   r   r   r   r&   r&   <   s   † Ý5r   r&   c                  ó,   € ] tR t^@t$ R]R&   R]R&   RtR# )ÚAgentPluginDiagnosticr   ÚscopeÚmessager   Nr1   r   r   r   r;   r;   @   s   ‡ àƒJØ‡Lr   r;   c                  óJ   € ] tR t^Ft$ R]R&   R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚAgentPluginSkillr   ÚnameÚdescriptionr   ÚrootÚskill_mdúMapping[str, Any]Úfrontmatterr   Nr1   r   r   r   r?   r?   F   s   ‡ à
ƒIØÓØ
ƒJØƒNØ"×"r   r?   c                  ó|   € ] tR t^Ot$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   R]R&   R]R&   RtR# )ÚAgentPluginPackager   r@   ÚversionrA   r   rB   Ú	data_rootrD   Úmanifestútuple[AgentPluginSkill, ...]ÚskillsúMapping[str, dict[str, Any]]Úmcp_serversz*Mapping[str, AgentPluginServerDeclaration]Úserver_declarationsz!tuple[AgentPluginDiagnostic, ...]Údiagnosticsr   Nr1   r   r   r   rG   rG   O   s:   ‡ à
ƒIØƒLØÓØ
ƒJØƒOØÓØ(Ó(Ø-Ó-ØCÓCØ2×2r   rG   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rJ   rD   rN   rM   rP   z"list[AgentPluginDiagnostic] | Noner   z'dict[str, AgentPluginServerDeclaration]r   )r   s   "r   r   r   b   s.   € ÷ +ñ +Øð+Ø.Jð+à3ð+ð -ñ+r   c           
     ón  € V P                  R / 4      P                  \        / 4      pVP                  R/ 4      p\        V\        4      '       g   \	        R\         R24      h/ pVP                  4        EFŽ  w  rgWa9  d   \	        RV R24      h\        V\        4      '       g   \	        RV R24      h\        V4      \        ,
          pV'       de   Ve,   VP                  \        RV 2R	\        V4       R
24      4       VP                  4        U	U
u/ uF  w  ršW˜9  g   K  WšbK  	  pp	p
V'       g   KÂ  RV9   d   RV9  d   RV9  d   \	        RV R24      hV'       d   \        V4      \        8:  d   EK   \        WgP                  R4      VP                  R4      RV: 2R7      pTP                  R4      pTe&   \        T\        4      '       g   \	        RT R24      h\        TTe   \        T4      MRR7      YV&   EK‘  	  V# u up
p	i   \         d   p\	        \        T4      4      ThRp?ii ; i)Ú
extensionsÚserverszextension 'z'.servers must be an objectúserver declaration 'z!' has no matching mcp.json serverz' must be an objectNzserver:zignored unknown keys z (needs a newer Hermes)r0   ÚappÚrequiresz&' has liveness without app or requireszplugin.json extension server ©Úwherer#   )r/   r0   )r   Ú_HERMES_EXTENSIONr%   r   r&   ÚitemsÚsetÚ_SERVER_DECLARATION_KEYSÚappendr;   ÚsortedÚ_SERVER_POLICY_KEYSr   Ú
ValueErrorr   r.   )rJ   rN   rP   Ú	namespaceÚraw_serversÚdeclarationsr@   ÚrawÚunknownÚkeyr   r/   Úexcr0   s   &&&           r   Ú_server_declarationsri   b   s  € ð —‘˜\¨2Ó.×2Ñ2Ô3DÀbÓI€IØ—-‘- 	¨2Ó.€KÜ�k¤4×(Ò(Ü Ô->Ð,?Ð?ZÐ[Ó\Ð\Ø<>€LØ ×&Ñ&×(‰	ˆØÔ"Ü"Ð%9¸$¸Ð?`Ð#aÓbÐbÜ˜#œt×$Ò$Ü"Ð%9¸$¸Ð?RÐ#SÓTÐTô �c“(Ô5Õ5ˆßØÒ&Ø×"Ñ"Ô#8Ø˜d˜VÐ$Ð(=¼fÀW»oÐ=NÐNeÐ&fó$hô ià03·	±	´ÔR±¡* #¸sÑ?Q”:�3’:±ˆCÑRßÙØ˜Ô ¨cÔ!1°jÈÔ6KÜ"Ð%9¸$¸Ð?eÐ#fÓgÐgß”3�s“8Ô2Ô2Úð	6Ü+Ø—g‘g˜e“n c§g¡g¨jÓ&9Ø5°d±XÐ>ôˆKð —7‘7˜:Ó&ˆØÒ¬
°8¼T×(BÒ(BÜ"Ð%9¸$¸Ð?[Ð#\Ó]Ð]Ü9Ø#Ø'/Ò';”T˜(”^Àô
ˆÔñ= )ðD Ðùó+ Søô ô 	6Ü"¤3 s£8Ó,°#Ð5ûð	6ús$   Ä
H	Ä#H	Å:0HÈH4ÈH/È/H4c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ   rD   rN   rM   r   zdict[str, str]r   )r   s   "r   r   r   �   s$   € ÷ ñ Ð-ð Ð<Xð Ð]kñ r   c                ó€  € V P                  R/ 4      P                  \        / 4      P                  R/ 4      p/ p\        V\        4      '       d   VP	                  4       MR FY  w  rE\        V\        4      '       d   RV9  g   WA9  d   K*  VR,          pVR9  d   \        RV RV: 24      hVR8X  g   KU  WcV&   K[  	  V# )	aÄ  Servers the package asks Hermes to gate: ``extensions.com.nousresearch.hermes.servers.<name>.trust``.

The package may only narrow access. ``untrusted`` makes every write-capable call to that server
ask the user first (the native ``trust: untrusted`` gate); ``full`` is the default and so changes
nothing. A package can never widen a server the user configured: a ``config.yaml`` server with
the same name replaces the package's entry, trust included.
rS   rT   ÚtrustÚ	untrustedrU   z+' trust must be 'untrusted' or 'full', not r   )Úfullrm   )r   rZ   r%   r   r[   r&   )rJ   rN   rc   rl   r@   re   r   s   &&     r   Ú_server_trustro   �   s¾   € ð —,‘,˜|¨RÓ0×4Ñ4Ô5FÈÓK×OÑOÐPYÐ[]Ó^€KØ€EÜ-7¸ÄT×-JÒ-J�k×'Ñ'Ô)ÐPRÒR‰	ˆÜ˜#œt×$Ò$¨°sÔ(:¸dÔ>UÙØ�G•ˆØÐ-Ô-Ü"Ð%9¸$¸Ð?jÐkpÑjsÐ#tÓuÐuØ�KÖØ�$‹Kñ Sð €Lr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ   rD   rN   rM   r   zdict[str, float]r   )r   s   "r   r   r   ¥   s$   € ÷ ñ Ð0ð Ð?[ð Ð`pñ r   c                ó  € V P                  R/ 4      P                  \        / 4      P                  R/ 4      p/ p\        V\        4      '       d   VP	                  4       MR F   w  rE\        V\        4      '       d   RV9  g   WA9  d   K*  VR,          p\        V\
        4      '       g<   \        V\        \        34      '       d    ^ Tu;8  d   \        P                  8:  g   M \        RV R24      h\        V4      W4&   K¢  	  V# )zRTranslate optional Hermes call deadlines without changing other servers' defaults.rS   rT   ÚtimeoutrU   zA' timeout must be positive seconds within the platform wait limitr   )r   rZ   r%   r   r[   ÚboolÚintÚfloatÚ	threadingÚTIMEOUT_MAXr&   )rJ   rN   rc   Útimeoutsr@   re   r   s   &&     r   Ú_server_timeoutsry   ¥   sè   € à—,‘,˜|¨RÓ0×4Ñ4Ô5FÈÓK×OÑOÐPYÐ[]Ó^€KØ!#€HÜ-7¸ÄT×-JÒ-J�k×'Ñ'Ô)ÐPRÒR‰	ˆÜ˜#œt×$Ò$¨	¸Ô(<ÀÔ@WÙØ�I•ˆÜ�eœT×"Ò"¬*°U¼SÄ%¸L×*IÒ*IÐQRÐUZÖQsÔ^g×^sÑ^sÖQsÜ"Ð%9¸$¸ð  @Að  $Bó  Cð  CÜ˜u›ˆ‹ñ Sð €Or   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ   rD   rN   rM   r   údict[str, dict[str, Any]]r   )r   s   "r   r   r   ³   s$   € ÷ ñ Ð-ð Ð<Xð Ð]vñ r   c           	     óˆ  € ^ RI Hp V P                  R/ 4      P                  \        / 4      P                  R/ 4      p/ p\	        V\
        4      '       d   VP                  4       MR Fª  w  rV\	        V\
        4      '       d   WQ9  d   K#  R Uu/ uF  qwV9   g   K  WvV,          bK  	  ppV'       g   KM   V! VP                  R4      VP                  R4      VP                  R4      RV R2R	7       RT9   d   TP                  R4      TR&   Y„T&   K¬  	  V# u upi   \         d   p	\        \        T	4      4      T	hR
p	?	ii ; i)a	  Translate ``costs``/``spend_limit``/``cost_unit`` into the native ``tool_costs``/``spend_limit``/``cost_unit``
keys (``tools.mcp_tool_costs``). A malformed table disables the package: a budget the author declared must
never be dropped while the server still spends.)Úparse_cost_policyrS   rT   ÚcostsÚspend_limitÚ	cost_unitrU   Ú'rX   NÚ
tool_costsr   )r~   r   r€   )Útools.mcp_tool_costsr}   r   rZ   r%   r   r[   ra   r&   r   r$   )
rJ   rN   r}   rc   Ú
translatedr@   re   rg   Údeclaredrh   s
   &&        r   Ú_server_costsr†   ³   s5  € õ 7Ø—,‘,˜|¨RÓ0×4Ñ4Ô5FÈÓK×OÑOÐPYÐ[]Ó^€KØ,.€JÜ-7¸ÄT×-JÒ-J�k×'Ñ'Ô)ÐPRÒR‰	ˆÜ˜#œt×$Ò$¨Ô(?ÙÙ-RÓaÑ-R cÐ]`ÑV`”M�C˜S�’MÑ-RˆÐaßÙð	6Ù˜hŸl™l¨7Ó3°X·\±\À-Ó5PÐRZ×R^ÑR^Ð_jÓRkØ&:¸4¸&ÀÐ$BõDð �hÔØ%-§\¡\°'Ó%:ˆH�\Ñ"Ø#�4Óñ Sð Ðùò bøô ô 	6Ü"¤3 s£8Ó,°#Ð5ûð	6ús$   ÂDÂDÂ5=DÄEÄ'D<Ä<Ec               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpathr   rB   r   rs   r   )r   s   "r   r   r   Ë   s!   € ÷ ñ �$ð ˜dð  tñ r   c                ó    €  V P                  R R7      P                  VP                  RR7      4      #   \        \        \        3 d     R # i ; i)F©ÚstrictT)ÚresolveÚis_relative_toÚOSErrorÚRuntimeErrorra   )rˆ   rB   s   &&r   Ú_insider�   Ë   sG   € ðØ�|‰| 5ˆ|Ó)×8Ñ8¸¿¹ÈT¸Ó9RÓSÐSøÜ”\¤:Ð.ô Úðús   ‚03 ³AÁAc               ó   € V ^8„  d   QhRR/# )r   r   rs   r   )r   s   "r   r   r   Ò   s   € ÷ 3ñ 3˜ñ 3r   c                ój   € \         ;QJ d    R  V  4       F  '       d   K   R# 	  R# ! R  V  4       4      # )c              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5ir*   ©r%   r   ©Ú.0Úvs   & r   Ú	<genexpr>Ú_all_str.<locals>.<genexpr>Ó   s   é € Ð2©6 aŒz˜!œS×!Ð!«6ùs   ‚FT)Úall)Úvaluess   &r   Ú_all_strrœ   Ò   s+   € ß‹3Ñ2©6Ó2�3Œ3Ð2Š3Ð2ˆ3Ñ2©6Ó2Ó2Ð2r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r    r   rs   r   )r   s   "r   r   r   Ö   s   € ÷ Tñ T�Fð T˜tñ Tr   c                óŠ   € \        V \        4      ;'       d-    \        V 4      ;'       d    \        V P                  4       4      # r*   )r%   r   rœ   r›   )r   s   &r   Ú_str_maprŸ   Ö   s.   € Ü�eœTÓ"×SÐS¤x°£×SÐS¼8ÀEÇLÁLÃNÓ;SÐSr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rˆ   r   Úlabelr   r   r   r   )r   s   "r   r   r   Ú   s!   € ÷ ñ ˜Dð ¨Cð °Dñ r   c               ó  €  \         P                  ! V P                  R R7      4      p\        T\        4      '       g   \        T R24      hT#   \        \        \         P
                  3 d   p\        T RT 24      ThRp?ii ; i)ú	utf-8-sig©Úencodingz is not valid readable JSON: Nz must contain a JSON object)	ÚjsonÚloadsÚ	read_textrŽ   ÚUnicodeErrorÚJSONDecodeErrorr&   r%   r   )rˆ   r¡   r   rh   s   &$  r   Ú_read_json_objectr«   Ú   sƒ   € ðVÜ—
’
˜4Ÿ>™>°;˜>Ó?Ó@ˆô �eœT×"Ò"Ü % Ð(CÐDÓEÐEØ€Løô	 ”\¤4×#7Ñ#7Ð8ô VÜ % Ð(EÀcÀUÐKÓLÐRUÐUûðVús   ‚&A Á BÁ.A?Á?Bc               ó    € V ^8„  d   QhRRRR/# )r   rB   r   r   z(tuple[dict, list[AgentPluginDiagnostic]]r   )r   s   "r   r   r   ä   s   € ÷ !ñ !˜Tð !Ð&Nñ !r   c                óº  € V R ,          p\        W4      '       d   VP                  4       '       g   \        R4      h\        VR R7      p. p\	        \        V4      \        ,
          4       F2  pVP                  \        RRV 24      4       VP                  V4       K4  	  VP                  R4      \        8w  d   \        R4      hVP                  R4      p\        V\        4      '       d3   ^\        V4      u;8:  d   ^@8:  d   M M\        P!                  V4      f   \        R4      hR F6  pWB9   g   K  \        W$,          \        4      '       d   K)  \        R	V R
24      h	  VP                  R. 4      p\        V\"        4      '       d   \%        V4      '       g   \        R4      hVP                  R/ 4      p\        V\&        4      '       g   \        R4      h\        V4      \(        ,
          '       g    \%        VP+                  4       4      '       g   \        R4      hVP                  R/ 4      p\        V\&        4      '       g0   VP                  \        RR4      4       VP                  R4       W#3# \,        ;QJ d*    R VP+                  4        4       F  '       g   K   RM	  RM! R VP+                  4        4       4      '       d   \        R4      hW#3# )zplugin.jsonz9plugin.json must be a regular file within the plugin root©r¡   rJ   z!ignored unknown top-level field: ú$schemazCplugin.json declares an unsupported or missing Agent Plugins schemar@   z0plugin.json name does not satisfy v1 constraintszplugin.json z must be a stringÚkeywordsz0plugin.json keywords must be an array of stringsÚauthorz$plugin.json author must be an objectzFplugin.json author may contain only string name, email, and url fieldsrS   z#ignored non-object extensions fieldc              3  óL   "  € T F  p\        V\        4      '       * x € K  	  R # 5ir*   )r%   r   )r–   r   s   & r   r˜   Ú%_validate_manifest.<locals>.<genexpr>  s   é € ÐJÑ6I¨U”˜E¤4Ó(×(Ñ(Ó6Iùs   ‚"$TFz6plugin.json extension namespace values must be objects)rH   rA   ÚhomepageÚ
repositoryÚlicense)r�   Úis_filer&   r«   r_   r\   Ú_PLUGIN_FIELDSr^   r;   r$   r   ÚPLUGIN_SCHEMA_V1r%   r   ÚlenÚ_PLUGIN_NAME_REÚ	fullmatchÚlistrœ   r   Ú_AUTHOR_FIELDSr›   Úany)	rB   Úmanifest_pathrJ   rP   Úfieldr@   r°   r±   rS   s	   &        r   Ú_validate_manifestrÂ   ä   s@  € Ø˜=Õ(€MÜ�=×'Ò'¨}×/DÑ/D×/FÒ/FÜÐZÓ[Ð[Ü  °mÔD€HØ/1€KÜœ˜H›¬Õ6Ö7ˆØ×ÑÔ0°Ð?`ÐafÐ`gÐ=hÓiÔjØ�‰�UÖñ 8ð ‡|�|�IÓÔ"2Ô2ÜÐdÓeÐeØ�<‰<˜Ó€DÜ�dœC× Ò ¨¬S°«YÖ(<¸"×(<Ä×@YÑ@YÐZ^Ó@_Ò@gÜÐQÓRÐRÛPˆØÖ¤Z°µÄ×%EÔ%EÜ" \°%°Ð8IÐ#JÓKÐKñ Qð �|‰|˜J¨Ó+€HÜ�h¤×%Ò%¬X°h×-?Ò-?ÜÐQÓRÐRØ�\‰\˜( BÓ'€FÜ�fœd×#Ò#ÜÐEÓFÐFÜ
ˆ6ƒ{”^×#Ô#¬8°F·M±M³O×+DÒ+DÜÐgÓhÐhØ—‘˜l¨BÓ/€JÜ�j¤$×'Ò'Ø×ÑÔ0°Ð=bÓcÔdØ�‰�\Ô"ð Ð Ð ÷ 
‹ÑJ°j×6GÑ6GÔ6IÓJ��ŠÑJ°j×6GÑ6GÔ6IÓJ×	JÒ	JÜÐWÓXÐXØÐ Ð r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rE   rD   Údirectory_namer   r   z
str | Noner   )r   s   "r   r   r     s#   € ÷ ñ Ð*;ð ÈSð ÐU_ñ r   c                ó¶  € V P                  R 4      p\        V\        4      '       d:   W!8w  g4   ^\        V4      u;8:  d   ^@8:  d   M R# \        P                  V4      f   R# V P                  R4      p\        V\        4      '       d   ^\        V4      u;8:  d
   R8:  g    R#  R# RV 9   d    \        V R,          \        4      '       g   R# RV 9   d>   V R,          p\        V\        4      '       d   ^\        V4      u;8:  d
   R	8:  g    R
#  R
# RV 9   d   \        V R,          4      '       g   R# RV 9   d    \        V R,          \        4      '       g   R# R# )r@   NzBname must match the directory and satisfy Agent Skills constraintsrA   i   zAdescription must be a non-empty string of at most 1024 charactersr¶   zlicense must be a stringÚcompatibilityiô  z5compatibility must be a string of 1 to 500 charactersÚmetadataz.metadata must map string keys to string valueszallowed-toolszallowed-tools must be a string)r   r%   r   rº   Ú_SKILL_NAME_REr¼   rŸ   )rE   rÄ   r@   rA   rÆ   s   &&   r   Ú_valid_skill_frontmatterrÉ     s  € Ø�?‰?˜6Ó"€DÜ�tœS×!Ò! TÔ%;À1ÌÈDË	ÖCWÐUWÖCWáSô ×'Ñ'¨Ó-Ò5ÙSØ—/‘/ -Ó0€KÜ�k¤3×'Ò'¨q´C¸Ó4DÖ/LÈÕ/LÙRð 0MÙRØ�KÔ¬
°;¸yÕ3IÌ3×(OÒ(OÙ)Ø˜+Ô%Ø# OÕ4ˆÜ˜-¬×-Ò-°Q¼#¸mÓ:LÖ5SÐPSÕ5SÙJð 6TÙJØ�[Ô ¬°+¸jÕ2I×)JÒ)JÙ?Ø˜+Ô%¬j¸À_Õ9UÔWZ×.[Ò.[Ù/Ùr   c               ó    € V ^8„  d   QhRRRR/# )r   rC   r   r   r   r   )r   s   "r   r   r     s   € ÷ ñ  tð °ñ r   c                ó´  € V P                  RR7      P                  R4      pVP                  R4      '       g   \        R4      h\        P
                  ! RVR,          4      pVf   \        R	4      h \        V^VP                  4       ^,            4      p\        T\        4      '       g   \        R4      hT#   \         d   p\        R
T 24      ThRp?ii ; i)z]Read SKILL.md and return its YAML frontmatter object; raises ValueError/OSError/UnicodeError.r£   r¤   u   ï»¿z---zmissing YAML frontmatterz
\n---\s*\n:é   NNNzunterminated YAML frontmatterzinvalid YAML frontmatter: z"YAML frontmatter must be an object)r¨   ÚlstripÚ
startswithra   ÚreÚsearchr
   ÚstartÚ	Exceptionr%   r   )rC   ÚcontentÚ	end_matchÚparsedrh   s   &    r   Ú_parse_skill_frontmatterrÖ     sÏ   € à× Ñ ¨+Ð Ó6×=Ñ=¸hÓG€GØ×Ñ˜e×$Ò$ÜÐ3Ó4Ð4Ü—	’	˜-¨°­Ó5€IØÒÜÐ8Ó9Ð9ðFÜ˜7 1 y§¡Ó'8¸1Õ'<Ð=Ó>ˆô �fœd×#Ò#ÜÐ=Ó>Ð>Ø€Møô	 ô FÜÐ5°c°UÐ;Ó<À#ÐEûðFús   Á2#B8 Â8CÃCÃCc               ó$   € V ^8„  d   QhRRRRRR/# )r   rB   r   rP   úlist[AgentPluginDiagnostic]r   rK   r   )r   s   "r   r   r   ,  s#   € ÷ !ñ !˜4ð !Ð.Ið !ÐNjñ !r   c                ó<  € V R ,          pVP                  4       '       g   VP                  4       '       g   R# \        W 4      '       d   VP                  4       '       g   VP	                  \        R R4      4       R#  \        VP                  4       R R7      p. pT EF  pTR,          pTP                  4       '       d   TP                  4       '       g   K;  \        Yp4      '       d   TP                  4       '       g   RpM! \        T4      p	\        Y–P                  4      pT'       d+   TP	                  \        R	TP                   2T4      4       K¸  TP	                  \        TP                  X	R
,          TP!                  RR7      TP!                  RR7      \#        T	4      R7      4       EK  	  \%        T4      #   \         d+   pTP	                  \        R RT 24      4       Ru Rp?# Rp?ii ; i  \        \        \        3 d   pRT 2p Rp?LóRp?ii ; i)rL   z#skills must be an in-root directoryc                ó   € V P                   # r*   )r@   )rˆ   s   &r   Ú<lambda>Ú"_discover_skills.<locals>.<lambda>4  s   € À$Ç)Â)r   )rg   zcannot list skills: NzSKILL.mdz'SKILL.md must be a regular in-root filezinvalid SKILL.md: zskill:rA   TrŠ   )r@   rA   rB   rC   rE   r   )ÚexistsÚ
is_symlinkr�   Úis_dirr^   r;   r_   ÚiterdirrŽ   r·   rÖ   rÉ   r@   r©   ra   r?   rŒ   r   Útuple)
rB   rP   Úskills_rootÚchildrenrh   rL   ÚchildrC   ÚerrorrE   s
   &&        r   Ú_discover_skillsræ   ,  sÆ  € Ø˜•/€KØ×Ñ×Ò¨×(>Ñ(>×(@Ò(@Øˆ	Ü�;×%Ò%¨[×-?Ñ-?×-AÒ-AØ×ÑÔ0°Ð;`ÓaÔbØˆ	ðÜ˜+×-Ñ-Ó/Ñ5KÔLˆð &(€FÜˆØ˜:Õ%ˆØ�|‰|�~Š~ X§_¡_×%6Ò%6ÙÜ�x×&Ò&¨h×.>Ñ.>×.@Ò.@Ø=‰EðJÜ6°xÓ@�ô 1°¿j¹jÓI�ßØ×ÑÔ4°v¸e¿j¹j¸\Ð5JÈEÓRÔSÙØ�‰Ô&Ø—‘¨°]Õ)CØ—‘ d�Ó+°h×6FÑ6FÈdÐ6FÓ6SÜ˜[Ó)ô+÷ 	,ñ! ô( �‹=Ðøô1 ô Ø×ÑÔ0°Ð=QÐRUÐQVÐ;WÓXÔYØ�	ûðûô œ\¬:Ð6ô 3Ø,¨S¨EÐ2•ûð3ús6   Á=F> ÄG6Æ>G3Ç	G.Ç(G3Ç.G3Ç6HÈHÈHc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   Úplugin_rootr   rI   r   r   )r   s   "r   r   r   P  s.   € ÷ Rñ R�3ð R Tð R°dð R¸sñ Rr   c                óh   a€ R \        V4      R\        V4      /o\        P                  V3R lV 4      # )ÚPLUGIN_ROOTÚPLUGIN_DATAc                ó4   <€ SV P                  ^4      ,          # )é   )Úgroup)ÚmatchÚreplacementss   &€r   rÛ   Ú_expand.<locals>.<lambda>R  s   ø€ ¨\¸%¿+¹+Àa».Ö-Ir   )r   Ú_PLACEHOLDER_REÚsub)r   rè   rI   rð   s   &&&@r   Ú_expandrô   P  s.   ø€ Ø!¤3 {Ó#3°]ÄCÈ	ÃNÐS€LÜ×ÑÔIÈ5ÓQÐQr   Úexpand_placeholdersc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r   r   rè   r   rI   rõ   rs   r   r   )r   s   "r   r   r   U  s1   € ÷ ñ  ð °$ð À4ð Ø.2ðØ>Bñr   c               ó   € V'       d   \        WV4      MT pV P                  R 4      '       d   YVR,          ,          reMaV R8X  g   V P                  R4      '       d   T\        V4      reM6V R8X  g   V P                  R4      '       d   T\        V4      reM\        R4      hVP	                  RR7      p VP                  VP	                  RR7      4       V#   \        \        \        3 d   p\        R	4      ThR
p?ii ; i)ú./:r   NNz${PLUGIN_ROOT}z${PLUGIN_ROOT}/z${PLUGIN_DATA}z${PLUGIN_DATA}/z:path must start with ./, ${PLUGIN_ROOT}, or ${PLUGIN_DATA}FrŠ   zpath escapes its resolved rootN)rô   rÎ   r   ra   rŒ   Úrelative_torŽ   r�   )	r   rè   rI   rõ   ÚexpandedÚbaseÚ	candidateÚresolvedrh   s	   &&&$     r   Ú_resolve_scoped_pathrþ   U  sê   € ç9LŒw�u¨9Ô5ÐRW€HØ×Ñ˜×ÒØ%°X¸bµ\Õ'A‰iØ	Ð"Ô	" e×&6Ñ&6Ð7H×&IÒ&IØ%¤t¨H£~‰iØ	Ð"Ô	" e×&6Ñ&6Ð7H×&IÒ&IØ#¤T¨(£^‰iäÐUÓVÐVØ× Ñ ¨Ð Ó.€HðDØ×Ñ˜TŸ\™\°˜\Ó7Ô8ð €Oøô ”\¤:Ð.ô DÜÐ9Ó:ÀÐCûðDús   Â3!C ÃC=Ã,C8Ã8C=c               ó    € V ^8„  d   QhRRRR/# )r   Úheadersr    r   rs   r   )r   s   "r   r   r   h  s   € ÷ ]ñ ]˜vð ]¨$ñ ]r   c                ó  € \        V \        4      '       g   V R J # V  Uu. uF:  p\        V\        4      '       g   K  \        P	                  V4      '       g   K8  VNK<  	  ppV P                  4       p\        V4      \        V 4      8H  ;'       dq    \        V Uu0 uF  qP                  4       kK  	  up4      \        V4      8H  ;'       d5    \        ;QJ d    R V 4       F  '       d   K   R# 	  R# ! R V 4       4      # u upi u upi )Nc              3  óv   "  € T F/  p\        V\        4      ;'       d    R V9  ;'       d    RV9  x € K1  	  R# 5i)ÚÚ
Nr”   r•   s   & r   r˜   Ú$_validate_headers.<locals>.<genexpr>n  s4   é € Ð[ÑTZÈq”J˜q¤#Ó&×JÐJ¨4°q©=×JÐJ¸TÈ¹]ÔJÓTZùs   ‚9ž9«9FT)	r%   r   r   Ú_HEADER_NAME_REr¼   r›   rº   Úlowerrš   )r   r@   Únamesr›   s   &   r   Ú_validate_headersr	  h  sá   € Ü�gœt×$Ò$Ø˜$ˆÐÙ%Óc™g�d¬°D¼#×)>ŒTÄ?×C\ÑC\Ð]a×Cb�TˆT™g€EÐcØ�^‰^Ó€FÜ�‹Jœ#˜g›,Ñ&÷ \ð \¬3ÉÓ/OÉÀ·
±
¶ÉÑ/OÓ+PÔTWÐX]ÓT^Ñ+^÷ \ð \ß“Ñ[ÑTZÓ[—”ð]Úð]ØÑ[ÑTZÓ[Ó[ð]ùò dùâ/Os   ŸD ¼D ÁD ÂDc               ó    € V ^8„  d   QhRRRR/# )r   Úurlr    r   r   r   )r   s   "r   r   r   q  s   € ÷ ñ ˜fð ¨ñ r   c                ó|  € \        V \        4      '       d	   V '       g   \        R4      h \        V 4      pTP                  P                  4       pTR9  d   \        R4      hTP                  f   TP                  e   \        R4      hTP                  '       d   \        R4      hTP                  pT'       g   \        R4      hTR8X  d<   TR	8w  d5    \        P                  ! T4      P                  pT'       g   \        R4      hT #   \         d   p\        RT 24      ThRp?ii ; i  \         d    R
p LFi ; i)u²   Validate a portable remote MCP URL per Agent Plugins v1 Â§7.2.1 and return it: absolute
http(s), no user info, no fragment; HTTP only for ``localhost``/loopback IP. No expansion.zurl must be a non-empty stringzurl is not parseable: NÚhttpz url scheme must be http or httpsz%url must not contain user informationzurl must not contain a fragmentzurl must have a hostÚ	localhostFznon-loopback url must use https>   r  Úhttps)r%   r   ra   r	   Úschemer  ÚusernameÚpasswordÚfragmentÚhostnameÚ	ipaddressÚ
ip_addressÚis_loopback)r  rÕ   rh   r  ÚhostÚloopbacks   &     r   Ú_validate_remote_urlr  q  s!  € ô �cœ3×Ò§sÜÐ9Ó:Ð:ðBÜ˜#“ˆð �]‰]× Ñ Ó"€FØÐ&Ô&ÜÐ;Ó<Ð<Ø‡�Ò" f§o¡oÒ&AÜÐ@ÓAÐAØ‡‡€ÜÐ:Ó;Ð;Ø�?‰?€DßÜÐ/Ó0Ð0Ø�Ô˜D KÔ/ð	Ü ×+Ò+¨DÓ1×=Ñ=ˆH÷ ÜÐ>Ó?Ð?Ø€Jøô' ô BÜÐ1°#°Ð7Ó8¸cÐAûðBûô ô 	ØŠHð	ús)   «D	 Ã D+ Ä	D(ÄD#Ä#D(Ä+D;Ä:D;c               ó    € V ^8„  d   QhRRRR/# )r   ÚconfigrD   r   údict[str, Any]r   )r   s   "r   r   r   Ž  s   € ÷ ñ Ð/ð °Nñ r   c                óB  € \        V 4      \        ,
          '       d   \        R4      h\        V P	                  R4      4      p\        V P	                  R4      4      '       g   \        R4      hRVRR/pV P	                  R4      '       d   \        V R,          4      VR&   V# )z®Translate a portable ``streamable-http`` entry into native MCP config. The v1 spec requires
``strict_redirect_headers``: drop configured headers on any cross-origin redirect.zunknown remote fieldr  r   zinvalid headersÚstrict_redirect_headersT)r\   Ú_REMOTE_FIELDSra   r  r   r	  r   )r  r  r„   s   &  r   Ú_translate_remoter!  Ž  sŠ   € ô ˆ6ƒ{”^×#Ô#ÜÐ/Ó0Ð0Ü
˜vŸz™z¨%Ó0Ó
1€CÜ˜VŸZ™Z¨	Ó2×3Ò3ÜÐ*Ó+Ð+Ø"'¨Ð.GÈÐ!N€JØ‡z�z�)×ÒÜ $ V¨IÕ%6Ó 7ˆ
�9ÑØÐr   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r  rD   rè   r   rI   Úcreate_datars   r   r  r   )r   s   "r   r   r   œ  s2   € ÷ #9ñ #9Ð.ð #9¸Tð #9Èdð #9Ø"&ð#9Ø3Añ#9r   c                ó¦  € \        V 4      \        ,
          '       d   \        R 4      hV P                  R4      p\	        V\
        4      '       d   V'       d   RV9   d   \        R4      hVP                  R4      '       d   \        \        WAVRR7      4      pMe\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R	4      hR
V9   g   RV9   g   VR9   d   \        R4      hV P                  R. 4      p\	        V\        4      '       d   \        V4      '       g   \        R4      hV P                  R/ 4      p\        V4      '       g   \        R4      hRR0V Uu0 uF*  p\        P                  R8X  d   VP                  4       MTkK,  	  up,          '       d   \        R4      hV P                  R4      pVe"   \	        V\
        4      '       g   \        R4      hVf   TM\        W�V4      p	V'       d>   VP                  RRR7       V	P!                  V4      '       d   V	P                  RRR7       / VP#                  4        UU
u/ uF  w  rzV\%        W¡V4      bK  	  up
pCR\        V4      R\        V4      /CpRTRV U
u. uF  p
\%        W¡V4      NK  	  up
RVR\        V	4      /# u upi u up
pi u up
i )zunknown stdio fieldÚcommandÚ z,command must be a non-empty executable tokenrø   F)rõ   c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5ir*   )Úisspace)r–   Ú	characters   & r   r˜   Ú#_translate_stdio.<locals>.<genexpr>¦  s   é € Ð:±' Y×Ñ× Ð ³'ùs   ‚Tz)command must contain one executable tokenÚ/Ú\z2command must be a bare executable or begin with ./Úargsz args must be an array of stringsÚenvz)env must map string keys to string valuesrê   rë   Úntz(PLUGIN_ROOT and PLUGIN_DATA are reservedÚcwdzcwd must be a string)ÚparentsÚexist_ok>   Ú.ú..)r\   Ú_STDIO_FIELDSra   r   r%   r   rÎ   rþ   r¿   r½   rœ   rŸ   Úosr@   ÚupperÚmkdirr�   r[   rô   )r  rè   rI   r#  r%  r-  r.  rg   r0  Úcwd_pathr   Útranslated_envs   &&&&        r   Ú_translate_stdior;  œ  so  € ä
ˆ6ƒ{”]×"Ô"ÜÐ.Ó/Ð/Ø�j‰j˜Ó#€GÜ�gœs×#Ò#¯7°fÀÔ6GÜÐGÓHÐHØ×Ñ˜$×ÒÜÔ*¨7ÀØ?DôFó G‰ç	‹Ñ:±'Ó:��ŠÑ:±'Ó:×	:Ò	:ÜÐDÓEÐEØ	�Œ˜4 7œ?¨g¸Ô.DÜÐMÓNÐNØ�:‰:�f˜bÓ!€DÜ�dœD×!Ò!¬°$¯ªÜÐ;Ó<Ð<Ø
�*‰*�U˜BÓ
€CÜ�C�=Š=ÜÐDÓEÐEØ�}Ð%Ñ\_Ó(`Ñ\_ÐUX¼¿¹À4¼¨¯©¬ÈSÒ)PÑ\_Ñ(`×`Ô`ÜÐCÓDÐDØ
�*‰*�UÓ
€CØ
‚œz¨#¬s×3Ò3ÜÐ/Ó0Ð0Ø!šk‰{Ô/CÀCÐV_Ó/`€HßØ�‰ ¨tˆÔ4ð ×"Ñ" 9×-Ò-Ø�N‰N 4°$ˆNÔ7ðVÐWZ×W`ÑW`ÔWbÔcÑWbÉÈ˜œg e¸)ÓDÒDÑWbÒcð VØ#¤S¨Ó%5°}ÄcÈ)ÃnñV€Nà�w Ñ]aÓ(bÑ]aÐTY¬°ÀYÖ)OÑ]aÑ(bØ�> 5¬#¨h«-ð9ð 9ùò )aùó dùâ(bs   Å60KÉ!KÊK
c               ó    € V ^8„  d   QhRRRR/# )r   ÚserverrD   r   r!   r   )r   s   "r   r   r   Â  s   € ÷ @ñ @Ð)ð @¨dñ @r   c                ó  € \        V 4      \        ,
          '       g]   \        V P                  R 4      \        4      '       d8   V P                  R 4      '       d!   \        V P                  R4      4      '       g   \        R4      h\        R4      h)r  r   zinvalid remote entryz'portable sse transport is not supported)r\   r   r%   r   r   r	  ra   )r=  s   &r   Ú_reject_sser?  Â  sa   € ÜˆF‹”n×$Ô$¬J°v·z±zÀ%Ó7HÌ#×,NÒ,NØ—:‘:˜e×$Ò$Ô,=¸f¿j¹jÈÓ>S×,TÒ,TÜÐ/Ó0Ð0Ü
Ð>Ó
?Ð?r   r#  c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   rB   r   rI   rP   rØ   r#  rs   r   r{   r   )r   s   "r   r   r   É  s2   € ÷  ñ  ˜ð  ¨ð  Ð<Wð  Ø#ð Ø/Hñ r   c          
     óD  a aa€ S R ,          pVP                  4       '       g   VP                  4       '       g   / #  \        VS 4      '       d   VP                  4       '       g   \	        R4      h\        VR R7      p\        V4      RR08w  d   \	        R4      hVP                  R4      \        8w  d   \	        R4      hVP                  R4      p\        V\        4      '       g   \	        R4      h R
TTT 3R lR\        R\        /p/ p	TP!                  4        F~  w  r« \        T
\        4      '       d   T
'       d   \        T\        4      '       g   \	        R4      hTP                  TP                  R4      4      pTf   \	        R4      hT! T4      Yš&   K€  	  T	#   \         d1   pTP                  \        R\        T4      4      4       / u R	p?# R	p?ii ; i  \"        \        3 d4   pTP                  \        RT
 2\        T4      4      4        R	p?EK  R	p?ii ; i)zmcp.jsonz'mcp.json must be a regular in-root filer®   r¯   Ú
mcpServersz'mcp.json has an invalid top-level shapez'mcp.json declares an unsupported schemazmcpServers must be an objectÚmcpNÚstdioc                ó    <€ \        V SSS4      # r*   )r;  )r=  r#  rI   rB   s   &€€€r   rÛ   Ú_discover_mcp.<locals>.<lambda>Ü  s   ø€ Ô+;¸FÀDÈ)ÐU`Ô+ar   zstreamable-httpÚssezinvalid server entryÚtypezunknown MCP server typezmcp:)rÝ   rÞ   r�   r·   ra   r«   r\   r   ÚMCP_SCHEMA_V1r%   r   r^   r;   r   r!  r?  r[   rŽ   )rB   rI   rP   r#  Úmcp_pathr  rT   rh   Útranslatorsr„   r@   r=  Ú	translates   ff&d         r   Ú_discover_mcprM  É  sÓ  ú€ à�jÕ €HØ�?‰?×Ò X×%8Ñ%8×%:Ò%:Øˆ	ðÜ�x ×&Ò&¨h×.>Ñ.>×.@Ò.@ÜÐFÓGÐGÜ" 8°:Ô>ˆÜˆv‹;˜9 lÐ3Ô3ÜÐFÓGÐGØ�:‰:�iÓ ¤MÔ1ÜÐFÓGÐGØ—*‘*˜\Ó*ˆÜ˜'¤4×(Ò(ÜÐ;Ó<Ð<ð )ð
 ÖaØ$Ô&7¸ÄðM€Kà,.€JØŸ™ž‰ˆð	OÜ˜d¤C×(Ò(·¼JÀvÌt×<TÒ<TÜ Ð!7Ó8Ð8Ø#Ÿ™¨¯
©
°6Ó(:Ó;ˆIØÒ Ü Ð!:Ó;Ð;Ù(¨Ó0ˆJÓñ (ð Ðøô! ô Ø×ÑÔ0°¼¸C»ÓAÔBØ�	ûðûô œÐ$ô 	OØ×ÑÔ4°t¸D¸6°]ÄCÈÃHÓM×NÓNûð	OúsC   ¼'F Á$BF ÄGÄ=AGÆGÆ(%GÇGÇGÇHÇ,'HÈHc               ó    € V ^8„  d   QhRRRR/# )r   rè   r   r   z.tuple[Path, dict, list[AgentPluginDiagnostic]]r   )r   s   "r   r   r   ì  s   € ÷ +ñ + ð +Ð)Wñ +r   c                ó˜   € \        V 4      P                  R R7      pVP                  4       '       g   \        R4      hV.\	        V4      O5# )TrŠ   zplugin root must be a directory)r   rŒ   rß   r&   rÂ   )rè   rB   s   & r   Ú_validate_rootrP  ì  sE   € Ü�Ó×$Ñ$¨DÐ$Ó1€DØ�;‰;�=Š=ÜÐ@ÓAÐAØÐ*Ô$ TÓ*Ñ*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rè   r   rI   r   rG   r   )r   s   "r   r   r   ó  s"   € ÷ ñ  4ð °Dð Ð=Oñ r   c                óZ  € \        V 4      w  r#p\        V4      P                  RR7      p\        W$4      p\	        W%V4      p\        W74      P                  4        F  w  r‰/ Wx,          CRV	/CWx&   K  	  \        W74      P                  4        F  w  rŠ/ Wx,          CRV
/CWx&   K  	  \        W74      P                  4        F  w  r‹/ Wx,          CVCWx&   K  	  \        W7V4      p\        VR,          VP                  RR4      VP                  RR4      W%\        V4      WgV\        V4      R	7
      # )
z>Validate and translate one installed Agent Plugins v1 package.FrŠ   rl   rr   r@   rH   Ú rA   )
r@   rH   rA   rB   rI   rJ   rL   rN   rO   rP   )rP  r   rŒ   ræ   rM  ro   r[   ry   r†   ri   rG   r   r   rá   )rè   rI   rB   rJ   rP   Úresolved_datarL   rN   r@   Útierrr   r~   rO   s   &&           r   Úload_agent_pluginrV  ó  s%  € ä"0°Ó"=Ñ€D�KÜ˜“O×+Ñ+°5Ð+Ó9€MÜ˜dÓ0€FÜ °[ÓA€KÜ# HÓ:×@Ñ@ÖB‰
ˆØ@˜{Õ0Ð@°'¸4Ñ@ˆÓñ Cä)¨(Ó@×FÑFÖH‰ˆØE˜{Õ0ÐE°)¸WÑEˆÓñ Iä$ XÓ;×AÑAÖC‰ˆØ:˜{Õ0Ð:°EÐ:ˆÓñ Dä.¨xÀkÓRÐÜØ�fÕ x§|¡|°I¸rÓ'BØ—L‘L °Ó3¸$Ü�h“¨Ø/Ü˜+Ó&ôð r   c               ó    € V ^8„  d   QhRRRR/# )r   rJ   r   r   r   )r   s   "r   r   r   	  s   € ÷ Mñ M Sð M¨Sñ Mr   c                ó   € \        V \        4      '       d   V P                  R4      MRp\        V\        4      '       d   VP                  \        4      MRp\        V\        4      '       d   VP                  R4      # R# )a  Raw ``extensions.com.nousresearch.hermes.config_schema`` of a parsed ``plugin.json`` (Agent
Plugins v1 forbids unknown top-level fields), else ``None``. Unvalidated: the settings form
filters it, the loader and ``plugins validate`` report what is malformed.rS   NÚconfig_schema)r%   r   r   rZ   )rJ   rS   Úhermess   &  r   Úmanifest_config_schemar[  	  s^   € ô 0:¸(ÄD×/IÒ/I�—‘˜lÔ+Èt€JÜ2<¸ZÌ×2NÒ2NˆZ�^‰^Ô-Ô.ÐTX€FÜ*4°V¼T×*BÒ*Bˆ6�:‰:�oÓ&ÐLÈÐLr   c               ó    € V ^8„  d   QhRRRR/# )r   rè   r   r   z.tuple[dict, tuple[AgentPluginDiagnostic, ...]]r   )r   s   "r   r   r     s   € ÷ (ñ (¨Dð (Ð5cñ (r   c                ó8   € \        V 4      w  rpV\        V4      3# )zBValidate only root ``plugin.json`` without discovering components.)rP  rá   )rè   Ú_rootrJ   rP   s   &   r   Úread_agent_plugin_manifestr_    s!   € ä#1°+Ó#>Ñ €E�[Ø”U˜;Ó'Ð'Ð'r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
raw_configrD   r   rs   r   )r   s   "r   r   r     s   € ÷ ñ Ð->ð À4ñ r   c                ó   € ^ RI Hp V! V 4      # )z·Import-compatible wrapper for the shared PluginManager MCP probe; directory scanning lives
in :mod:`hermes_cli.plugins` so startup gating and full plugin discovery cannot drift apart.)Úhas_enabled_agent_plugin_mcp)Úhermes_cli.pluginsrc  )ra  Ú_probes   & r   rc  rc    s   € õ JÙ�*ÓÐr   >
   r@   r±   r¶   rH   r´   r°   rS   rµ   rA   r¯   >   r  r@   Úemail>   r0  r.  r-  rH  r%  >   r  rH  r   >   rV   r~   rl   rr   r0   rW   r€   r   >   r~   rl   rr   r€   r   r*   )F)LÚ__conditional_annotations__r9   Ú
__future__r   r  r¦   r6  rÏ   rv   Údataclassesr   Úpathlibr   Útypingr   r   r   r   Úurllib.parser	   Úagent.skill_utilsr
   Úhermes_platform.declarationr   r   rZ   r   r6   r   r'   r+   r.   r¹   rI  r¸   r¾   r5  r   Úcompiler»   rÈ   rò   r  ra   r&   r;   r?   rG   Ú	frozensetr]   r`   ri   ro   ry   r†   r�   rœ   rŸ   r«   rÂ   rÉ   rÖ   ræ   rô   rþ   r	  r  r!  r;  r?  rM  rP  rV  r[  r_  rc  )rg  s   @r   Ú<module>rq     så  øðÜ Må "ã Û Û 	Û 	Û Ý !Ý ß ,Ó ,Ý !å 'ß Fà-Ð Ø€	ˆ?Ó õ6õUõ%ñ �$Ô÷ð ó ðð PÐ ØI€ò7€â)€Ú9€Ú+€Ø—*’*ÐSÓT€Ø—’ÐAÓB€Ø—*’*Ð?Ó@€Ø—*’*Ð>Ó?€ô6�zô 6ñ �$Ô÷ð ó ðñ
 �$Ô÷#ð #ó ð#ñ �$Ô÷
3ð 
3ó ð
3ñ %Ò%}Ó~Ð áÒ YÓZÐ ÷+õ\õ*õõ0õ3õTõõ!õDõ*õ"!õHRð
Ø59÷õ&]õõ:÷#9õL@ð Ø&*÷ õF+õõ,Mõ(÷r   