Commit graph

52467 commits

Author SHA1 Message Date
Yuneng Jiang
5c68545104
test: fix stale budget-status and bad-database-url assertions
Two CI checks were asserting behaviour the proxy no longer has. Neither
was catching anything; both now fail for the right reason.

budget_exceeded (tests/otel_tests/test_e2e_budgeting.py)

bf804f5188 made 422 the default for budget refusals and added
budget_exceeded_status_code to restore 429 for callers that need it. The
e2e budget tests still asserted 429, so all six have been failing on a
status change that was deliberate. Assert 422, the documented default,
rather than reading litellm.budget_exceeded_status_code back — a test
that asks the code what it does would have passed straight through this
change and through the next one.

The helpers also caught bare Exception, so a connection error reached
`e.body` and surfaced as an AttributeError instead of a failed
assertion. Narrow both to openai.APIStatusError, which is what a refusal
actually raises (UnprocessableEntityError for 422, RateLimitError for
429), and let anything else propagate as itself.

test_bad_database_url (.circleci/config.yml)

The check required "Database setup failed after multiple retries", which
only the v1 resolver emits, OR uvicorn's "Application startup failed.
Exiting.". With v2 the default, the first branch is dead and the whole
assertion rests on an incidental uvicorn line that HEAD's run did not
emit at all.

Assert the behaviour instead of the wording: the container exits
non-zero, the log names the unreachable server (P1001), it never reaches
"Application startup complete", and it is not left running. The exit
code was previously discarded by `|| true`, so the one thing the job
most needed to check was never checked.

Verified by running the bad-DATABASE_URL container: exit 3, P1001
present, no startup-complete line, container stopped — the new check
passes and the old one passed only by the uvicorn line's accident.
2026-09-21 15:00:54 -07:00
Yujong Lee
58ffa8e4ce refactor(rust): drop variable rebinding in s3 cache and bridge config
Also adds the startup_nodes parameter to the _CacheTestHandle.redis stub to match the merged runtime signature

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 22:00:09 +00:00
Mateo Wang
7b8bc54237
Merge pull request #42036 from BerriAI/litellm_team_membership_lookup_fail_closed
fix(auth): fail closed when the team membership lookup hits a db outage
2026-09-21 14:58:46 -07:00
mateo-berri
e7557ada57 fix(responses): list executed MCP calls as completed mcp_call items in the final output 2026-09-21 14:56:02 -07:00
ryan
7c8aed072f chore: merge main into litellm_cherry_pick_password_breach_reset
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:54:35 +00:00
Mateo Wang
4b54897b36
Merge pull request #42315 from BerriAI/litellm_scim_delete_evict_user_cache
fix(proxy): evict the cached user row when SCIM or /user/delete removes a user
2026-09-21 14:51:53 -07:00
yucheng-berri
e0e5b7924a
Merge pull request #42312 from BerriAI/litellm_bedrock_batch_s3_creds_leak
Register s3_access_key_id, s3_secret_access_key and s3_encryption_key_id as
LiteLLM-owned batch params so they are no longer forwarded to Bedrock as
additionalModelRequestFields (which 400s ordinary chat on a batch-configured
deployment), keep them on CredentialLiteLLMParams so the batch/file paths
still receive them, and redact the S3 credential key names in debug logs.

Resolves LIT-8290

Co-authored-by: yucheng <yucheng@berri.ai>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 14:50:54 -07:00
Mateo Wang
10d0d5acb2
Merge pull request #42314 from BerriAI/litellm_alerting_batch_keeps_distinct_alerts
fix(alerting): deliver every distinct alert queued in one flush window
2026-09-21 14:49:54 -07:00
mateo-berri
b0305d0a31 test(router): call both mid-stream fallback attempt functions directly
The router coverage gate wants every router.py function reached by name from
a router test. The two per-endpoint attempt functions were only reached through
their callers, so each now has a direct test proving the per-request controls
carrier never reaches the provider call and every hop's stream comes back wrapped.
2026-09-21 14:48:42 -07:00
Yujong Lee
e0e4850ec1 merge(main): integrate upstream secret manager changes
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:48:18 +00:00
Yujong Lee
63c16fe5ac 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 21:47:35 +00:00
Yujong Lee
1509afe77e Merge remote-tracking branch 'origin/main' into litellm_gcs_native_cache 2026-09-21 21:47:29 +00:00
Yujong Lee
9f4448f42f chore(rust): merge main into litellm_gcs_native_cache
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:29 +00:00
Yujong Lee
b926cf998a chore: merge main into litellm_rust_secrets_azure_key_vault
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:47:21 +00:00
Yujong Lee
bc641f01ae Merge remote-tracking branch 'origin/main' into litellm_native_azure_blob_cache 2026-09-21 21:47:19 +00:00
yujonglee
ebb4d230f8
Merge pull request #42300 from BerriAI/litellm_python_interop_foundation
fix(rust): preserve Python settings semantics at the native boundary
2026-09-21 14:46:37 -07:00
Yujong Lee
3ebbb2af5b 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/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
#	tests/test_litellm_rust/test_cache.py
2026-09-21 21:46:22 +00:00
yujonglee
162e5c4338
Merge pull request #42303 from BerriAI/litellm_rust_secrets_cyberark
feat(rust): add CyberArk Conjur secret manager backend
2026-09-21 14:45:39 -07:00
Yujong Lee
4845beddc0 ci(rust): raise native wheel size gate to 40 MB
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:44:26 +00:00
Yujong Lee
f43f9012f1 fix(rust): handle disk cache topology
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:44:24 +00:00
Yassin Kortam
17b56cc4ca
Merge pull request #41505 from BerriAI/litellm_keep_config_models_on_empty_config_read
fix(proxy): keep config-defined deployments when a config read returns no model_list
2026-09-21 16:43:15 -05:00
Yujong Lee
2f54f6078d chore: merge main into litellm_native_azure_blob_cache
Combines the Redis cluster bridge changes with the Azure Blob variant and
keeps account URL query parameters when building the container URL

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:43:08 +00:00
kerry-berri
75dc9082df
Merge pull request #42066 from BerriAI/litellm_cost_shard_batches_realtime
test(integration): batch and realtime cost cases
2026-09-21 14:43:01 -07:00
mateo-berri
51eaad657b fix(proxy): look the entity spend table up lazily so only the selected batcher table is touched 2026-09-21 14:42:23 -07:00
Yujong Lee
98e9e8c602 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 21:42:10 +00:00
kerry-berri
5e746d95dc
Merge pull request #42333 from BerriAI/litellm-providers/price-sync-openrouter
chore(prices): sync OpenRouter prices: 1 model
2026-09-21 14:41:07 -07:00
Joshua Valluru
5ec61e7a0b chore: merge main into MCP ordering fix 2026-09-21 14:36:41 -07:00
Yujong Lee
d90ff4a30b refactor(rust): trim vault cert login endpoint
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:35:39 +00:00
kerry
ebad623079 Merge remote-tracking branch 'origin/main' into litellm_cost_shard_batches_realtime 2026-09-21 21:34:05 +00:00
kerry-berri
29792c45a9
Merge pull request #42060 from BerriAI/litellm_cost_shard_proxy_behaviour
test(integration): proxy behaviour cost cases
2026-09-21 14:33:47 -07:00
Yujong Lee
ef2ab74c7a refactor(rust): back the vault secret manager with vaultrs
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:33:38 +00:00
Yujong Lee
c7c0afb1f0 ci(rust): raise the native wheel size gate to 40 MB
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:33:06 +00:00
yucheng-berri
506cecfb0b
Merge pull request #42267 from BerriAI/litellm_otel_v2_langfuse_ocr_output
fix(otel v2): map OCR page markdown onto the generation output
2026-09-21 14:33:02 -07:00
Yujong Lee
9c48e137dc fix(rust): preserve HTTP host and TLS error context
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:32:33 +00:00
Yujong Lee
27808b51a0 chore(rust): drop interop planning note
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:32:33 +00:00
Yujong Lee
5aeb367d2a fix(rust): preserve Python settings coercion at the native boundary 2026-09-21 21:32:33 +00:00
Yujong Lee
52216df1ff fix(rust): preserve structured conversion semantics 2026-09-21 21:32:33 +00:00
Yujong Lee
a41061be43 docs(rust): plan Python interop foundation 2026-09-21 21:32:33 +00:00
Joshua Valluru
4c1a6309c2 test(mcp): type server fixtures and role queries 2026-09-21 14:31:28 -07:00
berriai-litellm-provider-info-sync[bot]
8c64f82bb3
chore(prices): sync OpenRouter prices: 1 model
openrouter/deepseek/deepseek-v4-pro: input_cost_per_token, output_cost_per_token, cache_read_input_token_cost
2026-09-21 21:31:16 +00:00
yucheng-berri
79d6e236f9
Merge pull request #39805 from BerriAI/litellm_mcp_admin_api_preserve_oauth_scopes
fix(mcp): keep oauth scopes in admin api credential redaction
2026-09-21 14:29:13 -07:00
Yuneng Jiang
d1b160310f
fix(docker): require a generated master key in the quickstart stack
The committed sk-1234 placeholder is in PUBLICLY_KNOWN_MASTER_KEYS, so once an
image ships fe480533e8 the proxy refuses to boot and the quickstart stops
working. It also meant the documented stack came up on port 4000 with a
credential anyone could guess.

Both keys now come from .env and compose refuses to render without them. The
salt key is generated alongside so it stays stable across restarts, which
keeps stored credentials readable.

Verified: no .env -> compose fails closed naming the missing variable; with a
generated .env the stack is healthy, /v1/models returns 200 for the generated
key, 401 for sk-1234 and 401 unauthenticated, /ui/ serves, and the key still
works after a restart.
2026-09-21 14:27:29 -07:00
kerry
1e54b4f286 Merge remote-tracking branch 'origin/litellm_cost_shard_proxy_behaviour' into litellm_cost_shard_batches_realtime 2026-09-21 21:25:05 +00:00
kerry
924ca78d06 Merge remote-tracking branch 'origin/main' into litellm_cost_shard_proxy_behaviour 2026-09-21 21:24:54 +00:00
Mateo Wang
124e5d6d53
Merge pull request #34358 from BerriAI/claude/e2e-tests-custom-endpoints-qxoi1o
test(e2e): replace custom endpoints_client with provider SDK clients
2026-09-21 14:24:38 -07:00
kerry-berri
34d5f9d41b
Merge pull request #42052 from BerriAI/litellm_cost_shard_provider_wires
test(integration): provider wire cost cases
2026-09-21 14:24:35 -07:00
Yujong Lee
4a8826e03b refactor(cache-disk): tidy python adapter
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:23:56 +00:00
Yujong Lee
e729820301 revert(rust): drop wheel-size release profile tweaks, gate moves in #42300
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:22:27 +00:00
Yujong Lee
59675bc0c9 Revert "ci(rust): raise native wheel size gate to 35 MB"
This reverts commit c1382086d6.
2026-09-21 21:22:26 +00:00
Yujong Lee
3ce436af5e refactor(cache-disk): isolate python compatibility behind a value adapter
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-21 21:22:22 +00:00