Commit graph

53623 commits

Author SHA1 Message Date
yuneng-jiang
3f775a9e22
Merge pull request #48679 from BerriAI/litellm_backport_46712_stable_1_105_x
Some checks are pending
LiteLLM Rust / rust-lint (push) Waiting to run
LiteLLM Rust / rust-test (push) Waiting to run
LiteLLM Rust / rust-wheel (push) Waiting to run
fix(proxy): backport #46712 gzip scoping and off-loop compression to stable/1.105.x for v1.105.7
2026-10-28 11:55:18 -07:00
devin-ai-integration[bot]
76ab5b5f9b bump: version 1.105.7
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-28 00:00:07 +00:00
tin-berri
a855a6927b fix(proxy): limit gzip to dashboard analytics and offload compression (#46712)
Backport of #46712 to stable/1.105.x.
Cherry-picked from 9c62573005 (litellm_dashboard_only_gzip). The line never took #46362, so the OFF_LOOP_SIZE_BYTES hunks resolve to the pick, which removes the constant.
2026-10-27 23:52:05 +00:00
yuneng-jiang
3a05120f10
Merge pull request #48604 from BerriAI/litellm_backport_48599_stable_1_105_x
Some checks are pending
LiteLLM Rust / rust-lint (push) Waiting to run
LiteLLM Rust / rust-test (push) Waiting to run
LiteLLM Rust / rust-wheel (push) Waiting to run
fix(proxy)!: backport #48599 to stable/1.105.x
2026-10-27 11:02:02 -07:00
Yuneng Jiang
7c86d78380
bump: version 1.105.6 2026-10-27 10:45:42 -07:00
mateo-berri
6414bbe0c4 fix(proxy): merge only dict client metadata into pass-through logging
Backport adaptation for rc/1.105.0. main merges a pass-through caller's metadata and litellm_metadata into the logging metadata only when they are dicts. This line merged any value, so a list of pairs could carry standard_logging_guardrail_information past the guardrail strip from #59.
2026-10-27 10:32:11 -07:00
mateo-berri
13eb926676 fix(proxy): always strip client guardrail info and mirror failure attribution into litellm_metadata
Backport of #59 to rc/1.105.0.
Cherry-picked from 79e48b9b19 (main). This line has no client pricing strip on pass-through, so only the guardrail strip is ported there.
2026-10-27 10:32:11 -07:00
mateo-berri
0517d47e8c fix(proxy): keep allowlisted metadata in proxy-only failure logs
Backport of #50 to rc/1.105.0.
Cherry-picked from 9722ca937e (main).
2026-10-27 10:32:11 -07:00
Yucheng He
00aa6c706f fix(proxy): drop caller metadata from proxy-only failure logs
metadata and litellm_metadata leave the proxy-only failure-log allowlist, so a rejected request can no longer point its failure log at its own Langsmith or Langfuse host through nested metadata.

(cherry picked from commit 30f6715f480ee7e2854514fe53b91d1b16e1be03)
2026-10-27 10:32:11 -07:00
Yucheng He
b4b6b8b68b fix(proxy): build proxy-only failure logs from an allowlist and ignore request-time GCS credentials
Backport of #26 to rc/1.105.0.
Cherry-picked from 9c2877c4be (main).
2026-10-27 10:32:10 -07:00
yuneng-jiang
333f311377
Merge pull request #48292 from BerriAI/diag-catalog-1.105
Some checks failed
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
chore(release): backport #46711 to stable/1.105.x and cut 1.105.5
2026-10-24 23:01:23 -07:00
yuneng-jiang
64cff31b78
Merge pull request #48282 from BerriAI/image-content-cleanup-slim-1.105
build(docker): refresh base images and ship only runtime files in component images (1.105.x)
2026-10-24 23:01:18 -07:00
Yuneng Jiang
a0d255ab75
bump: version 1.105.5 2026-10-24 22:28:47 -07:00
yujonglee
f711977b3f
refactor(rust-bridge): remove the LoggerRule concept from the catalog (#46711)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
(cherry picked from commit dd0c023338)
2026-10-24 22:28:46 -07:00
Yuneng Jiang
798a7d1a2b
build(docker): copy only runtime files into the gateway, backend and migrations images
The component runtime stages copied the builder's whole /app, which is the
entire repository plus build output: six lockfiles, helm, terraform, docs,
.env.example and the Rust build tree. Measured at runtime with an audit hook
on a booted container, the gateway reads only gateway/, litellm/ and
enterprise/ from /app, the backend only backend/, litellm/ and enterprise/,
and the migrations job only litellm/ and run.py. The pyproject.toml read is
prisma-python's optional [tool.prisma] lookup, which ours does not define

Copy just those, plus .venv, the entrypoint script and schema.prisma for the
gateway and backend. PYTHONPATH=/app and the in-Dockerfile asserts are
unchanged
2026-10-24 19:04:32 -07:00
Yuneng Jiang
0c2d3b5c75
build(docker): move to newer wolfi-base and nginx base images
Bump the pinned wolfi-base digest in every Wolfi Dockerfile to 360896ef, which
ships brotli 1.2.1-r1 and ca-certificates-bundle 20260909-r3. The previous
digest already carried libbrotli 1.2.0-r6 as an OpenSSL dependency, and
`apk add --no-cache` never upgrades a package the base already has

Move the UI image to nginx 1.31.8-alpine3.24, whose CA bundle is the 20261020
Mozilla set, and upgrade brotli-libs in its runtime stage since no nginx
digest ships 1.2.1 yet
2026-10-24 19:04:32 -07:00
yuneng-jiang
a3b1add96d
Merge pull request #48077 from BerriAI/litellm_backport_47670_47969_stable_1_105_x
Some checks failed
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
chore(release): backport #44345, #47670, #47969, #48055, #48103, #48110 to stable/1.105.x and cut 1.105.4
2026-10-23 16:15:51 -07:00
Yuneng Jiang
a92aebc276
chore(deps): bump mlflow, pypdf and setuptools
Redoes #48110 on this line. The lock moves mlflow, mlflow-skinny and mlflow-tracing to 3.17.2, pypdf to 6.21.2 and setuptools to 84.1.0 inside their existing ranges. mlflow 3.17.2 and pypdf 6.21.2 are still inside the 3-day exclude-newer window, so they get their own exclude-newer-package cutoffs, matching main. The lock was regenerated with uv 0.11.7
2026-10-23 15:36:55 -07:00
Yuneng Jiang
097f1e0d52
Rotate the cosign image-signing public key
(cherry picked from commit e82a3c6469)
2026-10-23 15:26:49 -07:00
Yuneng Jiang
01cda4b40c
chore: update Next.js build artifacts (2026-10-23 22:19 UTC, node v24.19.0) 2026-10-23 15:19:46 -07:00
Yuneng Jiang
623f665159
chore(deps): bump vscode-extension vite and vitest
Moves vitest and its packages to 4.1.12 and vite to 8.3.4, matching main. vite 8.3.4 needs newer rolldown, postcss and nanoid, and rolldown pins a newer @oxc-project/types, so those move with it. Every other package in the lock stays where it was
2026-10-23 15:17:55 -07:00
devin-ai-integration[bot]
250205ac94
refactor(dashboard): migrate to zod 4 and openai 6 (#44345)
* refactor(dashboard): migrate to zod 4 and openai 6

Bump the dashboard to real zod 4.6.5 and openai 6.49.0 so every module
imports from bare "zod" instead of "zod/v4". Ports the ten files that
still used the zod 3 API (error params, record, passthrough, strict,
email/date validators, union discriminator codes) and adapts the
LiteAdmin tool schemas and form plumbing where openai 6 and zod 4
changed behaviour.

* style(dashboard): prettier format zod 4 schema files

* fix(dashboard): restore system one missing state message under zod 4

---------

Dependency files were restored from the line and only the openai 4.104.0 -> 6.49.0 change was applied, since zod is already on 4.6.6 here. The lock moves only openai and drops its 4.x-only transitive packages
systemOneUI schemas.ts and validatePayload.test.ts do not exist on this line, so their hunks were dropped
jev_classifier_config.ts on this line has no refine, so only the instructions optional hunk applies
build_auto_router_routing_test_request.ts keeps the line's schema with the record key and loose() changes, and its object default becomes prefault({}) because zod 4 no longer parses a default through the schema

Co-authored-by: Yujong Lee <yujong@berri.ai>
(cherry picked from commit 0c86d6bfc9)
2026-10-23 15:15:47 -07:00
Yuneng Jiang
5403d31ec4 chore(deps): bump dashboard next, zod, vite, vitest and sharp
Moves next to 16.4.1, zod to 4.6.6, vite to 7.3.7, vitest and its UI and coverage plugins to 4.1.12, and raises the sharp override to ^0.35.5. A top-level zod override keeps every nested consumer on the root zod. @vitest/coverage-v8 moves with vitest because it pins vitest as an exact peer. The lock only moves these packages and their platform binaries, other transitive packages stay where they were
2026-10-23 14:23:11 -07:00
Yuneng Jiang
3d834d4e02 chore(deps): bump OpenTelemetry, logfire, pypdf, GitPython, graphql-core, Brotli and Pillow
Moves the OpenTelemetry SDK and exporters to 1.45.1 with the 0.66b1 instrumentation, logfire to 5.2.0 and Pillow to 13.0.0 on Python 3.11 and newer, matching main. The lock is refreshed with the line's uv 0.11.7 for GitPython 3.2.1, graphql-core 3.2.12, Brotli 1.2.1 and pypdf 6.21.1 without touching any other package. Brotli 1.2.1 is still inside the 3-day release window, so it gets its own exclude-newer-package entry
2026-10-23 14:20:19 -07:00
Ishaan
d5f676a876 fix(ci): unblock dependency checks (#48055)
* fix(deps): upgrade flagged Python dependencies

* fix(deps): lock patched Python dependency versions

* fix(otel): preserve JSON export with the updated SDK

* test(otel): cover JSON export with the updated SDK

* test(otel): update SDK log records and worker discovery

* fix(ui): align Lens peer dependency with patched Next.js

* fix(otel): hand the AgentOps exporter a session it owns for the JWT header

OpenTelemetry 1.45 moved the OTLP HTTP exporter's requests.Session behind a
transport, so writing the minted JWT to the exporter's private _session raised,
was swallowed, and every AgentOps batch went out unauthenticated. The exporter
now creates the session, passes it through the public session= argument and
sets the Authorization header on it

The tests now drive a real export, serving the token endpoint with respx and
capturing the OTLP POST with requests_mock, instead of reading SDK internals

* fix(otel): skip FastAPI instrumentation once the app has started

opentelemetry-instrumentation-fastapi 0.66b1 wraps build_middleware_stack instead
of calling add_middleware, so instrumenting an app whose middleware stack is
already built no longer raises. The call silently did nothing while we still
registered the global response propagator. Check the built stack up front and
skip both, which is what the existing test expects

* test(otel): assert exported requests and span flags instead of SDK internals

OpenTelemetry 1.45 dropped the exporter's private _headers and sets the W3C
random-trace-id flag on new traces, so traceresponse ends in -03. The Langtrace
and Langfuse tests now export through requests_mock and check the URL and headers
the collector receives, and the traceresponse tests expect the server span's own
trace flags

* fix(deps): bump dashboard zod to 4.6.6 and make the vendored Lens use it

zod 4.6.5 is flagged by the dependency scan and blocks osv-scan on every PR. A
root bump alone leaves the vendored Lens tarball, which pins zod 4.6.5 exactly,
on its own nested copy, so a top-level zod override points every consumer at the
root version and the lock carries a single zod 4.6.6

* test(ui): stub the tag summary fetch the client panel retry refreshes

Retrying the model breakdown refetches /tag/summary, which this integration test
left on the real network. When that request failed before the assertion, the
panel switched to its summary error and unmounted the model row, so the test
passed or failed by timing

* fix(deps): drop the duplicated Lens override from the dashboard package.json

* style(ui): format the client panel fetch stub

---------

Dependency files (pyproject.toml, uv.lock, ui/litellm-dashboard/package.json and package-lock.json) were left out of this pick and are re-derived on the line in the following commits
ClientUsagePanel.integration.test.tsx does not exist on this line, so its stub hunk was dropped
The traceresponse assertions in test_otel_v2_mount.py target tests this line does not have, so those two hunks were dropped and the file is unchanged

Co-authored-by: Yuneng Jiang <yuneng@berri.ai>
(cherry picked from commit 8f9894fbd6)
2026-10-23 14:19:04 -07:00
Yuneng Jiang
7705f11f9d
bump: version 1.105.4 2026-10-23 12:04:28 -07:00
shrey-berri
35a88f1f7c
fix(security): update bundled CA roots and preserve Prisma image compatibility (#47969)
* fix(security): bump grpcio and boto3 so their bundled CA files drop the compromised eMudhra roots

grpc ignores SSL_CERT_FILE and verifies every channel against its own bundled roots.pem. In 1.78.0 that file still trusts emSign ECC Root CA - G3 and AAA Certificate Services, so Vertex AI, Google KMS, Chirp STT and OTLP gRPC exporters (Arize) accept all 14 advisory chains. 1.84.1 is the first release whose roots.pem drops both roots.

botocore uses certifi when it is installed and falls back to its bundled cacert.pem otherwise. Through 1.43.116 that file still trusts AAA Certificate Services. Requiring boto3 1.43.117 pulls in botocore 1.43.117, the first release whose cacert.pem rejects all 14 advisory chains, so the fallback stays safe if certifi is ever absent

* fix(docker): provide OpenSSL 3 when generating Prisma engines

(cherry picked from commit 52166b51a1)
2026-10-23 11:58:51 -07:00
ryan-crabbe-berri
4864538832
fix(security): stop trusting the compromised eMudhra root CA (#47670)
Update certifi, Rust trust roots, and the Docker CA bundle to remove emSign ECC Root CA - G3

Require the fixed certifi release in litellm-core and retain libssl3 in Docker runtimes for Prisma compatibility

Co-authored-by: shin-berri <shin-laptop@berri.ai>
(cherry picked from commit f2118fc767)
2026-10-23 11:58:51 -07:00
yuneng-jiang
fc795d5bfd
Merge pull request #47737 from BerriAI/litellm_backport_p0_batch_translation_cost_stable_1_105_x
Some checks failed
LiteLLM Rust / rust-lint (push) Has been cancelled
LiteLLM Rust / rust-test (push) Has been cancelled
LiteLLM Rust / rust-wheel (push) Has been cancelled
fix(batches)!: backport P0 batch-cost, pricing and translation fixes to stable/1.105.x for v1.105.3
2026-10-21 01:43:03 -07:00
Mrinal Chanshetty
64262f0f12
test: exempt the providers mirrored from main in the cost-map provider registry test
(cherry picked from commit 9c28744ad5, tests/unit/test_model_prices_schema.py only)
2026-10-21 01:07:01 -07:00
Mrinal Chanshetty
773b09216f
chore(cost-map): accept the mirrored map's search_free_requests and token_count_model.litellm_provider in the schema
(cherry picked from commit b8e89a881b)
2026-10-21 01:06:39 -07:00
Yuneng Jiang
cee7ad185a
Merge branch 'stable/1.105.x' into litellm_backport_p0_batch_translation_cost_stable_1_105_x 2026-10-21 01:02:47 -07:00
yuneng-jiang
116b9967d0
Merge pull request #47714 from BerriAI/litellm_backport_lit145_batch_stable_1_105_x
chore(backport): billing fixes for LIT-145 and aiohttp 3.14.4 onto stable/1.105.x (1.105.3)
2026-10-21 01:02:11 -07:00
Yuneng Jiang
b77c7b8f97
Merge branch 'stable/1.105.x' into litellm_backport_lit145_batch_stable_1_105_x 2026-10-21 01:01:46 -07:00
yuneng-jiang
b78fc45e33
Merge pull request #47744 from BerriAI/litellm_backport_45317_46430_stable_1_105_x
fix(count_tokens): backport Bedrock Mantle count_tokens fallback to stable/1.105.x
2026-10-21 01:01:30 -07:00
Yuneng Jiang
de1fbf1730
Merge branch 'stable/1.105.x' into litellm_backport_45317_46430_stable_1_105_x 2026-10-21 01:01:02 -07:00
yuneng-jiang
653f67eafc
Merge pull request #47804 from BerriAI/litellm_backport_47677_stable_1_105_x
fix(mcp): backport per-user auth MCP tool listing to stable/1.105.x
2026-10-21 00:55:13 -07:00
Yassin Kortam
0a051ae8cc
fix(mcp): list per-user auth MCP tools without a shared token (#47677)
(cherry picked from commit 49b5444ef9)
2026-10-20 23:54:18 -07:00
Mrinal Chanshetty
ea218dc73b fix(anthropic): carry main's dangerous-tool-use beta map entries; skip worker-kill chaos test
The bundled beta map stripped dangerous-tool-use-2026-09-03 for providers
main supports it on, so safeguards requests went upstream without the beta
whenever the proxy used the bundled map. The worker-SIGKILL chaos test needs
OwnedProxy.replacing_worker, which this line's integration harness lacks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:27:07 -07:00
mateo
8c3bc83b5d fix(bedrock): add Claude Mantle model helper
Minimal prerequisite from #43646 for stable/1.104.x.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
(cherry picked from commit 6a801372ac)
2026-10-21 01:54:50 +00:00
mrinal-berri
6d2711631e fix(count_tokens): fall back to Mantle on Bedrock 404 (Bedrock part of #46430)
(cherry picked from commit 08a24d391a)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-21 01:52:02 +00:00
devin-ai-integration[bot]
2fd80a958a fix(bedrock): count tokens on bedrock-mantle when bedrock-runtime cannot count a Claude model (#45317)
(cherry picked from commit 577d74c1ce)
2026-10-21 01:51:45 +00:00
Mrinal Chanshetty
376fb97c18 bump: version 1.105.3 2026-10-20 18:41:20 -07:00
Mrinal Chanshetty
e19652cb0d test: retarget cost-map tests to the cost map synced from main
Takes main's schema for test_aaamodel_prices_and_context_window_json_is_valid and points the per-query rerank test at an uncataloged model, as main does, since main's map now prices semantic-ranker-default-004.
2026-10-20 18:41:20 -07:00
Mrinal Chanshetty
f0fa18d8dd chore(deps): match main for aiohttp 3.14.5 and claude-agent-sdk 0.2.165 2026-10-20 18:38:28 -07:00
Mrinal Chanshetty
fa5dbdcb38 chore(model_prices): sync the cost map with main at 6083cf9776
Mirrors model_prices_and_context_window.json and its backup byte-for-byte from main 6083cf9776.
2026-10-20 18:38:28 -07:00
devin-ai-integration[bot]
1509e156f9 chore(release): bump version to 1.105.3 2026-10-21 01:07:16 +00:00
devin-ai-integration[bot]
fb6ed32572 chore(deps): bump aiohttp to 3.14.4 in uv.lock
Lock-only bump for GHSA-2g87-pp6c-29x5, GHSA-5wr8-gcqf-gqf3 and GHSA-494j-54xm-rwp3
(aiohttp 3.14.3 -> 3.14.4, yarl 1.23.0 -> 1.25.1 moves with its new floor). main is on 3.14.5.
pyproject constraint aiohttp>=3.14.2,<4.0 is unchanged.
2026-10-21 00:57:50 +00:00
devin-ai-integration[bot]
b15bb3eb93 fix(logging): spilled over PTU requests without base_model log the served model's rates (#47655)
* fix(logging): report pay-as-you-go rates for spilled over PTU requests without base_model

* fix(logging): keep the provider response model so spilled over PTU payloads price the served model

* fix(logging): keep a provider_response_model the response already carries

* fix(logging): read the carried provider_response_model through a typed adapter

---------

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>

Backport of #47655 to stable/1.105.x.
Cherry-picked from 6b1f4ed46f (main).
2026-10-21 00:57:50 +00:00
devin-ai-integration[bot]
063f75d0f8 fix(proxy): price earlier timed-out retry attempts at their own deployment's model rate (#47648)
* fix(proxy): bill every earlier timed-out retry attempt at its own deployment's model rate

* fix(router): read the retry record's base_model through the typed metadata helper

* fix(router): keep the four-record retry breadcrumb cap

* fix(router): carry a deployment's litellm_params base_model on its retry record

* chore(router): place the cast-ok reason on the cast line and list the base_model helper as covered through log_retry

---------

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>

Backport of #47648 to stable/1.105.x.
Cherry-picked from 27efc387f7 (main).
2026-10-21 00:57:50 +00:00