Commit graph

36153 commits

Author SHA1 Message Date
yuneng-jiang
f4e5fb2b4a fix: exclude team_id from Prisma create payload in _prepare_mcp_server_data
team_id is a request-level field, not a DB column. Excluding it prevents
Prisma from rejecting the create call.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 22:50:35 -07:00
Ryan Crabbe
ad43a35d76 feat: add control plane for multi-proxy worker management
Adds a control plane capability that enables a central admin instance
to manage multiple regional worker proxies from a single UI.

Backend:
- Worker registry loaded from YAML config (worker_id, name, url)
- /.well-known/litellm-ui-config exposes is_control_plane and workers list
- /v3/login + /v3/login/exchange: opaque code exchange for cross-origin
  username/password auth (JWT never in URL/logs, single-use 60s TTL)
- SSO cookie handoff with return_to → opaque code → exchange
- _validate_return_to: full origin validation (scheme+hostname+port)
- Startup warning when control_plane_url set without Redis
- Both /v3 endpoints gated behind control_plane_url config

Frontend:
- Worker selector dropdown on login page (gated behind is_control_plane)
- Cross-origin SSO code exchange handling on callback
- switchToWorkerUrl: localStorage-persisted worker URL for API calls
- useWorker hook: shared worker state management
- WorkerDropdown in navbar for switching workers
- Logout/switch clears worker state from localStorage

Tests:
- 7 tests for /v3/login + /v3/login/exchange
- 10 tests for _validate_return_to
- 2 tests for control plane discovery endpoint
2026-03-19 22:50:19 -07:00
yuneng-jiang
883611aa91 [Feature] UI - Teams: Modernize teams table with AntD, server-side pagination, and v2 API
Migrate the OldTeams table from Tremor to Ant Design components, matching the
Access Groups page pattern. Switch from /team/list to /v2/team/list for
server-side pagination, filtering, and sorting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:42:15 -07:00
Sameer Kankute
784f9431ad
Merge pull request #24188 from BerriAI/main
merge main 0319
2026-03-20 11:03:54 +05:30
joereyna
32ada454a2 fix: upgrade mcp to 1.26.0 2026-03-19 21:32:42 -07:00
yuneng-jiang
30589b06ad
Merge pull request #24187 from joereyna/fix/black-format-lint-cleanup
chore: apply black formatting and enable black pre-commit hook
2026-03-19 21:31:48 -07:00
joereyna
6f6e23a7b0 chore: apply black formatting to experimental_pass_through transformation 2026-03-19 21:25:02 -07:00
joereyna
ff6faacc64 fix: resolve mypy union-attr error in anthropic messages transformation 2026-03-19 21:20:12 -07:00
yuneng-jiang
f34fe4758a fix: stale closure, simplified session isolation, debounce-race in useChatHistory
- clearChatHistory: use functional setChatHistory updater so blob URL
  revocation operates on the latest snapshot, not a stale closure capture.
- Simplified mode: skip sessionStorage hydration and persistence for
  messageTraceId, responsesSessionId, and useApiSessionManagement so
  embedded widgets don't cross-contaminate the full playground session.
- Debounce race: skip re-writing empty chatHistory to sessionStorage
  after clearChatHistory already removed the key.
- Added 5 new tests covering these fixes (39 total).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 21:19:51 -07:00
joereyna
c6b5c07005 chore: apply black formatting and enable black pre-commit hook 2026-03-19 21:00:54 -07:00
yuneng-jiang
954bfcbd42 chore: remove verbose console.log calls from useChatHistory hook
Removes 17 console.log statements that fired on every streaming chunk
in updateTextUI, updateTimingData, updateUsageData, and other hot-path
functions. The console.error for sessionStorage parse failures is kept.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 20:46:51 -07:00
Sameer Kankute
c545c969f7
Merge branch 'main' into litellm_oss_staging_03_17_2026 2026-03-20 08:42:41 +05:30
joereyna
e5dc912367 bump: version 1.82.4 → 1.82.5 2026-03-19 19:58:04 -07:00
Krrish Dholakia
3093ef844e fix: document new config_settings.md 2026-03-19 18:57:02 -07:00
Krish Dholakia
48e9d0b271
Merge pull request #24140 from devin-petersohn/feat/anthropic-auth-token-and-base-url
feat(anthropic): support ANTHROPIC_AUTH_TOKEN and ANTHROPIC_BASE_URL env vars
2026-03-19 18:50:48 -07:00
Krish Dholakia
61dde5eb0a
Merge pull request #24143 from johnib/fix/websearch-short-circuit-copilot
fix: short-circuit websearch for github_copilot provider
2026-03-19 18:45:09 -07:00
Krish Dholakia
3a0652c445
Merge branch 'main' into feat/anthropic-auth-token-and-base-url 2026-03-19 18:41:19 -07:00
Krish Dholakia
2900e0e384
Merge pull request #24090 from joereyna/fix/release-notes-v1-82-3-helicone-langfuse
docs(release-notes): complete v1.82.3 changelog with full PR audit
2026-03-19 18:33:02 -07:00
Krish Dholakia
29647856b5
Merge branch 'main' into fix/release-notes-v1-82-3-helicone-langfuse 2026-03-19 18:32:38 -07:00
Krish Dholakia
d8b28141b9
Merge pull request #24173 from joereyna/fix/black-format-batch-3
chore: apply black formatting to fix lint CI (batch 3)
2026-03-19 18:27:30 -07:00
Krish Dholakia
75386d4cb9
Merge pull request #24149 from michelligabriele/fix/kill-orphaned-prisma-engine-on-reconnect
fix(proxy): kill orphaned prisma engine subprocess on failed disconnect
2026-03-19 18:12:58 -07:00
joereyna
87b5039aaa chore: apply black formatting to fix lint CI (batch 3) 2026-03-19 18:11:40 -07:00
yuneng-jiang
e88425b881 refactor: wire ChatUI to use useChatHistory hook
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:09:20 -07:00
yuneng-jiang
f3c6915d61 feat: add useChatHistory hook with tests (extracted from ChatUI)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:09:20 -07:00
yuneng-jiang
971cc2a9af fix: add team_id field to NewMCPServerRequest
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:07:19 -07:00
yuneng-jiang
cc7e27e094 feat: update MCP CRUD endpoints to support mcp_server_manager role
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:07:19 -07:00
yuneng-jiang
f3b1768616 feat: add _assert_can_manage_team_mcp_server auth helper with tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:07:19 -07:00
Krish Dholakia
dddccc4e5c
Merge pull request #24105 from superpoussin22/correct-migration
Add IF NOT EXISTS to index creation in migration
2026-03-19 18:00:07 -07:00
Krish Dholakia
482b77e71d
Merge pull request #24081 from BerriAI/litellm_oss_staging_03_18_2026
Litellm oss staging 03 18 2026
2026-03-19 17:58:07 -07:00
Krish Dholakia
8d92d8637d
Merge branch 'main' into litellm_oss_staging_03_18_2026 2026-03-19 17:57:55 -07:00
Krish Dholakia
d4857f682d
Merge pull request #24135 from michelligabriele/fix/deferred-guardrail-logging-v2
fix(proxy): defer logging until post-call guardrails complete
2026-03-19 17:57:00 -07:00
Krish Dholakia
b1731b6798
Merge pull request #24168 from BerriAI/cursor/litellm-license-key-environment-16b4
docs: add LiteLLM license key environment variable instructions
2026-03-19 17:35:33 -07:00
Cursor Agent
e668ca310d
docs: add LiteLLM license key environment variable instructions
Added a new section to the config.yaml documentation explaining how to
set the LITELLM_LICENSE environment variable for enterprise features.

Co-authored-by: Krish Dholakia <krrishdholakia@gmail.com>
2026-03-20 00:28:21 +00:00
yuneng-jiang
35d4984033
Merge pull request #24167 from joereyna/fix/black-format-types
chore: apply black formatting to proxy/_types.py to fix lint CI
2026-03-19 17:25:08 -07:00
joereyna
6f1bac07e5 chore: apply black formatting to proxy/_types.py to fix lint CI 2026-03-19 17:11:04 -07:00
yuneng-jiang
0781f68b8a
Merge pull request #24150 from BerriAI/litellm_yj_march_18_2026
[Infra] Merge daily internal branch with main
2026-03-19 16:43:47 -07:00
yuneng-jiang
7b600cdbfe linting 2026-03-19 16:31:50 -07:00
yuneng-jiang
f60e3cfd34 remove returning key in error message 2026-03-19 16:29:51 -07:00
Jonathan Barazany
32cb6f0cd9 fix: guard short-circuit against providers with native agentic loop
- Skip short-circuit for providers that have a BaseAnthropicMessagesConfig
  (bedrock, vertex_ai, azure_ai, anthropic) — they use the agentic loop
  which includes a follow-up LLM synthesis step. Short-circuiting would
  return raw search text instead of an LLM-synthesized answer.
- Add fallback to litellm.get_llm_provider() for custom_llm_provider
  derivation when litellm_params is overwritten by kwargs.
- Add test for bedrock guard.

Addresses Greptile review comments #3 and #4.
2026-03-20 01:07:20 +02:00
yuneng-jiang
05620c87e3 [Fix] Update bulk key update tests for find_unique refactor
Tests were outdated after _get_and_validate_existing_key was refactored
to use prisma_client.db.litellm_verificationtoken.find_unique() and
ProxyException. Also add ProxyException handling in bulk_update_keys
error extractor so error messages aren't empty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 15:34:44 -07:00
yuneng-jiang
2d3cff99fe
Merge pull request #24159 from joereyna/fix/add-poetry-lock-check
chore: add poetry check --lock to lint CI to prevent stale lockfile merges
2026-03-19 14:48:11 -07:00
yuneng-jiang
3565059d32
Merge pull request #24155 from BerriAI/litellm_api_reference_path_routing
[Refactor] UI - API Reference: Migrate to Path-Based Routing
2026-03-19 14:39:22 -07:00
joereyna
d118bf4818 chore: add poetry check --lock to lint CI to prevent stale lockfile merges 2026-03-19 14:36:02 -07:00
yuneng-jiang
e86ca7f34d Revert "[Fix] Update tests for _get_and_validate_existing_key refactor"
This reverts commit cf63697703.
2026-03-19 14:32:14 -07:00
yuneng-jiang
2e70c23307 Gate legacy redirect on authLoading to ensure proxyBaseUrl is resolved
The redirect useEffect fires before getUiConfig() completes, so
proxyBaseUrl is always "" on first render. Gate on !authLoading so
the redirect only fires after config is fetched, matching the pattern
used by the login redirect.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:05:56 -07:00
yuneng-jiang
e9e5ed989c Move legacy redirect from render phase to useEffect
router.replace was called directly during render, which is unsafe in
React 18 concurrent mode. Move it into a useEffect and use a computed
flag (isLegacyRedirect) to show LoadingScreen while redirecting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:59:45 -07:00
yuneng-jiang
895951744d Fix leftnav navigation regression and useProxySettings initial state
The leftnav was updated to emit page="api-reference" but only "api_ref"
was in LEGACY_REDIRECTS, causing clicks to fall through to the default
Usage page. Add "api-reference" entry to the redirect map. Also include
LITELLM_UI_API_DOC_BASE_URL in the hook's initial state to avoid a
brief flash of incorrect base URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:36:21 -07:00
yuneng-jiang
519afa494c [Refactor] UI - API Reference: Migrate to path-based routing
Move the API Reference page from query-param routing (?page=api_ref) to
Next.js path-based routing (/ui/api-reference). Add a LEGACY_REDIRECTS
map in the root page.tsx so users with old bookmarks are seamlessly
redirected. Future page migrations only need one new map entry.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 12:57:17 -07:00
Joe Reyna
2df965513e
Merge pull request #24153 from joereyna/fix/black-format-lint-2
chore: apply black formatting to fix lint CI (batch 2)
2026-03-19 12:56:48 -07:00
Krish Dholakia
739356640b
Merge pull request #24120 from BerriAI/litellm_proxy-azure-api-version-bump
feat(proxy): use AZURE_DEFAULT_API_VERSION for proxy --api_version default
2026-03-19 12:54:14 -07:00