SIGN IN SIGN UP

fix(ai): retry a refused forced tool_choice once and remember the model (refs #2218)

Kiro behind an OpenAI-compatible proxy answers any forced tool_choice with
"400 Kiro supports only automatic tool choice or tool_choice:none". The
classifier did not match that wording, so the first-turn todo forcing failed
the whole request, and every new session paid the refusal again.

All three adapters now send through sendWithForcedToolChoiceFallback: a model
declaring compat.supportsForcedToolChoice false, or remembered as refusing,
gets no forced choice; otherwise a classified 400 is retried once without
tool_choice and the model is remembered for the process once the retry is
accepted (refusals that blame thinking are retried but not remembered). The
auto-only pattern covers the Kiro and OmniRoute wordings. openai-responses
calls the SDK directly again; the diagnostic transport wrapping from #2232 is
outside this fix.

Fixes #2224
Y
YeonGyu-Kim committed
d5c950ef481eece2b99cd6bc3d344faa96ed0ba6
Parent: 42012b4