+
    lHàj»¶  ã                  ó  a € 0 t $ R t^ RIHt ^ RIt^RIHt RyR R lltRtRt	Rt
R	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! tR" tR# tRzR% R& llt/ tR']R(&   R) R* ltR+ R, lt]P>                  ! R-4      t R. R/ lt!R0 R1 lt"R2 t#R3 R4 lt$R5R6R7R6R8R/R9 R: llt%R;R<R=R$R>RR?RR@R$RARRBRRCRRDR$/	RE RF llt&]'! 4       t(RG RH lt)RI RJ lt*R?](/RK RL llt+RM RN lt,R{RO RP llt-RQR$/RR RS llt.RTR$RQR$/RU RV llt/RW RX lt0RY RZ lt1R[ R\ lt2R|R] R^ llt3R_R6/R` Ra llt4](3Rb Rc llt5Rd Re lt6Rf Rg lt7Rh Ri lt8Rj Rk lt9Rl Rm lt:RnRRoR$RpRRqR$RrRs/Rt Ru llt;Rv Rw lt<Rx t=R# )}zRTUI session_registry seam; functions bind to the server namespace at registration.)ÚannotationsN)Úbind_moduleç      >@c               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚsessionÚdictÚridÚstrÚtimeoutÚfloatÚreturnúdict | None© )Úformats   "ÚA/home/ubuntu/.hermes/hermes-agent/tui_gateway/session_registry.pyÚ__annotate__r   	   s.   € ÷ Qñ Q˜ð Q Cð Q°%ð QÀ;ñ Qó    c                óÎ   € V P                  R 4      pVe*   VP                  VR7      '       g   \        VR\        4      # V P                  R4      ;p'       d   \        VRV4      # R# )Úagent_readyN©r   é¨  Úagent_error)ÚgetÚwaitÚ_errÚAGENT_STILL_STARTING)r   r	   r   ÚreadyÚerrs   &&&  r   Ú_wait_agentr   	   s]   € Ø�K‰K˜Ó&€EØÒ §¡°G ×!<Ò!<Ü�C˜Ô3Ó4Ð4Ø+2¯;©;°}Ó+EÐ$E CÖ$EŒ4��T˜3ÓÐPÈDÐPr   g      @zagent-build-slowc               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r      s   € ÷ ñ ˜uñ r   c                 ó8  € \         P                  \        4      ;_uu_ 4        \        4       P	                  R4      ;'       g    / P	                  R4      p V e&   \        V 4      ^ 8”  d   \        V 4      uuRRR4       # RRR4       R#   + '       g   i     R# ; i)zÆSeconds a submitted prompt waits for the deferred build before failing; ``agent.build_wait_timeout``
overrides the 600s default (raise it for many slow MCP servers / high-latency provider metadata).ÚagentÚbuild_wait_timeoutNg     À‚@)Ú
contextlibÚsuppressÚ	ExceptionÚ	_load_cfgr   r   )Úraws    r   Ú_agent_build_wait_capr)      sm   € ô 
×	Ñ	œY×	'Õ	'Ü‹{�‰˜wÓ'×-Ð-¨2×2Ñ2Ð3GÓHˆØŠ?œu S›z¨Aœ~Ü˜“:÷ 
(×	'Ò	'ñ ÷	 
(Ö	'ñ ús   ¢ABÂB	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   r   r	   r
   Úsidr   r   r   )r   s   "r   r   r   !   s.   € ÷ 'Qñ 'Q Dð 'Q¨sð 'Q¸ð 'QÀñ 'Qr   c                ó¾  € V P                  R4      pVf   R# \        P                  4       \        4       RrepVP	                  \
        R7      '       Eg5   V R,          ;_uu_ 4        V P                  R4      ;'       g    V P                  R4      '       * pRRR4       X'       d   R# \        P                  4       V,
          pW…8¼  d   \        VRR	\        V4       R
24      # V P                  R4      p	V	eS   V	P                  4       '       g=   VP                  4       '       g'   \        TRV P                  R4      ;'       g    R4      # V'       d   EK  V\        8¼  g   EK+  Rp\        RVRRRRRRRRR\        R\        /4       EKQ  V'       d   \        RVR\        /4       V P                  R4      ;p
'       d   \        VRV
4      # R#   + '       g   i     EL?; i)u:  Patient ``_wait_agent`` for deferred prompt.submit: the client already got ``streaming`` and the
first message IS the turn, while a cold build routinely outlives the flat 30s ceiling (timing out
silently discarded it). Waits in short slices (cancel honored promptly), notifies once (keyed) past
``_AGENT_BUILD_SLOW_NOTICE_AFTER``, fails only on a dead build thread or the bounded cap.
Returns None on success OR cancel mid-wait (the caller's cancel branch owns that messaging).

The flat 30s ``_wait_agent`` ceiling was a message-eating cliff (#63078): ``prompt.submit`` has already
returned ``{"status": "streaming"}``, the user's first message IS the turn in flight, and the deferred
agent build (MCP discovery with per-server retry backoff, synchronous model-metadata HTTP, skills
scanning) routinely outlives 30 seconds on cold starts. On timeout the old path emitted an error EVENT
and returned without ever calling ``_run_prompt_submit`` â€” the first message was permanently discarded
while the build finished successfully in the background, leaving the blank first session.
r   NFr   Úhistory_lockÚ_turn_cancel_requestedÚrunningr   z%agent initialization timed out after u@   s â€” your message was not sent; retry once the session is readyÚ_agent_build_threadr   z-agent initialization failed before completingTúnotification.showÚtextul   Still starting the agent (tool discovery / model setup) â€” your message will be sent as soon as it's ready.ÚlevelÚinfoÚkindr"   Úttl_msÚkeyÚidznotification.clear)r   ÚtimeÚ	monotonicr)   r   Ú_AGENT_BUILD_WAIT_SLICEr   ÚintÚis_aliveÚis_setÚ_AGENT_BUILD_SLOW_NOTICE_AFTERÚ_emitÚ_AGENT_BUILD_SLOW_NOTICE_KEY)r   r	   r+   r   ÚstartÚcapÚnotified_slowÚ	cancelledÚwaitedÚbuild_threadr   s   &&&        r   Ú_wait_agent_for_promptrH   !   s�  € ð �K‰K˜Ó&€EØ‚}ÙÜ $§¡Ó 0Ô2GÓ2IÈ5�€EØ�j‰jÔ!8ˆj×9Ó9Ø�^×$×$ØŸ™Ð$<Ó=×[Ð[ÀWÇ[Á[ÐQZÓE[ÔA[ˆI÷ %çÙÜ—‘Ó! EÕ)ˆØŒ=Ü˜˜TÐ%JÌ3ÈvË;È-ð XUð $Uó Vð Và—{‘{Ð#8Ó9ˆØÒ#¨L×,AÑ,A×,CÒ,CÈEÏLÉLÏNÊNä˜˜T 7§;¡;¨}Ó#=×#pÐ#pÐApÓqÐqßŠ} Ô+I×!IØ ˆMÜÐ% sØð  GØ˜ ¨°(¸DØÔ3°TÔ;Wð-Y÷ Z÷ ÜÐ" C¨%Ô1MÐ)NÔOØ+2¯;©;°}Ó+EÐ$E CÖ$EŒ4��T˜3ÓÐPÈDÐP÷) %×$Ð$ús   Á%0GÇG	c               ó    € V ^8„  d   QhRRRR/# )r   Úprofile_homeú
str | Noner   ú_TurnScopes | Noner   )r   s   "r   r   r   K   s   € ÷ ñ ¨Zð Ð<Nñ r   c                ó–  € \        4       p\        P                  \        4      ;_uu_ 4        \	        V 4      uuRRR4       #   + '       g   i     M; iT '       dm   \        T 4      Tn        \        P                  \        4      ;_uu_ 4        ^ RIHp T! \        T 4      4      Tn
        RRR4       T#   + '       g   i     T# ; iT# )uH  Bind a session profile's HERMES_HOME / secret / terminal scopes for an agent build. ``None`` is the
launch profile: its own launch-env secret scope (live env while single-profile, frozen once
multiplexing is active â€” a hosted-room turn for a default member otherwise died at build with
``UnscopedSecretError`` because the launch profile was treated as "no scope"). Fail-open per scope (the build must not die on
a scope helper); the terminal installer itself fails closed (malformed policy â†’ refusal scope) so
_make_agent's terminal probing / cwd hints resolve the routed profile.N)Úinstall_profile_terminal_scope)Ú_TurnScopesr$   r%   r&   Ú_profile_runtime_scope_tokensÚset_hermes_home_overrideÚhomeÚtools.terminal_scoperN   ÚPathÚterminal)rJ   ÚscopesrN   s   &  r   Ú_bind_build_profile_scopesrW   K   s‡   € ô ‹]€FÜ	×	Ñ	œY×	'Õ	'Ü,¨\Ó:÷ 
(×	'×	'Ò	'úçÜ.¨|Ó<ˆŒÜ× Ñ ¤×+Õ+ÝKÙ<¼TÀ,Ó=OÓPˆFŒO÷ ,ð €M÷ ,Ö+ð €Múˆ6€Ms   ¬AÁA	ÂB5Â5C	c               ó    € V ^8„  d   QhRRRR/# )r   rV   rL   r   ÚNoner   )r   s   "r   r   r   ]   s   € ÷ 6ñ 6Ð*<ð 6Àñ 6r   c                ó˜   € \         P                  \        4      ;_uu_ 4        \        V 4       R R R 4       R #   + '       g   i     R # ; i©N)r$   r%   r&   Ú%_release_profile_runtime_scope_tokens)rV   s   &r   Ú_release_build_profile_scopesr]   ]   s*   € Ü	×	Ñ	œY×	'Õ	'Ü-¨fÔ5÷ 
(×	'×	'Ò	'ús	   ¢8¸A		c               ó    € V ^8„  d   QhRRRR/# )r   Úcurrentr   r   r   )r   s   "r   r   r   b   s   € ÷ ñ ¨$ð ¸tñ r   c           
     ó  € RVR\        V 4      R\        V 4      R\        V 4      /pV P                  R4      ;p'       d   W2R&   V P                  R4      p\	        V\
        4      '       d-   V'       d%   \        V4      '       d   VP                  V4       V# V P                  R4      ;p'       d   WRR&   TP                  R	V P                  R
4      3RV P                  R4      33 UUu/ uF  w  rgVf   K  WgbK  	  upp4       V# u uppi )u–  _make_agent kwargs for a deferred (first-prompt) build. A lazy-resumed (watch) session carries the
stored conversation id so the upgrade continues it; a cold deferred resume restores the full persisted
runtime identity (like the eager resume's overrides splat) so the build can't drop the provider. No
stored runtime, or an unroutable provider â†’ this session's picked model/effort/tier, else the default.Ú
session_dbÚcontext_cwd_is_launch_artifactÚplatform_overrideÚcwd_overrideÚresume_session_idÚ
session_idÚresume_runtime_overridesÚmodel_overrideÚreasoning_config_overrideÚcreate_reasoning_overrideÚservice_tier_overrideÚcreate_service_tier_override)Ú_context_cwd_is_launch_artifactÚ_session_sourceÚ_session_cwdr   Ú
isinstancer   Ú!_overrides_have_routable_providerÚupdate)r_   ra   ÚkwÚ
resume_sidÚresume_overridesÚoverrideÚkÚvs   &&      r   Ú_deferred_build_agent_kwargsry   b   s  € ð
 ˜
Ð$DÔFeÐfmÓFnØ
œ¨wÓ7¸ÌÐV]ÓI^ð
`€Bà—[‘[Ð!4Ó5Ð5€zÖ5Ø%ˆ<ÑØ—{‘{Ð#=Ó>ÐÜÐ"¤D×)Ò)×.>ÔCdÐeu×CvÒCvØ
�	‰	Ð"Ô#ð €Ið —{‘{Ð#3Ó4Ð4ˆ8Ö4Ø#+ÐÑ Ø
�	‰	Ð&AÀ7Ç;Á;ÐOjÓCkÐ%lØ&=¸w¿{¹{ÐKiÓ?jÐ%kñ%mô %ñ %m™D˜Aàô �1’4ñ %mò %ô 	&ð €Iùó%s   Ã'D
Ã4D
c               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r
   r7   r   Úboolr   )r   s   "r   r   r   w   s!   € ÷ ñ ˜Sð  sð °dñ r   c                óˆ  a € Rp\         P                  \        4      ;_uu_ 4        ^ RIHpHp V! VV 3R l4       RpV! 4        RRR4       \        S 4       \         P                  \        4      ;_uu_ 4        S 3R lVn        \        4       Vn	        RRR4       V#   + '       g   i     La; i  + '       g   i     T# ; i)uì   Post-build wiring; returns whether the approval notify got registered. Approval prompts route to the
client; the self-improvement "ðŸ’¾ â€¦" summary is emitted as review.summary (no print surface), honoring
display.memory_notifications.F)Úload_permanent_allowlistÚregister_gateway_notifyc                ó   <€ \        SV 4      # r[   )Ú_emit_approval_request)Údatar+   s   &€r   Ú<lambda>Ú%_wire_session_agent.<locals>.<lambda>~   s   ø€ Ô2HÈÈdÔ2Sr   TNc                ó2   € \        R VR\        V 4      /4      # )zreview.summaryr2   )r@   r
   )ÚmessageÚ_sids   &&r   r‚   rƒ   ƒ   s   € ÄUÐK[Ð]aÐdjÔloÐpwÓlxÐcyÔEzr   )
r$   r%   r&   Útools.approvalr}   r~   Ú_wire_callbacksÚbackground_review_callbackÚ_load_memory_notificationsÚmemory_notifications)r+   r7   r"   Únotify_registeredr}   r~   s   f&&   r   Ú_wire_session_agentr�   w   s“   ø€ ð ÐÜ	×	Ñ	œY×	'Õ	'ßTÙ Ô%SÔTØ ÐÙ Ô"÷	 
(ô
 �CÔÜ	×	Ñ	œY×	'Õ	'Ø@CÓ+zˆÔ(Ü%?Ó%AˆÔ"÷ 
(ð Ð÷ 
(×	'ú÷ 
(Ö	'ð Ðús   ¥BÁ8B0ÂB-	Â0C	c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   r+   r
   r7   r_   r   r   rY   r   )r   s   "r   r   r   ˆ   s.   € ÷ 
Pñ 
P ð 
P¨3ð 
P¸ð 
PÀ$ñ 
Pr   c                ó  € \         ;_uu_ 4        \        P                  V 4      ;pe4   VP                  R4      ;pe   VP                  4        \	        W4      VR&   RRR4       \        RV\        V4      4       R#   + '       g   i     L(; i)zfStart the notification poller (exactly one live per session) and fire the session-reset boundary hook.NÚ_notif_stopÚon_session_reset)Ú_sessions_lockÚ	_sessionsr   ÚsetÚ_start_notification_pollerÚ_notify_session_boundaryrn   )r+   r7   r_   ÚrecÚold_stops   &&&  r   Ú_start_session_servicesrš   ˆ   sj   € ç	ŽÜ—=‘= Ó%Ð%ˆCÒ2ð  ŸG™G MÓ2Ð2�Ò?Ø—‘”Ü!;¸CÓ!EˆC�Ñ÷ 
ô Ð/°´oÀgÓ6NÖO÷ 
�ús   �AA<Á<B	c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r+   r
   r_   r   r   r{   r   )r   s   "r   r   r   •   s!   € ÷ 
-ñ 
-˜sð 
-¨Tð 
-°dñ 
-r   c                óX  € VP                  R4      pVf   R# VP                  RR7      '       g   \        R4      hVP                  R4      ;p'       d   \        \	        V4      4      h\
        ;_uu_ 4        \        P                  V 4      VJ uuRRR4       #   + '       g   i     R# ; i)z]Block on a cold resume's transcript hydration; False when this record was replaced meanwhile.Úresume_history_readyNTg     Àr@r   z#session history hydration timed outÚresume_history_error)r   r   ÚTimeoutErrorÚRuntimeErrorr
   r“   r”   )r+   r_   Úhistory_readyÚhistory_errors   &&  r   Ú_await_resume_historyr¤   •   s�   € à—K‘KÐ 6Ó7€MØÒÙØ×Ñ eÐ×,Ò,ÜÐ@ÓAÐAØŸ™Ð$:Ó;Ð;€}Ö;Üœ3˜}Ó-Ó.Ð.ß	ŽÜ�}‰}˜SÓ! WÐ,÷ 
��‹ús   Á6BÂB)	c               ó$   € V ^8„  d   QhRRRRRR/# rœ   r   )r   s   "r   r   r   ¢   s!   € ÷ ñ ˜Sð ¨4ð ¸4ñ r   c                óp  € \        VP                  R4      ;'       g    R4      P                  4       ;p'       d   W2n        \        ;_uu_ 4        \
        P                  V 4      VJd    RRR4       R# W!R&   RRR4       \        V4       \        V4       \        4       VR&   R#   + '       g   i     L5; i)a  Attach a freshly built agent to its live record (session DB row deferred to first run_conversation()).
False when ``session.close`` popped this record mid-build: teardown saw ``agent=None`` and closed
nothing, so the caller owns closing the orphan (#49852).Úpending_titleÚ NFr"   Úconfig_model_seenT)	r
   r   ÚstripÚ_session_title_hintr“   r”   Ú_register_session_cwdÚ_session_todo_stateÚ_config_model_target)r+   r_   r"   Ú_title_hints   &&& r   Ú_attach_built_agentr°   ¢   sŽ   € ô
 ˜'Ÿ+™+ oÓ6×<Ð<¸"Ó=×CÑCÓEÐE€{ÖEØ$/Ô!ç	ŽÜ�=‰=˜Ó WÓ,Ø÷ 
‰ð !�Ñ÷ 
ô
 ˜'Ô"Ü˜Ô ä#7Ó#9€GÐÑ Ù÷ 
�ús   ÁB%Á4B%Â%B5	c               ó(   € V ^8„  d   QhRRRRRRRR/# r�   r   )r   s   "r   r   r   ¶   s(   € ÷ +ñ +˜sð +¨ð +°tð +Àtñ +r   c                ó`  € \         P                  \        4      ;_uu_ 4        ^ RIHp V! V4       RRR4       \        WV4       \        W24      p\        \        4       4      ;p'       d   WeR&   \        P                  V4       \        RW4       \        W4       R#   + '       g   i     Lt; i)z]Post-wiring tail of a build: credits seed, session services, session.info, late MCP catch-up.)Úseed_credits_at_session_startNÚconfig_warningúsession.info)r$   r%   r&   Úagent.credits_trackerr³   rš   Ú_session_infoÚ_probe_config_healthr'   ÚloggerÚwarningr@   Ú_schedule_mcp_late_refresh)r+   r7   r_   r"   r³   r4   Úcfg_warns   &&&&   r   Ú_announce_built_agentr½   ¶   s}   € ô 
×	Ñ	œY×	'Õ	'ÝGÙ% eÔ,÷ 
(ô ˜C gÔ.Ü˜Ó(€DÜ'¬	«Ó4Ð4€xÖ4Ø!)ÐÑÜ�‰�xÔ Ü	ˆ.˜#Ô$Ü˜sÖ*÷ 
(×	'ús   ¢BÂB-	c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r+   r
   r7   r_   r   rŒ   r{   r   rY   r   )r   s   "r   r   r   Å   s1   € ÷ ñ ˜Sð  sð °Tð ÐQUð Ðnrñ r   c               ó^  € Ve   \        V4       \        ;_uu_ 4        \        P                  V 4      VJpRRR4       X'       dA   V'       d9   \        P                  \        4      ;_uu_ 4        ^ RIHp V! V4       RRR4       Vej   \        V'       d   RMVP                  R4      V4      '       g=   \        P                  \        4      ;_uu_ 4        VP                  4        RRR4       R# R# R#   + '       g   i     LÇ; i  + '       g   i     L’; i  + '       g   i     R# ; i)z`Release build scopes and settle ownership of the late notify registration + dedicated db handle.N)Úunregister_gateway_notifyr"   )r]   r“   r”   r   r$   r%   r&   r‡   rÀ   Ú_transfer_db_to_agentÚclose)r+   r7   r_   rŒ   rV   ra   ÚreplacedrÀ   s   &&&$$$  r   Ú_finish_agent_buildrÄ   Å   sÈ   € àÒÜ% fÔ-÷ 
ŽÜ—=‘= Ó%¨WÐ4ˆ÷ 
ç×%Ü× Ñ ¤×+Õ+Ý@Ù% cÔ*÷ ,ð
 ÒÔ&;ÇH¹DÐRY×R]ÑR]Ð^eÓRfÐhr×&sÒ&sÜ× Ñ ¤×+Õ+Ø×ÑÔ÷ ,Ñ+ñ 'tÑ÷ 
�ú÷ ,×+ú÷ ,×+Ð+ús#   žC5Á/DÃDÃ5D	ÄD	ÄD,	c               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r
   r   r   r   rY   r   )r   s   "r   r   r   Ø   s&   € ÷ Uñ U˜Cð U¨$ð U°4ñ Ur   c                ó¸  a aaa€ SP                  R4      oSf   R# SP                  R4      '       dP   \        \        SP                  R4      ;'       g    R4      SP                  R4      ;'       g    R4      '       d   R# SP                  R\        P                  4       4      ;_uu_ 4        SP                  4       '       g   SP                  R4      '       d    RRR4       R# R	SR&   SP                  RR4       RRR4       SR,          oR
 VVVV 3R llp\        P                  VR	R7      pVSR&   VP                  4        R#   + '       g   i     LS; i)zêStart building the real AIAgent for a TUI session, once. Deferred until the first prompt (or any
command needing the agent) so the composer isn't blocked on tool discovery / model metadata;
the ready/error event contract is unchanged.r   NÚlazyÚsession_keyr¨   rJ   Úagent_build_lockÚagent_build_startedTc               ó   € V ^8„  d   QhRR/# ©r   r   rY   r   )r   s   "r   r   Ú(_start_agent_build.<locals>.__annotate__ë   s   € ÷ =ñ =�Dñ =r   c                 óP  <€ \         ;_uu_ 4        \        P                  S4      p R R R 4       X f   \        SR&   SP	                  4        R # RR R r2pV P                  R4      p \        SV 4      '       g,   \        V R&    \        SS
WW#R7       SP	                  4        R # \        S
\        V 4      R7      p\        V4      pV'       d   \        V4      p ^ RIHp V! 4         \!        SS
3/ \#        W4      B p\%        V4       \'        SW4      '       gx   \        V R&   \(        P+                  \        4      ;_uu_ 4        \-        VR
4      '       d   VP/                  4        R R R 4        \        SS
WW#R7       SP	                  4        R # \1        SS
V4      p\3        SS
W4       \        SS
WW#R7       SP	                  4        R #   + '       g   i     EL¬; i  \         d    \        P                  RRR	7        ELi ; i  \%        T4       i ; i  + '       g   i     Lº; i  \         dN   p^ RIHp	 \9        T4      T R&   \;        RSR\=        T4      /\?        Y‰4      '       d   RR/M/ C4        R p?LÔR p?ii ; i  \        SS
YY#R7       SP	                  4        i ; i)Nr   FrJ   )rŒ   rV   ra   )Úcwd)Úensure_mcp_discovery_startedzMCP discovery startup failedT©Úexc_inforÂ   )ÚProviderNotConfiguredErrorÚerrorr…   ÚcodeÚprovider_not_configured) r“   r”   r   ÚAGENT_BUILD_ABANDONEDr•   r¤   rÄ   Ú_set_session_contextro   rW   Ú_open_profile_session_dbÚtui_gateway.entryrÐ   r&   r¹   rº   Ú_make_agentry   Ú_clear_session_contextr°   r$   r%   ÚhasattrrÂ   r�   r½   Úagent.auxiliary_unavailablerÓ   r
   r@   Úagent_init_failed_messagerp   )r_   rŒ   rV   ra   rJ   ÚtokensrÐ   r"   ÚerÓ   r7   r   r   r+   s             €€€€r   Ú_buildÚ"_start_agent_build.<locals>._buildë   sZ  ø€ ßŽ^Ü—m‘m CÓ(ˆG÷ àŠ?ô &;ˆG�MÑ"Ø�I‰IŒKÙØ05°t¸T :ÐØ—{‘{ >Ó2ˆð2	Ü(¨¨g×6Ò6ô *?�˜Ñ&ØôV  Ø�S˜'Èvõnà�I‰IŽKôY *¨#´<ÀÓ3HÔIˆFô 0°Ó=ˆFßÜ5°lÓC�
ðNÝJÙ,Ô.ð/Ü# C¨ÑbÔ0LÈWÓ0aÑb�ä& vÔ.ô
 ' s¨G×;Ò;ô *?�˜Ñ&Ü×(Ñ(¬×3Õ3Ü˜u g×.Ò.ØŸ™œ÷ 4ð ô  Ø�S˜'Èvõnà�I‰IŽKô !4°C¸¸eÓ DÐÜ! # s¨GÔ;ô  Ø�S˜'Èvõnà�I‰IŽK÷y �^ˆ^ûô4 ô NÜ—‘Ð=È�×MðNûô
 ' vÕ.ú÷ 4×3ûô ô 	oÝNÜ%(¨£VˆG�MÑ"ô �'˜3ØÔ4°QÓ7ð!nä:DÀQ×:cÒ:c�FÐ5Ñ6Ðikð!n÷ oñ oûð	oûô  Ø�S˜'Èvõnà�I‰I�Kús‘   �G	Á$H) Â!4H) ÃG Ã$H Ã:AH) Å#HÅ$H) ÆH) Ç	G	Ç"HÇ?H) ÈHÈH) ÈHÈH) ÈH&	È!H) È)JÈ4AI<É7J É<JÊJ Ê!J%©ÚtargetÚdaemonr0   )
r   Ú_child_run_activer
   Ú
setdefaultÚ	threadingÚLockr>   ÚpopÚThreadrB   )r+   r   râ   rG   r7   r   s   ff  @@r   Ú_start_agent_buildrí   Ø   s  û€ ð �K‰K˜Ó&€EØ‚}Ùð ‡{�{�6×ÒÔ0Ü�—‘˜MÓ*×0Ð0¨bÓ1°7·;±;¸~Ó3N×3VÐ3VÐRV÷ Xò  XáØ	×	Ñ	Ð.´	·±Ó0@×	AÕ	AØ�<‰<�>Š>˜WŸ[™[Ð)>×?Ò?Ø÷ 
BÑ	Að *.ˆÐ%Ñ&Ø�‰�F˜DÔ!÷	 
Bð
 �-Õ
 €C÷=ó =ô~ ×#Ñ#¨6¸$Ð#Ó?€Là%1€GÐ!Ñ"Ø×ÑÖ÷S 
B×	Aús   Â.-E	ÃE	Ã'E	Å	E	c                óþ   € V P                  R 4      ;'       g    Rp\        P                  V4      pV'       d   VR3# \        P                  R\        P                  4       ;'       g    RW!4       R\        VRR4      3# )rf   r¨   Nz�session-scoped RPC rejected: method=%s session_id=%r not in memory (detached/reaped runtime; client should resume the stored session), rid=%rÚ?i¡  zsession not found)r   r”   r¹   rº   Ú_current_rpc_methodr   )Úparamsr	   r+   Úss   &&  r   Ú_sess_nowaitró   0  sv   € Ø
�*‰*�\Ó
"×
(Ð
( b€CÜ�‰�cÓ€AßØ�4ˆyÐô ‡N�Nð `ô '×*Ñ*Ó,×3Ð3°°Sô?ð ”$�s˜DÐ"5Ó6Ð7Ð7r   c                óN   € \        W4      w  r#V'       d   R V3# V\        W!4      3# r[   )Ú_sess_buildingr   ©rñ   r	   rò   r   s   &&  r   Ú_sessr÷   C  s)   € Ü˜FÓ(�F€AßˆD�#ˆ;Ð; A¤{°1Ó':Ð#;Ð;r   c                ó–   € \        W4      w  r#V'       g&   \        V P                  R4      ;'       g    RV4       V'       d   RV3# VR3# )u1  Resolve a session and warm its agent build WITHOUT waiting â€” for the attach RPCs (image/file/pdf,
clipboard.paste, image.detach), which only touch creation-time fields and run inline on the socket
reader thread, where waiting on a cold build stalled every RPC behind it ("text is instant, images hang").rf   r¨   N)ró   rí   r   rö   s   &&  r   rõ   rõ   H  sC   € ô ˜&Ó&�F€AßÜ˜6Ÿ:™: lÓ3×9Ð9°r¸1Ô=ßˆD�#ˆ;Ð, A t 9Ð,r   Fc               ó8   € V ^8„  d   QhRRRRRRRRRR	R
R	RR	RR/# )r   r+   r
   r7   ÚhistoryÚlistÚcolsr<   rÏ   rK   ÚsourcerJ   Úexplicit_cwdr{   r   )r   s   "r   r   r   Q  sN   € ÷ +ñ +Ø	ð+Øð+Ø(,ð+Ø47ð+ØCMð+à'ð+à>Hð+ð ñ+r   c
                ó(  € \         P                  4       p
\        ;_uu_ 4        / R VbRVbRVbR\        P                  4       bR^ bRRbRV
bRV
bR	R
bR. bR^ bRT;'       g    \	        4       bR\        V	4      bRVbRRbR\        4       bR\        V4      bR\        4       R/ R/ RTRRR\        4       ;'       g    \        R\        \        4       4      /C\        V &   \        \        V ,          4       RRR4       \        WWh4       \        \        V ,          4       \!        WV4       \#        W\        P%                  V / 4      4       \'        RV \)        V\        P%                  V / 4      4      4       \+        W4       R#   + '       g   i     L–; i)r"   rÈ   rú   r-   Úhistory_versionÚinflight_turnNÚ
created_atÚlast_activer/   FÚattached_imagesÚimage_counterrÏ   rþ   rü   Úslash_workerÚshow_reasoningrý   Útool_progress_modeÚedit_snapshotsÚtool_started_atrJ   rh   Ú	transportÚauth_user_idrµ   )r9   r“   ré   rê   Ú_completion_cwdr{   Ú_load_show_reasoningÚ_resolve_session_sourceÚ_load_tool_progress_modeÚcurrent_transportÚ_stdio_transportÚ_transport_auth_user_idr”   r­   Ú_hydrate_session_cwdr¬   r�   rš   r   r@   r·   r»   )r+   r7   r"   rú   rü   rÏ   ra   rý   rJ   rþ   Únows   &&&&&&&&&& r   Ú_init_sessionr  Q  sÆ  € ô �)‰)‹+€Cß	Žð
Ø�Uð
Ø)¨3ð
Ø09¸7ð
ØDRÔT]×TbÑTbÓTdð
à˜qð
à"1°4ð
à9EÀsð
àLYÐ[^ð
ð �uð
ð 0°ð
ð 6EÀað
ð JOÐPS×PhÐPhÔWfÓWhð
ð œD Ó.ð	
ð 17¸ð	
ð ?MÈdð	
ð
 Ô2Ó4ð
ð
 7?Ô@WÐX^Ó@_ð
ð !Ô":Ó"<Ð>NÐPRÐTeÐgià˜Là˜dàÔ*Ó,×@Ð@Ô0@ØÔ3Ô4EÓ4GÓHñ
Œ	�#‰ô 	œI c�NÔ+÷! 
ô" ˜ :Ô<Üœ) C�.Ô)Ü˜ %Ô(Ü˜C¤i§m¡m°C¸Ó&<Ô=Ü	ˆ.˜#œ}¨U´I·M±MÀ#ÀrÓ4JÓKÔLÜ˜sÖ*÷- 
�ús   £CFÆF	zdict[str, float]Ú_AUTO_PRUNE_NOTIFIEDc               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r
   rJ   rK   r   rY   r   )r   s   "r   r   r   r  s&   € ÷ Bñ B #ð B°Zð BÀDñ Br   c                ó.  a aa€ ^ RI Ho ^ RIHp V'       d   \	        V4      MV! 4       oSP                  S\        4      '       g   R# \        P                  4       \        \        S4      &   R VVV 3R llp^ RI	H
p V! VRR7      P                  4        R# )	zÕLow disk + auto-prune never decided: a sticky notice (TUI status line / Desktop toast) per
profile per snooze window, on session create and cold resume. The cheap gate runs inline;
the DB estimate runs off-thread.)Úprune_advisor)Úget_hermes_homeNc               ó   € V ^8„  d   QhRR/# rÌ   r   )r   s   "r   r   Ú._maybe_notify_auto_prune.<locals>.__annotate__}  s   € ÷ 6ñ 6�4ñ 6r   c                 óÒ   <€ SP                  S4      p V e2   SP                  S4      e   \        RSSP                  V 4      4       R # \        P                  \        S4      R 4       R # )Nr1   )ÚadviseÚ
should_askr@   Únotice_payloadr  rë   r
   )ÚadvicerR   r  r+   s    €€€r   Ú_workÚ'_maybe_notify_auto_prune.<locals>._work}  sU   ø€ Ø×%Ñ% dÓ+ˆØÒ -×":Ñ":¸4Ó"@Ò"LÜÐ% s¨M×,HÑ,HÈÓ,PÖQä ×$Ñ$¤S¨£Y°Ö5r   )Úspawn_context_threadzauto-prune-advice)Úname)Ú
hermes_clir  Úhermes_constantsr  rT   Ú
notice_duer  r9   r
   Úagent.memory_providerr%  rB   )r+   rJ   r  r#  r%  rR   r  s   f&   @@r   Ú_maybe_notify_auto_pruner+  r  sk   ú€ õ )Ý0ß!-Œ4�Ô±?Ó3D€DØ×#Ñ# DÔ*>×?Ò?ÙÜ&*§i¡i£kÔœ˜T›Ñ#÷6ò 6õ ;Ù˜Ð%8Ô9×?Ñ?ÖAr   c               ó   € V ^8„  d   QhRR/# )r   r   r
   r   )r   s   "r   r   r   ˆ  s   € ÷ ñ ˜#ñ r   c                 ó   € \        4       # r[   )Únew_session_idr   r   r   Ú_new_session_keyr/  ˆ  s   € ÜÓÐr   z^\d{8}_\d{6}_[0-9a-f]{6}$c               ó    € V ^8„  d   QhRRRR/# )r   ÚvaluerK   r   r{   r   )r   s   "r   r   r   ”  s   € ÷ Cñ C ð C°ñ Cr   c                óR   € \        T ;'       d    \        P                  V 4      4      # r[   )r{   Ú_MINTED_SESSION_KEY_REÚ	fullmatch)r1  s   &r   Ú_is_server_minted_keyr5  ”  s!   € Ü�×AÐAÔ0×:Ñ:¸5ÓAÓBÐBr   c               ó    € V ^8„  d   QhRRRR/# )r   rå   r
   r   r{   r   )r   s   "r   r   r   ˜  s   € ÷ ñ ¨ð °ñ r   c                óÖ   € \        \        P                  4       4       FG  p\        V\        4      '       g   K  \        VP                  R4      ;'       g    R4      V 8X  g   KF   R# 	  R# )uT  True if any live registry record claims this stored key (any profile).

Fail-closed gate for minted-key materialization: a key claimed by a live
session â€” even one scoped to a different profile â€” is owned, so an
unscoped resume must not mint a phantom row in the launch store (#93296
cross-profile rule: routing guesses are forbidden).
rÈ   r¨   TF)rû   r”   Úvaluesrp   r   r
   r   )rå   Úrecords   & r   Ú_any_live_session_claims_keyr:  ˜  sR   € ô ”y×'Ñ'Ó)Ö*ˆÜ˜&¤$×'Ò'ÙÜˆv�z‰z˜-Ó(×.Ð.¨BÓ/°6Ö9Úñ	 +ñ
 r   c                óH   € V! V R ,          P                   \        V 4      4      # )r"   )Ú_checkpoint_mgrro   )r   Úfns   &&r   Ú_with_checkpointsr>  ¨  s   € Ùˆg�gÕ×.Ñ.´¸WÓ0EÓFÐFr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÏ   r
   Úrefr   r   )r   s   "r   r   r   ¬  s&   € ÷ Nñ N sð N°ð N¸ñ Nr   c                ó  €  V P                  V4      p\        V4      ^,
          p^ Tu;8:  d   \        T4      8  d   M MY4,          P	                  RT4      # \        R\        T4       R24      h  \         d    Tu # i ; i)é   Úhashz!Invalid checkpoint number. Use 1-Ú.)Úlist_checkpointsr<   Ú
ValueErrorÚlenr   )ÚmgrrÏ   r@  ÚcheckpointsÚidxs   &&&  r   Ú_resolve_checkpoint_hashrK  ¬  s   € ðØ×*Ñ*¨3Ó/ˆÜ�#‹h˜�lˆð 	ˆCÖ"”#�kÓ"×"ØÕ×#Ñ# F¨CÓ0Ð0Ü
Ð8¼¸[Ó9IÐ8JÈ!ÐLÓ
MÐMøô	 ô ØŠ
ðús   ‚#A0 Á0B Á?B Úmodelr¨   ÚproviderÚprofilec          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   rÏ   r
   rL  rM  rN  rK   r   r   r   )r   s   "r   r   r   º  s1   € ÷ 
ñ 
˜3ð 
¨#ð 
¸cð 
ÐQ[ð 
Ðgkñ 
r   c               ó  € V'       g%   \        R\        V4      /4      w  rT;'       g    TpRV R\        P                  V 4      R\	        V 4      /\        R\        V4      /V'       d   RVRV/M/ 4      CR/ R/ R	R
R\        R\        V4      /C# )zmsession.info for a not-yet-built session (session.create's shape); tools/skills land with the deferred build.rJ   rÏ   ÚbranchÚprojectrL  rM  ÚtoolsÚskillsrÇ   TÚdesktop_contractÚprofile_name)Ú_session_default_routeÚ_profile_homeÚ	git_proberQ  Ú_project_info_for_cwdÚ_lazy_info_routeÚDESKTOP_BACKEND_CONTRACTÚ_response_profile_name)rÏ   rL  rM  rN  Údefault_providers   &$$$ r   Ú_lazy_resume_infor_  º  s£   € çÜ"8¸.Ì-ÐX_ÓJ`Ð9aÓ"bÑˆØ×/Ð/Ð/ˆàˆs�Hœi×.Ñ.¨sÓ3°YÔ@UÐVYÓ@Zðä
˜N¬M¸'Ó,BÐC×otÀgÈuÐV`ÐbjÑEkÐz|Ó
}ðð 	��X˜r 6¨4ØÔ4°nÔF\Ð]dÓFeñ	ð r   rý   ÚtuiÚclose_on_disconnectÚdisplay_history_prefixrJ   rÇ   rh   rg   Ú
todo_staterþ   c               óL   € V ^8„  d   QhRRRRRRRRRRR	R
RRRRRR
RRRRRR
RR/# )r   rÈ   r
   rü   r<   rÏ   rú   rû   rý   ra  r{   rb  zlist | NonerJ   zPath | NonerÇ   rg   r   rc  rþ   r   r   r   )r   s   "r   r   r   Ç  s�   € ÷ ñ ØðØ"ðØ),ðØ7;ðØLOðàðà?Jðð ðð -1ðð *ð	ð ?Jð	ð
 ðð
 $(ñr   c               óø  € \         P                  4       p/ RRbRRbR\        P                  4       bR. bRVbRVbRVbR	VbR
VbRT;'       g    . bR/ bR\        V4      bRVbR\        P	                  4       bR^ bR^ bRRb/ RVbRV	bRV
bRRbRVe   \        V4      MRbRVbRV bRRbRV bR\        4       bRRbRVbR \        4       bR!/ bR"VbR#\        4       ;'       g    \        bR$\        \        4       4      bC# )%ux   A live-session record whose AIAgent is built later (lazy watch / cold resume) â€” _init_session's shape minus the agent.r"   Nr   r   r  ra  Úactive_session_leaserü   r  rÏ   rb  r	  rþ   rú   r-   r   r  r  r  rÇ   rh   r§   rJ   rg   re   r/   FrÈ   r  r  rý   r  r
  rc  r  r  )r9   ré   ÚEventr{   rê   r
   r  r  r  r  r  )rÈ   rü   rÏ   rú   Úleaserý   ra  rb  rJ   rÇ   rh   rg   rc  rþ   r  s   &$$$$$$$$$$$$$ r   Ú_deferred_session_recordri  Ç  sü  € ô �)‰)‹+€CðØ�ðØ$ dðØ,9¼9¿?¹?Ó;LðØN_ÐacðàÐ2ðà4JÈEðàSYÐ[_ðð 	�cðð ! #ðð (@ÐAW×A]ÐA]Ð[]ðð 	˜"ð	ð -¬d°<Ó.@ð	ð CLÈWð	ð
 	œ	Ÿ™Ó(ðð
 +<¸Qðð
 APÐQRðð 	˜ñð  -¨cðð 4:¸4ðð BRÐSaðð 	˜ðð 	¨\Ò-Eœ˜LÔ)È4ðð 	#Ð$<ðð ?RÐS^ðð 	�5ðð (¨ðð 7GÔH\ÓH^ðð 	˜ðð '¨ðð 1EÔF^ÓF`ðð 	˜2ðð  ,¨Zðð 	Ô&Ó(×<Ð<Ô,<ðð 	Ô/Ô0AÓ0CÓDñð r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r{   r   )r   s   "r   r   r   ä  s   € ÷ bñ b 4ð b¸$ñ br   c                ó€   € V\         J d   R# V P                  R4      ;'       g    RV'       d   \        V4      8H  # R8H  # )zªTrue when ``session`` belongs to ``profile_home`` (None = launch profile; a record with no
``profile_home`` is the launch profile's). ``_ANY_PROFILE`` disables the check.TrJ   N)Ú_ANY_PROFILEr   r
   )r   rJ   s   &&r   Ú_live_profile_matchesrm  ä  s;   € ð ”|Ó#ÙØ�K‰K˜Ó'×/Ð/¨4Ï,´S¸Ó5FÑaÐaÐ\`ÑaÐar   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r+   r
   rÈ   r9  r   r   útuple[str, dict] | Noner   )r   s   "r   r   r   ì  s)   € ÷ ñ ˜cð °ð ¸Tð ÐMdñ r   c           	     ó²  € VP                  R4      p\        ;_uu_ 4        \        W4      pVe!   Ve   VP                  4        VuuRRR4       # \        ;_uu_ 4        V\
        V &   \        \
        V ,          4       RRR4       \        V 4       \        WVR7      pRRR4       \        X4       R#   + '       g   i     L=; i  + '       g   i     L0; i)uÁ   Register ``record`` as the live session for ``session_key`` under the resume lock, or â€” if a
concurrent resume already won â€” release ``lease`` and return the winner for the caller to reuse.rJ   N)Úkeep_sidrJ   )
r   Ú_session_resume_lockÚ_find_live_session_by_keyÚreleaser“   r”   r¬   Ú_cancel_ws_orphan_reapÚ_claim_parked_runtimesÚ_finalize_superseded_runtimes)r+   rÈ   r9  rh  rJ   ÚliveÚstales   &&&&   r   Ú_claim_or_reuse_liverz  ì  sž   € ð
 —:‘:˜nÓ-€Lß	Ö	Ü(¨ÓCˆØÒØÒ Ø—‘”ð ÷ 
Ò	÷ Ž^Ø#ŒI�c‰NÜ!¤)¨C¥.Ô1÷ ô
 	˜sÔ#Ü& {È|Ô\ˆ÷ 
ô " %Ô(Ù÷ �^ú÷ 
×	ús)    %CÁCÁ B3	Á> CÂ3CÂ>CÃC	c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÈ   r
   rq  r   úlist[tuple[str, dict]]r   )r   s   "r   r   r     s"   € ÷ ñ ¨ð ¸#ð Ð]sñ r   c               ó  € . p\         ;_uu_ 4        \        \        P                  4       4       UUu. uFj  w  rEWA8w  g   K  VP	                  R4      '       d   K&  \        WTR7      V 8X  g   K9  \        WR4      '       g   KL  VP	                  R4      \        J g   Kg  WE3NKl  	  pppRRR4       X F3  w  rG\        V4       \        V4      ;pf   K!  VP                  WH34       K5  	  V# u uppi   + '       g   i     LQ; i)zÉClaim sentinel-parked stale runtimes of ``session_key`` for supersession: cancel their orphan-reap
Timer and pop them here (under the caller's _session_resume_lock); the caller finalizes after release.Ú
_finalized©Úfallbackr  N)r“   rû   r”   Úitemsr   Ú_session_lookup_keyrm  Ú_detached_ws_transportru  Ú_pop_session_by_idÚappend)	rÈ   rq  rJ   ry  Úold_sidÚoldÚ
candidatesÚ_oldÚpoppeds	   &$$      r   rv  rv    sã   € ð %'€Eß	Žä/3´I·O±OÓ4EÔ/FômÙ/F™|˜wØÑ"ô Ø+.¯7©7°<×+@ô ä# CÔ:¸kÑIô ô & c×8ô ð >A¿W¹WÀ[Ó=QÔUkÐ=kô ˆW‹NÑ/Fð 	ñ m÷ 
ó $‰ˆÜ˜wÔ'Ü(¨Ó1Ð1ˆFÔ>Ø�L‰L˜'Ð*Ö+ñ $ð €Lùóm÷ 
�ús:   ‘!C.²
C(
ÁC(
ÁC(
Á-C(
Â C(
ÂC(
Â"C.Ã(C.Ã.C>	c               ó    € V ^8„  d   QhRRRR/# )r   ry  r|  r   rY   r   )r   s   "r   r   r     s   € ÷ Sñ SÐ)?ð SÀDñ Sr   c                óˆ   € V  F  w  r \        VRR7       K  	  R#   \         d    \        P                  RT4        K=  i ; i)uÙ   end_reason ``superseded_by_resume`` is deliberately NOT in _RECLAIM_END_REASONS (no ``session.reclaimed``
broadcast â†’ no reap->broadcast->resume loop) but IN _RECOVERABLE_END_REASONS (Bot Chat resurrection applies).Úsuperseded_by_resume)Ú
end_reasonz)superseded runtime teardown failed sid=%sN)Ú_teardown_popped_sessionr&   r¹   Ú	exception)ry  r†  rŠ  s   &  r   rw  rw    sE   € ó !‰ˆð	SÜ$ VÐ8N×Oó !øô ô 	SÜ×ÑÐHÈ'×Rð	Sús   ‰œ!AÁ Ac               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r
   Údelayr   r   rY   r   )r   s   "r   r   r      s!   € ÷ 	ñ 	˜sð 	¨5ð 	¸Dñ 	r   c                ól   a € V 3R lp\         P                  W4      pRVn        VP                  4        R# )zxPre-warm a deferred session's agent off the response path (session.create + cold resume; _sess() also builds on demand).c                 óŒ   <€ \         P                  S4      ;p e*   \        SV 4       \        SV P                  R4      4       R # R # )NrJ   )r”   r   rí   r+  )r   r+   s    €r   Ú_runÚ#_schedule_agent_build.<locals>._run#  s9   ø€ Ü —}‘} SÓ)Ð)ˆGÒ6Ü˜s GÔ,Ü$ S¨'¯+©+°nÓ*EÖFñ 7r   TN)ré   ÚTimerræ   rB   )r+   r’  r•  Útimers   f&  r   Ú_schedule_agent_buildr™     s)   ø€ õGô �O‰O˜EÓ(€EØ€E„LØ	‡K�K†Mr   Úmodel_history_onlyc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	stored_idr
   rš  r{   r   ztuple[list, list, list]r   )r   s   "r   r   r   ,  s"   € ÷ (ñ (¨3ð (Àtð (ÐXoñ (r   c               óÌ  € ^ RI Hp V'       d   V P                  VRRR7      pV. . 3# Rp\        V RR4      p\	        V4      '       d
    V! V4       V'       d'   V P                  V4      w  rHWHV P                  V4      3# V P                  VRRR7      pWD. 3#   T d#   pRp\
        P                  RY4        Rp?LjRp?i\         d    \
        P                  RRR	7        L‘i ; i)
zË(raw_history, display_history, ancestor_prefix) for a cold resume. The full lineage is materialized
only while it fits sessions.max_resume_messages (the transcript is REST-paginated), else the tip alone.)ÚSessionResumeTooLargeErrorT)Úrepair_alternationÚinclude_row_idsÚassert_resume_safeNFz\resume %s: compression lineage exceeds the resume limit (%s); hydrating the tip segment onlyz1resume lineage guard failed; loading full lineagerÑ   )Úhermes_staterž  Úget_messages_as_conversationÚgetattrÚcallabler¹   r4   r&   ÚdebugÚget_resume_conversationsÚget_ancestor_display_prefix)	Údbrœ  rš  rž  Úraw_historyÚprefix_fitsÚguardÚexcÚdisplay_historys	   &&$      r   Ú_load_resume_transcriptr¯  ,  sû   € õ 8ßØ×5Ñ5Ø¨$Àð 6ó Fˆà˜B Ð"Ð"Ø€KÜ�BÐ,¨dÓ3€EÜ�‡‚ð	]Ù�)Ô÷ Ø')×'BÑ'BÀ9Ó'MÑ$ˆØ¨R×-KÑ-KÈIÓ-VÐVÐVØ×1Ñ1°)ÐPTÐfjÐ1Ók€KØ RÐ'Ð'øð *ô 	(ØˆKÜ�K‰KÐvØ!÷(ñ (ûäô 	]Ü�L‰LÐLÐW[ˆLÖ\ð	]ús$   Á	B ÂC#ÂB;Â;C#ÃC#Ã"C#Úclose_dbc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   r+   r
   rœ  r°  r{   rš  r   rY   r   )r   s   "r   r   r   F  s1   € ÷ 97ñ 97 Cð 97°Cð 97È$ð 97Ø37ð97ØDHñ97r   c               ót   a aaaa€ R VVVV V3R llp\         P                  VRR7      P                  4        R# )z?Load a cold resume's transcript off the JSON-RPC response path.c               ó   € V ^8„  d   QhRR/# rÌ   r   )r   s   "r   r   Ú0_schedule_resume_hydration.<locals>.__annotate__J  s   € ÷ 4Yñ 4Y�$ñ 4Yr   c                 ó�  <€ \         P                  S4      p  V f3    S'       d(   \        SR4      '       d    SP                  4        R # R # R # \        RSRRRR	/4       \        SR
R 4      p\        V4      '       d	   V! S4       \        SSSR7      w  r#p\        V4      p\         P                  S4      V Jd3    S'       d(   \        SR4      '       d    SP                  4        R # R # R # V R,          ;_uu_ 4        V P                  WTRR7       S'       g   \        V4      V R&   R R R 4       \        V4      pVe   V P                  R4      f   W`R&   V R,          P                  4        \        RSRV R,          RRRR/4       \!        SV S4       \#        SV 4       S'       d(   \        SR4      '       d    SP                  4        R # R # R #   \         d    \
        P                  RSRR7        R # i ; i  \         d    \
        P                  RSRR7        R # i ; i  + '       g   i     EL; i  \         Ed}   p\         P                  S4      T Jd`    R p?S'       dR   \        SR4      '       d>    SP                  4        R #   \         d    \
        P                  RSRR7        R # i ; iR # R # \%        T4      pT P                  RYˆR7       T R,          P                  4        T R,          P                  4        \        RSRTRRRR/4       \        RSRT/4       \&        ;_uu_ 4        \         P                  S4      T J d   \         P)                  SR 4      MR p	R R R 4       M  + '       g   i     M; iX	;'       g    / P                  R4      ;p
e   T
P+                  4         R p?ELR p?ii ; i  \         d    \
        P                  RSRR7        R # i ; i  S'       dO   \        SR4      '       d<    SP                  4        i   \         d    \
        P                  RSRR7        i i ; ii i ; i)NrÂ   z failed to close resume db for %sTrÑ   zsession.resume_progressÚphaserú   ÚstatusÚloadingÚretire_undrained_queue_rows)rš  r-   F)rú   rb  Úresume_hydratingÚresume_message_countrc  rž   Úmessage_countÚcomplete)rº  rŸ   r   r   r…   ÚfailedrÔ   rf  )r”   r   rÝ   rÂ   r&   r¹   r¦  r@   r¤  r¥  r¯  Úcanonicalize_replay_historyrr   rG  Ú_todo_state_from_historyr•   Ú_maybe_schedule_auto_continuerí   Úresume_failed_messager“   rë   rt  )r   Úretirerª  r®  Úprefixrú   rc  r­  r…   Ú	discardedrh  r°  r©  rš  r+   rœ  s              €€€€€r   r•  Ú(_schedule_resume_hydration.<locals>._runJ  s¹  ø€ Ü—-‘- Ó$ˆð2	YØŠØ÷X œG B¨×0Ò0ðYØ—H‘H–Jñ 1‰xôW Ð+¨S°7¸IÀxÐQZÐ2[Ô\ô ˜RÐ!>ÀÓEˆFÜ˜×ÒÙ�yÔ!Ü3JØ�IÐ2Dô4FÑ0ˆK¨&ô 2°+Ó>ˆGÜ�}‰}˜SÓ!¨Ó0Ø÷8 œG B¨×0Ò0ðYØ—H‘H–Jñ 1‰xð7 ˜×(×(Ø—‘ wÐ`e�Ôfß)Ü69¸/Ó6J�GÐ2Ñ3÷ )ô
 2°'Ó:ˆJØÒ%¨'¯+©+°lÓ*CÒ*KØ(2˜Ñ%ØÐ*Õ+×/Ñ/Ô1ÜÐ+¨SØ" GÐ,BÕ$CÀWÈiÐYaÐcmÐnôpä)¨#¨w¸	ÔBÜ˜s GÔ,÷ œG B¨×0Ò0ðYØ—H‘H–Jñ 1‰xøô !ô YÜ—L‘LÐ!CÀSÐSW�L×XðYû”yô YÜ—L‘LÐ!CÀSÐSW�L×XðYú÷= )×(Ð(ûô õ 	 Ü�}‰}˜SÓ!¨Ó0Û÷ œG B¨×0Ò0ðYØ—H‘H–JøÜ ô YÜ—L‘LÐ!CÀSÐSW�L×XðYúñ 1‰xô ,¨CÓ0ˆGØ�N‰N¨EÈˆNÔeØÐ*Õ+×/Ñ/Ô1Ø�MÕ"×&Ñ&Ô(ÜÐ+¨S°9¸gÀwÐPYÐ[cÐemÐ2nÔoÜ�'˜3 ¨GÐ 4Ô5ß–Ü8A¿¹ÀcÓ8JÈgÓ8UœIŸM™M¨#¨tÔ4Ð[_�	÷  ——�úà#Ÿ/˜/ r×.Ñ.Ð/EÓFÐF�ÒSØ—‘”ÿùð	 ûô" !ô YÜ—L‘LÐ!CÀSÐSW�L×XðYû÷ œG B¨×0Ò0ðYØ—H‘H•JøÜ ô YÜ—L‘LÐ!CÀSÐSW�LÖXðYúð 1ˆxúså   ˜H8 ¸G ÁA,H8 ÃG: Ã,H8 Ã=*H$Ä'A8H8 Æ:O Ç#G7Ç6G7Ç:#H!È H!È$H5	È/	H8 È8O ÉN;ÉO- É<J Ê#J5Ê4J5Ê<A<N;Ì82M3Í*	N;Í3NÍ>N;Î&N;Î5O- Î;O Ï O- Ï#O*Ï)O*Ï-QÐ	PÐQÐ#Q Ð=QÐ?Q Ñ QTrä   N)ré   rì   rB   )r+   rœ  r©  r°  rš  r•  s   fffdd r   Ú_schedule_resume_hydrationrÇ  F  s.   ü€ ÷4Yô 4Yôj ×Ñ˜D¨ÐÓ.×4Ñ4Ö6r   c               ó    € V ^8„  d   QhRRRR/# )r   r+   r
   r   r   )r   s   "r   r   r   ‚  s   € ÷ -ñ -˜sð - sñ -r   c                ó0   € ^ RI Hp VP                  V 4      # )uI   Method of the serverâ†’client request *sid* is blocked on ("" when none).)Úserver_requests)Útui_gatewayrÊ  Úpending_kind)r+   rÊ  s   & r   Ú_session_pending_kindrÍ  ‚  s   € å+Ø×'Ñ'¨Ó,Ð,r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r
   r   r   r   r   )r   s   "r   r   r   ˆ  s!   € ÷ ;ñ ;˜cð ;¨Dð ;°Sñ ;r   c                óæ   € \        V 4      '       d   R # VP                  R4      pVe0   VP                  4       '       g   VP                  R4      '       d   R# VP                  R4      '       d   R# R# )Úwaitingr   rÊ   Ústartingr/   ÚworkingÚidle)rÍ  r   r>   )r+   r   r   s   && r   Ú_session_live_statusrÔ  ˆ  sY   € Ü˜S×!Ò!ÙØ�K‰K˜Ó&€EàÒ §¡§¢°G·K±KÐ@U×4VÒ4VÙØŸ™ I×.Ò.ˆ9Ð:°FÐ:r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r7   r
   r   r   )r   s   "r   r   r   ’  s!   € ÷ ñ  ð ¨Cð °Cñ r   c           	     óÈ  € \        V P                  R 4      ;'       g    R4      P                  4       p\        P	                  \
        4      ;_uu_ 4        \        V 4      ;_uu_ 4       pVe=   \        VP                  V4      ;'       g    T;'       g    R4      P                  4       MTpRRR4       RRR4       V#   + '       g   i     L; i  + '       g   i     T# ; i)r§   r¨   N)r
   r   rª   r$   r%   r&   Ú_session_dbÚget_session_title)r   r7   Útitler©  s   &&  r   Ú_session_live_titlerÚ  ’  sš   € Ü�—‘˜OÓ,×2Ð2°Ó3×9Ñ9Ó;€EÜ	×	Ñ	œY×	'Õ	'¬°W×)=Ô)=ÀØIKÊ”�B×(Ñ(¨Ó-×<Ð<°×<Ð<¸"Ó=×CÑCÔEÐ]bˆ÷ *>×	'à€L÷ *>×)=ú×	'Ö	'à€Lús0   ÁCÁ(!B=	Â
	B=	ÂB=	Â+CÂ=CÃCÃC!	c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r+   r
   r   r   Úcurrent_sidr   r   )r   s   "r   r   r   ™  s(   € ÷ ñ ˜Cð ¨$ð ¸Sð È$ñ r   c                óü  a€ \        WR 7      pVP                  R4      p\        VP                  R4      ;'       g    . 4      p\        W4      p\	        V4      p\        V4      p\        V3R l\        V4       4       R4      p	V'       dJ   RP                  \        VP                  R4      ;'       g    T	4      P                  4       4      R,          p	MiV'       db   RP                  \        VP                  R4      ;'       g    VP                  R4      ;'       g    T	4      P                  4       4      R,          p	\        P                  4       p
R	W8H  R
T R\        VP                  R4      ;'       g    VP                  R4      ;'       g    T
4      R\        V4      R\        \        VRR4      ;'       g    \        4       4      RT	RTR\        VP                  R4      ;'       g    T
4      RVR\!        W4      /
# )r  r"   rú   c           
   3  óö   <"  € T Fn  p\        VP                  R VP                  RR4      4      4      P                  4       ;o'       g   KF  RP                  SP	                  4       4      R,          x € Kp  	  R# 5i)Úcontentr2   r¨   Ú ºNé    NN)Ú_content_display_textr   rª   ÚjoinÚsplit)Ú.0Úmsgr2   s   & €r   Ú	<genexpr>Ú%_session_live_item.<locals>.<genexpr>   sc   øé € ð iÑ<M°SÜ 5°c·g±g¸iÈÏÉÐQWÐY[ÓI\Ó6]Ó ^× dÑ dÓ fÐf˜Ófô 1�C—H‘H˜TŸZ™Z›\Ó*¨4×0Ò0Ó<Mùs   ƒAA9Á.A9r¨   rà  Úuserrá  Ú	assistantr_   r8   r  r  r¼  rL  ÚpreviewrÈ   Ú
started_atr·  rÙ  )r‚  r   rû   rÔ  Ú_inflight_snapshotÚ_queued_prompt_snapshotÚnextÚreversedrä  r
   rå  r9   r   rG  r¤  Ú_resolve_modelrÚ  )r+   r   rÜ  r7   r"   rú   r·  ÚinflightÚqueuedrì  r  r2   s   &&&        @r   Ú_session_live_itemrõ  ™  sœ  ø€ Ü
˜gÔ
4€CØ�K‰K˜Ó €EÜ�7—;‘;˜yÓ)×/Ð/¨RÓ0€GÜ! #Ó/€FÜ! 'Ó*€HÜ$ WÓ-€FÜô i¼HÀWÔ<Mó iØjlón€GçØ—(‘(œ3˜vŸz™z¨&Ó1×<Ð<°WÓ=×CÑCÓEÓFÀtÕL‰ß	Ø—(‘(œ3˜xŸ|™|¨KÓ8×[Ð[¸H¿L¹LÈÓ<P×[Ð[ÐT[Ó\×bÑbÓdÓeÐfjÕkˆÜ
�)‰)‹+€Cà�3Ñ% t¨SØ”u˜WŸ[™[¨Ó7×[Ð[¸7¿;¹;À|Ó;T×[Ð[ÐX[Ó\Øœ˜W›Ø””W˜U G¨RÓ0×DÐD´NÓ4DÓEÀyÐRYØ�s˜L¬%°·±¸LÓ0I×0PÐ0PÈSÓ*QÐS[Ð]cØÔ$ WÓ2ðð r   r€  c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r€  r
   r   r   )r   s   "r   r   r   ±  s&   € ÷ rñ r ð r°Cð rÀñ rr   c               ó¦   € \        \        V P                  R 4      RR4      ;'       g&    V P                  R4      ;'       g    T;'       g    R4      # )r"   rf   NrÈ   r¨   )r
   r¤  r   )r   r€  s   &$r   r‚  r‚  ±  sC   € ÜŒw�w—{‘{ 7Ó+¨\¸4Ó@×pÐpÀGÇKÁKÐP]ÓD^×pÐpÐbj×pÐpÐnpÓqÐqr   c               ó    € V ^8„  d   QhRRRR/# )r   rÈ   r
   r   ro  r   )r   s   "r   r   r   µ  s   € ÷ 	ñ 	¨3ð 	ÐNeñ 	r   c                óÖ   € \        \        P                  4       4       FG  w  r#VP                  R 4      '       d   K  \	        W2R7      V 8X  g   K1  \        W14      '       g   KD  W#3u # 	  R# )r~  r  N)rû   r”   r�  r   r‚  rm  )rÈ   rJ   r+   r   s   &&  r   rs  rs  µ  sQ   € ô
 œYŸ_™_Ó.Ö/‰ˆØ—‘˜L×)Ô)Ô.AÀ'Ô.XÐ\gÖ.gÜ)¨'×@Ô@Ø�<Òñ 0ñ r   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r   )r   s   "r   r   r   Á  s   € ÷ ñ  Dð ¨Tñ r   c                óÔ   € V P                  R 4      pVe   \        V4      # \        V 4      pRVR\        P	                  V4      R\        V4      RR/\        V / 4      CR/ R/ R\        /C# )	r"   rÏ   rQ  rR  rÇ   TrT  rS  rU  )r   r·   ro   rY  rQ  rZ  r[  r\  )r   r"   rÏ   s   &  r   Ú_fallback_session_inforü  Á  s   € Ø�K‰K˜Ó €EØÒÜ˜UÓ#Ð#ô �wÓ
€Càˆs�Hœi×.Ñ.¨sÓ3°YÔ@UÐVYÓ@ZÐ\bÐdhðä
˜7 BÓ
'ðà)1°2°wÀÐDVÔXpñð r   c               ó   € V ^8„  d   QhRR/# )r   r   r•   r   )r   s   "r   r   r   Ó  s   € ÷ lñ l˜ñ lr   c                óÎ  € \        V \        4      '       g   \        4       # ^ RIHpHp V P                  V4      .V P                  V4      ;'       g    RO Uu0 uF)  p\        V\        4      '       g   K  V'       g   K%  RV3kK+  	  ppV P                  R4      pT\        V\        4      '       d"   \        V\        4      '       g   RV30,          # \        4       ,          # u upi )zhA row's durable identities: its ``message_uid`` (and the uids a merged turn absorbed), else ``_row_id``.)ÚABSORBED_MESSAGE_UIDSÚMESSAGE_UIDÚuidÚ_row_idÚrowr   )
rp   r   r•   Úagent.message_metadatarÿ  r   r   r
   r<   r{   )rç  rÿ  r   r  ÚidsÚrow_ids   &     r   Ú_durable_idsr  Ó  sÀ   € ä�cœ4× Ò Ü‹uˆßIØ$'§G¡G¨KÓ$8Ð#b¸C¿G¹GÐDYÓ<Z×<`Ð<`Ð^`Ñ#bó  DÑ#b˜CÔfpÐqtÔvy×fzŒ<ô  @CŒ<ˆE�3‹<Ñ#b€Cð  DØ�W‰W�YÓ€FØ¤z°&¼#×'>Ò'>ÄzÐRXÔZ^×G_ÒG_�E˜6�?Ð#ÕkÐkÔehÓejÕkÐkùò Ds   ÁC"Á5C"Á?C"c               ó$   € V ^8„  d   QhRRRRRR/# )r   Údisplayú
list[dict]Úmemoryr   r<   r   )r   s   "r   r   r   Ý  s!   € ÷ ñ  Jð ¸
ð Àsñ r   c           	     ó¢  € V  Uu. uF-  q"P                  R4      \        VP                  R4      4      3NK/  	  pp^ p\        V4       F  w  rR\        V\        4      '       g   K  VP                  R4      \        VP                  R4      4      3pWcVR 9  d   KS  VP                  Wd4      ^,           pV\        V4      8X  g   K}  Vu # 	  R# u upi )zKAlign an identity-free model prefix without consuming later repeated turns.Úrolerß  Néÿÿÿÿ)r   Ú_coerce_message_textÚ	enumeraterp   r   ÚindexrG  )r	  r  rç  rÄ  Úcursorr  r1  s   &&     r   Ú_legacy_display_anchorr  Ý  s¹   € áU\Ó]ÑU\Èc�w‰w�v‹Ô 4°S·W±W¸YÓ5GÓ HÓIÑU\€FÐ]Ø€FÜ Ö'‰
ˆÜ˜#œt×$Ò$ÙØ—‘˜“Ô"6°s·w±w¸yÓ7IÓ"JÐKˆØ˜v˜w˜Ô'ÙØ—‘˜eÓ,¨qÕ0ˆØ”S˜“[Ö ØŠLñ (ð €Iùò ^s   …3Cc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú
db_displayr
  Ú	in_memoryr   r   )r   s   "r   r   r   í  s'   € ÷ Añ A¨Zð AÀJð AÐS]ñ Ar   c                ó–  a€ V '       g   V# V'       g   V # \        V R,          4      o\        V3R l\        V4       4       RR7      pVR8X  dP   S'       d=   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   V # \	        W4      pVR8X  d   V # \        V 4      \        W^,           R 4      ,           # )uÏ  Merge the persisted DISPLAY lineage with the in-memory live history: ``db_display`` is verbatim and
candidate-inclusive (verification rows the model history collapses out) but can lag by a flush;
``in_memory`` is the recency authority but the collapsed *model* projection. Keep the DB display as base,
append only the in-memory tail past the live copy of the last DB row â€” the verification answer survives a
warm switch AND a not-yet-flushed live turn is kept. The anchor is the row's durable identity: matching on
``(role, text)`` picked the LAST equal text, so a repeated message ("ok" again) hid the unflushed turn.
Identity-free projections align their ordered prefix; conflicting durable IDs never match by text.c              3  ó`   <"  € T F#  w  r\        V4      S,          '       g   K  Vx € K%  	  R # 5ir[   ©r  )ræ  rJ  rç  Ú
anchor_idss   &  €r   rè  Ú/_reconcile_display_with_live.<locals>.<genexpr>û  s(   øé € ÐbÑ+?™x˜sÄ<ÐPSÓCTÐWa×CaÑCa—s’sÓ+?ùs   ƒ.¤
.)Údefaultc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir[   r  )ræ  rç  s   & r   rè  r  ý  s   é € ÐE¹9°Cœl¨3×/Ð/»9ùs   ‚TFNr  )r  Úmaxr  Úanyr  rû   )r  r  Úlast_sharedr  s   && @r   Ú_reconcile_display_with_liver!  í  s¥   ø€ ÷ ØÐßØÐä˜j¨�nÓ-€JÜÔb¬9°YÔ+?ÓbÐlnÔo€KØ�bÔßŸ#›#ÑE¹9ÓEŸ#Ÿ#š#ÑE¹9ÓE×EÒEØÐÜ,¨ZÓCˆØ�bÔØÐÜ�
Óœd 9¸1­_Ð->Ð#?Ó@Õ@Ð@r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   Úin_memory_fallbackr
  r   r   )r   s   "r   r   r     s"   € ÷ ñ  4ð Àð ÐPZñ r   c                óÔ   € V P                  R4      pVe*   V'       d"    VP                  VRRRR7      p\        WB4      # V#   \         d    \        P                  RRR7        T# i ; i)zÑUser-visible DISPLAY projection for a live/warm session: the persisted display lineage (same read as
resume/REST so the payloads agree) reconciled with the in-memory tail; in-memory when the DB is unavailable.rÈ   T)Úinclude_ancestorsr   Úinclude_compactedz#live display projection read failedrÑ   )r   r£  r!  r&   r¹   r¦  )r   r©  r#  r7   r	  s   &&&  r   Ú_live_visible_historyr'    s€   € ð �+‰+�mÓ
$€CØ	‚~Ÿ#ð	Oð ×5Ñ5Ø t¸TÐUYð 6ó [ˆGô 0°ÓLÐLð Ðøô ô 	OÜ�L‰LÐ>ÈˆLÕNØÐð	Oús   ŸA Á"A'Á&A'rü   Útouchr  Úomit_messagesÚinline_imagesTc               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )r   r+   r
   r   r   rü   z
int | Noner(  r{   r  zTransport | Noner)  r*  r   r   )r   s   "r   r   r     sL   € ÷ (0ñ (0Ø	ð(0Øð(0Ø&0ð(0Ø@Dð(0àð(0à7;ð(0àTXð(0àdhñ(0r   c               óœ  € VR ,          ;_uu_ 4        Ve   W!R&   Ve   \        WV4       V'       d   \        P                  4       VR&   \        VP                  R4      ;'       g    . 4      \        VP                  R4      ;'       g    . 4      ,           p\	        V4      \        V4      r˜\        VP                  R4      4      \        V4      rºRRR4       V'       d   XpM(\        V4      ;_uu_ 4       p\        WX4      pRRR4       V'       d   . M\        XVP                  R4      VR7      pR	\        V4      R
V'       d   \        X4      M
\        V4      RTRTRX
RXRT R\        WR7      R\        VP                  R4      ;'       g    \        P                  4       4      R\        W4      /
pRX3RX	3R\!        \#        VP                  R4      ;'       g    R4      4      3R\%        V 4      3R\'        V 4      33 F  w  ppV'       g   K  VVV&   K  	  \)        Wñ4      #   + '       g   i     EL_; i  + '       g   i     EL@; i)r-   Nrü   r  rb  rú   r/   rJ   )rJ   Ú
image_urlsr4   r¼  ÚmessagesÚmessages_omittedÚturn_started_atrf   rÈ   r  rí  r  r·  ró  rô  Úpending_approvalr¨   Úopen_requestsÚpending_connection)Ú_rebind_live_transportr9   rû   r   rî  rï  r{   Ú_turn_started_atr×  r'  Ú_history_to_messagesrü  rG  r‚  r   rÔ  Ú!_pending_approval_request_payloadr
   Ú_open_requestsÚ#_pending_connection_request_payloadÚ_attach_todo_state)r+   r   rü   r(  r  r)  r*  Úin_memory_historyró  rô  r/   r0  rú   r©  r.  Úpayloadr7   r1  s   &&$$$$$           r   Ú_live_session_payloadr=    s  € ð 
�×	 ×	 ØÒØ"�F‰OØÒ Ü" 3°Ô;ßô &*§Y¡Y£[ˆG�MÑ"Ü  §¡Ð-EÓ!F×!LÐ!LÈ"ÓMÔPTÐU\×U`ÑU`ÐajÓUk×UqÐUqÐoqÓPrÕrÐÜ-¨gÓ6Ô8OÐPWÓ8X�&Ü#'¨¯©°IÓ(>Ó#?ÔAQÐRYÓAZ�÷ 
!÷ Ø#‰ä˜×!Ô! RÜ+¨GÐ9JÓKˆG÷ "÷ $‘Ü$ W¸7¿;¹;À~Ó;VÐcpÔqð ð 	Ô& wÓ/°×R_Ä#ÀgÄ,ÔehÐiqÓerØ�HØ˜M¨9°gÐ?PÐRaØ�c˜=Ô*=¸gÔ*TØ”e˜GŸK™K¨Ó5×DÐD¼¿¹»ÓEØÔ& sÓ4ð€Gð # HÐ-°¸&Ð/AØ*Ô,MÌcÐRY×R]ÑR]Ð^kÓRl×RrÐRrÐprÓNsÓ,tÐuØ'¬¸Ó)<Ð=Ø,Ô.QÐRUÓ.VÐWóY‰
ˆˆU÷ ‰5Ø ˆG�C‹LñYô ˜gÓ/Ð/÷K 
!×	 Ð	 ú÷" "×!Ð!ús)   ’ H&³3H&Á'"H&Â
AH&Ã6H:È&H7	È:I	c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   A  s   € ÷ ñ  {ñ r   c                ó  € V f   R# / pR Fo  p\        WR4      p\        V\        4      '       d+   VP                  4       '       d   VP                  4       W&   KO  VR8X  g   KX  \	        V4      '       g   Kk  W1V&   Kq  	  T;'       g    R# )zaAux-client main_runtime override from a live agent, so a one-shot inherits the session's runtime.NÚapi_key)rM  rL  Úbase_urlr@  Úapi_modeÚ	auth_moderf   )r¤  rp   r
   rª   r¥  )r"   ÚruntimeÚfieldr1  s   &   r   Ú_main_runtime_from_agentrF  A  sr   € à‚}ÙØ€Gó eˆÜ˜ dÓ+ˆÜ�eœS×!Ò! e§k¡k§m¢mØ"Ÿ[™[›]ˆG‹NØ�iÖ¤H¨U§O¤OØ"�E‹Nñ eð �?ˆ?�dÐr   c                ó.   € \        \        4       V 4       R # r[   )r   Úglobals)Úservers   &r   ÚregisterrJ  Q  s   € Ü”“	˜6Ö"r   )r   )éP   NNNNF)gš™™™™™©?)r¨   )>Ú__conditional_annotations__Ú__doc__Ú
__future__r   ÚreÚ
method_ctxr   r   r;   r?   rA   r)   rH   rW   r]   ry   r�   rš   r¤   r°   r½   rÄ   rí   ró   r÷   rõ   r  r  Ú__annotations__r+  r/  Úcompiler3  r5  r:  r>  rK  r_  ri  Úobjectrl  rm  rz  rv  rw  r™  r¯  rÇ  rÍ  rÔ  rÚ  rõ  r‚  rs  rü  r  r  r!  r'  r=  rF  rJ  )rL  s   @r   Ú<module>rT     s  øðÜ Xå "ã 	å #÷Qð Ð Ø!%Ð Ø1Ð õõ'QõTõ$6õ
õ*õ"
Põ
-õõ(+õõ&Uòp8ò&<ò
-÷+ð< *,Ð Ð&Ó +õBõ,ð ŸšÐ$@ÓAÐ õCõò GõNð
°ð 
ÀBð 
Ð^b÷ 
ðØRWðà %ðàMQðð !%ðð 49ðð JNðð -1ð	ð MQð	ð
 ÷ñ4 ‹x€õbõð2ÈL÷ õ"S÷	ð(Èe÷ (ð497ÐQVð 97Ø:?÷97õx-õ;õ÷ð0r¸"÷ rð >J÷ 	õõ$lõõ Aõ0ð"(0Ø37ð(0ØGLð(0à"&ð(0à>Cð(0à[_÷(0õVô #r   