+
    „WÝjåÜ  ã                   óV  € R t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIH	t	H
t
HtHtHtHtHt ^ RIHt  ! R R]4      t ! R R	]4      tR
 tR tR tR tR tR tR tR tR R lt^ tRRRRRR/R R lltR R lt R R lt!RR/R  R! llt"]#! 4       t$R"RR#]$/R$ R% llt%R&RR'RR(R/R) R* llt&R+t'R, R- lt(R.t)R/ R0 lt*R1 R2 lt+R3 R4 lt,R5 R6 lt-R7 R8 lt.R9t/R: R; lt0R< R= lt1R> R? lt2R@ RA lt3RB RC lt4RD RE lt5RFR/RG lt6RH t7RFRRIRRRRJRKRLR/RM RN llt8ROt9RP t:RQ t;RR RS lt<R(RRTR/RU RV llt=RW t>RX t?RY t@RZ tAR[RK/R\ R] lltBR^ R_ ltC]D! R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRv]]	]
04      ],          ]0,          tE]ERw0,          tFRuRq]]	]]]3tGRx tHRy tIRz tJR{RK/R| ltKR} tLR~ tMR tNR# )€zòCanonical runtime transactions; callers authorize and resolve session identity.

No execution, transport, or authority objects live here. Every mutation uses the
SessionDB transaction owner, including its inode guard and SQLite retry policy.
N)Ú
NamedTupleÚOptional)ÚABSORBED_ROW_IDS)ÚCANONICAL_ROWÚDATA_USEÚDB_ROW_SNAPSHOTÚMESSAGE_UIDÚPERSISTENCE_ONLY_MESSAGE_FIELDSÚTOOL_CALL_UIDÚTOOL_CALL_UIDS©Úadmission_fingerprintc                   ó0   a € ] tR t^t o RtV 3R ltRtV tR# )ÚSessionGoneEventzNThe ``on_session_delete`` event a committed runtime mutation owes its plugins.c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )é   Úsession_idsÚreason)ÚtupleÚstr)ÚformatÚ__classdict__s   "€ÚHC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_state_runtime.pyÚ__annotate__ÚSessionGoneEvent.__annotate__   s   ø‡ ‚ áÑñ ñ �Kò ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s   ø‡ € ÙX÷ ƒ r   r   c                   óN   a a€ ] tR t^t oRtRRRR/V3R lV 3R llltRtVtV ;t# )ÚRuntimeStoreErrora  A refusal by the state authority. ``reason`` is the bounded wire code (callers compare it as a
string); ``field`` and ``detail`` name the check that fired and why, so a client and the gateway
log can tell the reasons' many checks apart instead of reporting the bare code.ÚfieldNÚdetailc                óH   <€ V ^8„  d   QhRS[ RS[ R,          RS[ R,          /# )r   r   r'   Nr(   ©r   )r   r   s   "€r   r   ÚRuntimeStoreError.__annotate__   s*   ø€ ÷ !ñ !™sð !©c°D­jð !ÉÈtÍñ !r   c               óv   <€ Wn         \        V^P4      V n        \        V^ 4      V n        \        SV `  V4       R# )éP   N)r   Ú	_one_liner'   r(   ÚsuperÚ__init__)Úselfr   r'   r(   Ú	__class__s   &&$$€r   r0   ÚRuntimeStoreError.__init__   s1   ø€ ØŒÜ˜u bÓ)ˆŒ
Ü ¨Ó,ˆŒÜ‰Ñ˜Ö r   )r(   r'   r   )	r   r   r   r    r!   r0   r#   r$   Ú__classcell__)r2   r   s   @@r   r&   r&      s)   ù‡ € ñWð!¸4ð !ÐVZ÷ !÷ !õ !r   r&   c                ó¨   € V f   R# RP                  R RP                  \        V 4      P                  4       4       4       4      pVRV ;'       g    R# )a  A refusal's ``field``/``detail`` as the log line and the client frame carry it: either may hold
client text, so whitespace collapses to single spaces, other non-printables drop (no forged log
lines), and the length is bounded below the client's frame limit.NÚ c              3   óT   "  € T F  qP                  4       '       g   K  Vx € K   	  R # 5i©N)Úisprintable)Ú.0Úchs   & r   Ú	<genexpr>Ú_one_line.<locals>.<genexpr>)   s   é € ÐQÑ <˜"ÇÁ×@P—2’2Ó <ùs   ‚(ž
(Ú )Újoinr   Úsplit)ÚvalueÚlimitÚtexts   && r   r.   r.   #   sJ   € ð ‚}ÙØ�7‰7ÑQ §¡¬¨U«×)9Ñ)9Ó);Ô <ÓQÓQ€DØ��ˆ<×Ð˜4Ðr   c                 óx   € \        V \        4      '       d   V '       d   \        V 4      R 8”  d   \        R4      hV # )i   Úinvalid_params)Ú
isinstancer   Úlenr&   )rA   s   &r   Ú_textrH   -   s-   € Ü�eœS×!Ò!¯´#°e³*¸tÔ2CÜÐ 0Ó1Ð1Ø€Lr   c                 óÐ   € \        V \        4      '       g   \        R 4      h \        P                  ! V RRRRR7      #   \
        \        \        3 d   p\        R 4      ThRp?ii ; i)rE   FT)Úensure_asciiÚ	sort_keysÚ
separatorsÚ	allow_nanN)Ú,Ú:)rF   Údictr&   ÚjsonÚdumpsÚ	TypeErrorÚ
ValueErrorÚUnicodeError)rA   Úexcs   & r   Ú_jsonrW   3   s^   € Ü�eœT×"Ò"ÜÐ 0Ó1Ð1ð;Ü�zŠz˜%¨e¸tÐPZÐfkÔlÐløÜ”z¤<Ð0ô ;ÜÐ 0Ó1°sÐ:ûð;ús   £> ¾A%ÁA Á A%c                 ó¤   € V P                  R 4      P                  4       p\        V4      \        Jg   Ve   V^ ,          V8w  d   \	        R4      hR# )ú1SELECT epoch FROM runtime_epoch WHERE singleton=1NÚstale_epoch)ÚexecuteÚfetchoneÚtypeÚintr&   )ÚconnÚepochÚrows   && r   Ú_epochrb   <   sE   € Ø
�,‰,ÐJÓ
K×
TÑ
TÓ
V€CÜˆEƒ{œ#Ó ¢°°Aµ¸%´Ü Ó.Ð.ñ 1@r   c                 óf   € V P                  R V34      P                  4       pVf   \        R4      hV# )ú!SELECT * FROM sessions WHERE id=?Ú	not_found)r[   r\   r&   )r_   Ú
session_idra   s   && r   Ú_sessionrg   B   s3   € Ø
�,‰,Ð:¸Z¸MÓ
J×
SÑ
SÓ
U€CØ
‚{Ü Ó,Ð,Ø€Jr   c                 óŠ   € V P                  R V34      P                  4       pVf   ^ RIHp V! W4      pVf   \	        R4      hV# )ú5SELECT * FROM session_admissions WHERE admission_id=?©Úterminal_admissionre   )r[   r\   Úhermes_state_terminalrk   r&   )r_   Úadmission_idra   rk   s   &&  r   Ú
_admissionrn   I   sG   € Ø
�,‰,ÐNÐQ]ÐP_Ó
`×
iÑ
iÓ
k€CØ
‚{Ý<Ù  Ó4ˆØ
‚{Ü Ó,Ð,Ø€Jr   c                óº  € \         P                  ! VR,          4      p\        VR,          V'       d
   VR,          MVR,          04      pRRP                  R\	        V4      ,          4       R2p^ RIHp V P                  RV R	2. VOVR
,          NVN54      P                  4        F  w  pV! W4       K  	  V P                  RV 2. VOVR
,          NVN54       R# )zìRetire the worker rows this admission's generation owns on BOTH the logical
FIFO owner and its current physical transcript (reset/compression move the private
worker assignment to the child while target_session_id stays the logical ID).Úlineage_jsonÚtarget_session_idzsession_id IN (rN   Ú?z$) AND generation=? AND owner_epoch=?©Úcompact_terminal_receiptsz1SELECT execution_id FROM worker_executions WHERE z AND status!='terminal'Ú
generationz5UPDATE worker_executions SET status='terminal' WHERE Néÿÿÿÿ)	rQ   ÚloadsÚlistr?   rG   Úhermes_state_runtime_workersrt   r[   Úfetchall)r_   ra   Úowner_epochÚlineageÚtargetsÚscopert   Úexecution_ids   &&&     r   Ú_retire_admission_workersr€   S   së   € ô �jŠj˜˜^Õ,Ó-€GÜ�CÐ+Õ,¿W¨g°b®kÈ#ÐNaÕJbÐcÓd€GØ˜cŸh™h s¬S°«\Õ'9Ó:Ð;Ð;_Ð`€EåFØŸ<™<Ð*[Ð\aÐ[bð cAð )AØBlÀGÐBlÈSÐQ]ÕM^ÐBlÐ`kÑBlónßnvÑnvÓnxòy‰ˆá! $Ö5ñyð 	‡L�LÐHÈÈÐPØ;�7Ð;˜C Õ-Ð;¨{Ñ;ö=r   c                 óà   € V f   R # \        V 4      p\        P                  ! VP                  R4      4      VR&   VP                  R4       VP                  R4       VP                  RR 4       V# )NÚpayload_jsonÚpayloadÚpayload_digestrp   Ú
retired_at)rP   rQ   rw   Úpop©ra   Úresults   & r   Ú_rowr‰   c   s[   € Ø
‚{ÙÜ�#‹Y€FÜŸ
š
 6§:¡:¨nÓ#=Ó>€Fˆ9ÑØ
‡J�JÐÔ Ø
‡J�Jˆ~ÔØ
‡J�Jˆ|˜TÔ"Ø€Mr   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úinstance_idÚreturn)r   r^   )r   s   "r   r   r   n   s   € ÷ $ñ $¬Cð $´Cñ $r   c               óH   a€ \        S4       V3R lpV P                  V4      # )zKCaller MUST hold the profile ownership lock, not merely an endpoint ticket.c                 óv   <€ V P                  R S34       V P                  R4      P                  4       ^ ,          # )z³INSERT INTO runtime_epoch(singleton,epoch,instance_id) VALUES(1,1,?)
            ON CONFLICT(singleton) DO UPDATE SET epoch=runtime_epoch.epoch+1, instance_id=excluded.instance_idrY   ©r[   r\   )r_   r‹   s   &€r   ÚwriteÚ"begin_runtime_epoch.<locals>.writeq   s?   ø€ Ø�‰ð rØtð  tBô	Cà�|‰|ÐOÓP×YÑYÓ[Ð\]Õ^Ð^r   ©rH   Ú_execute_write)Údbr‹   r�   s   &d r   Úbegin_runtime_epochr•   n   s$   ø€ ä	ˆ+Ôõ_ð ×Ñ˜UÓ#Ð#r   ÚintentÚqueueÚ_authorize_writeÚ_replay_guardc                ól   € V ^8„  d   QhR\         R\        R\        R\        R\        R\        R\        /# )r   r`   Úprincipal_idrf   Ú
request_idrƒ   r–   rŒ   ©r^   r   rP   )r   s   "r   r   r   |   sA   € ÷ /$ñ /$¤cð /$¼ð /$Ì#ð /$Ü$'ð/$Ü26ð/$Ü@Cð/$äFJñ/$r   c          
     ó:  aaaaaaaaa€ SSS3 F  p	\        V	4       K  	  SR9  d   \        R4      h\        V4      o^ RIHp
 V
! V SSSSVSR7      pVe   V# \        SR\        P                  ! S4      RS/R7      oVVVVVVVVV3	R lpV P                  V4      # )	a¼  Admit input; the trusted private guard raises to refuse a NEW write.

The guard receives the owning transaction connection, must not commit it or
perform external effects, and may run again on SQLite retry. Exact existing
and terminal replays bypass it: they cannot create or change accepted work.
``_replay_guard(conn)`` runs on the exact live replay instead, inside the same
transaction (a replacement's binding to the admission it retired).
rE   )Úretry_terminal_admission)r`   r›   rf   rœ   rƒ   r–   Úinputr–   ©Úcanonical_targetrƒ   c                 ó<  <	€ \        V S4       \        V S4       V P                  R S
SS34      P                  4       pVe1   VR,          S8w  d   \	        R4      hSe	   S! V 4       \        V4      # V P                  RS34      P                  4       ^ ,          pV\        8¼  d   \	        R4      hSe	   S! V 4       \        P                  ! 4       P                  pV P                  RVSS
S\        P                  ! S.4      SSS	S3	4       \        \        W4      4      # )zjSELECT * FROM session_admissions
            WHERE principal_id=? AND target_session_id=? AND request_id=?r„   Úadmission_conflictzbSELECT COUNT(*) FROM session_admissions WHERE target_session_id=?
            AND status='queued' Ú
queue_fullzÕINSERT INTO session_admissions(admission_id,request_id,principal_id,
            target_session_id,lineage_json,payload_json,payload_digest,intent,status,owner_epoch)
            VALUES(?,?,?,?,?,?,?,?,'queued',?))rb   rg   r[   r\   r&   r‰   ÚADMISSION_QUEUE_MAXÚuuidÚuuid4ÚhexrQ   rR   rn   )r_   ÚoldÚqueuedrm   r˜   r™   ÚdigestÚencodedr`   r–   r›   rœ   rf   s   &   €€€€€€€€€r   r�   Ú"admit_session_input.<locals>.write’   s&  ø€ Üˆt�UÔÜ��zÔ"Ø�l‰lð MØO[Ð]gÐisÐNtóvßv~Ñv~ó  wAð 	àŠ?ØÐ#Õ$¨Ô.Ü'Ð(<Ó=Ð=ØÒ(Ù˜dÔ#Ü˜“9ÐØ—‘ð $Ø&0 ]ó4ß4<±H³J¸qõBˆð Ô(Ô(Ü# LÓ1Ð1ØÒ'Ù˜TÔ"Ü—z’z“|×'Ñ'ˆØ�‰ð 2ð ˜: |°ZÄÇÂÈZÈLÓAYÐ[bÐdjÐlrÐtyÐzô	|ô ”J˜tÓ2Ó3Ð3r   ©r—   ÚsteerÚredirect)	rH   r&   rW   rl   rŸ   r   rQ   rw   r“   )r”   r`   r›   rf   rœ   rƒ   r–   r˜   r™   rA   rŸ   Úretiredr�   r¬   r­   s   &dddd$ddd    @@r   Úadmit_session_inputr³   |   s¥   ÿø€ ð  
¨JÓ7ˆÜˆeŽñ 8àÐ3Ô3ÜÐ 0Ó1Ð1Ü�G‹n€GÝ>Ù& r°À\Ð^hØ w°vô?€GàÒØˆÜ"°JÈÔRV×R\ÒR\Ð]dÓReÐgoÐqwÐHxÔy€F÷4õ 4ð2 ×Ñ˜UÓ#Ð#r   c                ó>   € V ^8„  d   QhR\         R\        R,          /# )r   rm   rŒ   N©r   rP   )r   s   "r   r   r   ®   s"   € ÷ Xñ X¬sð X´t¸dµ{ñ Xr   c                óì   € V P                  4       ;_uu_ 4       p^ RIHp VP                  RV34      P	                  4       p\        Ve   TMV! W!4      4      uuRRR4       #   + '       g   i     R# ; i)é    rj   ri   N)Ú	_read_ctxrl   rk   r[   r\   r‰   )r”   rm   r_   rk   ra   s   &$   r   Úget_session_admissionr¹   ®   sP   € Ø	�‰�Œ˜4Ý<Ø�l‰lÐRÐUaÐTcÓd×mÑmÓoˆÜ˜3š?‘CÑ0BÀ4Ó0VÓW÷ 
��‹ús   ™>A"Á"A3	c          	      óV   € V ^8„  d   QhR\         R\         R\         R\        R,          /# )r   r›   rf   rœ   rŒ   Nrµ   )r   s   "r   r   r   µ   s6   € ÷ iñ i´ð iÄð iÔRUð iÔZ^ÐaeÕZeñ ir   c          
     óÆ   € V P                  4       ;_uu_ 4       p\        VP                  RWV34      P                  4       4      uuRRR4       #   + '       g   i     R# ; i)zYThe admission at its exact durable identity: the UNIQUE (principal, target, request) key.z^SELECT * FROM session_admissions WHERE principal_id=? AND target_session_id=? AND request_id=?N)r¸   r‰   r[   r\   )r”   r›   rf   rœ   r_   s   &$$$ r   Úfind_session_admissionr¼   µ   sG   € à	�‰�Œ˜4Ü�D—L‘Lð "4Ø6BÐPZÐ5[ó]ß]eÑ]eÓ]gói÷ 
��‹ús   ™+AÁA 	Úpending_onlyTc                óR   € V ^8„  d   QhR\         R\        R\        \        ,          /# )r   rf   r½   rŒ   )r   Úboolrx   rP   )r   s   "r   r   r   ¼   s-   € ÷ Gñ G¬sð GÄ$ð GÔRVÔW[ÕR\ñ Gr   c                ó  € V P                  4       ;_uu_ 4       pR V'       d   RMR,           R,           pVP                  WA34       Uu. uF  p\        V4      NK  	  upuuRRR4       # u upi   + '       g   i     R# ; i)z;SELECT * FROM session_admissions WHERE target_session_id=? z-AND status IN ('queued','started','unknown') r6   zORDER BY seqN)r¸   r[   r‰   )r”   rf   r½   r_   Úsqlra   s   &$$   r   Úlist_session_admissionsrÂ   ¼   si   € Ø	�‰�Œ˜4ð MßEQÑAÐWYõ[Ø]kõlˆà%)§\¡\°#°}Ô%EÓFÑ%E˜c”�S–	Ñ%EÑF÷ 
Šùò
 G÷ 
�ˆús   ™/A.ÁA)ÁA.Á)A.Á.A?	Ú_guardÚheadc                ó`   € V ^8„  d   QhR\         R\        R\        \        ,          R,          /# )r   r`   rf   rŒ   N)r^   r   rP   r¿   )r   s   "r   r   r   È   s.   € ÷ $$ñ $$¤cð $$´sð $$Ô\`ÔcgÕ\gÐjnÕ\nñ $$r   c               ó>   aaaa€ VVVV3R lpV P                  V4      # )a©  Claim the FIFO head. ``_guard(conn)`` (owner admission gate) raises to refuse inside the
write transaction, so a drain that began while this waited on the writer still wins.
``head`` is the admission id the caller's preclaim checks validated (None: it saw nothing
queued); if the head is another row by the time this write runs, nothing is claimed and False
tells the caller to re-read and validate the row that is now first.c                 óN  <€ \        V S
4       S	e	   S	! V 4       \        V S4      pV P                  RS34      P                  4       p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R4      h^ RIHp V! V S4      pRV9   d   \        R4      hV'       g	   V'       d   R # V P                  RS34      P                  4       pS\        Jd   Ve
   VR	,          MR S8w  d   R# Vf   R # VR
,          ^,           pV P                  RVS34       V P                  RS
WeR	,          34      pVP                  ^8w  d   \        R4      h\        \        WR	,          4      4      pV P                  R4      P                  4       ^ ,          VR&   V# )NzcSELECT status FROM session_admissions WHERE target_session_id=? AND status IN ('started','unknown')c              3   ó8   "  € T F  q^ ,          R8H  x € K  	  R# 5i)r·   ÚunknownNr   )r:   ra   s   & r   r<   Ú5claim_session_input.<locals>.write.<locals>.<genexpr>Ô   s   é € Ð6©g s�1�v˜Ö"«gùs   ‚TFÚunknown_execution)Úworker_statesrÉ   zcSELECT * FROM session_admissions WHERE target_session_id=? AND status='queued' ORDER BY seq LIMIT 1rm   Úruntime_generationz3UPDATE sessions SET runtime_generation=? WHERE id=?zrUPDATE session_admissions SET status='started',owner_epoch=?,generation=? WHERE admission_id=? AND status='queued'Ústale_generationz)SELECT COALESCE(MAX(id), 0) FROM messagesÚtranscript_mark)rb   rg   r[   rz   Úanyr&   ry   rÌ   r\   Ú	_ANY_HEADÚrowcountr‰   rn   )r_   ÚsessionÚblockedrÌ   Úworkersra   ru   ÚchangedÚclaimedrÃ   r`   rÄ   rf   s   &        €€€€r   r�   Ú"claim_session_input.<locals>.writeÎ   sÅ  ø€ Üˆt�UÔØÒÙ�4ŒLÜ˜4 Ó,ˆØ—,‘,ð   Eð  HRð  GTó  U÷  ^ñ  ^ó  `ˆß‹3Ñ6©gÓ6�3�3Š3Ñ6©gÓ6×6Ò6Ü#Ð$7Ó8Ð8Ý>Ù  jÓ1ˆØ˜ÔÜ#Ð$7Ó8Ð8ß—gÙØ�l‰lð  Að  DNð  CPó  Q÷  Zñ  Zó  \ˆØ”yÓ ¸Sº_ c¨.Ö&9ÐRVÐ[_Ô%_ÙØŠ;ÙØÐ1Õ2°QÕ6ˆ
Ø�‰ÐJÈZÐYcÐLdÔeØ—,‘,ð   Tð  W\ð  ^hð  n|õ  j}ð  V~ó  ˆØ×Ñ˜qÔ Ü#Ð$6Ó7Ð7Ü”z $¨NÕ(;Ó<Ó=ˆð &*§\¡\Ð2]Ó%^×%gÑ%gÓ%iÐjkÕ%lˆÐ!Ñ"Øˆr   ©r“   )r”   r`   rf   rÃ   rÄ   r�   s   &dddd r   Úclaim_session_inputrÚ   È   s    û€ ÷ð ð< ×Ñ˜UÓ#Ð#r   rˆ   Ú
_transfersÚ_terminal_writec                ón   € V ^8„  d   QhR\         R\        R\         R\        R\        R,          R\        /# )r   r`   rm   ru   Úoutcomerˆ   NrŒ   r�   )r   s   "r   r   r   ï   s=   € ÷ $ñ $¤sð $¼#ð $Ì3ð $ÔY\ð $Ü!%¨¥ð$Ü_cñ$r   c          	     ó†   aaaaaaaa	a
€ SR9  d   \        R4      h^ RIHo	Ho
 VVVV	V
VVVV3	R lpV P	                  V4      # )a
  ``_terminal_write(conn, row)`` is the owner's same-transaction effect (a transcript notice,
``gateway.session_results.finish_result``); like ``resolve_unknown_session_input``'s it must
not commit, may run again on SQLite retry, and raising rolls the settlement back.rE   ©Úcompact_resultÚencode_resultc                 óª  <	€ \        V S
4       \        V S4      p\        WR ,          4      pVR,          R8w  g>   VR,          S
8w  g0   \        S4      \        Jg   VR,          S8w  g   VR,          S8w  d   \        R4      h\        WS
4       Se	   S! W4       See   ^ RIHp \        S	! S! S\        P                  ! VR,          4      P                  R	4      R
7      4      4      pV P                  RVS,           V34       V P                  RSS34       \        V S
SSSR7       V P                  RVR ,          34       \        \        V S4      4      # )rq   ÚstatusÚstartedr{   ru   rÍ   rÎ   ©ÚRESULT_PREFIXr‚   rC   ©Úuser_messageúaINSERT INTO state_meta(key,value) VALUES(?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.valueúNUPDATE session_admissions SET status='terminal',outcome=? WHERE admission_id=?)r`   ru   Ú	transfersrÞ   úBUPDATE sessions SET runtime_revision=runtime_revision+1 WHERE id=?)rb   rn   rg   r]   r^   r&   r€   rl   rç   rW   rQ   rw   Úgetr[   Úsettle_steer_transfersr‰   )r_   ra   rÓ   rç   r­   rÜ   rÛ   rm   rá   râ   r`   ru   rÞ   rˆ   s   &    €€€€€€€€€r   r�   Ú#settle_session_input.<locals>.write÷   s<  ø€ Üˆt�UÔÜ˜˜|Ó,ˆÜ˜4Ð%8Õ!9Ó:ˆØ��M˜YÔ&¨#¨mÕ*<ÀÔ*EÜ˜
Ó#¬3Ó.°#°lÕ2CÀzÔ2QØÐ/Õ0°JÔ>Ü#Ð$6Ó7Ð7Ü! $¨UÔ3ØÒ&Ù˜DÔ&ØÒÝ;Ü™M©.¸ÌdÏjÊjÐY\Ð]kÕYlÓNm×NqÑNqÐrxÓNyÔ*zÓ{Ó|ˆGØ�L‰Lð Oà'¨,Õ6¸Ð@ôBð 	�‰ÐeÐhoÐq}Ðg~ÔÜ˜t¨5¸ZÐS]ÐgnÕoØ�‰ÐYÐ\_Ð`sÕ\tÐ[vÔwÜ”J˜t \Ó2Ó3Ð3r   )Ú	completedÚinterruptedÚrejectedÚfailed)r&   rl   rá   râ   r“   )r”   r`   rm   ru   rÞ   rˆ   rÛ   rÜ   r�   rá   râ   s   &ddddddd @@r   Úsettle_session_inputrõ   ï   s;   ÿø€ ð
 ÐHÔHÜÐ 0Ó1Ð1ßC÷4õ 4ð* ×Ñ˜UÓ#Ð#r   zXUPDATE session_admissions SET status='terminal',outcome='cancelled' WHERE admission_id=?c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r`   rm   rŒ   r�   )r   s   "r   r   r     s!   € ÷ $ñ $¤sð $¼#ð $Ä$ñ $r   c                ó6   aa€ VV3R  lpV P                  V4      # )c                 ó0  <€ \        V S4       \        V S4      pVR ,          R8X  d   \        R4      hVR ,          R8X  g   VR,          \        8X  d   \        R4      hVR ,          R8X  d   V P	                  \
        S34       \        \        V S4      4      # )rä   rÉ   rË   rå   rÞ   rÎ   r«   )rb   rn   r&   ÚSTEERINGr[   Ú_CANCEL_QUEUEDr‰   )r_   ra   rm   r`   s   & €€r   r�   Ú#cancel_session_input.<locals>.write  s‚   ø€ Üˆt�UÔÜ˜˜|Ó,ˆØˆx�=˜IÔ%Ü#Ð$7Ó8Ð8àˆx�=˜IÔ%¨¨Y­¼8Ô)CÜ#Ð$6Ó7Ð7Øˆx�=˜HÔ$Ø�L‰Lœ¨,¨Ô9Ü”J˜t \Ó2Ó3Ð3r   rÙ   )r”   r`   rm   r�   s   &dd r   Úcancel_session_inputrü     s   ù€ ö
4ð ×Ñ˜UÓ#Ð#r   Ústeeringc                ó$   € V ^8„  d   QhR\         /# ©r   rŒ   )r¿   )r   s   "r   r   r   (  s   € ÷ Sñ Sœ4ñ Sr   c                óN   € V R,          R8H  ;'       d    V R,          \         R39   # )z€``row`` is a committed transfer (still in flight, or settled ``steered``): an exact retry of
``prompt.steer_queued`` replays it.rä   ÚterminalrÞ   Ústeered)rù   )ra   s   &r   Ústeer_replayedr  (  s)   € ð ˆx�=˜JÑ&×RÐR¨3¨y­>¼hÈ	Ð=RÑ+RÐRr   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   rm   r`   ru   rŒ   )r   r^   r¿   )r   s   "r   r   r   .  s/   € ÷ gñ g¬Sð g¼ð gÌ#ð gÔRVñ gr   c               óN   € V P                  RV\        W#34      P                  ^8H  # )zbA transfer still bound to the claim ``(epoch, generation)`` goes back to its FIFO place (``seq``).z¦UPDATE session_admissions SET status='queued',outcome=NULL,generation=NULL WHERE admission_id=? AND status='terminal' AND outcome=? AND owner_epoch=? AND generation=?)r[   rù   rÒ   ©r_   rm   r`   ru   s   &$$$r   Ú_requeue_transferr  .  s3   € à�<‰<ð +à-9¼8ÀUÐ,WóYçYaÑYaÐefñgð gr   c          
      ój   € V ^8„  d   QhR\         R\        R\         R\        \        \        3,          /# ©r   r`   rm   ru   rŒ   )r^   r   r   rP   r¿   )r   s   "r   r   r   5  s5   € ÷ $ñ $¤cð $¼ð $Ì#ð $ÔRWÔX\Ô^bÐXbÕRcñ $r   c               ó:   aaa€ VVV3R lpV P                  V4      # )at  Hand a still-queued admission to its FIFO's running claim: queued -> terminal ``steering``
bound to ``generation`` in one write, only while ``generation`` is the started claim this owner
holds, so the drain can never also claim it. ``(row, True)`` when this call committed the
transfer, ``(row, False)`` for an exact retry of one already committed (never delivered twice).c                 ó˜  <€ \        V S4       \        V S4      p\        V4      '       d   \        V4      R 3# VR,          R8w  d   \	        R4      h\        S4      \        Jg-   V P                  RVR,          SS34      P                  4       f   \	        R4      hV P                  R\        SSS34       \        \        V S4      4      R3# )	Frä   r«   Úadmission_startedzrSELECT 1 FROM session_admissions WHERE target_session_id=? AND status='started' AND owner_epoch=? AND generation=?rq   Úsession_idleziUPDATE session_admissions SET status='terminal',outcome=?,owner_epoch=?,generation=? WHERE admission_id=?T)
rb   rn   r  r‰   r&   r]   r^   r[   r\   rù   )r_   ra   rm   r`   ru   s   & €€€r   r�   Ú"steer_session_input.<locals>.write:  sÌ   ø€ Üˆt�UÔÜ˜˜|Ó,ˆÜ˜#×ÒÜ˜“9˜eÐ#Ð#Øˆx�=˜HÔ$Ü#Ð$7Ó8Ð8Ü�
Ó¤3Ó&¨$¯,©,ð5Ø7:Ð;NÕ7OÐQVÐXbÐ6có+eçemÑemÓeoò+xô $ NÓ3Ð3Ø�‰ð ,Ü.6¸¸zÈ<Ð-Xô	Zä”J˜t \Ó2Ó3°TÐ9Ð9r   rÙ   ©r”   r`   rm   ru   r�   s   &ddd r   Ústeer_session_inputr  5  s   ú€ ÷
:ð ×Ñ˜UÓ#Ð#r   c                ó@   € V ^8„  d   QhR\         R\         R\        RR/# )r   r`   ru   rÞ   rŒ   N)r^   r   )r   s   "r   r   r   K  s0   € ÷ 
zñ 
z¬3ð 
z¼Cð 
zÔUXð 
zÐ]añ 
zr   c          	     óÀ   € T;'       g    / P                  4        F?  w  rVV'       g   \        WWR7       K  T P                  RVR8X  d   RMRV\        W34       KA  	  R# )a   In the receiving claim's terminal write: each admission bound to it settles ``steered`` only if
its text reached the claim's agent (``transfers[id]``) and the claim completed; a delivered text
under any other ending is ``interrupted`` (never replayed); an undelivered one is queued again.©rm   r`   ru   zƒUPDATE session_admissions SET outcome=? WHERE admission_id=? AND status='terminal' AND outcome=? AND owner_epoch=? AND generation=?rñ   r  rò   N)Úitemsr  r[   rù   )r_   r`   ru   rì   rÞ   rm   Ú	delivereds   &$$$$  r   rï   rï   K  sZ   € ð %.§O O°×#:Ñ#:Ö#<ÑˆßÜ˜dÀUÕbÙØ�‰ð Hà#*¨kÔ#9‘i¸}ÈlÔ\dÐfkÐxö	zó	 $=r   c                óH   € V ^8„  d   QhR\         R\        R\         R\        /# r	  ©r^   r   r¿   )r   s   "r   r   r   X  s)   € ÷ $ñ $¤Sð $¼ð $Ìð $ÔQUñ $r   c               ó:   aaa€ VVV3R lpV P                  V4      # )zµA transfer whose text never reached the claim's agent: the admission is queued again, in its
original FIFO place (its ``seq``). False when the claim's settlement already decided it.c                 ó:   <€ \        V S4       \        V SSSR 7      # )r  )rb   r  r  s   &€€€r   r�   Ú!revert_steer_input.<locals>.write[  s   ø€ Üˆt�UÔÜ  °LÈÐZdÔeÐer   rÙ   r  s   &ddd r   Úrevert_steer_inputr  X  s   ú€ ÷fð ×Ñ˜UÓ#Ð#r   zgateway.queued_replacement.v1.c                óH   € V ^8„  d   QhR\         R\         R\         R\         /# )r   r›   rf   rœ   rŒ   r*   )r   s   "r   r   r   d  s/   € ÷ rñ r¤cð r´sð rÌð rÔPSñ rr   c                ó:   € \         \        VRV RV/R7      ,           # )zMThe durable key binding a replacement's identity to the admission it retired.Ú	principalÚrequestr¡   )ÚREPLACEMENT_PREFIXr   )r›   rf   rœ   s   &&&r   Úreplacement_bindingr!  d  s*   € äÔ 5ÀzØ?JÈLÐZcÐeoÐ>pô!rõ rð rr   c                ó4   € V ^8„  d   QhR\         R\         RR/# ©r   rm   ÚbindingrŒ   Nr*   )r   s   "r   r   r   j  s&   € ÷ rñ r¬cð r¼Cð rÀDñ rr   c                óÌ   € \        W4      pVR,          R8w  d   \        R4      hV P                  \        V34       V P                  RV\        P
                  ! V4      34       R# )z´Inside the replacement's own admission write: the replaced row, still queued, is cancelled
in the same transaction that admits its successor at the FIFO tail, which is bound to it.rä   r«   r  z8INSERT OR REPLACE INTO state_meta(key,value) VALUES(?,?)N)rn   r&   r[   rú   rQ   rR   )r_   rm   r$  ra   s   &&& r   Úretire_replaced_inputr&  j  sW   € ô �TÓ
(€CØ
ˆ8…}˜Ô ÜÐ 3Ó4Ð4Ø‡L�L” , Ô1Ø‡L�LÐKÈgÔW[×WaÒWaÐbnÓWoÐMpÖqr   c                ó4   € V ^8„  d   QhR\         R\         RR/# r#  r*   )r   s   "r   r   r   t  s!   € ÷ 6ñ 6¬Sð 6¼3ð 6À4ñ 6r   c                óª   € V P                  RV34      P                  4       pVe#   \        P                  ! V^ ,          4      V8w  d   \	        R4      hR# )zYThe exact replay of a replacement answers only the request that retired ``admission_id``.ú(SELECT value FROM state_meta WHERE key=?Nr¤   ©r[   r\   rQ   rw   r&   )r_   rm   r$  Úsaveds   &&& r   Úcheck_replaced_inputr,  t  sH   € à�L‰LÐCÀgÀZÓP×YÑYÓ[€EØ‚}œŸ
š
 5¨¥8Ó,°Ô<ÜÐ 4Ó5Ð5ñ =r   c                ój   € V ^8„  d   QhR\         R\        R\        R\        R\        \        ,          /# )r   r`   Úold_session_idÚnew_session_idÚprincipal_prefixrŒ   ©r^   r   rx   )r   s   "r   r   r   {  s6   € ÷ $ñ $¤sð $¼Cð $ÔQTð $Ü+.ð$Ü37¼µ9ñ$r   c               ól   aaaa€ SSS3 F  p\        V4       K  	  VVVV3R lpV P                  V4      # )a§  Re-target the old owner's still-queued ``principal_prefix*`` admissions onto
``new_session_id`` in one transaction (the compression-exhaustion auto-reset). Each row keeps
its admission id, request id and seq, so FIFO order and retry dedupe survive; the digest is
re-keyed to the new target. Nothing moves while the old FIFO holds an ``unknown`` row (the
operator's to resume). Returns the moved admission ids in FIFO order.c           	      ó>  <€ \        V S4       \        V S4       V P                  R S34      P                  4       '       d   . # V P                  RS\	        S4      S34      P                  4       pV Fg  p\        SR\        P                  ! VR,          4      RVR,          /R7      pV P                  RS\        P                  ! S.4      W2R,          34       Ki  	  V'       d   SS3 F  pV P                  RV34       K  	  V Uu. uF  q"R,          NK  	  up# u upi )	úOSELECT 1 FROM session_admissions WHERE target_session_id=? AND status='unknown'zzSELECT * FROM session_admissions WHERE target_session_id=? AND status='queued' AND substr(principal_id,1,?)=? ORDER BY seqr    r‚   r–   r¡   zzUPDATE session_admissions SET target_session_id=?,lineage_json=?,payload_digest=? WHERE admission_id=? AND status='queued'rm   rí   )
rb   rg   r[   r\   rG   rz   r   rQ   rw   rR   )	r_   Úrowsra   r¬   Úsidr`   r/  r.  r0  s	   &    €€€€r   r�   Ú#rehome_queued_inputs.<locals>.write„  s  ø€ Üˆt�UÔÜ��~Ô&Ø�<‰<ÐiØ'Ð)ó+ß+3©8«:ö6àˆIØ�|‰|ð Jà+¬SÐ1AÓ-BÐDTÐUóWçW_ÑW_ÓWað 	ó ˆCÜ*¸NØœŸš C¨Õ$7Ó8¸(ÀCÈÅMðUSô TˆFà�L‰Lð Dà(¬$¯*ª*°nÐ5EÓ*FÈÐTbÕPcÐdöfñ ÷ Ø&¨Ó7�Ø—‘ÐaÐdgÐciÖjñ 8á/3Ó4©t¨�N×#Ð#©tÑ4Ð4ùÒ4s   ÄDr’   )r”   r`   r.  r/  r0  rA   r�   s   &dddd  r   Úrehome_queued_inputsr8  {  s<   û€ ð ! .Ð2BÓCˆÜˆeŽñ D÷5ð 5ð& ×Ñ˜UÓ#Ð#r   c                ój   € V ^8„  d   QhR\         R\        R\        R\        R\        \        ,          /# )r   r`   rf   r›   Ú
new_targetrŒ   r1  )r   s   "r   r   r   š  s6   € ÷ "$ñ "$¬Cð "$¼Sð "$ÔPSð "$Ü8;ð"$Ü@DÄSÅ	ñ"$r   c               óŠ   aaaaa€ SSS.SO F  p\        V4       K  	  \        S4      oVVVVV3R lpV P                  V4      # )a‹  Point a LOCAL owner's still-queued ``principal_id`` automation rows (a Bot Chat's queued
``hermes peer dm`` turns, plugin and completion notices) that name a pre-reset transcript in
``old_targets`` at ``new_target``, in one transaction (the compression-exhaustion auto-reset).
A LOCAL FIFO's owner is its receipt id and survives the reset; only the descriptor's ``target``
goes stale, and the drain refuses a stale one (``admission_conflict``), pausing the FIFO for
good. Admission id, request id and seq are kept; the digest is re-keyed to the new payload.
Nothing moves behind an ``unknown`` head. Returns the retargeted admission ids in FIFO order.c           	      ó°  <€ \        V S4       \        V S4       V P                  R S
34      P                  4       '       d   . # . pV P                  RS
S	34      P	                  4        FÐ  p\
        P                  ! VR,          4      p\        V\        4      '       d   VP                  R4      MRp\        V\        4      '       d   VP                  R4      S9  d   Kw  SVR&   \        S
RVRVR,          /R7      pV P                  R	\        V4      WRR
,          34       VP                  VR
,          4       KÒ  	  V'       d   V P                  RS
34       V# )r4  znSELECT * FROM session_admissions WHERE target_session_id=? AND status='queued' AND principal_id=? ORDER BY seqr‚   Úlocal_automation_v1NÚtargetr    r–   r¡   zfUPDATE session_admissions SET payload_json=?,payload_digest=? WHERE admission_id=? AND status='queued'rm   rí   )rb   rg   r[   r\   rz   rQ   rw   rF   rP   rî   r   rW   Úappend)r_   Úmovedra   rƒ   Ú
descriptorr¬   r`   r:  Úold_targetsr›   rf   s   &     €€€€€r   r�   Ú(retarget_local_automation.<locals>.write§  sB  ø€ Üˆt�UÔÜ��zÔ"Ø�<‰<ÐiØ#˜ó'ß'/¡x£zö2àˆIØˆØ—<‘<ð !BØDNÐP\ÐC]ó_ß_gÑ_gÓ_iòjˆCä—j’j  ^Õ!4Ó5ˆGÜ?IÈ'ÔSW×?XÒ?X˜Ÿ™Ð%:Ô;Ð^bˆJÜ˜j¬$×/Ò/°:·>±>À(Ó3KÐS^Ô3^ÙØ#-ˆJ�xÑ Ü*¸JÐQXÐZaÐckÐmpÐqyÕmzÐP{Ô|ˆFØ�L‰Lð  BÜ ›.¨&°nÕ2EÐFôHà�L‰L˜˜^Õ,Ö-ñj÷ Ø�L‰LÐ]Ð`jÐ_lÔmØˆr   )rH   Úsetr“   )r”   r`   rf   r›   rB  r:  rA   r�   s   &ddddd  r   Úretarget_local_automationrE  š  sJ   ü€ ð ˜l¨JÐE¸ÓEˆÜˆeŽñ Fä�kÓ"€K÷ñ ð* ×Ñ˜UÓ#Ð#r   c                ó0   € V ^8„  d   QhR\         R\         /# )r   r`   rŒ   )r^   )r   s   "r   r   r   ¿  s   € ÷ $ñ $¬ð $´ñ $r   c               ó2   a€ V3R lpV P                  V4      # )zQNever replay started work. Live worker adoption is a separate explicit operation.c                 óÊ   <€ \        V S4       ^ RIHp V! V S4       V P                  RS34       V P                  R\        S34       V P                  RS34      P
                  # )r·   )Úretire_stale_childrenziUPDATE worker_executions SET status='unknown' WHERE status IN ('registered','running') AND owner_epoch!=?zlUPDATE session_admissions SET outcome='interrupted' WHERE status='terminal' AND outcome=? AND owner_epoch!=?zXUPDATE session_admissions SET status='unknown' WHERE status='started' AND owner_epoch!=?)rb   ry   rI  r[   rù   rÒ   )r_   rI  r`   s   & €r   r�   Ú%recover_session_inputs.<locals>.writeÁ  s€   ø€ Üˆt�UÔÝFÙ˜d EÔ*Ø�‰ð  Að  DIð  CKô  	Là�‰ð *Ü,4°eÐ+<ô	>à�|‰|ÐvÐy~ð  yAó  B÷  Kñ  Kð  	Kr   rÙ   )r”   r`   r�   s   &d r   Úrecover_session_inputsrK  ¿  s   ø€ õKð ×Ñ˜UÓ#Ð#r   Úexpected_generationc               ón   € R\        VRV RV/R7      ,           pRVRVRV/pVe   WhR&   V\        WR7      3# )	zQ``(state_meta key, digest)`` of a mutation request's durable exact-retry receipt.zgateway.mutation.v1.r  r  r¡   Ú	operationrƒ   Úexpected_revisionrL  r   )	r›   rf   rœ   rN  rƒ   rO  rL  ÚkeyÚfingerprints	   &&&$$$$  r   Úmutation_receipt_keyrR  Í  s[   € ð !Ô#8Ø#¨k¸<ÈÐT^Ð-_ô$aõ a€Cà 	¨9°gÐ?RÐTeÐf€KØÒ&Ø-@Ð)Ñ*ØÔ%°zÔWÐWÐWr   c                óÎ   € V P                  RV34      P                  4       pVf   R# \        P                  ! V^ ,          4      pVR,          V8w  d   \	        R4      hVR,          # )zWThe stored result of an exact retry, ``None`` when unseen; a different request refuses.r)  Nr¬   r¤   rˆ   r*  )r_   rP  r¬   rª   Úreceipts   &&&  r   Úreplay_mutation_receiptrU  Ø  s\   € à
�,‰,ÐAÀCÀ6Ó
J×
SÑ
SÓ
U€CØ
‚{ÙÜ�jŠj˜˜Q�Ó €GØˆxÕ˜FÔ"ÜÐ 4Ó5Ð5Ø�8ÕÐr   Ú_live_guardÚ_prepare_onlyFÚ	_preparedc                ó’   € V ^8„  d   QhR\         R\        R\        R\        R\         R\        R\        R\         R	,          R
\        /	# )r   r`   r›   rf   rœ   rO  rN  rƒ   rL  NrŒ   r�   )r   s   "r   r   r   ã  se   € ÷ Hñ H¬ð H¼Cð HÌSð HÜ'*ðHÜ?BðHä&)ðHä48ðHäORÐUYÍzðHô mqñHr   c               óJ  a aaaaaaa	a
aaaaa€ VSV3 F  p\        V4       K  	  \        S4      \        Jg   S^ 8  d   \        R4      h^ RIHpHo V! SS4       Se&   \        S4      \        Jg   S^ 8  d   \        R4      hSR9   d   Sf   \        R4      h\        P                  ! \        S4      4      o\        VSVSSSSR7      w  ooR V
V	VVVV VVVVVVVV3R llpS P                  V4      w  ppVe'   ^ RIHp V! S VP                  VP                  SR7       V# )	a  Commit a closed metadata edit and its retry receipt in the same transaction.

Caller authorizes the principal and resolves the canonical session. These
metadata edits do not stop execution. Existing direct writers must migrate
before this seam can provide universal revision fencing.
rE   )Úvalidate_actionÚapply_action)rN  rƒ   rO  rL  c                ó\   € V ^8„  d   QhR\         \        \        \        ,          3,          /# rÿ   )r   rP   r   r   )r   s   "r   r   Ú,mutate_runtime_session.<locals>.__annotate__ü  s#   € ÷ *ñ *”uœT¤8Ô,<Õ#=Ð=Õ>ñ *r   c           
     ó”  <€ \        V S4       \        V SS4      pVe   VR3# V P                  RS34      P                  4       pVf   SR8w  d   \	        R4      hV'       d
   VR,          M^ pVS8w  d   \	        R4      hSe   Ve   VR,          S8w  d   \	        R4      hSe"   ^ R	IHp SR
8X  d
   V! V S4      MS.pS! V4       Se	   S! V 4       S'       d@   ^ RIHp V! SV S4      pSR8X  d#   ^ RIH	p V! SV \        SVR,          04      4       RV/R3# S! SV SSSSR7      w  ršRpSR
8X  d1   \        \        V
P                  R4      ;'       g    S34      R
4      pMHSP                  R4      RJ d4   Ve0   VR,          '       g!   \        \        V	4      ;'       g    S3R4      pT P                  RV	 Uu. uF  qÌ3NK  	  up4       V P                  RS34      P                  4       pRSRV'       d
   VR,          MS^,           RV'       d
   VR,          MSRS/V
CpV P                  RS\        RSRV/4      34       Wë3# u upi )zVThe receipt result plus the on_session_delete event this commit owes (None on replay).Nrd   Úimportre   Úruntime_revisionÚrevision_conflictrÍ   rÎ   )Údelete_targetsÚdelete)Úlocal_snapshotÚbranch)Úrequire_idler>  Úsnapshot)ÚpreparedÚdeleted_idsÚarchivedTÚarchiverí   rf   ÚrevisionÚexecution_generationrN  ú-INSERT INTO state_meta(key,value) VALUES(?,?)r¬   rˆ   )rb   rU  r[   r\   r&   Úhermes_state_mutation_guardsrc  Úhermes_state_mutation_preparedre  rg  rx   r   r   rî   ÚexecutemanyrW   )r_   ÚreplayrÓ   rm  rc  r}   re  rh  rg  ÚaffectedÚ
projectionÚeventr>  Úupdatedrˆ   r˜   rV  rW  rX  r\  r”   r¬   r`   rL  rO  rP  rN  rƒ   rf   s   &              €€€€€€€€€€€€€€r   r�   Ú%mutate_runtime_session.<locals>.writeü  s`  ø€ äˆt�UÔÜ(¨¨s°FÓ;ˆØÒØ˜4�<ÐØ—,‘,ÐBÀZÀMÓR×[Ñ[Ó]ˆØŠ?˜y¨HÔ4Ü# KÓ0Ð0ß29�7Ð-Ö.¸qˆØÐ(Ô(Ü#Ð$7Ó8Ð8ØÒ*°²À7ÐK_ÕC`ÐdwÔCwÜ#Ð$6Ó7Ð7ØÒ"ÝCØ:CÀxÔ:O‘n T¨:Ô6ÐV`ÐUaˆGÙ˜Ô ØÒ'Ù˜TÔ"ßÝEÙ% b¨$°
Ó;ˆHØ˜HÔ$åEÙ˜R ¤t¨Z¸À(Õ9KÐ,LÓ'MÔNØ Ð)¨4Ð/Ð/Ù+¨B°°jÀ)ÈWÐ_hÔiÑˆØˆØ˜Ô Ü$¤U¨:¯>©>¸-Ó+H×+YÐ+YÈZÈMÓ%ZÐ\dÓe‰EØ�[‰[˜Ó$¨Ó,°Ò1DÈWÐU_×M`ÔM`Ü$¤U¨8£_×%EÐ%E¸¸ÀyÓQˆEØ×ÑÐ]Ù2:Ó;±(¨›)±(Ñ;ô	=à—,‘,ÐBÀZÀMÓR×[Ñ[Ó]ˆØ 
¨J×W^¸Ð@RÖ8SÐduÐxyÕdyØ(Ï7¨'Ð2FÖ*GÐXkØ˜yð8à,6ð8ˆð 	�‰ÐDØœ5 (¨F°H¸fÐ!EÓFÐGô	Iàˆ}Ðùò <s   Æ9I
)Úemit_session_deleted)r   Úprimary>   ÚmodelÚresetrf  rd  ÚrewindÚcompress)rH   r]   r^   r&   Úhermes_state_mutationsr[  r\  rQ   rw   rW   rR  r“   Úhermes_state_commonry  r   r   )r”   r`   r›   rf   rœ   rO  rN  rƒ   rL  rV  r˜   rW  rX  rA   r[  r�   rˆ   rv  ry  r\  r¬   rP  s   fd$d$dddddddd      @@@r   Úmutate_runtime_sessionr�  ã  s  ÿý€ ð  
¨JÓ7ˆÜˆeŽñ 8äÐÓ¤cÓ)Ð->ÀÔ-BÜÐ 0Ó1Ð1ßDÙ�I˜wÔ'ØÒ&¬DÐ1DÓ,EÌSÓ,PÐTgÐjkÔTkÜÐ 0Ó1Ð1ØÐPÔPÐUhÒUpÜÐ 0Ó1Ð1ä�jŠjœ˜w›Ó(€GÜ& |°ZÀÐW`ÐjqØ9JÐ`sôu�K€Cˆ÷*÷ *õ *ðV ×%Ñ% eÓ,�M€FˆEØÒÝ<Ù˜R ×!2Ñ!2¸5¿<¹<ÐQ[Õ\Ø€Mr   z#gateway.prompt_admissions_import.v1c                 ó$  € ^ RI Hp \        W4       V.p\        ^d4       Fc  pV P	                  W#R,          34      P                  4       pVf   Vu # VR,          V9   d   \        R4      hVP                  VR,          4       Ke  	  \        R4      h)r·   )Ú_CHAIN_STEP_SQLÚidr¤   rv   )Úhermes_state_compressionrƒ  rg   Úranger[   r\   r&   r?  )r_   rf   rƒ  ÚchainÚ_Úchilds   &&    r   Ú_canonical_chainrŠ  1  s   € å8ÜˆTÔØˆL€EÜ�3ŽZˆØ—‘˜_°R­y¨lÓ;×DÑDÓFˆØŠ=ØŠLØ��;˜%ÔÜ#Ð$8Ó9Ð9Ø�‰�U˜4•[Ö!ñ ô Ð0Ó
1Ð1r   c                 óŒ  € R F  p\        W,          4       K  	  \        P                  ! VR,          4      p\        V\        4      '       d   VR,          V9  d   \        R4      h\        P                  ! VR,          4      p\        V4      pVP                  RR4      pVR8X  d   RMTpVR9  g   VR	,          R9  d   \        R4      h\        WR,          4      p	V	R,          p
VR	,          R
8X  d   RMVR	,          pVR,          pVf!   VR8X  d   \        W
4      R,          ^,           pVe&   \        V4      \        Jg   V^ 8  d   \        R4      h\        V
RVRV/R7      pV P                  RVR ,          VR ,          VV
\        P                  ! V	4      W}W‹VR,          W,34       Ve   V P                  RWÊ34       R# R# )rm   rq   r|   rE   rƒ   r–   r—   Ú	interruptr±   rä   rå   rÉ   ru   NrÍ   r    r¡   zÝINSERT INTO session_admissions(admission_id,request_id,principal_id,
        target_session_id,lineage_json,payload_json,payload_digest,intent,status,outcome,owner_epoch,generation)
        VALUES(?,?,?,?,?,?,?,?,?,?,?,?)rÞ   úKUPDATE sessions SET runtime_generation=MAX(runtime_generation,?) WHERE id=?)rm   rq   Úrootr¯   )r«   rå   rÉ   r  rv   )rH   rQ   rw   rF   rx   r&   rW   rî   rŠ  rg   r]   r^   r   r[   rR   )r_   ra   r`   r›   r'   r|   rƒ   r­   r–   r‡  r>  rä   ru   r¬   s   &&&&          r   Ú_import_legacy_rowr�  @  s£  € Û>ˆÜˆc�jÖñ ?ä�jŠj˜˜Y�Ó(€GÜ�gœt×$Ò$¨Ð,?Õ(@ÈÔ(OÜÐ 0Ó1Ð1Ü�jŠj˜˜Y�Ó(€GÜ�G‹n€GØ�[‰[˜ 7Ó+€FØ! [Ô0‰Z°f€FØÐ3Ô3°s¸8µ}ÐLxÔ7xÜÐ 0Ó1Ð1Ü˜TÐ':Õ#;Ó<€EØ�2�Y€FØ˜h�-¨9Ô4‰Y¸#¸h½-€FØ�\Õ"€JØÒ˜f¨	Ô1Ü˜dÓ+Ð,@ÕAÀAÕEˆ
ØÒ¤4¨
Ó#3¼3Ó#>À*ÈqÄ.ÜÐ 0Ó1Ð1Ü"°FÀWÈgÐW_ÐagÐDhÔi€FØ‡L�Lð +à-0°Õ-@À#ÀnÕBUÐWcØ”—
’
˜5Ó! 7°FÀCÈ	ÅNÐTYð-gôhð ÒØ�‰ÐbÐeoÐdxÖyñ r   c                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r   r`   r›   Úwriters_drainedrŒ   r  )r   s   "r   r   r   ]  s+   € ÷ +(ñ +(´3ð +(ÔSVð +(Ü6:ð+(Ü?Bñ+(r   c               ó¦  aaaaa€ ^ RI Hp ^ RIHp ^ RIp^ RIp^ RIHp	 VRJd   \        R4      h\        S4       V! V4      P                  RR7      pV! V	! VP                  4       R,           RR	7      4      ;_uu_ 4       p
VP                  V
n        V
P                  R
4       V
P                  R4       V
P                  R4       Uu. uF  p\        V4      NK  	  upo. oV
P                  R4      P!                  4       '       d+   V
P                  R4       Uu. uF  p\        V4      NK  	  upoVP#                  \%        RSRS/4      P'                  R4      4      P)                  4       p\%        R\+        V4      RVR\-        S4      RS/4      oVVVVV3R lpV P/                  V4      uuRRR4       # u upi u upi   + '       g   i     R# ; i)zçImport a frozen legacy snapshot; original file remains rollback evidence.

The caller proves the old writers are drained before invoking this function.
Fingerprinting uses SQL snapshot data, never a raw open/close on a live inode.
)Úclosing)ÚPathN)Úconnect_trackedTrE   )Ústrictz?mode=ro)ÚurizPRAGMA query_only=ONÚBEGINz%SELECT * FROM admissions ORDER BY seqzDSELECT 1 FROM sqlite_master WHERE type='table' AND name='executions'z&SELECT * FROM executions ORDER BY rootr5  Ú
executionsúutf-8ÚsourcerQ  Úimported_id_countr›   c                 óð  <€ \        V S4       V P                  R \        34      P                  4       pVe   V^ ,          S8w  d   \	        R4      h^ # S Fg  pVR,          p\        V4      \        Jg   V^ 8  d   \	        R4      h\        V \        VR,          4      4      R,          pV P                  RW434       Ki  	  S
 F  p\        WSS	4       K  	  V P                  R\        S34       \        S
4      # )r)  r¤   ru   rE   rŽ  r�  ro  rv   )rb   r[   Ú_IMPORT_KEYr\   r&   r]   r^   rŠ  rH   r�  rG   )r_   rª   Ú	executionru   r>  ra   r`   r™  Úmarkerr›   r5  s   &     €€€€€r   r�   Ú/import_legacy_session_admissions.<locals>.writew  sè   ø€ Ü�4˜ÔØ—,‘,ÐIÌKÈ>ÓZ×cÑcÓeˆCØŠØ�q•6˜VÔ#Ü+Ð,@ÓAÐAÙÛ'�	Ø& |Õ4�
Ü˜
Ó#¬3Ó.°*¸q´.Ü+Ð,<Ó=Ð=Ü)¨$´°iÀÕ6GÓ0HÓIÈ"ÕM�Ø—‘ÐjÐmwð  mAö  Bñ (ó �Ü" 4¨e°\ÖBñ à�L‰LÐHÌ;ÐX^ÐJ_Ô`Ü�t“9Ðr   )Ú
contextlibr“  Úpathlibr”  ÚhashlibÚsqlite3Úhermes_cli.sqlite_safe_readr•  r&   rH   ÚresolveÚas_uriÚRowÚrow_factoryr[   rP   r\   Úsha256rW   ÚencodeÚ	hexdigestr   rG   r“   )r”   r`   Úsource_pathr›   r‘  r“  r”  r¤  r¥  r•  r›  ÚrrQ  r�   r™  r   r5  s   &d$d$         @@@r   Ú import_legacy_session_admissionsr°  ]  s—  ü€ õ #ÝÛÛÝ;Ø˜dÓ"ÜÐ 0Ó1Ð1Ü	ˆ,ÔÙ�{Ó#×+Ñ+°4Ð+Ó8€KÙ	‘ ×!3Ñ!3Ó!5¸
Õ!BÈÔM×	NÔ	NÐRXØ$Ÿ[™[ˆÔØ�‰Ð-Ô.Ø�‰�wÔØ!'§¡Ð0WÔ!XÓYÑ!X˜A”�Q–Ñ!XÑYˆØˆ
Ø�>‰>Ð`Óa×jÑj×lÒlØ+1¯>©>Ð:bÔ+cÓdÑ+c aœ$˜qž'Ñ+cÑdˆJØ—n‘n¤U¨F°D¸,È
Ð+SÓ%T×%[Ñ%[Ð\cÓ%dÓe×oÑoÓqˆÜ˜¤# kÓ"2°MÀ;ÐPcÔehÐimÓenÐp~ð  AMð  Nó  Oˆ÷	ñ 	ð" × Ñ  Ó'÷7 
OÒ	Nùò Zùò e÷ 
O×	NÐ	Nús2   ÂAF?ÃF5Ã)F?ÄF?ÄF:Ä-A=F?Æ5
F?Æ?G	Ú	_capturedc                óH   € V ^8„  d   QhR\         R\        R\         R\        /# r	  r�   )r   s   "r   r   r   ‹  s*   € ÷ %$ñ %$´ð %$Ä3ð %$ÔTWð %$ÜKOñ%$r   c               óR   aaaaaa€ ^ RI Ho VVVVVV3R lpV P                  V4      # )ab  Explicit operator acknowledgement; resolves uncertainty, never requeues it.

``_terminal_write(conn, row)`` is the owner's same-transaction effect (the discarded turn's
transcript boundary): it must not commit, may run again on SQLite retry, and raising rolls
the whole resolution back, so the FIFO can never advance past an unclosed lost turn.
``_captured=(outcome, stored_result)`` is the exact result this owner captured for the turn
before its settlement write failed; it commits with the resolution (only for an ``unknown``
row stamped by this same owner epoch), so the finished answer is not thrown away.ræ   c                 ót  <€ \        V S
4       \        V S	4      p\        S4      \        J dd   VR ,          S8X  dV   VR,          R8X  dH   VR,          R8X  g/   V P	                  RSS	,           34      P                  4       '       d   \        V4      # \        S4      \        Jg   VR,          R8w  g   VR ,          S8w  d   \        R4      hRpSe‰   VR,          S
8X  d{   Sw  r#VR9  d   \        R	4      h^ R
IH	pH
p V P	                  RSS	,           \        V! V! V\        P                  ! VR,          4      P                  R4      R7      4      4      34       Se	   S! W4       \        WVR,          4       V P	                  RVS	34       V P	                  RVR,          34       \        \        V S	4      4      # )ru   rä   r  rÞ   rò   z$SELECT 1 FROM state_meta WHERE key=?rÉ   rÎ   r{   rE   rà   rê   r‚   rC   rè   rë   rí   rq   )rñ   rò   rô   )rb   rn   r]   r^   r[   r\   r‰   r&   rl   rá   râ   rW   rQ   rw   rî   r€   )r_   ra   rÞ   Ústoredrá   râ   rç   r±  rÜ   rm   r`   ru   s   &     €€€€€€r   r�   Ú,resolve_unknown_session_input.<locals>.write–  sž  ø€ Üˆt�UÔÜ˜˜|Ó,ˆÜ�Ó¤Ó#¨¨LÕ(9¸ZÔ(GÈCÐPXÍMÐ]gÔLgØ˜•^ }Ô4¸¿¹Ø:¸]È\Õ=YÐ<[ó9]ß]eÑ]eÓ]gö9hä˜“9ÐÜ�
Ó¤3Ó&¨#¨h­-¸9Ô*DÈÈLÕHYÐ]gÔHgÜ#Ð$6Ó7Ð7ØˆØÒ  S¨Õ%7¸5Ô%@Ø'‰OˆGØÐDÔDÜ'Ð(8Ó9Ð9ßKØ�L‰Lð Oà'¨,Õ6¼¹mÉNØ#´$·*²*¸SÀÕ=PÓ2Q×2UÑ2UÐV\Ó2]ôM_ó ?`ó 9að bôcð Ò&Ù˜DÔ&Ü! $¨S°Õ-?Ô@Ø�‰ÐeØ˜|Ð,ô	.à�‰ÐYÐ\_Ð`sÕ\tÐ[vÔwÜ”J˜t \Ó2Ó3Ð3r   )rl   rç   r“   )r”   r`   rm   ru   rÜ   r±  r�   rç   s   &ddddd @r   Úresolve_unknown_session_inputr·  ‹  s%   ý€ õ 4÷4ò 4ð4 ×Ñ˜UÓ#Ð#r   c                 ó>   € \        V 4      pVP                  R 4       V# )Úadoption_digest)rP   r†   r‡   s   & r   Ú_worker_publicrº  ³  s   € Ü�#‹Y€FØ
‡J�JÐ Ô!Ø€Mr   c                 ó  € V P                  R V34      P                  4       pVf   \        R4      hVR,          V8w  d   \        R4      h\        V4      \        Jg&   VR,          V8w  g   \        W4      R,          V8w  d   \        R4      hV# )ú4SELECT * FROM worker_executions WHERE execution_id=?re   rf   Úpermission_deniedru   rÍ   rÎ   )r[   r\   r&   r]   r^   rg   )r_   r   rf   ru   ra   s   &&&& r   Ú_worker_assignmentr¾  ¹  s…   € Ø
�,‰,ÐMÐP\ÈÓ
_×
hÑ
hÓ
j€CØ
‚{Ü Ó,Ð,Ø
ˆ<Õ˜JÔ&ÜÐ 3Ó4Ð4ÜˆZÓ¤Ó# s¨<Õ'8¸JÔ'FÜ˜Ó)Ð*>Õ?À:ÔMÜÐ 2Ó3Ð3Ø€Jr   c                 óæ   € R P                  R V 4       4      pV P                  RV R2W#.VOVNVN54      P                  4       p\        V4      ^8”  d   \	        R4      hV'       d
   V^ ,          # R# )rN   c              3   ó&   "  € T F  pR x € K	  	  R# 5i)rr   Nr   )r:   rˆ  s   & r   r<   Ú+_linked_worker_admission.<locals>.<genexpr>Æ  s   é € Ð2© A�C«ùs   ‚z]SELECT * FROM session_admissions
        WHERE generation=? AND owner_epoch=? AND status IN (zŸ)
          AND (target_session_id=? OR EXISTS (
              SELECT 1 FROM json_each(session_admissions.lineage_json) WHERE value=?
          )) ORDER BY seqr¤   N)r?   r[   rz   rG   r&   )r_   rf   ru   r{   ÚstatusesÚplaceholdersr5  s   &&&&&  r   Ú_linked_worker_admissionrÄ  Å  s‰   € Ø—8‘8Ñ2©Ó2Ó2€LØ�<‰<ð =Ø=I¸Nð Kðð
 
ÐD 8ÐD¨ZÐD¸ÑDóF÷
 GOÁhÃjð 	ô ˆ4ƒy�1„}ÜÐ 4Ó5Ð5ßˆ4��7Ð$ Ð$r   c                 ó|   € ^ RI p\        V 4       VP                  V P                  R4      4      P	                  4       # )r·   Nrš  )r¤  rH   r«  r¬  r­  )Úsecretr¤  s   & r   Ú_secret_digestrÇ  Ò  s-   € ÛÜ	ˆ&„MØ�>‰>˜&Ÿ-™-¨Ó0Ó1×;Ñ;Ó=Ð=r   rg  c                óx   € V ^8„  d   QhR\         R\        R\        R\         R\        R\        R\        R\        /# )	r   r`   r   rf   ru   ÚkindÚadoption_secretrg  rŒ   )r^   r   r¿   rP   )r   s   "r   r   r   Ø  sJ   € ÷ $ñ $¬Cð $¼sð $ÔPSð $Ü*-ð$Ü58ð$ÜKNð$Ü^bð$Üosñ$r   c                ó°   aaaaaaa
€ SS3 F  p\        V4       K  	  SR9  d   \        R4      h\        V4      o
V
VVVVVV3R lp	V P                  V	4      # )ÚcronrE   c           	      ó\  <a € \        S S4       \        S S4      p\        S	4      \        Jg   VR ,          S	8w  d   \	        R4      hS P                  RS34      P                  4       pVeK   VR,          VR,          VR,          VR,          VR,          3SS	S
SS38w  d   \	        R4      h\        V4      # ^ R	IH	pH
p V! S S4      pS'       dL   \        ;QJ d    V 3R
 lV 4       F  '       g   K   RM	  RM! V 3R
 lV 4       4      '       d   \	        R4      hV! S S4      '       d   \	        R4      h\        ;QJ d    V 3R lV 4       F  '       g   K   RM	  RM! V 3R lV 4       4      '       d   \	        R4      hS P                  RSSS
SS	S34       \        \        S SSS	4      4      # )rÍ   rÎ   r¼  rf   ru   rÉ  r{   r¹  r¤   )Úruntime_lineagerÌ   c              3   óf   <"  € T F&  pSP                  R V34      P                  4       x € K(  	  R# 5i)zgSELECT 1 FROM session_admissions WHERE target_session_id=? AND status IN ('queued','started','unknown')Nr�   ©r:   r6  r_   s   & €r   r<   Ú;register_worker_execution.<locals>.write.<locals>.<genexpr>ë  sY   øé € ð   ñ  w~ð  ps §¡ð  .Wð  Z]ð  Y_ó  !`÷  !iñ  !i÷  !kð  !kó  w~ùó   ƒ.1TFc              3   óf   <"  € T F&  pSP                  R V34      P                  4       x € K(  	  R# 5i)r4  Nr�   rÐ  s   & €r   r<   rÑ  ï  sE   øé € ð  Vñ  NUð  GJˆt�|‰|ÐmÐpsÐouÓv×Ñ÷  Bð  Bó  NUùrÒ  rË   z–INSERT INTO worker_executions(execution_id,session_id,kind,owner_epoch,generation,status,adoption_digest)
            VALUES(?,?,?,?,?,'registered',?))rb   rg   r]   r^   r&   r[   r\   rº  ry   rÎ  rÌ   rÐ   r¾  )r_   rÓ   rª   rÎ  rÌ   r}   r¬   r`   r   ru   rÉ  rg  rf   s   f     €€€€€€€r   r�   Ú(register_worker_execution.<locals>.writeß  sÆ  ù€ Üˆt�UÔÜ˜4 Ó,ˆÜ�
Ó¤3Ó&¨'Ð2FÕ*GÈ:Ô*UÜ#Ð$6Ó7Ð7Ø�l‰lÐQÐT`ÐSbÓc×lÑlÓnˆØŠ?Ø�LÕ! 3 |Õ#4°c¸&µkÀ3À}ÕCUÐWZÐ[lÕWmÐnÐs}ð  @Jð  LPð  RWð  Y_ð  s`ô  `Ü'Ð(<Ó=Ð=Ü! #Ó&Ð&ßOÙ! $¨
Ó3ˆßŸC›Cô   ñ  w~ó   ŸCŸCšCô   ñ  w~ó   ÷  ò  Ü#Ð$6Ó7Ð7Ù˜˜z×*Ò*Ü#Ð$6Ó7Ð7ß‹3ô  Vñ  NUó  V�3�3Š3ô  Vñ  NUó  V÷  Vò  VÜ#Ð$7Ó8Ð8Ø�‰ð 0Ø2>À
ÈDÐRWÐYcÐekÐ1lô	näÔ0°°|ÀZÐQ[Ó\Ó]Ð]r   )rÌ  r‰  ÚcomputeÚkanban)rH   r&   rÇ  r“   )r”   r`   r   rf   ru   rÉ  rÊ  rg  rA   r�   r¬   s   &ddddd$d  @r   Úregister_worker_executionr×  Ø  sW   þ€ à 
Ó+ˆÜˆeŽñ ,àÐ9Ô9ÜÐ 0Ó1Ð1Ü˜OÓ,€F÷^ó ^ð* ×Ñ˜UÓ#Ð#r   c                ó`   € V ^8„  d   QhR\         R\        R\        R\         R\        R\        /# )r   r`   r   rf   ru   rÊ  rŒ   r�   )r   s   "r   r   r   ÷  s9   € ÷ !$ñ !$¬ð !$¼Cð !$ÌSð !$Ü'*ð!$Ü=@ð!$ÜEIñ!$r   c               ód   aaaaaa€ ^ RI o\        V4      oVVVVVV3R lpV P                  V4      # )zKAuthority first verifies the original producer claim and live worker proof.Nc                 ó`  <€ \        V S4       \        V SS	S4      pVR ,          R8X  d   \        R4      hSP                  VR,          S4      '       g   \        R4      hSP	                  R4      '       d   VR,          S8w  d   \        R4      h\        V S	SVR,          R4      pVeA   V P                  RSVR	,          SVR,          34      pVP                  ^8w  d   \        R4      hV P                  R
SS34      pVP                  ^8w  d   \        R4      h\        \        V SS	S4      4      # )rä   r  rÎ   r¹  r½  zadmission-worker:r{   rZ   z¸UPDATE session_admissions SET owner_epoch=?,status='started'
                WHERE admission_id=? AND generation=? AND owner_epoch=?
                AND status IN ('started','unknown')rm   zPUPDATE worker_executions SET owner_epoch=?,status='running' WHERE execution_id=?)rå   rÉ   )	rb   r¾  r&   Úcompare_digestÚ
startswithrÄ  r[   rÒ   rº  )
r_   ra   ÚlinkedrÖ   r¬   r`   r   ru   Úhmacrf   s
   &   €€€€€€r   r�   Ú%adopt_worker_execution.<locals>.writeü  s=  ø€ Üˆt�UÔÜ   |°ZÀÓLˆØˆx�=˜JÔ&Ü#Ð$6Ó7Ð7Ø×"Ñ" 3Ð'8Õ#9¸6×BÒBÜ#Ð$7Ó8Ð8ð
 ×"Ñ"Ð#6×7Ò7¸CÀÕ<NÐRWÔ<WÜ# MÓ2Ð2Ü)Ø�*˜j¨#¨mÕ*<Ð>TóVˆàÒØ—l‘lð $7ð ˜˜~Õ.°
¸CÀÕ<NÐOóQˆGð ×Ñ 1Ô$Ü'Ð(:Ó;Ð;Ø—,‘,Ø^Ø�LÐ!ó#ˆð ×Ñ˜qÔ Ü#Ð$6Ó7Ð7ÜÔ0°°|ÀZÐQ[Ó\Ó]Ð]r   )rÞ  rÇ  r“   )	r”   r`   r   rf   ru   rÊ  r�   r¬   rÞ  s	   &dddd$ @@r   Úadopt_worker_executionrà  ÷  s1   ý€ ó Ü˜OÓ,€F÷^ò ^ð8 ×Ñ˜UÓ#Ð#r   ÚroleÚcontentÚ	tool_nameÚ
tool_callsÚtool_call_idÚtoken_countÚfinish_reasonÚ	reasoningÚreasoning_contentÚreasoning_detailsÚcodex_reasoning_itemsÚcodex_message_itemsÚplatform_message_idÚ
message_idÚobservedÚeffect_dispositionÚ_compressed_summaryÚ	timestampÚapi_contentÚdisplay_kindÚdisplay_metadataÚ_row_idÚ_canonical_contentÚ!_compressed_summary_has_user_turnc                 ó†   € V  UUu. uF(  p\          Uu/ uF  q"VP                  V4      bK  	  upNK*  	  upp# u upi u uppi r8   )Ú_ROW_ANNOTATION_KEYSrî   )ÚmessagesÚmsgrP  s   &  r   Úrow_annotationsrý  /  s:   € ÙKSÔTÉ8ÀCÕ*>Ó?Ñ*> 3�#—'‘'˜#“,ÒÑ*>Ô?É8ÒTÐTùÒ?ùÓTs   †=“8­=¸=c                 ó�  € \        V4      R R0,
          '       g   R V9  d   \        R4      hVR ,          p\        V\        4      '       d   \	        V4      R8”  d   \        R4      hV F™  p\        V\
        4      '       d3   \        V4      \        ,
          '       g   VP                  R4      R9  d   \        R4      hRV9   g   K_  VP                  RVR,          V34      P                  4       '       d   K�  \        R4      h	  VP                  R4      pVe   \        V4       V P                  WWFR7      pR	VR
\        V4      /# )rû  Úturn_lease_holderrE   iè  rá  rö  z2SELECT 1 FROM messages WHERE id=? AND session_id=?r½  )rÿ  ÚcountÚannotations)ÚuserÚ	assistantÚsystemÚtool)rD  r&   rF   rx   rG   rP   Ú_MESSAGE_FIELDSrî   r[   r\   rH   Ú_append_messages_in_transactionrý  )r”   r_   rf   rƒ   rû  rü  Úholderr   s   &&&&    r   Ú_worker_appendr	  3  s"  € Ü
ˆ7ƒ|�zÐ#6Ð7×7Ô7¸:ÈWÔ;TÜÐ 0Ó1Ð1Ø�zÕ"€HÜ�h¤×%Ò%¬¨X«¸Ô)=ÜÐ 0Ó1Ð1ÛˆÜ˜3¤×%Ò%¬¨S«´O×)CÔ)CØ—7‘7˜6“?Ð*QÔQÜ#Ð$4Ó5Ð5à˜Ö D§L¡LØDØ�Y• Ð,ó%.ç.6©h«j÷%9ð %9ô $Ð$7Ó8Ð8ñ ð �[‰[Ð,Ó-€FØÒÜˆfŒØ×.Ñ.¨tÀÐ.Ód€EØ�U˜M¬?¸8Ó+DÐEÐEr   c                 ó`  aa€ ^ RI p^ RIHp ^ RIHo VR8X  d   R0MRR0p\        V4      V8w  d   \        R4      h\        VR,          4      pVP                  RR4      p	\        V	4      \        \        39  g   R	T	u;8:  d   R
8:  g   M \        R4      hV P                  W4      p
VP                  4       oVR8X  d'   V! VRRV
VSSV	,           VV3R l4      ^ ,          pRV/# VR8X  d-   VP                  RSV	,           W¨34      P                  ^ 8„  pRV/# VP                  RW¨34       RpRV/# )r·   N)Ú_claim_lease_row)Ú(_compression_lock_holder_process_is_deadúturn.releaser  Úttl_secondsrE   i,  gš™™™™™¹?i  úturn.acquireÚsession_turn_leasesÚconversation_idc                 ó@   <€ \        V4      S8*  ;'       g	    S! V 4      # r8   )Úfloat)ÚhÚer  Únows   &&€€r   Ú<lambda>Ú_worker_turn.<locals>.<lambda>Y  s   ø€ œ˜q› S™×WÐWÑ,TÐUVÓ,WÐWr   ú
turn.renewzPUPDATE session_turn_leases SET expires_at=? WHERE conversation_id=? AND holder=?zDDELETE FROM session_turn_leases WHERE conversation_id=? AND holder=?rA   )Útimer…  r  Úhermes_stater  rD  r&   rH   rî   r]   r  r^   Ú_session_turn_lease_key_on_connr[   rÒ   )r”   r_   rf   rƒ   rN  r  r  Úallowedr  ÚttlrP  rA   r  r  s   &&&&&       @@r   Ú_worker_turnr  I  sC  ù€ ÛÝ9ÝEØ%¨Ô7ˆx‰j¸hÈÐ=V€GÜ
ˆ7ƒ|�wÔÜÐ 0Ó1Ð1Ü�7˜8Õ$Ó%€FØ
�+‰+�m SÓ
)€CÜˆCƒyœ¤˜Ô$¨C°3Ö,>¸$Ö,>ÜÐ 0Ó1Ð1Ø
×
,Ñ
,¨TÓ
>€CØ
�)‰)‹+€CØ�NÔ"Ù  Ð'<Ð>OÐQTØ�C˜˜s�ÝWóYàYZõ\ˆð �UÐÐð 
�lÔ	"Ø—‘ÐoØ! C�i¨Ð5ó7ß7?±xÀ!ñDˆð
 �UÐÐð 	�‰Ð[Ð^aÐ]jÔkØˆØ�UÐÐr   Ú	auxiliaryc                óÐ  € ^ RI HpHp RpV'       gX   VP                  R4      p\	        V\
        4      '       d   TMRpVP                  4        U	U
u/ uF  w  ršV	R8w  g   K  WšbK  	  pp	p
V'       d   V0 Rm,
          R0,          M
V0 Rm,          p\        V4      V,
          '       d   \        R4      hVP                  4        Fé  w  rÍV. VORN59   d1   \        V4      \        J ;'       d    ^ Tu;8*  ;'       d    R8*  Mu pM•VR9   dD   VRJ ;'       g7    \        V4      \        \        39   ;'       d    ^ Tu;8*  ;'       d    R8*  Mu pMKVR8X  d   \        V4      \        J pM2VRJ ;'       g'    \	        V\
        4      ;'       d    \        V4      R	8*  pV'       d   Kà  \        R4      h	  V'       dC   VP                  R4      '       g   \        R4      hV P                  ! W3/ R^/V,          B  RR/# T P                  ! W3/ VB  ^ R
IHp ^ RIHpHp V! V4      pV'       d4   VP+                  RVP-                  RR7      ,           VV34       V! W4       RR/# u up
p	i )r·   )Ú_MODEL_USAGE_FIELDSÚ_TOKEN_COUNTERSNr›  ÚtaskÚabsoluterE   Úapi_call_countg   ¢”mBi   )Úcreated_surface)Ú_UNSET_CREATED_SQLÚstamp_compression_ancestorsz4UPDATE sessions SET created_source=? WHERE id=? AND Úcreated_source)ÚcolrA   >   Úcost_sourceÚcost_statusÚbilling_modeÚactual_cost_usd>   r$  r%  Úpricing_versionl          )Úestimated_cost_usdr/  )Úhermes_state_usager"  r#  rî   rF   r   r  rD  r&   r]   r^   r  r¿   rG   Ú_record_model_usageÚ#_update_token_counts_in_transactionÚgateway.session_policyr'  r…  r(  r)  r[   r   )r”   r_   rf   rƒ   r   r"  r#  r›  ÚrawÚkÚvr  rP  rA   Úvalidr'  r(  r)  Úsurfaceds   &&&&$              r   Ú_worker_usager;  c  s1  € ßGØ€Fßð �k‰k˜(Ó#ˆÜ" 3¬×,Ò,‘°$ˆØ$+§M¡M¤OÔE¡O™D˜A°q¸H±}”4�1’4¡OˆÑEßvÐ"Ò%fÕfÐjpÐiqÖqð  GZò  ]Dõ  GD€GÜ
ˆ7ƒ|�g×ÔÜÐ 0Ó1Ð1Ø—m‘m–o‰
ˆØÐ6�OÐ6Ð%5Ñ6Ô6Ü˜“K¤3Ð&×>Ð>¨1°×+>Ô+>¸Ô+>‰EØÐ=Ô=Ø˜T�M×YÐY¤d¨5£k´c¼5°\Ñ&A×&XÐ&XÀaÈ5×FXÔFXÐTXÔFX‰EØ�JÔÜ˜“K¤4Ð'‰Eà˜T�M×TÐT¤j°¼Ó&<×&SÐ&SÄÀUÃÈtÑASˆEß‰uÜ#Ð$4Ó5Ð5ñ &÷ Ø�{‰{˜6×"Ò"Ü#Ð$4Ó5Ð5Ø
×Ò˜tÑUÐ5EÀqÐ4IÈGÕ4SÒUð �Tˆ?Ðð 	×.Ò.¨tÑKÀ7ÒKõ 	;ß\Ù" 6Ó*ˆßØ�L‰LØFØ$×+Ñ+Ð0@Ð+ÓAõBà˜:Ð&ô(ñ (¨Ô9Ø�Tˆ?ÐùóA Fs   ÁI"Á!I"c                 ó0   € V'       d   \        R 4      hRR/# )rE   rä   r  )r&   )r”   r_   rf   rƒ   s   &&&&r   Ú_worker_finishr=  ‘  s   € ßÜÐ 0Ó1Ð1Ø�jÐ!Ð!r   c               óæ   € ^ RI HpHp	Hp
HpHpHp ^ RIHp ^ RI	H
p / VCVCRVRV	RVRVRVR	V
R
\        R\        R\        RR /
CR Uu/ uF
  pVV3R lbK  	  upCp\        WW#WEVVVR7	      # u upi )zOOne closed durable mutation and receipt; never call a self-committing API here.)Úworker_contextÚworker_promptÚworker_row_roleÚworker_sidecarsÚworker_tail_roleÚworker_tool_names)ÚWORKER_COMPRESSION_HANDLERS)ÚWORKER_LIFECYCLE_HANDLERSzsession.contextzsession.promptzsession.sidecarszsession.toolszsession.tail_rolezsession.row_roleztranscript.appendúexecution.finishz
usage.mainzusage.auxiliaryc                 ó   € \        WW#R R7      # )T)r   )r;  )r”   r_   r6  Úps   &&&&r   r  Ú)mutate_worker_execution.<locals>.<lambda>ª  s   € ´MÀ"ÈCÐ^bÕ4cr   c                 ó   € \        WW#V4      # r8   )r  )r”   r_   r6  rI  Úops   &&&&&r   r  rJ  «  s   € ´LÀÈ3ÐSUÔ4Vr   )r`   r   rf   ru   ÚsequencerN  rƒ   Úhandlers)r  r  r  )Úhermes_state_worker_contextr?  r@  rA  rB  rC  rD  Úhermes_state_worker_compressionrE  Úhermes_state_worker_lifecyclerF  r	  r=  r;  Úapply_worker_receipt)r”   r`   r   rf   ru   rM  rN  rƒ   r?  r@  rA  rB  rC  rD  rE  rF  ÚnamerN  s   &$$$$$$$          r   Úmutate_worker_executionrT  —  sº   € ÷R÷ RåKÝGðØ
#ðà
%ðð 	˜>Ø˜-Ø˜OØÐ*ØÐ-Ø˜OØœ^ØœNØ”mØÑcññ FóGÙEˆtð ¨dÓVÒVÙEñGð€Hô    ¸lØ+5ÐT]Ø(/¸(ôDð DùòGs   Á	A.c               óº  a aaaaaaaa
aa€ ^ RI Ho \        S4      \        Jg%   S^8  g   \	        S\
        4      '       d   SS9  d   \        R4      h\        V4      o\        SP                  RRR7      4      R8”  d   \        R4      h\        SRSR\        P                  ! S4      /R7      o
V V
VVVVVVVVV3R	 lp	S P                  V	S P                  R
7      # )a§  The one worker receipt transaction every ``worker.persist`` family shares.

An exact (execution, sequence, digest) retry returns the stored result; otherwise the
epoch, assignment, live status and next sequence are fenced, ``handlers[operation]`` runs on
the transaction connection (it must not commit), and its result is stored as the receipt.
``execution.finish`` is the only operation that makes the execution terminal.
)Úworker_receipt_assignmentrE   rš  Úsurrogatepass)ÚerrorsrN  rƒ   r¡   c                 óv  <€ \        V S4       S! V SSSSS	4      pVR ,          S8w  d   \        R4      hV P                  RSS34      P                  4       pVe]   VR,          S	8w  d   \        R4      h^ RIHp V! VR,          4      '       d   \        R4      h\        P                  ! VR,          4      # VR,          R9  d   \        R4      hSVR
,          ^,           8w  d   \        R4      hV P                  pSS,          ! SV S\        P                  ! S
4      4      pV P                  V8g  ;'       g    SR8H  pV P                  RSSS	\        P                  ! VRRR7      34       T P                  RSSR8X  d   RMR	S34       V'       d   V P                  RS34       SR8X  d   ^ RIH
p V! V S4       V# )r{   rZ   zASELECT * FROM worker_receipts WHERE execution_id=? AND sequence=?r„   r¤   )Úretired_receiptÚresult_jsonrÎ   rä   ÚrunningÚlast_sequencerE   rG  z]INSERT INTO worker_receipts(execution_id,sequence,payload_digest,result_json) VALUES(?,?,?,?)TF)rJ   rM   zJUPDATE worker_executions SET last_sequence=?,status=? WHERE execution_id=?r  rí   rs   )Ú
registeredr\  )rb   r&   r[   r\   ry   rZ  rQ   rw   Útotal_changesrR   rt   )r_   ra   rª   rZ  Úchangesrˆ   rÖ   rt   r”   r¬   r­   r`   r   ru   rN  rN  rM  rf   rV  s   &       €€€€€€€€€€€r   r�   Ú#apply_worker_receipt.<locals>.writeÄ  s²  ø€ Üˆt�UÔÙ'¨¨l¸JÈ
ÐT\Ð^dÓeˆØˆ}Õ Ô&Ü# MÓ2Ð2Ø�l‰lÐ^Ø(¨(Ð3ó5ß5=±X³Zð 	àŠ?ØÐ#Õ$¨Ô.Ü'Ð(<Ó=Ð=ÝDÙ˜s =Õ1×2Ò2Ü'Ð(:Ó;Ð;Ü—:’:˜c -Õ0Ó1Ð1Øˆx�=Ð 9Ô9Ü#Ð$6Ó7Ð7Ø�s˜?Õ+¨aÕ/Ô/Ü#Ð$4Ó5Ð5à×$Ñ$ˆØ˜)Ö$ R¨¨z¼4¿:º:ÀgÓ;NÓOˆð ×$Ñ$¨Ñ/×RÐR°9Ð@RÑ3RˆØ�‰ÐtØ" H¨f´d·j²jÀÐVZÐfkÔ6lÐmô	oà�‰ÐaØ¨iÐ;MÔ.M¡
ÐS\Ð^jÐkô	mçØ�L‰LÐ]Ð`jÐ_lÔmØÐ*Ô*ÝNÙ% d¨LÔ9Øˆr   )Ú
patience_si  @ )rP  rV  r]   r^   rF   r   r&   rW   rG   r¬  r   rQ   rw   r“   Ú_TRANSCRIPT_WRITE_PATIENCE_S)r”   r`   r   rf   ru   rM  rN  rƒ   rN  r�   r¬   r­   rV  s   fdddddd$d @@@r   rR  rR  ³  s¸   ÿú€ õ JÜˆHƒ~œSÓ  H¨q¤L¼
À9Ìc×8RÒ8RÐV_ÐgoÔVoÜÐ 0Ó1Ð1Ü�G‹n€GÜ
ˆ7�>‰>˜'¨/ˆ>Ó:Ó;¸oÔMÜÐ 0Ó1Ð1Ü"°JØ+6¸	À9ÌdÏjÊjÐY`ÓNaÐ*bôd€F÷"÷ "ðF ×Ñ˜U¨r×/NÑ/NÐÓOÐOr   )Or!   rQ   r§   Útypingr   r   Ú&agent.conversation_compression_archiver   Úagent.message_metadatar   r   r   r   r	   r
   r   Úhermes_state_keysr   r   rT   r&   r.   rH   rW   rb   rg   rn   r€   r‰   r•   r¦   r³   r¹   r¼   rÂ   ÚobjectrÑ   rÚ   rõ   rú   rü   rù   r  r  r  rï   r  r   r!  r&  r,  r8  rE  rK  rR  rU  r�  rž  rŠ  r�  r°  r·  rº  r¾  rÄ  rÇ  r×  rà  Ú	frozensetr  ÚHANDOFF_MESSAGE_FIELDSrú  rý  r	  r  r;  r=  rT  rR  r   r   r   Ú<module>rk     sµ  ðñó
 Û ß 'å C÷÷ ñ õ 4ô�zô ô	!˜
ô 	!ò òò;ò/òòò=ò õ$ð Ð ð/$ØFMð/$à)-ð/$à=A÷/$õdXõiðGÈ÷ Gñ ‹H€	ð$$À4ð $$Èi÷ $$ðN$Ø/3ð$Ø@Dð$ØVZ÷$ð@ l€õ$ð& €õSõgõ$õ,
zõ$ð 6Ð õrõrõ6õ$õ>"$õJ$ðXØ-1ôXòðHà\`ðHð (,ðHð ?CðHð SXðHð dh÷HðV 4€ò2òzõ:+(ð\%$Ø26ð%$ØBF÷%$òPò	ò
%ò>ð$Øej÷$õ>!$ñH Ø
ˆI�{ L°.À-Ø�[Ð"5Ð7JØÐ2Ð4IÈ<ØÐ$Ð&;¸[È-ØÐ&¨	Ð3GÈÐZgÐiqðó ð %õ%ð )9Ð'9õ:€ð )Ð,OÐ+PÕPÐ ð
 " ;°ÀØ# ^°]ðDÐ òUòFò,ð4+¸eô +ò\"òDô84Pr   