+
    iHàj2  ã                  óJ   € R t ^ RIHt ^ RIHtHt ^ RIHt R R ltR R lt	R# )	a   ``message.complete.persisted_turn``: the committed row addresses of the agent's current turn.

Shared by every host that publishes a turn's completion (the TUI gateway's in-process turn and
the session authority's TurnRunner turn), so a client sees one receipt contract whichever host
ran the turn. Clients key on it to bind a streamed reply to its stored row (``SessionMessage.row_id``)
instead of comparing words.
)Úannotations)ÚAnyÚCallable)Ú_DB_PERSISTED_MARKERc               ó    € V ^8„  d   QhRRRR/# )é   Úmessager   Úreturnz
int | None© )Úformats   "ÚA/home/ubuntu/.hermes/hermes-agent/agent/persisted_turn_receipt.pyÚ__annotate__r      s   € ÷ hñ h˜cð h jñ hó    c                óÆ   € \        V \        4      '       d   V P                  R 4      MRpV P                  \        4      '       d   \	        V4      \
        J d
   V^ 8”  d   V# R# )Ú_row_idN)Ú
isinstanceÚdictÚgetr   ÚtypeÚint)r   Úrow_ids   & r   Úcommitted_row_idr      sM   € Ü'1°'¼4×'@Ò'@ˆW�[‰[˜Ô#Àd€FØ—[‘[Ô!5×6Ò6¼4À»<Ì3Ó;NÐSYÐ\]ÔS]ˆ6ÐgÐcgÐgr   c               ó8   € V ^8„  d   QhRRRRRRRRRRR	R
RRRR/# )r   Úmessagesr   ÚstartÚhistoryÚlistÚrawÚstatusÚstrÚcompression_unchangedÚboolÚprefix_row_matcheszCallable[[Any, Any], bool]r	   zdict | Noner
   )r   s   "r   r   r      sN   € ÷ -ñ -Øð-Øð-Ø(,ð-Ø36ð-Ø@Cð-àð-à5Oð-ð ñ-r   c          	     ó¬  aaa€ \        V \        4      '       dh   \        V4      \        JgU   ^ Tu;8:  d   \	        V 4      8  d=   M R# \        W,          \
        4      '       d   W,          P                  R4      R8w  d   R# WR o\        S^ ,          4      o\        ;QJ d     VV3R lV 4       F  '       g   K   RM	  RM! VV3R lV 4       4      '       d   R# S Uu. uF  p\        V4      ;pf   K  VNK  	  p	pV	'       g   R# RV	RR/p
\        S^ ,          4      ;pe   WºR	&   S Uu. uF4  qwP                  R4      R8X  g   K  VP                  R
4      R8w  g   K2  VNK6  	  ppV Uu. uF  p\        V4      NK  	  ppV'       d   RV9  d   WÚR&   SR,          pVR8X  dW   VP                  R4      R8X  dA   VP                  R4      '       g*   VP                  R4      V8X  d   \        V4      ;pe   WúR&   V\	        V4      8H  ;'       dS    \        ;QJ d+    V3R l\        W RV 4       4       F  '       d   K   RM 	  RM! V3R l\        W RV 4       4       4      p\        T;'       dL    T;'       dB    \	        V	4      \	        S4      8H  ;'       d#    \        R S 4       4      ^8H  ;'       d    RV
9   4      V
R&   V
# u upi u upi u upi )aæ  Report committed row addresses, never a text/timestamp search for a matching turn.

``start`` is the agent's persistence cursor (``_persist_user_message_idx``), re-anchored during
compaction. A partial receipt can address its surviving rows, but cannot retire a client's
entire streamed turn. Full coverage additionally requires the unchanged pre-turn prefix
(``prefix_row_matches(history_row, turn_row)`` for every row before ``start``), no compaction
and no redirected user boundary.
ÚroleÚuserNc              3  ó~   <"  € T F2  pVS^ ,          J ;'       g    SRJ;'       d    S\        V4      8H  x € K4  	  R# 5i)é    N)r   )Ú.0ÚbeforeÚ	anchor_idÚtails   & €€r   Ú	<genexpr>Ú)persisted_turn_receipt.<locals>.<genexpr>%   sE   øé € ð "Ù ˆvð �T˜!•WÐ×aÐa °$Ð!6×!`Ð!`¸9ÔHXÐY_ÓH`Ñ;`ÔaÛ ùs   ƒ=š=¦=TFÚrow_idsÚcompleteÚuser_row_idÚdisplay_kindÚhiddenÚuser_row_idsÚ	assistantÚ
tool_callsÚcontentÚfinal_assistant_row_idc              3  ó8   <"  € T F  w  rS! W4      x € K  	  R # 5i)Nr
   )r(   r)   Úafterr"   s   &  €r   r,   r-   :   s!   øé € ð 5_Ù?]©m¨fÑ˜6×)Ð)Ó?]ùs   ƒc              3  óH   "  € T F  qP                  R 4      R8H  x € K  	  R# 5i)r$   r%   N)r   )r(   r   s   & r   r,   r-   ?   s   é € ÐB¹T°'—‘˜FÓ# vÖ-»Tùs   ‚ "éÿÿÿÿ)r   r   r   r   Úlenr   r   r   ÚanyÚallÚzipr!   Úsum)r   r   r   r   r   r    r"   r   Úridr.   Úreceiptr0   Úusersr3   ÚlastÚfinal_idÚprefix_unchangedr*   r+   s   &&&&&$d          @@r   Úpersisted_turn_receiptrG      sž  ú€ ô �x¤×&Ò&¬$¨u«+¼SÓ*@ÈÈUÖHbÔUXÐYaÓUbÖHbáô ˜h�o¬t×4Ò4¸½×8KÑ8KÈFÓ8SÐW]Ô8]ÙØ�FÐ€DÜ   a¥Ó)€Iß
ƒsõ "Ù ó"‡s‡s‚sõ "Ù ó"÷ "ò "áÙ"&ÓY¡$�wÔ2BÀ7Ó2KÐ+K¨3�sˆs¡$€GÐYßÙØ ¨°UÐ;€GÜ'¨¨Q­Ó0Ð0ˆÒ=Ø!,�Ññ %)Óv¡D˜¯K©K¸Ó,?À6Ñ,IŒWÈgÏkÉkÐZhÓNiÐmuÑNu�WˆW¡D€EÐvÙ=BÓC¹U°'Ô$ WÖ-¹U€LÐCß�˜\Ô)Ø".�ÑØ��8€Dà�*Ô §¡¨&Ó!1°[Ô!@ÈÏÉÐR^×I_ÒI_Ø—‘˜Ó# sÔ*Ô<LÈTÓ<RÐ0R°Ò/_Ø,4Ð(Ñ)Ø¤ G£Ñ,÷ _ð _·³ô 5_Ü?BÀ7ÐU[ÐV[ÐL\Ô?]ó5_··²ô 5_Ü?BÀ7ÐU[ÐV[ÐL\Ô?]ó5_ó 2_ÐäØ÷ 	0ð 	0Ð2÷ 	0ð 	0Ü�‹LœC ›IÑ%÷	0ð 	0äÑB¹TÓBÓBÀaÑG÷	0ð 	0ð %¨Ñ/ó	1€GˆJÑð
 €Nùò3 Zùò wùÚCs$   Ã!KÃ7KÄ-KÅ	KÅ!KÅ-KN)
Ú__doc__Ú
__future__r   Útypingr   r   Úagent.context_compressorr   r   rG   r
   r   r   Ú<module>rL      s    ðñõ #ç  å 9õh÷
-r   