Commit graph

55994 commits

Author SHA1 Message Date
Devin AI
9529dff700 refactor(auth): move final budget lookup decisions into Rust 2026-11-09 01:14:37 +00:00
Devin AI
1b2d5a3f04 Preserve lazy configured-route classification in native auth 2026-11-09 00:54:39 +00:00
Devin AI
a7d198f673 Select model budget scope reads and wire enterprise route policy 2026-11-09 00:53:25 +00:00
Devin AI
ca42107a42 test(auth): freeze independent Phase 1 budget references 2026-11-09 00:39:23 +00:00
Devin AI
ceab6a0b6c Stage registry reads and optional route enablement in native auth 2026-11-09 00:38:20 +00:00
Devin AI
e4a9b7a877 Wire native managed model and route policy into shared auth flows 2026-11-09 00:36:44 +00:00
Devin AI
3e8b949238 feat(auth): move role and JWT route selection into native decisions 2026-11-09 00:26:52 +00:00
Devin AI
0621528e29 style: format managed auth bridge projections 2026-11-09 00:26:24 +00:00
Devin AI
342848ec81 Stage managed model scopes and team alias resolution in native auth 2026-11-09 00:26:10 +00:00
Devin AI
7b076b140b refactor: move spend counter admission policy into Rust 2026-11-09 00:25:33 +00:00
Devin AI
9ab8927be2 refactor: stage personal model listings and agent ceilings in native policy 2026-11-09 00:03:19 +00:00
Devin AI
12dc0f3c69 fix(auth): preserve budget model and spend read projections 2026-11-09 00:02:37 +00:00
Devin AI
c65385eaf9 refactor(auth): integrate native end-user and lazy common policy reads 2026-11-09 00:02:37 +00:00
Devin AI
deb365d39f refactor(auth): move end-user defaults and identity stages into Rust 2026-11-08 23:45:20 +00:00
Devin AI
85d98f0adf feat(auth): stage resolved model scopes and member grant reads 2026-11-08 23:42:14 +00:00
Devin AI
749ab0aa04 refactor(auth): integrate native budget context and reservation member limits 2026-11-08 23:41:48 +00:00
Devin AI
e55f54b825 feat(auth): stage team overrides and personal owner model requests 2026-11-08 23:39:25 +00:00
Devin AI
edc45d1319 refactor(auth): move budget context selection into native stages 2026-11-08 23:32:24 +00:00
Devin AI
576f95823c refactor(auth): wire native personal-team eligibility and budget probes 2026-11-08 23:32:04 +00:00
Devin AI
0c3aab84eb feat(auth): stage personal team budgets and model grants in native policy 2026-11-08 23:30:59 +00:00
Devin AI
d3cec75e42 refactor(auth): select common checks and reservation targets in Rust 2026-11-08 23:30:18 +00:00
Devin AI
d2598e5b1c feat(auth): stage native fallback candidate and attribution policy 2026-11-08 23:14:19 +00:00
Devin AI
8943507cc8 refactor(auth): move budget alert planning into native policy 2026-11-08 23:13:58 +00:00
Devin AI
93834233cf refactor: stage raw auth effects and managed grant decisions in Rust 2026-11-08 23:13:20 +00:00
Devin AI
a47c0a0c10 fix(auth): preserve user model precheck order 2026-11-08 22:53:13 +00:00
Devin AI
4b210e4b65 feat(auth): stage native model access and pricing reads 2026-11-08 22:53:13 +00:00
Devin AI
39a8729d50 refactor(auth): drive model limits and exemption reads through native facts 2026-11-08 22:41:46 +00:00
Devin AI
cad362a398 refactor(auth): port model and route policy to native decisions 2026-11-08 22:37:24 +00:00
Devin AI
7341581452 refactor(auth): execute native common budget directives 2026-11-08 22:37:10 +00:00
Devin AI
b27761d08b feat(auth): add native common and model budget policy boundaries 2026-11-08 22:32:27 +00:00
Devin AI
298381a26d refactor(auth): move access and admission decisions into Rust 2026-11-08 22:32:05 +00:00
Devin AI
8bd7f5089a refactor(auth): run Phase 1 decisions in a pure Rust core 2026-11-08 22:08:24 +00:00
Yujong Lee
54122b4d89 refactor(auth): decide the team member per-model budget fallback in AuthCore
The core now decides when an over-budget team member may fall back and walks
the router's fallback targets in order, skipping the requested model, through
its own TeamMemberStep and driver. The proxy handler only reads the targets
and vets each one, so _try_team_member_model_budget_fallback and its
per-model helper are gone

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 15:10:10 +09:00
Yujong Lee
84851bc75f refactor(auth): decide key and user per-model budgets in AuthCore
The core now owns which models get checked, when an over-budget key may fall
back to its budget_fallbacks, and that the user check sees the rerouted model.
The virtual-key chain runs it inline, custom auth through check_model_budgets
and JWT through check_user_model_budgets, so the three paths share one walk.
A budget refusal is now a ModelBudgetExceeded denial that the proxy turns back
into the same BudgetExceededError

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 14:57:10 +09:00
Yujong Lee
87a1064e90 refactor(auth): finish the virtual-key decision chain in AuthCore
The core now decides the soft budget alert, when per-model budgets run, the
team and project context load, the proxy budget alert and the missing-token
denial, so the builder only projects the grant. One projection serves both
the request builder and internal jobs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 09:52:33 +09:00
Yujong Lee
08fbc4ac4c refactor(auth): decide key budget checks in AuthCore
The key checks that ran first in validate_resolved_virtual_key now run in
the Python core, in the same order: blocked key, model access, deactivated
owner, budget exemption, team member budget, expiry, budget alerts and the
key's own max budget or throttle. Lookups, counters and alerts are effects
the proxy answers, and internal jobs run the same checks through
start_resolved_key.

The soft budget, per-model budgets and the team, project and global spend
lookups stay in _finish_virtual_key_auth for a later pass. The source-shape
tests now read the functions that replaced validate_resolved_virtual_key

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 08:31:36 +09:00
Yujong Lee
8683d4a77e refactor(auth): resolve virtual keys through AuthCore effects
The Python core now decides the whole virtual key resolution path. It asks
the proxy to resolve the end user, the presented key (preresolved, cached or
UI login), evict an expired cached admin key and load an uncached key from
the DB, each as a typed effect with its own continuation. It decides the
admin key expiry, master-key-only routes, the no-DB case and the sk- prefix
check itself, so the builder no longer has a legacy fallback.

The budget and team checks in validate_resolved_virtual_key still run after
Allow(VirtualKey) and move into the core in later passes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 07:58:45 +09:00
Yujong Lee
4b5b3abfce refactor(auth): decide credential and master key auth through a pure AuthCore
Add the AuthCore interface in litellm._auth and a Python core that decides
the no-master-key, missing key, malformed key, /user/auth and master key
cases. Everything else defers to the legacy builder. The builder projects
the outcome into UserAPIKeyAuth or the existing error contract, and the
end-user resolution it shared with the master key path is extracted.

A master key request no longer inherits end-user limits from an earlier
master key request, since the master key is no longer read back from the
key cache

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 07:38:04 +09:00
Yujong Lee
0965496f22 fix(auth): update is_master_key callers and type pass-through key lookup
Key regeneration still called is_master_key with the old api_key/_master_key
keywords and raised TypeError. Also restores the str contract of get_api_key
and drops the duplicate hashlib imports left in proxy/utils.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 07:14:51 +09:00
Yujong Lee
6b3ee11810 refactor(auth): extract credential selection into litellm._auth
Move scheme stripping, key-source precedence, websocket key selection,
hash_token and is_master_key into litellm/_auth as the interface the Rust
auth port will mirror. Authorization schemes now match case-insensitively
like FastAPI's HTTPBearer. Pass-through endpoint keys join the precedence
table instead of a separate fallback, and the dead custom-header helper
plus the duplicated hash_token and is_master_key bodies are gone
2026-11-06 07:14:51 +09:00
Mateo Wang
fca3d4f513
docs(pr-template): require rerunnable proof setup and collapsed long output (#50258)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-11-05 13:24:50 -08:00
yucheng-berri
ff2709f5c3
fix(zscaler_ai_guard)!: scan only the last user turn on requests (#50139)
* fix(zscaler_ai_guard): scan only the last user turn on requests

* fix(zscaler_ai_guard): keep scanning A2A requests and refuse scan_only_tool_results

* fix(zscaler_ai_guard): join the last user turn's text parts with spaces like before

* fix(zscaler_ai_guard): keep scanning tool results when scan_only_tool_results is set

* fix(zscaler_ai_guard): scan the latest user turn when assistant or tool messages follow it

* fix(zscaler_ai_guard): skip the scan when the latest user turn is only whitespace

A blank latest user turn was sent to Zscaler on its own, which answers
Content is empty, so the proxy returned 500 where main returned 200

---------

Co-authored-by: Arnav Maiti <amaiti@zscaler.com>
2026-11-05 13:00:21 -08:00
yuneng-jiang
7cdaa73fc0
refactor(ui): move remaining Aria and admin text onto i18n (#50242)
Moves the English left in the Aria assistant, the MCP tool permission
groups, the shared chat composer, the Beta badge, the user banner and
the metadata key fields onto react-i18next. English output is unchanged.

Text that Aria sends to the model (system prompt, tool descriptions,
tool results and usage chart payloads) stays English byte for byte.
Where the same string is also shown on screen, a display map keyed by
the operation name or by the chart's English value translates it at
render time, and the model copy is left alone.
2026-11-05 12:43:09 -08:00
yuneng-jiang
09b721ab2e
refactor(ui): move remaining playground, chat and compliance text onto i18n (#50239)
Compliance framework and category names, the Compare endpoint labels, the
Decisions presets and schema messages, chat metrics, MCP events, reasoning
toggle, conversation date groups, model filters and the MCP boolean argument
labels now resolve through en.json. Ids, stored values and text sent to a
model are unchanged
2026-11-05 12:42:59 -08:00
yuneng-jiang
69ffe4279e
refactor(ui): move remaining keys, teams and agents text onto i18n (#50238)
Constants and option lists on the keys, teams, agents, budgets, cost
tracking, router settings and vector store pages now hold message keys,
and the code that renders them translates. Values, ids, sort keys and
payloads are unchanged, and lookups keyed by server values check
Object.hasOwn first

Five tests now resolve the expected English through i18n.t instead of
reading the constant directly
2026-11-05 12:42:48 -08:00
yuneng-jiang
4cd169f3bd
refactor(ui): move remaining shell and nav text onto i18n (#50148)
Moves the leftover English in the sidebar, page descriptions, account
menu, usage card and a handful of shared widgets into en.json. Option
lists and label maps now hold message keys and are translated where they
render, while every option value, id and stored setting stays the same
string. Lookups keyed by a server value check Object.hasOwn first
2026-11-05 12:42:37 -08:00
yuneng-jiang
625353fabe
refactor(ui): move remaining models text onto i18n (#50147)
* refactor(ui): move remaining models text onto i18n

Moves the leftover English on the models pages, mostly labels and hints
held in constants, onto react-i18next. Constants now hold message keys and
the code that renders them translates. Where a string is both a value and
a label (tier names, health check sentinels), the English value stays for
comparisons, sorting and payloads, and a separate label key drives display.
Lookups keyed by server values check Object.hasOwn first.

* refactor(ui): translate the tier name in display name inputs
2026-11-05 12:42:26 -08:00
yuneng-jiang
41d45079c7
refactor(ui): move remaining logs and usage text onto i18n (#50146)
Logs and usage option lists, filter chip labels and label maps now hold
message keys that their readers translate at render time. Tile titles, the
"Claude (unspecified)" agent label and the endpoint chart categories stay
English ids and get display maps keyed by them. Lookups keyed by URL or
server values check Object.hasOwn first.
2026-11-05 12:42:14 -08:00
ryan-crabbe-berri
f069da8e0e
fix(anthropic): report temperature/top_p as supported only when the model keeps them (#50144)
* fix(anthropic): report temperature/top_p as supported only when the model keeps them

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* test(vertex_ai): accept the generic unsupported-param message for Claude batch rows

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-11-05 12:38:58 -08:00
devin-ai-integration[bot]
308fe07920
fix(openai): add gpt-6-cyber max input tokens and the gpt-5.5-cyber-preview shutdown date (#50254)
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-11-05 20:28:55 +00:00