+
    „WÝj[  ã                  óR   € R t ^ RIHt ^ RIt^ RIHt ^ RIHt RtRt	 ! R R4      t
R# )	a9  Results that arrive between turns, recorded once as user rows: a detached API delegation's delivery and
an unviewed local completion's note (#134889 LC-7). Split out of ``hermes_state_messages`` and bound onto
SessionDB through ``SessionMessagesMixin``; built on its _message_row_params/_execute_write primitives.)ÚannotationsN)ÚAny)Ústamp_message_uida  WITH RECURSIVE lineage(id) AS (SELECT ? UNION
    SELECT s.parent_session_id FROM sessions s JOIN lineage l ON s.id = l.id
    JOIN sessions p ON p.id = s.parent_session_id WHERE p.end_reason = 'compression'
) SELECT m.id FROM messages m JOIN lineage l ON m.session_id = l.id WHERE zÁm.display_kind IN ('async_delegation_complete', 'hidden') AND json_extract(m.display_metadata, '$.delegation_id') = ? AND coalesce(json_extract(m.display_metadata, '$.delivery_notice'), '') = ?c                  ó>   € ] tR t^tRtR R ltR R ltR R ltRtR	# )
ÚSessionDetachedResultsMixinzADetached API delegation deliveries and unviewed completion notes.c               ó(   € V ^8„  d   QhRRRRRRRR/# )é   Ú
session_idÚstrÚcontentÚmetadataúdict[str, Any]ÚreturnÚint© )Úformats   "ÚQC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_state_detached_results.pyÚ__annotate__Ú(SessionDetachedResultsMixin.__annotate__   s0   € ÷ bñ b°Sð bÀ3ð bÐR`ð bÐehñ bó    c                óÒ   € VP                  R4      pV'       g   \        R4      hVP                  R4      '       d   RMRpV P                  WWS\        WCP                  RR4      34      # )z^Record a detached API result once, keyed by the event's unit id (not its text or active flag).Údelegation_idz3Delegation delivery requires a stable delegation_idÚpresentation_suppressedÚhiddenÚasync_delegation_completeÚdelivery_noticeÚ )ÚgetÚ
ValueErrorÚ_append_detached_resultÚ_DELEGATION_DELIVERY_MATCH)Úselfr	   r   r   r   Úkinds   &&&&  r   Úappend_delegation_deliveryÚ6SessionDetachedResultsMixin.append_delegation_delivery   se   € à Ÿ™ _Ó5ˆßÜÐRÓSÐSØ#Ÿ<™<Ð(A×BÒB‰xÐHcˆØ×+Ñ+¨JÀÔQkØ-:¿L¹LÐIZÐ\^Ó<_Ð,`óbð 	br   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r   r	   r
   Úadmission_idr   Údisplay_kindr   r   r   r   r   )r   s   "r   r   r   !   sB   € ÷ _ñ _°ð _ÀCð _ÐRUð _Ðehð _Ø)7ð_Ø<?ñ_r   c                ó:   € V P                  WV/ VCRV/CRV34      # )zgRecord an unviewed completion's note once, keyed by its admission (stored as ``completion_admission``).Úcompletion_admissionz>json_extract(m.display_metadata, '$.completion_admission') = ?)r   )r!   r	   r&   r   r'   r   s   &&&&&&r   Úappend_completion_noteÚ2SessionDetachedResultsMixin.append_completion_note!   s6   € ð ×+Ñ+Ø Ð/a°(Ð/aÐ<RÐT`Ñ/aØLÈ|Èoó_ð 	_r   c               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r   r	   r
   r   r'   r   r   Ú	match_sqlÚparamsÚtupler   r   r   )r   s   "r   r   r   (   sK   € ÷ Vñ V°#ð VÀð VÐSVð VÐbpð VØ+.ðVØ8=ðVØBEñVr   c           	     óä   a aaaa	a
€ ^ RI Ho	 RVRVRV/p\        V4       S P                  SRVR\        P                  ! 4       RR7      o
V	VVV
V V3R	 lpS P                  VS P                  R
7      # )a=  Record a result that arrived between turns as a user row once, including replay after rotation: a row
``match_sql`` (a condition on ``m``) finds in the compression lineage is returned instead. Check and insert
share the writer transaction, so independent gateway processes cannot duplicate it; a live turn refuses it.)Ú_INSERT_MESSAGE_SQLr   r'   Údisplay_metadataÚuserNT)Úkeep_reasoningc                ó  <€ V P                  \        S,           R ,           S.SO54      P                  4       pVe
   V^ ,          # SP                  V SRRR7       V P                  SS4      P                  pSP                  V S^^ RR7       V# )z LIMIT 1NT)Úreject_active_turn_lease)Úunit)ÚexecuteÚ_LINEAGE_MATCH_SQLÚfetchoneÚ_check_transcript_write_guardsÚ	lastrowidÚ_bump_session_counters)	ÚconnÚexistingÚmsg_idr1   r-   r.   Úrowr!   r	   s	   &  €€€€€€r   Ú_doÚ@SessionDetachedResultsMixin._append_detached_result.<locals>._do2   sŽ   ø€ Ø—|‘|Ô$6¸Õ$BÀZÕ$OÐR\ÐQfÐ_eÑQfÓg×pÑpÓrˆHØÒ#Ø •{Ð"Ø×/Ñ/°°jÀ$ÐaeÐ/ÔfØ—\‘\Ð"5°sÓ;×EÑEˆFØ×'Ñ'¨¨j¸!¸QÀTÐ'ÔJØˆMr   )Ú
patience_s)Úhermes_state_messagesr1   r   Ú_message_row_paramsÚtimeÚ_execute_writeÚ_TRANSCRIPT_WRITE_PATIENCE_S)r!   r	   r   r'   r   r-   r.   ÚmsgrB   r1   rA   s   ff&&&ff  @@r   r   Ú3SessionDetachedResultsMixin._append_detached_result(   sp   ý€ õ
 	>Ø˜' >°<ÐASÐU]Ð^ˆÜ˜#ÔØ×&Ñ& z°6¸3ÀÄdÇiÂiÃkÐbfÐ&Ógˆ÷	ò 	ð ×"Ñ" 3°4×3TÑ3TÐ"ÓUÐUr   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r#   r*   r   Ú__static_attributes__r   r   r   r   r      s   † ÙKõbõ_÷Vñ Vr   r   )rP   Ú
__future__r   rG   Útypingr   Úagent.message_metadatar   r9   r    r   r   r   r   Ú<module>rU      s7   ðñkõ #ã Ý å 4ðNÐ ðCÐ ÷&Vó &Vr   