+
    jHàj™<  ã                   óô   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht ]P                  ! ]4      tRtR tRR lt]P$                  R 4       tR tR	 tR
 tRR ltR tR t ! R R4      tR tR# )u»  Ink's ``/bg`` (``prompt.background``) and ``/btw`` (``prompt.btw``) on the shared owner.

Each verb replies ``{task_id}`` at once and the answer lands later on the parent session's event
stream as ``background.complete`` ``{task_id, text}`` / ``btw.complete`` ``{task_id, question,
text}`` (``error: <exc>`` on failure) â€” the sidecar's contract (``tui_gateway/methods_prompt.py``).
The side agent is detached: never an admission, never a FIFO turn, never a row in the parent
transcript. It runs on a daemon thread
under the owning profile's scope and the session's frozen launch policy (cwd, terminal, model
route, toolsets), so a session that never ran a turn (no resident agent) works the same.
)ÚpartialN)Ú	authorize)ÚRuntimeStoreErrorc           	      óf   € R \        \        V 4      R\        \        V 4      R\        \        V 4      /# )zprompt.backgroundz
prompt.btwzpreview.restart)r   Ú
backgroundÚbtwÚpreview_restart)Ú
connections   &Ú=/home/ubuntu/.hermes/hermes-agent/gateway/session_tui_side.pyÚhandlersr      s4   € Ø¤¬°ZÓ!@À,ÔPWÔX[Ð]gÓPhØœw¤¸
ÓCðEð Eó    c                ó”  a€ SP                  V4      p\        S4      RRV0Vm,
          '       gŸ   \        VP                  \        4      '       d   VP                  '       dm   \        V\        4      '       dW   VP                  4       '       dA   \        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d   \        R4      hV P                  pVP                  VP                  9  d   \        R4      h\        WSR4       VP                  V P                  9  d   \        R	4      hTP                  4        ^ R
IHp VP                  VP                  ,          p	V! VP                  V	P                   4      p
V
f   \        R	4      hWšWc R\"        P$                  ! 4       P&                  R,           23# )zXShared admission: ``(live, policy, text, task_id)`` or a refusal before any work starts.Ú
session_idÚprofilec              3   ó’   <"  € T F<  pSP                  V4      R J;'       d    \        SV,          \        4      '       * x € K>  	  R # 5i©N)ÚgetÚ
isinstanceÚstr©Ú.0ÚkeyÚparamss   & €r
   Ú	<genexpr>Ú_admit.<locals>.<genexpr>%   s:   øé € ÐhÑ_gÐX[�6—:‘:˜c“?¨$Ð.×SÐS´zÀ&ÈÅ+ÌsÓ7SÔ3SÔSÓ_gùs
   ƒA¢%ATFÚinvalid_paramsÚ	not_foundzsession:submitÚpermission_denied)Úpolicy_for_sourceÚ_:Né   N)r   Úsetr   r   r   ÚstripÚanyr   Ú	authorityÚsessionsr   ÚsubscriptionsÚ_require_admission_openÚgateway.session_policyr   ÚrunnerÚsourceÚuuidÚuuid4Úhex)r	   Úrefr   ÚprefixÚrequiredÚoptionalÚtextr$   r   ÚliveÚpolicys   &&f&&&     r
   Ú_admitr5       sS  ø€ à�:‰:�hÓ€DÜˆF‹�| Y°ÐD¸8ÐD×DÔDÌJÐWZ×WeÑWeÔgj×LkÒLkØ—>—>�>¬°D¼#×)>Ò)>ÀdÇjÁjÇlÂlß‹sÔhÑ_gÓh�s�sŠsÔhÑ_gÓh×hÒhÜÐ 0Ó1Ð1Ø×$Ñ$€IØ
‡~�~˜Y×/Ñ/Ô/Ü Ó,Ð,Üˆj˜vÐ'7Ô8à
‡~�~˜Z×5Ñ5Ô5ÜÐ 3Ó4Ð4Ø×%Ñ%Ô'Ý8Ø×Ñ˜cŸn™nÕ-€DÙ˜y×/Ñ/°·±Ó=€FØ‚~ÜÐ 3Ó4Ð4Ø˜ ¨¬4¯:ª:«<×+;Ñ+;¸BÕ+?Ð*@ÐAÐAÐAr   c              #  óÞ  "  € ^ RI HpHp ^ RIHpHp ^ RIHpHpH	p	 ^ RI
Hp
 V P                  pV
! V4      '       d	   V! V4      MRpV! V RR7      ;_uu_ 4        V! WR7      ;_uu_ 4        V! W"VP                  VR	7      p V! W4       R
x € V	! V4       V! V4        R
R
R
4       R
R
R
4       R
#   T	! T4       T! T4       i ; i  + '       g   i     L/; i  + '       g   i     R
# ; i5i)z¢The owning profile's home/secrets, the session's frozen policy, and the task's own session
identity (approval key, HERMES_SESSION_ID) for the side agent's thread.)Úowner_scopeÚserved_profile_name)Úclear_session_varsÚset_session_vars)Úbind_turn_workspaceÚpolicy_scopeÚunbind_turn_workspace)Ú_is_routed_homeÚ T)Úhydrate_secrets)r$   )Úsession_keyr   Úcwdr   N)Úgateway.session_authoritiesr7   r8   Úgateway.session_contextr9   r:   r(   r;   r<   r=   Útools.environments.localr>   Ú
profile_idrB   )r$   r4   Útask_idr7   r8   r9   r:   r;   r<   r=   r>   Úhomer   Útokenss   &&&           r
   Ú_side_scoperJ   7   sº   é € ÷ MßLß_Ñ_Ý8ð ×Ñ€DÙ+:¸4×+@Ò+@Ñ! $Ô'Àb€GÙ	�Y°×	5Ö	5±|ÀF×7`Ö7`Ù!¨gÈvÏzÉzÐcjÔkˆð	'ñ   Ô0Ûá! 'Ô*Ù˜vÕ&÷ 8a×	5Ñ	5øñ " 'Ô*Ù˜vÕ&ú÷ 8a×7`ú×	5×	5Ð	5üsN   ‚AC-ÁCÁ+C	ÂB1ÂC	ÂCÂ'
C-Â1CÃC	ÃCÃCÃC*	Ã$	C-c                ó4   € ^ RI Hp V! V P                  V4      # )zP``(model, runtime)`` the session's next turn would use: its frozen policy route.)Ú_resolve_policy_agent_runtime)Úgateway.run_turn_preparerL   r)   )r$   r4   rL   s   && r
   Ú_resolve_runtimerN   P   s   € åFÙ(¨×)9Ñ)9¸6ÓBÐBr   c                óŠ  € ^ RI Hp ^ RIHp ^ RIHp V P                  p\        W4      w  ršVP                  V 4      p^ RI	H
p V! W4      p\        VRR4      p\        R&RV	/\         Uu/ uF  qÿV
9   g   K  WúP                  V4      bK  	  upBV! V4      B/ RVP                  bR	R
bRRbR\!        VP#                  V4      4      bRT! VP                  R4      ;'       g    / P                  R4      4      ;'       g    RbRVP%                  W‚P&                  4      bRVP)                  W‚P&                  4      bR\        V
P                  R4      ;'       g    / 4      bRVP                  R4      bRVP                  R4      bRVP                  R4      bRVP                  R4      bRVP                  RR4      bRVP                  R4      bRVbR VP*                  bR!V P,                  bR"\/        V4      '       d   V! 4       MRbR#VP0                  '       * bR$VP0                  bR%R
bB pVP3                  V4       V! R&/ VB # u upi )'zPA fresh ``AIAgent`` on the session's frozen route (call inside ``_side_scope``).)Úparse_config_string_list)Ú_checkpoint_agent_kwargs)ÚAIAgent)Úsession_routingÚ_refresh_fallback_modelNÚmodelÚmax_iterationsÚ
quiet_modeTÚverbose_loggingFÚenabled_toolsetsÚdisabled_toolsetsÚagentÚreasoning_configÚservice_tierÚrequest_overridesÚproviders_allowedÚonlyÚproviders_ignoredÚignoreÚproviders_orderÚorderÚprovider_sortÚsortÚprovider_require_parametersÚrequire_parametersÚprovider_data_collectionÚdata_collectionr   ÚplatformÚ
session_dbÚfallback_modelÚload_soul_identityÚskip_memoryÚ
side_agent© )Úagent.skill_utilsrP   Úgateway.runrQ   Ú	run_agentrR   r)   rN   ÚconfigÚ gateway.session_worker_constructrS   ÚgetattrÚdictÚ_RUNTIME_KEYSr   Ú	max_turnsÚlistÚcurrent_toolsetsÚcurrent_reasoning_configÚrouteÚcurrent_service_tierrk   ÚdbÚcallableÚignore_rulesÚupdate)r$   r4   r3   rG   Ú	overridesrP   rQ   rR   r)   rU   Úruntimeru   rS   ÚprÚrefresh_fallbackr   Úkwargss   &&&&,            r
   Ú_side_agentr‰   V   sq  € å:Ý4Ý!Ø×Ñ€FÜ% iÓ8�N€EØ�]‰]˜9Ó%€FÝ@Ù	˜Ó	+€BÜ˜vÐ'@À$ÓGÐÜñ ØðÝ9FÓY¹°#ÐQXÉ.Ô-˜Ÿ[™[¨Ó-Ò-¹ÑYðá
" 6Ó
*òð ×'Ò'ðñ 59ðñ KPðô ˜f×5Ñ5°fÓ=Ô>ð	ñ
 3°F·J±J¸wÓ4G×4MÐ4MÈ2×3RÑ3RÐSfÓ3gÓh×pÐpÐlpøðð  ×8Ñ8¸ÇÁÔLðð ×0Ñ0°¿¹ÔDðô ˜wŸ{™{Ð+>Ó?×EÐEÀ2ÔFðð Ÿ&™& œ.ðð =?¿F¹FÀ8Ô<Lðð _a×^dÑ^dÐelÔ^mðð —f‘f˜V”nðð CEÇ&Á&ÐI]Ð_dÔBeðð "$§¡Ð(9Ô!:ðñ ðð &,§_¢_ðð BKÇÂðô .6Ð6F×-GÒ-GÑ'Ô)ÈTøðð  &×2Ñ2Õ2ðð AG×@SÒ@Sðñ  ñ!€Fð" ‡M�M�)ÔÙÑ�VÑÐùò# Zs   Á)I Á6I c                 ór   € V '       d   \        V ^ ,          RR4      MRp\        T;'       d    V! 4       4      # )é    Ú	abandonedN)rw   Úbool)ÚholderrŒ   s   & r
   Ú
_abandonedr�   v   s-   € ß9?”˜˜q�	 ;°Ô5ÀT€IÜ�	×)Ð)™i›kÓ*Ð*r   c                ó¢  a aaaaaaaa	a
a€ ^ RI Ho
 S;'       g    / o\        S RR4      oSf
   / ;oS n         \        P
                  ! 4       o	V VVVVVV	V
VVV3R lp\        P                  ! VRS 2RR7      oSSS&    SP                  4        S
! S 4       RS/#   \         d    Ro	 L]i ; i  \         d    SP                  SR4       h i ; i)	a¡  Run ``body()`` on a daemon thread; publish its text (or ``error: <exc>``) on the session.

The thread is owner work until it unwinds: the authority's ``_side_agents`` ledger is counted by
the restart wait, the shutdown drain, the SessionDB close gate and idle exit
(``session_runtime_workers.uncounted_runtime_work``), and profile retirement interrupts
``holder[0]`` (the side agent, once built) and joins the thread.)Úpersist_work_countÚ_side_agentsNc            	      óÀ  <€   S! 4       p SP                  P                  SP                  4      pVeU   \        S
4      '       gD   VP                  P                  SP                  RS/S	CR\        T ;'       g    R	4      /CSR7       SP                  SR4       Se@   \        P                  ! \        4      ;_uu_ 4        SP                  SS4       RRR4       R# R#   \          dt   p\        P                  R SRR7       \        TRR4      \        TRR4      r2T'       d   T'       d
   RT RT R2MR	pR
\        TRR4      ;'       g    T T 2p  Rp?ELMRp?ii ; i  + '       g   i     R# ; i  SP                  SR4       SeR   \        P                  ! \        4      ;_uu_ 4        SP                  SS4       RRR4       i   + '       g   i     i ; ii ; i)zSide agent %s failedT)Úexc_infoÚfieldNÚdetailz (z: Ú)r?   zerror: ÚreasonrG   r2   ©Ú
event_type)Ú	ExceptionÚloggerÚwarningrw   r%   r   r   r�   Úevent_streamÚpublishr   ÚpopÚ
contextlibÚsuppressÚRuntimeErrorÚcall_soon_threadsafe)r2   Úexcr•   r–   Únamedr3   r$   Úbodyrš   ÚextrarŽ   ÚledgerÚloopr‘   r.   rG   Úthreads         €€€€€€€€€€€r
   ÚrunÚ_spawn.<locals>.runŒ   s¥  ø€ ð	MðNÙ“v�ð ×%Ñ%×)Ñ)¨#¯.©.Ó9ˆDØÒ¬
°6×(:Ò(:Ø×!Ñ!×)Ñ)¨#¯.©.¸9ÀgÐ:pÐQVÐ:pÐX^Ô`cÐdh×dnÐdnÐlnÓ`oÑ:pØ5?ð *ô Að �J‰J�v˜tÔ$ØÒä×(Ò(¬×6Õ6Ø×-Ñ-Ð.@À)ÔL÷ 7Ñ6ñ  øô ô NÜ—‘Ð5°wÈ�ÔNä '¨¨W°dÓ ;¼WÀSÈ(ÐTXÓ=Y�vß38¿V˜"˜U˜G 2 f X¨QÑ/È�Ø ¤¨¨h¸Ó!=×!DÐ!DÀÐ EÀeÀWÐM–ûðNú÷ 7×6Ð6ûð �J‰J�v˜tÔ$ØÒä×(Ò(¬×6Õ6Ø×-Ñ-Ð.@À)ÔL÷ 7×6×6Ð6úð  úsf   „C ‹A-E4 Á9E4 Ã E ÃEÃ*A EÄ+EÅEÅE4 ÅEÅE4 Å E1	Å49GÆ-G		Ç 	GÇ	GÇ	Gzside-agent-T)ÚtargetÚnameÚdaemonrG   )Úgateway.session_runtime_workersr‘   rw   r’   ÚasyncioÚget_running_loopr£   Ú	threadingÚThreadÚstartÚBaseExceptionr    )r$   r.   rG   rš   r§   r¨   rŽ   r¬   r©   rª   r‘   r«   s   fffffff @@@@r
   Ú_spawnr¸   {   sÕ   ÿú€ õ CØ�KˆK�R€EÜ�Y °Ó5€FØ‚~Ø*,Ð,ˆ�Ô'ðÜ×'Ò'Ó)ˆ÷M÷ Mô. ×Ò S°¸W¸IÐ/FÈtÔT€FØ€Fˆ6�NðØ�‰Œñ �yÔ!Ø�wÐÐøôE ô ØŠðûô< ô Ø�
‰
�6˜4Ô Øðús   ¹B Â B/ ÂB,Â+B,Â/Cc           	   ƒ  ó�   aaaaaa	"  € \        WVR4      w  ooo	oV P                  oR.oVVVVVV	3R lp\        SVSRVSR7      # 5i)zU``/bg <prompt>``: a fresh agent on the session's route runs the prompt to completion.ÚbgNc                  ó  <€ ^ RI Hp  \        SSS4      ;_uu_ 4        \        SSSS4      ;pS^ &    VP	                  SSR7      p\
        P                  ! \        4      ;_uu_ 4        VP                  4        RRR4       RRR4       T ! X4      #   + '       g   i     L ; i  \
        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       i   + '       g   i     i ; i; i  + '       g   i     L~; i)r‹   )Ú_final_response_text)Úuser_messagerG   N)	Útui_gateway.methods_promptr¼   rJ   r‰   Úrun_conversationr¡   r¢   r›   Úclose)	r¼   r[   Úresultr$   rŽ   r3   r4   rG   r2   s	      €€€€€€r
   r§   Úbackground.<locals>.body´   sµ   ø€ ÝCÜ˜ F¨G×4Õ4Ü +¨I°v¸tÀWÓ MÐMˆE�F˜1‘Ið"Ø×/Ñ/¸TÈ7Ð/ÓS�ô  ×(Ò(¬×3Õ3Ø—K‘K”M÷ 4÷ 5ñ $ FÓ+Ð+÷ 4×3û”Z×(Ò(¬×3Õ3Ø—K‘K”M÷ 4×3×3Ð3ý÷ 5×4úsR   �C6²B#Á"C6Á'B	Á8C6ÂB ÂC6Â##C3ÃC Ã	C3Ã C0Ã+C3Ã3C6Ã6D	zbackground.complete©rŽ   )r5   r$   r¸   )
r	   r.   r   r§   r$   rŽ   r3   r4   rG   r2   s
   &&& @@@@@@r
   r   r   ®   sQ   ýé € ä"(¨¸&À$Ó"GÑ€Dˆ&�$˜Ø×$Ñ$€IØˆV€F÷
,ò 
,ô �)˜S 'Ð+@À$ÈvÔVÐVùs   ˆ>Ac           
   ƒ  óH  aaaaa	a
aaa"  € \        V SVR4      w  po	ooV P                  oSP                  S4      o\        \	        SRR4      ;'       g    . 4      o
^ RIHp S
'       d   RMV! SS4      o\        4       oVVVV	VV
VVV3	R lp\        SSSRVRS/S.R7      # 5i)	zž``/btw <question>``: a side question over a snapshot of the conversation
(``agent/side_question.py``); the live history, FIFO and prompt cache stay untouched.r   Ú_session_messagesN©Útranscript_targetc                  ó¶  <	€ ^ RI Hp  S;'       g    SP                  P                  S4      p\	        SS	S4      ;_uu_ 4        \        SS	4      w  r#RVRS
P                  /R Uu/ uF  qDVP                  V4      bK  	  upCpV ! SVSVSP                  SP                  P                  R7      ;'       g    RuuRRR4       # u upi   + '       g   i     R# ; i)r‹   )Úanswer_side_questionrU   r   )Úparent_agentÚmain_runtimeÚon_forkÚshould_stopr?   N)ÚproviderÚbase_urlÚapi_keyÚapi_mode)Úagent.side_questionrÉ   r€   Úget_messages_as_conversationrJ   rN   r   r   Úset_forkÚstoppedÚis_set)rÉ   ÚhistoryrU   r…   r   rË   r[   r$   Úhandler4   r.   Úsnapshotr®   rG   r2   s         €€€€€€€€€r
   r§   Úbtw.<locals>.bodyÑ   sÈ   ø€ Ý<Ø×OÐO˜iŸl™l×GÑGÈÓOˆÜ˜ F¨G×4Õ4Ü-¨i¸Ó@‰NˆEØ# U¨L¸#¿.¹.ð rÙ@oÓpÑ@o¸ G§K¡K°Ó$4Ò4Ñ@oÑpðrˆLá'¨¨gÀEÐXdØ06·±ÈVÏ^É^×MbÑMbôd÷ jð jØgi÷ 5Ò4ùò q÷ 5×4Ð4ús$   Á"CÁ$C
Á>6CÂ5CÃCÃC	zbtw.completeÚquestion)r¨   rŽ   )	r5   r$   r[   r{   rw   Úgateway.session_local_recoveryrÇ   Ú_SideQuestionStopr¸   )r	   r.   r   Ú_liverÇ   r§   r[   r$   rØ   r4   rÙ   r®   rG   r2   s   &f&   @@@@@@@@r
   r   r   Ã   s¤   ÿøé € ô $*¨*°c¸6À5Ó#IÑ €Eˆ6�4˜Ø×$Ñ$€Ið �O‰O˜CÓ €EÜ”G˜EÐ#6¸Ó=×CÐCÀÓD€HÝ@ß‰TÑ#4°YÀÓ#D€FäÓ €F÷jõ jô �)˜S '¨>¸4È
ÐTXÐGYÐciÐbjÔkÐkùs   ‹AB"Á*8B"c                   ó@   a € ] tR t^Þt o RtR tR tRR ltR tRt	V t
R# )	rÝ   a  ``/btw``'s holder: retirement and shutdown interrupt its cache-parity fork, and once stopped
the read-only one-shot fallback (an uncancellable aux call of up to 180 s that writes nothing)
no longer holds owner work, so it cannot keep a retiring profile's reservation.c                ó|   € \         P                  ! 4       V n        \         P                  ! 4       V n        R V n        R # r   )r´   ÚEventrÕ   ÚLockÚ_lockÚ_fork©Úselfs   &r
   Ú__init__Ú_SideQuestionStop.__init__ã   s%   € Ü —’Ó(ˆŒÜ—^’^Ó%ˆŒ
ØˆŽ
r   c                óä   € V P                   ;_uu_ 4        Wn        R R R 4       Ve6   V P                  P                  4       '       d   V P	                  R4       R # R # R #   + '       g   i     LK; i)NzProfile runtime is stopping)rã   rä   rÕ   rÖ   Úhard_interrupt)ræ   Úforks   &&r
   rÔ   Ú_SideQuestionStop.set_forkè   sL   € Ø�Z�Z‹ZØŒJ÷ àÒ §¡× 3Ñ 3× 5Ò 5Ø×ÑÐ =Ö>ñ !6Ñ÷ �Zús   •AÁA/	Nc                óÚ   € V P                   P                  4        V P                  ;_uu_ 4        V P                  pR R R 4       Xe   ^ RIHp V! W!4       R # R #   + '       g   i     L&; i)N)Úrequest_hard_interrupt)rÕ   r!   rã   rä   Úagent.interrupt_compatrî   )ræ   Úmessagerë   rî   s   &&  r
   rê   Ú _SideQuestionStop.hard_interruptî   sG   € Ø�‰×ÑÔØ�Z�Z‹ZØ—:‘:ˆD÷ àÒÝEÙ" 4Ö1ñ ÷ �Zús   ¯AÁA*	c                óÈ   € V P                   ;_uu_ 4        V P                  P                  4       ;'       d    V P                  RJ uuRRR4       #   + '       g   i     R# ; i)zPStopped with no fork running: what is left publishes nothing and writes nothing.N)rã   rÕ   rÖ   rä   rå   s   &r
   rŒ   Ú_SideQuestionStop.abandonedö   s8   € à�Z�Z‹ZØ—<‘<×&Ñ&Ó(×?Ð?¨T¯Z©Z¸4Ð-?÷ �Z�Z‹Zús   •0AÁA!	)rä   rã   rÕ   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rç   rÔ   rê   rŒ   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r
   rÝ   rÝ   Þ   s&   ø‡ € ñWòò
?ô2÷@ð @r   rÝ   c           
   ƒ  óø   aaaaaaa	a
aaaa"  € \        V SSRRRR7      w  o	o
ooV P                  oV3R lR 4       w  oo^ RIHp V! SS4      oR.oVVV3R loVVVVV	V
VVVV3
R lp\	        SSSR	VSR
7      # 5i)ac  Desktop preview pane "restart dev server": a hidden terminal+file agent brings the preview
URL's server back up (rules: ``tui_gateway/methods_prompt.py`` ``_PREVIEW_RESTART_RULES``).
Detached like ``/bg``; progress rides ``preview.restart.progress``, the answer
``preview.restart.complete`` ``{task_id, text}``. Context is the session's stored transcript.ÚpreviewÚurl)r0   r1   c              3   óˆ   <"  € T F7  p\        SP                  V4      ;'       g    R 4      P                  4       x € K9  	  R# 5i)r?   N)r   r   r"   r   s   & €r
   r   Ú"preview_restart.<locals>.<genexpr>  s4   øé € ÐUÑBT¸3”C˜Ÿ
™
 3›×-Ð-¨2Ó.×4Ñ4×6Ð6ÓBTùs
   ƒ!A¥ArÆ   Nc                 ó  <€ \        T ;'       g    R 4      P                  4       ;p '       dZ   SP                  P                  SP                  4      ;pe/   VP
                  P                  SP                  RSRV /RR7       R# R# R# )r?   NrG   r2   zpreview.restart.progressr™   )r   r"   r%   r   r   rž   rŸ   )r2   Ústreamr$   r.   rG   s   & €€€r
   ÚprogressÚ!preview_restart.<locals>.progress	  s{   ø€ Ü˜Ÿ
˜
 “O×)Ñ)Ó+Ð+ˆDÖ+¸I×<NÑ<N×<RÑ<RÐSV×SaÑSaÓ<bÐ2b°&Ò1oØ×Ñ×'Ñ'¨¯©¸ÀGÈVÐUYÐ8ZØ3Mð (ö Oñ 2pÑ+r   c                  ó  <
€ ^ RI Hp  ^ RIHpHpHp V! S4      pT ! S'       d   SP                  P                  S4      M. 4      pV! SSS\        V4      4      p\        SSS4      ;_uu_ 4        V'       d   ^ RI
Hp V! SRV/4        S! R4       \        SSSSRR.RRR	V3R
 lR7	      pVS^ &   TP                  TST;'       g    RR7      p	\        P                  ! \         4      ;_uu_ 4        ^ RI
Hp
 V
! S4       RRR4       RRR4       T! X	4      #   + '       g   i     L ; i  \        P                  ! \         4      ;_uu_ 4        ^ RI
Hp
 T
! S4       RRR4       i   + '       g   i     i ; i; i  + '       g   i     L|; i)r‹   )Ú_preview_restart_history)r¼   Ú_preview_restart_promptÚ_validated_preview_cwd)Úregister_task_env_overridesrB   zStarting hidden restart agentÚterminalÚfileNTc                 ó   <€ S! R V 24      # )zRunning rq   )Ú_idr¯   Ú_argsr  s   &&&€r
   Ú<lambda>Ú/preview_restart.<locals>.body.<locals>.<lambda>  s   ø€ ÑQYÐ\dÐeiÐdjÐZkÔQlr   )rY   rZ   rl   ro   Útool_start_callback)r½   rG   Úconversation_history)Úclear_task_env_overrides)Útui_gateway.agent_callbacksr  r¾   r¼   r  r  r€   rÓ   r�   rJ   Útools.terminal_toolr	  r‰   r¿   r¡   r¢   r›   r  )r  r¼   r  r  Úpreview_cwdr×   Úpromptr	  r[   rÁ   r  r$   ÚcontextrB   rŽ   r3   r4   r  r®   rG   rþ   s              €€€€€€€€€€r
   r§   Úpreview_restart.<locals>.body  sK  ø€ ÝH÷	Hñ 	Há,¨SÓ1ˆÙ*×`f¨9¯<©<×+TÑ+TÐU[Ô+\ÐlnÓoˆÙ(¨¨c°7¼DÀ»MÓJˆÜ˜ F¨G×4Õ4ßÝKÙ+¨G°e¸[Ð5IÔJð6ÙÐ8Ô9ô $ I¨v°t¸WÐXbÐdjÐWkØ6:ÀtÐY]Ü8lôn�ð "��q‘	Ø×/Ñ/¸VÈWØELÇ_À_ÐPTð 0ó V�ô  ×(Ò(¬×3Õ3ÝLÙ,¨WÔ5÷ 4÷ 5ñ$ $ FÓ+Ð+÷ 4×3û”Z×(Ò(¬×3Õ3ÝLÙ,¨WÔ5÷ 4×3×3Ð3ý÷ 5×4úsZ   Á.E;Â	<D*ÃD*Ã"E;Ã0D	Ã?E;ÄD'Ä"E;Ä*#E8ÅE%Å	E8Å%E5Å0E8Å8E;Å;F	zpreview.restart.completerÃ   )rB   r  )r5   r$   rÜ   rÇ   r¸   )r	   r.   r   rÇ   r§   r$   r  rB   rŽ   r3   r4   r  r®   rG   rþ   s   &ff  @@@@@@@@@@r
   r   r   ü   s„   ÿûé € ô
 "(¨
°C¸ÀÐUZØ1Cô"EÑ€Dˆ&�#�wà×$Ñ$€IÜUÑBTÓU�L€CˆÝ@Ù˜y¨#Ó.€FØˆV€F÷O÷
,ö ,ô6 �)˜S 'Ð+EÀtÐTZÔ[Ð[ùs   ŽA,A:)
rÐ   rÏ   rÎ   Úrequested_providerrÑ   ÚcommandÚargsÚcredential_poolÚ
max_tokensÚcapabilities)r2   rq   )NN)rø   Ú	functoolsr   r²   r¡   Úloggingr´   r+   Úgateway.session_busy_controlsr   Úhermes_state_runtimer   Ú	getLoggerrô   rœ   ry   r   r5   ÚcontextmanagerrJ   rN   r‰   r�   r¸   r   r   rÝ   r   rq   r   r
   Ú<module>r&     s—   ðñ	õ Û Û Û Û Û å 3Ý 2à	×	Ò	˜8Ó	$€ðB€òEô
Bð. ×Ññ'ó ð'ò0Còò@+ô
0 òfWò*l÷6@ñ @ô<-\r   