Commit graph

31926 commits

Author SHA1 Message Date
Yuneng Jiang
9207dac2c2
chore: fixes
Some checks failed
Unit Tests: Caching (Redis) / caching-redis (push) Has been cancelled
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) Has been cancelled
Unit Tests: Proxy DB Operations / proxy-db (key-generation, tests/proxy_unit_tests/test_key_generate_prisma.py, 30, 0) (push) Has been cancelled
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, 20, 8) (push) Has been cancelled
Unit Tests: Security / security (push) Has been cancelled
2026-04-05 00:35:14 -07:00
OpenClaw
19b1220b6d fix: parse actual status code from Bedrock JSON error response & remove unused test imports
- Parse status_code/statusCode from Bedrock error JSON instead of hardcoding 400
- Remove unused imports (json, AsyncMock, MagicMock) from test file

Addresses Greptile review feedback on PR #20881
2026-02-14 00:58:11 +00:00
Shin
80fd24f903 fix(bedrock): handle JSON error responses in streaming instead of ChecksumMismatch
When Bedrock returns a JSON error response (e.g., for invalid inference
profile ARN format), the code was feeding it into botocore's EventStreamBuffer
which expects binary event stream framing. This caused ChecksumMismatch
errors that masked the actual Bedrock error message.

This fix:
- Catches ChecksumMismatch in iter_bytes/aiter_bytes
- Attempts to parse accumulated bytes as JSON error
- Raises BedrockError with the actual error message
- Falls back to a generic error for malformed responses

Fixes #20589
2026-02-10 17:33:07 +00:00
michelligabriele
969710477f
fix(mcp): resolve OAuth2 root endpoints returning "MCP server not found" (#20784)
When MCP SDK hits root-level /register, /authorize, /token without
server name prefix, auto-resolve to the single configured OAuth2
server. Also fix WWW-Authenticate header to use correct public URL
behind reverse proxy.
2026-02-09 19:58:37 -08:00
Shivam Rawat
1ee43b11de
[Fix] prevent shared backend model key from being polluted by per-deployment custom pricing (#20679)
* bug: custom price override for models

* added associated test
2026-02-09 19:38:44 -08:00
Ishaan Jaff
36e0361187
[UI] M2M OAuth2 UI Flow (#20794)
* add has_client_credentials

* MCPOAuth2TokenCache

* init MCP Oauth2 constants

* MCPOAuth2TokenCache

* resolve_mcp_auth

* test fixes

* docs fix

* address greptile review: min TTL, env-configurable constants, tests, docs

- Fix zero-TTL edge case: floor at MCP_OAUTH2_TOKEN_CACHE_MIN_TTL (10s)
- Make all MCP OAuth2 constants env-configurable via os.getenv()
- Move test file to follow 1:1 mapping convention (test_oauth2_token_cache.py)
- Add MCP OAuth doc page (mcp_oauth.md) with M2M and PKCE sections
- Update FAQ in mcp.md to reflect M2M support
- Add E2E test script and config

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

* fix mypy lint

* fix oauth2

* ui feat fixes

* test M2M

* test fix

* ui feats

* ui fixes

* ui fix client ID

* fix: backend endpoints

* docs fix

* fixes greptile

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:28:02 -08:00
yuneng-jiang
b70f97e653
Merge pull request #20790 from BerriAI/litellm_ui_inv_user_msg
[Feature] UI - Invite User: Email Integration Alert
2026-02-09 18:04:17 -08:00
Ishaan Jaff
19024e0602
[Feat] MCP Oauth2 Fixes - Add support for MCP M2M Oauth2 support (#20788)
* add has_client_credentials

* MCPOAuth2TokenCache

* init MCP Oauth2 constants

* MCPOAuth2TokenCache

* resolve_mcp_auth

* test fixes

* docs fix

* address greptile review: min TTL, env-configurable constants, tests, docs

- Fix zero-TTL edge case: floor at MCP_OAUTH2_TOKEN_CACHE_MIN_TTL (10s)
- Make all MCP OAuth2 constants env-configurable via os.getenv()
- Move test file to follow 1:1 mapping convention (test_oauth2_token_cache.py)
- Add MCP OAuth doc page (mcp_oauth.md) with M2M and PKCE sections
- Update FAQ in mcp.md to reflect M2M support
- Add E2E test script and config

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

* fix mypy lint

* fix oauth2

* remove old files

* docs fix

* address greptile comments

* fix: atomic lock creation + validate JSON response shape

- Use dict.setdefault() for atomic per-server lock creation
- Add isinstance(body, dict) check before accessing token response fields

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

* fix: replace asserts with proper guards, wrap HTTP errors with context

- Replace `assert` statements with `if/raise ValueError` (asserts can be
  disabled with python -O in production)
- Wrap `httpx.HTTPStatusError` to provide a clear error message with
  server_id and status code
- Add tests for HTTP error and non-dict JSON response error paths
- Remove unused imports

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 17:35:11 -08:00
michelligabriele
35eb303098
fix(prometheus): sanitize label values to prevent metric scrape failures (#20600)
* fix(prometheus): sanitize label values to prevent metric scrape failures

Unicode characters like U+2028 (Line Separator) in Prometheus label values
break the text exposition format, causing scrapers (e.g. Datadog) to fail
parsing the entire /metrics endpoint. One bad label value causes ALL metrics
to be lost, not just the affected metric.

Add _sanitize_prometheus_label_value() and apply it in prometheus_label_factory()
and all direct .labels() call sites.

* fix(prometheus): handle non-string label values in sanitization

Coerce non-string values (int, bool, float) to str before applying
sanitization, preventing AttributeError on .replace() calls.

* fix(prometheus): run sanitization on coerced non-string values

Non-string values should be coerced to str and then sanitized (not
returned early), so their string representations also get cleaned.

* fix(prometheus): widen type hint to Optional[Any] for label value sanitization
2026-02-09 15:48:59 -08:00
yuneng-jiang
a41a4b41f5 Text changes 2026-02-09 15:20:39 -08:00
yuneng-jiang
145ef7d388 extending timeout for long running tests 2026-02-09 15:02:47 -08:00
yuneng-jiang
cbcbbff604 fixing tests 2026-02-09 14:45:08 -08:00
yuneng-jiang
409d12b7a5 Add alert about email notifications 2026-02-09 14:40:51 -08:00
yuneng-jiang
bb17ca15e9
Merge pull request #20785 from BerriAI/litellm_ui_team_info_refactor
[Refactor] UI - Team Info: Migrate to AntD Tabs + Table
2026-02-09 14:13:22 -08:00
yuneng-jiang
c2536ee82a refactor antd tabs and table 2026-02-09 14:05:05 -08:00
yuneng-jiang
f8660a8ab0
Merge pull request #20780 from BerriAI/litellm_ui_coverage_04
[Refactor] UI - Remove unused files + Add unit tests
2026-02-09 13:02:42 -08:00
Ishaan Jaff
4555ed37c5
fix(callbacks): allow MAX_CALLBACKS override via env var (#20781)
* fix(callbacks): allow MAX_CALLBACKS override via env var (#20778)

* fix(callbacks): allow MAX_CALLBACKS override via env var

- Move MAX_CALLBACKS from logging_callback_manager.py to constants.py
- Add LITELLM_MAX_CALLBACKS env var override (default: 30)
- Add troubleshooting doc explaining the limit and override

Fixes issue where large deployments with 60+ teams using guardrails
would hit the hardcoded MAX_CALLBACKS=30 limit and fail to start.

* docs: add max_callbacks to sidebar navigation

---------

Co-authored-by: shin-bot-litellm <shin-bot-litellm@users.noreply.github.com>

* fix callbacks issue

---------

Co-authored-by: shin-bot-litellm <shin-bot-litellm@berri.ai>
Co-authored-by: shin-bot-litellm <shin-bot-litellm@users.noreply.github.com>
2026-02-09 12:11:32 -08:00
yuneng-jiang
ff5a3acc1c addressing feedback around tests 2026-02-09 12:07:53 -08:00
yuneng-jiang
fb4daad8d4 refactor: remove some unused files and add tests 2026-02-09 11:50:40 -08:00
yuneng-jiang
9bb7f18795
Merge pull request #20773 from BerriAI/litellm_ui_error_code
[Feature] UI - Logs: Show Predefined Error Codes in Filter with User Definable Fallback
2026-02-09 11:42:36 -08:00
yuneng-jiang
a7ed3f240c Show predefined error codes in UI with user adjustable fallback 2026-02-09 11:08:28 -08:00
Ishaan Jaffer
f2ba120c43 docs fix 2026-02-09 10:59:57 -08:00
Ishaan Jaff
9532ad0fab
docs fix (#20768) 2026-02-09 10:03:43 -08:00
Sameer Kankute
136fc698ef
Merge pull request #20601 from Harshit28j/litellm_fix_budget_model_v2
fix conflicts with main- (this PR is from upstream/main)
2026-02-09 20:08:27 +05:30
Sameer Kankute
6b2bcdb870
Merge pull request #20483 from BerriAI/litellm_completion_websearch
[Feat] Chat completion - Add Websearch support using LiteLLM /search (using web search interception hook)
2026-02-09 17:52:52 +05:30
Sameer Kankute
6158e46f00
Merge pull request #20747 from BerriAI/litellm_image_gen_bas_model_fix
Fix: base_model name for body and deplyment name in URL
2026-02-09 17:51:41 +05:30
Sameer Kankute
2d18ae4f9e Fix mypy issues 2026-02-09 17:44:39 +05:30
Sameer Kankute
125e11d36e Fix mypy issues 2026-02-09 17:43:52 +05:30
Sameer Kankute
5693e2c785
Merge pull request #20752 from BerriAI/litellm_fix_cicd_9_feb
Fix: get_supported_anthropic_messages_params
2026-02-09 17:38:39 +05:30
Sameer Kankute
5702cc7e13 Fix: get_supported_anthropic_messages_params 2026-02-09 17:38:03 +05:30
Sameer Kankute
0b5cb47c03 fix: Missing return statement for async streaming 2026-02-09 17:34:48 +05:30
Sameer Kankute
e5f41ba054
Merge pull request #20733 from BerriAI/litellm_v1_messages_claude_4_6
[Feat]Add new claude 4-6 feat for v1/messages
2026-02-09 17:26:40 +05:30
Sameer Kankute
5611974228 Fix : litellm/tests/test_litellm/llms/bedrock/chat/invoke_transformations/test_bedrock_chat_invoke_transformations_anthropic_claude3_transformation.py 2026-02-09 17:18:05 +05:30
Sameer Kankute
ef55d37bf0
Merge branch 'main' into litellm_v1_messages_claude_4_6 2026-02-09 17:14:36 +05:30
Sameer Kankute
30d17c29e4 handle when litellm_parrams might be none 2026-02-09 17:13:39 +05:30
Sameer Kankute
3cf109ed0c
Merge pull request #20745 from BerriAI/litellm_vercel_ai_models
Add new vercel ai anthropic models
2026-02-09 17:07:56 +05:30
Sameer Kankute
23088f86bd Add response schema for vercel ai sonnet 4.5 2026-02-09 17:07:36 +05:30
Sameer Kankute
493eaa6200
Merge pull request #20748 from BerriAI/litellm_anthropic_output_config
Add output_config as supported param
2026-02-09 17:04:08 +05:30
Sameer Kankute
a322db02ab
Merge pull request #20696 from BerriAI/litellm_oss_staging_02_08_2026
Litellm oss staging 02 08 2026
2026-02-09 16:59:54 +05:30
Sameer Kankute
285c00ac20
Merge pull request #20710 from tsachis/fix-video-list-pagination-id-encoding
Fix video list pagination cursors not encoded with provider metadata
2026-02-09 16:41:52 +05:30
Sameer Kankute
1b2278951d Add output_config as supported param 2026-02-09 16:39:21 +05:30
Sameer Kankute
f929461fc6
Merge pull request #20702 from emerzon/fix/issue-20698-stream-chunk-thinking-blocks
fix(streaming): preserve interleaved thinking/redacted_thinking blocks
2026-02-09 16:32:43 +05:30
Sameer Kankute
d35691aa0c Fix: base_model name for body and deplyment name in URL 2026-02-09 16:25:46 +05:30
Sameer Kankute
6c4d6bb15e Add new vercel ai anthropic models 2026-02-09 16:00:01 +05:30
Sameer Kankute
2f33445054
Merge pull request #20738 from BerriAI/main
merge main
2026-02-09 15:07:39 +05:30
Sameer Kankute
a924a07255
Merge pull request #20736 from CAFxX/verificationtoken-index
add missing indexes on VerificationToken table
2026-02-09 14:37:51 +05:30
Sameer Kankute
c48986ba8d Fix double json import 2026-02-09 14:21:43 +05:30
Sameer Kankute
1f04115fb0 Fix: is_web_search_tool_chat_completion 2026-02-09 13:59:05 +05:30
Sameer Kankute
7fa4d090ec Add doc for chat completion web search 2026-02-09 13:51:26 +05:30
Sameer Kankute
4e94ecb08d Add tests for WebSearch interception with chat completions API 2026-02-09 13:41:29 +05:30