Mariano Nicolini
4caeb02735
fix(models): key the pricing cache on auth state, not just the base URL
...
`fetch_models_with_pricing` checked its cache above the point where the
Authorization header is built, and keyed that cache on the base URL alone.
Whichever read of a given base URL landed first in a process therefore
answered every later read, whatever key it passed — a non-empty result is
held for the life of the process.
That is wrong for any endpoint whose answer depends on who is asking. The
Nous inference gateway filters `GET /v1/models` by the caller's org model
policy, so an anonymous read landing first makes a later authenticated read
return the full, unfiltered catalog without a request going out.
Separate the URL root from the cache key and fold auth state into the
latter. Only whether a key was supplied participates, never its value, so
no secret reaches the key.
`credits_tracker` peeked into the private `_pricing_cache` and duplicated
the key shape to do it; it now calls `peek_cached_pricing`, which owns both
the /v1-suffix normalization and the preference for the authenticated
catalog.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 19:12:58 -03:00
..
2026-08-23 17:45:47 -05:00
2026-08-08 04:19:49 -07:00
2026-08-28 02:29:27 +05:30
2026-08-20 11:46:30 -05:00
2026-08-24 03:15:07 -07:00
2026-08-26 00:54:36 -07:00
2026-08-24 15:54:23 +05:30
2026-08-28 02:18:25 +05:30
2026-08-26 07:28:10 -07:00
2026-08-01 10:52:34 -07:00
2026-08-24 21:21:34 -07:00
2026-08-15 13:35:32 -07:00
2026-08-27 22:06:17 +05:30
2026-08-27 19:12:58 -03:00
2026-08-27 11:31:59 -05:00
2026-08-13 23:43:15 +05:30
2026-08-04 17:36:26 -04:00
2026-08-08 18:11:02 -07:00
2026-08-26 12:43:17 +05:30
2026-08-26 12:43:17 +05:30
2026-08-25 16:39:36 -04:00
2026-08-20 19:56:01 -07:00
2026-08-27 12:42:38 +05:30
2026-08-13 02:38:28 -07:00
2026-08-12 19:13:32 -07:00
2026-08-27 07:30:15 -07:00
2026-08-23 20:01:41 -07:00
2026-08-27 13:49:04 -07:00
2026-08-27 11:50:05 -05:00
2026-08-07 10:11:05 -07:00
2026-08-19 12:41:45 -05:00
2026-08-24 21:21:34 -07:00
2026-08-24 15:37:22 +05:30
2026-08-12 17:25:30 -05:00
2026-08-06 05:00:17 +05:30
2026-08-13 22:44:23 +05:30
2026-08-24 03:21:07 -07:00
2026-08-24 03:21:07 -07:00
2026-08-01 15:05:05 +05:30
2026-08-16 01:50:20 -07:00
2026-08-23 17:01:31 -07:00
2026-08-23 06:36:57 -07:00
2026-08-02 00:11:50 -07:00
2026-08-16 12:20:50 +02:00
2026-08-17 16:34:02 -07:00
2026-08-20 04:54:14 -07:00
2026-08-26 18:23:33 -07:00
2026-08-20 19:56:28 -07:00
2026-08-26 18:23:33 -07:00
2026-08-14 15:41:38 -05:00
2026-08-03 17:19:49 -07:00
2026-08-14 21:48:14 -07:00
2026-08-02 00:11:50 -07:00
2026-08-08 05:21:09 -07:00
2026-08-03 20:30:32 +05:30
2026-08-12 19:13:32 -07:00
2026-08-16 06:29:53 -07:00
2026-08-27 13:48:51 -07:00
2026-08-09 22:09:49 -04:00
2026-08-25 10:54:42 +10:00
2026-08-09 22:09:49 -04:00
2026-08-15 23:37:22 -07:00
2026-08-09 22:09:49 -04:00
2026-08-23 19:31:35 -07:00
2026-08-13 23:43:15 +05:30
2026-08-13 23:43:15 +05:30
2026-08-13 02:38:28 -07:00
2026-08-14 21:35:30 -07:00
2026-08-23 18:27:21 -07:00
2026-08-14 22:33:58 -07:00
2026-08-08 19:46:35 -07:00
2026-08-14 21:58:09 -07:00
2026-08-14 21:58:09 -07:00
2026-08-14 21:58:09 -07:00
2026-08-16 11:34:40 -07:00
2026-07-31 22:39:11 -07:00
2026-08-13 02:38:28 -07:00
2026-08-13 18:39:54 +00:00
2026-08-13 18:39:54 +00:00
2026-08-14 21:58:09 -07:00
2026-08-27 07:52:26 -07:00
2026-08-27 07:52:26 -07:00
2026-08-17 02:40:59 -07:00
2026-08-15 01:55:22 -07:00
2026-08-07 19:44:35 +05:30
2026-08-23 19:15:28 -07:00
2026-08-16 23:26:10 -07:00
2026-08-23 13:34:32 +05:30
2026-08-03 17:38:13 +05:30
2026-08-14 21:36:41 -07:00
2026-08-09 22:09:49 -04:00
2026-08-20 11:37:01 +05:30
2026-08-14 21:45:08 -07:00
2026-08-14 21:50:48 -07:00
2026-08-13 11:49:14 -07:00
2026-08-17 15:12:53 -05:00
2026-08-17 16:39:47 -07:00
2026-08-14 13:51:26 -07:00
2026-08-14 13:51:26 -07:00
2026-08-12 18:55:14 -07:00
2026-08-10 17:02:56 -07:00
2026-08-08 12:33:19 -07:00
2026-08-07 00:41:58 -04:00
2026-08-02 10:04:48 -07:00
2026-08-16 20:43:13 -07:00
2026-08-10 17:02:56 -07:00
2026-08-10 17:02:56 -07:00
2026-08-25 23:15:49 -07:00
2026-08-21 21:53:11 +05:30
2026-08-03 20:37:17 +05:30
2026-08-02 21:32:13 +05:30
2026-07-31 23:18:12 -07:00
2026-08-06 07:49:42 -07:00
2026-08-04 11:26:15 +05:30
2026-08-27 13:48:51 -07:00
2026-08-23 02:55:03 +05:30
2026-08-22 04:02:29 +05:30
2026-08-15 02:22:58 -07:00
2026-08-22 14:33:20 +05:30
2026-08-23 18:25:12 -07:00
2026-08-23 20:01:41 -07:00
2026-08-23 18:25:12 -07:00
2026-08-27 07:52:26 -07:00
2026-08-15 00:36:03 -07:00
2026-08-13 09:36:02 -07:00
2026-08-07 09:44:21 -07:00
2026-08-27 11:26:57 +05:30
2026-08-16 06:26:37 -07:00
2026-08-06 23:08:23 -05:00
2026-08-27 07:51:22 -07:00
2026-08-24 04:01:53 -07:00
2026-08-06 19:35:47 -06:00
2026-08-09 13:43:14 -07:00
2026-08-12 20:02:07 -07:00
2026-08-02 21:30:54 +05:30
2026-08-02 23:10:28 +05:30
2026-08-14 12:02:05 -04:00
2026-08-13 02:38:28 -07:00
2026-08-23 17:43:39 -07:00