Commit graph

83 commits

Author SHA1 Message Date
Krish Dholakia
a385126a7c Litellm dev compliance UI (#21457)
* feat(ui/): initial commit adding a compliance testing playground

allow proxy admins to test policies and guardrails against datasets

* feat(ui/): make score more friendly

* feat(policy_endpoints.py): new helper function for testing policies

* feat(policy_endpoints.py): expose new endpoint for testing policies and guardrails

enables compliance playground to work as expected

* feat(complianceui.tsx): show returned text
2026-02-18 18:22:43 -08:00
Ishaan Jaff
1a8525d02a
Add GDPR Art. 32 EU PII Protection Policy Template (#21340)
* Add 6 new EU PII patterns for GDPR compliance

- fr_nir: French Social Security Number (NIR/INSEE) with validation
- eu_iban_enhanced: Enhanced IBAN detection with specific format
- fr_phone: French phone numbers (+33, 0033, 0 formats)
- eu_vat: EU VAT identification numbers (all 27 member states)
- eu_passport_generic: Generic EU passport format
- fr_postal_code: French postal codes with contextual keywords

* Add GDPR Art. 32 EU PII Protection policy template

- Comprehensive GDPR Article 32 compliance policy
- 4 guardrail groups: National IDs, Financial, Contact Info, Business IDs
- Masks French NIR/INSEE, EU IBANs, French phones, EU VAT numbers
- Includes EU passport numbers and email addresses
- Medium complexity template with indigo icon

* Add comprehensive tests for EU PII patterns

- Test French NIR validation (sex digit, month range)
- Test enhanced IBAN detection (French, German)
- Test French phone number formats
- Test EU VAT numbers
- Test generic EU passport format
- Test French postal code pattern

* Add EU pattern loading and category validation tests

- Verify all 6 EU PII patterns are loaded correctly
- Verify patterns are categorized as 'EU PII Patterns'
- Ensure pattern loading consistency

* Add end-to-end tests for GDPR policy template

- 4 tests for PII that should be masked (NIR, IBAN, phone, VAT)
- 4 tests for text that should pass through (invalid patterns, no PII)
- 1 bonus test for multiple PII types in same message
- All tests verify correct masking behavior

* Add region field to policy templates

- Added region field to all 6 templates (EU, AU, Global)
- Updated both main and backup JSON files
- Enables region-based filtering in UI

* Add region filter to policy templates UI

- Added Radio.Group filter for regions (All, AU, EU, Global)
- Efficient filtering with useMemo hooks
- Clean button-based UI matching existing design
- Defaults missing regions to Global

* Apply suggestion from @greptile-apps[bot]

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Address Greptile review: add contextual guards and negative tests

- Added keyword_pattern to eu_vat (VAT, tax number, fiscal code, etc.)
- Added keyword_pattern to eu_passport_generic (passport, travel document, etc.)
- Added 3 negative unit tests for false positive prevention
- Added 2 E2E tests verifying no masking without keyword context
- All patterns now require contextual keywords to prevent false positives

* address greptile review feedback (greploop iteration 1)

- Remove unused HTTPException import from test file
- Add keyword_pattern to eu_vat for contextual VAT matching
- Add allow_word_numbers: false to eu_passport_generic
- Add negative test cases for EU VAT false positives
- All 5 Greptile comments addressed

* Address Greptile feedback: fix patterns and sync backup

- Fix fr_phone pattern: use negative lookbehind (?<!\d) to prevent false matches in longer digit strings
- Add keyword_pattern to eu_passport_generic to reduce false positives on version strings/SKUs
- Sync policy_templates_backup.json with main file (add GDPR template)
- Add keyword_pattern to eu_vat (was auto-added by formatter)

All pattern tests passing

* address greptile review feedback (greploop iteration 2)

- Update test to document that eu_vat raw pattern is intentionally broad
- Test verifies pattern DOES match common words (by design)
- Documents that keyword_pattern guard prevents false positives in production
- Addresses Greptile's false positive risk concern

* address greptile review feedback (greploop iteration 3)

- Fix test_eu_vat_masked: change gap from 2 words to 1 word (VAT number: FR...)
- This ensures keyword matching works within MAX_KEYWORD_VALUE_GAP_WORDS=1 limit
- fr_phone pattern already works correctly (verified with tests)
- test_pattern_requires_keyword_context already updated in iteration 2

Addresses final issues from Greptile 2/5 review

* fix: remove country-specific passport patterns from GDPR template

- Remove passport_france, passport_germany, passport_netherlands from template
- These patterns lack keyword guards and cause false positives
- Only eu_passport_generic remains (has keyword_pattern guard)
- Sync policy_templates_backup.json with main file
- Update test setup to match template

All 11 E2E tests now passing 

* Update tests/test_litellm/proxy/guardrails/guardrail_hooks/content_filter/test_gdpr_policy_e2e.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update litellm/proxy/guardrails/guardrail_hooks/litellm_content_filter/content_filter.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-02-16 15:28:46 -08:00
Krish Dholakia
10d891a365
Guardrails - add logging to all unified_guardrails + link to custom code guardrail templates (#20900)
* feat(guardrail_hooks/): add guardrail logging to all unified guardrails

ensures unified guardrails use the 'log_guardrail_information' decorator for logging

* fix(custom_guardrail.py): don't log inputs on guardrail response - just emit state

* refactor: don't double log bedrock guardrail information

* feat: add in-product nudges for contributing + trying community custom code guardrails

allows users to contribute / share custom code guardrails
2026-02-10 15:13:54 -08:00
yuneng-jiang
54828e3783 add knip as a dev dependency, remove some unused files 2026-02-07 15:51:21 -08:00
Ishaan Jaffer
51af66fdb2 ui new buil 2026-02-06 19:15:29 -08:00
yuneng-jiang
b8876838a6 revert react 18 2026-01-31 20:09:39 -08:00
yuneng-jiang
dc5c8c8918 react 19 2026-01-31 18:33:03 -08:00
yuneng-jiang
c68baa3943 upgrade react version 2026-01-31 18:13:44 -08:00
yuneng-jiang
b62f46ec5b Update next to 16.1.6 2026-01-31 17:44:03 -08:00
yuneng-jiang
3cb47dae44 updating lodash for dashboard 2026-01-22 12:22:04 -08:00
yuneng-jiang
685437c9cc Adding help scripts for neon 2026-01-12 13:51:09 -08:00
Alexsander Hamir
936aa6821f
[Fix] CI/CD - litellm_security_tests (#18567) 2026-01-01 14:20:04 -08:00
yuneng-jiang
a1849a152c Playwright setup in UI directory 2025-12-29 11:27:22 -08:00
yuneng-jiang
e3f1ce0138 bumping docusaurus/theme-mermaid to 3.9.0 2025-12-12 14:42:31 -08:00
yuneng-jiang
6f6a8f782e Fix UI settings 2025-12-10 21:31:35 -08:00
dependabot[bot]
83291d394e
build(deps): bump mdast-util-to-hast in /ui/litellm-dashboard (#17444)
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-05 17:12:51 -08:00
dependabot[bot]
5fb7530d8c
build(deps): bump jws from 3.2.2 to 3.2.3 in /ui/litellm-dashboard (#17494)
Bumps [jws](https://github.com/brianloveswords/node-jws) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/brianloveswords/node-jws/releases)
- [Changelog](https://github.com/auth0/node-jws/blob/master/CHANGELOG.md)
- [Commits](https://github.com/brianloveswords/node-jws/compare/v3.2.2...v3.2.3)

---
updated-dependencies:
- dependency-name: jws
  dependency-version: 3.2.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-05 15:44:15 -08:00
Ishaan Jaffer
b487e67dec sec fix 2025-11-26 18:23:18 -08:00
Ishaan Jaffer
3ba3faefb8 fix sec scan 2025-11-22 11:50:32 -08:00
Ishaan Jaffer
1adaf043db fix TYPE_CHECKING + security 2025-11-22 10:59:17 -08:00
Matt Cowger
4be0c6a226
JSONpanel (#16687) 2025-11-15 20:11:42 -08:00
Ishaan Jaffer
acad73018d fix pkg lock 2025-11-14 18:59:49 -08:00
Sameer Kankute
e037d9315d
Add Vertex and Gemini Videos API with Cost Tracking + UI support (#16323)
* Use video id for videos api

* remove mock code

* Potential fix for code scanning alert no. 3630: Clear-text logging of sensitive information

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* remove print statements

* Update video prefix for 'video_'

* Add veo with openai videos unified specs

* Add videos testing to UI

* remove mock code

* Remove not need ui changes:

* Fix mypy errors related to gemini

* fix test_transform_video_create_request

* Add vertex ai veo config

* Add vertex ai veo config

* Add cost tracking for gemini and add optional param passing

* fix bugs related to vertex ai veo

* Add Gemini Veo Video Generation in Openai Videos Unified Spec (#16229)

* Add veo with openai videos unified specs

* Add videos testing to UI

* remove mock code

* Remove not need ui changes:

* Fix mypy errors related to gemini

* fix test_transform_video_create_request

* Add contant video duration for gemini and vertex

* Fix litellm_mapped_tests tests

* fix azure videos issue

* Added doc for videos vertex ai

* fix seconds param error

* fix lint errors

* test_transform_video_create_response_cost_tracking_no_duration

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Ishaan Jaffer <ishaanjaffer0324@gmail.com>
2025-11-08 16:03:51 -08:00
yuneng-jiang
4ed9c7d7f2
[Feat] UI - Changed API Base from Select to Input in New LLM Credentials (#15987)
* Changed API Base from Select to Input

* Added Tests
2025-10-27 15:46:04 -07:00
yuneng-jiang
8d1d400d32
litellm_Key Settings Max Budget Removal Error Fix (#15669)
* Key Settings Max Budget Removal Fix

* Add responses mode to health check

* test fix

* Key Settings Max Budget Removal Error Fix

---------

Co-authored-by: Sameer Kankute <sameer@berri.ai>
Co-authored-by: Ishaan Jaffer <ishaanjaffer0324@gmail.com>
2025-10-17 19:41:29 -07:00
Achintya Rajan
6b66e12dea
Litellm UI API Reference page updates (#15438)
* added new CodeBlock for better visuals

* added doc link
2025-10-10 18:18:31 -07:00
Achintya Rajan
73eafed51c removed unused imports 2025-10-10 10:25:00 -07:00
Achintya Rajan
5fca481ebb removing unused imports 2025-10-10 10:24:57 -07:00
=
5197268a58 added and ran prettier autoformatter 2025-10-04 18:19:48 -07:00
DrQuacks
8760276918 dropdown for more than two tags 2025-10-02 16:45:36 -07:00
DrQuacks
a91a7e7750 added testing file for api keys dashboard 2025-10-02 16:17:02 -07:00
Krrish Dholakia
ee5058b5e2 test: add unit testing 2025-09-19 17:41:27 -07:00
dependabot[bot]
060fa4d82f
build(deps): bump esbuild and vite in /ui/litellm-dashboard (#14703)
Bumps [esbuild](https://github.com/evanw/esbuild) to 0.25.10 and updates ancestor dependency [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). These dependencies need to be updated together.


Updates `esbuild` from 0.21.5 to 0.25.10
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.10)

Updates `vite` from 5.4.20 to 7.1.6
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.6/packages/vite)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.25.10
  dependency-type: indirect
- dependency-name: vite
  dependency-version: 7.1.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-19 15:21:30 -07:00
=
7cfdc6069a upgraded build script to node 20 2025-09-18 18:01:47 -07:00
=
61d1fabb6e upgraded vitest 2025-09-18 17:39:53 -07:00
=
4f89675267 upgraded to node 20 2025-09-18 17:38:56 -07:00
=
f80660acd9 vitests for GuardrailViewer components 2025-09-18 16:57:22 -07:00
Ishaan Jaff
d9ca0f9300
security: fix next js version (#14084) 2025-08-29 18:09:11 -07:00
Ishaan Jaff
45a9af8063 security fix 2025-08-20 08:40:49 -07:00
Ishaan Jaff
d6fa6b60d7
[Feat] UI - Add Confirmation Modal Before Deleting Keys (#13655)
* Enhance key deletion with confirmation input and improved modal UI

Co-authored-by: ishaan <ishaan@berri.ai>

* remove file

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: ishaan <ishaan@berri.ai>
2025-08-15 08:51:32 -07:00
Jugal D. Bhatt
67833590d6
[Proxy changes] Litellm add model price reload schedule for multi-pod (#13470)
* added mcp guardrails doc in mcp.md

* add button to reload models

* Added button changes

* added button for scheduling reload

* add multi pod support to reloading the model price json

* fix ruff
2025-08-09 16:12:13 -07:00
Ishaan Jaff
05b48eba62 fix security issue 2025-08-08 18:32:50 -07:00
Ishaan Jaff
7e2a00c848
[Docs] Add docs on how router / cooldowns work (#13444)
* add theme-mermaid

* docs cool down

* docs cooldown
2025-08-08 15:13:37 -07:00
dependabot[bot]
2be16eb493
build(deps): bump form-data from 4.0.0 to 4.0.4 in /ui/litellm-dashboard (#12851)
---
updated-dependencies:
- dependency-name: form-data
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-21 22:05:38 -07:00
Cole McIntosh
ca96e39229 Update package-lock.json to include @anthropic-ai/sdk version 0.54.0 2025-06-24 14:29:14 -06:00
Ishaan Jaff
2a698062e3
[Feat] UI Allow testing /v1/messages on the Test Key Page (#11930)
* Add ANTHROPIC_MESSAGES to chat UI

* add anthropic-ai/sdk

* add anthropic messages to UI

* add makeAnthropicMessagesRequest

* fixes for endpoint selector
2025-06-20 13:31:24 -07:00
Cole McIntosh
ae74eb833b
Implement health check frontend UI components and dashboard integration (#11679)
* feat: Implement health check functionality for models

- Added individual model health check API call and integrated it into the dashboard.
- Introduced health check history and latest health checks retrieval.
- Enhanced model dashboard to display health status, last check time, and error details.
- Created a new health check columns component for better organization of health data.
- Added error pattern handling for meaningful error messages.
- Updated UI components to support health check actions and display loading states.

* refactor: extract health check functionality into a new component

- Removed individual health check logic from ModelDashboard and encapsulated it within HealthCheckComponent for better modularity and maintainability.
- Updated ModelDashboard to utilize the new HealthCheckComponent, streamlining the health check process and improving code organization.
- Cleaned up unused state variables and imports related to health checks in ModelDashboard.
- Enhanced error handling and status management within the new component, ensuring a more robust health check experience.

* fix: add access token check in HealthCheckComponent to prevent unauthorized API calls

- Implemented a check for the presence of an access token before making API calls to fetch the latest health checks, enhancing security and preventing potential errors when the token is missing.
2025-06-18 13:46:40 -07:00
dependabot[bot]
4e313e517b
build(deps): bump next from 14.2.26 to 14.2.30 in /ui/litellm-dashboard (#11720)
Bumps [next](https://github.com/vercel/next.js) from 14.2.26 to 14.2.30.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v14.2.26...v14.2.30)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 14.2.30
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 17:33:11 -07:00
Ishaan Jaff
7f11b5b76c
[Security] - Add Trivy Security Scan for UI + Docs folder - remove all vulnerabilities (#11778)
* docs - sec scan

* ui - fix 0 security issues

* fix - 0 medium vuln on docs

* add MEDIUM scan for Docs

* Run Trivy scan on LiteLLM UI
2025-06-16 17:13:19 -07:00
Krish Dholakia
9da32d9e14
Litellm audit log staging (#11418)
* Audit logs added (#11226)

* audit logs added

* audit logs populated

* adding json response

* collapsible json columns

* add created at column

* added changed field

* added premiumUser description

* added paginated filtered logs

* convert table names

* remove test file

* added new ui for audit logs

* only show the difference in before value and updated value

* fix: add lucide-react to package json

---------

Co-authored-by: tanjiro <56165694+NANDINI-star@users.noreply.github.com>
2025-06-04 14:34:17 -07:00