bekkilove
d44901f91c
fix(devin): classify high-demand errors as rate limits
...
Devin upstream occasionally encodes transient capacity failures using
Connect code permission_denied with message containing 'high demand'.
CPA's ParseDevinTrailerError currently maps every permission_denied to
HTTP 403. The auth cooldown manager interprets 403 as a 30-minute model
permission cooldown, keeping a recovered model locally unavailable.
This fix narrowly reclassifies the observed high-demand variant as
HTTP 429 (Too Many Requests), so it enters the quota/retry cooldown
path instead of the long permission denial path. Genuine
permission_denied errors (model access denied, plan entitlement denied,
etc.) remain HTTP 403.
Tests: 4 new cases in TestParseDevinTrailerError covering transient
high-demand (429), genuine permission error (403), resource_exhausted
unchanged (429), and case-insensitive matching. All existing tests
pass with no regressions.
2026-09-16 19:24:08 +08:00
..
2026-09-16 19:24:08 +08:00
2026-09-06 23:41:12 +08:00
2026-09-10 01:43:37 +08:00
2026-09-01 08:37:02 +08:00
2026-09-01 08:37:02 +08:00
2026-09-06 21:51:47 +08:00
2026-08-25 11:51:17 +08:00
2026-09-02 22:01:55 +08:00
2026-09-02 22:01:55 +08:00
2026-09-07 19:15:39 +08:00
2026-08-25 15:13:04 +08:00
2026-09-01 18:00:04 +08:00
2026-09-07 19:15:39 +08:00
2026-08-25 11:51:17 +08:00
2026-09-06 23:41:12 +08:00
2026-08-25 15:13:04 +08:00
2026-09-07 19:15:39 +08:00
2026-09-07 19:15:39 +08:00
2026-09-08 11:29:05 +08:00
2026-09-08 18:32:26 +08:00
2026-09-03 13:10:30 +08:00
2026-09-08 18:32:26 +08:00
2026-08-31 19:27:20 +08:00
2026-07-25 14:07:31 +08:00
2026-09-04 18:53:21 +08:00
2026-08-11 09:57:15 +08:00
2026-09-10 20:01:39 +08:00
2026-09-10 20:01:39 +08:00
2026-08-29 12:50:46 +08:00
2026-08-19 19:13:56 +08:00
2026-08-11 19:33:40 +08:00
2026-09-11 16:59:57 +08:00
2026-08-03 14:47:26 +08:00
2026-08-20 00:15:31 +08:00
2026-08-20 00:15:31 +08:00
2026-09-11 23:44:21 +08:00
2026-08-29 14:47:51 +08:00
2026-09-11 16:59:57 +08:00
2026-09-04 15:23:31 +08:00
2026-09-04 15:23:31 +08:00
2026-09-11 16:59:57 +08:00
2026-08-27 17:32:07 +08:00
2026-08-03 14:47:26 +08:00
2026-08-15 14:08:16 +08:00
2026-09-08 10:34:05 +08:00
2026-08-29 12:50:46 +08:00
2026-08-03 14:47:26 +08:00
2026-08-19 22:29:51 +08:00
2026-09-11 23:44:21 +08:00
2026-09-11 16:59:57 +08:00
2026-09-10 10:58:34 +08:00
2026-09-11 16:59:57 +08:00
2026-08-03 14:47:26 +08:00
2026-08-18 18:06:40 +08:00
2026-08-03 14:47:26 +08:00
2026-08-20 15:19:07 +08:00
2026-08-18 18:06:40 +08:00
2026-08-18 18:21:33 +08:00
2026-09-08 10:34:05 +08:00
2026-08-18 18:06:40 +08:00
2026-08-18 18:21:33 +08:00
2026-09-14 09:20:03 +08:00
2026-08-09 04:36:39 +08:00
2026-07-26 14:31:45 +08:00
2026-08-12 18:28:40 +08:00
2026-09-13 15:05:03 +08:00
2026-08-22 20:58:35 +08:00
2026-07-18 03:58:03 +08:00
2026-08-03 02:45:49 +08:00
2026-07-18 03:58:03 +08:00
2026-07-24 11:10:58 -07:00
2026-07-26 19:11:32 +08:00
2026-09-13 15:05:03 +08:00
2026-09-09 11:57:58 +08:00
2026-07-14 00:35:48 +08:00
2026-09-11 00:30:24 +08:00
2026-09-10 12:35:07 +08:00
2026-09-14 14:25:45 +08:00
2026-09-14 14:25:45 +08:00
2026-09-13 15:05:03 +08:00
2026-09-07 20:09:29 +08:00
2026-09-09 11:57:58 +08:00
2026-09-13 15:05:03 +08:00
2026-09-10 10:40:53 +08:00
2026-09-10 10:40:53 +08:00
2026-09-14 14:25:45 +08:00
2026-09-13 15:05:03 +08:00
2026-09-09 11:57:58 +08:00
2026-09-13 15:05:03 +08:00
2026-07-23 13:42:08 +08:00
2026-09-13 15:05:03 +08:00
2026-07-26 14:31:45 +08:00
2026-09-13 15:05:03 +08:00
2026-09-11 19:53:45 +08:00
2026-08-12 18:20:13 +08:00
2026-09-14 14:25:45 +08:00
2026-09-10 01:43:37 +08:00
2026-09-16 10:24:47 +08:00
2026-09-16 10:24:47 +08:00
2026-07-20 13:57:14 +08:00
2026-08-29 12:50:46 +08:00
2026-09-16 00:31:31 +08:00
2026-09-16 00:31:31 +08:00
2026-09-10 01:43:37 +08:00
2026-07-23 13:42:08 +08:00
2026-09-11 17:01:00 +08:00
2026-09-11 17:01:00 +08:00
2026-09-03 13:10:30 +08:00
2026-09-11 17:01:00 +08:00
2026-08-09 04:36:39 +08:00
2026-09-15 18:12:49 +08:00
2026-09-15 18:12:49 +08:00
2026-09-15 18:12:49 +08:00
2026-09-15 18:12:49 +08:00
2026-08-12 13:05:06 +08:00
2026-08-07 06:26:33 +08:00
2026-09-03 11:12:09 +08:00
2026-08-03 03:37:24 +08:00
2026-09-10 01:43:37 +08:00
2026-09-15 03:42:08 +08:00
2026-09-15 03:42:08 +08:00
2026-07-23 13:42:08 +08:00
2026-07-23 13:42:08 +08:00
2026-07-26 14:31:45 +08:00
2026-09-10 01:43:37 +08:00
2026-08-30 14:01:18 +08:00
2026-08-30 14:01:18 +08:00
2026-08-27 01:08:35 +08:00
2026-09-10 01:43:37 +08:00
2026-08-30 14:01:18 +08:00
2026-07-26 14:31:45 +08:00
2026-08-30 14:01:18 +08:00
2026-07-12 23:59:39 +08:00
2026-08-07 06:48:09 +08:00
2026-09-11 19:53:45 +08:00
2026-09-11 19:53:45 +08:00