
    `gj                    T    d Z ddlmZ ddlmZmZ ddlmZ dd	 	 	 	 	 	 	 	 	 	 	 ddZy)	z6User-facing summaries for manual compression commands.    )annotations)AnySequence)redact_sensitive_textN)compression_statec                  t        |       }t        |      }t        |      t        |       k(  }|duxr t        |dd      du }|duxr t        |dd      du }	|t        |dd      nd}
t        |
t              r|
j                         sd}
|rd| d}n|	r
d	| d
| d}n|rd| d}n	d| d
| d}|r||k(  rd|dd}nd|dd|dd}d}|rd}nS|	rCt        |dd      }t        |t              rt        |t              rt        ||z
  d      }d| d}n|s||k  r||kD  rd}|
r&|s|	r"t        |
j                         d      }| d| }|||	|||dS )z>Return consistent user-facing feedback for manual compression.N_last_compress_abortedFT_last_summary_fallback_used_last_summary_errorzCompression aborted: z messages preservedzCompressed with fallback: u    → z	 messageszNo changes from compression: zCompressed: zApprox request size: ~,z tokens (unchanged)u    → ~z tokensz4Summary generation failed; no messages were removed._last_summary_dropped_countr   zLSummary generation failed; Hermes used limited fallback context and removed z message(s).zrNote: fewer messages can still raise this estimate when compression rewrites the transcript into denser summaries.)forcez	 Reason: )noopabortedfallback_usedheadline
token_linenote)
lenlistgetattr
isinstancestrstripintboolmaxr   )before_messagesafter_messagesbefore_tokensafter_tokensr   before_countafter_countr   r   r   failure_reasonr   r   r   dropped_countsafe_reasons                   T/root/.hermes/venv/lib/python3.12/site-packages/agent/manual_compression_feedback.pysummarize_manual_compressionr(   
   s    'Ln%K4#88D% 	P%'?G4O 
 	% 	U%'DeLPTT  ( 	!#8$? 
 nc*.2F2F2H*<.8KL	(eK=	R 	 
2<.	J!,u[MK--mA->>QR
 %]1$5 6Qw( 	
 DE	<d
 --M41P{ :A>M(/7 	 kL0\M5QI 	
 7m ,N,@,@,B$Oy. &      )r   Sequence[dict[str, Any]]r   r*   r    r   r!   r   r   r   returnzdict[str, Any])	__doc__
__future__r   typingr   r   agent.redactr   r(    r)   r'   <module>r1      sZ    < "   . "P-P,P P 	P P Pr)   