diff --git a/tests/run_agent/test_compression_feasibility.py b/tests/run_agent/test_compression_feasibility.py index 0738b1d438..0756fcda6a 100644 --- a/tests/run_agent/test_compression_feasibility.py +++ b/tests/run_agent/test_compression_feasibility.py @@ -38,6 +38,7 @@ def _make_agent( agent.status_callback = None agent.tool_progress_callback = None agent._compression_warning = None + agent.config = None compressor = MagicMock(spec=ContextCompressor) compressor.context_length = main_context @@ -130,6 +131,64 @@ def test_feasibility_check_passes_live_main_runtime(): ) +@patch("agent.model_metadata.get_model_context_length", return_value=1_000_000) +@patch("agent.auxiliary_client.get_text_auxiliary_client") +def test_feasibility_check_passes_config_context_length(mock_get_client, mock_ctx_len): + """auxiliary.compression.context_length from config is forwarded to + get_model_context_length so custom endpoints that lack /models still + report the correct context window (fixes #8499).""" + agent = _make_agent(main_context=200_000, threshold_percent=0.85) + agent.config = { + "auxiliary": { + "compression": { + "context_length": 1_000_000, + }, + }, + } + mock_client = MagicMock() + mock_client.base_url = "http://custom-endpoint:8080/v1" + mock_client.api_key = "sk-custom" + mock_get_client.return_value = (mock_client, "custom/big-model") + + agent._emit_status = lambda msg: None + agent._check_compression_model_feasibility() + + mock_ctx_len.assert_called_once_with( + "custom/big-model", + base_url="http://custom-endpoint:8080/v1", + api_key="sk-custom", + config_context_length=1_000_000, + ) + + +@patch("agent.model_metadata.get_model_context_length", return_value=128_000) +@patch("agent.auxiliary_client.get_text_auxiliary_client") +def test_feasibility_check_ignores_invalid_context_length(mock_get_client, mock_ctx_len): + """Non-integer context_length in config is silently ignored.""" + agent = _make_agent(main_context=200_000, threshold_percent=0.50) + agent.config = { + "auxiliary": { + "compression": { + "context_length": "not-a-number", + }, + }, + } + mock_client = MagicMock() + mock_client.base_url = "http://custom:8080/v1" + mock_client.api_key = "sk-test" + mock_get_client.return_value = (mock_client, "custom/model") + + agent._emit_status = lambda msg: None + agent._check_compression_model_feasibility() + + mock_ctx_len.assert_called_once_with( + "custom/model", + base_url="http://custom:8080/v1", + api_key="sk-test", + config_context_length=None, + ) + + @patch("agent.auxiliary_client.get_text_auxiliary_client") def test_warns_when_no_auxiliary_provider(mock_get_client): """Warning emitted when no auxiliary provider is configured."""