litellm/ui/litellm-dashboard
Aliaksei Venski 6cc81584b9 fix(ui): render the correct widget for nullable MCP tool schema properties
JSON Schema allows "type" to be an array (e.g. ["string", "null"]) for a
nullable/optional field, the shape Pydantic's model_json_schema() emits for
Optional[str] / str | None. A real Azure DevOps MCP tool schema
(testplan_test_suite_write) declares its optional parameters exactly this
way. Both ToolTestPanel (the MCP Tool Testing Playground) and
MCPToolArgumentsForm (the chat playground's tool-call argument form) compare
a property's type with strict equality against a single string, with no
fallback for the array case.

In ToolTestPanel this leaves the field with no input at all, since none of
the type checks match and there is no default branch: the field's label
renders with nothing to type into, and the same strict comparison in the
submit-time value conversion would also skip type coercion for it.
MCPToolArgumentsForm has a final else branch, so the same schema shape
instead renders the wrong widget (a plain text input for what should be a
number or boolean field).

Add resolveSchemaType to both files, resolving to the first non-"null" type
when given an array, and use it everywhere a property's type decides a
widget or a value conversion. Widen InputSchemaProperty.type in the shared
types module to string | string[] to match.
2026-08-25 11:11:02 +02:00
..
public feat(search): add Grounding with Bing Search (bing_grounding) as a search provider 2026-08-24 11:08:24 -07:00
scripts fix(ui): restore hover feedback and dark-mode variants lost in the token migration (#37579) 2026-08-19 22:52:36 -07:00
src fix(ui): render the correct widget for nullable MCP tool schema properties 2026-08-25 11:11:02 +02:00
tests fix(ui): restore hover feedback and dark-mode variants lost in the token migration (#37579) 2026-08-19 22:52:36 -07:00
.env.development hidden dashboard routing, dev and build env files 2025-10-06 19:21:34 -07:00
.env.production remove next env 2026-04-18 16:45:32 -07:00
.npmrc chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
.nvmrc chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
.prettierignore feat(ui): generate dashboard API types from the proxy OpenAPI spec (#29816) 2026-06-05 17:20:01 -07:00
.prettierrc added and ran prettier autoformatter 2025-10-04 18:19:48 -07:00
build_release_ui.sh build release ui script 2026-01-17 18:16:14 -08:00
build_ui.sh chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
build_ui_custom_path.sh chore(build): move the Admin UI toolchain to Node 24 (#35801) 2026-08-04 12:36:07 -07:00
CLAUDE.md chore(ui): drop the antd dependency and its leftovers (#37574) 2026-08-19 20:44:27 -07:00
components.json refactor(ui): switch shadcn primitives from Radix to Base UI (#32124) 2026-07-07 09:55:41 -07:00
eslint-budgets.json chore: make no-console max 12 2026-08-05 10:45:56 -07:00
eslint-suppressions.json refactor(ui): install the shadcn field primitive (#38126) 2026-08-24 14:30:32 -07:00
eslint.config.mjs fix(ui): restore hover feedback and dark-mode variants lost in the token migration (#37579) 2026-08-19 22:52:36 -07:00
knip.json fix(ui): register type-test files as knip entry points 2026-08-10 15:42:09 -07:00
next.config.mjs chore(ui): preserve console.warn in prod builds to match lint allow-list 2026-07-03 14:51:14 -07:00
package-lock.json refactor(ui): move the dashboard onto class-variance-authority (#38125) 2026-08-24 14:10:31 -07:00
package.json refactor(ui): move the dashboard onto class-variance-authority (#38125) 2026-08-24 14:10:31 -07:00
postcss.config.js feat(ui): shadcn migration foundation: Tailwind v4, shadcn init, antd cascade fix (#31995) 2026-07-02 19:02:27 -07:00
README.md
tsconfig.json test(e2e): move Admin UI Playwright suite to tests/e2e/ui (#34196) 2026-07-22 19:43:10 +00:00
tsconfig.tsbuildinfo refactor(ui): map hardcoded Tailwind palette classes onto semantic tokens (#37576) 2026-08-19 22:11:44 -07:00
vitest.config.ts test(ui): split the vitest suite into unit, component, integration and type projects (#37488) 2026-08-19 20:40:14 +00:00

This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.