+
    lHàja†  ã                  ó  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^RIHt / t	R]
R&   ]P                  ! 4       t/ tR]
R&   RtR	R
RRRR/tR R ltR R ltR R ltRFR R lltR R ltR R ltR R ltR R ltRGR R lltR  R! ltRFR" R# lltRFR$ R% lltR& R' ltRGR( R) lltR* R+ ltR, R- ltR. t R/ R0 lt!R1 R2 lt"R3 R4 lt#R5 R6 lt$]PJ                  R7 4       t&RHR8 R9 llt'R: R; lt(R< R= lt)R> R? lt*R@ RA lt+RB RC lt,RD RE lt-R# )Ia  Agent callback wiring: child-session live mirror, per-session agent callbacks, personality
overlay, background/preview agent kwargs, agent reset. Bodies are rebound onto server.py's
globals at install time (method_ctx.bind_module), so they reference server.py globals bare.)ÚannotationsN)Úbind_modulez"dict[tuple[str | None, str], dict]Ú_child_mirrorsz#dict[tuple[str | None, str], float]Ú_active_child_runsg      ¬@zsubagent.thinkingúreasoning.deltazsubagent.textzmessage.deltaúsubagent.startc               ó    € V ^8„  d   QhRRRR/# )é   Ú	child_keyÚstrÚreturnÚbool© )Úformats   "Ú@/home/ubuntu/.hermes/hermes-agent/tui_gateway/agent_callbacks.pyÚ__annotate__r       s   € ÷ Fñ F ð F°tñ Fó    c                ó²   € \         P                  V'       d   \        V4      MRV 34      pVRJ;'       d#    \        P                  4       V,
          \        8  # )zc``profile_home`` is the caller's resolved home (Path / str / None = launch profile), never omitted.N)r   Úgetr   ÚtimeÚ_CHILD_RUN_STALE_S)r
   Úprofile_homeÚtss   && r   Ú_child_run_activer       sC   € ä	×	Ñ	·l¤ \Ô!2ÈÈiÐ XÓ	Y€BØ�Tˆ>×EÐEœtŸy™y›{¨RÕ/Ô3EÑEÐEr   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   Ú
event_typer   ÚpayloadÚdictr   ÚNoner   )r   s   "r   r   r   &   s!   € ÷ 6*ñ 6*¨#ð 6*¸ð 6*Ètñ 6*r   c                óZ  € \        VP                  R 4      ;'       g    R4      pV'       g   R# V'       d   \        V4      MRV3pV R8X  d   \        P                  VR4       M\        P	                  4       \        V&   \        W4^ ,          4      pVe   V^,          P                  R4      e0   \        ;_uu_ 4        \        P                  VR4       RRR4       R# V^ ,          p\        VP                  R4      ;'       g    R4      p\        ;_uu_ 4        \        P                  VR^ RRRR	/4      pVR,          '       g   R
VR&   \        RV4       V \        9   d^   V'       dK   \        V ,          p	V	R8X  d   \        V4      '       g    RRR4       R# \        Y–RV R8X  d   V R2MT/4        RRR4       R# V R9  d    RRR4       R# VR,          '       d_   VR,          p
RVR&   \        V4      '       g4   \        \        V
P                  R4      ;'       g    R4      4      '       d   \        RWj4       V R8X  dÖ   VR;;,          ^,          uu&   \        VP                  R4      ;'       g    R4      pRVRRV RVR,           2R/ /p\        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      ;p'       d   WÜR&   \        V4      '       g   \        V4      '       g    RRR4       R# WÈR&   \        RWl4       Mb\        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      p\        RVRV/4       \        P                  VR4       RRR4       R#   + '       g   i     R# ; i  + '       g   i     R# ; i)Úchild_session_idÚ Núsubagent.completeÚagentÚtextÚseqÚ	open_toolÚstartedFTzmessage.startr   r   Ú
úsubagent.toolÚnameztool.completeÚ	tool_nameÚtoolÚtool_idz
submirror:Ú:ÚargsÚtool_previewÚpreviewz
tool.startÚsummaryzmessage.complete)r)   r"   )r   r   r   Úpopr   Ú_find_live_session_by_keyÚ_child_mirrors_lockr   Ú
setdefaultÚ_emitÚ_CHILD_DELTA_EVENTSÚ_session_show_reasoningÚ_tool_progress_enabledÚ_tool_lifecycle_required_for_ui)r   r   r   r
   ÚkeyÚliveÚcsidr$   ÚstÚmappedr&   r+   r,   r1   r2   s   &&&            r   Ú_mirror_subagent_to_childrA   &   s  € Ü�G—K‘KÐ 2Ó3×9Ð9°rÓ:€IßÙß ,Œ3ˆ|Ô°$¸	Ð
B€CàÐ(Ô(Ü×Ñ˜s DÕ)ä"&§)¡)£+Ô˜3Ñô % Y°AµÓ7€DØ‚|�t˜A•w—{‘{ 7Ó+Ò7ß Ö Ü×Ñ˜s DÔ)÷ !áØ��7€DÜˆw�{‰{˜6Ó"×(Ð( bÓ)€Dß	Ö	Ü×&Ñ& s¨U°A°{ÀDÈ)ÐUZÐ,[Ó\ˆØ�)�}Œ}Ø ˆBˆy‰MÜ�/ 4Ô(àÔ,Ô,ßÜ,¨ZÕ8�ØÐ.Ô.Ô7NÈt×7TÒ7TØ÷ 
Ñ	ô �f V¸JÐJZÔ<Z°¨v°R©[Ð`dÐ$eÔfØ÷ 
Ñ	ð ÐCÔCØ÷ 
Ñ	ð ˆk�?Œ?Ø˜;�ˆIØ"ˆBˆ{‰OÜ% d×+Ò+Ô/NÌsÐS\×S`ÑS`ÐagÓSh×SnÐSnÐlnÓOo×/pÒ/pÜ�o tÔ7Ø˜Ô(Øˆu�I˜�N‹IÜ˜GŸK™K¨Ó4×>Ð>¸Ó?ˆIØ˜IØ ¨I¨;°a¸¸5½	°{ÐCÀVÈRðQˆDä˜gŸk™k¨.Ó9×VÐV¸W¿[¹[ÈÓ=P×VÐVÐTVÓWÐWˆwÖWØ")�Y‘Ü)¨$×/Ò/Ô8WÐXa×8bÒ8bØ÷9 
Ñ	ð: #ˆ{‰OÜ�, Õ+ä˜'Ÿ+™+ iÓ0×MÐM°G·K±KÀÓ4G×MÐMÈ2ÓNˆGÜÐ$ d¨V°WÐ,=Ô>Ü×Ñ˜s DÔ)÷E 
Ñ	÷ !Ö áú÷ 
×	Ð	úso   Â=NÄANÅ)&NÆNÆ>NÇNÇA NÈ NÈ1ANÉ68NÊ/NËNË'NÌ-NÌ6NÍ,NÎN	ÎN*	c               ó$   € V ^8„  d   QhRRRRRR/# )r	   Úsidr   Ú
diagnosticr   r   r   )r   s   "r   r   r   _   s&   € ÷ yñ y Sð y¸ð yÀ$ñ yr   c          
     óÎ  € ^ RI Hp \        ;_uu_ 4        \        P	                  V 4      pRRR4       \        X;'       g    / P	                  R4      RR4      '       d   R# V'       g   R# \        T;'       g    / 4      ;_uu_ 4        T! R\        T;'       g    / P	                  R4      RR4      4      uuRRR4       #   + '       g   i     L�; i  + '       g   i     R# ; i)	é    )Úwarning_notifications_enabledNr#   Ú_mute_notification_replyFTÚtuiÚ_notification_config)Úgateway.warning_notificationsrG   Ú_sessions_lockÚ	_sessionsr   ÚgetattrÚ_session_profile_runtime_scope)rC   rD   rG   Úsessions   &$  r   Ú_agent_presentation_enabledrQ   _   s�   € ÝKß	ŽÜ—-‘- Ó$ˆ÷ 
ô �—�˜2×"Ñ" 7Ó+Ð-GÈ×OÒOÙßÙÜ	'¨¯¨°2×	6Õ	6á,¨U´G¸W¿]¸]È×<OÑ<OÐPWÓ<XÐZpÐrvÓ4wÓx÷ 
7Ò	6÷ 
�ú÷ 
7×	6Ð	6ús   •C Â-CÃ C	ÃC$	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   rC   r   Úkindr$   ú
str | Noner   r   r   )r   s   "r   r   r   n   s.   € ÷ Hñ H˜cð H¨ð H°Jð HÈ$ñ Hr   c                ó¨   € ^ RI Hp \        Y! Ye   TMT4      R7      '       g   R# \        T \	        V4      Vf	   R4       R# \	        V4      4       R# )rF   ©Úis_warning_statusN©rD   )rK   rW   rQ   Ú_status_updater   )rC   rS   r$   rW   s   &&& r   Ú_agent_status_updaterZ   n   s@   € Ý?Ü& sÐ7HÈÒWgÉtÐmqÓ7r×sÓsÙÜ�3œ˜D›	¨4ª< 4ÖG¼SÀ»YÖGr   c               ó$   € V ^8„  d   QhRRRRRR/# ©r	   rC   r   r$   r   r   r   )r   s   "r   r   r   u   s!   € ÷ 1ñ 1 ð 1¨3ð 1°4ñ 1r   c                ól   € ^ RI Hp \        V \        W4      R7      '       g   R# \	        RV RV/4       R# )rF   )ÚDiagnosticTextrX   Nzthinking.deltar$   )rK   r^   rQ   Ú
isinstancer7   )rC   r$   r^   s   && r   Ú_agent_thinking_updater`   u   s-   € Ý<ô ' s´zÀ$Ó7W×XÓXÙÜ	Ð
˜C &¨$ Ö0r   c               ó    € V ^8„  d   QhRRRR/# )r	   rC   r   r   r   r   )r   s   "r   r   r   ~   s   € ÷ Iñ I˜cð I¨dñ Ir   c                óð   € ^ RI Hp \        W! V4      R7      '       g   R# \        RV RVP                  RVP
                  RVP                  RVP                  R	VP                  R
VP                  /4       R# )rF   )Úis_diagnostic_noticerX   Nznotification.showr$   ÚlevelrS   Úttl_msr<   Úid)
rK   rc   rQ   r7   r$   rd   rS   re   r<   rf   )rC   Únoticerc   s   && r   Ú_agent_notice_updaterh   ~   sa   € ÝBÜ& sÐ7KÈFÓ7S×TÓTÙÜ	Ð
˜sØ�6—;‘; ¨¯©°v¸v¿{¹{Ø�V—]‘] E¨6¯:©:°t¸V¿Y¹YðHöIr   c               ó$   € V ^8„  d   QhRRRRRR/# r\   r   )r   s   "r   r   r   ‡   s&   € ÷ jñ j˜sð j¨#ð j°$ñ jr   c                óx   € \        V 4      '       g   R # \        RT RV/\        V 4      '       d   RR/M/ C4       R # )Nr   r$   ÚverboseT)r9   r7   Ú_session_verbose)rC   r$   s   &&r   Ú_emit_reasoning_deltarm   ‡   s;   € Ü" 3×'Ò'ÙÜ	Ð
˜S 6¨4Ð"hÔIYÐZ]×I^ÒI^°YÀÑ4EÐdfÐ"hÖir   c               ó    € V ^8„  d   QhRRRR/# )r	   rC   r   r   r   r   )r   s   "r   r   r   �   s   € ÷ 2ñ 2�Cð 2˜Dñ 2r   c                ó’  a a€ ^ RI Ho R V 3R llp/ RV 3R lbRV 3R lbRV 3R	 lbR
R0V 3R llbRV 3R lbRV 3R lbRV 3R lbRV 3R lbRR1V 3R llbRV 3R lbRV 3R lbRV 3R lbRV! R^4      bRV! R^-4      bR V 3R! lbR"V 3R# lbR$V 3R% lbR&V 3R' lR(V V3R) lR*V 3R+ l/Cp\        4       '       d   R,R-/V 3R. llVR/&   V# )2rF   )Útheme_requestc               ó    € V ^8„  d   QhRRRR/# )r	   Úmethodr   ÚtimeoutÚintr   )r   s   "r   r   Ú _agent_cbs.<locals>.__annotate__‘   s   € ÷ ñ ˜Cð ¨#ñ r   c                ó   <a a€ RV VV3R ll# )Nc           
     ón   <€ \        SSR V 3RV33 UUu/ uF  w  r#Vf   K  W#bK  	  uppSR7      # u uppi )ÚstartÚcount©rs   ©Ú_ask)rx   ry   ÚkÚvrr   rC   rs   s   &&  €€€r   Ú<lambda>Ú1_agent_cbs.<locals>._read_block.<locals>.<lambda>”   s@   ø€ ¬dØ�C¨W°eÐ,<¸wÈÐ>NÑ+OÔaÑ+O¡4 1ÐSTœ$˜!š$Ñ+OÒaØõ/ùÛas   ”1¡1©NNr   )rr   rs   rC   s   ff€r   Ú_read_blockÚ_agent_cbs.<locals>._read_block‘   s   ú€ ÷ð ð 	r   Útool_start_callbackc                ó   <€ \        SWV4      # ©N)Ú_on_tool_start)Útc_idr*   r/   rC   s   &&&€r   r   Ú_agent_cbs.<locals>.<lambda>™   s   ø€ ¼ÈÈUÐZ^Ô9_r   Útool_complete_callbackc                ó   <€ \        SWW#4      # r†   )Ú_on_tool_complete©rˆ   r*   r/   ÚresultrC   s   &&&&€r   r   r‰   š   s   ø€ ÔDUÐVYÐ[`ÐhlÔDur   Útool_result_metadata_callbackc                ó   <€ \        SWW#4      # r†   )Ú_prepare_tool_result_metadatar�   s   &&&&€r   r   r‰   ›   s   ø€ ÔKhØ�˜dôL,r   Útool_progress_callbackc                ó    <€ \        SWW#3/ VB # r†   )Ú_on_tool_progress)r   r*   r1   r/   ÚkwargsrC   s   &&&&,€r   r   r‰   �   s   ø€ ÔctØ� 7ñd<Ø4:òd<r   Útool_gen_callbackc                óH   <€ \        S4      ;'       d    \        R SRV /4      # )ztool.generatingr*   )r:   r7   )r*   rC   s   &€r   r   r‰   Ÿ   s(   ø€ Ô*@ÀÓ*E×*wÐ*wÌ%ÐPaÐcfÐioÐquÐhvÓJwÐ*wr   Úthinking_callbackc                ó   <€ \        SV 4      # r†   )r`   ©r$   rC   s   &€r   r   r‰       s   ø€ Ô*@ÀÀdÔ*Kr   Úreaction_callbackc                ó"   <€ \        R SRV /4      # )ÚreactionrS   ©r7   )rS   rC   s   &€r   r   r‰   ¢   s   ø€ ¬%°
¸CÀ&È$ÀÔ*Pr   Úreasoning_callbackc                ó   <€ \        SV 4      # r†   )rm   rš   s   &€r   r   r‰   £   s   ø€ Ô+@ÀÀdÔ+Kr   Ústatus_callbackc                ó   <€ \        SW4      # r†   )rZ   )rS   r$   rC   s   &&€r   r   r‰   ¤   s   ø€ Ô3GÈÈTÔ3Xr   Únotice_callbackc                ó   <€ \        SV 4      # r†   )rh   )ÚnrC   s   &€r   r   r‰   ¦   s   ø€ Ô%9¸#¸qÔ%Ar   Únotice_clear_callbackc                ó"   <€ \        R SRV /4      # )znotification.clearr<   rž   )r<   rC   s   &€r   r   r‰   §   s   ø€ ¬UÐ3GÈÈuÐVYÈlÔ-[r   Úclarify_callbackc                ó   <€ \        SV 4      # r†   )Ú_clarify_block)Ú	questionsrC   s   &€r   r   r‰   ¨   s   ø€ ¬n¸SÀ)Ô.Lr   Úread_terminal_callbackzterminal.readÚread_preview_callbackzpreview.readÚdrive_preview_callbackc                ó.   <€ \        S\        V 4      4      # r†   )Ú_preview_action_requestr   ©r   rC   s   &€r   r   r‰   ®   s   ø€ Ô2IÈ#ÌtÐT[Ë}Ô2]r   Úread_window_below_callbackc                 ó"   <€ \        R S / ^R7      # )zwindow.readrz   r{   )rC   s   €r   r   r‰   °   s   ø€ ¬d°=À#ÀrÐSUÕ.Vr   Úconnection_callbackc                óD   <€ \        R S\        V 4      4      ;'       d    R# )zconnection.requestN)r7   r   r±   s   &€r   r   r‰   ³   s"   ø€ ¬uÐ5IÈ3ÔPTÐU\ÓP]Ó/^×/gÐ/gÐcgÐ/gr   Útour_callbackc                ó   <€ \        SV 4      # r†   )Ú_tour_requestr±   s   &€r   r   r‰   µ   s   ø€ ¬°s¸GÔ)Dr   Útheme_callbackc                ó   <€ S! SV 4      # r†   r   )r   rC   rp   s   &€€r   r   r‰   ·   s   ø€ ©-¸¸WÔ*Er   Úsetup_beat_callbackc                ó   <€ \        SV 4      # r†   )Ú_setup_beat_requestr±   s   &€r   r   r‰   ¸   s   ø€ Ô/BÀ3ÈÔ/Pr   Úalready_streamedFc          
     óJ   <€ \        R SR\        V 4      R\        V4      /4      # )zmessage.interimr$   r¾   )r7   r   r   )r$   r¾   rC   s   &$€r   r   r‰   ½   s(   ø€ ÔZ_Ø˜s V¬S°«YÐ8JÌDÐQaÓLbÐ$cô[er   Úinterim_assistant_callback)NNNr†   )Útui_gateway.theme_bridgerp   Ú _load_interim_assistant_messages)rC   r‚   Ú	callbacksrp   s   f  @r   Ú
_agent_cbsrÄ   �   sV  ù€ å6÷ð ð RØÔ_ð Rà Ô"uð Rð 	(ô *,ð Rð
 	!ö #<ð Rð 	Ôwð Rð 	ÔKð Rð 	ÔPð Rð 	ÔKð Rð 	ÖXð Rð 	ÔAð Rð 	 Ô![ð Rð  	ÔLð! Rð" 	!¡+¨o¸rÓ"Bð# Rð$ 	 ¡¨^¸RÓ!@ð% Rð, 	!Ô"]ð- Rð0 	%Ô&Vð1 Rð6 	Ôgð7 Rð: 	ÔDàÕEØÔPñA R€IôH (×)Ò)ð3eÐSXö 3eˆ	Ð.Ñ/àÐr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   Útask_idr   ÚpathÚ_namer   r   r   )r   s   "r   r   r   Â   s.   € ÷ `ñ ` cð `°ð `¸Sð `È$ñ `r   c           
     ó^  a€ V'       g   R# \        T ;'       g    R4      o\        ;_uu_ 4        S\        9   d   S\        S,          3M'\        V3R l\        P	                  4        4       R4      w  r4RRR4       \
        P                  P                  \
        P                  P                  \        V4      4      4      pXe&   \
        P                  P                  V4      '       g   R# VP                  VRRR7       \        V4       \        WE4        VP                  R4      pVe   \        Wd4      M+RVR	\        P!                  V4      R
\#        V4      RRR\$        /p\'        RXV4       R#   + '       g   i     EL; i  \(         d    \*        P-                  RRR7        R# i ; i)u¬   Intentional workspace move from the project_* tools: re-anchor the live session's cwd
and push session.info. The ONLY auto-cwd path â€” an explicit tool call, never a `cd`.Nr!   c              3  ó    <"  € T FC  w  rVP                  R 4      S8X  g$   \        VP                  R4      RR4      S8X  g   K>  W3x € KE  	  R# 5i)Úsession_keyr#   Ú
session_idN)r   rN   )Ú.0ÚsÚcr<   s   &  €r   Ú	<genexpr>Ú+_apply_project_workspace.<locals>.<genexpr>Ë   sJ   øé € ð cÑ 1™˜Ø—‘�mÓ$¨Ô+¬w°q·u±u¸W³~À|ÐUYÓ/ZÐ^aÑ/aô ˆa�VÓ 1ùs   ƒ;AÁATF)ÚcwdÚexplicit_cwdÚcwd_from_settler#   rÒ   ÚbranchÚprojectÚlazyÚdesktop_contractúsession.infoz8failed to emit session.info after project workspace move)Úexc_info)r!   N)r   rL   rM   ÚnextÚitemsÚosrÇ   ÚabspathÚ
expanduserÚisdirÚupdateÚ_register_session_cwdÚ*_persist_session_cwd_and_schedule_git_metar   Ú_session_infoÚ	git_proberÕ   Ú_project_info_for_cwdÚDESKTOP_BACKEND_CONTRACTr7   Ú	ExceptionÚloggerÚdebug)	rÆ   rÇ   rÈ   rC   rP   Úresolvedr#   Úinfor<   s	   &&&     @r   Ú_apply_project_workspacerí   Â   sM  ø€ ÷ Ùä
ˆg�mˆm˜Ó
€Cß	ŽØ03´yÔ0@˜œY s�^Ñ,Ädôc¤	§¡Ô 1ó càóG‰ˆ÷ 
ô
 �w‰w�‰œrŸw™w×1Ñ1´#°d³)Ó<Ó=€HØ‚œbŸg™gŸm™m¨H×5Ò5Ùà‡N�N�x¨dÀE€NÔJÜ˜'Ô"Ü.¨wÔAð`Ø—‘˜GÓ$ˆØ05Ò0AŒ}˜UÔ,Ø�8˜X¤y×'7Ñ'7¸Ó'AØÔ,¨XÓ6¸ÀØÔ 8ðH:ˆô 	ˆn˜c 4Ö(÷% 
�ˆûô& ô `Ü�‰ÐOÐZ^ˆ×_ð`ús   ¯AE2ÄAF Å2F	Æ"F,Æ+F,c               ó   € V ^8„  d   QhRR/# )r	   rC   r   r   )r   s   "r   r   r   à   s   € ÷ 7Gñ 7G˜ñ 7Gr   c                ó
  a a
a€ ^ RI Hp ^ RIHo ^ RIHo
 ^ RIHp ^ RIH	p RR lpV! V
VV 3R l4       V! \        4       V! V4       ^ R	IHpHpHpHp V! S 4       V! V 3R
 l4       V 3R lp	V! V	4       V! V 3R l4       R# )rF   )Úset_sudo_password_callback)Úget_sudo_prompt_command)Ú_redact_approval_command)Úset_secret_capture_callback)Úset_project_workspace_callbackNc           
     ó6  € R VRV /V'       d   RV/M/ Cp^ RI Hp V! R4      pV'       d1   \        P                  V4      f   \        P                  RV4       RpMV'       d   \        RWS4      MRpV'       g   RR	R
V RRRR	RR/# ^ RIHp / V! W4      CRRRR/C# )ÚpromptÚenv_varÚmetadata)Úget_session_envÚHERMES_UI_SESSION_IDz6secret prompt for %s refused: its UI session is closedr!   ÚsecretÚsuccessTÚ	stored_asÚ	validatedFÚskippedÚmessage)Úsave_env_value_secureÚok)	Úgateway.session_contextrù   rM   r   ré   rì   r|   Úhermes_cli.configr  )r÷   rö   rø   Úplrù   Ú	owner_sidÚvalr  s   &&&     r   Ú	secret_cbÚ"_wire_callbacks.<locals>.secret_cbç   s©   € Ø˜ 	¨7Ðc×QY¸
ÀHÑ7MÐ_aÐcˆõ 	<á#Ð$:Ó;ˆ	÷ œŸ™ yÓ1Ò9Ü�K‰KÐPÐR[Ô\Ø‰Cç3<”$�x Ô/À"ˆCßØ˜t [°'¸;ÈÈyÐZ^Ð`iÐktÐuÐuÝ;ØYÑ'¨Ó5ÐY°yÀ%ÈÐTXÑYÐYr   c            	     ó<   <€ \        R SRS ! S! 4       4      /^xR7      # )ÚsudoÚcommandrz   r{   )rò   rñ   rC   s   €€€r   r   Ú!_wire_callbacks.<locals>.<lambda>   s$   ø€ ¤tØ��iÑ!9Ñ:QÓ:SÓ!TÐUÐ_bõ(dr   )Úset_code_prompt_callbackÚset_current_session_idÚset_save_login_prompt_callbackÚset_unlock_prompt_callbackc                ó*   <€ \        R SRV RV/^xR7      # )zvault.unlock_promptÚbackendÚdisplay_namerz   r{   )r  r  rC   s   &&€r   r   r  	  s   ø€ ¼TØ˜s Y°¸ÈÐ$VÐ`cõ>er   c                óò   <€ \        R SRV RV/^´R7      p V'       d   \        P                  ! V4      MRp\	        T\
        4      '       d   TP                  R4      '       d   T# R#   \         d     R# i ; i)zvault.save_loginÚoriginÚsiterz   NÚpassword)r|   ÚjsonÚloadsÚ
ValueErrorr_   r   r   )r  r  ÚrawÚdatarC   s   &&  €r   Úsave_login_cbÚ&_wire_callbacks.<locals>.save_login_cb  so   ø€ äÐ% s¨X°v¸vÀtÐ,LÐVYÔZˆð	ß&)”4—:’:˜c”?¨tˆDô " $¬×-Ò-°$·(±(¸:×2FÒ2FˆtÐPÈDÐPøô ô 	Úð	ús   –A' žA' Á'A6Á5A6c                ó*   <€ \        R SRV RV/^´R7      # )z
vault.coder  Úhintrz   r{   )r  r!  rC   s   &&€r   r   r    s   ø€ ´Ø�c˜F D¨&°$Ð7Àõ1Fr   r†   )Útools.terminal_toolrð   Útools.terminal_tool_sudorñ   Úgateway.runrò   Útools.skills_toolró   Útools.project_toolsrô   rí   Úagent.vault_backends.unlockr  r  r  r  )rC   rð   ró   rô   r  r  r  r  r  r  rò   rñ   s   f         @@r   Ú_wire_callbacksr(  à   s|   ú€ Ý>Ý@Ý4Ý=ÝBôZñ2 ö  dô eá"Ô#;Ô<Ù 	Ô*÷ió iá˜3ÔÙô  eô fõQñ # =Ô1Ùô Fö Gr   c               ó    € V ^8„  d   QhRRRR/# )r	   Úcfgúdict | Noner   r   r   )r   s   "r   r   r     s   € ÷ Hñ H +ð H¸ñ Hr   c                óB   € ^ RI Hp T! V f   \        4       4      # T 4      # )zFBuilt-ins + user overrides, via hermes_cli.personality (single owner).)Úavailable_personalities)Úhermes_cli.personalityr-  Ú	_load_cfg)r*  r-  s   & r   Ú_available_personalitiesr0    s   € å>Ù"°#²+¤9£;ÓGÐGÀ3ÓGÐGr   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   Úvaluer   r*  r+  r   ztuple[str, str]r   )r   s   "r   r   r      s&   € ÷ 
@ñ 
@ ð 
@¨;ð 
@À/ñ 
@r   c                ó  € ^ RI HpHp V! V 4      ;p'       g   R# \        V4      pWE9  dJ   RP	                  R \        V4       4       4      p\        R\        V 4      P                  4        RV 24      hWC! WT,          4      3# )z¨(name, prompt) for a requested personality or ValueError; like resolve_personality but
via the module-level _available_personalities so tests keep a single patch point.)Únormalize_personality_nameÚrender_personality_promptz, c              3  ó.   "  € T F  pR V R 2x € K  	  R# 5i)Ú`Nr   )rÍ   r¥   s   & r   rÐ   Ú(_validate_personality.<locals>.<genexpr>(  s   é € ÐBÑ,A q˜A˜a˜S �(Ó,Aùs   ‚zUnknown personality: `z`.

Available: `none`, )r!   r!   )	r.  r4  r5  r0  ÚjoinÚsortedr  r   Ústrip)r2  r*  r4  r5  r*   ÚpersonalitiesÚnamess   &&     r   Ú_validate_personalityr>     s„   € ÷ ]Ù.¨uÓ5Ð5ˆDÖ5ØˆÜ,¨SÓ1€MØÔ Ø—	‘	ÑB¬F°=Ô,AÓBÓBˆÜÐ1´#°e³*×2BÑ2BÓ2DÐ1EÐE^Ð_dÐ^eÐfÓgÐgØÐ*¨=Õ+>Ó?Ð?Ð?r   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 V! V 4      # )zXNormalize config prompt values from YAML for AIAgent (hermes_cli.personality owns this).)Úprompt_text)r.  rA  )r2  rA  s   & r   Ú_prompt_textrB  -  s   € å2Ù�uÓÐr   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r	   rC   r   rP   r   Ú
new_promptÚpersonalityr   ztuple[bool, dict | None]r   )r   s   "r   r   r   3  s4   € ÷ ñ Ø	ðØðØ),ðØ;>ðØH`ñr   c           
     ó¬  € V'       g   R# W1R&   VP                  R4      ;p'       g   R# T;'       g    RVn        V'       d   RV R2MRpVR,          ;_uu_ 4        VR	,          P                  R
RRVRR/4       \        VP                  R^ 4      4      ^,           VR&   RRR4       \	        V4      p\        RW4       RV3#   + '       g   i     L+; i)a   Apply a personality change without resetting history: the ephemeral system prompt is
updated in place (appended at API-call time, so prompt-cache hits survive) plus a pivot
marker so the model stops pattern-matching its earlier tone. Returns (False, info).FNrE  r#   z‰[System: The user has changed the assistant's personality. From this point forward, adopt the following persona and respond accordingly: Ú]zv[System: The user has cleared the personality overlay. From this point forward, respond in your normal default style.]Úhistory_lockÚhistoryÚroleÚuserÚcontentÚdisplay_kindÚpersonality_switchÚhistory_versionrÙ   )FN)r   Úephemeral_system_promptÚappendrt   rä   r7   )rC   rP   rD  rE  r#   Úmarkerrì   s   &&&&   r   Ú_apply_personality_to_sessionrS  3  sÝ   € ÷
 ØÐØ(ˆMÑØ—[‘[ Ó)Ð)ˆEÖ)ØÐØ$.×$6Ð$6°$€EÔ!÷
 ð	à"�| 1ñ	&ð	Jð ð 
�×	 ×	 Ø�	Õ×!Ñ! 6¨6°9¸fÀnÐVjÐ"kÔlÜ%(¨¯©Ð5FÈÓ)JÓ%KÈaÕ%OˆÐ!Ñ"÷ 
!ô ˜Ó€DÜ	ˆ.˜#Ô$Ø�$ˆ;Ð÷ 
!×	 ús   ÁACÃC	c               ó$   € V ^8„  d   QhRRRRRR/# )r	   r*  r   Údefaultrt   r   r   )r   s   "r   r   r   R  s&   € ÷ Qñ Q˜ð Q sð Q¨sñ Qr   c                ó
  € ^ RI Hp \        P                  P	                  R4      ;p'       d
   V! W1R7      # V P	                  R4      ;'       g    / P	                  R4      pVf   V P	                  R4      pVf   V# V! WAR7      # )rF   )Úresolve_turn_limitÚHERMES_TUI_MAX_TURNS)rU  r#   Ú	max_turns)r  rW  rÝ   Úenvironr   )r*  rU  Ú_resolve_turn_limitÚenv_valr  s   &&   r   Ú_cfg_max_turnsr]  R  sr   € ÝKä—*‘*—.‘.Ð!7Ó8Ð8€wÖ8Ù" 7Ô<Ð<Ø�7‰7�7Ó×!Ð!˜r×
&Ñ
& {Ó
3€CØ
‚{Ø�g‰g�kÓ"ˆØ’kˆ7ÐPÑ':¸3Ô'PÐPr   c               ó   € V ^8„  d   QhRR/# )r	   r   z	list[str]r   )r   s   "r   r   r   ]  s   € ÷ bñ b˜yñ br   c            	     óÊ   € \         P                  P                  R R4      p \        \        P                  R V P                  RR4      P                  R4       4       4      4      # )ÚHERMES_TUI_SKILLSr!   c              3  óp   "  € T F,  qP                  4       '       g   K  VP                  4       x € K.  	  R # 5ir†   )r;  )rÍ   Úps   & r   rÐ   Ú(_parse_tui_skills_env.<locals>.<genexpr>_  s%   é € Ð`Ñ1R¨A×V]ÑV]×V_œi˜aŸg™gŸi˜iÓ1Rùs   ‚6ž6r(   Ú,)rÝ   rZ  r   Úlistr   ÚfromkeysÚreplaceÚsplit)r  s    r   Ú_parse_tui_skills_envri  ]  sG   € Ü
�*‰*�.‰.Ð,¨bÓ
1€CÜ”—‘Ñ`°·±¸TÀ3Ó1G×1MÑ1MÈcÔ1RÓ`Ó`ÓaÐar   c                 ó.   € ^ RI Hp  V ! \        4       4      # )z¦Configured fallback chain via the shared ``get_fallback_chain`` (parity with
HermesCLI/gateway: ``fallback_providers`` first, legacy ``fallback_model`` merged after).©Úget_fallback_chain)Úhermes_cli.fallback_configrl  r/  rk  s    r   Ú_load_fallback_modelrn  b  s   € õ >Ùœi›kÓ*Ð*r   c               ó   € V ^8„  d   QhRR/# )r	   r   re  r   )r   s   "r   r   r   i  s   € ÷ Qñ Q ñ Qr   c                 óV   € ^ RI Hp Hp ^ RIHp V ! V! \        4       4      V! 4       4      # )a  Configured prefill messages, resolved like the CLI (env > ``prefill_messages_file`` > legacy
``agent.*``). Desktop/TUI agents never run the CLI bootstrap, so without this the setting was
ignored there (#60456). Relative paths resolve against the active profile home, per call.)Ú_load_prefill_messagesÚ_resolve_prefill_messages_file)Úget_hermes_home)Úhermes_cli.cli_config_loadrq  rr  Úhermes_constantsrs  r/  )Ú_loadrr  rs  s      r   rq  rq  i  s#   € ÷ kÝ0ÙÑ/´	³Ó<¹oÓ>OÓPÐPr   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   rC   r   rP   r   r   r   r   )r   s   "r   r   r   r  s!   € ÷ ?ñ ?¨#ð ?¸ð ?Àñ ?r   c                ó
  € VP                  R4      pVf   R#  ^ RIHp ^ RIHp ^ RIHp V! V! \        4       RR7      4      pTP                  Y&4       R#   \         d"   p\        P                  RY4        Rp?R# Rp?ii ; i)	a—  Adopt ``fallback_providers`` edits into the cached agent at turn start.

Desktop/TUI chats keep one agent across turns, and ``_make_agent`` reads the chain once: a chat
opened before ``hermes fallback add`` kept an empty chain forever and a provider-quota 429 ended in
a provider error with a healthy fallback configured (#95066). Same per-turn contract the messaging
gateway applies to its cached agents (``GatewayRunner._refresh_fallback_model``): the config is
read fail-closed, so a torn/invalid config.yaml keeps the agent's last known-good chain instead of
``_load_cfg()``'s fail-open ``{}`` reading as "chain removed" and wiping it. Never blocks the turn.
r#   N)ÚGatewayRunner)Úload_user_config_effectiverk  T)Úfail_closedz>fallback chain sync skipped for %s (keeping current chain): %s)r   r$  ry  Úhermes_cli.config_effectiverz  rm  rl  Ú_active_config_pathrè   ré   ÚwarningÚ_apply_fallback_chain_to_agent)rC   rP   r#   ry  rz  rl  ÚchainÚes   &&      r   Ú _sync_agent_fallback_with_configr‚  r  st   € ð �K‰K˜Ó €EØ‚}ÙðÝ-ÝJÝAÙ"Ñ#=Ô>QÓ>SÐaeÔ#fÓgˆð ×0Ñ0°Ö>øô ô Ü�‰ÐWÐY\Ô`Ýûðús   ™*A ÁBÁ!A=Á=Bc               ó    € V ^8„  d   QhRRRR/# ©r	   rÆ   r   r   r   r   )r   s   "r   r   r   Š  s   € ÷ ñ ¨Sð °Tñ r   c                óN  a € \        4       pRV 3R llp\        S R4      '       d   S P                  ;'       g    . pM(\        S R4      '       d   S P                  M	\	        4       p/ R Uu/ uF  qUV! V4      ;'       g    R bK  	  upCR Uu/ uF  qUV! V4      bK  	  upCRV! R4      ;'       g    \        4       R\        V^4      RV! R4      ;'       g    \        R4      RV! R4      ;'       g    \        4       R	R
RRRV! RR4      RTRV! R4      ;'       g&    \        \        V! RR4      ;'       g    R4      4      RV! R4      ;'       g    \        4       R\        V! R/ 4      ;'       g    / 4      RRR\        S RR 4      ;'       g    \        4       RVRR
/C# u upi u upi )Nc                ó   <€ \        SW4      # r†   )rN   )r*   rU  r#   s   &&€r   ÚgÚ#_background_agent_kwargs.<locals>.g�  s   ø€ Ü�u˜dÓ,Ð,r   Ú_fallback_chainÚ_fallback_modelÚmodelÚmax_iterationsÚenabled_toolsetsrI   Údisabled_toolsetsÚ
quiet_modeTÚverbose_loggingFÚprovider_require_parametersrÌ   Úreasoning_configr!   Úservice_tierÚrequest_overridesÚplatformÚ
session_dbÚ_session_dbÚfallback_modelÚ
side_agentr†   )Úbase_urlÚapi_keyÚproviderÚapi_modeÚacp_commandÚacp_argsrP  )Úproviders_allowedÚproviders_ignoredÚproviders_orderÚprovider_sortÚprovider_data_collectionÚopenrouter_min_coding_score)r/  Úhasattrr‰  rŠ  rn  Ú_resolve_modelr]  Ú_load_enabled_toolsetsÚ_load_disabled_toolsetsÚ_load_reasoning_configr   Ú_load_service_tierr   rN   Ú_get_db)r#   rÆ   r*  r‡  Úfallbackr}   s   f&    r   Ú_background_agent_kwargsr®  Š  sÍ  ø€ Ü
‹+€C÷-ô ˆuÐ'×(Ò(Ø×(Ñ(×.Ð.¨B‰ä-4°UÐ<M×-NÒ-N�E×)Ò)Ü-Ó/ð 	ðñ%Ló Mñ %L˜q‰a�‹d�lˆl�dŠ?ñ %Lñ MðñXó Yñ X�q‰a�‹dŠ7ñ Xñ Yðð
 	‘�7“×/Ð/œ~Ó/Ð1AÄ>ÐRUÐWYÓCZØ™AÐ0Ó1×RÐRÔ5KÈEÓ5RØ™QÐ2Ó3×PÐPÔ7NÓ7PØ�dÐ-¨uØ%¡qÐ)FÈÓ'NÐP\Ð^eØ™AÐ0Ó1×fÐfÔ5KÌCÑPQÐRYÐ[]ÓP^×PdÐPdÐbdÓLeÓ5fØ™˜.Ó)×AÐAÔ-?Ó-AØœT¡!Ð$7¸Ó"<×"BÐ"BÀÓCð 	�E˜<¬°¸ÀtÓ)L×)YÐ)YÔPWÓPYÐ[kÐmuØ�dñ!ð ùòMùòYs   Á*FÁ>FÂF"c               ó    € V ^8„  d   QhRRRR/# r„  r   )r   s   "r   r   r   «  s   € ÷ _ñ _°Cð _¸Dñ _r   c                ó0   € / \        W4      CR RR.RRRR/C# )r�  ÚterminalÚfiler–  NÚskip_memoryT)r®  )r#   rÆ   s   &&r   Ú_ephemeral_preview_agent_kwargsr´  «  s5   € ð_Ô& uÓ6ð _Ø ¨VÐ 4°lÀDÈ-ÐY]ñ_ð _r   c              #  ó˜   "  € \        V RR4      pV e   Vf   V x € R# ^ RIHpHp V! V4      p Vx € V! V4       R#   T! T4       i ; i5i)a¼  A side agent's OWN registry reference on the parent's store for the duration of its turn.
Handing the parent's object across is not enough: the parent releases its reference from
``AIAgent.close()`` / a session reset, and when it was the last holder the registry tears the
connection down under the still-running background turn (the delegated-child path acquires
the same way, ``tools/delegate_tool._open_child_session_db``). Released on exit.Údb_pathN)ÚacquireÚrelease_or_close)rN   Úhermes_state_registryr·  r¸  )Ú	parent_dbrÇ   r·  r¸  Údbs   &    r   Ú_side_agent_session_dbr¼  °  sN   é € ô �9˜i¨Ó.€DØÒ˜DšLØŠÙß?Ù	�‹€BðØŠá˜ÖøÑ˜Õüs   ‚,A
¯= ³
A
½
AÁA
c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   Úmessageszlist[dict] | NoneÚmax_messagesrt   Úmax_tool_charsr   z
list[dict]r   )r   s   "r   r   r   Ã  s+   € ÷ ñ Ð'8ð Èð Ø-0ðØ<Fñr   c                óÎ  a€ \        T ;'       g    . 4      oS'       g   . # \        V3R l\        \        S4      ^,
          R	R	4       4       R4      p\	        ^ \        S4      V,
          4      pVe   \        WC4      p. pSVR  F×  p\        V\        4      '       d   VP                  R4      R
9  d   K1  VP                  4        UUu/ uF  w  rxVR8w  g   K  WxbK  	  p	ppV	P                  R4      p
VP                  R4      R8X  dC   \        V
\        4      '       d-   \        V
4      V8”  d   V
RV R\        V
4       R2,           V	R&   VP                  V	4       KÙ  	  V# u uppi )ae  Distill recent parent history for the ephemeral preview-restart agent (else it guesses
app/cwd/port from the bare URL): last ``max_messages`` back to the last user turn, tool
results truncated to ``max_tool_chars``. ``messages`` is a snapshot the caller owns (the
legacy session's history taken under its ``history_lock``, or the owner's stored transcript).c              3  óf   <"  € T F&  pSV,          P                  R 4      R8X  g   K"  Vx € K(  	  R# 5i)rJ  rK  N)r   )rÍ   ÚirI  s   & €r   rÐ   Ú+_preview_restart_history.<locals>.<genexpr>Ì  s+   øé € ÐeÑ!@˜AÀGÈAÅJÇNÁNÐSYÓDZÐ^dÑDd—a’aÓ!@ùs   ƒ1§
1NrJ  r,   Ú	reasoningrL  z
... (truncated, original z chars)éÿÿÿÿ)rK  Ú	assistantr,   Úsystem)re  rÛ   ÚrangeÚlenÚmaxÚminr_   r   r   rÜ   r   rQ  )r¾  r¿  rÀ  Ú	last_userrx   ÚtrimmedÚmsgr}   r~   ÚcopyrL  rI  s   &&&        @r   Ú_preview_restart_historyrÑ  Ã  s:  ø€ ô �8—>�>˜rÓ"€GßØˆ	ÜÔe¤¤s¨7£|°aÕ'7¸¸RÔ!@ÓeÐgkÓl€IÜ�”3�w“< ,Õ.Ó/€EØÒÜ�EÓ%ˆØ€GØ�u�v‹ˆÜ˜#œt×$Ò$¨¯©°«Ð?fÔ(fÙØ!$§¡¤ÔA¡™˜°°[Ñ0@”�’¡ˆÑAØ—(‘(˜9Ó%ˆØ�7‰7�6‹?˜fÔ$¬°G¼S×)AÒ)AÄcÈ'ÃlÐUcÔFcØ% o ~Ð6Ð;VÔWZÐ[bÓWcÐVdÐdkÐ9lÕlˆD�‰OØ�‰�tÖñ ð €Nùó Bs   ÃE!ÃE!c               ó$   € V ^8„  d   QhRRRRRR/# )r	   r*   r   rŽ   r   r   )r   s   "r   r   r   Ü  s!   € ÷ 7ñ 7 sð 7°Cð 7¸Cñ 7r   c                ó(  €  \         P                  ! V4      p\        V\        4      '       g   R# V R8X  d’   \        VP                  R4      ;'       g    R4      P                  4       ;p'       d   VR
R  # VP                  R4      '       d   RVP                  R4       2# VP                  R4      e   RVP                  R4       2# \        VP                  R4      ;'       g    R4      P                  4       R	,          #   \         d    R p Løi ; i)Nr!   r±  ÚoutputrÌ   zBackground process started: Ú	exit_codezterminal exited with code Úerror:Ni°  NiPûÿÿ)r  r  rè   r_   r   r   r   r;  )r*   rŽ   r  rÔ  s   &&  r   Ú_preview_tool_result_previewr×  Ü  sñ   € ðÜ�zŠz˜&Ó!ˆô �dœD×!Ò!ÙØˆzÔÜ˜Ÿ™ (Ó+×1Ð1¨rÓ2×8Ñ8Ó:Ð:ˆ6Ö:Ø˜%˜&�>Ð!Ø�8‰8�L×!Ò!Ø1°$·(±(¸<Ó2HÐ1IÐJÐJØ�8‰8�KÓ Ò,Ø/°·±¸Ó0EÐ/FÐGÐGÜˆt�x‰x˜Ó ×&Ð& BÓ'×-Ñ-Ó/°Õ6Ð6øô ô ØŠðús   ‚D ÄDÄDc               ó$   € V ^8„  d   QhRRRRRR/# )r	   Úparentr   rÆ   r   r   r   )r   s   "r   r   r   í  s!   € ÷ ,ñ , sð ,°Sð ,¸Tñ ,r   c           
     óœ   a aaa€ / oRR V V3R llloR VV3R llpR VV3R llpRR V3R lllp\        S S4      pR	VR
VRVRV3R lRV/# )rì   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   r   r   rd   r   r   r   )r   s   "r   r   Ú0_preview_restart_callbacks.<locals>.__annotate__ð  s&   € ÷ jñ j˜#ð j cð j°tñ jr   c           
     óˆ   <€ \        T ;'       g    R 4      P                  4       ;p'       d   \        RSRSRVRV/4       R# R# )r!   zpreview.restart.progressrÆ   rd   r$   N)r   r;  r7   )r   rd   r$   rÙ  rÆ   s   && €€r   ÚprogressÚ,_preview_restart_callbacks.<locals>.progressð  sD   ø€ Ü�w—}�} "Ó%×+Ñ+Ó-Ð-ˆ4Ö-ÜÐ,¨f°yÀ'È7ÐTYÐ[aÐcgÐ6hÖiñ .r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   Útool_call_idr   r*   r/   r   r   r   r   )r   s   "r   r   rÜ  ô  s(   € ÷ ?ñ ? ð ?¨Cð ?°tð ?Àñ ?r   c                ó€   <€ \         P                  4       SV &   \        W4      pS! R T V'       d   RV 2MR 24       R# )zRunning ú: r!   N)r   Ú	_tool_ctx)rá  r*   r/   ÚctxrÞ  Ú
started_ats   &&& €€r   Ú
tool_startÚ._preview_restart_callbacks.<locals>.tool_startô  s;   ø€ Ü#'§9¡9£;ˆ
�<Ñ Ü˜Ó#ˆÙ�8˜D˜6· B s e¡*¸Ð!<Ð=Ö>r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r	   rá  r   r*   Ú_argsr   rŽ   r   r   r   )r   s   "r   r   rÜ  ù  s0   € ÷ >ñ > Cð >¨sð >¸4ð >Èð >ÐQUñ >r   c                ó0  <€ \         P                  4       SP                  V \         P                  4       4      ,
          p\        WV4      ;'       g    R T V'       d   R\        V4       2MR 2p\	        W4      pS! YV'       d   RV 2MR,           4       R# )z	Finished z in r!   r(   N)r   r   Ú_tool_summaryÚ_fmt_tool_durationr×  )	rá  r*   rê  rŽ   Ú
duration_sr2   rÔ  rÞ  ræ  s	   &&&&   €€r   Útool_completeÚ1_preview_restart_callbacks.<locals>.tool_completeù  s�   ø€ Ü—Y‘Y“[ :§>¡>°,ÄÇ	Á	ÃÓ#LÕLˆ
Ü ¨jÓ9÷  Oð  O¸yÈÈ÷  {EÐQUÔVhÐisÓVtÐUuÑOvð  KMð  ONð  >OˆÜ-¨dÓ;ˆÙ�®V˜b  ™M¸Õ<Ö=r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   r   r   r*   rT   r1   r   r   r   )r   s   "r   r   rÜ  ÿ  s/   € ÷ ]ñ ] #ð ]¨Zð ]Èð ]Ðjnñ ]r   c                óŒ   <€ V'       g	   V'       d3   S! V'       d   \        V4      MV P                  R R4       RV 24       R# R# )Ú.Ú rã  N)r   rg  )r   r*   r1   Ú_kwargsrÞ  s   &&&,€r   Útool_progressÚ1_preview_restart_callbacks.<locals>.tool_progressÿ  s9   ø€ ß—dÙ§W”S˜”\°Z×5GÑ5GÈÈSÓ5QÐ4RÐRTÐUYÐTZÐ2[Ö\ñ r   r„   rŠ   r’   r–   c                ó   <€ S! R V  24      # )z
Preparing r   )r*   rÞ  s   &€r   r   Ú,_preview_restart_callbacks.<locals>.<lambda>  s   ø€ ©(°ZÀ¸vÐ3FÔ*Gr   r¡   )rì   r�   )Ú_restart_status_factory)rÙ  rÆ   rç  rï  rö  Ú_restart_statusrÞ  ræ  s   ff    @@r   Ú_preview_restart_callbacksrü  í  sf   û€ Ø#%€J÷jó j÷?ñ ?÷
>ñ >÷]ò ]ô .¨f°hÓ?€Oà˜zÐ+CÀ]Ø  -ØÔGØ˜?ð	,ð ,r   c               ó   € V ^8„  d   QhRR/# )r	   rÙ  r   r   )r   s   "r   r   r     s   € ÷ ñ  Cñ r   c                ó   a a€ RV V3R llpV# )z^Restart-panel status rows: automatic warnings honor the TUI policy like the main agent's sink.c                óz   <€ ^ RI Hp Ve   TMT pV! W4      '       d   \        SRR7      '       g   R# S! V4       R# )rF   rV   NTrX   )rK   rW   rQ   )rS   r$   rW   r   rÙ  rÞ  s   &&  €€r   rû  Ú0_restart_status_factory.<locals>._restart_status  s7   ø€ ÝCØÒ*‘$°ˆÙ˜T×+Ò+Ô4OÐPVÐcg×4hÓ4hÙÙ�Ör   r†   r   )rÙ  rÞ  rû  s   ff r   rú  rú    s   ù€ ÷ð ð Ðr   c               ó    € V ^8„  d   QhRRRR/# )r	   rC   r   rP   r   r   )r   s   "r   r   r     s   € ÷ ?ñ ? ð ?¨dñ ?r   c           	     óT  € VP                  R4      pVP                  R4      p\        VRR4      pVRJ ;'       d    \        V4      p\        V4      p \	        4       pV'       d   \        V4      pRV9  d2   \        VP                  R4      \        4      '       d   VR,          VR&   R F,  w  ršW¢9  g   K  VP                  V	4      f   K"  W,          W*&   K.  	  \        WR,          3RV/VB p Te   \        T4       \        ;_uu_ 4        \        TP                  R4      4      pT'       gÏ   \!        \        TR	R4      4      ;p'       d   0 Tm\        TR	R4      mTn        TP%                  Y¸R
7       T;'       g    \        \        TRR4      4      pT'       d   \'        Yµ4      '       d   Te   RTn        MCT'       d<   \        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       RRR4       X'       d¸   \        P                  ! \        4      ;_uu_ 4        \+        T4      ;_uu_ 4        \-        TR4      '       d   TP                  4        RRR4       RRR4       T'       d<   \        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       \/        R4      hT#   \         d^    T'       dT   TeP   \        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       h   + '       g   i     h ; ih i ; i  Te   \        T4       i i ; i  + '       g   i     ELZ; i  + '       g   i     ELf; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     Lí; i)a  Prepare and install a replacement on the session's profile, then transfer DB ownership.

An unscoped _make_agent defaults to the launch store: named-profile Bot Chat turns then disappear
from the profile's replay even though they were successfully written to another database (#104079).
r#   r   r—  NÚmodel_overriderË   r–  Ú_closingÚ_process_owner_task_ids)r#   Úconfig_model_seenÚ_owns_session_dbFÚclosez4session was closed while its agent was being rebuilt))Úcreate_reasoning_overrideÚreasoning_config_override)Úcreate_service_tier_overrideÚservice_tier_overrider   )r   rN   r   Ú_bind_build_profile_scopesÚ_config_model_targetÚ_open_profile_session_dbr_   r   Ú_make_agentÚBaseExceptionÚ
contextlibÚsuppressrè   r  Ú_release_build_profile_scopesrL   Úsetr  rá   Ú_transfer_db_to_agentr  rO   r¦  ÚRuntimeError)rC   rP   r•   Ú	old_agentr   r–  ÚopenedÚscopesr  ÚpinÚkwargr#   Úclosed_midbuildÚ	inheritedÚowneds   &&,            r   Ú_rebuild_session_agentr     sÑ  € ð —‘˜GÓ$€IØ—;‘;˜~Ó.€LÜ˜ M°4Ó8€Jð ˜4Ð×6Ð6¤D¨Ó$6€FÜ'¨Ó5€Fð2ä0Ó2ÐßÜ1°,Ó?ˆJð  6Ô)¬j¸¿¹ÐEUÓ9VÔX\×.]Ò.]Ø'.Ð/?Õ'@ˆFÐ#Ñ$óV‰JˆCàÖ" w§{¡{°3Ó'7Ô'CØ '¥�“ñVô ˜C¨Õ!7ÑYÀJÐYÐRXÑY‰ð ÒÜ)¨&Ô1÷ 
Žô ˜wŸ{™{¨:Ó6Ó7ˆßô  ¤¨	Ð3LÈbÓ QÓRÐRˆyÖRØ0l°)Ð0l¼gÀeÐMfÐhjÓ>kÐ0l�Ô-Ø�N‰N ˆNÔLØ×QÐQœd¤7¨9Ð6HÈ%Ó#PÓQˆEßÔ.¨u×AÒAØÒ(Ø16�IÔ.øßÜ×(Ò(¬×3Õ3Ø×$Ñ$Ô&÷ 4÷ 
÷" Ü× Ò ¤×+Õ+Ô-KÈG×-TÕ-TÜ�u˜g×&Ò&Ø—‘”÷ .U×+÷ Ü×$Ò$¤Y×/Õ/Ø× Ñ Ô"÷ 0äÐQÓRÐRØ€LøôG ô ß�jÒ,Ü×$Ò$¤Y×/Õ/Ø× Ñ Ô"÷ 0à÷ 0Ö/àúˆð	ûð ÒÜ)¨&Õ1ð ú÷& 4×3Ð3ú÷ 
�ˆú÷$ .U×-TÐ-Tú×+×+Ð+ú÷ 0×/úsª   ÁAK Â7K Ã#K ÄA1MÅ?MÆ$MÇ"MÇ%M	Ç6MÈ0NÉ#M/	É'NÊ!NËL/Ë&L/Ì LÌ	L/ÌL*Ì%
L/Ì/L2 Ì2MÍMÍ	MÍM,	Í/N Í:	NÎN	ÎN'	c               ó$   € V ^8„  d   QhRRRRRR/# )r	   rC   r   rP   r   r   r   )r   s   "r   r   r   X  s!   € ÷ ñ ˜cð ¨Dð °Tñ r   c                ó¨  € \        . R \        VP                  R^ 4      4      ^,           / ^ R\        4       \	        4       / R7	      p\        VR,          4      p R F  pVP                  VR 4       K  	  \        WVR,          \        V4      \        V4      R7      p\        V4       VP                  V4       VP                  RR 4       VR,          ;_uu_ 4        . VR&   \        VP                  R	^ 4      4      ^,           VR	&   R R R 4       \        WQ4      p\        R
W4       \        W4       V#   \        T4       i ; i  + '       g   i     LD; i)NÚ_queued_prompt_generationF)	Úattached_imagesÚqueued_promptr#  Úedit_snapshotsÚimage_counterÚrunningÚshow_reasoningÚtool_progress_modeÚtool_started_atrË   )rÌ   Úplatform_overrideÚcontext_cwd_is_launch_artifactÚqueued_promptsrH  rI  rO  rÙ   )r  r	  r  Úone_turn_model_restore)r   rt   r   Ú_load_show_reasoningÚ_load_tool_progress_modeÚ_set_session_contextr3   r   Ú_session_sourceÚ_context_cwd_is_launch_artifactÚ_clear_session_contextrá   rä   r7   Ú_restart_slash_worker)rC   rP   ÚupdatesÚtokensr}   Ú	new_agentrì   s   &&     r   Ú_reset_session_agentr:  X  s0  € ÜØ¨$Ü"% g§k¡kÐ2MÈqÓ&QÓ"RÐUVÕ"VØ¨°EÔJ^ÓJ`Ü3Ó5Àrô	K€Gô
 " '¨-Õ"8Ó9€Fð'ó {ˆAØ�K‰K˜˜4Ö ñ {ä*Ø W¨]Õ%;Ü-¨gÓ6Ü+JÈ7Ó+SôUˆ	ô
 	˜vÔ&Ø‡N�N�7ÔØ‡K�KÐ  $Ô'Ø	�×	 ×	 Øˆ�	ÑÜ%(¨¯©Ð5FÈÓ)JÓ%KÈaÕ%OˆÐ!Ñ"÷ 
!ô ˜Ó,€DÜ	ˆ.˜#Ô$Ü˜#Ô'Ø€Køô 	˜vÕ&ú÷ 
!×	 ús   ÁAD1 Ã+EÄ1D>ÅE	c               ó   € V ^8„  d   QhRR/# )r	   r   r   r   )r   s   "r   r   r   v  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   ÚregisterrA  v  s   € ä”“	˜6¨×/r   r†   )r!   )é   i°  ).Ú__conditional_annotations__Ú__doc__Ú
__future__r   r  r  Ú	threadingÚ
method_ctxr   r   Ú__annotations__ÚLockr5   r   r   r8   r   rA   rQ   rZ   r`   rh   rm   rÄ   rí   r(  r0  r>  rB  rS  r]  ri  rn  rq  r‚  r®  r´  Úcontextmanagerr¼  rÑ  r×  rü  rú  r   r:  rA  )rC  s   @r   Ú<module>rK     s  øðô_õ #ã ã Û å #ð 68€Ð2Ó 7Ø—n’nÓ&Ð ð ;=Ð Ð7Ó <àÐ Ø*Ð,=¸ÐP_Ø'¨ð:Ð õFõ6*õry÷Hõ1õIõjõ2÷j`õ<7G÷tH÷
@õ÷õ>Qõbò
+õQõ?õ0õB_ð
 ×Ññó ð÷$õ27õ",õ<õ?õD÷<0r   