diff --git a/run_agent.py b/run_agent.py index cfcd325eb..2e0baa2a4 100644 --- a/run_agent.py +++ b/run_agent.py @@ -10623,11 +10623,11 @@ class AIAgent: self.model, f"{self.context_compressor.context_length:,}", ) - if not self.quiet_mode: - self._safe_print( - f"📦 Preflight compression: ~{_preflight_tokens:,} tokens " - f">= {self.context_compressor.threshold_tokens:,} threshold" - ) + self._emit_status( + f"📦 Preflight compression: ~{_preflight_tokens:,} tokens " + f">= {self.context_compressor.threshold_tokens:,} threshold. " + "This may take a moment." + ) # May need multiple passes for very large sessions with small # context windows (each pass summarises the middle N turns). for _pass in range(3): diff --git a/tests/run_agent/test_413_compression.py b/tests/run_agent/test_413_compression.py index 8bd357d3d..5410f196e 100644 --- a/tests/run_agent/test_413_compression.py +++ b/tests/run_agent/test_413_compression.py @@ -432,6 +432,8 @@ class TestPreflightCompression: ok_resp = _mock_response(content="After preflight", finish_reason="stop") agent.client.chat.completions.create.side_effect = [ok_resp] + status_messages = [] + agent.status_callback = lambda ev, msg: status_messages.append((ev, msg)) with ( patch.object(agent, "_compress_context") as mock_compress, @@ -460,6 +462,10 @@ class TestPreflightCompression: ) assert result["completed"] is True assert result["final_response"] == "After preflight" + assert any( + ev == "lifecycle" and "Preflight compression" in msg + for ev, msg in status_messages + ) def test_no_preflight_when_under_threshold(self, agent): """When history fits within context, no preflight compression needed."""