diff --git a/api/streaming.py b/api/streaming.py index f9dc14eb..f83a6d35 100644 --- a/api/streaming.py +++ b/api/streaming.py @@ -566,8 +566,11 @@ def _is_agent_compression_start_status(kind: str, message: str) -> bool: auto-compression. Positive markers below match the agent emitters in hermes-agent - (``turn_context`` preflight, ``conversation_loop`` pre-API / 413 / too-large, - ``conversation_compression`` compaction status). Explicitly reject skip / + (``conversation_loop`` pre-API / 413 / too-large, + ``conversation_compression`` compaction status). Preflight compression + (``turn_context``) is intentionally excluded — the later authoritative + ``Compacting context`` marker is the signal that compression actually + proceeded. Explicitly reject skip / defer notices so "Skipping preflight compression…" never surfaces as a running compress divider. """ @@ -587,8 +590,7 @@ def _is_agent_compression_start_status(kind: str, message: str) -> bool: if 'compressed' in m and 'compressing' not in m and 'compression attempt' not in m: return False return ( - 'preflight compression:' in m - or 'pre-api compression:' in m + 'pre-api compression:' in m or 'compacting context' in m or 'context too large' in m or '— compressing (' in m diff --git a/tests/test_auto_compression_card.py b/tests/test_auto_compression_card.py index a6bfa8fd..837ff474 100644 --- a/tests/test_auto_compression_card.py +++ b/tests/test_auto_compression_card.py @@ -473,7 +473,13 @@ def test_agent_status_callback_emits_compressing_and_warning_events(): def test_agent_compression_start_status_matches_real_emitters_only(): # Real start notices from hermes-agent emitters - assert _is_agent_compression_start_status( + # Preflight compression is intentionally excluded — the later + # authoritative ``Compacting context`` marker from + # conversation_compression is the signal that compression + # actually proceeded, and the preflight status can fire even + # when compression exits before compaction (e.g. durable + # guard refresh, Codex-Hermes mode with no active thread). + assert not _is_agent_compression_start_status( "lifecycle", "📦 Preflight compression: ~101,000 tokens >= 96,000 threshold. This may take a moment.", )