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