Commit graph

42355 commits

Author SHA1 Message Date
user
47214be317
fix(proxy): harden request parameter handling
Tighten validation of request body parameters in the proxy routing
layer. Use context variables for internal call state management
instead of passing flags through request kwargs. Clean up metadata
handling at the proxy boundary.
2026-04-16 01:38:12 +00:00
Ishaan Jaffer
9977e63e3c
Merge remote-tracking branch 'origin/main' into worktree-foamy-jumping-coral 2026-04-15 18:29:55 -07:00
ishaan-berri
10131374ee
Merge pull request #25813 from BerriAI/litellm_ishaan_april15
Litellm ishaan april15
2026-04-15 18:29:22 -07:00
ishaan-berri
7a6b7ade03
Merge pull request #25807 from BerriAI/litellm_fix_provider_headers_in_logging
fix(logging): preserve provider response headers in StandardLoggingPayload
2026-04-15 18:29:03 -07:00
Ishaan Jaffer
537e72c742
style: black format test_mcp_server.py 2026-04-15 18:19:21 -07:00
Ishaan Jaffer
fcd71e0026
style: black format test_mcp_server_manager.py 2026-04-15 18:19:17 -07:00
Ishaan Jaffer
f768946549
style: black format test_anthropic_common_utils.py 2026-04-15 18:19:12 -07:00
Ishaan Jaffer
9a154a3be7
style: black format test_mcp_sigv4_auth.py 2026-04-15 18:19:08 -07:00
Ishaan Jaffer
c8a0fe193f
style: black format test_unit_test_caching.py 2026-04-15 18:19:04 -07:00
Ishaan Jaffer
93a90a53be
style: black format test_mcp_client.py 2026-04-15 18:19:01 -07:00
Ishaan Jaffer
f2a1dbe7c9
style: black format test_health_check_max_tokens.py 2026-04-15 18:18:56 -07:00
Ishaan Jaffer
3847a59d79
style: black format test_model_param_helper.py 2026-04-15 18:18:52 -07:00
Ishaan Jaffer
13952b0b1b
style: black format types/mcp_server/mcp_server_manager.py 2026-04-15 18:18:48 -07:00
Ishaan Jaffer
107003a713
style: black format model_param_helper.py 2026-04-15 18:18:45 -07:00
Ishaan Jaffer
e5adafc768
style: black format anthropic_messages transformation.py 2026-04-15 18:18:41 -07:00
Ishaan Jaffer
0acd05207b
style: black format health_check.py 2026-04-15 18:18:36 -07:00
Ishaan Jaffer
65061b1e3c
style: black format mcp server.py 2026-04-15 18:18:33 -07:00
Ishaan Jaffer
d8dbb46dcf
style: black format mcp_server_manager.py 2026-04-15 18:18:29 -07:00
Ishaan Jaffer
563e05ebfa
style: black format _types.py 2026-04-15 18:18:24 -07:00
Ishaan Jaffer
c3dbd782f4
style: black format llm_http_handler.py 2026-04-15 18:18:18 -07:00
Ishaan Jaffer
9114b0da96
fix(ci): sync uv.lock with pyproject.toml 2026-04-15 18:16:22 -07:00
ishaan-berri
cb8fc480e6
Merge pull request #25732 from harish876/health-check-oom
Optimize database query to prevent OOM errors during health checks
2026-04-15 18:13:11 -07:00
Joe Reyna
f92490c308
fix: make PodLockManager.release_lock atomic compare-and-delete (re-land #21226) (#24466)
Some checks are pending
Unit Tests: Proxy DB Operations / proxy-db (auth-checks, tests/proxy_unit_tests/test_auth_checks.py tests/proxy_unit_tests/test_user_api_key_auth.py, 20, 8) (push) Waiting to run
Unit Tests: Proxy DB Operations / proxy-db (key-generation, tests/proxy_unit_tests/test_key_generate_prisma.py, 30, 0) (push) Waiting to run
Unit Tests: Proxy DB Operations / proxy-db (remaining, tests/proxy_unit_tests --ignore=tests/proxy_unit_tests/test_key_generate_prisma.py --ignore=tests/proxy_unit_tests/test_auth_checks.py --ignore=tests/proxy_unit_tests/test_user_api_key_auth.py, 30, 8) (push) Waiting to run
Unit Tests: Security / security (push) Waiting to run
* fix: make PodLockManager.release_lock atomic compare-and-delete

Re-lands #21226 (reverted in #21469).

release_lock() previously did GET + compare + DEL in separate calls,
leaving a window where another pod could reacquire the lock between
the GET and DEL, causing a stale owner to delete a live lock.

Fix: use a Redis Lua script for atomic compare-and-delete. Script
registration is cached per PodLockManager instance. Falls back to
the old GET+DEL path for cache backends that don't expose
async_register_script.

Original revert was due to e2e tests running in CI without Redis.
Those tests now carry @pytest.mark.skip(reason="Requires Redis connection.")
so this re-land is safe.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: add Lua fallback on execution error + test coverage gaps

Address Greptile review feedback on #24466:

1. Wrap Lua script execution in try/except — if Redis clears loaded
   scripts (restart) or scripting is disabled, fall back to GET+DEL
   rather than letting the exception propagate and leave the lock held
   until TTL. Reset cached script handle so the next call re-registers.

2. Add test_release_lock_lua_path_emits_released_event — verifies
   _emit_released_lock_event is called when Lua path returns 1.

3. Add test_release_lock_falls_back_to_get_del_when_lua_execution_fails
   — verifies the fallback path is taken and script handle is reset.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 17:33:21 -07:00
yuneng-jiang
3914226ed7
Merge pull request #25796 from BerriAI/litellm_yj_apr14
[Infra] Merge dev branch
2026-04-15 17:01:23 -07:00
yuneng-jiang
2f72eb6637
Merge pull request #25821 from BerriAI/litellm_/funny-meninsky
[Infra] Remove unused publish_proxy_extras and prisma_schema_sync jobs from CircleCI config
2026-04-15 16:52:01 -07:00
yuneng-jiang
93faf321df
Merge pull request #25818 from jaydns/fix/custom-code-guardrail-restrictedpython
fix(guardrails): replace custom_code sandbox with RestrictedPython
2026-04-15 16:50:10 -07:00
yuneng-jiang
3f3bfdbe33
Merge pull request #25117 from stuxf/fix/credential-leak-prevention
security: prevent API key leaks in error tracebacks, logs, and alerts
2026-04-15 16:49:44 -07:00
Yuneng Jiang
55f2a898be
[Infra] Remove unused publish_proxy_extras and prisma_schema_sync jobs
publish_proxy_extras is superseded by PyPI trusted publishing (OIDC);
the CircleCI project no longer has PYPI_PUBLISH_* credentials configured.
prisma_schema_sync is a leaf smoke test with no dependents, and db push
against the current schema is already exercised by e2e_ui_testing.
2026-04-15 16:43:30 -07:00
yuneng-jiang
814fa20399
Merge pull request #25814 from BerriAI/litellm_/elastic-zhukovsky
[Refactor] UI - Deleted Keys/Teams: Enterprise notice banner
2026-04-15 16:05:21 -07:00
Yuneng Jiang
42ab3f94ce
Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_yj_apr14 2026-04-15 15:59:45 -07:00
Yuneng Jiang
dabf8eaecb
Merge remote-tracking branch 'origin/litellm_internal_staging' into litellm_/elastic-zhukovsky 2026-04-15 15:55:52 -07:00
harish876
5f99e52fbc Added concurrent index creation. Added necessary disclaimers to index creation.
Index creation is scoped to a single statements and hence
Validated index creation in local env
2026-04-15 22:52:47 +00:00
yuneng-jiang
bf1c52862e
Merge pull request #25819 from BerriAI/litellm_expandCiBranchFilters
[Infra] Expand CI branch filters for non-main PR targets
2026-04-15 15:51:49 -07:00
jayden
469045ba91
fix(guardrails): provide _inplacevar_ to sandbox 2026-04-15 15:45:25 -07:00
Yuneng Jiang
aff4717494
[Infra] Expand CI branch filters for non-main PR targets
Required test-unit-* and related workflows only triggered on PRs targeting
main, so feature PRs routed through litellm_internal_staging or
litellm_oss_branch never dispatched the full suite. Branch protection
reported BLOCKED even when CircleCI was green.

Expand pull_request and push branch filters to also match
litellm_internal_staging, litellm_oss_branch, and "litellm_**" (using **
so branch names containing "/" also match).
2026-04-15 15:39:57 -07:00
jayden
fc9852cea2
fix(guardrails): move test_custom_code_security.py to correct location 2026-04-15 15:27:32 -07:00
jayden
0a1b4427a6
fix(guardrails): replace custom_code sandbox with RestrictedPython 2026-04-15 15:13:52 -07:00
Yuneng Jiang
de7aad9def
[Feature] UI - Deleted Keys/Teams: Add Enterprise notice banner
Show an info banner on the Deleted Keys and Deleted Teams pages for
non-premium users indicating that deleted-record auditing is graduating
from beta into the Enterprise audit & compliance suite.
2026-04-15 13:55:13 -07:00
ishaan-berri
d8ceeb83b7
Merge pull request #25810 from BerriAI/litellm_bedrock_api_response_null_type_handling
bedrock api response null type handling
2026-04-15 13:52:42 -07:00
Ryan Crabbe
18afe6ab64
test(ui): update organization_view tests for useOrganization hook
Replace the organizationInfoCall mock with a vi.mock of the
useOrganizations hook module that stubs useOrganization (and
organizationKeys, which the component still imports for invalidation).
Each test now sets mockUseOrganization.mockReturnValue(...) instead of
mocking the underlying network call, matching the existing pattern in
TeamInfo.test.tsx.

Renders go through the canonical renderWithProviders helper from
tests/test-utils so the component's useQueryClient() call has a
QueryClientProvider in context. This is the standard wrapper used by
~96 other test files in the dashboard.

Fixes "No QueryClient set" failures in the 4 organization_view tests
introduced by the imperative-fetch -> useOrganization migration.
2026-04-15 13:47:13 -07:00
Ryan Crabbe
6e9cbbaad3
refactor(ui): migrate organization view to useOrganization hook
Replace the local orgData/loading useState + fetchOrgInfo useEffect in
OrganizationInfoView with the existing useOrganization(id) React Query
hook, and replace each post-mutation fetchOrgInfo() call with
queryClient.invalidateQueries({ queryKey: organizationKeys.all }).

This makes the org info page benefit from the React Query cache
invalidation already added for team mutations: editing a team's
organization elsewhere now refreshes the org's Teams badge list (and
all other org-derived data) without a hard reload.
2026-04-15 13:25:57 -07:00
Ryan Crabbe
c8496a2767
fix(ui): invalidate organization queries after team mutations
Team create/delete/update can change which teams belong to an organization
(via teamCreateCall, teamDeleteCall, and teamUpdateCall when organization_id
changes). Without invalidating the React Query cache for organizations, the
org info page's teams list and any useOrganizations() consumer (e.g. the
team edit form's organization dropdown) stay stale until a hard reload.

Export organizationKeys from useOrganizations and invalidate
organizationKeys.all after each successful team mutation, matching the
pattern used in hooks/projects, hooks/budgets, and hooks/accessGroups.
2026-04-15 12:55:08 -07:00
Ishaan Jaffer
aaf169c91b
resolve merge conflicts: keep null-safety tests + add L3 regression tests from base 2026-04-15 12:34:39 -07:00
Yuneng Jiang
442a5aea0d
Move Send Invitation Email field under Metadata in both forms 2026-04-15 12:33:12 -07:00
Ryan Crabbe
35559c4d60
fix(ui): use antd Select for MCP ToolTestPanel bool inputs 2026-04-15 12:32:38 -07:00
Yuneng Jiang
a7c947f9dd
Move Send Invitation Email field directly below User Email in both forms 2026-04-15 12:31:23 -07:00
ryan-crabbe-berri
f9bffbb1b7
Merge pull request #25803 from BerriAI/litellm_guardrails-monitor-antd-layout
refactor(ui): reduce Tremor usage in Guardrails Monitor layout
2026-04-15 12:30:58 -07:00
Yuneng Jiang
55829c2254
Render Send Invitation Email as a labeled form item to align with other fields 2026-04-15 12:28:41 -07:00
Yuneng Jiang
fde7c1087a
Move Send Invitation Email checkbox into modal footer, add tests
Place the checkbox inline with the submit button (left-aligned,
vertically centered) in both the embedded and standalone forms.
Add Vitest tests verifying the /user/new payload shape: default true,
false when unchecked, in both form variants, plus an initial-state
check for the modal.
2026-04-15 12:24:41 -07:00
Ishaan Jaffer
98c2d90f5c
fix(logging): update test_get_additional_headers to reflect provider header passthrough 2026-04-15 12:23:33 -07:00