+
    jHàj°E  ã                   óN  € R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RIH	t	 ]
! 0 R"m4      tR#t]
! 0 R$m4      tR%tRRRRR	RRR
RR
RR
/t]P                   ! 4       tR tR tR tR tR tR tR tR tR tR tR t]
! 0 R&m4      t]
! RR04      tR tR t R t!R t"R t#R t$R  t%R! t&R# )'aÍ  Owner ``config.set`` for the TUI's profile preferences.

Main served these from the per-TUI sidecar (``tui_gateway/methods_config_set.py``); on the shared
owner they write the OWNING profile's config.yaml (raw round-trip, off-loop, under its runtime
scope) with main's per-key semantics. The session controls (busy/verbose/yolo/show_reasoning/
service_tier, the refused ``model``) stay in ``gateway.session_busy_controls``; any other key is
``invalid_params``.
N)Úpartial)ÚPath)ÚRuntimeStoreErrorÚoffÚonTÚtrueÚyesFÚfalseÚnoc                 ó&   € R \        \        V 4      /# )z
config.set)r   Ú
config_set)Ú
connections   &Ú?/home/ubuntu/.hermes/hermes-agent/gateway/session_tui_config.pyÚhandlersr      s   € Øœ'¤*¨jÓ9Ð:Ð:ó    c                 ó\   € V f   RM
\        V 4      P                  4       P                  4       # )NÚ )ÚstrÚstripÚlower©Úvalues   &r   Ú_wordr      s$   € Ø’-‰B¤S¨£Z×6Ñ6Ó8×>Ñ>Ó@Ð@r   c                 óÌ   € V R J d   R# \        V \        4      '       dF   V P                  4       P                  4       \        9   d   V P                  4       P                  4       # R# )Fr   Útop)Ú
isinstancer   r   r   Ú_STATUSBAR_MODES)Úraws   &r   Ú
_statusbarr   !   sX   € Ø˜5“Lˆ5ð UÜ�3œ×Ò §¡£×!2Ñ!2Ó!4Ô8HÔ!Hð '*§i¡i£k×&7Ñ&7Ó&9ð UØOTðUr   c                 óÌ   a€ ^ RI Hp Ho R pRRRRRR/R	 V3R
R
\        R V3RR\        R V3RRRR/\         Uu/ uF  q"VbK  	  upCR \
        3RRV V3R l\
        3/# u upi )zZkey -> (display field, word -> value, flipped(display), report(value)); '' / toggle flips.)Ú_MOUSE_TRACKING_ALIASESÚ_display_mouse_trackingc                 ó   € V '       d   R # R# )r   r   © r   s   &r   Úon_offÚ_toggles.<locals>.on_off*   s   € ßˆtÐ' %Ð'r   ÚdensityÚtui_compactr   Tr   Fc                 óB   € \        V P                  R R4      4      '       * # )r'   F©ÚboolÚget©Úds   &r   Ú<lambda>Ú_toggles.<locals>.<lambda>/   s   € ¤$ q§u¡u¨]¸EÓ'BÓ"CÕCr   Úbatteryc                 óB   € \        V P                  R R4      4      '       * # )r0   Fr)   r,   s   &r   r.   r/   0   s   € ¼$¸q¿u¹uÀYÐPUÓ?VÓ:WÕ6Wr   Ú
timestampsc                 óB   € \        V P                  R R4      4      '       * # )r2   Fr)   r,   s   &r   r.   r/   2   s   € ÄÀQÇUÁUÈ<ÐY^ÓE_Ó@`Õ<`r   Ú	statusbarÚtui_statusbarr   c                 óJ   € \        V P                  R R4      4      R8X  d   R# R# )r5   r   r   )r   r+   r,   s   &r   r.   r/   4   s%   € ¬°A·E±E¸/È5Ó4QÓ)RÐV[Ô)[ Ð fÐafÐ fr   ÚmouseÚmouse_trackingc                 ó&   <€ S! V 4      R 8X  d   R# R # )r   Úallr#   )r-   r!   s   &€r   r.   r/   6   s   ø€ Ñ%<¸QÓ%?À5Ô%H˜EÐSÈeÐSr   )Útui_gateway.agent_factoryr    r!   Ú_BOOL_WORDSr   r   )r    r$   Úmr!   s      @r   Ú_togglesr>   &   s    ø€ çZò(ð 	�M D¨$°°uÐ#=ÙCÀVðMà�Iœ{Ñ,WÐY_Ð`à�|¤[Ñ2`ÐbhÐiØ�o¨¨eÐ'XÕFVÓ7WÑFVÀ¸1ºÑFVÑ7WÐ'XÙfÔhkðmàÐ"Ð$;ÜSÔUXðZð	[ð 	[ùò 8Xs   »A!c                 óJ   € ^ RI Hp  RR\        0 Rm4      3RR\        V 4      3/# )z'key -> (display field, accepted words).©ÚINDICATOR_STYLESÚthemeÚ	tui_themeÚ	indicatorÚtui_status_indicator>   ÚautoÚdarkÚlight)Úhermes_constantsrA   Ú	frozensetr@   s    r   Ú_wordsrK   9   s2   € å1Ø�k¤9Ò-FÓ#GÐHØÐ0´)Ð<LÓ2MÐNðPð Pr   c                 óh   € \        V P                  R 4      \        4      '       g   / V R &   V R ,          # ©Údisplay©r   r+   Údict)Úcfgs   &r   Ú_displayrR   @   s+   € Ü�c—g‘g˜iÓ(¬$×/Ò/ØˆˆI‰Øˆy�>Ðr   c                 óh   € \        V P                  R 4      \        4      '       g   / V R &   V R ,          # )ÚsectionsrO   rM   s   &r   Ú	_sectionsrU   F   s-   € Ü�g—k‘k *Ó-¬t×4Ò4Ø ˆ�
ÑØ�:ÕÐr   c                ó  € \        V 4      \        V4      rCV\        4       ;p9   dI   WQ,          w  rgr‰VR	9   d	   V! V4      MVP                  V4      p
V
f   \	        R4      hW£V&   RV	! V
4      /# V\        4       ;p9   d$   W±,          w  rlWL9  d   \	        R4      hWCV&   RV/# VR8X  dQ   V\        9  d   \	        R4      hWCR&   \        V4      P                  \        P                  \        V4      4       RV/# VP                  R4      '       d|   VP                  R^4      ^,          pV\        9  g   V'       d   V\        9  d   \	        R4      hV'       d   V\        V4      V&   RV/# \        V4      P                  VR4       RV/# VR8X  d   \        W44      # VR8X  d]   \!        V\"        4      '       d   VP%                  4       '       g   \	        R4      hVP%                  4       VR&   RVP%                  4       /# \	        R4      h)
zVOne display preference on the raw config, main's semantics; returns the result extras.NÚinvalid_paramsr   Údetails_modezdetails_mode.Ú.ÚfocusÚskin©r   Útoggle)rR   r   r>   r+   r   rK   Ú_DETAIL_MODESrU   ÚupdaterP   ÚfromkeysÚ_DETAIL_SECTIONSÚ
startswithÚsplitÚpopÚ
_set_focusr   r   r   )rQ   Úkeyr   rN   r   ÚtogglesÚfieldÚaliasesÚflippedÚreportÚnewÚwordsÚallowedÚsections   &&&           r   Ú_set_displayrp   L   sà  € ä˜C“=¤%¨£,ˆSØ
œ(›*Ð$ˆwÔ%Ø*1­,Ñ'ˆ˜Ø"%¨Ô"7‰g�gÔ¸W¿[¹[ÈÓ=MˆØŠ;Ü#Ð$4Ó5Ð5Ø�‰Ø™ ›Ð%Ð%Ø
œ›Ð ˆuÔ!Ø�‰ˆØÔÜ#Ð$4Ó5Ð5Ø�‰Ø˜ˆ~ÐØ
ˆnÔØ”mÔ#Ü#Ð$4Ó5Ð5Ø"%�ÑÜ�'Ó×!Ñ!¤$§-¡-Ô0@À#Ó"FÔGØ˜ˆ~ÐØ
‡~�~�o×&Ò&Ø—)‘)˜C Ó# AÕ&ˆØÔ*Ô*¯s°sÄ-Ô7OÜ#Ð$4Ó5Ð5ßØ*-ŒI�gÓ˜wÑ'ð ˜ˆ~Ðô �gÓ×"Ñ" 7¨DÔ1Ø˜ˆ~ÐØ
ˆg„~Ü˜'Ó'Ð'Ø
ˆf„}Ü˜%¤×%Ò%¨U¯[©[¯]ª]Ü#Ð$4Ó5Ð5ØŸ+™+›-ˆ�‰Ø˜Ÿ™›Ð'Ð'Ü
Ð,Ó
-Ð-r   c                óò  € ^ RI HpHpHp \	        V P                  RR4      4      pV! V P                  RR4      4      pV! W4      w  rxVR8X  d   \        R4      hVR8X  g   Vf   R	V'       d   R
RV/# RRV/# V'       d2   T! T;'       d    V P                  R4      ;'       g    T4      V R&   Tp	M!T! V P                  R4      ;'       g    R4      p	V	\	        V4      uV R&   V R&   R	V'       d   R
RV	/# RRV	/# )zU/focus on stashes the configured tool-progress mode and pins it off; off restores it.)ÚFOCUS_TOOL_PROGRESS_MODEÚnormalize_tool_progress_modeÚresolve_focus_argÚ
focus_viewFÚtool_progressr:   ÚusagerW   Ústatusr   r   r   Úfocus_saved_tool_progress)Úhermes_cli.focus_viewrr   rs   rt   r*   r+   r   )
rN   r   rr   rs   rt   ÚcurrentÚ
configuredÚactionÚtargetÚ	effectives
   &&        r   re   re   u   s  € çoÑoÜ�7—;‘;˜|¨UÓ3Ó4€GÙ-¨g¯k©k¸/È5Ó.QÓR€JÙ& sÓ4�N€FØ�ÔÜÐ 0Ó1Ð1Ø�Ô˜Vš^Ø§˜°_ÀjÐQÐQ¨e°_ÀjÐQÐQßÙ/KØ×AÐA˜Ÿ™Ð%@ÓA×PÐPÀjó0RˆÐ+Ñ,à,‰	á0°·±Ð=XÓ1Y×1bÐ1bÐ]bÓcˆ	Ø6?ÄÀfÃÐ3€GˆOÑ˜g lÑ3ØŸV�T°ÀÐKÐK¨°ÀÐKÐKr   c           	     ó   € ^ RI Hp ^ RIHpHpHp V! \        V P                  P                  4      4      ;_uu_ 4        \        ;_uu_ 4        V! 4       p V! V4      p\        P                  ! T4      p	T! T4      p
Yy8w  d
    T! Yg4       T
uuRRR4       uuRRR4       #   \         d   p\        R4      ThRp?ii ; i  \         d   p\        R4      ThRp?ii ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)z›``edit(raw_cfg)`` on the owning profile's config.yaml EXACTLY as written (no defaults or
overlay persisted); saved only when it changed. Runs off the loop.©Ú_profile_runtime_scope)Úatomic_config_replaceÚget_config_pathÚread_user_config_rawÚstorage_unavailableN)Úgateway.runr‚   Úhermes_cli.configrƒ   r„   r…   r   Ú	authorityÚ
profile_idÚ_WRITE_LOCKÚ	Exceptionr   ÚcopyÚdeepcopy)r   Úeditr‚   rƒ   r„   r…   ÚpathrQ   ÚexcÚbeforeÚresults   &&         r   Ú_write_profile_configr”   ‰   sß   € õ 3ß^Ñ^Ù	¤ Z×%9Ñ%9×%DÑ%DÓ E×	FÕ	FÏÎÙÓ ˆð	DÙ& tÓ,ˆCô —’˜sÓ#ˆÙ�c“ˆØŒ=ðHÙ% dÔ0ð ÷ ITÉ×	FÒ	Føô ô 	DÜ#Ð$9Ó:ÀÐCûð	Dûô ô HÜ'Ð(=Ó>ÀCÐGûðHú÷ ITÏú×	F×	F×	FÒ	Fúsk   ¾C<ÁC	ÁB!Á$C	ÂC ÂC	Â
C<Â!B=Â,B8Â8B=Â=C	Ã CÃCÃCÃC	ÃC/Ã*C<Ã<D	c                óp   € ^ RI Hp V! WV4      pRV P                  P                  9  d   \	        R4      hV# )zWProfile-level like ``config.get`` (a session is optional), plus the control capability.)Ú
_authorizeúsession:controlÚpermission_denied)Úgateway.session_configr–   ÚactorÚcapabilitiesr   )r   ÚrefÚparamsr–   Úpolicys   &&&  r   Ú_authorize_writerŸ   ž   s6   € å1Ù˜
¨Ó0€FØ 
× 0Ñ 0× =Ñ =Ô=ÜÐ 3Ó4Ð4Ø€Mr   Úchainedzgpt-livec              ƒ   ó<  aa"  € VP                  R 4      oSR8X  g   SR8X  d   RV9   d   \        WV4      G Rj  x€L
 # S\        9   g   \        S\        4      '       g   ^ RIHp V! WVRR7      G Rj  x€L
 # \        V4      0 Rm,
          '       d   \        R	4      h\        WV4      pVP                  R4      oSR
8X  d   \        WVS4      G Rj  x€L
 # SR8X  d%   \        P                  ! \        V S4      G Rj  x€L
 # SR9   d%   \        P                  ! \        V S4      G Rj  x€L
 # S\        9   g   SR8X  d.   R S/\        P                  ! \         V VV3R l4      G Rj  x€L
 C# \        P                  ! \         V VV3R l4      G Rj  x€L
 pSR8X  dM   VP"                  '       d;   RV9   d4   VR,          V P$                  P&                  VP"                  ,          n        SR8X  d   \+        V 4      G Rj  x€L
  R S/VC#  ELÎ EL— EL< EL Lë L¯ L‡ L5i)rf   Ú	reasoningÚyoloÚscopeN)Úbusy_configT)Úwriter   rW   ÚfastÚpersonalityúvoice.voice_chat_modec                 ó   <€ \        V SS4      # ©N)Ú_set_profile_leaf©rQ   rf   r   s   &€€r   r.   Úconfig_set.<locals>.<lambda>À   s   ø€ ÔBSÐTWÐY\Ð^cÔBdr   c                 ó   <€ \        V SS4      # r«   )rp   r­   s   &€€r   r.   r®   Â   s   ø€ ´¸cÀ3ÈÔ1Nr   rZ   rv   r[   >   rf   r   ÚprofileÚ
session_id)úapprovals.modeÚapproval_mode)r+   Ú_set_command_settingÚ_SESSION_CONTROL_KEYSr   r   Úgateway.session_busy_controlsr¥   Úsetr   rŸ   Ú	_set_fastÚasyncioÚ	to_threadÚ_set_personalityÚ_set_approval_modeÚ_DISPLAY_TOGGLE_KEYSr”   r±   r‰   ÚsessionsÚtool_progress_modeÚ_broadcast_skin)r   rœ   r�   r¥   rž   r“   rf   r   s   &&&   @@r   r   r   ­   sÞ  ùé € Ø
�*‰*�UÓ
€CØ
ˆkÔ˜c Vœm°¸6Ô0AÜ)¨*¸6ÓB×BÐBØ
Ô#Ô#¬:°c¼3×+?Ò+?Ý=Ù  °&ÀÔE×EÐEÜ
ˆ6ƒ{Ò>×>Ô>ÜÐ 0Ó1Ð1Ü˜j¨vÓ6€FØ�J‰J�wÓ€EØ
ˆf„}Ü˜z°¸Ó>×>Ð>Ø
ˆmÔÜ×&Ò&Ô'7¸ÀUÓK×KÐKØ
Ð1Ô1Ü×&Ò&Ô'9¸:ÀuÓM×MÐMØ
Ô"Ô" cÐ-DÔ&DØ�sð g¤G×$5Ò$5Ô6KÈZÝ6dó%f÷ fð gð 	gä×$Ò$Ô%:¸JÝ%NóP÷ P€Fà
ˆg„~˜#Ÿ.Ÿ.˜.¨_ÀÔ-FàKQÐRaÕKbˆ
×Ñ×%Ñ% c§n¡nÕ5ÔHØ
ˆf„}Ü˜jÓ)×)Ð)Ø�3Ð!˜&Ð!Ð!ò1 Cò Fò ?âKáMñfñPñ 	*ùs•   „6HºH»9HÁ4HÁ5AHÃHÃ*HÃ=HÃ>*HÄ(HÄ)=HÅ&HÅ')HÆHÆHÆ.AHÇ=HÇ>HÈHÈHÈHÈHÈHÈHÈHc              ƒ  ó*  a "  € V 3R lp\         P                  ! V4      G Rj  x€L
 p\        S P                  P                  P                  4       4       F6  w  r4VP                  '       g   K  VP                  P                  W2RR7       K8  	  R#  Lm5i)zWMain repainted every surface of the profile: ``skin.changed`` on each attached session.c                  ó>  <€ ^ RI p ^ RIHp ^ RIHp ^ RIHp V! \        SP                  P                  4      4      ;_uu_ 4        V! V! 4       4      pRRR4       V P                  P                  R4      ;pe   VP                  4        X#   + '       g   i     LA; i)é    Nr�   ©Úload_config)Úskin_payloadztui_gateway.server)Úsysr‡   r‚   rˆ   rÅ   Útui_gateway.change_watcherrÆ   r   r‰   rŠ   Úmodulesr+   Ú_note_skin_broadcast)rÇ   r‚   rÅ   rÆ   ÚpayloadÚserverr   s         €r   ÚresolveÚ _broadcast_skin.<locals>.resolveÍ   sq   ø€ ÛÝ6Ý1Ý;Ù#¤D¨×)=Ñ)=×)HÑ)HÓ$I×JÕJÙ"¡;£=Ó1ˆG÷ Kà—k‘k—o‘oÐ&:Ó;Ð;ˆFÒHØ×'Ñ'Ô)Øˆ÷	 K×Jús   ÁBÂB	Nzskin.changed)Ú
event_type)	r¹   rº   Úlistr‰   r¾   ÚitemsÚsubscribersÚevent_streamÚpublish)r   rÍ   rË   r±   Úlives   f    r   rÀ   rÀ   Ë   sr   øé € õ	ô ×%Ò% gÓ.×.€GÜ  ×!5Ñ!5×!>Ñ!>×!DÑ!DÓ!FÖGÑˆ
Ø××ÒØ×Ñ×%Ñ% jÀnÐ%ÖUó Hñ /ùs   ƒ B£B¤ABÁ.$Bc                ó  € V P                   P                  V P                   P                  VP                  ,          rCVe   VP	                  W4P
                  4      # VP                  VP                  VP
                  R7      # )z\The tier this session's next turn runs: its /fast pin, else its policy's (or the profile's).)ÚsourceÚsession_key)r‰   Úrunnerr¾   r±   Úcurrent_service_tierÚrouteÚ_resolve_session_service_tierr×   )r   rœ   rž   rÙ   rÕ   s   &&&  r   Úcurrent_tierrÝ   Ý   sf   € à×'Ñ'×.Ñ.°
×0DÑ0D×0MÑ0MÈcÏnÉnÕ0]ˆDØÒØ×*Ñ*¨6·:±:Ó>Ð>Ø×/Ñ/°t·{±{ÐPT×PZÑPZÐ/Ó[Ð[r   c              ƒ  óÎ  a
aaaa"  € ^ RI HpHpHp VP                  '       g   \        R4      h\        V4      \        WV4      r‡VR8X  d   RRRV! V4      /# VR9   d   W„9   d   RMRp V! V4      ;'       g    RoST9   då   T P                  P                  T4      o
\        S
R	R4      ;'       g&    T'       d   TP                  T P                  4      MRo\        S
R
R4      ;'       g    T'       d   TP                  MRo\        S
RR4      ;'       g    T'       d   TP                  MRoT
TTTT3R lp	\        P                   ! T	4      G Rj  x€L
 '       g   \        R4      hT P                  P"                  P%                  T P                  P&                  TP                  ,          P(                  S4       RRRT! S4      /#   \         d    \        R4      Rhi ; i L‘5i)aw  Session-scoped /fast like main's: validated against the session's route, never config.yaml.
The words parse through the shared tier table (``parse_exact_service_tier``, as the classic CLI's
``config.set service_tier`` does); the pin is the same per-session override the next turn reads
(``current_service_tier``). TUI-only on top: ``toggle`` / ``status`` and the route check.)ÚSTATIC_TIERSÚparse_exact_service_tierÚservice_tier_wordrW   rx   rf   r§   r   ÚnormalNÚmodelÚproviderÚbase_urlc            
      ó¨   <€ ^ RI Hp  ^ RIHp S'       d   T! SSSSR8X  d   SMRR7       f   R# SR8g  ;'       g    V ! SSS\	        SRR4      R7      # )	rÃ   )Úultrafast_offered)Úresolve_fast_mode_overridesÚ	ultrafastN)rä   rå   ÚtierFÚapi_key)rä   rå   Úaccess_token)Úagent.codex_service_tiersrç   Úhermes_cli.modelsrè   Úgetattr)rç   rè   Úagentrå   rã   rä   rê   s     €€€€€r   ÚofferedÚ_set_fast.<locals>.offeredü   sn   ø€ ÝCÝEßÑ7¸ÈÐ[cØEIÈ[ÔEX¹TÐ^bôdØgkòláØ˜;Ñ&÷ jð jÑ*;¸EÈHÐ_gÜIPÐQVÐXaÐcgÓIhô+jð jr   Úfast_unavailabler\   )Úagent.fast_moderß   rà   rá   r±   r   r   rÝ   Ú
ValueErrorr‰   rð   rï   Úcurrent_modelrä   rå   r¹   rº   rÙ   Ú"_set_session_service_tier_overrider¾   rÛ   )r   rœ   rž   r   rß   rà   rá   r   r{   rñ   rð   rå   rã   rä   rê   s   &&&&      @@@@@r   r¸   r¸   å   sª  üé € ÷
 ZÑYØ�>�>ˆ>ÜÐ 0Ó1Ð1Ü˜“<¤¨j¸vÓ!FˆØ
ˆh„Ø�v˜wÑ(9¸'Ó(BÐCÐCØ
ˆnÔØ!Ô1‰h°vˆð<Ù'¨Ó,×4Ð4°ˆð ˆ|ÔØ×$Ñ$×*Ñ*¨3Ó/ˆÜ˜˜w¨Ó-×qÐq×`f°&×2FÑ2FÀz×G[ÑG[Ô2\ÐlpˆÜ˜5 *¨dÓ3×\Ð\Ï6¸¿ºÐW[ˆÜ˜5 *¨dÓ3×\Ð\Ï6¸¿ºÐW[ˆ÷	jñ 	jô ×&Ò& wÓ/×/Ö/Ü#Ð$6Ó7Ð7Ø×Ñ×Ñ×BÑBØ×Ñ×%Ñ% c§n¡nÕ5×;Ñ;¸TôCà�6˜7Ñ$5°dÓ$;Ð<Ð<øô) ô <ÜÐ 0Ó1°tÐ;ð<úñ  0ùs[   ‡A"G%Á*G Á9G Á<5G%Â2G%Â;0G%Ã,G%Ã5!G%ÄG%Ä 1G%ÅG#Å	G%ÅA,G%ÇG Ç G%c           
     ó   € ^ RI Hp ^ RIHp ^ RIHpHp V! \        V P                  P                  4      4      ;_uu_ 4        \        ;_uu_ 4         T! \        T;'       g    R4      V! 4       4      w  rgT! T4      '       g   \        R4      h RRR4       RRR4       RR	R
\        T;'       g    R4      RR/#   \         d   p\        R4      ThRp?ii ; i  + '       g   i     LR; i  + '       g   i     L]; i)a  Main's /personality: validated against the profile's personalities and persisted through
``hermes_cli.personality`` (the only sanctioned write). Every next turn of the profile's sessions
resolves its ephemeral prompt from that config, and the changed prompt rebuilds the cached agent.r�   rÄ   )Úpersist_personalityÚresolve_personalityr   Úunknown_personalityNr†   rf   r¨   r   ÚnoneÚhistory_resetF)r‡   r‚   rˆ   rÅ   Úhermes_cli.personalityrù   rú   r   r‰   rŠ   r‹   r   rõ   r   )	r   r   r‚   rÅ   rù   rú   ÚnameÚ_promptr‘   s	   &&       r   r»   r»     sÊ   € õ 3Ý-ßOÙ	¤ Z×%9Ñ%9×%DÑ%DÓ E×	FÕ	FÏÎð	DÙ/´°E·K°K¸RÓ0@Á+Ã-ÓP‰MˆDñ # 4×(Ò(Ü#Ð$9Ó:Ð:ð )÷ IT×	Fð �= '¬3¨u¯¨¸Ó+?ÀÐRWÐXÐXøô	 ô 	DÜ#Ð$9Ó:ÀÐCûð	Dú÷ ITÏú×	F×	FúsN   ÁC-ÁC	Á#B;Á6C	ÂC	ÂC-Â;CÃCÃCÃC	ÃC*Ã%C-Ã-C=	c                 óV  € VP                  R ^4      w  r4VR8X  d#   \        V4      pV\        9  d   \        R4      hM5/ \        CRRRR/CP                  \        V4      4      pVf   \        R4      h\        V P                  V4      \        4      '       g   / W&   WPV,          V&   RV/# )rY   r©   rW   Ú1TÚ0Fr   )rc   r   Ú_VOICE_CHAT_MODESr   r<   r+   r   rP   )rQ   rf   r   ro   Úleafrl   s   &&&   r   r¬   r¬     sª   € Ø—I‘I˜c 1Ó%�M€GØ
Ð%Ô%Ü�E‹lˆØÔ'Ô'Ü#Ð$4Ó5Ð5ð (ð 5”Ð4˜c 4¨¨eÑ4×8Ñ8¼¸u»ÓFˆØŠ;Ü#Ð$4Ó5Ð5Ü�c—g‘g˜gÓ&¬×-Ò-Øˆ‰Øˆ…L�ÑØ�Sˆ>Ðr   c           	     ó¼  € ^ RI Hp ^ RIHp V! \	        V P
                  P                  4      4      ;_uu_ 4        \        ;_uu_ 4        T! \        V4      ;'       g    R4      pRRR4       RRR4       XP                  '       g"   \        \        V4      R	9  d   R4      hR4      hRRRVP                  /#   + '       g   i     L[; i  + '       g   i     Lf; i)
zR``/approvals <mode>``'s own write (``hermes_cli.approval_mode``) for this profile.r�   )Úrun_approval_mode_commandNrW   r†   rf   r²   r   )ÚmanualÚsmartr   )r‡   r‚   Úhermes_cli.approval_moder  r   r‰   rŠ   r‹   r   Úokr   Úmode)r   r   r‚   r  r“   s   &&   r   r¼   r¼   ,  sŸ   € å2ÝBÙ	¤ Z×%9Ñ%9×%DÑ%DÓ E×	FÕ	FÏÎÙ*¬5°«<×+?Ð+?¸4Ó@ˆ÷ IT×	Fà�9�9ˆ9Ü´E¸%³LÐHbÔ4bÐ 0ó <ð 	<Ø%:ó<ð 	<àÐ# W¨f¯k©kÐ:Ð:÷ ITÏú×	F×	Fús#   ºCÁ	B8	Á%CÂ8CÃCÃC	c              ƒ  ó¶  a aaaaaa"  € \        V4      0 Rm,
          '       g*   VP                  '       d   VP                  RR4      R9  d   \        R4      h\	        S W4       S P
                  P                  S P                  VR4       \        VP                  R4      4      VP                  RR4      uooVR,          R8X  d‚   SR8w  d   \        R4      h/ \        CR	R
RR/CP                  S4      oSf   SR9  d   \        R4      hV V3R lp\        P                  ! V4      G Rj  x€L
 w  rERRRV'       d   R	RR/# RRR/# S'       g   \        R4      h^ RIHo ^ RIHp ^ RIHp SV9  d   SR8w  d   V! S4      f   \        R4      hS P
                  P$                  VP                  ,          S P
                  P&                  uoo^ RIHp V! S P
                  S P                  VSSR8H  4      G Rj  x€L
  VV VVVV3R lp	\        P                  ! V	4      G Rj  x€L
  VP                  S4      p
V
e   V
'       d   RMRMSpRRRVRS/#  EL' L[ L45i)a8  ``config.set`` for a setting a slash command owns: the same handler code, so the picker, the
keybind and the typed command agree. ``reasoning`` is ``/reasoning`` (``scope=global`` =
``--global``; show/hide/reset/levels), ``yolo`` with ``scope=global`` is main's Shift+click zap
(``approvals.mode`` off / manual).rf   r   r¤   ÚsessionÚglobalrW   r—   r£   r  Tr  FNc                  ó  <€ ^ RI Hp  ^ RIHp V! \	        SP
                  P                  4      4      ;_uu_ 4        Sf   V ! 4       R8g  MSpRRR4       X\        SV'       d   R4      3# R4      3#   + '       g   i     L-; i)rÃ   )Ú_get_approval_moder�   Nr   r  )Útools.approval_contextr  r‡   r‚   r   r‰   rŠ   r¼   )r  r‚   Úenabler   r   s      €€r   ÚflipÚ"_set_command_setting.<locals>.flipJ  si   ø€ ÝAÝ:Ù'¬¨Z×-AÑ-A×-LÑ-LÓ(M×NÕNØ<>ºJÑ,Ó.°%Ò7ÈB�÷ OàÔ-¨jÇ6¸%ÓXÐXÐXÈxÓXÐXÐX÷ O×Nús   »A1Á1B	r�   )Úparse_reasoning_effort)Ú_REASONING_DISPLAY_TOGGLESÚreset)Úcommit_reasoning_commandc            	      óà   <€ S ! \        SP                  P                  4      4      ;_uu_ 4        SP                  SP                  R SSR8H  R7      uuRRR4       #   + '       g   i     R# ; i)Úclir  )Úpersist_globalN)r   r‰   rŠ   Ú_apply_reasoning_selectionrÛ   )r‚   r   rÕ   rÙ   r¤   r   s   €€€€€€r   ÚapplyÚ#_set_command_setting.<locals>.apply]  sQ   ø€ Ù#¤D¨×)=Ñ)=×)HÑ)HÓ$I×JÕJØ×4Ñ4°T·Z±ZÀÈÐ^cÐgoÑ^oÐ4Óp÷ K×J×JÓJús   ¯"AÁA-	ÚshowÚhider¢   >   rf   r¤   r   r°   r±   )r  r  r\   )r·   r±   r+   r   rŸ   r‰   Ú	authorizerš   r   r<   r¹   rº   r‡   r‚   rI   r  Úgateway.slash_commands_modelr  r¾   rÙ   Ú gateway.session_setting_commandsr  )r   rœ   r�   r  r  Ú_r  r  r  r  r   Úreportedr‚   rÕ   r   rÙ   r¤   r   s   f&&         @@@@@@r   r´   r´   8  s%  þé € ô
 	ˆF‹ÒH×HÔHÐPS×P^×P^ÐP^Ø�z‰z˜' 9Ó-Ð5JÔJÜÐ 0Ó1Ð1Ü�Z Ô-Ø×Ñ×"Ñ" :×#3Ñ#3°SÐ:KÔLÜ˜Ÿ™ GÓ,Ó-¨v¯z©z¸'À9Ó/M€L€Eˆ5Øˆe…}˜ÔØ�HÔÜ#Ð$4Ó5Ð5Ø3”Ð3˜S $¨¨UÑ3×7Ñ7¸Ó>ˆØŠ:˜% ~Ô5Ü#Ð$4Ó5Ð5ö	Yô "×+Ò+¨DÓ1×1‰	ˆØ�v˜w¯v¨ÀÈÐRÐR¸3ÀÈÐRÐRßÜÐ 0Ó1Ð1Ý2Ý7ÝGØÐ.Ô.°5¸GÔ3CÑH^Ð_dÓHeÒHmÜÐ 0Ó1Ð1Ø×'Ñ'×0Ñ0°·±Õ@À*×BVÑBV×B]ÑB]€L€Dˆ&ÝIÙ
" :×#7Ñ#7¸×9IÑ9IÈ3ÐPUÐW\Ð`hÑWhÓ
i×iÐi÷qò qô ×
Ò
˜EÓ
"×"Ð"Ø%×)Ñ)¨%Ó0€DØ/3Ò/?Ÿ$‘¡FÀU€HØ�; ¨°7¸EÐBÐBò' 2ñ jñ
 #ùsH   ‰,I¶C5IÄ+IÄ,"IÅB*IÇ9IÇ:(IÈ"IÈ# IÉIÉIÉI>   Úbusyr£   rã   ÚverboseÚservice_tierÚshow_reasoning)ÚthinkingÚtoolsÚ	subagentsÚactivity>   ÚhiddenÚexpandedÚ	collapsed)r   r   Úbottom>   údisplay.in_app_tipsúdisplay.in_app_toursúdisplay.message_reactions)'Ú__doc__r¹   r�   Ú	functoolsr   Úpathlibr   Ú	threadingÚhermes_state_runtimer   rJ   rµ   ra   r^   r   r<   ÚLockr‹   r   r   r   r>   rK   rR   rU   rp   re   r”   rŸ   r½   r  r   rÀ   rÝ   r¸   r»   r¬   r¼   r´   r#   r   r   Ú<module>r<     sõ   ðñó Û Ý Ý Û å 2á!Ò"hÓiÐ ØAÐ ÙÒ=Ó>€Ø+Ð Ø�T˜6 4¨°°e¸UÀGÈUÐTXÐZ_Ð`€Ø�nŠnÓ€ò;òAòUò
[ò&Pòòò&.òRLò(ò*ñ !Ò!mÓnÐ Ù˜y¨*Ð5Ó6Ð ò"ò<Vò$\ò#=òLYò"ò 	;ô+Cr   