1.
notifications_manager.tsx
- Hybrid notification approach:
Added notificationInstance variable to store the context-based instance
Added
setNotificationInstance()
function to inject the instance from context
Created
getNotification()
helper that prefers context instance, falls back to static
Added COMMON_NOTIFICATION_PROPS (exported) with showProgress: true and pauseOnHover: true
All notification methods (
error
,
warning
,
info
,
success
,
fromBackend
) now spread COMMON_NOTIFICATION_PROPS
2.
AntdGlobalProvider.tsx
- New context provider:
Wraps app with Antd's <App> component
Uses App.useApp() hook to get the context-based notification instance
Injects it into NotificationManager via
setNotificationInstance()
* [Feat] add ElevenLabs `eleven_v3` and `eleven_multilingual_v2` to model cost map
Register ElevenLabs TTS models for cost tracking:
- elevenlabs/eleven_v3: most expressive model, 70+ languages, audio tags
- elevenlabs/eleven_multilingual_v2: default TTS model, 29 languages
Also update ElevenLabs docs with supported models table and eleven_v3 audio tags example.
* docs: remove model-agnostic tip from ElevenLabs docs
* docs(web_search): clarify OpenAI search model requirements
- Add gpt-5-search-api to supported OpenAI search models
- Add warning that regular models (gpt-5, gpt-4.1) do NOT support web_search_options
- Add tip that web_search_options is optional for search models
* feat(models): add gpt-5-search-api pricing for OpenAI and Azure
- Create _raw_headers once at start, reuse for SecretFields
- Reuse _headers from clean_headers() instead of creating new dict
(clean_headers already removes authorization)
- Eliminates 2 of 3 dict(request.headers) calls per request
- Remove duplicate add_guardrails_from_policy_engine() call that was
already being made inside move_guardrails_to_metadata()
- Add early-out guard in move_guardrails_to_metadata() to skip all
guardrails processing when no guardrails/policies are configured
- Remove redundant data.update() wrapper around
add_litellm_metadata_from_request_headers() which already modifies
data in place
Benchmark (3 runs x 2000 req x 1000 concurrency):
- add_litellm_data_to_request: 8.87s → 7.45s (-16%)
- Guardrails overhead: 1.0s (11.2%) → 0.24s (3.2%) (-76%)
Cache request.url.path once instead of accessing it 6 times (2 in
assistants check + 4 in LITELLM_METADATA_ROUTES loop). Reduces
per-call time from 47µs to 20µs (-58%).
Also inline the assistants API check to avoid function call overhead.
Adds 8 tests for _get_metadata_variable_name covering all return paths.
- Add openrouter/anthropic/claude-opus-4.6 to model cost map
- Update Bedrock docs to list Opus 4.6 and Sonnet 4.5 as 1M context compatible
- Add missing Opus 4.6, Opus 4.5, and Opus 4.1 to Anthropic supported models table
Create fresh mock objects within the test instead of reusing mocks
from setUp that have side_effect configured. The setUp's side_effect
on mock_langfuse_client.trace can interfere with return_value settings
when tests try to reset and reconfigure mocks.
Using dedicated mock objects for this test avoids state pollution
from setUp's side_effect configuration and makes the test more
deterministic in parallel execution environments.
Set cached tokenizer config directly and mock both sync and async
tokenizer functions to avoid race conditions when running with
parallel test execution (-n 16).
The issue was that parallel tests could populate the
litellm.known_tokenizer_config cache between clearing it and
when the code checked it. This caused the sync code path to be
used instead of the async path, bypassing the mocked async functions.
Fix:
1. Set cache directly instead of clearing it
2. Also mock sync versions _get_tokenizer_config and _get_chat_template_file
This ensures the test is deterministic regardless of test execution order.
Add openrouter/auto, openrouter/free, and openrouter/bodybuilder
to the model prices and context window JSON. These are OpenRouter's
own native models with their capabilities (context window, function
calling, vision, reasoning, etc).
Unify follow-up fixes for Opus 4.6 pricing and routing metadata into
a single changeset.
Set long-context-capable Opus 4.6 entries to 1M input tokens where
>200K pricing is defined, align alias and dated capability metadata,
and add Bedrock Converse v1 IDs with and without :0 suffixes.
Keep regional endpoint pricing at a 10% premium over global entries
and mirror all cost-map changes in the backup file used for local
loading and offline fallback behavior.
Extend Opus 4.6 regression tests to verify metadata parity, Bedrock
regional pricing parity across :0 and non-:0 IDs, and converse model
registration in constants and runtime model sets.
Add Claude Opus 4.6 entries for Anthropic, Bedrock Converse, and Vertex AI.
Align pricing and capability metadata with Anthropic docs, including
long-context rates, above-200k prompt-caching rates, prefill removal,
and tool-use system prompt token counts.
Register the Bedrock Converse model ID in constants and add targeted
tests to validate model map values and converse registration.
The /mcp endpoint requires a trailing slash because the MCP server
is mounted as a sub-application using app.mount(). Starlette's mount
behavior causes a 307 redirect from /mcp to /mcp/, which many MCP
clients fail to handle.
Updates documentation examples to use /mcp/ consistently.