Commit graph

51406 commits

Author SHA1 Message Date
Shivi Jain
53ba8b9866 fix(auth): load team membership once per request and skip prisma on an L1 hit
common_checks was querying get_team_membership twice, and DualCache awaited Redis SET on the auth path, so LRU eviction plus a hung Redis write showed up as two postgres spans
2026-09-14 18:13:49 +00:00
Shivi Jain
70ddc7e492 fix(auth): load team membership once per request and skip prisma on an L1 hit
common_checks was querying get_team_membership twice, and DualCache awaited Redis SET on the auth path, so LRU eviction plus a hung Redis write showed up as two postgres spans
2026-09-14 18:13:49 +00:00
Shivi Jain
5457f48290 fix(auth): load team membership once per request and skip prisma on an L1 hit
common_checks was querying get_team_membership twice, and DualCache awaited Redis SET on the auth path, so LRU eviction plus a hung Redis write showed up as two postgres spans
2026-09-14 18:13:49 +00:00
joshua-berri
fb67d8335c style(model_armor): format guardrail handler
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
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 18:06:41 +00:00
joshua-berri
eceb67b69a test(model_armor): inject HTTP handler and token provider
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 18:03:22 +00:00
yucheng
4be84a859d Merge remote-tracking branch 'origin/main' into litellm_lit6314_guardrail_metadata_transfer 2026-09-14 18:01:01 +00:00
Yuneng Jiang
9b4717269f
test: preserve immutable integration observations and cleanup outcomes 2026-09-14 10:58:36 -07:00
Yuneng Jiang
1d49e0ee7e
test: preserve immutable integration observations and cleanup outcomes 2026-09-14 10:58:36 -07:00
Yuneng Jiang
4ee73c49af
test: collect pricing observations immutably 2026-09-14 10:58:24 -07:00
Mateo Wang
6e9e08475a
Merge pull request #40627 from BerriAI/litellm_fix_realtime_cached_audio_cost
fix(cost): bill cached realtime audio tokens at the audio cache-read rate
2026-09-14 10:50:00 -07:00
yucheng
34e702c571 test(otel): build the clipped-blob conversation without mutating the payload
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 17:46:18 +00:00
yucheng
b4e3d7c533 chore: merge main into litellm_lit6314_guardrail_metadata_transfer
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 17:33:04 +00:00
yassin
83d16a4690 fix(proxy): read LITELLM_DISABLE_ACCESS_LOG_PATHS per record and match before redaction
Values loaded after import via proxy config environment_variables or dotenv
were ignored, and a long query string was truncated by the redaction filter
before the path filter could match it. Tests now go through the production
registration on the uvicorn.access logger instead of a hand-built filter.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 17:27:43 +00:00
Devin AI
66ce1eea97 test(proxy): cover non-string access log paths
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:54:38 +00:00
yassin
4b39344d13 fix(proxy): only treat a missing user as no memberships on team list, surface db errors
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:49:54 +00:00
Yuneng Jiang
94f2a4702b
test: remove redundant integration harness commentary 2026-09-14 09:40:21 -07:00
Yuneng Jiang
c900053c87
test: remove redundant integration harness commentary 2026-09-14 09:40:21 -07:00
Yuneng Jiang
474fd5ff8d
test: remove redundant integration harness commentary 2026-09-14 09:40:20 -07:00
Devin AI
2268bbaf5e feat(proxy): honor LITELLM_DISABLE_ACCESS_LOG_PATHS to drop noisy uvicorn access log lines
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:39:54 +00:00
yassin
dc30be006b refactor(proxy): read org admin's own team ids via get_user_object(check_db_only=True)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:27:31 +00:00
Devin AI
9fbc2c5b71 fix(proxy): show all model groups to proxy admins in /model_group/info
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:23:06 +00:00
Yuneng Jiang
56c950e686
test: isolate accounting integration coverage from E2E registry 2026-09-14 09:23:00 -07:00
Yuneng Jiang
96fdf5d6f4
test: isolate management integration coverage from E2E registry 2026-09-14 09:23:00 -07:00
Yuneng Jiang
48ccdba129
test: decouple integration contracts from E2E coverage registry 2026-09-14 09:22:13 -07:00
yassin
d643909789 fix(proxy): read org admin's own team ids from db and assert v2 list results
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 16:03:23 +00:00
yassin
8d9edfc03c fix(proxy): keep /team/list self query for org admins membership-only across orgs
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 15:40:41 +00:00
yassin
58c3ccf668 fix(proxy): keep org admins' own team memberships in other orgs visible on team list
An org admin listing their own teams on GET /team/list and GET /v2/team/list
only saw teams in the orgs they administer. Teams they belong to in other
orgs were dropped because the org scope and the membership scope were ANDed.
A self query now unions the two, while a query for another user keeps the
org boundary intersection.

Resolves LIT-3723

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 15:27:06 +00:00
Yassin Kortam
9e1ed40db3
Merge pull request #40927 from BerriAI/litellm_per_issuer_virtual_key_claim_field
feat(jwt): allow virtual_key_claim_field per issuer
2026-09-14 08:00:25 -07:00
Mateo Wang
e3051a7af9
Merge pull request #40996 from BerriAI/litellm_deflake_20260913 2026-09-14 07:13:53 -07:00
mateo
1661e72c2c fix(registry): drop retired friendliai llama-3.1 serverless models
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 13:21:46 +00:00
Yuneng Jiang
57825775b8
test: tighten reload coverage and avoid an artificial lock timing cutoff 2026-09-14 05:08:14 -07:00
Yuneng Jiang
682296ad68
test: verify database transactions and persisted accounting contracts 2026-09-14 05:00:32 -07:00
Yuneng Jiang
cfda6dea3e
test: cover persisted updates and warmed authorization policies 2026-09-14 04:20:06 -07:00
Yuneng Jiang
7ff8919827
test: collect owned cleanup processes immutably 2026-09-14 04:18:59 -07:00
Yuneng Jiang
16d7e695c0
test: stop proxy before cleaning up its query engine 2026-09-14 04:04:21 -07:00
Yuneng Jiang
d7c13625e9
test: qualify integration cleanup and replay invocation 2026-09-14 03:48:23 -07:00
Yuneng Jiang
92e0b72e2d
test: add CircleCI integration contract foundation 2026-09-14 03:30:52 -07:00
Devin AI
a8305129a7 refactor(mistral): keep map_openai_params under the complexity ceiling
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 09:56:08 +00:00
Devin AI
cd8887d72c fix(mistral): accept reasoning_effort on all models and drop client_metadata for Codex compatibility
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 09:55:07 +00:00
Devin AI
a70f9a17cc perf(logging): skip correlation contextvar stamping when request_correlation_in_logs is off
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 08:54:34 +00:00
HUAHAODIA
d84e0eabf3 fix lint review feedback (round 2)
- actually drop the ruff-strict-budget.json changes: the earlier
  checkout restored the edited HEAD version instead of main, so the
  twelve limit changes were still in the branch; budget ratcheting
  stays with the scheduled automation
- annotate validator_call as Final per repo convention
- drop the standalone comment duplicating the inline noqa reason
2026-09-14 16:42:35 +08:00
HUAHAODIA
57b9090292 chore: retrigger CLA re-evaluation 2026-09-14 15:42:27 +08:00
HUAHAODIA
74fe022988 chore: retrigger CLA evaluation 2026-09-14 15:32:10 +08:00
HUAHAODIA
b71eff40f8 fix lint review feedback
- restore the short-circuit in custom_team_metadata_validate: only
  touch __call__ when the plain coroutine-function check fails, so a
  raising descriptor on an async function is not newly triggered
- inline the noqa reasons per the suppression policy
- drop the ruff-strict-budget.json edit: budget ratcheting is reserved
  for the scheduled automation on the default branch
2026-09-14 15:09:53 +08:00
Devin AI
19c43eb875 test(cli): drop structural StrEnum source check; smoke job covers the 3.10 import
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 07:08:24 +00:00
Devin AI
0679d799d4 ci: exercise the lite CLI on the Python 3.10 import smoke job
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 07:07:06 +00:00
Devin AI
03e6dd051c fix(cli): drop enum.StrEnum so the CLI imports on Python 3.10
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 06:59:10 +00:00
ryan
c25498b66d fix(proxy): remove a bulk-deleted user's email-only roster entries without touching same-email teammates
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 06:08:42 +00:00
HUAHAODIA
29cdcf4880 chore(lint): graduate 12 rules from the strict-gate ratchet
Zeroes the remaining violations for 12 rules so they can hard-fail
in the main ruff config instead of being budget-ratcheted, and drops
their strict-gate budgets to 0:

- B021: drop useless f-prefix on the Javelin docstring
- C404 / C419: dict()/any() around unnecessary list comprehension
- PLR0124: replace the 'value == value' NaN idiom (and the separate
  +/-inf exclusion) with math.isfinite in _validate_response_time
- SIM201: 'not X == "function"' -> 'X != "function"'
- SIM211: 'False if x is False else True' -> 'x is not False'
- SIM222: drop literal 'None or' before "success"
- UP036: remove the dead sys.version_info < (3, 8) branch (and the
  now-unused sys import) in the weights_biases TYPE_CHECKING block
- B018 x2: keep the deliberate property side-effect access but assign
  it ('_ = self.prompt_manager') as the rule requires
- PLR0206: the unusable '@property def api_version(self, api_version)'
  (a property getter cannot take extra args) becomes a @staticmethod
  matching its siblings get_api_base/get_api_key; it had no callers
- PLR1704: rename the loop variable (and the nested helper parameter)
  that shadowed abatch_completion_fastest_response's 'model' argument
- B004 x2: scoped noqa with rationale — both sites retrieve __call__
  to unwrap functors for iscoroutinefunction, which is a value use,
  not the callability test B004 assumes; the callable() autofix would
  break them

N999 intentionally stays on the ratchet (limit 1): it flags the
'litellm/proxy/lambda.py' filename, which needs a module rename.

Verified: full-tree 'ruff check litellm' green with the graduated
rules enforced; ruff-strict counts for all 12 rules are 0; budget
JSON regenerated in the gate script's json.dumps style.
2026-09-14 14:04:08 +08:00
ryan
dbb4de7bc2 fix(proxy): match bulk-deleted users on team rosters by user_id only and give /team/bulk_member_delete the 60s batch timeout
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-14 05:59:19 +00:00