mirror of
https://github.com/usestrix/strix.git
synced 2026-08-16 17:27:26 +02:00
When view_image lands an image content block in the agent session and the next model call fails because the provider rejects the format (SVG on Anthropic, anything on a text-only model, etc.), the agent used to die once the general failsafe parked it and there was no way back. Recovery flow when _run_cycle catches an input-rejection error (BadRequestError/NotFoundError/422, by status_code) and the latest session item is an image-bearing function_call_output: - pop_item() the offending output (single SDK-public primitive) - add_items() a replacement function_call_output paired by the original call_id, with text content telling the model "view_image is unsupported on this scan; do not call it again" - retry the cycle once with empty input_data Gated by status_code so unrelated failures (timeouts, 5xx, 429, auth, network blips) leave session content intact — no false-trigger that would destroy a valid image during a transient hiccup on a vision-capable model. Hard cap of 3 strips per cycle so a model that keeps re-calling view_image despite the instruction text still terminates. strip_latest_image_from_session lives in core.sessions next to open_agent_session — both are session helpers operating only through the SDK's public Session protocol. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>