fix(core): recover from hallucinated tool names instead of ending the scan

A tool call for a name Strix does not register raised ModelBehaviorError
from the SDK turn resolver, which nothing retries: the root agent's raise
tore down the whole scan and a sub-agent died before its status was set.
Opt into the SDK's tool_not_found_behavior="return_error_to_model" so the
unknown call comes back as a tool result and the agent self-corrects.

The setting landed in openai-agents 0.19.0, which requires openai>=2.45,
so both pins move.
This commit is contained in:
Ahmed Allam
2026-08-04 06:14:54 +03:00
parent 6f70b6f319
commit 4a455b1e62
7 changed files with 194 additions and 27 deletions
+3 -2
View File
@@ -33,8 +33,8 @@ classifiers = [
"Programming Language :: Python :: 3.14",
]
dependencies = [
"openai-agents[litellm]==0.14.6",
"openai>=2.26.0,<2.45",
"openai-agents[litellm]>=0.19.0,<0.20",
"openai>=2.45.0,<3",
"litellm",
"pydantic>=2.11.3",
"pydantic-settings>=2.13.0",
@@ -233,6 +233,7 @@ ignore = [
"strix/interface/auth_cli.py" = ["N802"]
"tests/test_codex_streaming.py" = ["N802"]
"tests/test_disable_streaming.py" = ["N802"]
"tests/test_unknown_tool_recovery.py" = ["N802"]
"tests/test_report_pdf.py" = ["S105", "S106"]
# Stdlib HTTP handler overrides (do_GET/do_POST) and lazy imports that avoid a
# circular dependency with strix.telemetry / strix.interface.viewer.report_pdf.