+
    jHàj||  ã                   ó  a € R5 tD0 t R t^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIHtHtHtHt ^ RIHt ^ RIHtHtHt ]! R	RR
7      t] ^ k RtR6tRR0tR7t]P>                  ! R4      t  ! R R]4      t!R t"R t#R t$R t%R t&R t'R t(R t)]R 4       t*R t+R8R lt,R t-R t.R t/RR /R! lt0RR /R" lt1R# t2R$ t3R% t4R&RR'R/R( lt5R) t6R* t7]8! 0 R9m4      t9]R+ 4       t:R, t;R- t<R. t=R/ t>R0 t?R1 t@R8R2 ltAR3 tBR4 tCR# ):zFTrusted API preparation and observation of the canonical durable FIFO.N)Ú
ContextVar)Úcontextmanager)Úpartial)ÚPlatform)Úbind_api_stepsÚrestore_api_sessionÚ	run_stepsÚrun_steps_off_loop)Úadmission_result)ÚRuntimeStoreErrorÚadmit_session_inputÚ_jsonÚapi_execution)Údefaultzgateway.api.settings.v1.Útool_start_callbackÚtool_complete_callbackz[0-9a-f]{64}c                   ó:   a a€ ] tR t^t oRtRtV 3R ltRtVtV ;t	# )ÚAdmissionQueueda  The owner retired while this API admission was still queued. Unlike a refused request, the
input is committed: the row stays queued and the next owner runs it exactly once, so a client
that resends it submits the work twice. ``str()`` is the message every API surface shows.z^Hermes is restarting. Your input is saved and will run once when it is back; do not resend it.c                óJ   <€ \         SV `  R 4       V P                  3V n        R# )Úadmission_queuedN)ÚsuperÚ__init__ÚMESSAGEÚargs)ÚselfÚ	__class__s   &€Ú=/home/ubuntu/.hermes/hermes-agent/gateway/session_api_turn.pyr   ÚAdmissionQueued.__init__$   s   ø€ Ü‰ÑÐ+Ô,Ø—\‘\�OˆŽ	ó    )r   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r      s   ù‡ € ñað o€G÷$õ $r   r   c                 ó8  € V P                   P                  4       ;_uu_ 4       pVP                  R \        VP                  ,           34      P                  4       pRRR4       X'       d   \        P                  ! V^ ,          4      # / #   + '       g   i     L7; i)z(SELECT value FROM state_meta WHERE key=?N)ÚdbÚ	_read_ctxÚexecuteÚ_SETTINGS_PREFIXÚ
session_idÚfetchoneÚjsonÚloads)Ú	authorityÚrefÚconnÚsaveds   &&  r   Úapi_settingsr5   )   sl   € Ø	�‰×	Ñ	×	!Ô	! TØ—‘ÐGÜ.°·±Õ?ÐAóCßCKÁ8Ã:ð 	÷ 
"÷ $)Œ4�:Š:�e˜A•hÓÐ0¨bÐ0÷ 
"×	!ús   £7B	Â	B	c                 ó  € V P                   VP                  ,          pVP                  P                  \        P
                  8X  d   \        WP                  4       V P                  P                  VP                  4      pVe   \        VRR 4      V P                  Jd   \        R4      hRV9   Ed   VR,          p\        V4      0 Rm,
          '       gµ   VP                  R	R
4      R
JgŸ   RR0\        V4      8:  d�   \        VP                  R/ 4      \        4      '       dg   VR,          e   \        VR,          \        4      '       d?   RV9   d   \!        VR,          4      '       d    RV9   d$   \#        VR,          4      '       g   \        R4      h\        VR,          4      \        \$        4      ,
          '       d   \        R4      hVP                  R/ 4      P                  R4      ;'       g    \'        W4      p\)        WF4       V# )NÚgateway_runnerÚruntime_drainingÚapi_turn_v1ÚhistoryÚsettingsÚrun_owner_scopeÚbrowser_controlÚrelay_metadataÚresume_unansweredTÚinvalid_params>   Úmediar:   r;   Úturn_authorr>   r=   r<   r?   )Úsessionsr-   ÚsourceÚplatformr   Ú
API_SERVERr   ÚrunnerÚ_adapter_for_sourceÚgetattrr   ÚsetÚgetÚ
isinstanceÚdictÚlistÚ_valid_owner_scopeÚ_valid_browser_controlÚ_SETTING_KEYSr5   Úcheck_api_settings)r1   r2   ÚpayloadÚliveÚadapterÚdatar;   s   &&&    r   Úcheck_api_turnrW   0   s™  € Ø×Ñ˜cŸn™nÕ-€DØ‡{�{×Ñœx×2Ñ2Ô2Ü˜I§~¡~Ô6Ø×Ñ×2Ñ2°4·;±;Ó?€GØ‚œ' 'Ð+;¸TÓBÈ)×JZÑJZÓZÜÐ 2Ó3Ð3Ø˜ÕØ�}Õ%ˆÜ�‹Iò @÷ @ô @à—8‘8Ð/°Ó6¸dÓBØ! :Ð.´#°d³)Ô;Ü! $§(¡(Ð+;¸RÓ"@Ä$×GÒGØ˜•OÒ/¼
À4È	Å?ÔTX×8YÒ8YØ%¨Ô-Ô6HÈÐN_ÕI`×6aÒ6aØ%¨Ô-Ô6LÈTÐRcÕMd×6eÒ6eÜ#Ð$4Ó5Ð5Üˆt�JÕÓ ¤3¤}Ó#5×5Ô5Ü#Ð$4Ó5Ð5Ø�{‰{˜=¨"Ó-×1Ñ1°*Ó=×]Ð]ÄÈiÓA]€HÜ�wÔ)Ø€Nr   c                 ó`   € \        V \        4      ;'       d    \        P                  V 4      R J# ©N)rL   ÚstrÚ_OWNER_SCOPE_REÚ	fullmatch©Úvalues   &r   rO   rO   I   s'   € Ü�eœSÓ!×RÐR¤o×&?Ñ&?ÀÓ&FÈdÐ&RÐRr   c                 óø   € \        V \        4      ;'       dd    \        V 4      R R08H  ;'       dL    \        V R ,          \        4      ;'       d-    V R ,          P	                  R4      ;'       d    V R,          R9   # )Ú	principalÚtransport_familyú
principal:)z	local-apiz
remote-api)rL   rM   rJ   rZ   Ú
startswithr]   s   &r   rP   rP   M   s…   € Ü�uœdÓ#÷ Ið I¬¨E«
°{ÐDVÐ6WÑ(W÷ Ið IÜ˜5 Õ-¬sÓ3÷Ið IØ8=¸kÕ8J×8UÑ8UÐVbÓ8c÷Ið IàÐ(Õ)Ð-HÑHðJr   c                 ó€   € ^ RI Hp Hp RV P                  4       RVP                  4       /p\	        V4      '       d   V# R# )z The authenticated request's browser-controller identity, as the profile-prefix
middleware derived it from the served profile and its API key; never client JSON.)Ú&_api_request_browser_control_principalÚ-_api_request_browser_control_transport_familyr`   ra   N)Úgateway.platforms.api_serverre   rf   rK   rP   )re   rf   Úbounds      r   Ú_request_browser_controlri   S   sC   € ÷_àÐ@×DÑDÓFØÐ!N×!RÑ!RÓ!TðV€Eä*¨5×1Ò1ˆ5Ð;°tÐ;r   c                óœ  € T;'       g    / P                  R4      pVf   R# ^ RIHp VR,          \        R4      R P	                  R4      ^ ,          pTP                  VR8X  d   RMT4      p V P                  V4      pVP                  V4       \        P                  ! VR,          V4      '       d   V# R#   TP                  T4       i ; i)zÿRe-derive the admitted principal from the profile's current API key before it is bound
for execution (also after recovery). A rotated key no longer authorizes the old principal,
so that turn runs unbound, like a request the middleware stamped nothing for.r=   N)Ú_api_request_profiler`   rb   Ú:r   )
rK   rg   rk   ÚlenÚ
rpartitionrJ   Ú!_derive_browser_control_principalÚresetÚhmacÚcompare_digest)rU   rV   rh   rk   ÚprofileÚtokenÚexpecteds   &&     r   Ú_rebind_browser_controlrv   ]   s½   € ð �ZˆZ�R×ÑÐ.Ó/€EØ‚}ÙÝAØ�KÕ ¤ \Ó!2Ð!3Ð4×?Ñ?ÀÓDÀQÕG€GØ ×$Ñ$¨W¸	Ô-A¡TÀwÓO€Eð*Ø×<Ñ<¸WÓEˆà×"Ñ" 5Ô)Ü×'Ò'¨¨kÕ(:¸H×EÒEˆ5ÐOÈ4ÐOøð 	×"Ñ" 5Õ)ús   Á.B8 Â8Cc            	     óü   € \         P                  4       p V f   / # V P                  R4      ;'       g    / pRV R,          P                  R4      ;'       g    RRVP                  RR4      RVP                  RR4      /# )	zÌSession-context fields an executing API admission binds beyond the shared source:
#98619 history-delivery provenance and the rebound browser-controller identity. ``{}``
when no API admission is executing.r=   Úsession_history_deliveryr;   Ú Úbrowser_control_principalr`   Ú browser_control_transport_familyra   ©r   rK   )Úcurrentrh   s     r   Úapi_session_varsr~   n   s   € ô ×ÑÓ!€GØ‚Øˆ	Ø�K‰KÐ)Ó*×0Ð0¨b€EØ&¨°
Õ(;×(?Ñ(?Ð@ZÓ([×(aÐ(aÐ_aØ'¨¯©°;ÀÓ)CØ.°·	±	Ð:LÈbÓ0QðSð Sr   c                 óÖ  € VP                  R 4      pVeÔ   ^ RIHpHp ^ RIHp ^ RIHp VP                  V4      pVP                  VP                  4       8w  d   \        R4      hV! WP                  VP                  4      w  r‰VP                  V	4      p
V
P                  VP                  8w  g/   V
P                  P!                  4       VP                  R4      8w  d   \        R4      hV # )Úroom_dispatch)ÚHostedMemberDispatchÚGatewayRoomCatalog)Ú_local_room_catalog)Úhosted_roomsÚpermission_deniedÚroom_execution_policy)rK   Úgateway.hosted_room_peerr�   r‚   Ú(gateway.platforms.api_server_room_grantsrƒ   Úgatewayr„   Úfrom_mappingÚtarget_install_idÚlocal_authority_gateway_idr   Útarget_profileÚcatalog_digestÚcapability_digestÚexecution_policyÚ
as_mapping)rU   r;   Údispatchr�   r‚   rƒ   r„   rh   Ú_Úcatalogr}   s   &&         r   rR   rR   {   sÂ   € Ø�|‰|˜OÓ,€HØÒßUÝPÝ(Ø$×1Ñ1°(Ó;ˆØ×"Ñ" l×&MÑ&MÓ&OÔOÜ#Ð$7Ó8Ð8Ù(¨×2FÑ2FÈ×H_ÑH_Ó`‰
ˆØ$×1Ñ1°'Ó:ˆØ×"Ñ" e×&=Ñ&=Ô=Ø×+Ñ+×6Ñ6Ó8¸H¿L¹LÐI`Ó<aÔaÜ#Ð$7Ó8Ð8Ø€Nr   c               #   ó&  "  € \         P                  4       p V '       d   V R ,          P                  R4      MRpRpVe    ^ RIHpHp V! VP                  V4      4      p Rx € Ve   ^ RIHp V! V4       R# R#   Te   ^ RIHp T! T4       i i ; i5i)r;   r†   N)ÚRoomExecutionPolicyÚbind_room_execution_policy)Úreset_room_execution_policy)r   rK   Ú$gateway.hosted_room_execution_policyr–   r—   rŠ   r˜   )r}   Úpolicyrt   r–   r—   r˜   s         r   Úapi_policy_scoper›   Œ   s…   é € ä×ÑÓ!€GßAHˆW�ZÕ ×$Ñ$Ð%<Ô=Èd€FØ€EØÒßhÙ*Ð+>×+KÑ+KÈFÓ+SÓTˆð/ÛàÒÝXÙ'¨Ö.ñ øˆ5ÒÝXÙ'¨Õ.ð üs   ‚ABÁA9 Á#BÁ9BÂBc                ó,   € \        \        V 3/ VB 4      # )zSAdmit inline (sync callers and tests); the HTTP doors use ``admit_api_turn_async``.)r   Úadmit_api_steps)rU   Úkwargss   &,r   Úadmit_api_turnrŸ   œ   s   € ä”_ WÑ7°Ñ7Ó8Ð8r   c              ‹  ó˜   "  € ^ RI Hp V! V P                  4      p\        YA;'       g    \	        V 3/ VB \
        R7      G Rj  x€L
 #  L5i)zŠ``admit_api_turn`` (or *steps*, a generator ending in ``admit_api_steps``) with every SQLite
write off the owner loop, in admission order.©Úrequire_active_authority)ÚorphanedN)Úgateway.session_authoritiesr¢   r7   r	   r�   Úschedule_orphan)rU   Ústepsrž   r¢   r1   s   &&,  r   Úadmit_api_turn_asyncr§   ¡   sB   é € õ EÙ(¨×)?Ñ)?Ó@€IÜ# I×/ZÐ/Z¼ÈÑ8ZÐSYÑ8ZÔetÔu×uÐuÑuùs   ‚AA
ÁAÁA
c                ó`   € V R,          w  rpVR,          R8X  d   VP                  V4       R# R# )zZA caller cancelled while its admission committed never observes it: its drain runs anyway.:Né   NÚstatusÚqueuedN)Ú	_schedule)Úadmittedr1   r2   Úrows   &   r   r¥   r¥   ©   s/   € à" 2�,Ñ€I�CØ
ˆ8…}˜Ô Ø×Ñ˜CÖ ñ !r   c              +   óŽ  a "  € ^ RI Hp V! S P                  V 3R l4      pVP                  R4      ;'       g     \        P
                  ! 4       P                  pVP                  R4      '       d   VP                  R4      MRpV'       d$   ^ RIHp V! VP                  V4      ;'       g    TpVP                  V4      pVP                  4        \         Uu/ uF  qwVP                  V4      bK  	  ppVP                  R4      p	V	'       d…   V	P                  R	4      '       dn   VP                  R
4      p
S P                  P                  V
4      pW¹8w  d   \        R4      hV	P                  4        UUu/ uF  w  rÍVR	8w  g   K  WÍbK  	  uppVR&   \         P"                  ! \%        RVR,          RRVP                  R4      '       d   RMVR,          RV//4      4      pVP                  R4      pVe(   \'        V4      '       g   \        R4      hWþR,          R&   \)        4       pVe   VVR,          R&   VP                  P+                  V4      pVe   VR,          R"9  d   \        R4      hVP                  R4      e1   ^ RIHp V! VR,          4      pVf   \        R4      hVVR,          R&   VP                  R4      '       d   RVR,          R&   VP                  R4      '       d   VR,          VR,          R&   VP                  R4      ;'       g9    VP                  R4      ;'       g     \        P
                  ! 4       P                  p\1        VR,          \2        4      '       g   \5        VS VVWèWQ4       Rj  x€L
 # ^ RIHp ^ R IHpHpH p V! 4       ;_uu_ 4        V! VR,          4      VR,          R!&   \C        VVP                  VR,          R!,          4      p \5        VS VVWèWQ4       Rj  x€L
 p RRR4       Xx € X# u upi u uppi  L• L   \D         d    T! 4        Tx € h i ; i  + '       g   i     L@; i5i)#é    r¡   c                  ó$   <€ S P                  4       # rY   )Ú_ensure_session_db)rU   s   €r   Ú<lambda>Ú!admit_api_steps.<locals>.<lambda>³   s   ø€ È×IcÑIcÔIer   r-   Úbind_declared_conversationÚgateway_session_keyN)Údeclared_api_sessionÚrouteÚapi_keyÚrequested_modelr…   ÚtextÚuser_messager9   r:   Úhistory_from_sessionÚconversation_historyr;   r<   r@   r=   rD   rB   )Úparse_turn_authorÚresume_unanswered_turnTr?   r>   Ú
request_idÚactive_run_id)Úcommit_api_images)Úcapture_leaseÚdrop_capture_leaseÚrelease_unheld_mediarA   )Ú
api_serverÚbot_room)#r¤   r¢   r7   rK   ÚuuidÚuuid4ÚhexÚgateway.session_apir·   r)   Úlogical_ownerÚ_require_admission_openrQ   Ú_model_routesr   Úitemsr/   r0   r   rO   ri   Úget_sessionÚagent.turn_authorr¿   rL   rN   Ú_admit_api_payloadÚgateway.session_api_mediarÃ   Úgateway.session_ingress_mediarÄ   rÅ   rÆ   r   Ú	Exception)rU   rž   r¢   r1   ÚsidÚdeclared_keyr·   Úkeyr;   r¸   ÚaliasÚ
configuredÚkÚvrS   r<   r=   Úexistingr¿   ÚauthorrÁ   rÃ   rÄ   rÅ   rÆ   Úreleaser­   s   f,                         r   r�   r�   °   sÆ  øé € åDÙ(¨×)?Ñ)?ÔAeÓf€IØ
�*‰*�\Ó
"×
6Ð
6¤d§j¢j£l×&6Ñ&6€CØ8>¿
¹
ÐC_×8`Ò8`�6—:‘:Ð3Ô4Ðfj€LßÝ<Ù" 9§<¡<°Ó>×EÐEÀ#ˆð ×
!Ñ
! #Ó
&€CØ×%Ñ%Ô'Ý0=Ó>±¨�V—Z‘Z “_Ò$±€HÐ>à�L‰L˜Ó!€Eß�—‘˜9×%Ò%Ø—‘Ð.Ó/ˆØ×*Ñ*×.Ñ.¨uÓ5ˆ
ØÔÜ#Ð$7Ó8Ð8Ø.3¯k©k¬mÔN©m¡d a¸qÀI¹~œT˜QšT©mÒNˆ�ÑÜ�jŠjœ ¨¨~Õ(>ÀØ˜6Ÿ:™:Ð&<×=Ò=‘4À6ÐJ`ÕCaÐcmÐowðPyð  zó {ó |€Gà—j‘jÐ!2Ó3€OØÒ"Ü! /×2Ò2Ü#Ð$4Ó5Ð5ð 5D�ÕÐ0Ñ1Ü.Ó0€OØÒ"ð 5Dˆ�ÕÐ0Ñ1ð �|‰|×'Ñ'¨Ó,€HØÒ ¨Õ 2Ð:TÔ TÜÐ 3Ó4Ð4Ø‡z�z�-Ó Ò,Ý7Ù" 6¨-Õ#8Ó9ˆØŠ>Ü#Ð$4Ó5Ð5Ø06ˆ�Õ˜}Ñ-Ø‡z�zÐ*×+Ò+ð 7;ˆ�ÕÐ2Ñ3Ø‡z�zÐ"×#Ò#ð 4:Ð:JÕ3Kˆ�ÕÐ/Ñ0Ø—‘˜LÓ)×\Ð\¨V¯Z©Z¸Ó-H×\Ð\ÌDÏJÊJËL×L\ÑL\€JÜ�f˜^Õ,¬d×3Ò3Ü-¨i¸À#ÀzÐSZÐfrÓ{×{Ð|Ý;ßeÑeñ 
��Ù*;¸FÀ>Õ<RÓ*Sˆ�Õ˜wÑ'ô Ð.°	·±¸gÀmÕ>TÐU\Õ>]Ó^ˆð	Ü"4°YÀÈÈjÐZaÐmyó  #C÷  C‰H÷ 
ð ‚MØ€Oùò} ?ùó OñH |ñ CøÜô 	ÙÔ ØŠMØð	ú÷ 
�üsŸ   ƒA,QÁ0QÂQÂ+,QÃPÃ11QÄ#AQÅ3PÆPÆ	D<QË"QË)*QÌQÌ-AQÍ=PÍ>#QÎ!?P2Ï!PÏ4PÏ5PÏ:QÐPÐP/Ð/P2Ð2Q	Ð=Qc              #   ó>  "  € ^ RI Hp V! V P                  V P                  RW#VR7      p	V	e'   \	        W4       ^ RIHp
 W
! V P                  V4      V	3# \        WVP                  R4      VVP                  R4      VP                  R4      R	7       Rj  x€L
 p\        WV4       \        \        V P                  V P                  RW#VV P                  \        \        W#VR
,          R,          \        VP                  R4      4      R7      4      R7      x €p	WV	3#  L†5i)r°   )Úretry_terminal_admissionÚapi)ÚepochÚprincipal_idr-   rÁ   rS   N)Ú
SessionRefr€   r¶   Úwalked_from)Úhosted_dispatchrØ   Ú
caller_keyrç   r9   r;   rÁ   ©Ú
client_key)rä   rå   r-   rÁ   rS   Ú_authorize_write)Úhermes_state_terminalrâ   r)   rä   rR   Úgateway.session_contractræ   Ú
profile_idr   rK   rW   r   r   Ú_admission_gateÚ_admit_targetÚbool)r1   rU   r×   rÁ   rS   r;   rØ   rž   râ   r®   ræ   r2   s   &&&&&&&&    r   rÓ   rÓ   þ   s  é € Ý>Ù
" 9§<¡<°y·±ÐUZØ°wô@€Cà
‚Ü˜7Ô-Ý7Ø˜* Y×%9Ñ%9¸3Ó?ÀÐDÐDÜ# IÀFÇJÁJÈÓD_ÐnzØ/5¯z©zÐ:OÓ/PÐ^d×^hÑ^hÐivÓ^wôy÷ y€Cä�9 7Ô+ÜÔ+¨Y¯\©\ÀÇÁÐ_dØ#&ÀwØ)2×)BÑ)BÄ7Ü)¨3¸GÀMÕ<RÐS]Õ<^Ü'+¨F¯J©J°|Ó,DÓ'EôDGó *HôIñ I€Cð
 ˜3ÐÐñyùs   ‚BDÂDÂBDrë   Tc               óp   € \        WW4R7       VP                  R\        V ,           \        V4      34       R# )zæInside the admission's own off-loop transaction: one target per request id, and the
session's settings for its later payload-less (internal) turns, committed with the admitted
turn rather than by the drain on the owner loop (N50).rê   zaINSERT INTO state_meta(key,value) VALUES(?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.valueN)Ú_one_targetr+   r,   r   )r-   rÁ   r;   r3   rë   s   &&&&$r   rñ   rñ     s/   € ô �
¨ÕDØ‡L�LÐtÜ" ZÕ/´°x³ÐAöCr   c               ó<  a € VP                  RVS 34      P                  4       '       d   \        R4      hV'       g   R# ^ RIHp \
        ;QJ d%    V 3R lV! W!4       4       F  '       g   K   RM	  RM! V 3R lV! W!4       4       4      '       d   \        R4      hR# )aÈ  One API request id (an Idempotency-Key) names one admission. The ledger keys identity by
target too, so the same key aimed at another session would otherwise run the work again.
A deleted session's admission is gone from the ledger but its tombstone still spends the key
(a target that already holds the key replays before this guard runs). Only a client key can
name a tombstone: a server-minted id (key-less turn, run id) is fresh, so it skips that scan.zkSELECT 1 FROM session_admissions WHERE principal_id='api' AND request_id=? AND target_session_id!=? LIMIT 1Úadmission_conflictN)Úterminal_api_admissionsc              3   ó:   <"  € T F  qR ,          S8g  x € K  	  R# 5i)Útarget_session_idN© )Ú.0r®   r-   s   & €r   Ú	<genexpr>Ú_one_target.<locals>.<genexpr>&  s   øé € Ð
gÑ=f°cÐ"Õ# zÖ1Ó=fùs   ƒTF)r+   r.   r   rí   r÷   Úany)r-   rÁ   r3   rë   r÷   s   f&&$ r   rô   rô     s„   ø€ ð ‡|�|ð 7Ø9CÀZÐ8PóRßRZÑRZÓR\ö]äÐ 4Ó5Ð5ßÙÝ=ß
ƒsÔ
gÑ=TÐUYÔ=fÓ
g‡s‡s‚sÔ
gÑ=TÐUYÔ=fÓ
g×gÒgÜÐ 4Ó5Ð5ñ hr   c                ó6  € \        V4      '       g   R# ^ RIHp  V! W4      pTf   R#  T^,          R,          R,          R,          p\        T4      ;'       d    \        P                  ! YR4      #   \         d     R# i ; i  \        \
        3 d     R# i ; i)zIMatch a caller scope against one canonical API admission, failing closed.F)Úrun_admissionrS   r9   r<   )rO   Ú+gateway.platforms.api_server_authority_runsr   r   ÚKeyErrorÚ	TypeErrorrq   rr   )rU   Úrun_idÚowner_scoper   ÚownedÚstoreds   &&&   r   Úowns_api_runr  *  s–   € ä˜k×*Ò*ÙÝIðÙ˜gÓ.ˆð ‚}ÙðØ�q•˜)Õ$ ]Õ3Ð4EÕFˆô ˜fÓ%×RÐR¬$×*=Ò*=¸fÓ*RÐRøô ô âðûô ”iÐ ô Úðús"   ›A1 ªB Á1B Á?B ÂBÂBc                ó¸   € ^ RI HpHp V! V P                  4       F'  pV! V4      ;_uu_ 4        \	        W4       RRR4       K)  	  R#   + '       g   i     K>  ; i)z¢Recover committed work only after the real API adapter is published. A parked profile's
retained (retiring) authority is not served: its store is never read here.)r  Úserving_authoritiesN)r¤   r  r
  r7   Úrecover_authority_api_turns)rU   r  r
  r1   s   &   r   Úrecover_api_turnsr  =  sG   € ÷ MÙ(¨×)?Ñ)?Ö@ˆ	ñ ˜×#Õ#Ü'¨Ô;÷ $Ñ#ó A÷ $×#Ð#ús   ®AÁAc                 ó   € ^ RI Hp ^ RIHp ^ RIpV! VP
                  4       ^ RIHp V! VP
                  4       VP
                  P                  4       ;_uu_ 4       pVP                  R4       Uu. uF  qw^ ,          NK  	  ppRRR4       X Fœ  p	 \        W4      p
V! VP
                  V	R7      p\        ;QJ d    R V 4       F  '       g   K   RM	  R	M! R V 4       4      '       d   K_  V F&  pVR
,          R8X  g   K  \        WVR,          4       K(  	  VP                  V
4       Kž  	  R# u upi   + '       g   i     L¹; i  \         d;   pTP                  \         4      P#                  RYœP$                  4        Rp?Kú  Rp?ii ; i)r°   )Úlist_session_admissions)Úcollect_unheld_api_imagesN)Úcompact_settled_api_payloadszfSELECT DISTINCT target_session_id FROM session_admissions WHERE principal_id='api' AND status='queued')r-   c              3   ó8   "  € T F  qR ,          R8H  x € K  	  R# 5i)rª   ÚunknownNrú   )rû   r®   s   & r   rü   Ú.recover_authority_api_turns.<locals>.<genexpr>V  s   é € ÐA¹°#�x•= IÖ-»ùs   ‚TFrª   r«   rS   zAPI session %s paused: %s)Úhermes_state_runtimer  rÕ   r  Úloggingr)   rÔ   r  r*   r+   r   rþ   rW   r¬   r   Ú	getLoggerr   ÚwarningÚreason)rU   r1   r  r  r  r  r3   r®   Útargetsr×   r2   ÚpendingÚexcs   &&           r   r  r  H  s>  € Ý<ÝGÛÙ˜iŸl™lÔ+ÝFÙ  §¡Ô.Ø	�‰×	Ñ	×	!Ô	! TØ%)§\¡\Øtô&vó wñ &v˜c�q—6�6ñ &vˆð w÷ 
"ó ˆð
	^Ü% iÓ5ˆCÙ-¨i¯l©lÀsÔKˆGß‹sÑA¹ÓA�s�sŠsÑA¹ÓA×AÒAÙÛ�Ø�x•= HÖ,Ü" 9°3°yµ>ÖBñ ð ×Ñ Ö$ó ùòw÷ 
"×	!ûô !ô 	^Ø×ÑœhÓ'×/Ñ/Ð0KÈS×R\ÑR\×]Ò]ûð	^úsH   ÁD5Á1D0ÂD5Â;EÃEÃ-EÄ(EÄ0D5Ä5E	ÅFÅ/FÆFÚapproval_notify_callbackÚapproval_session_keyc             ‹   óª  a"  € \        V 3/ VB G R j  x€L
 pSe	   V'       g   \        V3/ VB G R j  x€L
 # V P                  pV^,          R,          WR&   V3R lp \        WF4      ;_uu_ 4        \        V3/ VB G R j  x€L
 uuR R R 4       VP	                  V4      V^,          R,          8X  d   VP                  V4       # #  L± L“ LH  + '       g   i     M; i TP	                  T4      T^,          R,          8X  d   TP                  T4       R # R #   TP	                  T4      T^,          R,          8X  d   TP                  T4       i i ; i5i)NÚadmission_idc           
      óð   <€ V R 8X  dh   VP                  R4      ;'       g    R	pS! / VP                  4        UUu/ uF  w  r4VR
9  g   K  W4bK  	  uppCRVR,          RRV9   RRV9   /C4       R# R# u uppi )úapproval.requestÚchoicesÚ	prompt_idrÁ   Úallow_sessionÚsessionÚallow_permanentÚalwaysNrú   )Úkindr#  r"  )rK   rÐ   )Ú
event_typeÚpromptr"  rÜ   rÝ   r  s   &&   €r   ÚsinkÚrun_api_turn.<locals>.sinkj  sˆ   ø€ ØÐ+Ô+Ø—j‘j Ó+×1Ð1¨rˆGÙ$ð &8Ø$*§L¡L¤NÔ`¡N™D˜A°aÐ?_Ñ6_”4�1’4¡NÒ`ð&8à˜f [Õ1°?ÀIÐQXÑDXØ! 8¨wÑ#6ñ&8ö 9ñ ,ùó as   ºA2Á
A2)r§   Úobserve_api_turnÚ_run_admission_aliasesÚobserve_api_controlsrK   Úpop)rU   r  r  rž   r­   Úaliasesr+  s   &d$,   r   Úrun_api_turnr2  `  s&  øé € Ü)¨'Ñ<°VÑ<×<€HØÒ'×/CÜ% hÑ9°&Ñ9×9Ð9ð ×,Ñ,€GØ$,¨Q¥K°Õ$?€GÑ!õ9ð.Ü! (×1Õ1Ü)¨(Ñ=°fÑ=×=÷ 2Ñ1ð �;‰;Ð+Ó,°¸µ¸NÕ0KÔKØ�K‰KÐ,Õ-ð Lñ) =á9ñ  >÷ 2×1úÐ1ð �;‰;Ð+Ó,°¸µ¸NÕ0KÔKØ�K‰KÐ,Ö-ñ Løˆ7�;‰;Ð+Ó,°¸µ¸NÕ0KÔKØ�K‰KÐ,Õ-ð Lüsl   ƒE“C”E¤E³C´(EÁD Á0CÂ C	ÂCÂ
D Â8EÃEÃ	CÃC	ÃD Ã9EÄ8EÅEc              ‹   óš  "  € V w  r#p^ RI Hp V! VP                  VR,          R7      ;'       g    TR,          pVR8X  d   \        R4      hVR8X  dR   \	        W$R,          4      w  rxVP                  R4      p	V	'       d"   T	! VP                  R	4      ;'       g    R
4       Wx3# VP                  P                  VR,          \        P                  ! 4       P                  4       4      p
\        VRR4      pVf	   / ;q²n        \         Uu/ uF   qÁP                  V4      f   K  WÁV,          bK"  	  ppVP                  R4      e.   VP                  4       \        ,          '       g   VR,          VR&   VP                  VR,          . 4      pVP!                  V4        VP#                  V4       VP%                  V4       \        P&                  ! V
4      G Rj  x€L
   TP-                  T4       T'       g   TP/                  TR,          R4       \	        Y$R,          4      # u upi  LN  \         d^   pT! TP                  TR,          R7      ;'       g    / pTP(                  R8X  d"   TP                  R4      R8X  d   \+        4       Thh Rp?ii ; i  TP-                  T4       T'       g   TP/                  TR,          R4       i i ; i5i)r°   ©Úget_session_admissionr  ©r  rª   r  Úunknown_executionÚterminalÚstream_delta_callbackÚfinal_responsery   Úapi_observersNÚtool_progress_callbackr8   r«   )r  r5  r)   r   Ú_settled_api_resultrK   ÚwaitersÚ
setdefaultÚasyncioÚget_running_loopÚcreate_futurerI   r;  Ú_OBSERVER_KEYSÚkeysÚ_TOOL_SINKSÚappendÚ_publish_pendingr¬   Úshieldr  r   Úremover0  )r­   rž   r1   r2   r®   r5  rª   ÚresultÚusageÚcallbackÚwaiterÚ	observersrÙ   ÚobserverÚ
registeredr  r}   s   &,               r   r-  r-  y  s`  é € Ø"Ñ€I�CÝ:ñ $ I§L¡L¸sÀ>Õ?RÔS×ZÐZÐWZÐ\dÕe€FØ�ÔÜÐ 3Ó4Ð4Ø�ÔÜ+¨I¸>Õ7JÓK‰ˆØ—:‘:Ð5Ó6ˆßÙ�V—Z‘ZÐ 0Ó1×7Ð7°RÔ8Øˆ}ÐØ×Ñ×)Ñ)¨#¨nÕ*=¼w×?WÒ?WÓ?Y×?gÑ?gÓ?iÓj€FÜ˜	 ?°DÓ9€IØÒØ.0Ð0ˆ	Ô+Ý,:ÓZ©N S¿j¹jÈ»oÔ �˜C•[Ò ©N€HÐZØ‡z�zÐ*Ó+Ò7ÀÇÁÃÔR]×@]Ô@]ð .4Ð4LÕ-MˆÐ)Ñ*Ø×%Ñ% c¨.Õ&9¸2Ó>€JØ×Ñ�hÔð5Ø×"Ñ" 3Ô'Ø×Ñ˜CÔ Ü�nŠn˜VÓ$×$Ñ$ð 	×Ñ˜(Ô#ßØ�M‰M˜#˜nÕ-¨tÔ4Ü˜y¨nÕ*=Ó>Ð>ùò1 [ñ 	%øÜô ñ (¨	¯©À3À~ÕCVÔW×]Ð]Ð[]ˆØ�:‰:Ð+Ô+°·±¸HÓ0EÈÔ0QÜ!Ó#¨Ð,Øûðûð 	×Ñ˜(Ô#ßØ�M‰M˜#˜nÕ-¨tÕ4ð üsn   ‚BKÂA/KÄ	H!Ä"H!Ä/5KÅ%6KÆ;H( ÇH&ÇH( ÇKÇ60KÈ&H( È(JÈ3AJÊJÊJ Ê5KËKc                 óÔ   € \        V P                  V4      pVf>   ^ RIHp V! V P                  VR7      pVR,          R8X  d   RRRRR	R
// 3# \	        R4      hVR,          VR,          3# )Nr4  r6  ÚoutcomeÚ	cancelledr:  ry   ÚinterruptedTÚ	completedFr7  rJ  rK  )r
   r)   r  r5  r   )r1   r  r4   r5  r}   s   &&   r   r=  r=  §  so   € Ü˜YŸ\™\¨<Ó8€EØ‚}Ý>Ù'¨	¯©À<ÔPˆØ�9Õ Ô,Ø$ b¨-¸¸{ÈEÐRÐTVÐVÐVÜÐ 3Ó4Ð4Ø��?˜E '�NÐ*Ð*r   c           	   #  ó€  aa
"  € ^ RI Hp V w  r4o
VP                  P                  VP                  4      pVf   Rx € R# VP
                  pV
V3R lpVP                  ;_uu_ 4        VP                  P                  V4       V! VP                  S
R,          R7      ;'       g    S
pVR,          R8X  dL   VP                  P                  VP                  VR,          4       F  p	S! V	R	,          R
,           V	4       K  	  RRR4        Rx € VP                  ;_uu_ 4        VP                  P                  V4       RRR4       R#   + '       g   i     LO; i  + '       g   i     R# ; i  TP                  ;_uu_ 4        TP                  P                  T4       RRR4       i   + '       g   i     i ; i; i5i)aY  Project the same approval/clarify prompts WS viewers receive to ``sink(type, payload)``
for the admission's lifetime; ``sink`` runs under the stream lock.

An exact retry joins an admission whose prompt may already be pending: it was published
before this observer existed, so it is replayed from the shared pending controls (the
source ``GET /v1/runs/{id}`` reports). Subscribing and snapshotting in ONE stream-lock hold
is the consistent cut: prompts are registered and answered under that lock, so each one is
either in the snapshot or arrives live (never both), and one already answered is absent.r4  Nc                 óâ   <€ V R ,          pVP                  R4      SR,          8X  dH   VP                  R4      \        9   d,   S! VR,          VP                  R4      ;'       g    / 4       R# R# R# )Úparamsr  ÚtyperS   N)rK   Ú_CONTROL_EVENTS)ÚframerX  r®   r+  s   & €€r   rO  Ú&observe_api_controls.<locals>.observerÉ  s\   ø€ Ø�x•ˆØ�:‰:�nÓ%¨¨^Õ)<Ô<ÀÇÁÈFÓASÔWfÔAfÙ�˜• §¡¨IÓ!6×!<Ð!<¸"Ö=ñ BgÑ<r   r  r6  rª   ÚstartedÚ
generationr(  z.request)r  r5  rC   rK   r-   Úevent_streamÚlockrN  Úaddr)   ÚcontrolsÚsnapshotÚdiscard)r­   r+  r5  r1   r2   rT   ÚeventsrO  r}   r*  r®   s   &f        @r   r/  r/  µ  s8  ùé € õ ;Ø"Ñ€I�CØ×Ñ×!Ñ! #§.¡.Ó1€DØ‚|ó 	ÙØ×Ñ€Fö>ð 
��‹Ø×Ñ×Ñ˜XÔ&Ù'¨	¯©À3À~ÕCVÔW×^Ð^Ð[^ˆØ�8Õ 	Ô)ØŸ-™-×0Ñ0°·±ÀÈÕAVÖW�Ù�V˜F•^ jÕ0°&Ö9ñ X÷	 
ð/Ûà�[�[‹[Ø×Ñ×$Ñ$ XÔ.÷ ‰[÷ 
�ú÷ �[ˆ[ûˆV�[�[‹[Ø×Ñ×$Ñ$ XÔ.÷ �[�[ˆ[ÿsg   „A"F>Á&BEÄ F>Ä	E. ÄF>Ä!EÄ=
F>ÅE	ÅF>ÅE+	Å%	F>Å.F;ÆF(	Æ	F;Æ(F8Æ3F;Æ;F>c                 ó  € \        WV4      pVP                  R 4      pV'       d
   VR,          M
\        W4      pVR,          pV'       d>   \        V\        4      '       d(   ^ RIHp T! YdP                  R4      ;'       g    . 4      pRTRTRV'       d
   VR,          MRRTR	V'       d   VP                  R	4      MRR
V'       d   VP                  R
4      MRR\        T;'       d    VP                  R4      4      R\        W44      /# )r9   r;   r»   )Úrestore_api_imagesrA   rU   r:   NÚcontentrB   r>   r?   r=   )	rW   rK   r5   rL   rN   rÔ   rg  rò   rv   )r1   r2   rS   rU   rV   r;   rh  rg  s   &&&     r   Úprepare_api_executionri  Ú  sÙ   € Ü˜Y¨WÓ5€GØ�;‰;�}Ó%€Dß#'ˆt�JÖ¬\¸)Ó-I€HØ�f�o€Gß”
˜7¤D×)Ò)Ý@Ù$ W¯h©h°wÓ.?×.EÐ.EÀ2ÓFˆØ�w 
¨H°i×TXÀÀiÆÐ^bØ�w Ï$¨t¯x©x¸Ô/FÐTXØ¿D˜dŸh™hÐ'7Ô8ÀdØ¤ d×&LÐ&L¨t¯x©xÐ8KÓ/LÓ!MØÔ6°wÓEð	Gð Gr   c                 óÒ   € V P                   V,          P                  P                  pV'       d   VP                  R 4      MRp\	        \        V R/ 4      P                  VR4      4      # )r  Nr;  rú   )rC   r_  Ú	executionrK   ÚtuplerI   )r1   r-   rk  r  s   &&  r   Ú_api_observersrm  é  sQ   € Ø×"Ñ" :Õ.×;Ñ;×EÑE€Iß4=�9—=‘= Ô0À4€LÜ”˜ O°RÓ8×<Ñ<¸\È2ÓNÓOÐOr   c           	     óô   € ^ RI pRp\        W4       F)  pVP                  V4      pV'       g   K   V! V/ VB  RpK+  	  V#   \         d,    TP	                  \
        4      P                  RY!RR7        Kd  i ; i)zÎObserver callbacks are request-owned sinks; one that raises (closed socket, torn-down
loop) must not abort canonical execution or starve the other observers. Returns whether
any observer accepted the event.NFTzAPI observer %s failed for %s)Úexc_info)r  rm  rK   rÖ   r  r   r  )	r1   r-   rÙ   r   rž   r  ÚacceptedrO  rL  s	   &&&*,    r   Ú_notify_observersrq  ï  sƒ   € ó Ø€HÜ" 9Ö9ˆØ—<‘< Ó$ˆß‰8ðuÙ˜$Ð) &Ò)Ø’ñ :ð €Oøô ô uØ×!Ñ!¤(Ó+×3Ñ3Ð4SÐUXÐosÐ3×tðuús   ±
AÁ2A7Á6A7c                ó  aaaa	a
aa€ Vw  oooVVV3R lo
V P                   V P                  uooR	V
V3R llpRR/VV
3R llpV P                  o	VVV	V3R lpV
3R lV n        W0n         WPn        V'       d	   W@n        R# R# )
aa  Hand this admission's API observers (Chat/Responses SSE, runs) the agent's reasoning,
status, commentary and tool progress callbacks, the ones the direct API path gave the agent
itself. Each event is fenced to the exact running claim, so a settled worker's late callback is inert;
the turn's own status/commentary sinks keep running after the observers.c                 ó  <€ SP                   S,          P                  P                  ;_uu_ 4         SP                  SS4       \        SST .TO5/ TB uuR R R 4       #   \         d     R R R 4       R# i ; i  + '       g   i     R # ; i)NF©rC   r_  r`  Úcheck_approval_generationr   rq  )rÙ   r   rž   r1   r^  r-   s   &*,€€€r   ÚpublishÚ#wire_api_observers.<locals>.publish  s}   ø€ Ø×Ñ 
Õ+×8Ñ8×=×=Ó=ðØ×3Ñ3°JÀ
ÔKô % Y°
¸CÐQÀ$ÒQÈ&ÑQ÷ >Ò=øô %ô Ø÷	 >Ñ=ðú÷ >×=Ð=ús.   ±A:³A ÁA:Á A7Á+A:Á6A7Á7A:Á:B	Nc                 ó6   <€ S! R W4       Se   S! W4       R# R# )Ústatus_callbackNrú   )r(  Úmessagerv  rª   s   &&€€r   ry  Ú+wire_api_observers.<locals>.status_callback  s!   ø€ ÙÐ! 4Ô1ØÒÙ�4Ö!ñ r   Úalready_streamedFc                ó:   <€ S! R WR7       Se   S! WR7       R# R# )Úinterim_assistant_callback)r|  Nrú   )r»   r|  Úinterimrv  s   &$€€r   r~  Ú6wire_api_observers.<locals>.interim_assistant_callback  s!   ø€ ÙÐ,¨dÕVØÒÙ�D×<ñ r   c                 óZ   <€ V R9   d   \        SSSV .VO5/ VB  Se   S! V .VO5/ VB # R# )útool.startedN)r‚  ztool.completed)Úpublish_api_tool_progress)r)  r   rž   r1   r^  Úprogressr-   s   &*,€€€€r   r<  Ú2wire_api_observers.<locals>.tool_progress_callback  sF   ø€ ØÐ;Ô;Ü% i°¸ZÈÐeÐVZÒeÐ^dÒeØÒÙ˜JÐ8¨Ò8°Ñ8Ð8ñ  r   c                 ó   <€ S! R V 4      # )Úreasoning_callbackrú   )r»   rv  s   &€r   r³   Ú$wire_api_observers.<locals>.<lambda>!  s   ø€ ©GÐ4HÈ$Ô,Or   rY   )ry  r~  r<  r‡  )ÚagentÚownerÚwant_interimry  r~  r<  r1   r^  r  r„  rv  r-   rª   s   &&&   @@@@@@@r   Úwire_api_observersrŒ     s‡   þ€ ð
 ).Ñ%€Iˆz˜:÷Rð ×+Ñ+¨U×-MÑ-M€O€FˆG÷"ð "ð
=¸U÷ =ð =ð ×+Ñ+€H÷9ð 9ô
  P€EÔØ+ÔØ#9Ô ßØ+EÖ(ñ r   c                 óR   € VR 8X  d    VR,          e   \        WRVR,          4      # R# )zmessage.deltar»   r9  F)rq  )r1   r-   r)  rS   s   &&&&r   Úpublish_api_eventrŽ  (  s-   € Ø�_Ô$¨°­Ò)DÜ  Ð8OÐQXÐY_ÕQ`ÓaÐaÙr   c                ó  € V P                   V,          P                  P                  ;_uu_ 4         V P                  W4       \        YR.TO5/ TB  RRR4       R#   \         d     RRR4       R# i ; i  + '       g   i     R# ; i)z¬A ``tool_progress_callback`` tool event as its producer emitted it, for the admission's
progress-only observers; never inferred again from formatted or bounded result text.Nr<  rt  )r1   r-   r^  r   rž   s   &&&*,r   rƒ  rƒ  .  s|   € ð 
×	Ñ	˜JÕ	'×	4Ñ	4×	9×	9Ó	9ð	Ø×/Ñ/°
ÔGô 	˜)Ð1IÐ[ÈDÒ[ÐTZÒ[÷ 
:Ñ	9øô !ô 	Ø÷	 
:Ñ	9ð	ú÷ 
:×	9Ð	9ús.   °A7²AÁA7ÁA4Á(A7Á3A4Á4A7Á7B	c                óz  € V P                   V,          pVP                  P                  ;_uu_ 4         V P                  W4       TR8X  d   \        YRYET;'       g    / 4       M TR8X  d   \        YRYET;'       g    / T4       RRR4       R#   \         d     RRR4       R# i ; i  + '       g   i     R# ; i)zŒReal tool arguments/results for the admission's API observers (Responses streaming,
runs SSE); never part of the shared viewer event stream.Nz
tool.startr   ztool.completer   rt  )	r1   r-   r^  r)  Úcall_idÚ	tool_namer   rJ  rT   s	   &&&&&&&& r   Úpublish_api_tool_eventr“  9  s°   € ð ×Ñ˜jÕ)€DØ	×	Ñ	×	×	Ó	ð	Ø×/Ñ/°
ÔGð ˜Ô%Ü˜iÐ5JÈGÐ`d×`jÐ`jÐhjÕkØ˜?Ô*Ü˜iÐ5MÈwÐcg×cmÐcmÐkmÐouÔv÷ 
 Ñ	øô !ô 	Ø÷	 
 Ñ	ð	ú÷ 
 ×	Ð	ús/   ²B)´BÁA B)ÂB&ÂB)Â%B&Â&B)Â)B:	c                 ó~   € \         P                  4       p V '       d!   V R,          P                  R4      '       d   V # R# )a  The executing API admission's settings when they carry a confirmed Browser model lock, else
None. Main's ``_create_agent`` passes ``fallback_model=None`` under the lock and refuses a
settled turn whose served runtime differs from it (``_turn_runtime_metadata``).r;   Úconfirmed_runtime_lockNr|   )r}   s    r   Úapi_runtime_lockedr–  H  s6   € ô ×ÑÓ!€Gß '¨*Õ"5×"9Ñ"9Ð:R×"SÒ"Sˆ7Ð]ÐY]Ð]r   c                 ó*  € \         P                  4       pVf   W3# VR,          pVP                  R4      pVR,          P                  P                  VP                  R4      4      pV'       d5   VP                  4        UUu/ uF  w  rgVR8w  g   K  WgbK  	  uppV8X  d   TpVR,          P	                  WVP                  R4      VP                  R4      WCP                  R4      \        VP                  R4      4      R R R	7	      w  p   pW3# u uppi )
Nr;   r¸   rU   rº   r¹   Úrequested_providerÚsession_modelr•  )rº   r˜  r¸   r™  r•  r¶   r-   )r   rK   rÏ   rÐ   Ú_select_agent_runtimerò   )	ÚmodelÚruntime_kwargsr}   Úoptionsr¸   rÛ   rÜ   rÝ   r“   s	   &&       r   Úprepare_api_runtimerž  P  s  € Ü×ÑÓ!€GØ‚ØÐ$Ð$Ø�jÕ!€GØ�K‰K˜Ó €EØ˜Õ#×1Ñ1×5Ñ5°g·k±kÐBSÓ6TÓU€Jß¨
×(8Ñ(8Ô(:ÔMÑ(:¡ ¸aÀ9¹n”t�q’tÑ(:ÒMÐQVÔVØˆØ˜YÕ'×=Ñ=¸nØŸ™Ð$5Ó6È7Ï;É;ÐWkÓKlØ§;¡;¨Ó#?Ü# G§K¡KÐ0HÓ$IÓJØ ¨Tð	 >ó 3�N€Eˆ1ˆa�ð
 Ð Ð ùó Ns   ÂDÂDc                ód   € V ^8„  d   Qh/ ^ \         9   d   \        \        R,          ,          ;R&   # )é   Nr   )Ú__conditional_annotations__r   rM   )Úformats   "r   Ú__annotate__r£     s%   € × LÑ L÷ SÒ RŒzœ$ �+Õ&Ñ Rò Mr   )r9  r   r   r‡  ry  r~  )Úephemeral_system_promptrº   r˜  Úmodel_optionsr¸   r™  r•  Úrequested_runtimeÚroute_sourcer€   r†   rx   rY   >   úclarify.requestúclarify.settledr!  úapproval.settled)Er¡  r#   r@  Úcontextvarsr   Ú
contextlibr   Ú	functoolsr   rq   r/   ÚrerÉ   Úgateway.configr   rÌ   r   r   r   r	   Úgateway.session_resultsr
   r  r   r   r   r   r,   rC  rE  rQ   Úcompiler[   r   r5   rW   rO   rP   ri   rv   r~   rR   r›   rŸ   r§   r¥   r�   rÓ   rñ   rô   r  r  r  r2  r-  r=  Ú	frozensetrZ  r/  ri  rm  rq  rŒ  rŽ  rƒ  r“  r–  rž  r£  )r¡  s   @r   Ú<module>r³     s{  øðÞ LÛ Ý "Ý %Ý Û Û Û 	Û å #ß bÓ bÝ 4ß NÑ Ná)3°OÈTÔ)R€Ó RØ-Ð ðY€à$Ð&>Ð?€ð-€ð —*’*˜_Ó-€ô	$Ð'ô 	$ò1òò2SòJò<òPò"
Sòð" ñ/ó ð/ò9ô
vò!òKò\ð&CÈô Cð6¸Dô 6ò Sò&<ò^ð0.¸Dð .ÐW[ô .ò2+?ò\+ñ ÒjÓk€ð ñ!/ó ð!/òHGòPòò"%FòPò\ôwò^ô!r   