+
    iHàjI  ã            
      ó´  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ]P                  ! ]4      tRtRtRtRt]! 0 Ram4      t]! R	R
04      t]! 0 Rbm4      t]! 0 Rcm4      tRRRRR
R
RRRR/t]! 0 Rdm4      t]! 0 Rem4      t]! 0 Rfm4      t]! 0 Rgm4      t]! R04      t]! 0 Rhm4      t]! 0 Rim4      t]! RR04      tRRRRRRRR/t Rjt!/ RRbRRbRRbRRbRRbRRbR,RbR-RbR R bR!R!bR"R"bR.R#bR$R$bR%R%bR&R&bR'R'bR(R(bR)R)R*R*/Ct"]PF                  ! 4       t$R/s%]PL                  R0 R1 l4       t']PL                  R2 R3 l4       t(RkR4 R5 llt)R6 R7 lt*R8 R9 lt+R: R; lt,R< R= lt-R> R? lt.R@ RA lt/R+R/RB RC llt0RD RE lt1RF RG lt2R+R/RH RI llt3RJRK/RL RM llt4RN RO lt5RPRRQRRRR/RS RT llt6RU RV lt7RW RX lt8RY RZ lt9RPR/R[ R\ llt:R] R^ lt;R_ R` lt<R# )laÉ  Content-free ``hermes.compaction`` v1 records for every history rewrite, and their fan-out.

One record per ``compress_context`` attempt (built from the attempt telemetry seam), per
micro-compaction pass, per committed proactive tool-result prune, and per Codex-native thread
compaction Hermes observes. A persistence-detached fork (background review) shares the live session id
but rewrites only its own throwaway transcript, so it publishes nothing. The payload is flat because OpenTelemetry exporters flatten only top-level
keys; every categorical field except the free-form ``summarizer_provider`` / ``summarizer_model`` identifiers
comes from a closed set with an ``other`` fallback; no field carries message, summary, focus-topic, error or
path text. Publishing never raises into compaction. A committed record also fires the ``post_compaction`` plugin
hook, so plugins learn about every compaction the model will see without inferring it from history shrinkage.
)ÚannotationsN)ÚAny)Úestimate_messages_tokens_roughzhermes.compactionÚ1Ú
compactionzcompaction.attemptÚhistoryÚproviderÚmanualÚoverflowÚunknownÚotherÚ	committedÚskippedÚin_place_committedÚrotated_committedÚestimate_roughÚstale_generationÚwatermark_unavailableÚabsorbedÚdefragÚtokens_beforeÚtokens_afterÚtokens_reclaimedÚmessages_beforeÚmessages_afterÚitems_droppedÚcontext_limitÚthreshold_tokensÚprotected_head_tokensÚmiddle_window_tokensÚprotected_tail_tokensÚduration_msÚsummary_generation_msÚaux_call_duration_msÚqueue_wait_msÚ	commit_msÚtool_results_prunedÚreasoning_items_prunedÚsummary_input_omitted_charsÚcompression_countÚmain_context_limitÚeffective_thresholdÚtotal_duration_msFc               ó   € V ^8„  d   QhRR/# ©é   Úreturnúfrozenset[str]© )Úformats   "Ú</home/ubuntu/.hermes/hermes-agent/agent/compaction_events.pyÚ__annotate__r5   a   s   € ÷ @ñ @˜.ñ @ó    c                 ó(   € ^ RI Hp  V \        ,          # )é    ©ÚCOMPRESSION_FAILURE_CLASSES)Ú0hermes_cli.observability.shared_metrics_contractr:   Ú_EXTRA_FAILURE_CLASSESr9   s    r4   Ú_failure_classesr=   `   s   € å\à&Ô)?Õ?Ð?r6   c               ó   € V ^8„  d   QhRR/# r.   r2   )r3   s   "r4   r5   r5   h   s   € ÷ $ñ $�~ñ $r6   c                 ó   € ^ RI Hp  V # )r8   ©ÚCOMPRESSION_SKIP_CLASSES)r;   rA   r@   s    r4   Ú_skip_classesrB   g   s   € åYà#Ð#r6   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r/   Úvaluer   Úallowedr1   Údefaultú
str | Noner0   r2   )r3   s   "r4   r5   r5   n   s)   € ÷ 2ñ 2�3ð 2 ð 2¸*ð 2ÐS]ñ 2r6   c                óV   € \        V \        4      '       d	   V '       g   R # W9   d   V # T# ©N)Ú
isinstanceÚstr)rD   rE   rF   s   &&&r4   Ú_closedrL   n   s$   € Ü�eœS×!Ò!¯ÙØÔ$ˆ5Ð1¨'Ð1r6   c               ó    € V ^8„  d   QhRRRR/# )r/   rD   r   r0   ú
int | Noner2   )r3   s   "r4   r5   r5   t   s   € ÷ Uñ U�ð U˜
ñ Ur6   c                ób   € \        V \        4      '       d   \        V \        4      '       g   V # R # rI   )rJ   ÚintÚbool©rD   s   &r4   Ú_intrS   t   s&   € Ü˜u¤c×*Ò*´:¸eÄT×3JÒ3Jˆ5ÐTÐPTÐTr6   c               ó    € V ^8„  d   QhRRRR/# )r/   rD   r   r0   rK   r2   )r3   s   "r4   r5   r5   x   s   € ÷ =ñ =˜ð = ñ =r6   c                óÈ   € \        V \        4      '       d	   V '       g   R# V P                  R4      '       d   V P                  R^4      ^ ,          p V \	        4       9   d   V # R# )z˜Closed failure class: ``exception:<Type>`` / ``rollback:<Type>`` keep only the prefix (the type name
may be a plugin's); a missing class reads ``none``.ÚnoneÚ:r   )z
exception:z	rollback:)rJ   rK   Ú
startswithÚsplitr=   rR   s   &r4   Úfailure_classrZ   x   sS   € ô �eœS×!Ò!¯ÙØ×ÑÐ3×4Ò4Ø—‘˜C Ó# AÕ&ˆØÔ-Ó/Ô/ˆ5Ð<°WÐ<r6   c               ó    € V ^8„  d   QhRRRR/# )r/   Úpayloadúdict[str, Any]r0   rK   r2   )r3   s   "r4   r5   r5   ‚   s   € ÷ :ñ :˜ð :¨3ñ :r6   c                óŠ   € V P                  R4      R8H  ;'       d    V P                  R4      R9   pV'       d   \        # \        # )zb``compaction`` only for a committed history or provider rewrite; ``compaction.attempt`` otherwise.Úoutcomer   Úscope>   r   r   )ÚgetÚCOMPACTION_MARKÚATTEMPT_MARK)r\   r   s   & r4   Ú
event_namerd   ‚   s9   € à—‘˜IÓ&¨+Ñ5×iÐi¸'¿+¹+ÀgÓ:NÐRiÑ:i€Iß'Œ?Ð9¬\Ð9r6   c               ó    € V ^8„  d   QhRRRR/# )r/   Úvaluesr   r0   r]   r2   )r3   s   "r4   r5   r5   ˆ   s   € ÷ ñ �sð ˜~ñ r6   c                 ó4  € \         P                  \        4      pVP                  V R R7       \	        VR,          \
        4      VR&   \	        VR,          \        4      VR&   \	        VR,          \        4      ;'       g    RVR&   \	        VR,          \        4      ;'       g    RVR&   \	        VR,          \        R	4      ;'       g    \        P                  VR,          R
4      VR&   \	        VR,          \        4      ;'       g    RVR&   \	        VR,          \        4      VR&   VR,          ;'       g     \        P                  ! 4       P                   VR&   VR,          ;'       g    RVR&   VR,          f   VR,          R8X  d   VR,          R8H  VR&   V# )Úhermes)ÚharnessÚkindr`   ÚmethodrV   Útriggerr   Útrigger_classNÚautor_   r   Útoken_count_methodÚ
attempt_idÚ
session_idÚ Úcache_breakr   r   )ÚdictÚfromkeysÚ_FIELDSÚupdaterL   Ú_KINDSÚ_SCOPESÚ_METHODSÚ	_TRIGGERSÚ_TRIGGER_CLASS_VALUESÚ_TRIGGER_CLASSESra   Ú	_OUTCOMESÚ_TOKEN_COUNT_METHODSÚuuidÚuuid4Úhex)rf   r\   s   , r4   Ú_payloadrƒ   ˆ   sc  € Ü�m‰mœGÓ$€GØ‡N�N�6 8€NÔ,Ü˜g f�o¬vÓ6€GˆF�OÜ˜w wÕ/´Ó9€GˆGÑÜ ¨Õ 1´8Ó<×FÐFÀ€GˆHÑÜ  ¨Õ!3´YÓ?×LÐLÀ9€GˆIÑä�˜Õ(Ô*?ÀÓF×zÐzÔJZ×J^ÑJ^Ð_fÐgpÕ_qÐsyÓJzð ˆOÑô ! ¨Õ!3´YÓ?×JÐJÀ7€GˆIÑÜ$+¨GÐ4HÕ,IÔK_Ó$`€GÐ Ñ!Ø# LÕ1×EÐE´T·Z²Z³\×5EÑ5E€GˆLÑØ# LÕ1×7Ð7°R€GˆLÑØˆ}ÕÒ%¨'°'Õ*:¸iÔ*GØ!(¨Õ!3°{Ñ!Bˆ�ÑØ€Nr6   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r/   Úcommit_statusr   ÚfailurerK   Úhistory_rewrittenr0   r2   )r3   s   "r4   r5   r5   ›   s/   € ÷ 	Bñ 	B Cð 	B°#ð 	BÈ#ð 	BÐRUñ 	Br6   c                ó~   € VR J d   R# V R8w  d   V \         9   d   V # R# V\        4       9   d   R# V\        9   d   R# R# )Tr   Úabortedr   r   Úfailed)r~   rB   Ú_ABORTED_CLASSES)r…   r†   r‡   s   &&&r4   Ú_attempt_outcomerŒ   ›   sI   € ð ˜DÓ ÙØ˜	Ô!Ø -´Ô :ˆ}ÐGÀÐGØ”-“/Ô!ÙØÔ#3Ô3ˆ9ÐA¸ÐAr6   c               ó    € V ^8„  d   QhRRRR/# )r/   Útrigger_sourcer   r0   ztuple[Any, str | None]r2   )r3   s   "r4   r5   r5   §   s   € ÷ -ñ - Sð -Ð-Cñ -r6   c                ó0   € V R8X  d   R# T ;'       g    RR3# )z�``(trigger, trigger_class)``. ``auto`` is what an unlabelled automatic caller records: the reason is
unknown, but the attempt is still known to be automatic.rn   r   N)r   rn   r2   )rŽ   s   &r4   Ú_attempt_triggerr�   §   s%   € ð ˜ÔØ Ð Ø×&Ð&˜Y¨Ð,Ð,r6   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   Úrecordr]   r)   r   r0   r2   )r3   s   "r4   r5   r5   ¯   s"   € ÷ ñ ˜Nð À#ð ÐQ_ñ r6   c               ó&  € V P                  R4      R8H  p\        V P                  R4      4      p\        V P                  R4      \        4      p\	        V P                  R4      W0P                  R4      4      p\        V P                  R4      4      w  rg\        P                  4        UU	u/ uF   w  r‰V	\        V P                  V4      4      bK"  	  p
pp	T
P                  V'       d   RMR	V'       d   R
MRRV P                  R4      Yg\        V P                  R4      \        4      TTV P                  R4      V P                  R4      V P                  R4      V P                  R4      ;'       g    RV P                  R4      ;'       g    R\        V4      TV\        9   d   VR8H  MRV\        9   d   VR8H  MR\        V P                  R4      \        4      '       d   V P                  R4      MRR7       V'       d   RV
R&   \        R/ V
B # u up	pi )zRMap one attempt telemetry record (the attempt log line's dict) onto the v1 schema.ÚrouteÚcodex_app_serverrZ   Úsplit_statusr…   r‡   rŽ   Úprovider_nativeÚ	summarizer   r   Trk   Úoverflow_reasonrp   rq   ro   Úaux_providerNÚ	aux_modelr   r   Úhas_focus_topic)rj   r`   Úofficialrk   rl   rm   r™   r_   rZ   rp   rq   ro   Úsummarizer_providerÚsummarizer_modelr)   r–   Úin_placeÚsession_rotatedrœ   rs   r2   )ra   rZ   rL   Ú_SPLIT_STATUSESrŒ   r�   Ú_ATTEMPT_INTSÚitemsrS   rw   Ú_OVERFLOW_REASONSÚ_COMMIT_MODESrJ   rQ   rƒ   )r’   r)   Úcodexr†   r–   r_   rl   rm   ÚsrcÚkeyrf   s   &$         r4   Úattempt_payloadrª   ¯   s¾  € à�J‰J�wÓÐ#5Ñ5€EÜ˜FŸJ™J Ó7Ó8€GÜ˜6Ÿ:™: nÓ5´ÓG€LÜ˜vŸz™z¨/Ó:¸GÇZÁZÐPcÓEdÓe€GÜ-¨f¯j©jÐ9IÓ.JÓKÑ€GÜIV×I\ÑI\ÔI^Ô_ÑI^¹X¸S˜c¤4¨¯
©
°3«Ó#8Ò8ÑI^€FÑ_Ø
‡M�Mß"'Ñ¨[ÏeÁ
ÐYbÐmqØ�z‰z˜(Ó#¨WÜ §
¡
Ð+<Ó =Ô?PÓQÐ[bØØ—:‘:˜lÓ+¸¿
¹
À<Ó8PØ!Ÿ:™:Ð&:Ó;Ø"ŸJ™J ~Ó6×>Ð>¸$ÐQW×Q[ÑQ[Ð\gÓQh×QpÐQpÐlpÜÐ0Ó1Àà9EÌÔ9V�Ð!5Ò5Ð\`Ø?KÌ}Ô?\˜Ð(;Ò;ÐbfÜ9CÀFÇJÁJÐO`ÓDaÔcg×9hÒ9h˜Ÿ
™
Ð#4Ô5Ðnrð ô ÷ Ø $ˆˆ}ÑÜÑ�fÑÐùó# `s   Â+&Hc               ó    € V ^8„  d   QhRRRR/# )r/   r’   r]   r0   r2   )r3   s   "r4   r5   r5   Ê   s   € ÷ ñ ˜.ð ¨^ñ r6   c           
     óä  € \         P                  V P                  R4      R4      p\        V P                  R4      4      \        V P                  R4      4      r2\        R/ RRbRRbR	R
bRRbRVbRVR8X  d   RMRbRVR8X  d   RM\	        V P                  R4      4      bRV P                  R4      bRVbRVbRVe   Ve	   W#,
          MRbRRbR\        V P                  R4      4      bR\        V P                  R4      4      bR\        V P                  R4      4      bR\        V P                  R4      4      bR\        V P                  R4      4      bRV P                  R4      ;'       g    Rb # )z=Map one micro-compaction telemetry record onto the v1 schema.r_   rŠ   r   r   rj   Úmicro_summarizer`   r   r�   Frl   Úbetween_turnsrk   r   Úllm_summaryrV   rZ   rq   r   Nro   r   r   r   r!   r   r   rŸ   r›   r2   )Ú_MICRO_OUTCOMESra   rS   rƒ   rZ   )r’   r_   ÚbeforeÚafters   &   r4   Úmicro_payloadr³   Ê   s™  € ä×!Ñ! &§*¡*¨YÓ"7¸ÓB€GÜ˜Ÿ™ OÓ4Ó5´t¸F¿J¹JÀ~Ó<VÓ7WˆEÜò 
Ùð
Ù&/ð
Ù:?ð
ÙIXð
Ùbið
à '¨;Ô 6‰}¸Føð
ð !(¨;Ô 6‘f¼MÈ&Ï*É*ÐU^ÓJ_Ó<`øð
ð —:‘:˜lÔ+ð	
ñ <Bð	
ñ QVð	
ð
 ,2Ò+=À%ÒBS˜žÐY]øð
ñ ,ð
ô >BÀ&Ç*Á*ÐM^ÓB_Ô=`ð
ô ˜FŸJ™JÐ'7Ó8Ô9ð
ô HLÈFÏJÉJÐWdÓLeÔGfð
ô ˜fŸj™jÐ);Ó<Ô=ð
ô NRÐRX×R\ÑR\Ð]lÓRmÔMnð
ð  Ÿ™ KÓ0×8Ð8°Døð
ð 
r6   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r/   rq   rK   r   rP   r   Úmessagesr&   r0   r]   r2   )r3   s   "r4   r5   r5   Û   s<   € ÷ 	ñ 	Øð	Ø'*ð	Ø:=ð	ØILð	Øcfð	àñ	r6   c                ó>   € \        RRRRRRRWW!V,
          RW3VR	7      # )
zXA committed proactive tool-result prune: deterministic, no LLM, message count unchanged.Úprune_tool_resultsr   FÚproactive_pruner   Údeterministic_prunerV   r   )rj   r`   r�   rl   r_   rk   rZ   rq   r   r   r   ro   r   r   r&   )rƒ   ©rq   r   r   rµ   r&   s   $$$$$r4   Úprune_payloadr»   Û   s6   € ô Ø!¨¸UÐL]ÐgrØ$°FÀzØ!ÀLÕ4PÐeuØ ÐObô	ð r6   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   rq   rK   r)   r   r0   r]   r2   )r3   s   "r4   r5   r5   ç   s"   € ÷ ñ ¨3ð À3ð ÐR`ñ r6   c                ó<   € \        RRRRRRRV \        V4      R7	      # )zIA compaction the provider ran on its own thread and Hermes only observed.r—   r   Fr   rV   )	rj   r`   r�   rl   r_   rk   rZ   rq   r)   )rƒ   rS   )rq   r)   s   $$r4   Úprovider_native_payloadr¾   ç   s+   € äØ j¸5È*Ð^iØ¨¸JÔZ^Ð_pÓZqôð r6   Úold_session_idrr   c               ó8   € V ^8„  d   QhRRRRRRRRRRR	RR
RRR/# )r/   rq   rK   r¿   rj   rG   ÚreasonÚbefore_tokensrN   Úafter_tokensÚmessages_removedr0   ÚNoner2   )r3   s   "r4   r5   r5   ï   sN   € ÷ 
ñ 
Øð
Ø(+ð
Ø8Bð
ØLVð
àð
à-7ð
àKUð
ð 
ñ
r6   c                óP   € ^ RI HpHp V! R4      '       d   V! RWW#WEVR7       R# R# )zcThe ``post_compaction`` plugin hook, gated on a listener. Callbacks are isolated by the dispatcher.)Úhas_hookÚinvoke_hookÚpost_compaction©rq   r¿   rj   rÁ   rÂ   rÃ   rÄ   N)Úhermes_cli.lifecyclerÇ   rÈ   )	rq   r¿   rj   rÁ   rÂ   rÃ   rÄ   rÇ   rÈ   s	   $$$$$$$  r4   Úfire_post_compactionrÌ   ï   s.   € ÷
 ;áÐ!×"Ò"ÙØ¨*ÐZ^Ø'ÐUe÷	
ñ #r6   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   r\   r]   rq   rK   r0   rÅ   r2   )r3   s   "r4   r5   r5   ý   s!   € ÷ ñ �~ð °3ð ¸4ñ r6   c           
     óÐ   € V R ,          V R,          r2\        YR,          V8w  d
   V R,          MRV R,          V R,          V R,          V R,          Ve   Ve	   W#,
          MRR	7       R# )
r   r   rq   rr   rj   rl   r   r   NrÊ   )rÌ   )r\   rq   r±   r²   s   &&  r4   Ú	_fire_forrÏ   ý   sd   € ØÐ-Õ.°Ð8HÕ0IˆEÜØÈ|ÕG\Ð`jÔGj¨g°lÖ.CÐprØ�V�_ W¨YÕ%7ÀwÈÕG_Ø˜^Õ,Ø+1Ò+=À%ÒBS˜žÐY]÷	r6   Úturn_session_idÚrequire_target_session_idÚlive_session_idc               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )r/   Úbuildr   ÚargsrÐ   rG   rÑ   rÒ   Úkwargsr0   rÅ   r2   )r3   s   "r4   r5   r5     sO   € ÷  rñ  rØð rØð rØ-7ð rØ[eð ràð rà25ð rð 
ñ rr6   c               óL  €  RpVe   ^ RI Hp V! W!R7      p^ RIHp V! R4      p	V'       g   V	'       g   R# V ! V/ VB p
\	        V
4      pV	'       d(   V\
        8X  d   \        Y£;'       g
    V
R,          4       V'       g   R# ^ RI Hp V! V
R,          WºVR7       R#   \         d|    \        ;_uu_ 4        \        '       * Rups
RRR4       M  + '       g   i     M; i\        P                  X'       d   \        P                  M\        P                  R	RR
7        R# i ; i)aY  Build one record, fire ``post_compaction`` for a committed one, and fan it out to the built-in Relay
integration. ``live_session_id`` is the session holding the compacted transcript now (a rotating commit
moved it off the record's session). Never raises into compaction: the first failure logs at WARNING with
its traceback, later ones at DEBUG.TN)Úcompaction_target_available©rÐ   )rÇ   rÉ   rq   )Úemit_compaction_markzcompaction event publish failed)Úexc_info)Úagent.relay_compactionrØ   rË   rÇ   rd   rb   rÏ   rÚ   Ú	ExceptionÚ_warned_lockÚ_warnedÚloggerÚlogÚloggingÚWARNINGÚDEBUG)rÔ   rÐ   rÑ   rÒ   rÕ   rÖ   ÚrelayrØ   rÇ   Úhookr\   ÚnamerÚ   Úfirsts   &$$$*,        r4   Ú_publishré     sÙ   € ðrØˆØ$Ò0ÝJá/Ð0IÔkˆEÝ1áÐ)Ó*ˆßŸÙÙ˜Ð( Ñ(ˆÜ˜'Ó"ˆß�DœOÔ+Ü�g×GÐG°'¸,Õ2GÔHßÙÝ?á˜W \Õ2°DÐSb×cøÜô rßŽ\Ü!(œ[¨$ˆNˆE�7÷ �\�\ˆ\úä�
‰
§e”7—?’?´·±Ð@aÐlpˆ
×qðrúsE   ‚*B ­B ·3B Á+B ÂB ÂD#Â6CÃ	D#ÃCÃD#Ã8'D#Ä"D#c               ó    € V ^8„  d   QhRRRR/# )r/   Úagentr   r0   rQ   r2   )r3   s   "r4   r5   r5   *  s   € ÷ :ñ :˜#ð : $ñ :r6   c                ó&   € \        V RR4      '       * # )z[A persistence-detached fork (background review) rewrites only its own throwaway transcript.Ú_persist_disabledF)Úgetattr©rë   s   &r4   Ú_publishes_forrð   *  s   € ä�uÐ1°5Ó9Ô9Ð9r6   c               ó    € V ^8„  d   QhRRRR/# )r/   rë   r   r0   rG   r2   )r3   s   "r4   r5   r5   /  s   € ÷ ?ñ ?˜Cð ? Jñ ?r6   c                ó`   € \        V RR4      p\        V\        4      '       d   V'       d   V# R# )z‡The session the agent's current turn started in; a rotating commit moves ``agent.session_id`` off it
mid-turn. ``None`` outside a turn.Ú_inflight_turn_session_idN)rî   rJ   rK   )rë   rD   s   & r4   Ú_turn_session_idrô   /  s,   € ô �EÐ6¸Ó=€EÜ˜u¤c×*Ò*¯uˆ5Ð>¸$Ð>r6   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   rë   r   r’   r]   r0   rÅ   r2   )r3   s   "r4   r5   r5   6  s&   € ÷ hñ h˜3ð h¨ð h¸4ñ hr6   c           	     ó~   a a€ \        S 4      '       d*   \        V V3R l\        S 4      \        S RR4      R7       R# R# )zXPublish one ``compress_context`` attempt record (the attempt telemetry seam calls this).c            
     óJ   <€ \        S\        \        S R R4      RR4      R7      # )Úcontext_compressorNr)   )r)   )rª   rî   ©rë   r’   s   €€r4   Ú<lambda>Ú!publish_attempt.<locals>.<lambda>9  s%   ø€ œØ¤g¬g°eÐ=QÐSWÓ.XÐZmÐosÓ&tõ
r6   rq   N)rÐ   rÒ   )rð   ré   rô   rî   rù   s   ffr4   Úpublish_attemptrü   6  s6   ù€ ä�e×ÒÜõ 
ä+¨EÓ2ÄGÈEÐS_ÐaeÓDf÷	hñ r6   c               ó$   € V ^8„  d   QhRRRRRR/# )r/   r’   r]   rÐ   rG   r0   rÅ   r2   )r3   s   "r4   r5   r5   >  s'   € ÷ Eñ E˜.ð E¸jð EÐTXñ Er6   c               ó(   € \        \        WR7       R# )zÎPublish one micro-compaction pass record. The finalizer never runs micro-compaction for a fork, and passes
the session its turn started in (``_turn_session_id``) because the pass may run in a rotated child.rÙ   N)ré   r³   )r’   rÐ   s   &$r4   Úpublish_microrÿ   >  s   € ô Œ]˜F×Dr6   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r/   rë   r   rµ   ÚlistÚprunedr&   rP   r0   rÅ   r2   )r3   s   "r4   r5   r5   D  s8   € ÷ 
Rñ 
R˜ð 
R¨ð 
R°dð 
RÐQTð 
RÐY]ñ 
Rr6   c                ó¢   aaaa€ \        V RR4      ;'       g    Ro\        V 4      p\        V 4      '       d   \        VVVV3R lVSR7       R# R# )z�Publish one committed proactive tool-result prune, measured like the attempt record (rough estimate of
the message list the model sees next).rq   Nrr   c                 óZ   <€ \        S\        S 4      \        S4      \        S4      SR 7      # )rº   )r»   r   Úlen)rµ   r  rq   r&   s   €€€€r4   rú   Úpublish_prune.<locals>.<lambda>J  s'   ø€ œØ!Ô1OÐPXÓ1YÜ7¸Ó?Ì#ÈfË+Ø 3õ
r6   )rÐ   rÑ   )rî   rô   rð   ré   )rë   rµ   r  r&   rÐ   rq   s   &fff @r4   Úpublish_pruner  D  sJ   û€ ô ˜ ¨dÓ3×9Ð9°r€JÜ& uÓ-€OÜ�e×ÒÜ÷ 
ð +Àj÷		Rñ r6   c               ó    € V ^8„  d   QhRRRR/# )r/   rë   r   r0   rÅ   r2   )r3   s   "r4   r5   r5   Q  s   € ÷ 
ñ 
 3ð 
¨4ñ 
r6   c                óº   € \        V 4      '       dJ   \        \        \        V RR4      ;'       g    R\        \        V RR4      RR4      \	        V 4      R7       R# R# )zGPublish one provider-native compaction Hermes observed but did not run.rq   Nrr   rø   r)   )rq   r)   rÐ   )rð   ré   r¾   rî   rô   rï   s   &r4   Úpublish_provider_nativer
  Q  sQ   € ä�e×ÒÜÜ#´¸¸|ÈTÓ0R×0XÐ0XÐVXÜ%¤g¨eÐ5IÈ4Ó&PÐReÐgkÓlÜ,¨UÓ3÷	
ñ r6   >   r˜   r­   r—   r·   >   rV   r   r¯   Úaux_fallback_mainr¹   Údeterministic_fallback>   Úidler	   Úpre_apir   r
   r   Ú	post_toolr®   Úgateway_hygiener¸   Úengine_preflightÚturn_start_threshold>   rn   r	   r   r
   r   >   Úcontext_overflowÚlong_context_tierÚpayload_too_large>   rŠ   r‰   Úblockedr   r   >   r‰   Únot_applicabler   Úfailed_not_indexedr   >   Údefrag_failedÚcodex_auto_offÚcodex_no_threadÚempty_transcriptÚexchange_skippedr   Úsummarize_failedÚcodex_auto_nativeÚsummary_model_benchedr   Úsession_ownership_lostÚcodex_compaction_failedÚcooldown_state_unreadableÚsession_ownership_unreadableúblocked:unknownúblocked:cooldownúblocked:ineffectiveúblocked:structural_backoff>   Ú
would_growÚno_progressÚcommit_fence_cancelled)(ri   rj   r`   r�   rk   rl   rm   r™   r_   rZ   rp   rq   r   r   r   ro   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rž   rŸ   r&   r'   r(   r)   r    r¡   r–   rs   rœ   )r   )=Ú__doc__Ú
__future__r   Ú	functoolsrâ   Ú	threadingr€   Útypingr   Úagent.model_metadatar   Ú	getLoggerÚ__name__rà   ÚSCHEMA_NAMEÚSCHEMA_VERSIONrb   rc   Ú	frozensetrx   ry   rz   r{   r}   r|   r¥   r~   r¢   r   r<   r‹   r¦   r°   rv   r£   ÚLockrÞ   rß   Úcacher=   rB   rL   rS   rZ   rd   rƒ   rŒ   r�   rª   r³   r»   r¾   rÌ   rÏ   ré   rð   rô   rü   rÿ   r  r
  r2   r6   r4   Ú<module>r9     s  ðñ
õ #ã Û Û Û Ý å ?à	×	Ò	˜8Ó	$€à!€Ø€ð €Ø#€ñ 
Ò\Ó	]€Ù
�Y 
Ð+Ó
,€Ùò ó €ñ ò ó €	ð ˆh˜
 J°
¸JÈ	ÐS\Ð^eÐgpðÐ ñ "Ò"WÓXÐ áÒ\Ó]Ð ÙÒNÓO€	Ùò ó €ñ !Ð"2Ð!3Ó4Ð ñ #ò $ó Ð ñ ÒTÓUÐ ÙÐ/Ð1DÐEÓF€à�˜X {Ð4FÈ	ÐSjÐluð€ð
€ð	Ø�_ð	Ø&4°nð	ØFXÐZlð	àÐ(ð	à*:Ð<Lð	àN]Ð_nð	ð ˜/ð	ð ,AÐBTð	ð Ð4ð		ð 7MÐNdð		ð
 Ð4ð	ð
 7JÈ=ð	ð Ð4ð	ð 7MÐNdð	ð �_ð	ð '2°;ð	ð AVÐWlð	ð Ð6Ð8UÐWtñ	€ð �~Š~Ó€Ø
€ð ‡�ô@ó ð@ð ‡�ô$ó ð$÷2õUõ=õ:õõ&	Bõ-ðÈ÷ õ6õ"	ðÈ÷ ð
Ø.0÷
õð rØ:>ð rØhlð rà"&÷ rõF:õ
?õhðEÈ4÷ Eõ
R÷
r6   