+
    lHàj€Q  ã            
      ó²  € R t ^ RIHt ^ RIt^ RIt^RIHtHt ]! 4       tRs	]P                  ! 4       tRtR;R R lltR;R R lltR;R	 R
 lltR<R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR<R' R( lltR)R*R+RR,R-R.R/R0R/R1 R2 lltR3 R4 lt R;R5 R6 llt!R7 R8 lt"R9 R: lt#R# )=a  Compute-host (turn isolation) bridge: relay prompts/controls to the child process and
mirror its metadata/clarify/compress acks back into the session. Bodies are rebound onto
server.py's globals at install time (method_ctx.bind_module), so they use them bare.)ÚannotationsN)ÚHandlerRegistryÚbind_moduleg     °ƒ@c               ó    € V ^8„  d   QhRRRR/# )é   Úcfgúdict | NoneÚreturnÚbool© )Úformats   "ÚD/home/ubuntu/.hermes/hermes-agent/tui_gateway/compute_host_bridge.pyÚ__annotate__r      s   € ÷ [ñ [ ð [¸ñ [ó    c                ó¦   € \         P                  P                  R 4      R8X  d   R# \        T ;'       g    \	        4       P                  R4      4      # )ÚHERMES_COMPUTE_HOST_CHILDÚ1FÚturn_isolation)ÚosÚenvironÚgetr
   Ú(_load_dashboard_process_isolation_config)r   s   &r   Ú_turn_isolation_enabledr      s>   € Ü	‡z�z‡~�~Ð1Ó2°cÔ9ÙÜ�×BÐBÔ@ÓB×GÑGÐHXÓYÓZÐZr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚsessionÚdictr   r   r	   r
   r   )r   s   "r   r   r      s&   € ÷ Vñ V¨ð V°;ð VÈ$ñ Vr   c                óÈ   € \        V4      ;'       dQ    \        V P                  R 4      4      ;'       g/    V P                  R4      RJ ;'       d    V P                  R4      RJ# )Ú_compute_host_activeÚagentNÚagent_ready)r   r
   r   )r   r   s   &&r   Ú_session_uses_compute_hostr       sc   € ô # 3Ó'÷ Vð VÜˆW�[‰[Ð/Ó0Ó1÷ 	Uð 	UØ�K‰K˜Ó  DÐ(×SÐS¨W¯[©[¸Ó-GÈtÐ-SðVr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   %   s   € ÷ 
(ñ 
( kñ 
(r   c                óR  € T ;'       g    \        4       p\        ;_uu_ 4        \        fZ   ^ RIHp T! \
        \        VP                  R4      ;'       g    ^4      \        VP                  R4      ;'       g    ^4      R7      s\        uuR R R 4       #   + '       g   i     R # ; i)N)ÚHostSupervisorÚcompute_host_heartbeat_secsÚcompute_host_respawn_max)Úrpc_sinkÚheartbeat_secsÚrespawn_max)r   Ú_compute_host_supervisor_lockÚ_compute_host_supervisorÚtui_gateway.host_supervisorr#   Ú_relay_compute_host_rpcÚintr   )r   Úisolation_cfgr#   s   &  r   Ú_get_compute_host_supervisorr/   %   s   € à×EÐEÔCÓE€Mß	&Ö	&Ü#Ò+ÝBÙ'5Ü0Ü" =×#4Ñ#4Ð5RÓ#S×#YÐ#YÐWYÓZÜ × 1Ñ 1Ð2LÓ M× RÐ RÐQRÓSô(UÐ$ô (÷ 
'×	&×	&Ó	&ús   £2BÁ"BÁ9BÂB&	c               ó<   € V ^8„  d   QhRRRRRRRRRR	R
RRRRRRR/	# ©r   ÚridÚstrÚsidr   r   ÚtextÚAnyÚimage_pathszlist[str] | NoneÚqueued_prompt_generationz
int | NoneÚdisplay_kindú
str | NoneÚdisplay_metadatar   r	   r   )r   s   "r   r   r   2   sc   € ÷ $Fñ $FØ	ð$FØð$FØ!%ð$FØ-0ð$FØ?Oð$Fà(ð$Fà?Ið$Fð "ð$Fð .2ñ$Fr   c           !     óP  € VR ,          ;_uu_ 4        \        VP                  R. 4      4      p\        VP                  R^ 4      4      p	\        Ve   TMVP                  R. 4      4      p
RRR4       RRRTRT R	VP                  R	4      ;'       g    TR
V/V'       d   RV/M/ CRX/CV'       d   RV/M/ CRX	R\        VP                  R^P4      ;'       g    ^P4      R\        V4      R\	        VP                  R4      4      R\        V4      RVP                  R4      ;'       g    RRVP                  R4      RVP                  R4      RVP                  R4      RVP                  R4      R\        V4      RX
R\        V4      RVR\        V4      /C#   + '       g   i     EL3; i)Úhistory_lockÚhistoryÚhistory_versionNÚattached_imagesÚtypez
turn.startr4   Ú
request_idÚsession_keyr5   r9   r;   ÚcolsÚcwdÚexplicit_cwdÚcontext_cwd_is_launch_artifactÚprofile_homeÚ Úmodel_overrideÚpending_model_switchÚreasoning_config_overrideÚcreate_reasoning_overrideÚservice_tier_overrideÚcreate_service_tier_overrideÚsourceÚauth_user_idr8   Úactive_session_lease)	Úlistr   r-   Ú_session_cwdr
   Ú_context_cwd_is_launch_artifactÚ_session_sourceÚ_session_auth_user_idÚ_active_session_lease_vouch)r2   r4   r   r5   r7   r8   r9   r;   r>   r?   r@   s   &&&&&&&&   r   Ú_compute_host_turn_framerY   2   s«  € ð 
�×	 ×	 Ü�w—{‘{ 9¨bÓ1Ó2ˆÜ˜gŸk™kÐ*;¸QÓ?Ó@ˆÜ¨kÒ.E™{È7Ï;É;ÐWhÐjlÓKmÓnˆ÷ 
!ð
 	�˜e S¨,¸Ø�w—{‘{ =Ó1×8Ð8°S¸&À$ðF÷ .:ˆN˜LÑ)¸rðFð ENÈwñF÷ 6FÐÐ 0Ñ1È2ð	Fð
 	˜?¨F´C¸¿¹ÀFÈBÓ8O×8UÐ8UÐSUÓ4VØŒ|˜GÓ$àœ˜WŸ[™[¨Ó8Ó9Ø(Ô*IÈ'Ó*RØ˜Ÿ™ NÓ3×9Ð9°rØ˜'Ÿ+™+Ð&6Ó7ð 	 §¡Ð,BÓ CØ# W§[¡[Ð1LÓ%MØ §¡Ð-KÓ!LØ”/ 'Ó*Ð,=¸ØÔ-¨gÓ6Ø"Ð$<ð
 	Ô ;¸GÓ Dñ9Fð F÷	 
!×	 Ð	 ús   ’AFÆF%	c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r	   r   r   )r   s   "r   r   r   Y   s   € ÷ 	Rñ 	R¨ð 	R°+ñ 	Rr   c                óP  € V P                  R4      pVe'   \        VRR4      '       g   \        VRR4      '       g   R# \        VP                  4      \        V P                  R4      ;'       g    R4      8w  d   R# R\        VP                  4      R	\        VP                  4      /# )
a  ``{lease_id, session_id}`` of the REAL registry lease this process holds for the session's
current stored id, else None. Qualified, not a bare bool: after a compression rotation a lease
still keyed on the old id must not let a (replacement) child borrow the continuation.rR   NÚreleasedFÚenabledrC   rI   Úlease_idÚ
session_id)r   Úgetattrr3   r_   r^   )r   Úleases   & r   rX   rX   Y   sˆ   € ð �K‰KÐ.Ó/€EØ‚}œ  z°5×9Ò9ÄÈÐPYÐ[`×AaÒAaÙÜ
ˆ5×ÑÓ¤ G§K¡K°Ó$>×$DÐ$DÀ"Ó EÔEÙØœ˜EŸN™NÓ+¨\¼3¸u×?OÑ?OÓ;PÐQÐQr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r	   r   r   )r   s   "r   r   r   e   s   € ÷ 6ñ 6˜kð 6¨dñ 6r   c                ól   € T ;'       g    / P                  R 4      p\        V\        4      '       d   V# / # )Ú_metadata_mirror©r   Ú
isinstancer   )r   Úmirrors   & r   rd   rd   e   s0   € Ø�mˆm˜× Ñ Ð!3Ó4€FÜ ¬×-Ò-ˆ6Ð5°2Ð5r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r	   r   )r   s   "r   r   r   j   s   € ÷ 8ñ 8¨ð 8°ñ 8r   c                ó8   € \        V P                  R 4      V 4      # )r   )Ú_session_infor   ©r   s   &r   Ú_compute_host_session_inforl   j   s   € Ü˜Ÿ™ WÓ-¨wÓ7Ð7r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   Úframer	   ÚNoner   )r   s   "r   r   r   n   s&   € ÷ Uñ U¨Dð U¸ð UÀ$ñ Ur   c           
     óÊ  € \        VP                  R4      ;'       g    R4      pV'       d™   T\        V P                  R4      ;'       g    R4      8w  dp   \        \        VP                  R4      ;'       g    R4      WR7      '       g7   \        P	                  RVP                  R4      V P                  R4      V4       W R&   VP                  R4      ex   \
        P                  ! \        4      ;_uu_ 4        \        \        V P                  R^ 4      4      \        VP                  R4      ;'       g    ^ 4      4      V R&   RRR4       R# R#   + '       g   i     R# ; i)ud  Adopt a host frame's session_key / history_version. Caller holds history_lock.

A rotated ``session_key`` means the child compressed A->B. The child only holds an inert
borrowed token (``_install_borrowed_lease``), so the REAL registry lease is re-anchored here,
by its owner â€” never claimed from the child pid (authority stays singular, #103737 review).rC   rI   r4   )Únew_session_idzWCompression session lease did not re-anchor: sid=%s old_session_id=%s new_session_id=%sr?   N)
r3   r   Ú_transfer_active_session_slotÚloggerÚwarningÚ
contextlibÚsuppressÚ	ExceptionÚmaxr-   )r   rn   Únew_keys   && r   Ú_compute_host_adopt_frame_metarz   n   s  € ô �%—)‘)˜MÓ*×0Ð0¨bÓ1€Gß�7œc '§+¡+¨mÓ"<×"BÐ"BÀÓCÔCÜ,¬S°·±¸5Ó1A×1GÐ1GÀRÓ-HÈ'×jÓjÜ�N‰NÐtØ Ÿ9™9 UÓ+¨W¯[©[¸Ó-GÈôRà!(�ÑØ‡y�yÐ"Ó#Ò/Ü× Ò ¤×+Õ+Ü),¬S°·±Ð=NÐPQÓ1RÓ-SÜ-0°·±Ð;LÓ1M×1RÐ1RÐQRÓ-Só*UˆGÐ%Ñ&÷ ,Ñ+ñ 0ß+×+Ð+ús   Ã:AEÅE"	c               ó    € V ^8„  d   QhRRRR/# )r   Úmessager   r	   r
   r   )r   s   "r   r   r   €   s   € ÷ !ñ ! Tð !¨dñ !r   c           
     óš  € \        V \        4      '       d   V P                  R4      MRp\        V \        4      '       dç   V P                  R4      R8X  dÑ   \        V\        4      '       d¹   \        P                  \	        VP                  R4      ;'       g    R4      4      pVe~   \        V4      ;_uu_ 4        VP                  R4      '       dI   VP                  R4      '       d2   VP                  R	4      VR,          8X  d   VP                  R
4      VR&   RRR4       R# R# \        V \        4      '       dƒ   V P                  R4      R8X  dm   \        V\        4      '       dW   VP                  R4      '       g@   \        \	        VP                  R4      ;'       g    R4      VP                  R4      4       R# \        V \        4      '       dÙ   \        V P                  R4      \        4      '       d´   V P                  R4      R9  dž   \        V\        4      '       dB   \        P                  \	        T;'       g    / P                  R4      ;'       g    R4      4      MRpVe@   \        V4      ;_uu_ 4        RV R,          RV R,          R\        V4      /VR&   RRR4       MÝMÜ\        V\        4      '       dÇ   VP                  R4      R8X  d±   \        P                  \	        VP                  R4      ;'       g    R4      4      pVP                  R4      pVee   \        V\        4      '       dO   \        V4      ;_uu_ 4        \        W#P                  R4      4      '       d   VP                  RR4       RRR4       \        V 4      #   + '       g   i     R# ; i  + '       g   i     L/; i  + '       g   i     LB; i)uŸ   Relay host frames to the client while mirroring the serverâ†’client request the host has open, so a
reconnecting client gets it back through ``open_requests``.ÚparamsNÚmethodzcompute_host.activityr_   rI   ÚrunningÚturn_idÚ_compute_host_turn_idÚactivity_nsÚ_compute_host_activity_nsTÚeventrA   ÚpayloadÚidÚ_compute_host_open_requestzrequest.cancel)Nr…   )
rf   r   r   Ú	_sessionsr3   Ú_history_lockÚ_broadcast_global_eventÚ_open_request_matchesÚpopÚ
write_json)r|   r~   r   r†   s   &   r   r,   r,   €   s¸  € ô '1°¼$×&?Ò&?ˆW�[‰[˜Ô"ÀT€FÜ�'œ4× Ò  W§[¡[°Ó%:Ð>UÔ%UÜ�fœd×#Ò#Ü—m‘m¤C¨¯
©
°<Ó(@×(FÐ(FÀBÓ$GÓHˆGØÒ"Ü" 7×+Õ+ØŸ™ I×.Ò.°6·:±:¸i×3HÒ3HØ '§¡Ð,CÓ DÈÈyÕHYÔ YØ?E¿z¹zÈ-Ó?X˜Ð ;Ñ<÷ ,ó Ü�7œD×!Ò! g§k¡k°(Ó&;¸wÔ&FÌ:ÐV\Ô^b×KcÒKcØ—J‘J˜|×,Ò,ô 	 ¤ F§J¡J¨vÓ$6×$<Ð$<¸"Ó =¸v¿z¹zÈ)Ó?TÔUÙÜ�'œ4× Ò ¤Z°·±¸DÓ0AÄ3×%GÒ%GÈGÏKÉKÐX`ÓLaÐixÔLxäPZÐ[aÔcg×PhÒPh”)—-‘-¤ V§\ \¨r×$6Ñ$6°|Ó$D×$JÐ$JÈÓ KÔLÐnrˆØÒÜ˜w×'Õ'à˜' $�-¨°7¸8Õ3DÀhÔPTÐU[ÓP\ð9^�Ð4Ñ5÷ (Ð'ð ô 
�FœD×	!Ò	! f§j¡j°Ó&8Ð<LÔ&LÜ—-‘-¤ F§J¡J¨|Ó$<×$BÐ$BÀÓ CÓDˆØ—*‘*˜YÓ'ˆØÒ¤:¨g´t×#<Ò#<Ü˜w×'Õ'Ü(¨·+±+¸dÓ2C×DÒDØ—K‘KÐ <¸dÔC÷ (ô �gÓÐ÷3 ,Ö+ñ ú÷ (×'ú÷ (×'ús*   Â:.NÃ)1NÉ?#N'Í3N:ÎN$	Î'N7	Î:O
	c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   ¤   s   € ÷ 9ñ 9˜4ñ 9r   c                óL   € V P                  R \        P                  ! 4       4      # )r=   )r   Ú	threadingÚLockrk   s   &r   rŠ   rŠ   ¤   s   € Ø�;‰;�~¤y§~¢~Ó'7Ó8Ð8r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r	   r
   r   )r   s   "r   r   r   ¨   s   € ÷ Kñ K 4ð K¸ñ Kr   c                ó|   € V P                  R4      p\        V\        4      ;'       d    VP                  R4      V8H  # )zYWhether ``session``'s mirrored open request is ``request_id``. Caller holds history_lock.rˆ   r‡   re   )r   rB   Úmirroreds   && r   rŒ   rŒ   ¨   s4   € à�{‰{Ð7Ó8€HÜ�h¤Ó%×JÐJ¨(¯,©,°tÓ*<À
Ñ*JÐJr   c               ó    € V ^8„  d   QhRRRR/# )r   rB   r3   r	   ztuple[str, dict] | Noner   )r   s   "r   r   r   ®   s   € ÷ ñ ¨cð Ð6Mñ r   c                ó  € V '       d   \        \        P                  4       4      MR FB  w  r\        V4      ;_uu_ 4        \	        W 4      '       d   W3uuRRR4       u #  RRR4       KD  	  R#   + '       g   i     KY  ; i)z9Find the parent mirror for one host-owned server request.Nr   )rS   r‰   ÚitemsrŠ   rŒ   )rB   r4   r   s   &  r   Ú_compute_host_request_sessionr™   ®   sa   € ç3=œœYŸ_™_Ó.Ô/À2ÒE‰ˆÜ˜7×#Õ#Ü$ W×9Ò9Ø�|÷ $Ô#Ø9÷ $Ñ#ñ Fñ ÷ $×#Ð#ús   Á A0Á0Bc               ó    € V ^8„  d   QhRRRR/# )r   rn   r   r	   r
   r   )r   s   "r   r   r   ·   s   € ÷ ñ ¨ð °ñ r   c                óÆ  € \        \        V P                  R4      ;'       g    R4      4      pVe   \        V^,          4      '       g   R# Vw  r#\	        V4      ;_uu_ 4        VP                  RR4       RRR4        \        4       P                  VR\        V 4      /4       R#   + '       g   i     L8; i  \         d    \        P                  RTRR	7        R# i ; i)
ztForward a client's response frame to the compute-host child that owns the request. False when no
child owns that id.r‡   rI   NFrˆ   rn   z)compute-host response relay failed sid=%sT©Úexc_info)r™   r3   r   r    rŠ   r�   r/   Úrespondr   rw   rs   Údebug)rn   Úlocatedr4   r   s   &   r   Ú_relay_compute_host_responser¡   ·   s¹   € ô ,¬C°·	±	¸$³×0EÐ0EÀ2Ó,FÓG€GØ‚Ô8¸À½×DÒDÙØ�L€CÜ	�w×	Õ	Ø�‰Ð0°$Ô7÷ 
 ðVÜ$Ó&×.Ñ.¨s°W¼dÀ5»kÐ4JÔKñ ÷ 
 ×	ûô ô VÜ�‰Ð@À#ÐPTˆÕUÙðVús   Á#B&Á?%B9 Â&B6	Â9#C ÃC c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r4   r3   Úreasonr   r	   ro   r   )r   s   "r   r   r   Ç   s.   € ÷ jñ j #ð j¨sð j¸sð jÀtñ jr   c               ó  € ^ RI Hp VP                  WVR7       \        P	                  V 4      pVf   R# \        V4      ;_uu_ 4        VP	                  R4      p\        V\        4      ;'       d    VP	                  R4      V8H  pRRR4       X'       d   \        V4      '       g   R#  \        4       P                  V RRVRV//4       R#   + '       g   i     LN; i  \         d    \        P                  RYR	R
7        R# i ; i)a.  Withdraw *sid*'s open *method* requests wherever they wait: in this process, or in the compute-host
child that minted them (the parent holds only a mirror, so a local cancel never reaches that wait).
The child's ``request.cancel`` comes back through ``_relay_compute_host_rpc``, which drops the mirror.)Úserver_requests)r   Nrˆ   r   Úcancelr£   z3compute-host request cancel failed sid=%s method=%sTrœ   )Útui_gatewayr¥   r¦   r‰   r   rŠ   rf   r   r    r/   rž   rw   rs   rt   )r4   r£   r   r¥   r   r•   Úhosteds   &&$    r   Ú_cancel_session_requestsr©   Ç   sÜ   € õ ,Ø×Ñ˜3¨vÐÔ6Ü�m‰m˜CÓ €GØ‚ÙÜ	�w×	Õ	Ø—;‘;Ð;Ó<ˆÜ˜H¤dÓ+×PÐP°·±¸XÓ0FÈ&Ñ0Pˆ÷ 
 ÷ Ô3°G×<Ò<ÙðjÜ$Ó&×.Ñ.¨s°XÀÈ&ÐRZÐ\bÐ?cÐ4dÖe÷ 
 ×	ûô ô jÜ�‰ÐLÈcÐdhˆ×iðjús   Á>CÂ* C ÃC	Ã#DÄDc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r2   r3   rB   Úquestion_idÚanswerr:   r	   r   r   )r   s   "r   r   r   Û   s1   € ÷ ñ  Cð °Sð Àsð ÐT^ð Ðcnñ r   c           
     óÜ  € \        V4      pVe   \        V^,          4      '       g   R# Vw  rV \        4       P                  VRRVRVRV//4      pTP                  R4      R	8X  d0   \        T R\        TP                  R
4      ;'       g    R4      4      # TP                  R4      p	\        T	\        4      '       g   \        T RR4      # RT	9   dz   \        T	R,          \        4      '       d
   T	R,          M/ p
\        T \        T
P                  R4      ;'       g    R4      \        T
P                  R
4      ;'       g    R4      4      # \        T	P                  R4      \        4      '       d   T	P                  R4      M/ p\        T4      ;_uu_ 4        \        Ya4      '       dz   TR,          pTP                  R4      R8X  g   TP                  R4      . 8X  d   TP                  RR4       M1/ TR,          P                  R4      ;'       g    / CY#/CTR,          R&   RRR4       \        Y4      #   \         d   p\        T RRT 24      u Rp?# Rp?ii ; i  + '       g   i     LC; i)z³Proxy a batch-clarify lock into the child that owns the request; keeps the parent mirror's locked
answers current for reconnect snapshots. None when the request is not host-owned.NÚlockrB   r«   r¬   é›  z"compute-host clarify lock failed: rA   zrespond.errorr|   z compute-host clarify lock failedÚresponsez6compute-host clarify lock returned an invalid responseÚerrorÚcodeiˆ  zclarify lock failedÚresultrˆ   ÚstatusÚexpiredÚ	remainingr~   Úanswers)r™   r    r/   rž   rw   Ú_errr   r3   rf   r   r-   rŠ   rŒ   r�   Ú_ok)r2   rB   r«   r¬   r    r4   r   ÚackÚexcr°   r±   r³   r•   s   &&&&         r   Ú_lock_compute_host_clarifyr¼   Û   s  € ô ,¨JÓ7€GØ‚Ô8¸À½×DÒDÙØ�L€CðKÜ*Ó,×4Ñ4Ø�&˜<¨°]ÀKÐQYÐ[aÐbÐcóeˆð ‡w�wˆvƒ˜/Ô)Ü�C˜œs 3§7¡7¨9Ó#5×#[Ð#[Ð9[Ó\Ó]Ð]Ø�w‰w�zÓ"€HÜ�h¤×%Ò%Ü�C˜ÐWÓXÐXØ�(ÔÜ%/°¸Õ0AÄ4×%HÒ%H�˜Ö!ÈbˆÜ�Cœ˜UŸY™Y vÓ.×6Ð6°$Ó7¼¸U¿Y¹YÀyÓ=Q×=jÐ=jÐUjÓ9kÓlÐlÜ'1°(·,±,¸xÓ2HÌ$×'OÒ'OˆX�\‰\˜(Ô#ÐUW€FÜ	�w×	Õ	Ü  ×5Ò5ØÐ;Õ<ˆHØ�z‰z˜(Ó# yÔ0°F·J±J¸{Ó4KÈrÔ4QØ—‘Ð8¸$Õ?à0r°H¸XÕ4F×4JÑ4JÈ9Ó4U×4[Ð4[ÐY[Ð0rÐ^iÑ0r�˜Õ" 9Ñ-÷ 
 ô ˆsÓÐøô% ô KÜ�C˜Ð!CÀCÀ5ÐIÓJÕJûðKú÷ 
 ×	ús0   ¯"H3 ÆA9IÈIÈ3IÈ>IÉIÉIÉI+	c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   rn   r   r	   ro   r   )r   s   "r   r   r   ú   s!   € ÷ =ñ =°ð =¸kð =Èdñ =r   c           	     ó>  € \        V\        4      '       g   R# \        V 4      ;_uu_ 4        \        W4       VP	                  R4      eS   \
        P                  ! \        4      ;_uu_ 4        \        VP	                  R4      ;'       g    ^ 4      V R&   RRR4       RRR4       VP	                  R4      p\        V\        4      '       d,   / \        V 4      CVCV R&   \        P                  4       V R&   R# R#   + '       g   i     Ll; i  + '       g   i     Lw; i)z�Mirror host-owned session metadata: under turn isolation the host is the only
writer of live agent/history state, and UI reads must not build a second agent.NÚmessage_countÚ_metadata_message_countÚsession_inford   Ú_metadata_mirror_updated_at)rf   r   rŠ   rz   r   ru   rv   rw   r-   rd   Útime)r   rn   Úinfos   && r   Ú#_apply_compute_host_metadata_mirrorrÅ   ú   sÓ   € ô �eœT×"Ò"ÙÜ	�w×	Õ	Ü& wÔ6Ø�9‰9�_Ó%Ò1Ü×$Ò$¤Y×/Õ/Ü58¸¿¹À?Ó9S×9XÐ9XÐWXÓ5Y�Ð1Ñ2÷ 0÷ 
 ð
 �9‰9�^Ó$€DÜ�$œ×ÒØ&KÔ)9¸'Ó)BÐ&KÀdÐ&KˆÐ"Ñ#Ü15·±³ˆÐ-Ó.ñ ÷ 0×/ú÷ 
 ×	ús$   ¬ADÁ-(C9	ÂDÃ9D	ÄDÄD	c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r2   r3   r4   r   r   rn   r	   ro   r   )r   s   "r   r   r   
  s0   € ÷ ,ñ , Cð ,¨cð ,¸Dð ,Èð ,ÐRVñ ,r   c                ót  € VR ,          ;_uu_ 4        \        W#4       RVR&   \        P                  4       VR&   \        V4       VP                  RR4       RRR4       VP	                  R4      R8w  d   VP                  RR4       VP	                  R4      R8X  d9   \        VP	                  R	4      ;'       g    R
4      p\        RVRRV 2RR/4       \        W#4       \        V4       \        V4      pVP	                  R4      '       g   \        RW4       \        WV4       R#   + '       g   i     LØ; i)r=   Fr€   Úlast_activerˆ   NrA   z
turn.errorrK   r|   zcompute host turn failedzmessage.completer5   zError: r´   r±   Úsession_info_emittedúsession.info)rz   rÃ   Ú_clear_inflight_turnr�   r   r3   Ú_emitrÅ   Ú&_release_deferred_active_session_leaserl   Ú_drain_queued_prompt)r2   r4   r   rn   r|   rÄ   s   &&&&  r   Ú_on_compute_host_turn_donerÏ   
  sþ   € Ø	�×	 ×	 Ü& wÔ6Ø"ˆ�	ÑÜ!%§¡£ˆ�ÑÜ˜WÔ%Ø�‰Ð0°$Ô7÷ 
!ð ‡y�y�Ó˜LÔ(Ø�‰Ð*¨DÔ1Ø‡y�y�Ó˜LÔ(Ü�e—i‘i 	Ó*×HÐHÐ.HÓIˆÜÐ  #¨°'¸'¸Ð0CÀXÈwÐ'WÔXÜ'¨Ô7ä*¨7Ô3Ü% gÓ.€DØ�9‰9Ð+×,Ò,Üˆn˜cÔ(Ü˜ 7Ö+÷) 
!×	 ús   ’AD'Ä'D7	c               ó<   € V ^8„  d   QhRRRRRRRRRR	R
RRRRRRR/	# r1   r   )r   s   "r   r   r   "  sc   € ÷ %Eñ %EØ	ð%EØð%EØ!%ð%EØ-0ð%EØ?Oð%Eà(ð%Eà?Ið%Eð "ð%Eð .2ñ%Er   c                ó  a aaa€ \        4       p\        S SSW4VWgR 7      p	\        P                  4       P                  ;o;V	R&   V	R&   SR,          ;_uu_ 4        SSR&   SP                  RR4       RRR4       R V VVV3R llp
 \        V4      P                  WšR	7       SR,          ;_uu_ 4        RSR&   Tf   . SR&   RRR4       \        S RRRR/4      #   + '       g   i     Lp; i  \         dƒ   pSR,          ;_uu_ 4        SP                  R4      S8X  d%   SP                  RR4       SP                  RR4       RRR4       M  + '       g   i     M; i\        S R
RT 24      u Rp?# Rp?ii ; i  + '       g   i     LÃ; i))r7   r8   r9   r;   r�   rB   r=   r‚   r„   Nc               ó    € V ^8„  d   QhRRRR/# )r   Údoner   r	   ro   r   )r   s   "r   r   Ú4_submit_prompt_to_compute_host.<locals>.__annotate__1  s   € ÷ 	@ñ 	@˜ð 	@ ñ 	@r   c                ó8  <€ V P                  R 4      R8w  dp   SR,          ;_uu_ 4        SP                  R4      S8w  d    RRR4       R# SP                  RR4       SP                  RR4       RRR4       \        SSSV 4       R# R#   + '       g   i     L"; i)r£   Úsend_failedr=   r‚   Nr„   )r   r�   rÏ   )rÓ   r2   r   r4   r�   s   &€€€€r   Ú	_completeÚ1_submit_prompt_to_compute_host.<locals>._complete1  s   ø€ ð �8‰8�HÓ Ô.Ø˜×(×(Ø—;‘;Ð6Ó7¸7ÔBØ÷ )Ñ(ð —‘Ð3°TÔ:Ø—‘Ð7¸Ô>÷	 )ô
 ' s¨C°¸$Ö?ñ /ß(×(ús   ©B	Á$B	Â	B	)Úon_completer¯   zcompute-host dispatch failed: Tr   r@   r´   Ú	streamingr   )r   rY   ÚuuidÚuuid4Úhexr�   r/   Úsubmit_turnrw   r   r¸   r¹   )r2   r4   r   r5   r7   r8   r9   r;   r   rn   r×   r»   r�   s   fff&&&&&    @r   Ú_submit_prompt_to_compute_hostrß   "  sn  û€ ô 3Ó
4€CÜ$ S¨#¨w¸Ø>VØ2>ôc€Eô
 8<·z±z³|×7GÑ7GÐG€GÐGˆe�IÑ  |Ñ!4Ø	�×	 ×	 Ø+2ˆÐ'Ñ(Ø�‰Ð/°Ô6÷ 
!÷	@ó 	@ðGÜ$ SÓ)×5Ñ5°eÐ5ÔSð 
�×	 ×	 Ø*.ˆÐ&Ñ'ØÒØ)+ˆGÐ%Ñ&÷ 
!ô ˆs�X˜{Ð,<¸dÐCÓDÐD÷5 
!×	 ûô  ô GØ�^×$×$Ø�{‰{Ð2Ó3°wÔ>Ø—‘Ð3°TÔ:Ø—‘Ð7¸Ô>÷ %×$×$Ð$úô �C˜Ð!?À¸uÐEÓFÕFûðGú÷ 
!×	 úsN   ÁCÂC, Â2E<ÃC)	Ã,E9Ã7E4Ä;EÅ	E4ÅEÅE4Å.E9Å4E9Å<F	ÚcommandrI   r†   ÚwaitTÚtimeoutç      >@Úon_late_ackc               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )r   r4   r3   Ú
route_namerà   r†   r   rá   r
   râ   Úfloatr	   r   r   )r   s   "r   r   r   J  sD   € ÷ !ñ !Ø	ð!Ø ð!Ø+.ð!Ø>Ið!à
ð!à %ð!àCGñ!r   c          	     ó®   € \        T;'       g    / 4      pVP                  R R4       VP                  RV4       \        4       P                  WWtVVR7      # )rA   Úcontrolrà   )ræ   r†   rá   râ   rä   )r   Ú
setdefaultr/   ré   )r4   ræ   rà   r†   rá   râ   rä   rn   s   &$$$$$$ r   Ú_send_compute_host_controlrë   J  sY   € ô �—�˜BÓ€EØ	×Ñ�V˜YÔ'Ø	×Ñ�Y Ô(Ü'Ó)×1Ñ1Ø¨EÀgØð 2ó !ð !r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rº   r   r²   r-   Údefaultr3   r   )r   s   "r   r   r   U  s!   € ÷ ñ  dð °#ð Àñ r   c           	     óŽ   € VP                  R4      R9   d/   \        Y\        VP                  R4      ;'       g    T4      4      # R# )z:``_err`` for a ``control.error``/``error`` ack, else None.rA   r|   N>   r±   úcontrol.error)r   r¸   r3   )r2   rº   r²   rí   s   &&&&r   Ú_compute_host_ack_errorrð   U  s9   € à
‡w�wˆvƒÐ4Ô4Ü�Cœs 3§7¡7¨9Ó#5×#@Ð#@¸ÓAÓBÐBÙr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r	   rç   r   )r   s   "r   r   r   \  s   € ÷ Xñ X¨[ð XÀEñ Xr   c                ó  € ^ RI Hp  V e   T M	\        4       P                  R/ 4      p\        V\        4      '       g   / pV! V4      w  r4\        \        \        VR,           R4      \        4      4      #   \         d    / p L[i ; i)a  RPC wait budget for a compute-host compress control: the configured compression
ceiling plus slack, capped below the desktop's RPC timeout (a fixed waiter reported
false timeouts while the host kept working); slower acks land via the late-ack path.

See #97948.
)Ú$resolve_context_compression_timeoutsÚcompressionrã   g      ^@)Úagent.conversation_compressionró   Ú	_load_cfgr   rw   rf   r   rç   Úminrx   Ú$_COMPUTE_HOST_COMPRESS_WAIT_CAP_SECS)r   ró   Úcompression_cfgÚ_idleÚceilings   &    r   Ú#_compute_host_compress_wait_secondsrü   \  s|   € õ TðØ"%¢/™3´y³{×GÑGÈÐWYÓZˆô �o¤t×,Ò,ØˆÙ9¸/ÓJ�N€EÜ””S˜ 4�¨Ó/Ô1UÓVÓWÐWøô ô ØŠðús   ˆ A4 Á4BÂBc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r4   r3   r   r   rº   ræ   r	   ro   r   )r   s   "r   r   r   n  s8   € ÷ Iñ I¨sð I¸Tð IÈð IÐ]`ð IÐeiñ Ir   c               óü  € \         ;_uu_ 4        \        P                  V 4      VJd    RRR4       R#  RRR4       \        V\        4      '       d   VP                  R4      R9   dS   \        T;'       g    / P                  R4      ;'       g    RV R24      p\        RV RRV 2/4       \        V R4       R# \        W4       \        R	V \        V4      4       \        V R
R4       R#   + '       g   i     L¾; i)a<  Adopt a compress ack that arrived after its RPC waiter answered ``pending``: the only place
the rotated session_key / history_version / mirror can land and the client's only signal
(the same ``session.info`` + ``compacted`` edges the in-process /compress path emits). A late
``control.error`` goes out via ``error``.NrA   r±   r|   zcompute-host z failedzcompression failed: ÚreadyrÊ   Ú	compactedu    âœ“ Context compression complete>   r±   rï   )
Ú_sessions_lockr‰   r   rf   r   r3   rÌ   Ú_status_updaterÅ   rl   )r4   r   rº   ræ   r|   s   &&&$ r   Ú%_adopt_late_compute_host_compress_ackr  n  sÊ   € ÷
 
ŽÜ�=‰=˜Ó WÓ,Ø÷ 
‰Ø,÷ 
ô �cœ4× Ò  C§G¡G¨F£OÐ7QÔ$QÜ�s—y�y˜b—o‘o iÓ0×WÐW°mÀJÀ<ÈwÐ4WÓXˆÜˆg�s˜YÐ*>¸w¸iÐ(HÐIÔJÜ�s˜GÔ$ÙÜ'¨Ô5Ü	ˆ.˜#Ô9¸'ÓBÔCÜ�3˜Ð%GÖH÷ 
�ús   �C+Ã+C;	c               ó   € V ^8„  d   QhRR/# )r   r	   ro   r   )r   s   "r   r   r   €  s   € ÷ 0ñ 0˜ñ 0r   c                ó2   € \        \        4       V RR7       R# )zQPublish this module's helpers + handlers onto ``server``, rebound to its globals.)ÚskipN)Ú_)r   Úglobals)Úservers   &r   Úregisterr
  €  s   € ä”“	˜6¨×/r   )N)NNNN)$Ú__doc__Ú
__future__r   ru   r‘   Ú
method_ctxr   r   Ú	_registryr*   r’   r)   rø   r   r    r/   rY   rX   rd   rl   rz   r,   rŠ   rŒ   r™   r¡   r©   r¼   rÅ   rÏ   rß   rë   rð   rü   r  r
  r   r   r   Ú<module>r     sä   ðñXõ #ã Û ç 4áÓ€	àÐ Ø )§¢Ó 0Ð ð
 (-Ð $÷[÷V÷
(÷$FõN	Rõ6õ
8õUõ$!õH9õKõõõ jõ(õ>=õ ,÷0%EðP!Ø13ð!ØLPð!àð!à(,ð!à:>÷!õ÷Xõ$I÷$0r   