webtecnica
2bb11adb49
fix: classify OpenRouter 'no tool use' 404 as model_not_found with fallback
...
When OpenRouter routes to an endpoint that does not support tool/function
calling, it returns HTTP 404 with the message 'No endpoints found that
support tool use. Try disabling "browser_back".'
The raw error body does not contain 'model not found' or any other
_MODEL_NOT_FOUND_PATTERNS entry, so it falls through to FailoverReason.unknown
with retryable=True. The retry loop wastes 3-5 attempts on the same
deterministic rejection, then surfaces a confusing generic error instead of
automatically failing over to a fallback model or provider.
Adding the OpenRouter phrase to _MODEL_NOT_FOUND_PATTERNS classifies it as
model_not_found (retryable=False, should_fallback=True), which triggers the
client-error fast-fallback path in conversation_loop.py: the agent switches
to a configured fallback model/provider before the user sees the error.
Existing buffered guidance in conversation_loop.py (the 'support tool use'
hint at line ~2967) remains intact and surfaces only if every fallback
exhausts.
2026-07-04 15:44:50 -07:00
..
2026-07-01 04:54:46 -07:00
2026-06-30 15:41:44 -05:00
2026-06-08 22:46:57 -07:00
2026-07-04 14:19:44 +05:30
2026-05-28 00:20:11 -07:00
2026-06-12 08:51:10 +00:00
2026-07-04 18:55:27 +05:30
2026-07-04 21:14:37 +05:30
2026-07-04 15:16:13 +05:30
2026-05-15 14:00:01 -07:00
2026-07-04 15:44:50 -07:00
2026-05-18 10:14:38 -07:00
2026-07-01 16:21:39 +05:30
2026-06-15 05:25:17 -07:00
2026-06-19 01:53:32 +05:30
2026-05-17 04:04:15 -07:00
2026-05-29 04:22:27 -07:00
2026-07-02 17:05:05 +05:30
2026-06-17 17:33:32 -07:00
2026-07-01 22:58:37 +05:30
2026-06-30 00:59:59 -05:00
2026-06-29 09:18:10 -04:00
2026-07-03 12:51:12 +05:30
2026-07-01 13:36:50 +05:30
2026-07-01 02:43:49 -07:00
2026-07-04 21:04:27 +05:30
2026-07-04 14:15:49 +05:30
2026-06-28 22:52:51 -07:00
2026-07-02 13:17:41 -07:00
2026-07-02 13:17:41 -07:00
2026-07-02 13:17:41 -07:00
2026-06-12 08:51:10 +00:00
2026-06-17 05:40:05 -07:00
2026-06-28 15:10:21 -07:00
2026-06-29 20:31:17 -07:00
2026-07-04 15:44:50 -07:00
2026-06-13 21:14:32 -07:00
2026-07-03 18:47:53 +05:30
2026-06-30 11:51:22 -07:00
2026-04-28 06:46:45 -07:00
2026-06-03 12:00:27 -07:00
2026-06-18 22:13:07 -07:00
2026-05-13 22:31:28 -07:00
2026-07-03 03:43:35 -07:00
2026-06-07 18:33:20 -07:00
2026-05-16 17:59:32 -07:00
2026-05-28 00:20:11 -07:00
2026-06-30 16:56:01 -07:00
2026-06-30 11:54:16 -05:00
2026-07-01 16:25:48 -05:00
2026-06-30 15:16:21 -05:00
2026-04-28 12:27:36 -07:00
2026-04-30 23:03:54 -07:00
2026-05-11 16:49:13 -07:00
2026-07-02 04:20:43 -07:00
2026-06-21 12:03:46 -07:00
2026-06-19 15:23:41 +08:00
2026-06-25 12:24:34 -05:00
2026-07-04 20:59:02 +05:30
2026-07-01 04:07:46 -07:00
2026-07-03 03:36:22 +05:30
2026-05-27 00:43:32 -07:00
2026-06-13 05:51:41 -07:00
2026-05-08 14:27:40 -07:00
2026-06-07 08:36:48 -07:00
2026-06-23 08:01:50 +00:00
2026-05-10 07:09:28 -07:00
2026-05-12 20:49:20 -07:00
2026-07-02 04:51:56 +05:30
2026-06-28 20:46:32 -07:00
2026-07-04 13:54:27 +05:30
2026-04-13 16:32:04 -07:00
2026-06-25 19:00:48 -07:00
2026-07-04 15:18:41 -07:00
2026-06-27 20:56:49 -07:00
2026-06-25 00:17:17 -07:00
2026-06-02 20:23:09 +00:00
2026-06-19 07:34:15 -07:00
2026-06-30 00:59:29 -05:00
2026-05-18 21:38:05 -07:00
2026-06-16 10:37:37 -07:00
2026-06-28 05:28:45 -07:00
2026-06-25 22:03:02 -07:00
2026-06-13 21:14:32 -07:00
2026-07-02 04:51:56 +05:30
2026-05-28 04:53:27 -07:00
2026-07-01 04:55:15 -07:00
2026-06-22 06:42:30 -07:00
2026-05-05 04:33:38 -07:00
2026-06-25 19:00:48 -07:00
2026-06-30 17:28:33 -07:00
2026-07-01 04:18:48 -07:00
2026-07-01 02:44:09 -07:00
2026-07-02 04:20:43 -07:00
2026-05-19 00:12:12 -07:00
2026-05-13 06:46:23 -07:00
2026-05-25 01:41:19 -07:00
2026-05-25 01:41:19 -07:00
2026-05-24 18:04:54 -07:00
2026-05-24 18:04:54 -07:00
2026-06-30 20:01:16 +05:30
2026-07-01 03:34:49 -07:00
2026-07-01 05:25:33 -07:00
2026-07-02 13:52:42 -07:00
2026-06-24 23:03:45 -05:00
2026-06-30 01:43:08 -05:00
2026-06-30 00:59:29 -05:00
2026-07-02 06:07:56 +05:30
2026-05-13 16:39:41 -07:00
2026-05-13 16:39:41 -07:00
2026-05-28 04:52:42 -07:00
2026-05-28 04:52:42 -07:00