+
    lHàjµS  ã                   ód  € R t ^RIHtHt ]! 4       t]P
                  t]P                  t]! 0 R2m4      t	. R3Ot
R4R R lltR R lt]! R4      R R	 l4       tR
 R ltR R ltR R ltR R ltR R ltR5R R llt]! R4      ]! R4      R R l4       4       tR R lt]! R4      ]! R4      R R l4       4       tR  R! ltR" R# lt]! R$4      ]]! R%4      R& R' l4       4       4       t]! R(4      ]]! R)4      R* R+ l4       4       4       t]! R,4      ]]! R-4      R. R/ l4       4       4       tR0 R1 ltR# )6zÓCompletion / model-key / paste JSON-RPC handlers.

Rebound onto server.py's globals at install time (``method_ctx.bind_module``), so
bodies reference server globals bare (``_ok``, ``_err``, ``_sessions``, ...).
)ÚHandlerRegistryÚbind_moduleNc                óV   € V ^8„  d   QhR\         R\         R\         R,          R\        /# )é   ÚtextÚmetaÚdisplayNÚreturn)ÚstrÚdict)Úformats   "ÚA/home/ubuntu/.hermes/hermes-agent/tui_gateway/methods_complete.pyÚ__annotate__r      s2   € ÷ ]ñ ]”ð ]œ3ð ]¬¨t­ð ]¼tñ ]ó    c                 ó$   € R T RVe   VRV/# T RV/# )r   r   r   © )r   r   r   s   &&&r   Ú_itemr      s(   € Ø�D˜)°Ò0C WÈvÐW[Ð\Ð\ÈÈvÐW[Ð\Ð\r   c                ó$   € V ^8„  d   QhR\         /# )r   Ú	fail_code)Úint)r   s   "r   r   r      s   € ÷ ñ ”cñ r   c                ó   a € V 3R lpV# )u=   Handler body exceptions â†’ ``_err(rid, fail_code, str(e))``.c                 ó@   <a € R  V V3R llpS P                   Vn         V# )c                ó0   € V ^8„  d   QhR\         R\         /# ©r   Úparamsr	   ©r   )r   s   "r   r   Ú*_catch.<locals>.deco.<locals>.__annotate__   s   € ÷ 	4ñ 	4¤ð 	4¬$ñ 	4r   c                 ór   <€  S! W4      #   \          d!   p\        T S\        T4      4      u R p?# R p?ii ; i©N)Ú	ExceptionÚ_errr
   )Úridr   ÚeÚbodyr   s   && €€r   ÚhandlerÚ%_catch.<locals>.deco.<locals>.handler   s6   ø€ ð4Ù˜CÓ(Ð(øÜô 4Ü˜C ¬C°«FÓ3Õ3ûð4ús   ƒ ‹6–1«6±6)Ú__doc__)r#   r$   r   s   f €r   ÚdecoÚ_catch.<locals>.deco   s   ù€ ÷	4ñ 	4ð
 Ÿ,™,ˆŒØˆr   r   )r   r'   s   f r   Ú_catchr)      s   ø€ õð €Kr   zpaste.collapsec                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r   $   s   € ÷ `ñ `”4ð `œDñ `r   c           	      ó   € VP                  R R4      pV'       g   \        V RR4      # \        ^,          sVP                  R4      ^,           p^ RIHp \        V! 4       ;'       g    \        4      R,          pVP                  RRR7       ^ R	I	H	p VR
\         RVP                  4       P                  R4       R2,          pVP                  VRR7       R\         RV RV R2p\        V RVR\        V4      RV/4      # )r   Ú é¤  zempty pasteÚ
)Úconnection_profile_homeÚpastesT)ÚparentsÚexist_ok)ÚdatetimeÚpaste_Ú_z%H%M%Sz.txtzutf-8)Úencodingz[Pasted text #z: u    lines â†’ Ú]ÚplaceholderÚpathÚlines)Úgetr    Ú_paste_counterÚcountÚtui_gateway.ws_legacy_fallbackr/   ÚPathÚ_hermes_homeÚmkdirr3   ÚnowÚstrftimeÚ
write_textÚ_okr
   )	r!   r   r   Ú
line_countr/   Ú	paste_dirr3   Ú
paste_filer8   s	   &&       r   r5   r5   #   sï   € ð �:‰:�f˜bÓ!€DßÜ�C˜˜}Ó-Ð-Ü�aÕ€NØ—‘˜DÓ! AÕ%€JåFÜÑ,Ó.×>Ð>´,Ó?À(ÕJ€IØ‡O�O˜D¨4€OÔ0Ý!Ø˜v¤nÐ%5°Q°x·|±|³~×7NÑ7NÈxÓ7XÐ6YÐY]Ð^Õ^€JØ×Ñ˜$¨ÐÔ1Ø"¤>Ð"2°"°Z°LÀÈzÈlÐZ[Ð\€KÜˆs�] K°¼¸Z»È'ÐS]Ð^Ó_Ð_r   c                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r   Úprefixr	   ©r
   Úlistr   )r   s   "r   r   r   6   s   € ÷ ñ ¤3ð ¬4´­:ñ r   c                óš  € . p ^ RI Hp \        4       pV! RR7       FÐ  pVP                  ;'       g    RP	                  4       ;p'       g   K1  VP                  VP                  4       4       VP                  4       P                  V P                  4       4      '       g   K…  TP                  \        RV 2\        VRR4      ;'       g    RP	                  4       ;'       g    R4      4       KÒ  	  RP                  V P                  4       4      '       d#   RV9  d   VP                  \        R	R
4      4       V#   \         d    . u # i ; i)zà`@<profile>` completions (multi-agent UIs route `@<profile>` text to another
profile). Bare-word matches only, never `@kind:` directives; the primary profile
is also offered as 'hermes' when no real profile claims that name.)Úlist_profilesT)Úlazy_skill_countr,   Ú@Údescriptionzagent profileÚhermesz@hermeszagent profile (primary))Úhermes_cli.profilesrN   ÚsetÚnameÚstripÚaddÚlowerÚ
startswithÚappendr   Úgetattrr   )rJ   ÚoutrN   ÚseenÚprU   s   &     r   Ú_profile_mention_itemsr_   6   s  € ð €CðÝ5Ü›ˆá°×5ˆAØŸV™VŸ\˜\ r×0Ñ0Ó2Ð2�DÖ2ÙØ�H‰H�T—Z‘Z“\Ô"Ø�z‰z‹|×&Ñ& v§|¡|£~×6Ô6Ø—
‘
œ5 1 T F ¬g°a¸ÈÓ.K×.QÐ.QÈr×-XÑ-XÓ-Z×-mÐ-mÐ^mÓnÖoñ 6ð ×Ñ˜vŸ|™|›~×.Ò.°8À4Ô3GØ�J‰J”u˜YÐ(AÓBÔCð €Jøô ô ØŠ	ðús5   „.D: ³D: ÁAD: Â"'D: Ã
D: Ã"3D: Ä"D: Ä:E
Å	E
c                ó`   € V ^8„  d   QhR\         R\         R\        \        ,          R,          /# )r   ÚpfxÚqvalr	   NrK   )r   s   "r   r   r   L   s*   € ÷ ñ ¤ð ¬Cð ´D¼µJÀÕ4Eñ r   c           	     ó˜  €  ^ RI Hp ^ RIpV! 4       P                  V 4      ;pf   R# VP	                  V^R7      p VP                  4        ^ RIp^ RIpVP                  P                  ^R7      ;_uu_ 4       pVP                  VP                  4       P                  VP                  V4      P                  4       p	RRR4       X	 U
u. uF/  p
RRT  RT
P                   2RT
P                   R	T
P"                  /NK1  	  up
#   + '       g   i     LL; i  \         d    TP                  T4      p	 Lmi ; iu up
i   \$         d     R# i ; i)
zw`@<prefix>:<query>` autocomplete for a plugin ContextReferenceProvider; None when
no provider owns ``pfx`` or it fails.©Úget_context_reference_providersN)Úlimit)Úmax_workersr   rP   Ú:r   r   )Úagent.context_referencesre   Úasyncior;   ÚautocompleteÚget_running_loopÚconcurrent.futuresÚcontextvarsÚfuturesÚThreadPoolExecutorÚsubmitÚcopy_contextÚrunÚresultÚRuntimeErrorr   r   r   r   )ra   rb   re   rj   ÚprovÚcoroÚ
concurrentrn   ÚpoolÚacÚits   &&         r   Ú_plugin_reference_itemsr|   L   s%  € ðÝLÛÙ3Ó5×9Ñ9¸#Ó>Ð>ˆDÒGÙØ× Ñ  ¨RÐ Ó0ˆð	]Ø×$Ñ$Ô&ó &ÛØ×#Ñ#×6Ñ6À1Ð6×EÔEÈØ—[‘[ ×!9Ñ!9Ó!;×!?Ñ!?ÀÇÁÈdÓS×ZÑZÓ\�÷ Fá`bÓcÑ`bÐZ\�˜1˜S˜E  2§7¡7 )Ð,¨i¸¿¹ÀVÈRÏWÉWÓUÑ`bÑcÐc÷ F×Eûô ô 	#Ø—‘˜TÓ"ŠBð	#üò døÜô Úðús^   ‚$D: ¨D: ¼D Á,D: Á8AD Â<D: Ã5D5Ã=D: Ä D	ÄD: ÄD2Ä/D: Ä1D2Ä2D: Ä:E	ÅE	c          	      ó^   € V ^8„  d   QhR\         R\         R\         R\        \        ,          /# )r   ÚrootÚ	path_partÚ
prefix_tagr	   rK   )r   s   "r   r   r   c   s,   € ÷ $5ñ $5¤ð $5´ð $5Äð $5ÌÌdÍñ $5r   c                ó”  aaaa€ . o\        4       p\        4       oSP                  R4      oR VVVV3R llp\        P                  \        4      ;_uu_ 4        \
        P                  V 4       FS  pV\        9  g   K  V! WU\
        P                  P                  \
        P                  P                  W4      4      4       KU  	  RRR4       \        V 4       F²  pV! V\
        P                  P                  V4      R4       \
        P                  P                  V4      pV'       g   KS  Ws9  g   K[  VP                  V4       V! V\
        P                  P                  V4      R4       \
        P                  P                  V4      pKk  	  SP                  R R7       T;'       g    R	pSR
,           U	UU
Uu. uFf  w  r–r«\!        RV'       d   RMT RT V'       d   RMR 2V'       d   RM\
        P                  P                  V4      Y«'       d   RMR,           4      NKh  	  upp
pp	#   + '       g   i     ELq; iu upp
pp	i )z]Cmd-P style fuzzy basename search for a bare `@name`; path-ish queries take the listing path.Ú.c                ó@   € V ^8„  d   QhR\         R\         R\        RR/# )r   ÚrelrU   Úis_dirr	   N)r
   Úbool)r   s   "r   r   Ú+_fuzzy_basename_items.<locals>.__annotate__j   s(   € ÷ 5ñ 5”sð 5¤#ð 5¬tð 5¸ñ 5r   c                 óÄ   <€ V S9   g    VP                  R 4      '       d   S'       g   R# \        VS4      ;pe'   SP                  V 4       SP                  W0W34       R# R# )r‚   N)rY   Ú_fuzzy_basename_rankrW   rZ   )r„   rU   r…   Úrankr   Úrankedr]   Úwant_hiddens   &&& €€€€r   Ú	_considerÚ(_fuzzy_basename_items.<locals>._considerj   sQ   ø€ Ø�$Œ;˜4Ÿ?™?¨3×/Ò/¿ÙÜ(¨¨yÓ9Ð9ˆDÒFØ�H‰H�SŒMØ�M‰M˜4 dÐ3Ö4ñ Gr   NFTc                 ób   € V ^ ,          V ^,          '       * \        V ^,          4      V ^,          3# )é    )Úlen)Úrs   &r   Ú<lambda>Ú'_fuzzy_basename_items.<locals>.<lambda>�   s#   € ˜q �t¨¨1­¤X¬s°1°Qµ4«y¸!¸A½$Ñ?r   )ÚkeyÚfile:Né   NrP   Úfolderrh   Ú/r,   Údir)rT   rY   Ú
contextlibÚsuppressÚOSErrorÚosÚlistdirÚ_FUZZY_FALLBACK_EXCLUDESr9   ÚisdirÚjoinÚ_list_repo_filesÚbasenameÚdirnamerW   Úsortr   )r~   r   r€   Úwalked_dirsr�   Úentryr„   ÚparentÚtagr5   r¤   r…   r‹   r]   rŒ   s   &f&         @@@r   Ú_fuzzy_basename_itemsr«   c   sª  û€ à;=€FÜ›E€KÜ“U€DØ×&Ñ& sÓ+€K÷5ó 5ô 
×	Ñ	œW×	%Õ	%Ü—Z‘Z Ö%ˆEØÔ4Ö4Ù˜%¬¯©¯©´b·g±g·l±lÀ4Ó6OÓ(PÖQñ &÷ 
&ô   Ö%ˆÙ�#”r—w‘w×'Ñ'¨Ó,¨eÔ4ä—‘—‘ Ó%ˆß‰f˜Ö2Ø�O‰O˜FÔ#Ù�fœbŸg™g×.Ñ.¨vÓ6¸Ô=Ü—W‘W—_‘_ VÓ,ŠFñ &ð ‡K�KÑ?€KÔ@Ø
×
Ð
˜€Cð
 )/¨s®ö	5ñ )4Ñ$ˆA�Hô 	ØŸF‘¨Ð,¨A¨c¨U¿&±3ÀbÐ2IÐJß‰E¤§¡§¡°Ó!5°xÎ&Á3ÐVXÕ7Yö	[ñ )4ô	5ð 5÷! 
&×	%Ð	%üõ 5s%   Á!H.Á?AH.Æ<$I
Ç!I
Ç.:I
È.H?	c                ó:   € V ^8„  d   QhR\         \        ,          /# )r   r	   )rL   r   )r   s   "r   r   r   Š   s   € ÷ ñ œœT�
ñ r   c            
     óº  € \          U Uu. uF  w  r\        W4      NK  	  upp \        R4      ,           p\        P	                  \
        4      ;_uu_ 4        ^ RIHp \        V! 4       P                  4       4       F;  w  rETP                  \        RV R2VP                  ;'       g    RV 24      4       K=  	  RRR4       V# u upp i   + '       g   i     T# ; i)z_Completions for a bare ``@``: directive hints, agent profiles, plugin ``@<prefix>:`` providers.r,   rd   rP   rh   zplugin: N)Ú_AT_DIRECTIVE_HINTSr   r_   r›   rœ   r   ri   re   ÚsortedÚitemsrZ   rQ   )ÚtÚmr°   re   ra   rv   s         r   Ú_at_root_itemsr³   Š   s¬   € å%8Ô9Ñ%8™T˜QŒU�1Ž[Ñ%8Ò9Ô<RÐSUÓ<VÕV€EÜ	×	Ñ	œY×	'Õ	'ÝLÜÑ ?Ó A× GÑ GÓ IÖJ‰IˆCØ�L‰Lœ  3 % q˜z¨4×+;Ñ+;×+OÐ+OÀÈ#ÈÐ?OÓPÖQñ K÷ 
(ð €Lùó :ß	'Ö	'ð €Lús   ŠCÁA$C	Ã	C	c          	      ó‚   € V ^8„  d   QhR\         R\         R,          R\        \        \         \        3,          ,          /# )r   Ú
search_dirÚsession_keyNr	   )r
   rL   Útupler†   )r   s   "r   r   r   ”   s;   € ÷ !Zñ !Z¤Sð !Z´s¸Tµzð !ZÄdÌ5ÔQTÔVZÐQZÕK[ÕF\ñ !Zr   c                óv  € ^ RI p^ RIpRp ^ RIHp ^ RIHp V! 4       ;_uu_ 4        VP                  V! RVP                  V4       RVP                  V 4       2V^RR7      4      pRRR4       XP                  R	4      '       g   TP                  R
4      R9  d   . # \        TP                  R4      ;'       g    R4      P                  4        Uu. uF$  qˆP                  R4      TP                  R4      3NK&  	  p	p\        R T	 4       4      #   + '       g   i     L±; i  \         d    . u # i ; iu upi )uq  ``(name, is_dir)`` entries of one directory inside the active non-local terminal backend.

Runs in the session's own backend (``task_id`` = session key), so relative paths and ``~`` resolve
where the agent's commands do. Completion is advisory: an unreachable backend yields nothing â€”
falling back to the gateway host would show a plausible but wrong tree (#112963).
Nzýd=$1; case $d in "~") d=$HOME;; "~/"*) d=$HOME${d#?};; esac; [ -d "$d" ] || exit 0; for p in "$d"/* "$d"/.[!.]* "$d"/..?*; do [ -e "$p" ] || [ -L "$p" ] || continue; if [ -d "$p" ]; then printf "%s/\n" "${p##*/}"; else printf "%s\n" "${p##*/}"; fi; done)Úunmetered_backend_calls)Úterminal_toolzsh -c z sh T)Útask_idÚtimeoutÚforceÚerrorÚ	exit_codeÚoutputr,   r™   c              3   óR   "  € T F  w  rV'       g   K  R V9  g   K  W3x € K  	  R# 5i)r™   Nr   )Ú.0rU   r…   s   &  r   Ú	<genexpr>Ú'_backend_dir_entries.<locals>.<genexpr>µ   s!   é € ÐY±W¡\ TÄ”.ÈÐTXÉ”.�4•.³Wùs   ‚'“'œ')r�   N)ÚjsonÚshlexÚ,hermes_cli.observability.shared_metrics_loopr¹   Útools.terminal_toolrº   ÚloadsÚquoter   r;   r
   Ú
splitlinesÚrstripÚendswithr¯   )
rµ   r¶   rÅ   rÆ   Úscriptr¹   rº   rt   ÚlineÚentriess
   &&        r   Ú_backend_dir_entriesrÑ   ”   s  € ó Ûð	dð ð
ÝXÝ5ñ %×&Õ&Ø—Z‘Z¡Ø˜Ÿ™ VÓ,Ð-¨T°%·+±+¸jÓ2IÐ1JÐKÐU`ÐjkØô!ó ˆF÷ 'ð ‡z�z�'×Ò˜fŸj™j¨Ó5¸YÔFØˆ	ÜBEÀfÇjÁjÐQYÓFZ×F`ÐF`Ð^`ÓBa×BlÑBlÔBnÓoÑBn¸$—‘˜CÓ  $§-¡-°Ó"4Ó5ÑBn€GÐoÜÑY±WÓYÓYÐY÷ '×&ûô ô ØŠ	ðüò ps5   ŒD# §A DÁ'D# Ã*D6ÄD 	ÄD# Ä D# Ä#D3Ä2D3c                óª   € V ^8„  d   QhR\         R\         R\         R\         R\        R\         R,          R\        R,          R	\        \        ,          /# )
r   r~   Úwordr   r€   Ú
is_contextr¶   NÚlocalr	   ©r
   r†   rL   r   )r   s   "r   r   r   ¸   sV   € ÷ *ñ *œSð *¬ð *¼ð *Ìð *ÔZ^ð *Ü$'¨$¥Jð*Ü>BÀT½kð*ÜUYÔZ^ÕU_ñ*r   c           
     óô  € ^ RI pVf   \        4       R8H  MTpV'       d   \        P                  MTpV'       d   V'       d   \	        V4      MTMRp	V	R8X  g    V	'       d   V	P                  R4      '       d   T	;'       g    RRrºM+VP                  V	4      ;'       g    RVP                  V	4      rºVP                  V
4      '       g)   V
P                  R4      '       g   VP                  W
4      p
VP                  V
4      p
. pV'       d‘   \        P                  P                  V
4      '       g   V# \        \        P                  V
4      4       Uu. uF@  qÝ\        P                  P                  \        P                  P                  W­4      4      3NKB  	  ppM\        W¥4      pV EFÇ  w  rßV'       d6   VP!                  4       P                  VP!                  4       4      '       g   KC  V'       d-   V\"        9   g    V'       g   VP                  R4      '       d   Kw  V'       d   VR8H  V8w  d   K‹  VP                  W­4      pVP%                  VV 4      P'                  \        P(                  R4      pV'       d   RMRpV'       d    RT;'       g    V'       d   RMR	 R
V V 2pMˆVP                  R4      '       dI   RTP%                  TV'       d    \        P                  P+                  R4      MR4      ,           V,           pM)VP                  R4      '       d   RMRV,           V,           pTP-                  \/        TV'       d   RMRVV,           4      4       \1        V4      ^8¼  g   EKÇ   V# 	  V# u upi )zGPrefix-match entries of the directory ``path_part`` points at (max 30).NrÕ   r‚   r™   r,   Ú~r˜   rP   r–   rh   z~/z./rš   )Ú	posixpathÚ_effective_terminal_backendrž   r9   Ú_normalize_completion_pathrÍ   r¥   r¤   ÚisabsrY   r¢   Únormpathr¡   r¯   rŸ   rÑ   rX   r    ÚrelpathÚreplaceÚsepÚ
expanduserrZ   r   r‘   )r~   rÓ   r   r€   rÔ   r¶   rÕ   rÙ   ÚpthÚexpandedrµ   Úmatchr°   r¨   rÐ   r…   Úfullr„   Úsuffixr   s   &&&&&&&             r   Ú_dir_listing_itemsrç   ¸   sŒ  € ó Ø8=ºÔ'Ó)¨WÒ4È5€E÷ Œ"�'Š' 	€CßR[¿Ô*¨9Ô5ÁIÐad€HØ�3„Ÿh¨(×*;Ñ*;¸C×*@Ò*@Ø%Ÿ_˜_¨¨r‘EàŸK™K¨Ó1×8Ð8°S¸#¿,¹,ÀxÓ:P�EØ�I‰I�j×!Ò! Z×%:Ñ%:¸3×%?Ò%?Ø—X‘X˜dÓ/ˆ
Ø—‘˜jÓ)€JØ€EßÜ�w‰w�}‰}˜Z×(Ò(ØˆLÜX^Ô_a×_iÑ_iÐjtÓ_uÔXvÓwÑXvÈuœ2Ÿ7™7Ÿ=™=¬¯©¯©°jÓ)HÓIÓJÑXvˆÐwˆä& zÓ?ˆÜ ‰ˆß˜Ÿ™›×1Ñ1°%·+±+³-×@Ò@Ùß˜5Ô$<Ô<ÇZÐTY×TdÑTdÐeh×TiÒTiÙß˜:¨Ñ1°fÔ<ÙØ�x‰x˜
Ó*ˆØ�k‰k˜$ Ó%×-Ñ-¬b¯f©f°cÓ:ˆß‘ BˆßØ�z×EÐE·&¡h¸fÐFÀaÈÀuÈVÈHÐU‰DØ�_‰_˜S×!Ò!Ø˜#Ÿ+™+ dÇu¬B¯G©G×,>Ñ,>¸sÔ,CÐRUÓVÕVÐY_Õ_‰Dà ŸO™O¨D×1Ò1‘D°r¸SÕ@À6ÕIˆDØ�‰”U˜4¯&¡°b¸%À&½.ÓIÔJÜˆu‹:˜×ØØ€Lñ' !ð& €Lùò- xs   ÅAM5zcomplete.pathi�  c                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r   ç   s   € ÷ Wñ W”4ð WœDñ Wr   c           
      ó  € VP                  R R4      pV'       g   \        V R. /4      # \        P                  VP                  RR4      4      p\        4       R8H  pVP                  R4      pV'       d)   WSP                  R4      8X  d   \	        V4      '       d   RpV'       d   \        V4      MT;'       g    \        V4      ;'       g    RpV'       d   VP                  R4      MRp\        V R\        W&Wt4      /4      # )	rÓ   r,   r°   Ú
session_idrÕ   ÚcwdNr‚   r¶   )r;   rE   Ú	_sessionsrÚ   Ú_is_remote_launch_cwdÚ_completion_cwdÚ_terminal_task_cwdÚ_path_completion_items)r!   r   rÓ   ÚsessionrÕ   Ú
client_cwdr~   r¶   s   &&      r   r5   r5   å   sÑ   € ð �:‰:�f˜bÓ!€DßÜ�3˜ "˜Ó&Ð&Ü�m‰m˜FŸJ™J |°RÓ8Ó9€GÜ'Ó)¨WÑ4€Eð —‘˜EÓ"€Jß�:§¡¨UÓ!3Ô3Ô8MÈg×8VÒ8VØˆ
ß&+Œ?˜6Ô"°*×2bÐ2bÔ@RÐSZÓ@[×2bÐ2bÐ_b€Dß07�'—+‘+˜mÔ,¸T€KÜˆs�WÔ4°TÀÓTÐUÓVÐVr   c                óx   € V ^8„  d   QhR\         R\         R\         R,          R\        R\        \        ,          /# )r   rÓ   r~   r¶   NrÕ   r	   rÖ   )r   s   "r   r   r   ø   s;   € ÷ !ñ !¤ð !¬Cð !¼cÀD½jð !ÔQUð !ÔZ^Ô_cÕZdñ !r   c           	     óÒ  € V P                  R4      pV'       d
   V R,          MT pV'       d   V'       g   \        4       # V'       d8   RV9   d1   VP                  R4      w  rgpV\        9  d   \	        Wh4      ;p	e   V	# V'       d4   VR	9   g   VP                  R
4      '       d   VP                  R4      w  r§pMRTrºV'       dY   VP                  R4      '       dB   VP                  R4      '       g+   V'       d#   \        V4      '       g   VP                  R4      pT;'       d    T;'       d    RV9  pV'       d;   V'       d3   \        VP                  4       4      ^8¼  d   V
R8w  d   \        WV
4      pM\        WWºWBV4      pV'       dG   V
'       g?   \        P                  \        4      ;_uu_ 4        \        V4      V,           pRRR4       V# V#   + '       g   i     T# ; i)z¹``complete.path``'s items for ``word`` resolved against ``root``; the shared gateway serves the
same listing against a local session's own folder (``gateway/session_complete_path.py``).rP   :é   NNrh   Nr˜   r,   r™   z//>   r–   r˜   )zfile:zfolder:)rY   r³   Ú	partitionÚ_BUILTIN_AT_PREFIXESr|   Ú_abs_completion_prefix_existsÚlstripr‘   rV   r«   rç   r›   rœ   r   r_   )rÓ   r~   r¶   rÕ   rÔ   Úqueryra   r5   rb   Úplugin_itemsr€   r   Ú	bare_wordr°   s   &&&&          r   rð   rð   ø   sx  € ð —‘ Ó%€Jß"ˆD�ŽH¨€EßŸ%ÜÓÐç�c˜U”lØ—‘ sÓ+‰ˆ�ØÔ*Ô*Ô@WÐX[Ó@bÐ0b°Ò/oØÐç�uÐ 2Ô2°e×6FÑ6FÐG[×6\Ò6\Ø#(§?¡?°3Ó#7Ñ ˆ
‘yà " E�I÷
 	�y×+Ñ+¨C×0Ò0¸×9MÑ9MÈd×9SÒ9SßÔ7¸	×BÒBØ×$Ñ$ SÓ)ˆ	Ø×AÐA˜y×AÐA¨S¸	Ñ-A€Iß—œs 9§?¡?Ó#4Ó5¸Ô:¸zÈXÔ?UÜ% d°zÓB‰ä" 4¨yÀjÐ_dÓeˆçŸÜ× Ñ ¤×+Õ+Ü*¨9Ó5¸Õ=ˆE÷ ,à€Lˆ5€L÷ ,Ö+à€Lús   Æ6GÇG&	zcomplete.slashiœ  c                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r     s   € ÷ Lñ L”4ð LœDñ Lr   c           	      óæ   € ^ RI Hp \        \        P	                  VP	                  RR4      4      \        V4      VP	                  R4      R7      p\        W! VP	                  RR4      VR7      4      # )r�   )Úslash_completionsrê   r,   Úprofile)rë   r   r   )Úscope)Útui_gateway.command_discoveryrÿ   Ú_session_home_scoperì   r;   rî   rE   )r!   r   rÿ   r  s   &&  r   r5   r5     s_   € õ @ô  ¤	§¡¨f¯j©j¸ÀrÓ.JÓ KÔQ`ÐagÓQhØ(.¯
©
°9Ó(=ô?€EäˆsÐ% f§j¡j°¸Ó&<ÀEÔJÓKÐKr   c                ó$   € V ^8„  d   QhR\         /# )r   r   r   )r   s   "r   r   r   (  s   € ÷ 5ñ 5œ4ñ 5r   c                 ó‚   € \         P                  V P                  R R4      4      pV'       d   VP                  R4      # R# )rê   r,   ÚagentN)rì   r;   )r   rñ   s   & r   Ú_session_agentr  (  s1   € Ü�m‰m˜FŸJ™J |°RÓ8Ó9€Gß#*ˆ7�;‰;�wÓÐ4°Ð4r   c                ó2   € V ^8„  d   QhR\         R,          /# ©r   r	   Nr   )r   s   "r   r   r   -  s   € ÷ Jñ JœD 4�Kñ Jr   c                ó~   € ^ RI Hp V! 4       pV'       g   R# Tw  r4^ RIHp \	        V RV! RV! RW4R7      R7      4      # )	uy  #99859 (R2): refuse model-serving/holding RPCs when this process runs stale
code â€” the TUI/desktop would otherwise resolve a post-update model string against
stale cached modules (the reporter's agent_init_failed). Mirrors the dashboard's
``_dashboard_code_skew_guard`` and the gateway's ``_model_switch_skew_guard``;
never a false positive (non-git installs detect nothing).)Údetect_code_skewN)r±   iê  zgateway.model.error_prefixzgateway.model.err_skew)Úboot_revÚdisk_rev)r¾   )Úgateway.code_skewr  Ú
agent.i18nr±   r    )r!   r  Úskewr  r  r±   s   &     r   Ú_model_skew_errr  -  sL   € õ 3áÓ€DßÙØÑ€HÝä��T™1Ð9ÁØ ¨8ôBHô Ió Jð Jr   zmodel.optionsi©  c                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r   B  s   € ÷ 	mñ 	m”4ð 	mœDñ 	mr   c                 ó  € \        V 4      pVe   V# ^ RIHp \        W! \	        \        V4      4      \        VP                  R4      4      \        VP                  R4      4      \        VP                  R4      4      R7      4      # )N)Úbuild_model_options_payloadÚexplicit_onlyÚinclude_unconfiguredÚrefresh)r  r  r  )r  Úhermes_cli.inventoryr  rE   Ú_model_picker_contextr  r†   r;   )r!   r   r  r  s   &&  r   r5   r5   ?  s|   € ô ˜3Ó€DØÒØˆÝ@ô ˆsÐ/Üœn¨VÓ4Ó5ÄTÈ&Ï*É*ÐUdÓJeÓEfÜ! &§*¡*Ð-CÓ"DÓEÌtÐTZ×T^ÑT^Ð_hÓTiÓOjôló mð mr   zmodel.save_keyiª  c                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r   Q  s   € ÷ *1ñ *1”4ð *1œDñ *1r   c           
     ó  a€ \        V 4      pVe   V# ^ RIHp ^ RIHp VP                  R4      ;'       g    RP                  4       VP                  R4      ;'       g    RP                  4       uopS'       d	   V'       g   \        V RR4      # V! 4       '       d   \        V R	R
4      # VP                  S4      ;p'       g   \        V RRS 24      # VP                  R8w  d(   \        V RVP                   RVP                   R24      # VP                  '       g   \        V RRVP                   24      # TP                  ^ ,          p^ RIHp ^ RIHp	 V! 4       P                  V4      p
V	! Wu4       WZ8w  d   ^ RIHp V! \!        4       SRR7       ^ RIHp V! 4        ^ RIHp V! \+        \-        V4      4      R^2R7      p\/        V3R lVR,           4       R4      pVf   RSRVP                  RRR. R ^ /pRVR!&   \1        V R"V/4      # )#zjSave an API key for ``slug``; return its refreshed provider row (model.options shape + ``authenticated``).N)ÚPROVIDER_REGISTRY)Ú
is_managedÚslugr,   Úapi_keyé¡  zslug and api_key are requiredi¦  u-   managed install â€” credentials are read-onlyi¢  zunknown provider: i£  z uses u)    auth â€” run `hermes model` to configurer-   zno env var defined for )Úload_env)Úsave_provider_env_credential)Úrecord_provider_setup_doneT)Ú
background)Úreconcile_record)Úbuild_models_payload)Úpicker_hintsÚ
max_modelsc              3   óF   <"  € T F  qR ,          S8X  g   K  Vx € K  	  R# 5i)r  Nr   )rÂ   r^   r  s   & €r   rÃ   Ú_.<locals>.<genexpr>w  s   øé € ÐOÑ%9 ¸v½YÈ$Ñ=NŸ!š!Ó%9ùs   ƒ!—
!Ú	providersrU   Ú
is_currentFÚmodelsÚtotal_modelsÚauthenticatedÚprovider)r  Úhermes_cli.authr  Úhermes_cli.configr  r;   rV   r    Ú	auth_typerU   Úapi_key_env_varsr!  Úhermes_cli.credential_lifecycler"  Ú-hermes_cli.observability.shared_metrics_setupr#  Ú_resolve_session_platformÚhermes_cli.free_tier_bootstrapr%  r  r&  r  r  ÚnextrE   )r!   r   r  r  r  r  ÚpconfigÚenv_varr!  r"  Úpreviousr#  r%  r&  ÚpayloadÚprovider_datar  s   &&              @r   r5   r5   N  sè  ø€ ô
 ˜3Ó€DØÒØˆÝ1Ý,Ø—Z‘Z Ó'×-Ð-¨2×4Ñ4Ó6¸¿¹ÀIÓ9N×9TÐ9TÐRT×8[Ñ8[Ó8]€M€Dˆ'ß—wÜ�C˜Ð>Ó?Ð?Ù‡|‚|Ü�C˜ÐNÓOÐOØ(×,Ñ,¨TÓ2Ð2ˆGÖ2Ü�C˜Ð!3°D°6Ð:Ó;Ð;Ø×Ñ˜IÔ%Ü�C˜ '§,¡, ¨v°g×6GÑ6GÐ5HÐHqÐrÓsÐsØ×#×#Ð#Ü�C˜Ð!8¸¿¹¸ÐGÓHÐHð ×&Ñ& qÕ)€GÝ*ÝLÙ‹z�~‰~˜gÓ&€Hñ ! Ô2ØÔÝ\Ù"Ô#<Ó#>ÀÐQUÕVõ @ÙÔå9Ù"Ô#8¼ÈÓ9OÓ#PÐ_cÐprÔs€GÜÔO W¨[Ö%9ÓOÐQUÓV€MØÒØ  v¨w¯|©|¸\È5ÐRZÐ\^Ð`nÐpqÐrˆØ%)€M�/Ñ"Üˆs�Z Ð/Ó0Ð0r   zmodel.disconnecté«  c                ó0   € V ^8„  d   QhR\         R\         /# r   r   )r   s   "r   r   r   �  s   € ÷ eñ e”4ð eœDñ er   c           	     ó@  € ^ RI Hp ^ RIHpHp ^ RIHpHp ^ RIH	p VP                  R4      ;'       g    RP                  4       ;p'       g   \        V RR4      # VP                  V4      p	V	'       d   V	P                  MR	;'       g    Rp
. pV
 FŠ  pV! VR
4      ;pf   VP                  V4       K#  VP                  V4      '       gD   \         P"                  P                  V4      '       g   V! 4       P                  V4      '       g   K}  \        V RV4      u # 	  \%        V Uu. uF  qÇ! V4      P                  R4      NK  	  up4      pV! V4      pV'       g   V'       g   \        V RRV 24      # \'        T RTRV	'       d   V	P(                  MTRR/4      # u upi )zMRemove all credentials (env keys AND OAuth/pool state) for provider ``slug``.)Úmanaged_scope)r  Úclear_provider_auth)Úenv_write_refusalr!  )Úremove_provider_env_credentialr  r,   r   zslug is requiredNÚremover?  Úfoundi¥  zno credentials found for rU   ÚdisconnectedTr   )Ú
hermes_clirB  r1  r  rC  r2  rD  r!  r5  rE  r;   rV   r    r4  rZ   Úis_env_managedrž   ÚenvironÚanyrE   rU   )r!   r   rB  r  rC  rD  r!  rE  r  r:  Úenv_varsÚ	removableÚevÚrefusalÚcleared_envÚcleared_auths   &&              r   r5   r5   ~  s^  € õ
 )ßFß=ÝNØ—Z‘Z Ó'×-Ð-¨2×4Ñ4Ó6Ð6ˆDÖ6Ü�C˜Ð1Ó2Ð2Ø×#Ñ# DÓ)€Gç,3�×(Ò(¸×DÐDÀ"€Hð €IÛˆÙ(¨¨XÓ6Ð6ˆGÒ?Ø×Ñ˜RÖ Ø×)Ñ)¨"×-Ò-´·±·±À×1CÒ1CÁxÃzÇ~Á~ÐVX×GYÔGYÜ˜˜T 7Ó+Ò+ñ	 ô
 ÑQZÓ[ÑQZÈ2Ð5°bÓ9×=Ñ=¸gÖFÑQZÑ[Ó\€KÙ& tÓ,€LßŸ|Ü�C˜Ð!:¸4¸&ÐAÓBÐBÜˆs�V˜T 6¿7¨7¯<ª<ÈÈnÐ^bÐcÓdÐdùò	 \s   Ä'Fc                ó   € V ^8„  d   QhRR/# r	  r   )r   s   "r   r   r   ›  s   € ÷ 0ñ 0˜ñ 0r   c                ó2   € \        \        4       V RR7       R# )zRRebind this module's helpers + handlers onto ``server`` and register the handlers.)ÚskipN)r5   )r   Úglobals)Úservers   &r   ÚregisterrX  ›  s   € ä”“	˜6¨×/r   >   ÚgitÚurlÚdiffr–   r˜   Ústaged))z@diffzgit diff)z@stagedzstaged diff)z@file:zattach file)z@folder:zattach folder)z@url:z	fetch url)z@git:zgit logr   )NN)r&   Ú
method_ctxr   r   Ú	_registryÚmethodÚprofile_scopedÚ_profile_scopedÚ	frozensetr÷   r®   r   r)   r5   r_   r|   r«   r³   rÑ   rç   rð   r  r  rX  r   r   r   Ú<module>rc     s~  ðñ÷ 5áÓ€	Ø	×	Ñ	€Ø×*Ñ*€á Ò!SÓTÐ òQÐ ÷]õñ ÐÓô`ó ð`õ$õ,õ.$5õNõ!Z÷H*ñZ ˆÓÙˆƒôWó ó ðWõ"!ñH ÐÓÙˆƒôLó ó ðLõ5õ
Jñ$ ˆÓØÙˆƒô	mó ó ó ð	mñ ÐÓØÙˆƒô*1ó ó ó ð*1ñZ ÐÓØÙˆƒôeó ó ó ðe÷40r   