+
    lHàjˆo  ã                  ó<  € R t ^ RIHt ^ RIt^RIHtHt ]! 4       t]! 0 RWm4      t	]! R04      t
RtRtR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR!R"R# 3R$]]3R%R]3R&R']3R(R]3R)R]3RR*]3RR+]3RR]3R,RXR-RYR.RZR/R[/tR0 R1 lt]! 0 R\m4      tR4 R5 ltR6 R7 ltR8 R9 ltR:R;R<R;R=RR>RR?R?R@R@RARARBRA/tRC RD lt RE RF lt!RG RH lt"RI RJ lt#R2RK RL]R3]R!RM R:] RN]!RO]"RP]#/t$RQ RR lt%RS RT lt&RU RV lt'R# )]zëslash.exec helpers: live-session command output + side-effect mirroring after a worker slash command.

Bodies are rebound onto server.py's globals at install time (see
method_ctx.bind_module), so they reference server.py globals bare.
)ÚannotationsN)ÚHandlerRegistryÚbind_moduleÚcontextÚtoolsÚhelpz.(._.) No active agent -- send a message first.z(No active agent -- send a message first.c               ó(   € V ^8„  d   QhRRRRRRRR/# ©é   ÚsidÚstrÚsessionúOptional[dict]ÚargÚreturn© )Úformats   "Ú>/home/ubuntu/.hermes/hermes-agent/tui_gateway/methods_slash.pyÚ__annotate__r   #   s(   € ÷ #3ñ #3 Cð #3°.ð #3Àsð #3Èsñ #3ó    c                óP  € Vf   R# \        V4      '       d   R# VP                  R4      ;pf   R# VP                  R4      '       d   R# VP                  R4      ;'       g    \        P                  ! 4       ;_uu_ 4        \	        VP                  R. 4      4      pRRR4       X;'       g!    \	        \        VR	R4      ;'       g    . 4      p\        VR
,          V R7      p\        P                  V4      p ^ RI	H
pHp \        V4      ;_uu_ 4        T! Y4T;'       g    R4      p	RRR4       \        P                  T4       \!        T4       T! X	T;'       g    R4      #   + '       g   i     LÎ; i  + '       g   i     LV; i  \         d6   p
\        T
4      u Rp
?
\        P                  T4       \!        T4       # Rp
?
i\"         d0   p
RT
 2u Rp
?
\        P                  T4       \!        T4       # Rp
?
ii ; i  \        P                  T4       \!        T4       i ; i)zöDispatch /review against the live session's agent. The reviewer runs on the async
delegation rail; its completion is stamped with the parent's durable session_id, which
``_session_owns_notification_event`` matches to drain it back into this chat.Nu/   Nothing to review yet â€” send a message first.ue   /review runs on the local agent only for now â€” this session's agent lives on a remote compute host.ÚagentÚrunninguB   session busy â€” wait for the current turn to finish, then /reviewÚhistory_lockÚhistoryÚ_session_messagesÚsession_key)Úui_session_id)Úformat_dispatch_noteÚstart_reviewÚ z/review failed to start: )Ú_session_uses_compute_hostÚgetÚ
contextlibÚnullcontextÚlistÚgetattrÚ_set_session_contextÚ_current_runtime_session_recordÚsetÚagent.review_enginer   r   Ú_session_profile_runtime_scopeÚ
ValueErrorr   ÚresetÚ_clear_session_contextÚ	Exception)r   r   r   r   ÚsnapshotÚtokensÚruntime_tokenr   r   ÚresultÚexcs   &&&        r   Ú_format_live_review_outputr5   #   s©  € ð ‚Ù@Ü! '×*Ò*ÙvØ—‘˜WÓ%Ð%ˆÒ.Ù@Ø‡{�{�9×ÒÙSØ	�‰�^Ó	$×	@Ð	@¬
×(>Ò(>Ó(@×	@Ñ	@Ü˜Ÿ™ I¨rÓ2Ó3ˆ÷ 
Aà×PÐPœ4¤¨Ð/BÀDÓ I× OÐ OÈRÓP€Hô " '¨-Õ"8ÈÔL€FÜ3×7Ñ7¸Ó@€Mð'ßJô
 ,¨G×4Õ4Ù! %°3·9°9¸"Ó=ˆF÷ 5ô 	(×-Ñ-¨mÔ<Ü˜vÔ&Ù ¨¯	¨	¨rÓ2Ð2÷/ 
A×	@ú÷ 5×4ûäô Ü�3‹xŒô 	(×-Ñ-¨mÔ<Ü˜vÕ&ûô	 ô 1Ø*¨3¨%Ð0Ô0ä'×-Ñ-¨mÔ<Ü˜vÕ&ûð	1ûô 	(×-Ñ-¨mÔ<Ü˜vÕ&ús~   Â E"Ã8F ÄE5Ä'F Å"E2	Å5F	Æ F ÆH ÆF ÆH Æ
GÆH ÆH ÇH ÇH ÇG;ÇH ÇH Ç;H È H È"H%c               ó(   € V ^8„  d   QhRRRRRRRR/# r	   r   )r   s   "r   r   r   I   s(   € ÷ :ñ : Cð :°.ð :Àsð :Èsñ :r   c                ó2  € Vf   R# VP                  R4      '       d   R# \        V4      '       dž   RVP                  4       '       d   RV 2MR,           p \        V RVR	R
7      pTP                  R4      R!9   d%   \        TP                  R4      ;'       g    R4      # \        Y4       \        TP                  R4      ;'       g    R4      # VP                  R4      pVf   R# . p\        VP                  R4      ;'       g    R4      pV'       d5    \        V4      ;_uu_ 4       p	V	e   V	P                  VR	R7      pRRR4       V'       g6   VR,          ;_uu_ 4        \        VP                  R. 4      4      pRRR4       V'       g   R# R\        VR\        4       4      9   p
 TP                  \        V4      R	T
VP                  4       ;'       g    RR	R7       TP                  4       '       d   RTP                  4        R2MRpRT R 2#   \         d   pRT 2u Rp?# Rp?ii ; i  + '       g   i     Lö; i  \         d    \        P                  RR	R7        ELi ; i  + '       g   i     Lõ; i  \         d   pRT 2u Rp?# Rp?ii ; i)"z“Dispatch /refine against the live session's agent: spawn the background
memory/skills review directly instead of forking the isolated slash worker.Nz Refine unavailable (no session).r   u?   Agent is running â€” wait for the turn to finish, then /refine.z/refineÚ r    zslash.refineT)Ú
route_nameÚcommandÚwaitz"compute-host slash.refine failed: ÚtypeÚmessagez compute-host slash.refine failedÚoutputr   u/   Nothing to refine yet â€” send a message first.r   )Úinclude_ancestorsz+failed to load persisted /refine transcript)Úexc_infor   r   u4   Nothing to refine yet â€” the conversation is empty.Úskill_manageÚvalid_tool_names)Úmessages_snapshotÚreview_memoryÚreview_skillsÚfocusÚexplicitz/refine failed to start: z	 (focus: Ú)u1   âš— Reviewing this conversation in the backgroundu9    â€” any memory/skill updates will be reported when done.>   Úerrorúcontrol.error)r"   r!   ÚstripÚ_send_compute_host_controlr/   r   Ú#_apply_compute_host_metadata_mirrorÚ_session_dbÚget_messages_as_conversationÚloggerÚdebugr%   r&   r)   Ú_spawn_background_review)r   r   r   r:   Úackr4   r   r0   Útranscript_refÚdbrE   Útails   &&&         r   Ú_format_live_refine_outputrW   I   sP  € ð ‚Ù1Ø‡{�{�9×ÒÙPÜ! '×*Ò*Ø¨C¯I©I¯KªK  3 %™y¸RÕ@ˆð	>Ü,ØØ)ØØô	ˆCð �7‰7�6‹?Ð8Ô8Ü�s—w‘w˜yÓ)×OÐOÐ-OÓPÐPÜ+¨GÔ9Ü�3—7‘7˜8Ó$×*Ð*¨Ó+Ð+Ø�K‰K˜Ó €EØ‚}Ù@à€HÜ˜Ÿ™ ]Ó3×9Ð9°rÓ:€Nßð	WÜ˜W×%Ô%¨Ø’>Ø!×>Ñ>Ø&¸$ð  ?ó  �H÷ &÷ Ø�^×$×$Ü˜GŸK™K¨	°2Ó6Ó7ˆH÷ %çÙEà"¤g¨eÐ5GÌËÓ&OÑO€Mð	1Ø×&Ñ&Ü" 8›nØØ'Ø—)‘)“+×%Ð% Øð 	'ô 	
ð *-¯©¯ªˆY�s—y‘y“{�m 1Ñ%¸"€Dà
;¸D¸6ð B?ð 	?ðøôO ô 	>Ø7¸°uÐ=Õ=ûð	>ú÷ &×%ûô
 ô 	WÜ�L‰LÐFÐQUˆL×Vð	Wú÷ %×$ûô ô 1Ø*¨3¨%Ð0Õ0ûð1úsx   ÁH ÄI  Ä'H-Ä?I  Å I)Æ'7I< ÈH*ÈH%ÈH*È%H*È-H=	È8I  È=I  É "I&É%I&É)I9	É<JÊJÊJÊJc               ó    € V ^8„  d   QhRRRR/# )r
   r   Údictr   z	list[str]r   )r   s   "r   r   r   †   s   € ÷ ñ  4ð ¨Iñ r   c                ó*  € ^ RI HpHpHp V P	                  R4      pV P	                  R4      ;'       g    / p. p\        V 4      ;_uu_ 4        \        P                  ! \        4      ;_uu_ 4        \        VRR4      ;'       g+    VP	                  R4      ;'       g    \        4       ^,          ;p'       d.   Wc! V! V\        VRR4      \        VRR4      R7      4      ,          pRRR4       \        P                  ! \        4      ;_uu_ 4        \        VR	R4      p\        VR
R4      RJ p	Yi'       d
   V! VR7      MV! 4       ,          pRRR4       RRR4       V#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     T# ; i)a   Provider limits then Nous credits, as CLI/messaging /usage show them; neither needs an agent.
Both read the session profile's credentials, unreadable outside its scope when multiplexed (#132422).
Before the first turn the route is the session's composer pick, else the profile's provider.)Úfetch_account_usageÚnous_credits_linesÚrender_account_usage_linesr   Úmodel_overrideÚproviderNÚbase_urlÚapi_key)r`   ra   Ú_credits_stateÚis_usage_windowFT)Úcredits_state)Úagent.account_usager[   r\   r]   r"   r+   r#   Úsuppressr/   r&   Ú_config_model_target)
r   r[   r\   r]   r   ÚpickÚlinesr_   ÚstateÚwindows
   &         r   Ú_usage_account_blocksrl   †   sJ  € ÷ hÑgØ�K‰K˜Ó €EØ�;‰;Ð'Ó(×.Ð.¨B€DØ€EÜ	'¨×	0Õ	0Ü× Ò ¤×+Õ+Ü" 5¨*°dÓ;×pÐp¸t¿x¹xÈ
Ó?S×pÐpÔWkÓWmÐnoÕWpÐpˆxÖpØÐ3Ñ4GØ¤w¨u°jÀ$Ó'GÔQXÐY^Ð`iÐkoÓQpô5ró sõ s�÷ ,ô × Ò ¤×+Õ+ô ˜EÐ#3°TÓ:ˆEÜ˜UÐ$5°uÓ=ÀÐEˆFØÆÑ'°eÕ<ÑL^ÓL`Õ`ˆE÷ ,÷ 
1ð €L÷ ,×+ú÷ ,×+ú÷ 
1Ö	0ð €LúsH   Á#FÁ/-E	ÂE	Â7-E	Ã$*FÄ;E.	Å	FÅE+Å&FÅ.E>Å9FÆF	c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r
   r   r   r   rY   r   r   r   )r   s   "r   r   r   œ   s.   € ÷ Tñ T 3ð T°ð T¸Cð TÀCñ Tr   c           	     ó¢   € \        V4      p\        V4      pR P                  \        RVRP                  V4      .4      4      ;'       g    \        # )z

NÚ
)rl   Ú_format_live_usage_tokensÚjoinÚfilterÚ_NO_AGENT_USAGE)r   r   r   Úextrar1   s   &&&  r   Ú_format_live_usage_outputrv   œ   sB   € Ü! 'Ó*€EÜ& wÓ/€FØ�;‰;”v˜d V¨T¯Y©Y°uÓ-=Ð$>Ó?Ó@×SÐSÄOÐSr   c               ó    € V ^8„  d   QhRRRR/# ©r
   r   rY   r   r   r   )r   s   "r   r   r   ¢   s   € ÷ ñ  tð °ñ r   c                óÊ  a€ V P                  R 4      p\        V 4      oVf   S'       g   R# V P                  R4      e&   \        V P                  R4      ;'       g    ^ 4      pM5V R,          ;_uu_ 4        \        V P                  R. 4      4      pRRR4       R V3R llpRV! R	4      3R
V! R4      3.p\        SP                  R4      ;'       g    ^ 4      '       d   VP	                  RV! R4      34       VRV! R4      3RV! R4      3RV! R4      3RV! R4      3.,          pSP                  R4      '       dl   \        SP                  R4      ;'       g    ^ 4      pSP                  R4      '       d   RMRpVP	                  RV V! R4       RV! R4       RV V R234       VRXR  3R!V! R"4      3.,          pSP                  R#4      ;'       g:    \        V 4      P                  R#4      ;'       g    \        VR#R4      ;'       g    R$pR%R&R'V 2.pY„ U	U
u. uF  w  ršV	R( V
 2NK  	  up
p	,          pR)P                  V4      #   + '       g   i     ELÃ; iu up
p	i )*r   Nr    Ú_metadata_message_countr   r   c               ó    € V ^8„  d   QhRRRR/# )r
   Úkeyr   r   r   )r   s   "r   r   Ú/_format_live_usage_tokens.<locals>.__annotate__­   s   € ÷ /ñ /ˆsð /�sñ /r   c                óP   <€ \        SP                  V 4      ;'       g    ^ 4      R # )é    Ú,)Úintr"   )r|   Úusages   &€r   ÚnÚ$_format_live_usage_tokens.<locals>.n­   s#   ø€ Ü�e—i‘i “n×)Ð)¨Ó*¨1Ð-Ð.r   zInput tokens:ÚinputzOutput tokens:r>   Ú	reasoningzReasoning tokens:zPrompt tokens:ÚpromptzCompletion tokens:Ú
completionzTotal tokens:Útotalz
API calls:ÚcallsÚcontext_maxÚcontext_percentÚcontext_estimatedÚ~zCurrent context:Úcontext_usedú / ú (ú%)z	Messages:r€   zCompressions:ÚcompressionsÚmodelz	(unknown)zSession Token Usageõx   â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€úModel: z<30rp   )r"   Ú_session_usage_snapshotr�   ÚlenÚappendÚ_metadata_mirrorr&   rr   )r   r   Úmessage_countrƒ   ÚrowsÚpctÚmarkr”   ri   ÚlabelÚvaluer‚   s   &          @r   rq   rq   ¢   sh  ø€ Ø�K‰K˜Ó €EÜ# GÓ,€EØ‚}ŸUÙØ‡{�{Ð,Ó-Ò9Ü˜GŸK™KÐ(AÓB×GÐGÀaÓH‰à�^×$×$Ü §¡¨I°rÓ :Ó;ˆM÷ %÷/ð /à™a ›jÐ)Ð,<¹aÀ»kÐ+JÐK€DÜ
ˆ5�9‰9�[Ó!×&Ð& Q×'Ò'Ø�‰Ð(©!¨K«.Ð9Ô:ØÐ¡ (£Ð,Ð/CÁQÀ|Ã_Ð.UØ™q ›zÐ*¨\¹1¸W»:Ð,FðHõ H€Dà‡y�y�×ÒÜ�%—)‘)Ð-Ó.×3Ð3°!Ó4ˆØ—i‘iÐ 3×4Ò4‰s¸"ˆØ�‰Ð'¨D¨6±!°NÓ2CÐ1DÀCÉÈ-ÓHXÐGYÐY[Ð\`Ð[aÐbeÐafÐfhÐ)iÐjÔkØˆk˜m¨AÐ.Ð0°?ÁAÀnÓDUÐ2VÐWÕW€DØ�I‰I�gÓ×vÐvÔ"2°7Ó";×"?Ñ"?ÀÓ"H×vÐvÌGÐTYÐ[bÐdfÓLg×vÐvÐkv€EØ"ð  %_ð  cjð  kpð  jqð  arð  s€EØ	¸Ô=¹©¨��s�˜E˜7Ó#¹Ò=Õ=€EØ�9‰9�UÓÐ÷% %×$Ð$üó" >s   Á5IÈIÉI	c               ó    € V ^8„  d   QhRRRR/# )r
   r   rY   r   zOptional[list]r   )r   s   "r   r   r   ¿   s   € ÷ 	ñ 	 Dð 	¨^ñ 	r   c           
     óf  € \        V 4      ;_uu_ 4       pVej   V P                  R4      '       dS   \        P                  ! \        4      ;_uu_ 4        VP                  V R,          RRR7      uuRRR4       uuRRR4       # RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zçSession-scoped transcript read; None when no db/key or the read fails. Uses
``_session_db`` (not ``_get_db()``): a profile session's rows live in its own
profile's state.db, and through the launch handle this read comes back empty.Nr   T)r?   Úinclude_row_ids)rN   r"   r#   rf   r/   rO   )r   rU   s   & r   Ú_live_session_messagesr¤   ¿   s…   € ô 
�W×	Ô	 ØŠ>˜gŸk™k¨-×8Ò8Ü×$Ò$¤Y×/Õ/Ø×6Ñ6Ø˜MÕ*¸dÐTXð 7ó Z÷ 0Ñ/÷ 
×	Ò	ñ
 ÷ 0×/ú÷ 
Ö	ñ
 ús(   ”B°"BÁB	Á-
BÂBÂBÂB0	c               ó(   € V ^8„  d   QhRRRRRRRR/# rn   r   )r   s   "r   r   r   Ë   s(   € ÷ ñ  Sð °4ð ¸cð Àcñ r   c           
     ó   € VR ,          ;_uu_ 4        \        VP                  R. 4      4      pRRR4       \        V4      p\        Vf   XMTVP                  R4      R7      pV'       g   R# RR.p\	        V^R7       FÙ  w  rx\        VP                  R	4      ;'       g    R
4      p	RRRR/P                  W™P                  4       4      p
\        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      P                  4       p\        V4      R8”  d   VR,           R2MTpTP                  RT
 RT RT;'       g    R 24       KÛ  	  RP                  V4      #   + '       g   i     ELG; i)r   r   NÚprofile_home©r§   úNo conversation history yet.zConversation Historyr•   )ÚstartÚroleÚunknownÚuserÚYouÚ	assistantÚHermesÚtextr   r    i�  :Ni�  Nz...Ú[z #z] z	(no text)rp   )r%   r"   r¤   Ú_history_to_messagesÚ	enumerater   ÚtitlerK   r˜   r™   rr   )r   r   r   r   Ú
db_historyÚmessagesri   Úidxr=   r«   rŸ   r±   s   &&&         r   Ú_format_live_history_outputr¹   Ë   sK  € Ø	�×	 ×	 Ü�w—{‘{ 9¨bÓ1Ó2ˆ÷ 
!ä'¨Ó0€JÜ#¨zÒ/A¡GÀzÐ`g×`kÑ`kÐlzÓ`{Ô|€HßÙ-Ø#ð  &`ð  a€EÜ! (°!×4‰ˆÜ�7—;‘;˜vÓ&×3Ð3¨)Ó4ˆØ˜ ¨XÐ6×:Ñ:¸4ÇÁÃÓNˆÜ�7—;‘;˜vÓ&×FÐF¨'¯+©+°iÓ*@×FÐFÀBÓG×MÑMÓOˆÜ%(¨£Y°¤_�$�t•*�˜SÑ!¸$ˆØ�‰�q˜˜˜r #  b¨×)<Ð)<°Ð(=Ð>Ö?ñ 5ð �9‰9�UÓÐ÷ 
!×	 Ð	 ús   ’E,Å,E=	c               ó(   € V ^8„  d   QhRRRRRRRR/# rn   r   )r   s   "r   r   r   Ü   s.   € ÷ Dñ D Sð D°4ð D¸cð DÀcñ Dr   c                ód	  a€ ^ RI Hp  \        \        V4      ;'       g    . VP	                  R4      R7      pV'       gP   VR,          ;_uu_ 4        \        \        VP	                  R. 4      4      VP	                  R4      R7      pRRR4       . pVP	                  R4      ;peß   VR,          ;_uu_ 4        \        VP	                  R. 4      4      pRRR4        \        VR,          \        V4      R	7      p ^ R
I	H
p	Hp
Hp V
! VX4      pRpT;'       g    RP                  4       P                  4       R)9   d4   \        P                   ! \
        4      ;_uu_ 4        V	! V4      pRRR4       V! WÍRR7      p\#        V4       \%        V4      p\'        V4      pV'       d   R\)        V4       R2MR.pV! R V 4       4      oVP+                  RRP-                  V3R lR* 4       4      ,           4       VP	                  R4      ;'       g    VP	                  R4      ;'       g    R;p'       d   VP+                  RV 24       TP+                  RVP	                  R4      ;'       g    R 24       V'       d&   VP/                  R.VO4       RP-                  V4      # \1        VP	                  R4      ;'       g    ^ 4      pVP	                  R4      '       d   RMRp\1        VP	                  R4      ;'       g    ^ 4      pV'       d:   V'       d2   VP+                  RV VR  R!VR  R"V VV,          ^d,          R# R$2	4       M V'       d   VP+                  RV VR  R%24       VP	                  R&4      '       d8   TP+                  R'\1        VP	                  R&4      ;'       g    ^ 4      R  24       VP	                  R4      ;peY   ^ R(IHpHp \        VR,          \        V4      R	7      p V! V! V4      4      p\#        V4       V'       d   VR.V,           ,          pRP-                  V4      #   \
         d    . p ELi ; i  + '       g   i     ELÄ; i  + '       g   i     ELŒ; i  + '       g   i     EL; i  \#        T4       i ; i  \
         d    . p ELi ; i  \#        T4       i ; i)+r   )ÚCounterr§   r¨   r   r   Nr   r   )Úcwd)Úcompute_context_detailsÚ!compute_session_context_breakdownÚrender_context_breakdown_linesr    F)ÚdetailsÚgridzConversation: z	 messagesú(Conversation is empty (no messages yet).c              3  ój   "  € T F)  p\        VP                  R 4      ;'       g    R4      x € K+  	  R# 5i)r«   r¬   N)r   r"   )Ú.0Úmsgs   & r   Ú	<genexpr>Ú._format_live_context_output.<locals>.<genexpr>  s(   é € ÐJÁ¸#”C˜Ÿ™ ›×4Ð4¨9×5Ð5Ãùs   ‚!3¤3ú  z, c              3  óP   <"  € T F  q R SP                  V^ 4       2x € K  	  R# 5i)z: N)r"   )rÅ   ÚrÚroless   & €r   rÇ   rÈ     s'   øé € Ð!mÑElÀ C r¨%¯)©)°A°q«/Ð):Õ";ÓElùs   ƒ#&r”   r–   z
Provider: r_   Úautorp   r�   r�   rŽ   r‹   zContext usage: r€   r�   z	 tokens (z.1fr’   z tokensr“   zCompressions: )Úcontext_file_sources_for_agentÚrender_context_file_lines>   ÚallÚfullrÁ   )r­   r¯   ÚtoolÚsystem)Úcollectionsr¼   r³   r¤   r"   r/   r%   r'   Ú_session_cwdÚagent.context_breakdownr¾   r¿   rÀ   rK   Úlowerr#   rf   r.   r—   rš   r˜   r™   rr   Úextendr�   Úagent.context_file_sourcesrÎ   rÏ   )r   r   r   r¼   r·   Úbreakdown_linesr   Úlive_messagesr1   r¾   r¿   rÀ   ÚpayloadrÁ   r‚   Úmirrorri   r”   r�   rž   r‹   rÎ   rÏ   Ú
file_linesrÌ   s   &&&                     @r   Ú_format_live_context_outputrß   Ü   sõ  ø€ Ý#ðÜ'Ô(>¸wÓ(G×(MÐ(MÈ2Ð\c×\gÑ\gÐhvÓ\wÔxˆ÷ Ø�^×$×$Ü+¬D°·±¸YÈÓ1KÓ,LÐ[b×[fÑ[fÐguÓ[vÔwˆH÷ %ð "$€OØ—‘˜WÓ%Ð%ˆÒ2ð �^×$×$Ü  §¡¨Y¸Ó!;Ó<ˆM÷ %ð	!ô *¨'°-Õ*@ÄlÐSZÓF[Ô\ˆFð/÷4ñ 4ñ <¸EÀ=ÓQ�Ø�Ø—I�I˜2×$Ñ$Ó&×,Ñ,Ó.Ð2LÔLÜ#×,Ò,¬Y×7Õ7Ù"9¸%Ó"@˜÷ 8á"@ÀÐ`eÔ"f�ä& vÔ.ô $ GÓ,€EÜ˜gÓ&€Fß:Bˆ~œc (›m˜_¨IÑ6ÐHrÐs€EÙÑJÁÓJÓJ€EØ	‡L�L�˜Ÿ	™	Ô!mÑElÓ!mÓmÕmÔnØ—
‘
˜7Ó#×?Ð? u§y¡y°Ó'9×?Ð?¸RÐ?€uÖ?Ø�‰�w˜u˜gÐ&Ô'Ø	‡L�L�:˜fŸj™j¨Ó4×>Ð>¸Ð?Ð@ÔAßØ�‰�bÐ+˜?Ð+Ô,Ø�y‰y˜ÓÐÜ�u—y‘y Ó0×5Ð5°AÓ6€LØ—)‘)Ð/×0Ò0‰3°b€DÜ�e—i‘i Ó.×3Ð3°!Ó4€KßŸØ�‰Ø˜d˜V L°Ð#3°3°{À1°oÀYÈtÈfÐVbÐepÕVpÐtwÕUwÐx{ÐT|Ð|~Ðõ	Aç	Ø�‰� t f¨\¸!Ð,<¸GÐDÔEØ‡y�y�× Ò Ø�‰�~¤c¨%¯)©)°NÓ*C×*HÐ*HÀqÓ&IÈ!Ð%LÐMÔNØ—‘˜WÓ%Ð%ˆÒ2ßhä% g¨mÕ&<Ä,ÈwÓBWÔXˆð	+Ù2Ñ3QÐRWÓ3XÓYˆJä" 6Ô*ßØ�b�T˜JÕ&Õ&ˆEØ�9‰9�UÓÐøôA ô Ø‹ðú÷ %×$Ð$ú÷ %×$Ð$ú÷ 8×7Ð7ûô ' vÕ.ûÜô 	!Ø ‹Oð	!ûô> # 6Õ*úsƒ   ‰P.  P. Á6QÂ7QÃR Ã:Q> ÄAQ> Å	Q*Å'Q> Å9R Ï+R" Ð.P?Ð>P?ÑQ	ÑQ'	Ñ*Q;	Ñ5	Q> Ñ>RÒR ÒRÒRÒ"R/c               ó(   € V ^8„  d   QhRRRRRRRR/# rn   r   )r   s   "r   r   r   #  s.   € ÷ dñ d 3ð d°ð d¸Cð dÀCñ dr   c           
     óö  € \        VP                  R 4      V4      p\        V\        4      '       d   VP                  R4      M/ p\        V\        4      '       d	   V'       g   R# \	        VP                  4        UUu0 uF/  p\        V\        4      '       g   K  V F  p\        V4      kK  	  K1  	  upp4      pV'       g   R# RP                  \        V4      RP                  R V 4       4      4      # u uppi )r   r   úNo tools available.zAvailable tools ({}):
{}rp   c              3  ó,   "  € T F
  pR V 2x € K  	  R# 5i)rÉ   Nr   )rÅ   Únames   & r   rÇ   Ú,_format_live_tools_output.<locals>.<genexpr>+  s   é € ÐCbÑ\aÐTXÀbÈÈÅKÓ\aùs   ‚)Ú_session_infor"   Ú
isinstancerY   ÚsortedÚvaluesr%   r   r   r˜   rr   )r   r   r   ÚinfoÚgroupsÚgrƒ   Únamess   &&&     r   Ú_format_live_tools_outputrî   #  s°   € Ü˜Ÿ™ WÓ-¨wÓ7€DÜ",¨T´4×"8Ò"8ˆT�X‰X�gÔ¸b€FÜ�fœd×#Ò#¯6Ù$Ü F§M¡M¤OÔV¡O˜q´zÀ!ÄT×7J”FÓTUÈq”C˜–FÑTU‘F¡OÒVÓW€EßÙ$Ø&×-Ñ-¬c°%«j¸$¿)¹)ÑCbÑ\aÓCbÓ:bÓcÐcùó Ws   Á=C5
ÂC5
c               ó(   € V ^8„  d   QhRRRRRRRR/# rn   r   )r   s   "r   r   r   .  s(   € ÷ 	*ñ 	* #ð 	*°ð 	*¸3ð 	*À3ñ 	*r   c                ó  €  ^ RI Hp RR.pVP                  4        F?  w  rVVP                  V R24       VP	                  R VP                  4        4       4       KA  	  RP                  V4      #   \         d   pRT 2u Rp?# Rp?ii ; i)	r   )ÚCOMMANDS_BY_CATEGORYzAvailable commands:r    Ú:c              3  ó8   "  € T F  w  rR VR RV 2x € K  	  R# 5i)rÉ   z<15r8   Nr   )rÅ   ÚcmdÚdescs   &  r   rÇ   Ú+_format_live_help_output.<locals>.<genexpr>4  s#   é € ÐQÑ@P±9°3˜2˜c #˜Y a¨ vÕ.Ó@Pùs   ‚rp   zhelp unavailable: N)Úhermes_cli.commandsrñ   Úitemsr™   rØ   rr   r/   )r   r   r   rñ   ri   ÚcategoryÚcommandsr4   s   &&&     r   Ú_format_live_help_outputrû   .  sƒ   € ð*Ý<Ø&¨Ð+ˆØ"6×"<Ñ"<Ö">ÑˆHØ�L‰L˜H˜: Q˜Ô(Ø�L‰LÑQÀÇÁÔ@PÓQÖQñ #?ð �y‰y˜ÓÐøÜô *Ø# C 5Ð)Õ)ûð*ús   ‚A-A0 Á0B
Á;BÁ?B
ÂB
c               ó    € V ^8„  d   QhRRRR/# rx   r   )r   s   "r   r   r   :  s   € ÷ Nñ N tð N°ñ Nr   c                óÄ   € V P                  R 4      pVe   \        VRR4      MRpVe   \        VRR4      MRpV'       g   R# RV 2V'       d   RV R2,           # R,           # )r   r”   r    r_   zCurrent model: (unknown)zCurrent model: r‘   rH   )r"   r&   )r   r   r”   r_   s   &   r   Ú_format_live_model_outputrþ   :  se   € Ø�K‰K˜Ó €EØ+0Ò+<ŒG�E˜7 BÔ'À"€EØ16Ò1BŒw�u˜j¨"Ô-È€HßÙ)Ø˜U˜GÐ$¿H¨"¨X¨J°aÐ(8ÕMÐMÈ"ÕMÐMr   c               ó(   € V ^8„  d   QhRRRRRRRR/# rn   r   )r   s   "r   r   r   C  s(   € ÷ ?ñ ? Cð ?°$ð ?¸Sð ?ÀSñ ?r   c                ó  € \         R ,          ! RRV /4      pVP                  R4      '       d,   \        VR,          P                  R4      ;'       g    R4      # \        VP                  R/ 4      P                  R4      ;'       g    R4      # )	zsession.statusÚstatusÚ
session_idrI   r=   zstatus unavailabler3   r>   r    )Ú_methodsr"   r   )r   r   r   Úresponses   &&& r   Ú_format_live_status_outputr  C  su   € ÜÐ(Ö)¨(°\À3Ð4GÓH€HØ‡|�|�G×ÒÜ�8˜GÕ$×(Ñ(¨Ó3×KÐKÐ7KÓLÐLÜˆx�|‰|˜H bÓ)×-Ñ-¨hÓ7×=Ð=¸2Ó>Ð>r   Úcompresszno active session for /compressc                ó<   € \        WR V 2P                  4       4      # )z
/compress )Ú_mirror_slash_side_effectsrK   )r   r   r   s   &&&r   Ú<lambda>r	  N  s   € Ô+EÀcÐV`ÐadÐ`eÐTf×TlÑTlÓTnÔ+or   r‚   Úreviewr   r©   Úrefiner  rÃ   râ   ÚclearÚmodelsÚrenameÚeffortc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r
   r   r   r   r   rä   r   r   zOptional[str]r   )r   s   "r   r   r   ]  s1   € ÷ <ñ < Cð <°.ð <Èð <ÐRUð <ÐZgñ <r   c                óö  € T;'       g    RP                  R4      P                  4       pT;'       g    RpVR8X  d,   VP                  4       '       g   \        T;'       g    / 4      # V\        9   d"   Ve   \        V4      '       g   \        WV4      # V\        9   d   Ve   \        V4      '       g   R# \        P                  V4      pVf   R# Vw  rVVf   Ve   V# \        V4      '       d
   V! WV4      # T# )zZAnswer a slash command from the live session instead of the slash worker; None = not ours.r    Ú/r”   N)Úlstripr×   rK   rþ   Ú_CONTEXT_LOCAL_IN_PROCESSr!   rß   Ú_ISOLATED_SESSION_READ_COMMANDSÚ_LIVE_SLASH_OUTPUTr"   Úcallable)r   r   rä   r   ÚentryÚno_session_replyÚfmts   &&&&   r   Ú_live_slash_command_outputr  ]  sÞ   € à�JˆJ�B×Ñ˜sÓ#×)Ñ)Ó+€DØ
�)ˆ)�€CØˆw„˜sŸy™yŸ{š{Ü(¨¯¨°BÓ7Ð7àÔ)Ô)ØÒÜ*¨7×3Ò3ä*¨3¸Ó=Ð=ØÔ.Ô.¸Ò8KÔPjÐkr×PsÒPsÙÜ×"Ñ" 4Ó(€EØ‚}ÙØ!ÑÐØ‚Ð+Ò7ØÐÜ%-¨c§]¢]‰3ˆs˜SÓ!Ð;¸Ð;r   r”   Úpersonalityc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r
   r   r   r   rY   r   Úsnapshot_kwargsÚboolr   r   )r   s   "r   r   r   |  s8   € ÷ 2[ñ 2[ cð 2[°Dð 2[Àcð 2[Ð_cð 2[Ðhkñ 2[r   c               óî  a€ ^ RI Hp ^ RIHpHpHpHp	 ^ RIHp
H	p ^ RI
Ho V! V4      pVP                  '       d   V# VP                  '       ds   VR,          ;_uu_ 4        \        VP                  R. 4      4      pRRR4       \!        V4      ;_uu_ 4        RP#                  V	! V! VXV4      4      4      uuRRR4       # \!        V4      ;_uu_ 4        \%        W4      ;_uu_ 4        VR,          ;_uu_ 4        \        VP                  R. 4      4      p\'        VP                  R	^ 4      4      pRRR4       \)        VR
R4      ;'       g    Rp\)        VRR4      ;'       g    RpR V3R llpV! XVV4      pRVRVR	X/p V'       d&   \+        YP-                  4       ;'       g    R3/ VB  M\+        W4        \3        W4       VR,          ;_uu_ 4        \        VP                  R. 4      4      pRRR4       T! X\)        VR
R4      ;'       g    T\)        VRR4      ;'       g    T4      p\5        RV \7        W!4      4       V! VVVV\)        VRR4      R7      pV! VRR7       RP#                  \9        RVR,          VR,          VP                  R4      .4      4      uuRRR4       uuRRR4       #   + '       g   i     ELD; i  + '       g   i     EL; i  + '       g   i     EL·; i  \.         d1   pT
! TP0                  4      u Rp?uuRRR4       uuRRR4       # Rp?ii ; i  + '       g   i     ELF; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)a»  Compress the live session; return the user-facing feedback text (shared by command.dispatch
/compress and the slash mirror). ``snapshot_kwargs`` forwards the pre-read snapshot to
``_compress_session_history``; the raw arg goes through unparsed (the choke point parses
``here [N]`` / ``--keep N``). CompressionLockHeld is a clean no-op (skip note returned);
other errors propagate to the caller, which finalizes the context-engine notification.©Ú0finalize_context_engine_compression_notification)ÚAGGRESSIVE_UNSUPPORTEDÚcompress_nowÚparse_compress_argsÚrender_compress_result)Údescribe_compression_lock_skipÚsummarize_manual_compression)Úestimate_request_tokens_roughr   r   Nrp   Úhistory_versionÚ_cached_system_promptr    r   c               ó   € V ^8„  d   QhRR/# )r
   r   r�   r   )r   s   "r   r   Ú2_compress_live_with_feedback.<locals>.__annotate__–  s   € ÷ 	uñ 	u°Sñ 	ur   c                ó,   <€ V '       d   S! WVR 7      # ^ # ))Úsystem_promptr   r   )r·   r‡   Ú	tool_defsr)  s   &&&€r   ÚestimateÚ._compress_live_with_feedback.<locals>.estimate–  s   ø€ ßemÑ0°ÐW`ÔaÐtÐstÐtr   Úapprox_tokensÚbefore_messagesúsession.infoÚcontext_compressor)Úcompression_stateT©Ú	committedÚheadlineÚ
token_lineÚnote)Úagent.conversation_compressionr"  Ú%agent.conversation_compression_manualr#  r$  r%  r&  Ú!agent.manual_compression_feedbackr'  r(  Úagent.model_metadatar)  Ú
aggressiveÚpreviewr%   r"   r+   rr   Ú_manual_compress_turnr�   r&   Ú_compress_session_historyrK   ÚCompressionLockHeldÚholderÚ _sync_session_key_after_compressÚ_emitræ   rs   )r   r   r   r   r  r"  r#  r$  r%  r&  r'  r(  ÚrequestÚpreview_messagesr4  r*  Ú
sys_promptr   r1  Úbefore_tokensr0   ÚeÚafter_messagesÚafter_tokensÚfbr)  s   &&&&$                    @r   Ú_compress_live_with_feedbackrQ  |  sÈ  ø€ õ `÷[ó [çnÝBÙ! #Ó&€GØ××ÐØ%Ð%Ø‡‡€Ø�^×$×$Ü# G§K¡K°	¸2Ó$>Ó?Ð÷ %ä+¨G×4Õ4Ø—9‘9Ñ3±LÀÐHXÐZaÓ4bÓcÓd÷ 5Ò4ä	'¨×	0Õ	0Ô2GÈ×2UÕ2UØ�^×$×$Ü" 7§;¡;¨y¸"Ó#=Ó>ˆOÜ! '§+¡+Ð.?ÀÓ"CÓDˆO÷ %ô ˜UÐ$;¸RÓ@×FÐFÀBˆ
Ü˜˜w¨Ó-×5Ð5°ˆ÷	uð 	uá  °*¸eÓDˆØ# ]Ð4EÀÐXiÐkzÐ{ˆð		<ßÜ)¨'·9±9³;×3FÐ3FÀ$ÑSÈ(ÓSô
 *¨'Õ7ô 	)¨Ô6Ø�^×$×$Ü! '§+¡+¨i¸Ó"<Ó=ˆN÷ %áØœG EÐ+BÀBÓG×UÐUÈ:ÔW^Ð_dÐfmÐosÓWt×W}ÐW}Ðx}óˆäˆn˜c¤=°Ó#@ÔAÙ)Ø˜^¨]¸LÜ% eÐ-AÀ4ÓHôJˆñ 	9¸È$ÕOØ�y‰yœ  r¨*¥~°r¸,Õ7GÈÏÉÐPVËÐ&XÓYÓZ÷? 3VÑ2U×	0Ò	0÷	 %×$Ð$úç4×4Ð4ú÷ %×$Ð$ûô$ #ô 	<Ù1°!·(±(Ó;Ô;÷) 3VÑ2U×	0Ò	0ûð&	<ú÷ %×$Ð$ú÷- 3V×2Uú×	0×	0×	0Ò	0úsÓ   Á!J8ÂKÃM#Ã)M	Ã;7K Ä2M	ÅM	Å%M	ÆK4ÆK4Æ(K4Æ0M	Æ1K4Æ<M	ÇL2Ç5M	ÈM	È*A9M	Ê#
M#Ê8K		ËK	Ë K1Ë+	M	Ë4L/Ë?L*ÌL/ÌM	Ì
M#Ì*L/Ì/M	Ì2MÌ=	M	ÍMÍM#Í#M4	c               ó   € V ^8„  d   QhRR/# ©r
   r   ÚNoner   )r   s   "r   r   r   ±  s   € ÷ !ñ !°4ñ !r   c                ó.   € V'       d   \        4        R # R # )N)Úbroadcast_session_info©r   r   r   r   s   &&&&r   Ú_mirror_approvalsrX  ±  s   € ß
ÜÖ ñ r   c               ó   € V ^8„  d   QhRR/# rS  r   )r   s   "r   r   r   ¶  s   € ÷ Gñ G°Tñ Gr   c                óŽ   € V'       d=   V'       d3   \        V\        4       4      w  rE^ RIHp V! V4       \	        WWT4       R# R# R# )r   )Úpersist_personalityN)Ú_validate_personalityÚ	_load_cfgÚhermes_cli.personalityr[  Ú_apply_personality_to_session)r   r   r   r   ÚpnameÚ
new_promptr[  s   &&&&   r   Ú_mirror_personalityrb  ¶  s4   € ß
�uÜ1°#´y³{ÓCÑˆÝ>Ù˜EÔ"Ü% c°JÖFñ	 �sr   ÚfastÚpriorityÚonÚnormalÚoffrÍ   ÚcoldÚ	ultrafastÚultrac               ó   € V ^8„  d   QhRR/# rS  r   )r   s   "r   r   r   Â  s   € ÷ Bñ B¨dñ Br   c                ó¸   € V'       dR   VP                  4       \        9   d!   \        VP                  4       ,          Vn        \        R V \	        W!4      4       R# R# )r5  N)r×   Ú_FAST_TIERSÚservice_tierrH  ræ   rW  s   &&&&r   Ú_mirror_fastro  Â  s<   € ßØ�9‰9‹;œ+Ô%Ü!,¨S¯Y©Y«[Õ!9ˆEÔÜˆn˜c¤=°Ó#@ÖAñ r   c               ó   € V ^8„  d   QhRR/# rS  r   )r   s   "r   r   r   É  s   € ÷ !ñ !°Dñ !r   c                ób   € V'       d'   \        VR 4      '       d   VP                  4        R# R# R# )Úreload_mcp_toolsN)Úhasattrrr  rW  s   &&&&r   Ú_mirror_reload_mcprt  É  s%   € ß”˜Ð 2×3Ò3Ø×ÑÖ ñ 4�ur   c               ó   € V ^8„  d   QhRR/# rS  r   )r   s   "r   r   r   Î  s   € ÷ 3ñ 3¨dñ 3r   c                ó6   € ^ RI Hp VP                  RR7       R# )r   )Úprocess_registryz
slash.stop)ÚsourceN)Útools.process_registryrw  Úkill_all)r   r   r   r   rw  s   &&&& r   Ú_mirror_stopr{  Î  s   € Ý7ð ×Ñ \ÐÖ2r   c               ó   € V ^8„  d   QhRR/# )r
   r   r   r   )r   s   "r   r   r   Ö  s   € ÷ ñ °3ñ r   c                óª   € ^ RI Hp ^ RIHp VP	                  R4      pV'       d.   T! V'       d	   V! V4      MR4      '       d   \        RV RR/4       R# )	z�An answered low-disk question drops its sticky notice (``later`` too: it re-arms in a week);
``status``, a typo or a failed save leave it up.)ÚPath)Úansweredr§   Nznotification.clearr|   zsessions.auto_pruner    )Úpathlibr~  Úhermes_cli.prune_advisorr  r"   rH  )r   r   r   r   r~  r  Úhomes   &&&&   r   Ú_mirror_autoprunerƒ  Ö  sC   € õ Ý1Ø�;‰;�~Ó&€Dß
‰x§d™˜Tœ
°×5Ò5ÜÐ" C¨%Ð1FÐ)GÔHÙr   c                ó^   € V'       d%   V'       d   \        WV4      P                  R R4      # R# )Úwarningr    )Ú_apply_model_switchr"   rW  s   &&&&r   r	  r	  â  s'   € ßEHÏUÔ˜C¨#Ó.×2Ñ2°9¸bÓAÐZÐXZÐZr   Ú	approvalsc                ó2   € V'       d   \        WW#R R7      # R# )F)r  r    )rQ  rW  s   &&&&r   r	  r	  å  s   € ßY^Ô$ S°5ÈuÔUÐfÐdfÐfr   z
reload-mcpÚstopÚ	autoprunec          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r
   r   r   r   rY   rä   r:   r   ztuple[str, str]r   )r   s   "r   r   r   ì  s/   € ÷ .ñ .˜Sð .¨4ð .°sð .ÀSð .È_ñ .r   c           	     ó  aa€ RV 2oVR8H  pV 3R VV3R lllp \        V 3RSRVRR/V'       d   R	\        4       R
V/M/ B pTP                  R4      R9   d+   R\        TP                  R4      ;'       g    RS R24      3# \        ST4       R\        TP                  R4      ;'       g    R4      3#   \        P                   d    T'       d   Ru # RRS R23u # \         d   pRRS RT 23u Rp?# Rp?ii ; i)ua  Forward a mutating slash command to the session's compute host â†’ ``(status, text)``:
``pending`` (compress still running after the wait), ``failed`` (transport error/timeout),
``rejected`` (host control.error), ``ok`` (host output; metadata mirror applied). Compress
waits longer and installs a late-ack adopter so a slow compression still lands here.zslash.r  c               ó    € V ^8„  d   QhRRRR/# )r
   ÚlaterY   r   rT  r   )r   s   "r   r   Ú)_compute_host_slash.<locals>.__annotate__ô  s   € ÷ Zñ Z˜4ð Z¨dñ Zr   c                ó&   <€ \        VSV SR 7       R# ))r9   N)Ú%_adopt_late_compute_host_compress_ack)rŽ  Ú_sidr9   r   s   &&€€r   Ú_on_late_ackÚ)_compute_host_slash.<locals>._on_late_ackô  s   ø€ Ü-¨d°G¸TÈj×Yr   r9   r:   r;   TÚtimeoutÚon_late_ackÚfailedzcompute-host z failed: timed outz	 failed: Nr<   Úrejectedr=   z failedÚokr>   r    )ÚpendingzYcompression still running in the background; the transcript will refresh when it finishes>   rI   rJ   )rL   Ú#_compute_host_compress_wait_secondsÚqueueÚEmptyr/   r"   r   rM   )	r   r   rä   r:   Úis_compressr“  rS   r4   r9   s	   &f&&    @r   Ú_compute_host_slashrŸ  ì  s4  ù€ ð
 ˜$˜�€JØ˜*Ñ$€Kà&)÷ Zó Zð	DÜ(ØñxØ&ðxØ07ðxØ>Bðxçbm�	Ô>Ó@À-ÐQ]Ñ^Ðsuñxˆð ‡w�wˆvƒÐ4Ô4Øœ3˜sŸw™w yÓ1×XÐX°}ÀZÀLÐPWÐ5XÓYÐYÐYÜ'¨°Ô5Ø”�S—W‘W˜XÓ&×,Ð,¨"Ó-Ð-Ð-øô �;‰;ô HßØyÒyØ˜=¨¨Ð4FÐGÐGÒGÜô DØ˜=¨¨°I¸c¸UÐCÐCÕCûðDús:   ›B5 ±B5 Â5C>ÃC>ÃC>Ã C>Ã)C>Ã*	C9Ã3C>Ã9C>c               ó(   € V ^8„  d   QhRRRRRRRR/# )r
   r   r   r   rY   r:   r   r   )r   s   "r   r   r     s(   € ÷ 0ñ 0 Cð 0°$ð 0Àð 0Èñ 0r   c                ó8  € VP                  R4      P                  R^4      pV'       g   R# V^ ,          \        V4      ^8”  d   V^,          P                  4       MRVP	                  R4      repVR8X  d   RpV\
        9   d`   \        V4      '       d   \        WWB4      ^,          # VP	                  R4      '       d%   \        V\        VP	                  R4      4      4      # \        P	                  V4      ;pf   R#  \        V4      ;_uu_ 4        V! WWe4      ;'       g    RuuRRR4       #   + '       g   i     R# ; i  \         d   p\        T4      u Rp?# Rp?i\         d/   pTR8X  d   T'       d   ^ R	IHp	 T	! TR
R7       RT 2u Rp?# Rp?ii ; i)z?Apply side effects that must also hit the gateway's live agent.r  Nr    r   Úcompactr  r   Ú_manual_compress_activer!  Fr8  zlive session sync failed: )r  Úsplitr˜   rK   r"   Ú_MUTATES_WHILE_RUNNINGr!   rŸ  Úbusy_messager  Ú_SLASH_MIRRORSr+   ÚCompressionBusyr   r/   r=  r"  )
r   r   r:   Úpartsrä   r   r   rÝ   rM  r"  s
   &&&       r   r  r    sB  € à�N‰N˜3Ó×%Ñ% d¨AÓ.€EßÙØ˜Q•x´c¸%³jÀ1´n %¨¥(§.¡.Ô"2È"ÈwÏ{É{Ð[bÓOcˆu€DØˆyÔØˆØÔ%Ô%Ü% g×.Ò.Ü& s°TÓCÀAÕFÐFØ�;‰;�y×!Ò!Ü ¤d¨7¯;©;Ð7PÓ+QÓ&RÓSÐSÜ ×$Ñ$ TÓ*Ð*ˆÒ3Ùð0ô ,¨G×4Õ4Ù˜#¨Ó3×9Ð9°r÷ 5×4×4Ó4ûäô Ü�1‹v�ûÜô 0Ø�:Ô§%ÝgÙ<¸UÈeÕTØ+¨A¨3Ð/Õ/ûð	0úsZ   Ã=E ÄD.Ä#
E Ä.D?	Ä9E Ä?E ÅFÅ
EÅFÅFÅ*FÅ+FÅ:FÆFÆFc               ó   € V ^8„  d   QhRR/# rS  r   )r   s   "r   r   r   #  s   € ÷ 0ñ 0˜ñ 0r   c                ó2   € \        \        4       V RR7       R# )zQPublish this module's helpers + handlers onto ``server``, rebound to its globals.)ÚskipN)Ú_)r   Úglobals)Úservers   &r   Úregisterr°  #  s   € ä”“	˜6¨×/r   >   r   r   r   )Nz?Screen clear is terminal-only; desktop/TUI chat left unchanged.)Nz]Use /model to view or switch the current model; desktop users can also open the model picker.)Nz)Use /title <name> to rename this session.)Nz3Use /reasoning <effort> to change reasoning effort.>   r”   r  r  )(Ú__doc__Ú
__future__r   r#   Ú
method_ctxr   r   Ú	_registryÚ	frozensetr  r  rt   Ú	_NO_AGENTr5   rW   rl   rv   rq   r¤   r¹   rß   rî   rû   rþ   r  r  r  r¥  rQ  rX  rb  rm  ro  rt  r{  rƒ  r§  rŸ  r  r°  r   r   r   Ú<module>r·     sÇ  ðñõ #ã ç 4áÓ€	ñ #,Ò,HÓ"IÐ ñ & y kÓ2Ð àB€Ø6€	õ#3õL:õzõ,Tõõ:	õõ"DõNdõ	*õNõ?ð Ð2ÙoðqàˆoÐ8Ð9ØˆtÐ/Ð0ØÐ.Ð0KÐLØˆtÐ/Ð0ØˆtÐ/Ð0ØÐ:Ð<WÐXØÐ#Ð%>Ð?Ø
ˆTÐ+Ð,ØÐVØÐuØÐAØÐKðMÐ õ"<ñ8 #Ò#GÓHÐ õ2[õj!õ
Gð �z 4¨°X¸tÀUÈDÐRXÐZ`ÐbhÐjpØ˜K¨°+ð?€õBõ!õ
3õð ñ \àÐ" MÐ3FØñ hà
ˆLØÐ$ f¨lØÐ"ð$€õ.õ40÷:0r   