Yassin Kortam
2e46b10320
Merge pull request #41293 from BerriAI/litellm_usage_key_free_aggregate_split
...
perf(proxy): split aggregated usage query into key-free rollups and bounded top-N keys
2026-09-18 13:16:49 -07:00
ryan-crabbe-berri
6e3b6d6d03
Merge pull request #41830 from BerriAI/litellm_scim_multivalued_optional_value
...
fix(scim): accept entitlements and roles entries without a value on SCIM user PUT
2026-09-18 13:13:51 -07:00
yassin
191ca14872
Merge remote-tracking branch 'origin/main' into litellm_usage_key_free_aggregate_split
2026-09-18 20:05:54 +00:00
Yassin Kortam
2edda5aec3
Merge pull request #41757 from BerriAI/litellm_typesafe_compaction_guardrail
...
feat(guardrails): add TypeSafe Jev relevance-based compaction guardrail
2026-09-18 12:56:52 -07:00
ryan-crabbe-berri
ed9e666b54
Merge pull request #41351 from BerriAI/litellm_routing_groups_atomic_validation
...
fix(router): validate routing_groups at save time and keep invalid DB groups from blocking SSO load
2026-09-18 11:59:21 -07:00
Yassin Kortam
0594dd7caf
Merge pull request #41539 from BerriAI/litellm_vault_login_secret_namespace
...
feat(vault): add separate login and secret namespaces for HashiCorp Vault
2026-09-18 11:38:49 -07:00
Yassin Kortam
84ae0805ba
Merge pull request #41620 from BerriAI/litellm_team_member_temp_budget_increase
...
feat(proxy): temporary budget increase for team members
2026-09-18 11:38:34 -07:00
Yassin Kortam
f6d9b2552f
Merge pull request #41692 from BerriAI/litellm_mcp_gateway_sessions_by_client_user
...
feat(mcp): show live gateway sessions by AI client and user
2026-09-18 11:37:16 -07:00
Yassin Kortam
ca79c393d5
Merge pull request #41636 from BerriAI/litellm_per_key_end_user_default_budget
...
feat(proxy): per-key default budget for dynamically created customers
2026-09-18 11:36:59 -07:00
yassin
fa70e49b81
chore: merge main into litellm_transcribe_passthrough
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 17:54:59 +00:00
ryan-crabbe-berri
a9ee15372f
Merge pull request #39308 from BerriAI/litellm_ui_per_second_video_pricing
...
fix(ui): show per-second pricing for video models instead of $0.00 token costs
2026-09-18 10:05:26 -07:00
ryan
c3bc55d18f
chore: merge main into litellm_routing_groups_atomic_validation
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 16:59:23 +00:00
ryan-crabbe-berri
4e2117832a
Merge pull request #40700 from BerriAI/litellm_ui_editable_model_team_id
...
fix(ui): let admins change a model's team from the model edit page
2026-09-18 09:53:34 -07:00
yuneng-jiang
c4ab1d98e9
Merge pull request #41779 from BerriAI/litellm_settings_store_precedence
...
refactor(proxy): make the config file win over the database
2026-09-18 09:52:09 -07:00
ryan
4f86035a79
style(ui): format pricing test fixtures with prettier
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 16:16:28 +00:00
ryan
d197ca20fa
fix(ui): type transformModelData output as ModelData so the dashboard build typechecks
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 16:13:28 +00:00
ryan
b5070408e7
refactor(ui): move per-second cost formatter to dataUtils and type transformModelData input
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 15:48:56 +00:00
Mateo Wang
861f79797f
Merge pull request #41663 from BerriAI/litellm_remove_legacy_interactions_schema_flag
...
refactor(interactions): remove expired use_legacy_interactions_schema shim
2026-09-18 08:48:30 -07:00
Mateo Wang
48c4204b43
Merge pull request #41658 from BerriAI/litellm_remove_orphaned_use_delete_project_hook
...
chore(ui): remove orphaned useDeleteProject hook and its test
2026-09-18 08:48:05 -07:00
Mateo Wang
444d345d69
Merge pull request #41657 from BerriAI/litellm_remove_dead_use_key_list_hook
...
refactor(ui): remove dead useKeyList hook from key_list.tsx
2026-09-18 08:47:56 -07:00
Mateo Wang
8ff4991583
Merge pull request #41656 from BerriAI/litellm_remove_dead_networking_and_marketplace_helpers
...
refactor(ui): remove dead networking exports and orphaned Claude Code marketplace helpers
2026-09-18 08:47:46 -07:00
Mateo Wang
e9823c6063
Merge pull request #41655 from BerriAI/litellm_remove_unused_access_group_types
...
chore(ui): remove unused access-groups type interfaces
2026-09-18 08:47:34 -07:00
Mateo Wang
c51bd68ef4
Merge pull request #41653 from BerriAI/litellm_remove_dead_role_exports
...
refactor(ui): drop unused rolesAllowedToSeeUsage, viewOnlyRoles and isViewOnlyRole exports
2026-09-18 08:47:25 -07:00
Mateo Wang
57a273b087
Merge pull request #41651 from BerriAI/litellm_cost_tracking_dead_barrel_exports
...
refactor(ui): drop unused cost-tracking barrel re-exports and response types
2026-09-18 08:47:16 -07:00
Mateo Wang
1f0554c80d
Merge pull request #41650 from BerriAI/litellm_remove_dead_create_credential_from_model
...
refactor(ui): remove unused createCredentialFromModel helper and CredentialValues interface
2026-09-18 08:47:08 -07:00
Mateo Wang
1f50923211
Merge pull request #41649 from BerriAI/litellm_remove_dead_compareui_modelselector
...
chore(ui): remove dead compareUI ModelSelector and its test
2026-09-18 08:46:57 -07:00
Mateo Wang
aa9a08959a
Merge pull request #41647 from BerriAI/litellm_remove_unused_newbadge
...
chore(ui): remove unused NewBadge component and its test
2026-09-18 08:46:45 -07:00
ryan
b6410d563b
fix(scim): accept entitlements and roles entries without a value on SCIM user PUT
...
SCIMMultiValuedAttribute required value, so a PUT /scim/v2/Users/{id} that
carried an IdP-specific entitlements entry such as {"groups": [...]} failed
body validation with 422 and the suspend (active: false) never reached
update_user. value is now optional and unknown members are kept, so the
suspend is applied, keys are blocked, and the entries are stored as sent
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 15:46:33 +00:00
Mateo Wang
8183199992
Merge pull request #41646 from BerriAI/litellm_remove_dead_guardrail_config
...
chore(ui): remove never-rendered GuardrailConfig mock component and its test
2026-09-18 08:46:25 -07:00
Mateo Wang
cbfabbd8ab
Merge pull request #41645 from BerriAI/litellm_remove_orphaned_role_styles
...
chore(ui): remove orphaned ROLE_STYLES and RoleStyle from pretty messages view
2026-09-18 08:46:16 -07:00
Mateo Wang
57a59889ac
Merge pull request #41644 from BerriAI/litellm_remove_dead_helplink_helpicon
...
refactor(ui): remove unused HelpLink and HelpIcon components
2026-09-18 08:46:08 -07:00
ryan
0beb2ffb81
Merge remote-tracking branch 'origin/main' into litellm_ui_per_second_video_pricing
2026-09-18 15:45:18 +00:00
ryan
a9ad1bbad8
Merge remote-tracking branch 'origin/main' into litellm_routing_groups_atomic_validation
2026-09-18 09:04:26 +00:00
yassin
3d2913307a
Merge remote-tracking branch 'origin/main' into litellm_usage_key_free_aggregate_split
2026-09-18 08:59:24 +00:00
yassin
bc636bc5ff
Merge remote-tracking branch 'origin/main' into litellm_vault_login_secret_namespace
2026-09-18 08:57:50 +00:00
Yuneng Jiang
8e67a33fc3
fix(proxy): refuse config-owned writes at one choke point and refresh the store
...
Both write paths now go through the same refusal, so /config/field/update and
/config/update answer identically instead of each phrasing its own rule.
A successful write now applies to the SettingsStore, so the next read sees it.
Without this, /config/field/info reported a key the dashboard had just stored
as "not set" until the process reloaded from the database.
resolve() no longer takes a KeyRule it never reads; the store picks the row.
The matrix tests resolve through SettingsStore instead of calling resolve
directly, so the section and key in each case actually route a lookup.
ConfigFieldInfo and ConfigList type `source` as the FieldSource literal, and
the dashboard API types are regenerated for the two new fields.
2026-09-18 01:49:30 -07:00
yassin
4863e1775b
feat(guardrails): add TypeSafe Jev relevance-based compaction guardrail
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 04:33:16 +00:00
yassin
9d92b10575
fix(ui): clear a stored List general setting when its input is emptied
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:37:41 +00:00
yassin
393d084db7
feat(proxy): restrict Transcribe media and output buckets per operator allowlist
...
Non-admin keys may only start transcription jobs whose media and transcript output live in the S3 buckets listed in general_settings.transcribe_media_buckets, and may not supply DataAccessRoleArn or JobExecutionSettings. The setting is editable from the Admin UI general settings table (new List editor) and DB values load into the running proxy when config.yaml does not set it
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 01:18:07 +00:00
Yuneng Jiang
b9e468100b
chore(proxy): regenerate the OpenAPI snapshot with the CI Python version
...
The previous regeneration ran on Python 3.13, which strips docstring
indentation at compile time, so one description and one query field came out
different from what the Python 3.12 sync check produces. Regenerated on 3.12
so only the typesafe route entries differ from main
2026-09-17 18:15:55 -07:00
Yuneng Jiang
685ac115ca
chore(proxy): regenerate the OpenAPI snapshot and dashboard types for the typesafe methods
2026-09-17 18:09:50 -07:00
ryan-crabbe-berri
03ba5634a2
Merge pull request #40632 from BerriAI/litellm_fix_ui_disable_cache_control_injection_points
...
fix(ui): persist disabling cache control injection points on model update
2026-09-17 17:35:07 -07:00
Mateo Wang
cf42b607c3
Merge pull request #41615 from BerriAI/litellm_jev_complexity_classifier
...
feat(router): add TypeSafe Jev as a complexity router classifier
2026-09-17 17:31:08 -07:00
yucheng-berri
a9bea4f64d
Merge pull request #41571 from BerriAI/litellm_policy_attachment_priority
...
feat(policy_engine): explicit priority for policy attachment execution order
2026-09-17 17:27:55 -07:00
ryan
696587c4ab
fix(ui): persist disabling cache control injection points on model update
...
Turning Cache Control off on the model edit screen omitted the field from the
PATCH body, which the backend reads as leave unchanged, so the stored
cache_control_injection_points list survived the save. The dashboard now sends
an explicit null when a stored list is being disabled, and update_db_model
clears that field on null the same way it already clears the mirrored pricing
fields. Omitted keys keep the stored value
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 00:20:22 +00:00
yassin
4f8a5b5e12
Merge remote-tracking branch 'origin/main' into litellm_transcribe_passthrough
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
# Conflicts:
# litellm/proxy/_lazy_features.py
# litellm/proxy/_lazy_openapi_snapshot.json
# litellm/proxy/pass_through_endpoints/success_handler.py
# ui/litellm-dashboard/src/lib/http/schema.d.ts
2026-09-18 00:17:47 +00:00
mateo
b989e3bd0a
test(ui): stub fetch without a type suppression in interactions playground test
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-18 00:10:03 +00:00
ryan-crabbe-berri
5156dbc67f
fix(ui): show the saved team in read mode before the model query refetches
...
Read mode built the Team display from the react-query snapshot while save only wrote localModelData, so the old team flashed until the parent's invalidation refetched. Read the team from localModelData like the neighbouring fields and look up its alias from the local team id. The regression test also waits for the Select trigger to report expanded before clicking an option, because Base UI opens the popup asynchronously and keeps the closed popup mounted, which made back-to-back option clicks flaky.
2026-09-17 17:04:14 -07:00
mateo
d09ccc4b0e
fix(ui): parse current interaction stream events in playground
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 23:45:04 +00:00
Devin AI
569ef3ea25
merge: resolve conflict with main in member budget seeding
...
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-17 23:42:41 +00:00