Teknium
92df11f81d
fix(classifier): terminal_quota_exhausted 429s classify as billing, not rate_limit
...
Port from code-yeongyu/oh-my-openagent#6677 (credit: @niStee).
LiteLLM proxies stamp a structured `terminal_quota_exhausted` code on
hard-cap 429s. Hermes' `_status_429` handler always returns a verdict, so
`_by_error_code` (which maps _BILLING_ERROR_CODES to billing) never saw
the code: the exhausted key classified as rate_limit, earned the 429
cooldown, and got retried against a wall that cannot clear until someone
pays. Upstream this respawned duplicate subagent sessions.
- `_status_429` now honors a structured billing code first (decisive
signal outranks message heuristics).
- `terminal_quota_exhausted` joins _BILLING_ERROR_CODES so every path
(429, 402, status-less) agrees.
- "hard billing limit" free text joins _BILLING_PATTERNS ("billing hard
limit" was already there; providers use both orders). "terminal billing
limit" text is deliberately NOT matched: substring rules cannot negate
the "non-terminal billing limit" wording — the structured code covers it.
2026-09-12 21:52:48 -07:00
..
2026-09-12 05:09:11 -07:00
2026-09-09 13:01:48 -07:00
2026-09-10 15:13:02 -04:00
2026-09-11 13:06:16 +05:30
2026-09-11 13:06:16 +05:30
2026-09-07 08:07:26 -07:00
2026-09-07 08:07:26 -07:00
2026-09-09 10:32:01 +05:30
2026-09-07 21:43:54 +05:30
2026-09-07 00:41:09 +05:30
2026-09-09 16:21:36 -07:00
2026-09-09 16:21:36 -07:00
2026-09-10 09:11:00 -07:00
2026-09-11 13:06:16 +05:30
2026-09-10 09:11:00 -07:00
2026-09-09 14:06:12 -07:00
2026-09-12 08:28:49 -07:00
2026-09-10 18:11:25 -07:00
2026-09-07 06:02:22 -07:00
2026-09-07 07:06:58 -07:00
2026-09-09 12:19:13 +05:30
2026-09-11 01:37:22 -07:00
2026-09-11 03:45:33 +05:30
2026-09-06 13:21:17 -07:00
2026-09-07 08:08:04 -07:00
2026-09-07 08:09:57 -07:00
2026-09-07 06:04:44 -07:00
2026-09-07 05:24:15 -07:00
2026-09-07 02:30:04 -07:00
2026-09-09 09:21:39 -07:00
2026-09-07 02:30:04 -07:00
2026-09-06 14:19:42 -07:00
2026-09-06 13:21:17 -07:00
2026-09-08 02:27:01 +05:30
2026-09-06 13:21:17 -07:00
2026-09-07 05:59:08 -07:00
2026-09-09 09:21:55 -07:00
2026-09-07 08:13:01 -07:00
2026-09-07 00:49:51 -07:00
2026-09-07 22:47:33 +05:30
2026-09-07 08:06:48 -07:00
2026-09-09 21:17:35 +05:30
2026-09-11 03:45:33 +05:30
2026-09-12 05:56:15 -07:00
2026-09-07 22:47:33 +05:30
2026-09-09 21:16:48 +05:30
2026-09-07 08:19:32 -07:00
2026-09-06 05:37:03 -07:00
2026-09-10 13:23:00 +02:00
2026-09-12 08:23:42 -07:00
2026-09-12 21:52:48 -07:00
2026-09-09 16:30:24 -07:00
2026-09-07 06:07:16 -07:00
2026-09-07 06:15:43 -07:00
2026-09-07 00:20:11 +05:30
2026-09-07 08:10:36 -07:00
2026-09-12 21:18:24 -07:00
2026-09-07 21:10:50 -07:00
2026-09-12 21:10:02 -07:00
2026-09-07 21:10:50 -07:00
2026-09-10 01:08:18 -07:00
2026-09-11 15:26:46 -07:00
2026-09-06 09:09:00 -07:00
2026-09-06 14:19:42 -07:00
2026-09-11 15:26:46 -07:00
2026-09-07 06:05:13 -07:00
2026-09-12 08:23:13 -07:00
2026-09-07 08:28:43 -07:00
2026-09-07 08:28:43 -07:00
2026-09-11 11:54:49 -07:00
2026-09-09 11:42:43 -07:00
2026-09-12 08:27:11 -07:00
2026-09-12 08:22:57 -07:00
2026-09-06 13:25:48 -07:00
2026-09-06 13:25:48 -07:00
2026-09-06 13:25:48 -07:00
2026-09-10 18:11:25 -07:00
2026-09-07 06:15:43 -07:00
2026-09-12 07:46:36 -07:00
2026-09-11 16:50:20 -07:00
2026-09-11 15:26:46 -07:00
2026-09-12 01:35:05 -07:00
2026-09-09 16:30:24 -07:00
2026-09-07 05:24:15 -07:00
2026-09-11 13:06:16 +05:30
2026-09-11 03:45:33 +05:30
2026-09-11 03:45:33 +05:30
2026-09-06 09:11:04 -07:00
2026-09-11 15:26:46 -07:00
2026-09-07 04:38:59 -07:00
2026-09-06 02:18:14 -07:00
2026-09-09 12:42:02 +05:30
2026-09-09 09:59:13 -07:00
2026-09-06 13:32:51 +05:30
2026-09-12 13:44:52 -07:00
2026-09-12 08:06:48 -07:00
2026-09-07 08:24:54 -07:00
2026-09-10 02:44:26 -07:00
2026-09-12 08:37:14 -07:00
2026-09-09 12:19:13 +05:30
2026-09-10 13:23:24 -07:00
2026-09-06 14:04:05 -07:00
2026-09-08 04:38:47 -07:00
2026-09-09 17:04:30 +05:30
2026-09-06 05:35:12 -07:00
2026-09-07 08:08:41 -07:00
2026-09-12 07:54:57 -07:00
2026-09-11 15:44:00 -07:00
2026-09-12 08:25:36 -07:00
2026-09-12 08:25:59 -07:00
2026-09-06 13:08:31 -07:00
2026-09-12 21:07:46 -07:00
2026-09-07 05:24:15 -07:00
2026-09-12 08:34:07 -07:00
2026-09-09 10:31:26 +05:30
2026-09-08 13:36:05 -07:00
2026-09-12 21:10:02 -07:00
2026-09-12 08:25:14 -07:00
2026-09-10 10:27:07 -07:00
2026-09-06 13:21:17 -07:00
2026-09-06 13:21:17 -07:00
2026-09-10 10:27:07 -07:00
2026-09-10 13:23:00 +02:00
2026-09-09 09:51:31 -07:00
2026-09-12 10:00:06 +05:30
2026-09-06 13:52:15 -07:00
2026-09-06 13:21:17 -07:00
2026-09-10 02:44:26 -07:00
2026-09-10 11:48:01 -07:00
2026-09-09 02:35:41 -07:00
2026-09-09 02:35:41 -07:00
2026-09-09 02:35:41 -07:00
2026-09-07 08:08:41 -07:00
2026-09-09 02:35:41 -07:00