fix(agent): enhance 413 error handling and improve conversation history management in tests

This commit is contained in:
teknium1
2026-02-27 23:04:32 -08:00
parent 2c817ce4a5
commit 19f28a633a
4 changed files with 23 additions and 5 deletions

View File

@@ -539,6 +539,7 @@ class TelegramAdapter(BasePlatformAdapter):
try:
text_content = raw_bytes.decode("utf-8")
display_name = original_filename or f"document{ext}"
display_name = re.sub(r'[^\w.\- ]', '_', display_name)
injection = f"[Content of {display_name}]:\n{text_content}"
if event.text:
event.text = f"{injection}\n\n{event.text}"

View File

@@ -2099,6 +2099,7 @@ class AIAgent:
is_payload_too_large = (
status_code == 413
or 'request entity too large' in error_msg
or 'payload too large' in error_msg
or 'error code: 413' in error_msg
)

View File

@@ -88,18 +88,24 @@ class TestHTTP413Compression:
ok_resp = _mock_response(content="Success after compression", finish_reason="stop")
agent.client.chat.completions.create.side_effect = [err_413, ok_resp]
# Prefill so there are multiple messages for compression to reduce
prefill = [
{"role": "user", "content": "previous question"},
{"role": "assistant", "content": "previous answer"},
]
with (
patch.object(agent, "_compress_context") as mock_compress,
patch.object(agent, "_persist_session"),
patch.object(agent, "_save_trajectory"),
patch.object(agent, "_cleanup_task_resources"),
):
# Compression removes messages, enabling retry
# Compression reduces 3 messages down to 1
mock_compress.return_value = (
[{"role": "user", "content": "hello"}],
"compressed prompt",
)
result = agent.run_conversation("hello")
result = agent.run_conversation("hello", conversation_history=prefill)
mock_compress.assert_called_once()
assert result["completed"] is True
@@ -111,6 +117,11 @@ class TestHTTP413Compression:
ok_resp = _mock_response(content="Recovered", finish_reason="stop")
agent.client.chat.completions.create.side_effect = [err_413, ok_resp]
prefill = [
{"role": "user", "content": "previous question"},
{"role": "assistant", "content": "previous answer"},
]
with (
patch.object(agent, "_compress_context") as mock_compress,
patch.object(agent, "_persist_session"),
@@ -121,7 +132,7 @@ class TestHTTP413Compression:
[{"role": "user", "content": "hello"}],
"compressed",
)
result = agent.run_conversation("hello")
result = agent.run_conversation("hello", conversation_history=prefill)
# If 413 were treated as generic 4xx, result would have "failed": True
assert result.get("failed") is not True
@@ -133,6 +144,11 @@ class TestHTTP413Compression:
ok_resp = _mock_response(content="OK", finish_reason="stop")
agent.client.chat.completions.create.side_effect = [err, ok_resp]
prefill = [
{"role": "user", "content": "previous question"},
{"role": "assistant", "content": "previous answer"},
]
with (
patch.object(agent, "_compress_context") as mock_compress,
patch.object(agent, "_persist_session"),
@@ -143,7 +159,7 @@ class TestHTTP413Compression:
[{"role": "user", "content": "hello"}],
"compressed",
)
result = agent.run_conversation("hello")
result = agent.run_conversation("hello", conversation_history=prefill)
mock_compress.assert_called_once()
assert result["completed"] is True

View File

@@ -468,7 +468,7 @@ class TestBuildApiKwargs:
kwargs = agent._build_api_kwargs(messages)
assert kwargs["model"] == agent.model
assert kwargs["messages"] is messages
assert kwargs["timeout"] == 600.0
assert kwargs["timeout"] == 900.0
def test_provider_preferences_injected(self, agent):
agent.providers_allowed = ["Anthropic"]