mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-09 04:40:45 +08:00
Stabilize WS chat streaming and failure handling
Use inactivity-based WS send timeout, avoid end-of-turn message list repaint, add WS heartbeat during turns, improve MiniMax tool replay compatibility, and retry tool replay protocol mismatch errors. Made-with: Cursor
This commit is contained in:
parent
50c8bd19c0
commit
768f175c3e
5 changed files with 245 additions and 40 deletions
|
|
@ -28,6 +28,7 @@ ALL_ATTEMPT_ERROR_CODES = (
|
|||
"control_interrupted",
|
||||
"auth_invalid_credentials",
|
||||
"input_invalid_request",
|
||||
"tool_replay_protocol_mismatch",
|
||||
"context_overflow",
|
||||
"tool_loop_guard",
|
||||
"tool_execution_failed",
|
||||
|
|
@ -83,6 +84,8 @@ def _classify_attempt_error(exc: Exception) -> tuple[str, str, bool]:
|
|||
return ("control_interrupted", raw[:500], False)
|
||||
if "api_key" in low or "invalid api key" in low or "unauthorized" in low or "401" in low or "forbidden" in low or "403" in low:
|
||||
return ("auth_invalid_credentials", raw[:500], False)
|
||||
if "invalid tool_result sequence" in low or "unexpected tool_use_id" in low:
|
||||
return ("tool_replay_protocol_mismatch", raw[:500], True)
|
||||
if "invalid_request" in low or "bad_request" in low or "400" in low:
|
||||
return ("input_invalid_request", raw[:500], False)
|
||||
if "context_length" in low or "token limit" in low or "max context" in low:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue