+
    iHàjùA  ã                  óf  € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHt ^ RIHtHtHt RtRt]! ]]04      tR	tR
tRtRtRt]! RRRRR]]]]]]]]04      ],          tRtR R ltR R lt R R lt!]! RRRRRR]04      t"R  R! lt#R" R# lt$R$ R% lt%R& R' lt&R( R) lt'R*t(R+ R, lt)R- R. lt*R/ R0 lt+]],3]]-3]].3]],33t/R1 R2 lt0R3R4/R5 R6 llt1R7R4/R8 R9 llt2R: R; lt3R< R= lt4R> R? lt5R@ RA lt6RB RC lt7RD RE lt8]! RF]],]
3,          RG7      t9RRH/RI RJ llt:RRH/RK RL llt;RH# )Mz<Internal metadata attached to durable conversation messages.)Úannotations)ÚCounter)Útime)Úuuid4)ÚAnyÚListÚMappingÚMutableMappingÚOptionalÚTypeVar)ÚMERGED_DURABLE_ROWSÚRETIRED_DURABLE_ROWSÚUNNAMED_DURABLE_ROWSÚ_db_row_snapshotÚ_canonical_rowÚ_merged_turn_prefixÚmessage_uidÚ_absorbed_message_uidsÚ_tool_call_uidsÚ_tool_call_uidÚ	timestampÚdisplay_kindÚdisplay_metadataÚ_row_idÚ_submit_row_session_idÚdata_usec               ó    € V ^8„  d   QhRRRR/# )é   Úmessagesr   Úreturnzfrozenset[str]© )Úformats   "Ú;/home/ubuntu/.hermes/hermes-agent/agent/message_metadata.pyÚ__annotate__r#   9   s   € ÷ iñ i 3ð i¨>ñ ió    c                ó:   € \        R T ;'       g    R 4       4      # )zXThe union of ``data_use`` over *messages*: what the model receiving them must guarantee.c              3  ó    "  € T FD  p\        V\        4      '       g   K  VP                  \        4      ;'       g    R F  q"x € K  	  KF  	  R # 5i)Nr    )Ú
isinstancer   ÚgetÚDATA_USE)Ú.0ÚmÚrs   &  r"   Ú	<genexpr>Ú'data_use_requirement.<locals>.<genexpr>;   s=   é € Ðh¡˜1´*¸QÄ×2H”QÐRS×RWÑRWÔX`ÓRa×RgÐRgÐegÒRgÈQ”QÑRg‘Q£ùs   ‚AŸA»Ar    )Ú	frozenset)r   s   &r"   Údata_use_requirementr0   9   s   € äÑh § ¨B ÓhÓhÐhr$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚmessageúMutableMapping[str, Any]Úrequiresú	list[str]r   ÚNoner    )r!   s   "r"   r#   r#   >   s'   € ÷ qñ qÐ4ð qÀ	ð qÈdñ qr$   c                óÀ   € V'       g   R# \        V4      V \        &   V P                  R4      p/ \        V\        4      '       d   TM/ C\        \        V4      /CV R&   R# )zÅMark a tool message with its requirement. The ``display_metadata`` copy is the durable one: that
column already rides every writer, branch and compaction copy, and replay lifts it back (SessionDB).Nr   )Úlistr)   r(   r'   Údict)r2   r4   Úmetadatas   && r"   Ústamp_data_user;   >   sU   € ÷ ÙÜ˜X›€GŒHÑØ�{‰{Ð-Ó.€HØ"p´*¸XÄt×2LÒ2L¡hÐRTÐ"pÔW_ÔaeÐfnÓaoÑ"p€GÐÓr$   c               ó    € V ^8„  d   QhRRRR/# )r   r2   r3   r   r6   r    )r!   s   "r"   r#   r#   H   s   € ÷ 5ñ 5Ð3ð 5¸ñ 5r$   c                óÌ   € V P                  R4      p\        V\        4      '       d=   VP                  \        4      '       d    \	        V\        ,          4      V \        &   R# R# R# )zURestore a replayed row's ``data_use`` key from its durable ``display_metadata`` copy.r   N)r(   r'   r9   r)   r8   )r2   r:   s   & r"   Úlift_data_user>   H   sH   € à�{‰{Ð-Ó.€HÜ�(œD×!Ò! h§l¡l´8×&<Ò&<Ü  ¬(Õ!3Ó4ˆ”Óñ '=Ñ!r$   Ú_anthropic_content_blocksÚreasoning_detailsÚextra_contentÚreasoning_opaqueÚreasoning_textÚbedrock_content_blocksc               ó    € V ^8„  d   QhRRRR/# )r   ÚmsgúMapping[str, Any]r   r    )r!   s   "r"   r#   r#   U   s    € ÷ Vñ VÐ$5ð VÐ:Kñ Vr$   c                óª   € \         P                  V 4      '       d   V # V P                  4        UUu/ uF  w  rV\         9  g   K  WbK  	  upp# u uppi )zY*msg* itself when it carries no persistence-only field, else a shallow copy without them.)ÚPERSISTENCE_ONLY_MESSAGE_FIELDSÚ
isdisjointÚitems)rF   ÚkÚvs   &  r"   Úwithout_persistence_fieldsrN   U   sD   € ä&×1Ñ1°#×6Ò6Øˆ
Ø ŸY™Yœ[ÔU™[‘T�Q¨AÔ5TÑ,TŒDˆAŠD™[ÒUÐUùÓUs   ±AÁAc               ó   € V ^8„  d   QhRR/# )r   r   Ústrr    )r!   s   "r"   r#   r#   \   s   € ÷ ñ �#ñ r$   c                 ó*   € \        4       P                  # )zYA fresh durable id (message or tool-call occurrence): random, never derived from content.)r   Úhexr    r$   r"   Úmint_uidrS   \   s   € ä‹7�;‰;Ðr$   c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer   r   r5   r    )r!   s   "r"   r#   r#   a   s   € ÷ rñ r�Cð r˜Iñ rr$   c           	     ó|   € \        \        P                  R \        V \         4      '       d   T MR 4       4      4      # )zSThe unique non-empty string uids of a live list, in order; anything else is ``[]``.c              3  ój   "  € T F)  p\        V\        4      '       g   K  V'       g   K%  Vx € K+  	  R # 5i©N)r'   rP   )r*   Úus   & r"   r-   Úuid_list.<locals>.<genexpr>c   s%   é € ÐpÑ*R AÔWaÐbcÔeh×WiœaÔnoŸašaÓ*Rùs   ‚3Ÿ3©
3r    )r8   r9   Úfromkeysr'   ©rU   s   &r"   Úuid_listr]   a   s.   € ä”—‘Ñp´:¸eÄT×3JÒ3J©%ÐPRÐ*RÓpÓpÓqÐqr$   c               ó    € V ^8„  d   QhRRRR/# )r   rF   rG   r   úOptional[str]r    )r!   s   "r"   r#   r#   f   s   € ÷ 9ñ 9Ð.ð 9°=ñ 9r$   c                óp   € V P                  \        4      p\        V\        4      '       d   V'       d   V# R# )z¡The dict's ``message_uid`` when it is a non-empty string, else ``None`` (never coerced: an int or a
blank would be a bug upstream of the write, not an identity).N)r(   ÚMESSAGE_UIDr'   rP   ©rF   Úuids   & r"   Úmessage_uid_or_nonerd   f   s+   € ð �'‰'”+Ó
€CÜ˜S¤#×&Ò&¯3ˆ3Ð8°DÐ8r$   c               ó    € V ^8„  d   QhRRRR/# )r   rF   r3   r   rP   r    )r!   s   "r"   r#   r#   m   s   € ÷ 
ñ 
Ð3ð 
¸ñ 
r$   c                óH   € \        V 4      pVf   \        4       ;q\        &   V# )as  The dict's ``message_uid``, minting one (``mint_uid``) when it carries none.

Minted ONCE per logical message, at its first insert, and stamped on the caller's dict so every later
insert of that dict (compaction generation, rotation handoff, replace) writes the same uid. Never
derived from content, timestamp or tool-call ids: two distinct messages may share all three.
)rd   rS   ra   rb   s   & r"   Ústamp_message_uidrg   m   s'   € ô ˜cÓ
"€CØ
‚{Ü!)£Ð+ˆ”+ÑØ€Jr$   Ú$compaction_inflight_task_restatementc               ó    € V ^8„  d   QhRRRR/# )r   rF   r3   r   r6   r    )r!   s   "r"   r#   r#   €   s   € ÷ tñ tÐ#;ð tÀñ tr$   c                óv   € V P                  R 4      p/ \        V\        4      '       d   TM/ C\        R/CV R &   R# )r   TN©r(   r'   r9   ÚINFLIGHT_TASK_RESTATEMENT)rF   r:   s   & r"   Úmark_inflight_restatementrm   €   s8   € Ø�w‰wÐ)Ó*€HØs¬j¸Ä4×.HÒ.H¡(ÈbÐsÔSlÐnrÑs€CÐÓr$   c               ó    € V ^8„  d   QhRRRR/# )r   rF   rG   r   r9   r    )r!   s   "r"   r#   r#   …   s   € ÷ ñ Ð#4ð ¸ñ r$   c                óÚ   € V P                  R4      pV P                  R4      '       d   RR/M/ p\        V\        4      '       d'   VP                  \        4      '       d   \        R/VR&   V# )zÍThe compaction-provenance fields replay keeps (summary flag, restatement flag), else ``{}``. A proactive
prune re-persists the replayed view, so a dropped flag would get the row stamped on the next replay.r   Ú_compressed_summaryTrk   )rF   r:   Úfieldss   &  r"   Úscaffolding_replay_fieldsrr   …   sa   € ð �w‰wÐ)Ó*€HØ47·G±GÐ<Q×4RÒ4RÐ)¨4Ñ0ÐXZ€FÜ�(œD×!Ò! h§l¡lÔ3L×&MÒ&MÜ&?ÀÐ%FˆÐ!Ñ"Ø€Mr$   c               ó    € V ^8„  d   QhRRRR/# )r   rF   rG   r   Úboolr    )r!   s   "r"   r#   r#   �   s   € ÷ 0ñ 0Ð#4ð 0¸ñ 0r$   c                ó*   € \        \        V 4      4      # )ziCompaction sent its summary and restatement rows unstamped; a replay stamp would break the cached prefix.)rt   rr   )rF   s   &r"   Úis_compaction_scaffoldingrv   �   s   € äÔ)¨#Ó.Ó/Ð/r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚsrcrG   Údstr3   r   r6   r    )r!   s   "r"   r#   r#   —   s$   € ÷ #ñ #Ð/ð #Ð6Nð #ÐSWñ #r$   c                ó”   € \          F=  w  r#V P                  V4      p\        WC4      '       g   K)  V'       g   K3  V! V4      W&   K?  	  R# )z­Copy the non-empty identity fields (uid, merge witness, tool-call uids) from *src* onto *dst*: the
live dict to its flush row, and the committed row back onto the live dict.N)Ú_IDENTITY_FIELD_TYPESr(   r'   )rx   ry   ÚkeyÚkindrU   s   &&   r"   Úcopy_identity_fieldsr~   —   s7   € ÷ +‰	ˆØ—‘˜“ˆÜ�e×"Ô"§u¡uÙ˜E“{ˆC‹Hó +r$   Úwith_tool_uidsFc               ó$   € V ^8„  d   QhRRRRRR/# )r   rF   r3   r   rt   r   r9   r    )r!   s   "r"   r#   r#       s#   € ÷ ñ Ð2ð Àtð ÐX\ñ r$   c               óž   € \        V 4       / p\        W4       V'       g-   VP                  \        R4       VP                  \        R4       V# )aŸ  The identity fields a new row copied from *msg* must carry, minting *msg*'s uid first when it has none:
a branch/seed copy writes fresh rows from the live dicts the new session keeps using, and a row without
them would restore with a different uid than the live dict carries. ``with_tool_uids`` only for a copy
that also carries ``tool_calls`` / ``tool_call_id``; a uid map on a row without its calls pairs nothing.N)rg   r~   ÚpopÚTOOL_CALL_UIDSÚTOOL_CALL_UID)rF   r   Úidentitys   &$ r"   Úmessage_identityr†       s=   € ô
 �cÔØ€HÜ˜Ô'ßØ�‰”^ TÔ*Ø�‰”] DÔ)Ø€Or$   Údropped_leadsc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Úsurvivorr3   ÚdroppedrG   r‡   rt   r   r6   r    )r!   s   "r"   r#   r#   ®   s,   € ÷ 3ñ 3Ø&ð3Ø1Bð3ØVZð3à	ñ3r$   c               óò  € \        V 4      p\        V4      p\        V P                  \        4      4      p\        VP                  \        4      4      pV'       d,   V'       d$   W@\        &   Yc'       d   V.M. ,           V,           pMYT'       d   V.M. ,           V,           p\
        P                  V4       Uu. uF   qˆV P                  \        4      8w  g   K  VNK"  	  up;p	'       d   W�\        &   R# R# u upi )a]  Merge-witness bookkeeping for every host fold of *dropped* into *survivor*.

The composite keeps the uid of the constituent whose text comes first and records every other
constituent's uid in ``_absorbed_message_uids`` (text order, no repeats). By default the survivor's
text leads; with *dropped_leads* the dropped dict's text was put first (the real user anchor folded
into a scaffolding turn), so its uid becomes the survivor's and the survivor's former uid is recorded.
A dict without a uid (unflushed, scaffolding, engine-authored) contributes nothing; an empty result
leaves the survivor untouched.
N)rd   r]   r(   ÚABSORBED_MESSAGE_UIDSra   r9   r[   )
r‰   rŠ   r‡   Úsurvivor_uidÚdropped_uidÚownÚtheirsÚorderedrc   Úabsorbeds
   &&$       r"   Úrecord_absorbed_messager“   ®   s¿   € ô ' xÓ0€LÜ% gÓ.€KÜ
�8—<‘<Ô 5Ó6Ó
7€CÜ�g—k‘kÔ"7Ó8Ó9€FßŸØ +”ÑØ®l˜\™NÀÕCÀcÕI‰à®+˜+™¸2Õ>ÀÕGˆÜ#'§=¡=°Ô#9Ó^Ñ#9˜CÀHÇLÁLÔQ\ÓD]Ñ=]—C�CÑ#9Ñ^Ð^€xÖ^Ø*2Ô&Ó'ñ _ùÒ^s   Â7C4ÃC4c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚintorG   Úextrar   r9   r    )r!   s   "r"   r#   r#   Ç   s#   € ÷ ñ Ð0ð Ð9Jð Ètñ r$   c                ó¤   € \        V 4      pVP                  4        F0  w  r4W29   d"   \        W#,          4      \        V4      ,           MTW#&   K2  	  V# )a,  Union two ``_tool_call_uids`` maps without losing an occurrence. Folding two assistant turns that
reuse a provider id (llama.cpp-style constant ids) leaves both calls in ``tool_calls``; the id then maps
to every occurrence's uid, in call order, as a list. Provider ids themselves are never rewritten.)r9   rK   Ú_uid_occurrences)r•   r–   ÚmergedÚcall_idrc   s   &&   r"   Úmerge_tool_call_uidsr›   Ç   sF   € ô �$‹Z€FØŸ™ž‰ˆØW^ÔWhÔ*¨6­?Ó;Ô>NÈsÓ>SÖSÐnqˆ‹ñ &à€Mr$   c               ó    € V ^8„  d   QhRRRR/# )r   rU   r   r   r8   r    )r!   s   "r"   r#   r#   Ñ   s   € ÷ ?ñ ?˜Cð ? Dñ ?r$   c                óJ   € \        V \        4      '       d   \        V 4      # V .# rX   )r'   r8   r\   s   &r"   r˜   r˜   Ñ   s   € Ü$ U¬D×1Ò1Œ4�‹;Ð>¸°wÐ>r$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚuidsrG   Ú
tool_callszlist[Mapping[str, Any]]r   r9   r    )r!   s   "r"   r#   r#   Õ   s$   € ÷ ñ Ð(9ð ÐG^ð Ðcgñ r$   c                ó
  aa€ ^ RI Ho \        VV3R lV 4       4      p\        V 4      pVP	                  4        FE  w  opV^8”  g   K  \        V P                  S4      ;p\        4      '       g   K8  V.V,          VS&   KG  	  V# )ae  *uids* with every provider id this row names more than once spelled out as one uid per occurrence. A
single response that repeats an id shares ONE uid (its results carry it, so every call stays paired);
before a fold appends another turn's occurrences, the shared uid must fill each of this row's slots or
the appended uids would align with the wrong calls.)Úcoalesce_tool_call_idc              3  óL   <"  € T F  pS! V4      ;o'       g   K  Sx € K  	  R # 5irX   r    )r*   Útcrš   r¢   s   & €€r"   r-   Ú0per_occurrence_tool_call_uids.<locals>.<genexpr>Ü   s$   øé € Ð\¡z ÑAVÐWYÓAZÐ6Z°gÓ6Z—W’W£zùs   ƒ$š
$)Úagent.message_sanitizationr¢   r   r9   rK   r'   r(   rP   )rŸ   r    ÚcountsÚexpandedÚcountrc   rš   r¢   s   &&    @@r"   Úper_occurrence_tool_call_uidsrª   Õ   sn   ù€ õ
 AäÕ\¡zÓ\Ó\€FÜ�D‹z€HØ Ÿ,™,ž.‰ˆ�Ø�1Ž9œ¨4¯8©8°GÓ+<Ð$< C¼c×BÔBØ!$ ¨¥ˆH�WÓñ )ð €Or$   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚindexúMutableMapping[str, str]Ú	assistantrG   r   r/   r    )r!   s   "r"   r#   r#   ä   s$   € ÷ ñ Ð 8ð ÐEVð Ð[dñ r$   c                óŠ  € ^ RI HpHp VP                  R4      ;'       g    R Uu. uF  qDV! V4      3NK  	  pp\	        R V 4       4      pV F  pV P                  VR4       K  	  VP                  \        4      p\        V\        4      '       d	   V'       g   V# / p	V Fš  w  rJV! V4      pVP                  V4      p\        V\        4      '       d8   V	P                  VR4      ^,           ;qÙV&   V\        V4      8  d	   WÍ,          MRp\        V\        4      '       g   Kƒ  V'       g   K�  V
 F  pWÀV&   K	  	  Kœ  	  V# u upi )a+  Register an assistant dict's ``_tool_call_uids`` under every pairing-id variant of its tool calls, so a
later tool-result row can be resolved by any spelling of its ``tool_call_id``. Provider ids repeat, so
every id this assistant names first shadows an earlier occurrence's entry: a result pairs with the
NEAREST preceding call, and a call without a uid (a legacy row) pairs its result with nothing. A
provider id repeated inside one row (two folded turns) maps each call to its own occurrence's uid.
Returns every pairing-id variant the assistant names.)r¢   Útool_call_id_variantsr    c              3  ó:   "  € T F  w  rV F  q3x € K  	  K  	  R # 5irX   r    )r*   Ú_ÚvariantsÚvariants   &   r"   r-   Ú'index_tool_call_uids.<locals>.<genexpr>î   s   é € ÐO±¡+ !Ãh¸7”gÁh‘g³ùs   ‚Nr    éÿÿÿÿ)r¦   r¢   r°   r(   r/   r‚   rƒ   r'   r9   r8   ÚlenrP   )r¬   r®   r¢   r°   r¤   ÚcallsÚnamedr´   rŸ   Ú
occurrencer³   rš   rc   Únths   &&            r"   Úindex_tool_call_uidsr¼   ä   s  € ÷ Xà7@·}±}À\Ó7R×7XÐ7XÐVXÐ7XÓYÑ7X°Ñ'¨Ó+Ó,Ñ7X€EÐYÜÑO±ÓOÓO€EÛˆØ�	‰	�'˜4Ö ñ à�=‰=œÓ(€DÜ�dœD×!Ò!¯ØˆØ€JÛ‰ˆÙ'¨Ó+ˆØ�h‰h�wÓˆÜ�cœ4× Ò Ø(2¯©°wÀÓ(CÀaÕ(GÐGˆC˜WÑ%Ø!¤C¨£Hœn�#–(°$ˆCÜ�cœ3×Ô§C¡CÛ#�Ø!$�g“ó $ñ ð €Lùò# Zs   ¦E c               ó$   € V ^8„  d   QhRRRRRR/# )r   r¬   r­   Útool_call_idr   r   r_   r    )r!   s   "r"   r#   r#     s#   € ÷ 
ñ 
Ð!9ð 
Èð 
ÐQ^ñ 
r$   c                óº   € ^ RI Hp V '       d   \        V\        4      '       d	   V'       g   R# V! V4       F   pV P	                  V4      pV'       g   K  Vu # 	  R# )z[The uid an indexed assistant dict minted for ``tool_call_id`` (any variant), else ``None``.©Útool_result_id_variantsN)r¦   rÁ   r'   rP   r(   )r¬   r¾   rÁ   r´   rc   s   &&   r"   Úresolve_tool_call_uidrÂ     sE   € åBçœ
 <´×5Ò5¿\ÙÙ*¨<Ö8ˆØ�i‰i˜Ó ˆß‰3ØŠJñ 9ñ r$   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r   z
list[dict]Ú
tool_indexÚintÚownersr9   r   r_   r    )r!   s   "r"   r#   r#     s)   € ÷ ñ ¨ð Àð Èdð ÐWdñ r$   c                ó>  € W,          P                  R4      p\        V\        4      '       d	   V'       g   R# ^ RIHp \        V! V4      4      p\        V^,
          RR4       F¶  pW,          p\        V\        4      '       g   K#  VP                  R4      R8X  d    R# VP                  R4      R8w  d   KT  VP                  \        V4      4      ;pf   / p	\        W—4      V	3;q‚\        V4      &   Vw  r©VP                  V
4      '       d   K«  \        W“4      u # 	  R# )an  Resolve a tool-result dict's uid from the nearest preceding assistant dict in ``messages`` that
named its ``tool_call_id`` (the cross-flush case: the assistant row landed in an earlier batch).
``owners`` memoizes each assistant's (named variants, uid index) across one flush's results, so K
parallel results of one assistant cost O(K) variant work instead of O(K^2).r¾   NrÀ   ÚroleÚuserr®   r¶   )r(   r'   rP   r¦   rÁ   ÚsetÚranger9   Úidr¼   rJ   rÂ   )r   rÄ   rÆ   r¾   rÁ   Úresult_variantsÚprior_indexÚpriorÚentryr¬   r¹   s   &&&        r"   Útool_call_uid_from_historyrÑ     sö   € ð
 Õ'×+Ñ+¨NÓ;€LÜ�l¤C×(Ò(·ÙÝBäÑ1°,Ó?Ó@€OÜ˜Z¨!�^¨R°Ö4ˆØÕ%ˆÜ˜%¤×&Ò&ÙØ�9‰9�VÓ Ô&ÚØ�9‰9�VÓ Ô+ÙØ—Z‘Z¤ 5£	Ó*Ð*ˆEÒ3ØˆEÜ)=¸eÓ)KÈUÐ(SÐSˆEœ2˜e›9Ñ%Ø‰ˆØ×%Ñ% e×,Ò,Ùä$ UÓ9Ò9ñ 5ñ  r$   Ú_Message)ÚboundNc               ó$   € V ^8„  d   QhRRRRRR/# )r   r2   rÒ   r   úOptional[float]r   r    )r!   s   "r"   r#   r#   .  s(   € ÷ ñ Øðð ðð ñ	r$   c               óR   € V P                  R4      f   Vf   \        4       MTV R&   V # )zØAttach a creation timestamp without replacing source-provided time.

Gateway adapters can supply the platform event time; all other callers use
the local wall clock. Returns the same mapping for use at append sites.
r   )r(   Ú	wall_time)r2   r   s   &$r"   Ústamp_message_timestamprØ   .  s+   € ð ‡{�{�;ÓÒ'Ø.7Ò.?œyœ{ÀYˆ�ÑØ€Nr$   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r   z	list[Any]r2   rÒ   r   rÕ   r   r    )r!   s   "r"   r#   r#   =  s0   € ÷ ñ Øðàðð ð	ð
 ñr$   c               ó<   € V P                  \        WR7      4       V# )z-Stamp and append one live transcript message.)r   )ÚappendrØ   )r   r2   r   s   &&$r"   Úappend_messagerÜ   =  s   € ð ‡O�OÔ+¨GÔIÔJØ€Nr$   )<Ú__doc__Ú
__future__r   Úcollectionsr   r   r×   Úuuidr   Útypingr   r   r   r	   r
   r   Ú&agent.conversation_compression_archiver   r   r   ÚDB_ROW_SNAPSHOTÚCANONICAL_ROWr/   ÚREPAIR_BOOKKEEPING_FIELDSÚMERGED_TURN_PREFIXra   rŒ   rƒ   r„   rI   r)   r0   r;   r>   ÚUNPRICED_REPLAY_FIELDSrN   rS   r]   rd   rg   rl   rm   rr   rv   rP   r8   r9   r{   r~   r†   r“   r›   r˜   rª   r¼   rÂ   rÑ   rÒ   rØ   rÜ   r    r$   r"   Ú<module>rè      s²  ðÙ Bå "å Ý "Ý ß H× Hç rÑ rð %€Ø €Ù% ¸Ð&FÓGÐ ð +Ð ð
 €ð 1Ð ð
 #€Ø €Ù"+ð �.Ð"4°iÐAYØ˜Ð&;¸^È]àÐ.Ð0DðFó	#ð õ#Ð ð €õiõ
qõ5ñ #Ð$?ÐATÐVeØ$6Ð8HÐJbÐdlð$nó oÐ õVõõ
rõ
9õ
ð  CÐ õtõ
õ0ð
 & sÐ+Ð.CÀTÐ-JÈ^Ð]aÐLbÐerÐtwÐdxÐyÐ õ#ðÈe÷ ð3Ø]b÷3õ2õ?õõõ:
õñ: �: ^°C¸°HÕ%=Ô>€ðð "&÷ðð "&÷	ñ r$   