teknium1
884b8d980f
fix(image_gen): a gateway 429 is reported as a rate limit and retried once, not as a missing model
...
`_submit_fal_request` (image) and `_submit_fal_video_request` (video plugin)
translated every managed-gateway 4xx into "This model may not yet be enabled
on the Nous Portal's FAL proxy — set FAL_KEY or pick a different model". For
HTTP 429 that remediation is wrong: the gateway body is RATE_LIMIT_EXCEEDED
with a retryAfter, the model is enabled, and agents reading the message
switched models or gave up. On one real install this fired 260 times in a
week (17% of image_generate calls).
Both surfaces now submit through one shared helper
(tools/fal_common.py::submit_managed_fal_with_rate_limit_retry): a 429 whose
Retry-After (header, else body error.retryAfter) fits a 30s cap is waited out
in interrupt-aware 0.5s slices and resubmitted once under a fresh
x-idempotency-key; a second 429, or an unknown/too-long Retry-After, raises
a ValueError that names the rate limit and tells the agent to retry later
rather than switch models. 429 can no longer reach the "may not yet be
enabled" text.
2026-09-21 10:40:03 -07:00
..
2026-09-21 16:21:00 +05:30
2026-09-21 08:59:03 -07:00
2026-09-20 16:32:19 -07:00
2026-09-18 20:34:42 -07:00
2026-09-20 15:32:00 -07:00
2026-09-17 09:04:38 -07:00
2026-09-15 21:46:37 -07:00
2026-09-20 15:32:42 -07:00
2026-09-19 23:41:45 -07:00
2026-09-20 18:50:37 -07:00
2026-09-20 18:50:37 -07:00
2026-09-17 21:17:26 +05:30
2026-09-20 10:16:51 -07:00
2026-09-20 13:54:22 -07:00
2026-09-20 13:54:22 -07:00
2026-09-20 17:00:11 -07:00
2026-09-20 11:51:14 -07:00
2026-09-16 16:59:03 -07:00
2026-09-18 09:19:04 -07:00
2026-09-18 10:28:40 -07:00
2026-09-15 06:16:38 -07:00
2026-09-20 18:25:21 -07:00
2026-09-15 06:16:38 -07:00
2026-09-20 12:47:50 -07:00
2026-09-17 09:02:55 -07:00
2026-09-19 10:44:26 -07:00
2026-09-17 09:02:55 -07:00
2026-09-15 04:56:01 -07:00
2026-09-16 14:34:22 -07:00
2026-09-21 08:58:37 -07:00
2026-09-16 17:47:50 -07:00
2026-09-19 10:44:26 -07:00
2026-09-19 10:44:26 -07:00
2026-09-20 15:49:52 -07:00
2026-09-20 15:54:45 -07:00
2026-09-21 02:52:15 -07:00
2026-09-15 18:41:46 -07:00
2026-09-20 15:50:20 -07:00
2026-09-21 01:16:30 -07:00
2026-09-20 09:52:22 -07:00
2026-09-19 23:57:59 -07:00
2026-09-15 18:40:52 -07:00
2026-09-21 01:16:30 -07:00
2026-09-20 12:53:47 -07:00
2026-09-21 10:40:03 -07:00
2026-09-19 03:07:47 -07:00
2026-09-19 01:32:28 -07:00
2026-09-20 10:44:16 -07:00
2026-09-18 09:54:45 -07:00
2026-09-18 10:10:40 -07:00
2026-09-18 10:38:08 -07:00
2026-09-17 21:17:26 +05:30
2026-09-19 03:07:47 -07:00
2026-09-16 16:59:03 -07:00
2026-09-16 16:42:47 -07:00
2026-09-21 10:40:03 -07:00
2026-09-16 17:21:14 -07:00
2026-09-19 10:44:26 -07:00
2026-09-20 19:03:47 -07:00
2026-09-20 12:00:44 -07:00
2026-09-21 09:55:40 -07:00
2026-09-21 10:04:32 +05:30
2026-09-20 18:22:18 -07:00
2026-09-18 12:47:49 -07:00
2026-09-20 19:02:21 -07:00
2026-09-20 12:40:36 -07:00
2026-09-18 09:58:12 -07:00
2026-09-20 15:34:58 -07:00
2026-09-21 01:44:16 -07:00
2026-09-20 10:07:26 -07:00
2026-09-19 23:47:17 -07:00
2026-09-17 19:06:29 -04:00
2026-09-21 02:58:40 -07:00
2026-09-19 10:16:59 -07:00
2026-09-20 10:07:26 -07:00
2026-09-20 10:07:26 -07:00
2026-09-21 01:44:16 -07:00
2026-09-21 14:26:37 +05:30
2026-09-21 14:26:37 +05:30
2026-09-20 10:57:35 -07:00
2026-09-20 11:49:00 -07:00
2026-09-20 11:49:00 -07:00
2026-09-20 18:50:37 -07:00
2026-09-16 00:32:15 -07:00
2026-09-20 13:55:03 -07:00
2026-09-19 10:44:26 -07:00
2026-09-20 17:30:01 +05:30
2026-09-19 10:16:59 -07:00
2026-09-19 10:44:26 -07:00
2026-09-20 11:20:26 -07:00
2026-09-20 11:12:48 -07:00
2026-09-18 10:30:57 -07:00
2026-09-18 09:35:16 -07:00
2026-09-19 09:20:54 -07:00
2026-09-17 08:47:01 -07:00
2026-09-17 08:47:01 -07:00
2026-09-19 09:20:54 -07:00
2026-09-20 16:21:37 -07:00
2026-09-18 12:51:49 -07:00
2026-09-20 12:58:32 -07:00
2026-09-20 16:00:26 -07:00
2026-09-20 12:03:43 -07:00
2026-09-16 17:43:11 -07:00
2026-09-20 12:58:32 -07:00
2026-09-18 10:22:14 -07:00
2026-09-16 00:32:15 -07:00
2026-09-16 17:23:44 -07:00
2026-09-15 18:33:15 -07:00
2026-09-19 00:33:58 +05:30
2026-09-19 01:29:03 -07:00
2026-09-18 09:54:45 -07:00
2026-09-20 10:23:28 -07:00
2026-09-18 12:49:13 -07:00
2026-09-20 10:23:28 -07:00
2026-09-20 11:30:03 -07:00
2026-09-18 09:59:54 -07:00
2026-09-20 10:17:04 -07:00
2026-09-19 10:44:26 -07:00
2026-09-19 10:03:11 -07:00
2026-09-19 23:51:25 -07:00
2026-09-19 10:12:15 -07:00
2026-09-19 10:12:15 -07:00
2026-09-15 05:36:37 -07:00
2026-09-15 18:25:17 -07:00
2026-09-20 10:50:27 -07:00
2026-09-19 10:10:29 -07:00
2026-09-20 10:50:27 -07:00
2026-09-20 10:25:30 -07:00
2026-09-20 10:57:35 -07:00
2026-09-20 15:28:59 -07:00
2026-09-19 12:22:44 -07:00
2026-09-19 09:52:18 -07:00
2026-09-19 09:56:12 -07:00
2026-09-20 10:16:27 -07:00
2026-09-19 10:54:38 -07:00
2026-09-19 10:44:26 -07:00
2026-09-20 18:26:41 -07:00
2026-09-15 18:42:38 -07:00
2026-09-15 18:43:05 -07:00
2026-09-19 03:07:47 -07:00
2026-09-20 10:14:37 -07:00
2026-09-18 09:19:04 -07:00
2026-09-19 12:22:44 -07:00