Commit graph

47337 commits

Author SHA1 Message Date
Yujong Lee
730388d621 fix(rust): gate Bedrock-only type import 2026-09-06 01:11:48 -07:00
Yujong Lee
ecc03d81ae fix(rust): preserve bridge behavior after core move 2026-09-06 01:11:48 -07:00
Yujong Lee
851e706cb4 style(rust): format moved bridge code 2026-09-06 01:11:48 -07:00
Yujong Lee
89b3308e92 test(rust): gate Bedrock transcription coverage 2026-09-06 01:11:48 -07:00
Yujong Lee
54d678f51b fix(ocr): complete core ownership after stack rebase 2026-09-06 01:11:48 -07:00
Yujong Lee
a4bb1c8066 refactor(rust): drop the ai-gateway dependency from python-bridge
Move the Responses WebSocket transport (connection type, dial, splice)
from ai-gateway io/responses_ws into core responses::connection, with
send/recv locked on separate halves and a Drop that closes the upstream
socket when the last clone is abandoned.

Move the OCR pipeline (prepare, provider call, document fetch, Azure DI
polling) into core ocr, mirroring the audio_transcription split: core
owns prepare/execute plus the ocr()/ocr_with_observer() entrypoints, the
gateway keeps only its lifecycle hooks (custom loggers/guardrails) and
request type, re-exporting through io/ocr unchanged.

Delete litellm-ai-gateway from python-bridge's dependencies and guard
the direction with manifest tests: python-bridge depends only on core +
python-interop, and core carries no pyo3/pythonize/pyo3-async-runtimes.
2026-09-06 01:11:48 -07:00
Yujong Lee
d9ad7ae2e6 refactor(native): enforce admission-only declines 2026-09-06 01:11:41 -07:00
Yujong Lee
7ce0ea0d87 test(native): remove deleted preflight override 2026-09-06 01:05:15 -07:00
Yujong Lee
840495a2f1 test(native): align coverage with execution declines 2026-09-06 01:05:15 -07:00
Yujong Lee
2e9a24f67d refactor(native): replace preflight APIs with typed execution declines 2026-09-06 01:05:15 -07:00
Yujong Lee
8e20a8644f fix(rust): complete installed callback parity
Some checks failed
LiteLLM Rust / rustfmt, clippy, test (push) Waiting to run
LiteLLM Rust / release wheel (push) Waiting to run
Terraform Modules / fmt, validate, test (aws) (push) Has been cancelled
Terraform Modules / fmt, validate, test (gcp) (push) Has been cancelled
2026-09-06 01:04:33 -07:00
Yujong Lee
7780d877bb fix(rust): initialize callback lifecycle runtime 2026-09-06 00:56:52 -07:00
Yujong Lee
e4f8aa57af fix(rust): preserve separated callback boundaries 2026-09-06 00:56:52 -07:00
Yujong Lee
f424891d76 fix(rust): restore callback handle typing 2026-09-06 00:56:51 -07:00
Yujong Lee
01fbd47f37 fix(rust): complete callback trace integration 2026-09-06 00:56:31 -07:00
Yujong Lee
304243f865 refactor(rust): establish callback contracts and readiness 2026-09-06 00:56:11 -07:00
Yujong Lee
152d041736 fix(native): make OCR admission provider aware 2026-09-06 00:55:45 -07:00
Yujong Lee
e386004302 fix(native): restack shared eligibility contracts 2026-09-06 00:52:53 -07:00
Yujong Lee
81f288ac81 test(bedrock): use separated native options 2026-09-06 00:52:53 -07:00
Yujong Lee
dedf746ac1 fix(native): preserve opaque metadata eligibility 2026-09-06 00:52:53 -07:00
Yujong Lee
2f91336b06 refactor(native): centralize typed route eligibility 2026-09-06 00:52:53 -07:00
Yujong Lee
39178c2a5e feat(rust): discover providers at shared SDK dispatch boundaries 2026-09-06 00:52:53 -07:00
Yujong Lee
e564709bb8 refactor(native): move chat eligibility checks into Rust 2026-09-06 00:52:36 -07:00
Yujong Lee
81832eee48 feat(native): preserve request identity and capabilities 2026-09-06 00:52:21 -07:00
Yujong Lee
986296b3a1 fix(native): preserve typed capability context 2026-09-05 23:34:33 -07:00
Yujong Lee
c03d3f8ce0 refactor(native): separate request options and context 2026-09-05 23:34:33 -07:00
Yujong Lee
1298be5032 refactor(native): separate request data from execution context 2026-09-05 23:34:33 -07:00
Yujong Lee
44660f1b05 fix(native): remove broad Python error fallback 2026-09-05 23:34:28 -07:00
Yujong Lee
159d54e20e refactor(native): adapt error policy to execution wrappers 2026-09-05 23:34:28 -07:00
Yujong Lee
4585441db4 fix(native): preserve global OCR enablement contract 2026-09-05 23:34:21 -07:00
Yujong Lee
57c21b6898 refactor(native): wrap endpoint execution in a shared harness 2026-09-05 22:48:13 -07:00
Yujong Lee
3fe0d809d1 refactor(native): separate attempts from declarative dispatch 2026-09-05 22:48:08 -07:00
Yujong Lee
6e864a98b4 test(native): cover shared dispatch contracts 2026-09-05 22:48:08 -07:00
Yujong Lee
2659b3c104 test(ocr): keep bridge config double compatible 2026-09-05 22:48:08 -07:00
Yujong Lee
a7ef617fa5 refactor(native): run acceptance checks inside shared dispatch 2026-09-05 22:48:08 -07:00
Yujong Lee
fdc72b33c3 refactor(native): use endpoint binding for WebSocket dispatch 2026-09-05 22:48:08 -07:00
Yujong Lee
71ba828527 refactor(ocr): dispatch complete operations through shared runtime 2026-09-05 22:48:08 -07:00
Yujong Lee
7b3bdae7fc refactor(native): share dispatch lifecycle across existing bridges 2026-09-05 22:47:48 -07:00
Yujong Lee
bd3d69f0ec refactor(rust): remove OCR-specific bridge controls 2026-09-05 22:46:56 -07:00
Yujong Lee
7dc552383c fix(rust): remove ignored transcription enablement 2026-09-05 21:21:48 -07:00
Yujong Lee
5c3d3c2d74 refactor(rust): remove per-request enablement arguments 2026-09-05 18:36:55 -07:00
ryan-crabbe-berri
09e9fd5f60
Merge pull request #39991 from BerriAI/litellm_remove_legacy_user_dashboard
refactor(ui): render the Virtual Keys page without the legacy user dashboard
2026-09-05 18:11:12 -07:00
tin-berri
60440ee4d3
feat(mcp): add opt-in per-server oauth relay discovery (#39936)
Resolves LIT-7074
2026-09-05 18:04:35 -07:00
moe-berri
91ae13d07d
Merge pull request #39955 from BerriAI/litellm_fix_adaptive_router_bandit_prior
fix(adaptive_router): add the persisted delta to the cold-start prior on load
2026-09-05 18:02:04 -07:00
moe-berri
aee819c976
Merge pull request #39957 from BerriAI/litellm_fix_adaptive_router_cost_from_model_info
fix(adaptive_router): fall back to model_info for cost-weighted scoring
2026-09-05 18:01:36 -07:00
moe-berri
b7a48b43b3
Merge pull request #39954 from BerriAI/litellm_fix_auto_router_blocking_cold_start
fix(auto_router): build the semantic route layer off the event loop
2026-09-05 18:01:11 -07:00
tin-berri
0315dd6f58
fix(headroom): inject headroom_retrieve only for service-declared ccr_hashes and keep assistant content blocks intact (#39974)
The retrieve tool was injected whenever any hash=<24hex> string appeared in the
restored conversation, including protected rows and caller-authored text, so a
git SHA in a tool result registered a bogus hash and billed a useless retrieval
round trip on every later turn. The compression service reports the hashes it
actually stored in ccr_hashes; that field is now the only source, validated to
the service's own 12 to 24 hex grammar before it reaches the retrieve URL.

Assistant rows are no longer flattened to strings before compression: the
service protects assistant text blocks but has no gate for assistant strings,
so the model's own earlier tables came back as a schema line plus CSV.

Adds ccr_retrieval (default true) so operators on a marker-free sidecar can
turn the retrieval loop off entirely.
2026-09-05 17:58:18 -07:00
ryan-crabbe-berri
8bfaaffba5 test(ui): stub the Virtual Keys dashboard in the expired-token page test 2026-09-05 17:57:38 -07:00
tin-berri
01680d7b42
fix(anthropic): keep provider_specific_fields off the native /v1/messages wire (#39967)
The chat and Responses bridges serialize tool_use blocks with model_dump(), so every
bridged /v1/messages response carried LiteLLM's internal provider_specific_fields key
(null, or a Gemini thought signature). Clients replay the block verbatim, and the next
turn that lands on a native Anthropic deployment (auto-router tier change, model swap)
is rejected with "tool_use.provider_specific_fields: Extra inputs are not permitted"

Strip the key from replayed content blocks at the single native Anthropic dispatch so
already-poisoned transcripts self-heal on every native provider, and stop emitting the
null on new responses. The bridges keep reading the signature for the Gemini round trip

Closes #19739
2026-09-05 17:50:54 -07:00
ryan-crabbe-berri
da705c9475 refactor(ui): render the Virtual Keys page without the legacy user dashboard
The API Keys route mounted the pre-App-Router UserDashboard component,
whose beforeunload handler cleared sessionStorage on every refresh of
the Virtual Keys page. That wiped the Playground chat history and model,
the logs live-tail preference, and everything else other pages keep in
session storage. The same component also re-decoded the login token,
re-fetched teams, and wrote cache entries nothing read.

ApiKeysDashboard now renders VirtualKeysTable and the Create Key button
directly, taking identity and role from useAuthorized like every other
page. Create Key is hidden for view-only roles, which the proxy already
rejects on /key/generate. The legacy component, its test, the fetch_teams
helper, and their grandfathered eslint suppressions are removed, and the
ProxySettings type moves to useProxySettings.
2026-09-05 17:49:29 -07:00