* feat(proxy_server.py): working guardrails on streaming output
ensures guardrail actually raises an error if flagged during streaming output
* test: add unit tests
* feat(advanced_settings.tsx): add guardrails option as ui component on model add
enables setting guardrails on model add
* feat(add_model_tab.tsx): fix add model form
* feat(model_info_view.tsx): support adding guardrails on model update
* fix(add_model_tab.tsx/): working health check when guardrails selected
* fix(proxy_server.py): fix yield
* EditAutoRouterTabProps
* Revert "EditAutoRouterTabProps"
This reverts commit 2835d3a374.
* add EditAutoRouterTab
* delete edit
* fixes for edit auto-router
* fix accessing model edit
* working edit auto router
* fix - edit remove custom model name
* fixes for edit auto router settings
* qa for adding a model router
* test fix
* feat(key_management_endpoints.py): Support new 'key_type' field
allow user to specify if key should be 'management' or 'llm api' key
Security fix
* test(test_route_checks.py): add unit tests
* fix(create_key_button.tsx): add ui component to select key type
allows specifying if key can call llm api vs. management routes
* feat(create_key_button.tsx): add specifying key type to ui
* fix(route_checks.py): add sensitive data masker for user id on not allowed error message
prevent leaking sensitive information
* feat(litellm_pre_call_utils.py): add num_retries to litellm data for backend call
allow user to pass in num retries via request headers
* test(test_litellm_pre_call_utils.py): add unit test
* docs(request_headers.md): document new request header
* fix(common_daily_activity.py): show spend breakdown by model group
Partial fix for https://github.com/BerriAI/litellm/issues/12887
* feat(new_usage.tsx): new tab switcher for viewing usage by model group vs. received model
Closes https://github.com/BerriAI/litellm/issues/12887
* fix(main.py): fix async retryer
Fixes https://github.com/BerriAI/litellm/issues/12830
* fix(forward_clientside_headers_by_model_group.py): filter out 'content-type' from forwardable headers
clientside content-type != proxy content type, can cause requests to hang
* test(tests/): update tests
* feat(model_hub_table.tsx): add ability for admin to add links to model hub
allows admin to add model + key request access forms to model hub
makes it easier to request access to specific models
* refactor(ui/): cleanup ui - consistent styling
* fix(useful_links_management.tsx): make tab collapsible and explain purpose
* fix(ui/): fix ui linting errors
* fix: fix linting error
* fix(add_model_modes.tsx): add 'batch' mode to ui
* fix(main.py): support health checks on batches + support litellm_credentials on batches
* fix(add_model_tab.tsx): clarify what 'team' on add model means
* feat(bulk_edit_user.tsx): initial working ui for editing users in bulk on the ui
easier to give access / assign to a default team
* feat(team_endpoints-+-bulk_edit_users.tsx): add bulk adding users to teams
make it easier to add existing users to a default team
* fix(bulk_edit_user.tsx): fix ui linting error
* fix: fix linting error
* fix bug
When Max Budget, TPM, RPM, Expire Key are set on Regenerate Key, these values are not reflected on the settings page. Refreshing the page is required.
* fix editing settings after key generation
* fix(team_info.tsx): allow setting custom key duration
more flexible than previous pre-set options
* feat(team_info.tsx): show how many user + service account keys have been created within a team