/ agent / manual_compression_feedback.py
manual_compression_feedback.py
 1  """User-facing summaries for manual compression commands."""
 2  
 3  from __future__ import annotations
 4  
 5  from typing import Any, Sequence
 6  
 7  
 8  def summarize_manual_compression(
 9      before_messages: Sequence[dict[str, Any]],
10      after_messages: Sequence[dict[str, Any]],
11      before_tokens: int,
12      after_tokens: int,
13  ) -> dict[str, Any]:
14      """Return consistent user-facing feedback for manual compression."""
15      before_count = len(before_messages)
16      after_count = len(after_messages)
17      noop = list(after_messages) == list(before_messages)
18  
19      if noop:
20          headline = f"No changes from compression: {before_count} messages"
21          if after_tokens == before_tokens:
22              token_line = (
23                  f"Approx request size: ~{before_tokens:,} tokens (unchanged)"
24              )
25          else:
26              token_line = (
27                  f"Approx request size: ~{before_tokens:,} → "
28                  f"~{after_tokens:,} tokens"
29              )
30      else:
31          headline = f"Compressed: {before_count} → {after_count} messages"
32          token_line = (
33              f"Approx request size: ~{before_tokens:,} → "
34              f"~{after_tokens:,} tokens"
35          )
36  
37      note = None
38      if not noop and after_count < before_count and after_tokens > before_tokens:
39          note = (
40              "Note: fewer messages can still raise this estimate when "
41              "compression rewrites the transcript into denser summaries."
42          )
43  
44      return {
45          "noop": noop,
46          "headline": headline,
47          "token_line": token_line,
48          "note": note,
49      }