Commit graph

19200 commits

Author SHA1 Message Date
yuneng-jiang
8d4ef24496
Merge pull request #41795 from BerriAI/litellm_wt_0918_5836
test(router): cover legacy lowest TPM selection
2026-09-21 16:57:19 -07:00
yuneng-jiang
a158aa878f
Merge pull request #41773 from BerriAI/litellm_dashboard-form-happy-paths
test(ui): cover dashboard form journeys
2026-09-21 16:56:25 -07:00
yuneng-jiang
6b254b6be2
Merge pull request #41769 from BerriAI/litellm_model-actor-edges
test(model_management): cover actor edges and wildcard models
2026-09-21 16:43:24 -07:00
tin-berri
c1c1ec4f84
Merge pull request #42026 from BerriAI/litellm_user_jwt_savings
feat(ui): add internal-user savings and auto-router usage
2026-09-21 16:41:16 -07:00
ryan-crabbe-berri
582c664168
Merge pull request #42346 from BerriAI/litellm_jwt_team_allowed_routes_passthrough_grant
fix(auth): let jwt team_allowed_routes paths grant auth=true passthrough
2026-09-21 16:38:05 -07:00
Mateo Wang
8c8fb73eb8
Merge pull request #42355 from BerriAI/litellm_logging_worker_flush_loop_change
fix(logging_worker): make flush() survive an event loop change
2026-09-21 16:33:01 -07:00
yujonglee
0b8faae494
Merge pull request #42316 from BerriAI/litellm_valkey_semantic_native_cache 2026-09-21 16:28:12 -07:00
kerry-berri
cf098ceccf
Merge pull request #42362 from BerriAI/litellm_xiaomi_mimo_v26
feat(xiaomi_mimo): add mimo-v2.6-pro and mimo-v2.6-flash cost map rows with live e2e coverage
2026-09-21 16:25:15 -07:00
Yujong Lee
2eee880aba Merge origin/main into litellm_valkey_semantic_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 23:18:54 +00:00
mateo-berri
9388602f46 test(logging_worker): track callback runs with AsyncMock instead of a mutated list 2026-09-21 16:13:09 -07:00
kerry
47a1053065 feat(xiaomi_mimo): add mimo-v2.6-pro and mimo-v2.6-flash cost map rows with live e2e coverage
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 23:12:57 +00:00
yujonglee
a5431244ef
Merge pull request #42313 from BerriAI/litellm_rust_cache_s3
feat(rust): add native S3 cache backend
2026-09-21 16:12:54 -07:00
Yujong Lee
4c9e45f5f1 Merge origin/main into litellm_valkey_semantic_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 23:08:31 +00:00
joshua-berri
1baa26d36b
Merge pull request #41074 from BerriAI/litellm_mcp_server_list_stable_order
fix(mcp): keep server lists stable across refreshes
2026-09-21 23:06:09 +00:00
Yujong Lee
0c5bbf8c37 Merge branch 'main' into litellm_rust_cache_s3
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 23:04:42 +00:00
ryan-crabbe-berri
a0d1f0236e
Merge pull request #42122 from BerriAI/litellm_db_callback_redaction_settings
fix(proxy): apply DB-stored callback redaction settings before logger init
2026-09-21 16:03:44 -07:00
yujonglee
ced2980529
Merge pull request #42308 from BerriAI/litellm_rust_secrets_hashicorp_vault
feat(rust): add HashiCorp Vault secret manager crate
2026-09-21 16:03:33 -07:00
mateo-berri
37f1670a1e Merge remote-tracking branch 'origin/main' into litellm_logging_worker_flush_loop_change 2026-09-21 16:02:04 -07:00
yujonglee
bb9eb58815
Merge pull request #42325 from BerriAI/litellm_gcs_native_cache 2026-09-21 15:59:14 -07:00
mateo-berri
e86ba8bbeb test(logging_worker): cover a same-loop flush and a repeated flush after a loop change 2026-09-21 15:56:09 -07:00
Yujong Lee
90f93f76f4 Merge origin/main into litellm_valkey_semantic_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:53:27 +00:00
Yujong Lee
911e320b95 Merge remote-tracking branch 'origin/main' into litellm_rust_cache_s3
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

# Conflicts:
#	litellm-rust/Cargo.lock
#	litellm-rust/Cargo.toml
#	litellm-rust/crates/python-bridge/Cargo.toml
#	litellm-rust/crates/python-bridge/src/cache/config.rs
#	litellm-rust/crates/python-bridge/src/cache/facade.rs
#	litellm-rust/crates/python-bridge/src/cache/handle.rs
#	litellm-rust/crates/python-bridge/src/cache/native.rs
#	tests/test_litellm_rust/test_cache.py
2026-09-21 22:53:07 +00:00
kerry-berri
5fb66e8d98
Merge pull request #42353 from BerriAI/litellm_xai_max_completion_tokens
fix(xai): accept max_completion_tokens as a supported param
2026-09-21 15:53:05 -07:00
Yujong Lee
4e2047e9c5 chore: merge main into litellm_gcs_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:51:05 +00:00
Yujong Lee
bd3a680469 merge(main): integrate upstream cache dependencies
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:51:05 +00:00
ryan-crabbe-berri
0efcb9956d
Merge pull request #42278 from BerriAI/litellm_cherry_pick_password_breach_reset
feat(auth): breached password detection, self-service change-password and forced password reset
2026-09-21 15:47:46 -07:00
mateo-berri
212ab630b8 fix(logging_worker): make flush() survive an event loop change
flush() awaited join() on whatever queue the worker held, even one bound to
an event loop that has since closed. Its unfinished counter is never
decremented on the new loop, so the first flush() after a loop change hung
until pytest-timeout killed it and every later one raised "is bound to a
different event loop" from the queue's Event. The CircleCI unit job has
been red on every branch since the first tests that flush without
enqueueing landed, and an SDK script that flushes from a second
asyncio.run() hangs the same way.

flush() now goes through start() first, which carries the tasks stranded
on the previous loop onto the current one and guarantees a worker there to
drain them, the same loop-change handling every other entry point already
had.
2026-09-21 15:44:26 -07:00
yujonglee
403b4be40e
Merge pull request #42311 from BerriAI/litellm_native_disk_cache 2026-09-21 15:43:58 -07:00
kerry
fee8f38ccc Merge remote-tracking branch 'origin/main' into litellm_xai_max_completion_tokens 2026-09-21 22:42:12 +00:00
ryan-crabbe-berri
a776d0d722
Merge pull request #41561 from chopratejas/fix-responses-guardrail-custom-tool-output-writeback
fix(responses): patch custom_tool_call_output in place on guardrail write-back
2026-09-21 15:40:34 -07:00
yuneng-jiang
17f9f5c3e6
Merge pull request #42339 from BerriAI/litellm_stale_test_fix_budget_status_and_bad_db_url
test: fix stale budget-status and bad-database-url assertions
2026-09-21 15:38:55 -07:00
kerry
32c63e332e Revert "fix(xai): accept max_completion_tokens as a supported param"
This reverts commit 4ff251e6b1.
2026-09-21 22:38:29 +00:00
joshua-berri
3353c57e76
Merge pull request #42292 from BerriAI/litellm_extract_mcp_operation_context_7741
refactor(mcp): extract explicit operation context and dispatch
2026-09-21 22:38:07 +00:00
kerry
4ff251e6b1 fix(xai): accept max_completion_tokens as a supported param
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:37:40 +00:00
Yujong Lee
21d1604e64 fix(cache): honor controls and tenant metadata in valkey semantic bridge
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:33:11 +00:00
kerry
5c0589207c fix(xai): accept max_completion_tokens as a supported param
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:30:13 +00:00
ryan-crabbe-berri
dac88cc6d0 fix(auth): keep blanket wildcards and team-less jwts out of the passthrough grant
A team_allowed_routes entry that names no path segment, such as * or /*, is a blanket grant like a named route group, so it no longer opens auth=true passthroughs. The grant in the shared route check now also requires a team on the JWT token, because team_allowed_routes should not apply to a JWT that resolved no team
2026-09-21 15:28:25 -07:00
ryan
8a1c6e49fb feat(auth): only allow password-login dashboard sessions to call /user/password/change
Password login now stamps login_method=username_password into the UI session key
metadata, and change_password rejects any caller that is not a litellm-dashboard
key carrying that marker with 403 before the user row is read. SSO sessions and
user-associated virtual keys can no longer use the endpoint as a current_password
guessing oracle. The forced-reset session is still minted by the password login
path, so it keeps access to the endpoint

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:22:12 +00:00
Yujong Lee
02cc4da252 test(rust): keep s3 parity test edits scoped to the mock handler change
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:18:18 +00:00
Yujong Lee
a286106f4f fix(rust): isolate explicit s3 keys from env tokens and treat 403 misses
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:17:11 +00:00
Mateo Wang
3d26a29a1a
Merge pull request #42283 from BerriAI/litellm_mid_stream_fallback_walks_full_list
fix(router): walk every entry of a fallback list after a mid-stream failure
2026-09-21 15:14:04 -07:00
Yujong Lee
dd175245cf Merge origin/main into litellm_valkey_semantic_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:13:55 +00:00
Mateo Wang
7ae61b62ed
Merge pull request #42323 from BerriAI/litellm_stream_usage_keep_explicit_zero
fix(streaming): keep an explicit provider prompt_tokens=0 or completion_tokens=0 in streamed usage
2026-09-21 15:13:21 -07:00
Yujong Lee
f7b96c9ced Merge origin/main into litellm_native_disk_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:13:09 +00:00
Yujong Lee
5ca7968812 Merge remote-tracking branch 'origin/main' into litellm_rust_cache_s3
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

# Conflicts:
#	litellm-rust/crates/python-bridge/src/cache/config.rs
#	litellm-rust/crates/python-bridge/src/cache/facade.rs
#	litellm-rust/crates/python-bridge/src/cache/handle.rs
#	litellm-rust/crates/python-bridge/src/cache/native.rs
2026-09-21 22:12:40 +00:00
ryan-crabbe-berri
f200d68309
Merge pull request #41560 from chopratejas/fix-responses-agentic-followup-duplicate-kwargs
fix(responses): stop agentic follow-up from passing request params twice
2026-09-21 15:12:18 -07:00
Mateo Wang
055b7314e0
Merge pull request #40121 from Atharva-Kanherkar/fix/mcp-responses-stream-single-lifecycle
fix(responses): stream one lifecycle across MCP auto-execute rounds
2026-09-21 15:11:57 -07:00
ryan-crabbe-berri
a8003102b2 fix(auth): let jwt team_allowed_routes paths grant auth=true passthrough
Explicit paths and trailing-wildcard prefixes in litellm_jwtauth.team_allowed_routes
passed the JWT route check but were then denied by the auth-enforced passthrough
gates, which only read allowed_passthrough_routes from key or team metadata. Both
gates now also accept an explicit team_allowed_routes entry for tokens built by JWT
auth. Named route groups still never grant, and virtual keys, including JWT-mapped
ones, stay key-scoped
2026-09-21 15:11:48 -07:00
Mateo Wang
e7bff277a6
Merge pull request #40251 from BerriAI/litellm_decrease_anys_opus5_r5
refactor(types): remove 1,173 Any errors across 169 backend files
2026-09-21 15:11:44 -07:00
Yujong Lee
905909741d merge(main): integrate upstream Azure secret changes
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:10:22 +00:00