Commit graph

18680 commits

Author SHA1 Message Date
Yuneng Jiang
463ece762a
fix(proxy): preserve opted-in environment variable saves 2026-09-17 20:53:21 -07:00
Yuneng Jiang
af17691389
fix(proxy): persist only the keys a caller changed in save_config 2026-09-17 20:32:04 -07:00
yassin
9a66a49c41 Merge remote-tracking branch 'origin/main' into litellm_mcp_admin_terminate_sessions_revoke_credentials 2026-09-18 03:06:17 +00:00
yassin
ce48a3fbcc test(mcp): give the new cache and tombstone patches TQ008 reasons and match the keyword eviction call
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:49:41 +00:00
yassin
3f824793e5 fix(proxy): price a Transcribe job from the parsed start response instead of the relayed httpx body
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:48:09 +00:00
yucheng
72e847288a feat(otel v2): opt-in llm_only span scope for Langfuse destinations and the operator Langfuse exporter
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:47:29 +00:00
kerry-berri
db37977307
Merge pull request #41736 from BerriAI/litellm_mistral_cache_read_pricing
fix(model_prices): add cache-read pricing to Mistral chat models missing it
2026-09-17 19:35:26 -07:00
kerry
1bc4509bf0 test(model_prices): type the Mistral cache-read helpers and check the backup registry too
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:22:06 +00:00
kerry
6933ca2337 fix(model_prices): add cache-read pricing to Mistral chat models missing it
Mistral bills cached prompt tokens at 10% of the input price for every model, but twelve
active mistral/ chat rows had no cache_read_input_token_cost, so the cost calculator billed
their cache hits at zero. Adds the derived rate to those rows in both registry copies and a
registry invariant test that fails when an active priced Mistral chat row drops the field or
drifts from the 10% ratio

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:13:44 +00:00
yassin
504b464417 test(proxy): assert the persisted member budget row as a whole instead of field absence
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:12:12 +00:00
yassin
e6349d00f3 Merge remote-tracking branch 'origin/main' into litellm_mcp_admin_terminate_sessions_revoke_credentials 2026-09-18 02:10:58 +00:00
yassin
fd834f6f8b fix(mcp): broadcast BYOK and OAuth credential eviction to peer workers and expire admin session tombstones
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:10:50 +00:00
yassin
507219e26f fix(proxy): resolve temporary budget grants against the live team default instead of a snapshot
A temporary-only member update no longer clones the team default budget into the private row. The row stores just the temp pair and auth, spend admission and reservation add the active increase to the current shared default, so a later lowering of the default reaches members with an active grant

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:09:09 +00:00
kerry
38bc855235 test(cost_map): stop pinning supports_reasoning absent on the openrouter o1 entry
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:09:04 +00:00
yassin
2decf3761a fix(proxy): price a deleted Transcribe job from the start response the proxy relayed
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 02:08:21 +00:00
yuneng-jiang
34718f0da6
Merge pull request #41723 from BerriAI/litellm_/circleci-specific-sha-0cf414
fix(proxy): forward every method on the typesafe pass-through route
2026-09-17 18:57:06 -07:00
Joshua Valluru
f83992f786 test(mcp): reject every unauthorized server in health results 2026-09-17 18:44:20 -07:00
yassin
9f6e524285 fix(deepgram): ignore zero-duration Metadata frames when billing streamed audio
Deepgram sends a Metadata frame with duration 0 on connect. When the closing Metadata frame is not collected before the socket closes, that handshake frame used to become the billed duration and the session logged zero spend. Only a positive Metadata duration is treated as authoritative now; otherwise the furthest Results end time is billed

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:43:03 +00:00
Yuneng Jiang
471eff8421
test(logging): add azure_spillover to the GCS pub/sub spend-log golden
#41569 made SpendLogsMetadata always carry azure_spillover, null unless
Azure reported a spillover, and updated the unit tests that run on the PR
gate. The GCS pub/sub golden only runs on CircleCI's logging lane, so it
kept the old key set and test_async_gcs_pub_sub_v1 has failed on every
run since that merge with an extra metadata.azure_spillover key
2026-09-17 18:33:42 -07:00
yassin
3926e74e9d test(proxy): lock plain member updates to the merge-patch contract without a team default snapshot
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:28:49 +00:00
Joshua Valluru
dfd0474788 fix(ci): preserve repository paths in dependency coverage reports 2026-09-17 18:25:46 -07:00
mateo-berri
ba93c4943c Merge remote-tracking branch 'origin/main' into litellm_mistral_codex_reasoning_effort_client_metadata 2026-09-17 18:21:24 -07:00
mateo-berri
b506305feb Merge remote-tracking branch 'origin/main' into litellm_vertex_chirp3_streaming_stt
# Conflicts:
#	uv.lock
2026-09-17 18:21:05 -07:00
Yuneng Jiang
349e8b9358
test(proxy): forward each method through the typesafe route to a mocked upstream
The route test only resolved route names. It now sends every method through
the proxy with a virtual key and asserts the upstream receives that method,
the proxy's TypeSafe key and the caller's body
2026-09-17 18:19:42 -07:00
yassin
393d084db7 feat(proxy): restrict Transcribe media and output buckets per operator allowlist
Non-admin keys may only start transcription jobs whose media and transcript output live in the S3 buckets listed in general_settings.transcribe_media_buckets, and may not supply DataAccessRoleArn or JobExecutionSettings. The setting is editable from the Admin UI general settings table (new List editor) and DB values load into the running proxy when config.yaml does not set it

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:18:07 +00:00
yassin
659b85ea80 Merge remote-tracking branch 'origin/main' into litellm_deepgram_listen_websocket_passthrough
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

# Conflicts:
#	litellm/proxy/pass_through_endpoints/pass_through_endpoints.py
2026-09-18 01:17:36 +00:00
yassin
37091c2bc7 Merge remote-tracking branch 'origin/main' into litellm_lazy_fastapi_bpe_imports 2026-09-18 01:14:48 +00:00
mateo-berri
e5744c5d88 fix(azure_ai): mint an oidc Entra token only from the agent's own ids
The OIDC branch of the agent token mint handed a missing tenant_id or
client_id to the shared helper, which fills them from the host's
AZURE_TENANT_ID and AZURE_CLIENT_ID, so an agent carrying only an
oidc/ token could be authenticated with the host's identity. The
branch now needs both ids on the agent and otherwise fails with the
credential help, which names the requirement
2026-09-17 18:13:41 -07:00
Joshua Valluru
21beb9b7b1 fix(ci): verify coverage uploads and normalize dependency inventories 2026-09-17 18:11:49 -07:00
Yuneng Jiang
e8c1fe884e
Merge remote-tracking branch 'origin/main' into litellm_/circleci-specific-sha-0cf414 2026-09-17 18:05:39 -07:00
Yuneng Jiang
acc375a2a9
fix(proxy): forward every method on the typesafe pass-through route
#41607 registered the typesafe pass-through with a route that only accepted
GET and POST, so a PUT, DELETE or PATCH to /typesafe/... came back 405
before reaching the upstream. CircleCI's pass-through method test caught it,
but that lane does not run on the PR gate, so the mapped unit test now
covers the same invariant for typesafe

The same CircleCI run also failed test_models_by_provider because typesafe
is not a key of models_by_provider. Registering it there would satisfy the
assertion without changing behaviour: typesafe has no LlmProviders member,
so a typesafe/* deployment never loads and get_valid_models returns nothing,
and its spend is priced straight from model_cost. The test already skips
search-mode providers for that reason, so it now skips evaluation mode too
2026-09-17 18:04:58 -07:00
Mateo Wang
c25c098bc1
Merge pull request #41469 from BerriAI/litellm_bedrock_mantle_responses_drop_top_p
fix(responses): drop top_p for gpt-5 reasoning models when drop_params is set
2026-09-17 18:04:19 -07:00
Mateo Wang
3424390101
Merge pull request #41448 from BerriAI/litellm_fix_passthrough_empty_query_params_drop_url_query
fix(passthrough): keep target URL query when client sends no query params
2026-09-17 18:02:48 -07:00
yassin
ea37596b88 feat(mcp): let proxy admins force-close live MCP sessions and revoke stored user credentials
Adds an admin-only DELETE /v1/mcp/sessions that terminates stateful MCP gateway sessions on the current worker by session id prefix and/or by the LiteLLM user that opened them, tombstones the terminated ids so a client reusing one gets 404 instead of a silently recreated stateless session, and lets PROXY_ADMIN name a user_id on the BYOK and OAuth credential delete routes. Full and view-only admins can list every user's stored credential metadata for a server (never the secret). The dashboard gains Disconnect controls on the Live Connections tab and a User Credentials tab with Revoke controls, both hidden from read-only admins.

Resolves LIT-8001

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:01:26 +00:00
mateo-berri
788e6eb737 merge: origin/main into litellm_jwt_token_exchange_grant 2026-09-17 17:59:23 -07:00
mateo-berri
e82d15a3aa feat(vertex_ai): stream Chirp speech-to-text over /v1/realtime
Bridge OpenAI Realtime transcription sessions on vertex_ai/chirp_* models to
Google Speech-to-Text v2 StreamingRecognize over gRPC, so partial and final
transcripts stream back while audio is still being sent. Interim results become
delta events, finals become completed events carrying billed seconds, the gRPC
stream rotates at 240 s under Google's five-minute cap with billed time chained
across rotations, and audio is split into 25 KB requests.

The OpenAI transcription protocol helpers move into a shared module that Meta
Muse now uses too, google-cloud-speech ships behind a new stt-vertex-chirp extra
bundled into the proxy runtime, and the cost map lists /v1/realtime for chirp_3.
2026-09-17 17:57:40 -07:00
Mateo Wang
706f69af50
Merge pull request #41665 from BerriAI/litellm_remove_dead_vertex_v1beta1_stub
refactor(vertex_ai): remove constant-False is_using_v1beta1_features stub and its dead call sites
2026-09-17 17:56:22 -07:00
Mateo Wang
151a92a230
Merge pull request #41662 from BerriAI/litellm_remove_retired_provider_streaming_handlers
chore(streaming): remove retired ai21/maritalk/baseten/azure raw-bytes handlers and dead palm completion code
2026-09-17 17:56:15 -07:00
Mateo Wang
98b3564a5b
Merge pull request #41660 from BerriAI/litellm_remove_commented_out_proxy_tests
chore(tests): remove fully commented-out proxy test files and their CI entries
2026-09-17 17:56:02 -07:00
Mateo Wang
2e195c5f70
Merge pull request #41654 from BerriAI/litellm_remove_commented_out_test_files
test: remove 15 fully commented-out test files that collect no tests
2026-09-17 17:55:55 -07:00
Mateo Wang
9966d9d1a8
Merge pull request #41652 from BerriAI/litellm_remove_dead_langfuse_v1_path
refactor(langfuse): remove unreachable langfuse v1 logging path
2026-09-17 17:55:47 -07:00
Mateo Wang
cb14dee357
Merge pull request #41648 from BerriAI/litellm_remove_commented_streaming_tests
test(streaming): remove commented-out retired-provider streaming tests
2026-09-17 17:55:40 -07:00
Mateo Wang
a7dc6551c0
Merge pull request #41640 from BerriAI/litellm_remove_dead_provider_config_test_blocks
chore(tests): remove commented-out hf, petals and vertex ai completion blocks
2026-09-17 17:55:12 -07:00
kerry-berri
f51f01fb54
Merge pull request #41443 from BerriAI/litellm_remove_brittle_price_pinning_tests
test: delete unit-test assertions that pin cost-map prices, limits and deprecation dates
2026-09-17 17:52:42 -07:00
Joshua Valluru
daff22a884 test(mcp): grant the guardrail control team its server 2026-09-17 17:50:01 -07:00
ryan-crabbe-berri
85fe646776
Merge pull request #41694 from BerriAI/litellm_rename_model_sync_allowlists
fix(proxy): propagate db model renames to key, team, org, project and user model allowlists
2026-09-17 17:42:06 -07:00
Joshua Valluru
6aa921c1bc fix(ci): run dependency tests in an isolated Python environment 2026-09-17 17:42:01 -07:00
Joshua Valluru
640b0e5fa9 test(mcp): discover concrete tools through a catalog key 2026-09-17 17:41:57 -07:00
kerry
8504c51f6c Revert "test: keep prompt cache prediction logic tests and drop only their price pins"
This reverts commit 810df257d8.
2026-09-18 00:40:38 +00:00
Mateo Wang
2fb502a556
Merge pull request #41702 from BerriAI/litellm_bedrock_invoke_tool_search_opus48_gen5
fix(bedrock): gate Invoke tool search on the model map for Opus 4.8 and gen 5 Claude
2026-09-17 17:39:34 -07:00