+
    iHàjÖ   ã                  ób   € R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH	t	 R R lt
 ! R R	4      tR# )
zïContent-free per-attempt compression telemetry for ContextCompressor.

Split from ``agent/context_compressor.py`` (file size cap), which imports it at module level; this module
must never import that module at module level (import cycle).
)ÚannotationsN)ÚAny)Úestimate_messages_tokens_rough)Úforget_message_token_memoc               ó    € V ^8„  d   QhRRRR/# )é   Úvaluer   Úreturnú
int | None© )Úformats   "ÚG/home/ubuntu/.hermes/hermes-agent/agent/context_compressor_telemetry.pyÚ__annotate__r      s   € ÷ ñ �Sð ˜Zñ ó    c                óJ   €  \        V 4      #   \        \        3 d     R# i ; i)z2Best-effort integer coercion for telemetry fields.N)ÚintÚ	TypeErrorÚ
ValueError)r   s   &r   Ú	_safe_intr      s(   € ðÜ�5‹zÐøÜ”zÐ"ô Úðús   ‚
 �"¡"c                  ó†   € ] tR t^tRtRRRRRR/R R lltR R	 ltR
RRRRRRR/R R lltR R ltR R lt	R R lt
RtR# )ÚCompressionTelemetryMixinzVPer-attempt telemetry dict: seeded at attempt start, filled by each compression phase.Ú
attempt_idNÚ
session_idÚtrigger_sourcec          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   Úcurrent_tokensr
   r   ú
str | Noner   r   r	   zdict[str, Any]r   )r   s   "r   r   Ú&CompressionTelemetryMixin.__annotate__   s6   € ÷ "ñ "Ø!+ð"Ø9Cð"ØXbð"à"ð"ð 
ñ"r   c               óŒ  € \        V RR4      p\        V\        4      '       d   TM/ pT;'       g    VP                  R4      pT;'       g    VP                  R4      pT;'       g    VP                  R4      p/ RRbRT;'       g     \        P
                  ! 4       P                  bRT;'       g    RbRT;'       g    R	bR
VP                  R
4      bRV P                  ;'       g    RbRV P                  ;'       g    RbR\        V P                  4      bR\        V4      bR\        V P                  4      bRRbRRbRRbR^ bRRbRRbRRb/ RRbRRbRRbRRb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C/ R)RbR*RbR+RbR,RbR-RbR.R/bR0^ bR1RbR2RbR3RbR4RbR5RbR6RbR7RbR8RbR9RbCpV;V n        V n        V# ):z:Initialize content-free per-attempt compression telemetry.Ú_compression_telemetry_seedNr   r   r   ÚeventÚcompression_attemptÚ ÚunknownÚoverflow_reasonÚmain_providerÚ
main_modelÚmain_context_limitÚcurrent_estimated_tokensÚeffective_thresholdÚprotected_head_tokensÚprotected_tail_tokensÚmiddle_window_tokensÚprellm_skip_countÚaux_prompt_tokensÚaux_output_reservationÚaux_providerÚ	aux_modelÚeffective_aux_contextÚ
fit_marginÚchunkingFÚchunk_countÚtotal_duration_msÚaux_call_duration_msÚqueue_wait_msÚprompt_build_msÚtime_to_first_progress_msÚsummary_generation_msÚ	commit_msÚfallback_usedÚcommit_statusÚsplit_statusÚfailure_classÚsummary_input_charsÚsummary_input_sampled_charsÚsummary_input_omitted_charsÚsummary_input_record_countÚ"summary_input_sampled_record_countÚ!summary_input_elided_record_countÚmethodÚnoneÚitems_droppedÚmessages_beforeÚmessages_afterÚtokens_beforeÚtokens_afterÚtokens_reclaimedÚtoken_count_methodÚtool_results_prunedÚreasoning_items_prunedÚhas_focus_topic)ÚgetattrÚ
isinstanceÚdictÚgetÚuuidÚuuid4ÚhexÚproviderÚmodelr   Úcontext_lengthÚthreshold_tokensÚ_active_compression_telemetryÚ_last_compression_telemetry)Úselfr   r   r   r   ÚseedÚ	telemetrys   &$$$$  r   Ú_begin_compression_telemetryÚ6CompressionTelemetryMixin._begin_compression_telemetry   sr  € ô
 �tÐ:¸DÓAˆÜ! $¬×-Ò-‰t°2ˆØ×9Ð9 4§8¡8¨LÓ#9ˆ
Ø×9Ð9 4§8¡8¨LÓ#9ˆ
Ø'×EÐE¨4¯8©8Ð4DÓ+Eˆð%
ØÐ*ð%
Ø,8¸*×:XÐ:XÌÏ
Ê
Ë×HXÑHXð%
à˜*×*Ð*¨ð%
à,<¸n×>YÐ>YÐPYð%
ð ˜tŸx™xÐ(9Ó:ð%
ð ˜TŸ]™]×0Ð0¨bð	%
ð 3?ÀÇ
Á
×@PÐ@PÈbð	%
ð
 !¤)¨D×,?Ñ,?Ó"@ð%
ð '¬	°.Ó(Að%
ð "¤9¨T×-BÑ-BÓ#Cð%
ð F]Ð^bð%
ð $ Tð%
ð ,BÀ4ð%
ð J]Ð^_ð%
ð   ð%
ð (@Àð%
ð HVÐWYñ%
ð \gÐhjð%
ð $ Tð%
ð ,8¸ð%
ð @JÈ5ð%
ð S`Ðabð%
ð   ð%
ð (>¸tð%
ð FUÐVZð%
ð ]nÐosð%
ð (¨ð%
ð 0GÈð%
ð OZÐ[_ð%
ð ˜Uð%
ð %4°Yð%
ð AOÐPYð%
ð \kÐlpð%
ð " 4ò%
ð *GÈð%
ð OlÐmqð%
ð  )¨$ð!%
ð  1UÐVZð!%
ð" 0°ð#%
ð& �fð'%
ð& .¨qð'%
ð& 3DÀTð'%
ð& L\Ð]að'%
ð( ˜Tð)%
ð( $2°4ð)%
ð( :LÈTð)%
ð( ThÐimð)%
ð* " 4ð+%
ð* *BÀ4ð+%
ð* J[Ð\añ+%
ˆ	ð. QZÐYˆÔ*¨TÔ-MØÐr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úhead_messagesúlist[dict[str, Any]]Úmiddle_messagesÚtail_messagesr	   ÚNoner   )r   s   "r   r   r   ?   s4   € ÷ _ñ _Ø 4ð_ØG[ð_à+ð_ð 
ñ_r   c               	ó¤   € \        V R R4      p\        V\        4      '       d-   \        V4      VR&   \        V4      VR&   \        V4      VR&   R# R# )r^   Nr*   r,   r+   )rS   rT   rU   r   )r`   rf   rh   ri   rb   s   &$$$ r   Ú_record_compression_regionsÚ5CompressionTelemetryMixin._record_compression_regions?   sW   € ô ˜DÐ"AÀ4ÓHˆ	Ü�i¤×&Ò&Ü1OÐP]Ó1^ˆIÐ-Ñ.Ü0NÈÓ0_ˆIÐ,Ñ-Ü1OÐP]Ó1^ˆIÐ-Ó.ñ 'r   r0   r1   r2   Úphase_timingsc               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )r   Úprompt_messagesrg   Ú
max_tokensr
   Úduration_msr   r0   r   r1   r2   rn   zdict[str, Any] | Noner	   rj   r   )r   s   "r   r   r   I   s^   € ÷ Xñ XØ"6ðXØDNðXØ]`ðXà ðXà4>ðXð  *ðXð BWðXð 
ñ	Xr   c               	óà  € \        V R R4      p\        V\        4      '       g   R# \        V4      VR&   \	        V4       \        V4      VR&   V'       d   WHR&   V'       d   WXR&   Ve   \        V4      VR&   VR,          e>   VR,          e3   VR,          VR,          ,
          VR,          ;'       g    ^ ,
          VR&   VP                  R4      ;'       g    ^ \        ^ \        V4      4      ,           VR&   R	 Fq  p	\        V\        4      '       d   W—9  d   K!  \        Wy,          4      p
V	R
9   ;'       d    V
RJpV'       d#   VP                  V	4      ;'       g    ^ V
,           MT
W‰&   Ks  	  R# )r^   Nr.   r/   r0   r1   r2   r3   r7   )r8   r9   r:   r;   r<   >   r8   r;   )	rS   rT   rU   r   r   r   rV   Úmaxr   )r`   rp   rq   rr   r0   r1   r2   rn   rb   Úkeyr   Ú
accumulates   &$$$$$$$    r   Ú_record_aux_compression_callÚ6CompressionTelemetryMixin._record_aux_compression_callI   s]  € ô
 ˜DÐ"AÀ4ÓHˆ	Ü˜)¤T×*Ò*ÙÜ)GÈÓ)Xˆ	Ð%Ñ&ä! /Ô2Ü.7¸
Ó.Cˆ	Ð*Ñ+ßØ(4�nÑ%ßØ%.�kÑ"Ø Ò,Ü1:Ð;PÓ1QˆIÐ-Ñ.ØÐ,Õ-Ò9¸iÐH[Õ>\Ò>hØ'0Ð1HÕ'IÈIÐViÕLjÕ'jØ*3Ð4LÕ*M×*RÐ*RÐQRõ(TˆI�lÑ#à-6¯]©]Ð;QÓ-R×-WÐ-WÐVWÔ[^Ð_`ÔbeÐfqÓbrÓ[sÕ,sˆ	Ð(Ñ)ÛzˆCÜ˜m¬T×2Ò2°cÔ6NÙÜ˜mÕ0Ó1ˆEàÐ JÑJ×`Ð`ÈuÐ\`ÐO`ˆJßBL˜iŸm™m¨CÓ0×5Ð5°A¸Ö>ÐRWˆI‹Nó {r   c               ó   € V ^8„  d   QhRR/# )r   r	   Ústrr   )r   s   "r   r   r   g   s   € ÷ ñ  Sñ r   c                óZ   € \        V RR4      '       d   R# \        V RR4      '       d   R# R# )z=How the summary that replaced the middle window was produced.Ú_last_summary_fallback_usedFÚdeterministic_fallbackÚ_last_aux_model_failure_errorNÚaux_fallback_mainÚllm_summary)rS   )r`   s   &r   Ú_compression_methodÚ-CompressionTelemetryMixin._compression_methodg   s+   € ä�4Ð6¸×>Ò>Ù+Ü�4Ð8¸$×?Ò?Ù&Ùr   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r   rJ   r   Ú
compressedrg   rL   rP   rQ   r	   rj   r   )r   s   "r   r   r   o   s>   € ÷ 
ñ 
Ø"ð
Ø0Dð
ØUXð
Øorð
à #ð
ð 
ñ
r   c                ó   € \        V RR4      p\        V\        4      '       g   R# \        V4      pTP	                  V P                  4       \        V R^ 4      ;'       g    ^ V\        V4      VWsV,
          RVVR7
       R# )z´Record what a finished rewrite did. ``tokens_before`` and the after count are rough message-only
estimates (system prompt and tool schemas excluded), so they compare like for like.r^   NÚ_last_summary_dropped_countÚestimate_rough)
rG   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   )rS   rT   rU   r   Úupdater�   Úlen)r`   rJ   r„   rL   rP   rQ   rb   rM   s   &&&&&&  r   Ú_record_compression_effectÚ4CompressionTelemetryMixin._record_compression_effecto   s   € ô ˜DÐ"AÀ4ÓHˆ	Ü˜)¤T×*Ò*ÙÜ5°jÓAˆØ×ÑØ×+Ñ+Ó-¼WÀTÐKhÐjkÓ=l×=qÐ=qÐpqØ+¼CÀ
»OÐ[hØ%ÈÕ8TØ/ÐEXØ#9ð 	ö 	
r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rJ   rg   rK   r	   rj   r   )r   s   "r   r   r   �   s$   € ÷ 
ñ 
Ø3ð
ØEYð
à	ñ
r   c           	     óØ   € \        V RR4      p\        V\        4      '       g   R# \        V4      p\        V4      pVP	                  \        V4      \        V4      WEWE,
          RR7       R# )zZReplace candidate counts with the exact transcript shape that crossed the commit boundary.r^   Nr‡   )rJ   rK   rL   rM   rN   rO   )rS   rT   rU   r   rˆ   r‰   )r`   rJ   rK   rb   rL   rM   s   &&&   r   Ú$_record_committed_compression_effectÚ>CompressionTelemetryMixin._record_committed_compression_effect�   se   € ô ˜DÐ"AÀ4ÓHˆ	Ü˜)¤T×*Ò*ÙÜ6°ÓGˆÜ5°nÓEˆØ×ÑÜ Ó0ÄÀ^ÓATØ'Ø*Õ9ÐN^ð 	ö 	
r   )r^   r_   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rc   rl   rw   r�   rŠ   rŽ   Ú__static_attributes__r   r   r   r   r      sm   † Ù`ð"ØFJð"Øeið"à%)÷"õH_ðXà#'ðXàAEðXð -1ðXð Z^÷Xõ<õ
÷$
ñ 
r   r   )r”   Ú
__future__r   rW   Útypingr   Úagent.model_metadatar   Úagent.model_metadata_token_memor   r   r   r   r   r   Ú<module>rš      s,   ðñõ #ã Ý å ?Ý Eõ÷v
ó v
r   