Commit graph

48771 commits

Author SHA1 Message Date
Mateo Wang
d09bbae1c6
Merge pull request #42618 from BerriAI/litellm_backport_stable_1_102_x_realtime_otel
Some checks failed
ai-gateway image / ai-gateway release image (push) Has been cancelled
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
chore(release): backport #42388 and #41462 to stable/1.102.x
2026-09-22 20:04:11 -07:00
Mateo Wang
188c9d1f9f
Merge pull request #42595 from BerriAI/litellm_cherrypick_1_102_x
feat(typesafe): backport the jev change set to stable/1.102.x for v1.102.1
2026-09-22 20:01:25 -07:00
mateo-berri
d1cd2dccaf chore(backport): regenerate the openapi snapshot and dashboard api types for stable/1.102.x
The committed schema.d.ts and lazy OpenAPI snapshot were taken verbatim from main by the #41615 and #41757 picks, so they described classifier types, routing causes, and a guardrail that this line does not ship and lacked the /auto_router/manage permission. Regenerated under Python 3.12, the interpreter the check-ui-api-types workflow uses.
2026-09-22 19:13:48 -07:00
mateo-berri
5aa45f1bca test(realtime): drop legacy InvalidStatusCode tests and pin websockets imports
The two redaction tests raised the deprecated InvalidStatusCode, which the
websockets 15 asyncio client never raises, and asserted the raw 403 close
code that the handshake refusal path replaced with 1008. The refusal path
builds its close reason from the status code alone, so there is no secret
to redact there, and the handshake refusal tests already cover the error
event and the 1008 close.

Those refusal tests only passed when run after a sibling test had imported
websockets.asyncio.client, since websockets lazy-loads its exceptions
submodule. Importing InvalidStatus, Response, and Headers from their own
submodules makes them pass in any order.

(cherry picked from commit 54dbe8eb9a)
2026-09-23 00:46:03 +00:00
mateo-berri
4bfac88281 fix(ui): adapt the jev dashboard pieces to stable/1.102.x 2026-09-22 17:40:03 -07:00
yuneng
da246e9282 chore(deps): bump anyio to 4.14.2 and soupsieve to 2.9.0
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-22 23:03:52 +00:00
Yassin Kortam
9a46f1f53e Merge pull request #41462 from BerriAI/litellm_otel_promote_nested_request_metadata_keys
feat(otel): promote nested request metadata keys to litellm.metadata.* span attributes

(cherry picked from commit 79fc5153d3)
2026-09-22 23:02:58 +00:00
devin-ai-integration[bot]
96e7739dcb fix(realtime): surface an upstream handshake refusal as an error event and policy close (#42388)
* fix(realtime): surface an upstream handshake refusal as an error event and policy close

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

* test(realtime): tidy the handshake refusal e2e

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

* fix(realtime): keep upstream exception text out of the Azure client error

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

* refactor(realtime): map handshake refusal close codes with a lookup

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>
(cherry picked from commit 2bab39e374)
2026-09-22 23:02:53 +00:00
devin-ai-integration[bot]
d0687347a7 feat(openrouter): price typesafe/jev-1.13 and add an openrouter decisions pass-through (#42301)
Backport of #42301 to stable/1.102.x.
Cherry-picked from 1106b16745 (main).
2026-09-22 22:49:10 +00:00
moe-berri
e20cfbeaeb feat(auto-router): add JEV classifier alongside LLM classifier
Backport of #41886 to stable/1.102.x.
Cherry-picked from a83773cfa5 (main).
2026-09-22 22:49:10 +00:00
moe-berri
92a2a2f924 fix(proxy): enforce virtual key budgets for JEV test routing
Backport of #41879 to stable/1.102.x.
Cherry-picked from 1e161f516c (main).
2026-09-22 22:49:10 +00:00
Yassin Kortam
4b0ffcdf41 feat(guardrails): add TypeSafe Jev relevance-based compaction guardrail
Backport of #41757 to stable/1.102.x.
Cherry-picked from 2edda5aec3 (main).
2026-09-22 22:49:10 +00:00
yuneng-jiang
79b72b8594 fix(proxy): forward every method on the typesafe pass-through route
Backport of #41723 to stable/1.102.x.
Cherry-picked from 34718f0da6 (main).
2026-09-22 22:49:10 +00:00
Mateo Wang
b5ac61374e feat(router): add TypeSafe Jev as a complexity router classifier
Backport of #41615 to stable/1.102.x.
Cherry-picked from cf42b607c3 (main).
2026-09-22 22:49:10 +00:00
Tin Chi Lo
1a3cec8f5e feat(auto-router): allow opted-in team members to manage their routers
Prerequisite for #41615 and #41879 on stable/1.102.x.
Cherry-picked from 109ca70f66 (main).
2026-09-22 22:49:10 +00:00
mateo-berri
3b483c80f6 feat(typesafe): add TypeSafe Jev passthrough with logging and cost tracking
Backport of #41607 to stable/1.102.x.
Cherry-picked from deb9d8aedd (main).

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-22 21:34:24 +00:00
Mateo Wang
89000e402f
Merge pull request #42538 from BerriAI/litellm_cherrypick_safeguards_1_102_x
fix(anthropic): backport #42152 and #42288 to stable/1.102.x for v1.102.1
2026-09-22 14:29:04 -07:00
kerry
0fee6fcc76 fix(test): run the all-beta-headers bedrock cases on Claude Fable 5.1
Backport of #42048 to stable/1.102.x.
Cherry-picked from 7966f50c34 (main). The safeguards backport maps the dangerous-tool-use-2026-09-03 beta for Bedrock, which Claude Opus 4.5 on Bedrock Invoke rejects as an invalid beta flag, so the all-beta-headers Bedrock cases run on Claude Fable 5.1 as they do on main.
2026-09-22 12:54:44 -07:00
mateo-berri
712428eded chore(types): keep the backported safeguards annotations within the line's budgets
The picked TypedDict fields use read-only Sequence[Mapping[str, object]] annotations and the picked Vertex test carries a test-quality-ok marker, so stable/1.102.x's LIT001, LIT012 and TQ008 budgets hold. Static typing only, no runtime change.
2026-09-22 12:18:27 -07:00
mateo-berri
4f4ed1121a bump: version 1.102.1 2026-09-22 10:46:02 -07:00
mateo-berri
60c019166a test: add the local_beta_headers_config fixture the safeguards tests use
Hand-ported to stable/1.102.x from 47b2479c94 on main (fix(bedrock): gate Invoke tool search on the model map's supports_tool_search flag), the one prerequisite the #42288 handler tests need; the rest of that commit stays on main.
2026-09-22 10:45:59 -07:00
mateo-berri
b6f77c32b5 fix(anthropic): forward Claude Code safeguards and dangerous-tool-use beta to Bedrock Invoke and Vertex on /v1/messages
Backport of #42288 to stable/1.102.x.
Cherry-picked from merge commit fc82f6e8fa (litellm_safeguards_bedrock_vertex_messages).
The line has no bedrock_mantle beta-header mapping and no Mantle /v1/messages route, so the Mantle mapping, its test file, and the bedrock_mantle test parameter are left out.
2026-09-22 10:45:57 -07:00
yassin
e714ab4b20 fix(anthropic): forward safeguards and anthropic-beta unchanged on native /v1/messages
Backport of #42152 to stable/1.102.x.
Cherry-picked from merge commit e912ebe999 (litellm_claude_code_safeguards_passthrough).
2026-09-22 10:38:43 -07:00
yuneng-jiang
95293834e8
Merge pull request #42059 from BerriAI/litellm_backport_42053_rc_1_102_0
test(e2e): backport the Nova Sonic nova-2-sonic model fix to rc/1.102.0
2026-09-19 17:36:17 -07:00
Yuneng Jiang
64db6e1d3b
test(e2e): cite the source and date for the pinned Nova Sonic model id
AGENTS.md allows a vendor-owned literal only when its source and date are cited
next to it. A live realtime test cannot avoid naming a model, so record how the
id was checked, and record that a retired id fails as a hang rather than an
error so the next reader does not start by suspecting litellm.

(cherry picked from commit 9f84382a24)
2026-09-19 17:32:32 -07:00
Yuneng Jiang
c48532e21b
test(e2e): point the Nova Sonic realtime test at nova-2-sonic
AWS retired amazon.nova-sonic-v1:0. GetFoundationModel now answers
ResourceNotFoundException "This model version has reached the end of its life",
and opening a bidirectional stream against it fails with ValidationException
"The provided model identifier is invalid". amazon.nova-2-sonic-v1:0 is the
active replacement.

The test passed on builds 219 (2026-09-16) and 246 (2026-09-17) and has failed
every run since, three attempts per build, with no litellm change to the
realtime path in between. The symptom was a clean websocket close: Bedrock ends
the stream rather than erroring, the forwarder treats a None receive as a normal
stream end and closes the client socket, so the client sees ConnectionClosedOK
and the test fails waiting for response.done.

litellm already carries both models in the cost map, with
"deprecation_date": "2026-09-14" on the old one, and the promptStart
transformation already sends the audioOutputConfiguration that nova-2-sonic
requires; only the test constant was left behind.

Verified against live Bedrock with the promptStart shape the transformation
builds: amazon.nova-sonic-v1:0 raises "The provided model identifier is
invalid", amazon.nova-2-sonic-v1:0 opens a session and returns a usageEvent.

The mocked handler and provider-cache tests keep the old id: it is only a label
there, no call reaches AWS.

(cherry picked from commit ca18755b64)
2026-09-19 17:32:31 -07:00
Mateo Wang
eebb3cb17d
Merge pull request #41935 from BerriAI/litellm_backport_41347_rc_1_102_0
Some checks failed
ai-gateway image / ai-gateway release image (push) Has been cancelled
fix(team): apply team_member_budget updates to members still on the team default (backport of #41347 to rc/1.102.0)
2026-09-19 00:01:54 -07:00
mateo-berri
868052b1ac fix(team): apply team_member_budget updates to members still on the team default
Backport of #41347 to rc/1.102.0.
Cherry-picked from merge commit 4bb1ae115b (main), originally by app/devin-ai-integration.

Conflicts: main's #41349 (membership rows written through upsert) is not on this line, so add_new_member keeps its create call and still writes no membership row when no budget resolves. The picked tests are adapted to that and to this line's _check_team_member_budget, which loads the membership itself.
2026-09-18 23:18:38 -07:00
Mateo Wang
1a993c3d28
Merge pull request #41854 from BerriAI/litellm_backport_stable_batch_rc_1_102_0
Some checks failed
ai-gateway image / ai-gateway release image (push) Waiting to run
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
fix: backport eight backport-stable fixes to rc/1.102.0 (#40596, #41046, #41086, #41171, #41178, #41283, #41495, #41689)
2026-09-18 12:16:09 -07:00
mateo-berri
3a7a204b9b fix(responses): keep the addressed response id off bridged provider requests
Backport of #41689 to rc/1.102.0.
Cherry-picked from merge commit 07b5051c0d (main), originally by app/devin-ai-integration.

Both conflicts were in test files: the rc line lacks the Codex additional_tools tests that sit next to the new test in test_handler.py on main, and its test_utils.py imports all_litellm_params on a separate line, so only this PR's own additions (the imports, the recording handler, and the two new tests) are taken.
2026-09-18 11:15:56 -07:00
mateo-berri
707a81aeae fix(utils): run post-call deployment hook on converted chat streams
Backport of #41495 to rc/1.102.0.
Cherry-picked from merge commit 0add8c0083 (main), originally by app/devin-ai-integration.

The only conflict was the test import header: the rc line never gained the logging_executor import that main carries next to this change, so only the MockResponseIterator import comes along.
2026-09-18 11:11:07 -07:00
mateo-berri
8f8b47d6f0 fix(proxy): retry rate-limit fallbacks from a pristine request snapshot
Backport of #40596 to rc/1.102.0.
Cherry-picked from merge commit c5325b1492 (main), originally by app/devin-ai-integration.
2026-09-18 11:10:33 -07:00
mateo-berri
e6f29fbe9f fix(logging): track spend for streams a deployment hook converted to non-streaming
Backport of #41171 to rc/1.102.0.
Cherry-picked from merge commit c3222ec110 (main), originally by app/devin-ai-integration.
2026-09-18 11:10:31 -07:00
mateo-berri
24e583c7f6 fix(proxy): keep access-group raw SQL writes on the writer while writer_unavailable is stale
Backport of #41283 to rc/1.102.0.
Cherry-picked from merge commit 0e5be275b0 (main), originally by app/devin-ai-integration.
2026-09-18 11:10:30 -07:00
mateo-berri
7c1186e880 fix(router): bind per-request routing_strategy override selectors to the request's callbacks
Backport of #41178 to rc/1.102.0.
Cherry-picked from merge commit 1ca4579375 (main), originally by app/devin-ai-integration.
2026-09-18 11:10:28 -07:00
mateo-berri
034998be71 fix(cli): drop enum.StrEnum so the CLI imports on Python 3.10
Backport of #41046 to rc/1.102.0.
Cherry-picked from merge commit 1ba97665b2 (main), originally by app/devin-ai-integration.
2026-09-18 11:10:27 -07:00
mateo-berri
31d78fa084 fix(proxy): keep org admins' own team memberships in other orgs visible on team list
Backport of #41086 to rc/1.102.0.
Cherry-picked from merge commit 4123b4bc2b (main), originally by app/devin-ai-integration.

rc/1.102.0 has no litellm/proxy/auth/resolvers/grants.py, so its one-line import change is dropped; auth_checks.py imports UserNotFoundError from the new types module, so every importer on this line still resolves.
2026-09-18 11:10:08 -07:00
Mateo Wang
4fd5bc6b22
Merge pull request #41701 from BerriAI/litellm_cherrypick_rc_1_102_0
fix(license): backport the wildcard license auto_router grant to rc/1.102.0 (#41684)
2026-09-17 17:09:09 -07:00
Mateo Wang
e1ef8b336e
Merge pull request #41697 from BerriAI/litellm_backport_39512_rc_1_102_0
fix(images): backport the image[] and mask[] form key drop to rc/1.102.0 (#39512)
2026-09-17 16:58:46 -07:00
mateo-berri
e71b78f01c fix(license): let a wildcard allowed_features license grant the auto_router feature
Backport of #41684 to rc/1.102.0.
Cherry-picked from c2fbb11dca (litellm_wildcard_license_auto_router).
2026-09-17 16:42:25 -07:00
mateo-berri
24d44530d4 test(images): type the monkeypatch fixture on the backported edit tests 2026-09-17 16:34:29 -07:00
mateo-berri
0e03b62ab8 fix(images): backport the image[] and mask[] form key drop to rc/1.102.0 (#39512)
(cherry picked from commit 289c52bcd6)
2026-09-17 16:21:06 -07:00
yuneng-jiang
3f965660a1
Merge pull request #41342 from BerriAI/litellm_backport_param_leaks_rc_1_102_0
fix(responses): backport request-param leak fixes to rc/1.102.0 (#41018, #41141, #41144)
2026-09-15 18:06:20 -07:00
Yassin Kortam
262978eebc
Merge pull request #41144 from BerriAI/litellm_responses_bridge_filters_unknown_params
fix(responses): filter bridged kwargs like the native Responses path

(cherry picked from commit 41b5d47c71)
2026-09-15 17:40:38 -07:00
Yassin Kortam
8a23af9bc6
Merge pull request #41141 from BerriAI/litellm_lit7694_forwarded_headers_body_leak
fix(openai): keep extra_headers out of the chat request body on the httpx handler path

(cherry picked from commit de55e22899)
2026-09-15 17:40:38 -07:00
Yassin Kortam
4afb271ba3
Merge pull request #41018 from BerriAI/litellm_fix_model_alias_map_leak
fix(utils): keep litellm params out of provider request bodies

(cherry picked from commit 1f46e58494)
2026-09-15 17:40:26 -07:00
yuneng-jiang
16f6d92453
Merge pull request #40933 from BerriAI/litellm_internal_staging
chore(ci): promote internal staging to main
2026-09-12 18:51:00 -07:00
yuneng-jiang
0f16cff575
Merge pull request #40931 from BerriAI/litellm_/release-version-bump-6cf851
chore: rebuild Admin UI bundle from staging
2026-09-12 18:42:18 -07:00
Yuneng Jiang
d15edb8cc9
chore: update Next.js build artifacts (2026-09-13 01:20 UTC, node v24.19.0) 2026-09-12 18:20:05 -07:00
ryan-crabbe-berri
a969319fb5
Merge pull request #36222 from BerriAI/litellm_lit_5292_model_info_pricing_filter
fix(model_management): stop persisting cost map pricing as a deployment override
2026-09-12 18:16:06 -07:00