From e5c33ca6955fbb955a33f5a7d4ead59548c34533 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Fri, 24 Apr 2026 16:10:23 -0700 Subject: [PATCH] feat: show team_member_model_max_budget field in Create Team modal UI Add 'Default Member Model Budget' input field to the Create Team form in OldTeams.tsx so admins can set per-model spend limits for team members without expanding the Additional Settings accordion. Field accepts JSON format and is parsed before submission. --- .../components/modals/CreateTeamModal.tsx | 28 +++++++++++++++++++ .../src/components/OldTeams.tsx | 23 +++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/teams/components/modals/CreateTeamModal.tsx b/ui/litellm-dashboard/src/app/(dashboard)/teams/components/modals/CreateTeamModal.tsx index 18599700911..f82f34850d7 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/teams/components/modals/CreateTeamModal.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/teams/components/modals/CreateTeamModal.tsx @@ -198,6 +198,20 @@ const CreateTeamModal = ({ formValues.metadata = JSON.stringify(metadata); } + if (formValues.team_member_model_max_budget) { + if (typeof formValues.team_member_model_max_budget === "string") { + if (formValues.team_member_model_max_budget.trim() === "") { + delete formValues.team_member_model_max_budget; + } else { + try { + formValues.team_member_model_max_budget = JSON.parse(formValues.team_member_model_max_budget); + } catch (e) { + throw new Error("Failed to parse per-model member budget: " + e); + } + } + } + } + if (formValues.secret_manager_settings) { if (typeof formValues.secret_manager_settings === "string") { if (formValues.secret_manager_settings.trim() === "") { @@ -469,6 +483,20 @@ const CreateTeamModal = ({ + + Default Member Model Budget{" "} + + + + + } + name="team_member_model_max_budget" + > + + + diff --git a/ui/litellm-dashboard/src/components/OldTeams.tsx b/ui/litellm-dashboard/src/components/OldTeams.tsx index 8349e271b89..14927162b92 100644 --- a/ui/litellm-dashboard/src/components/OldTeams.tsx +++ b/ui/litellm-dashboard/src/components/OldTeams.tsx @@ -563,6 +563,21 @@ const Teams: React.FC = ({ delete formValues.allowed_agents_and_groups; } + // Parse team_member_model_max_budget from JSON string + if (formValues.team_member_model_max_budget) { + if (typeof formValues.team_member_model_max_budget === "string") { + if (formValues.team_member_model_max_budget.trim() === "") { + delete formValues.team_member_model_max_budget; + } else { + try { + formValues.team_member_model_max_budget = JSON.parse(formValues.team_member_model_max_budget); + } catch (e) { + throw new Error("Failed to parse team member model budget: " + e); + } + } + } + } + // Add model_aliases if any are defined if (Object.keys(modelAliases).length > 0) { formValues.model_aliases = modelAliases; @@ -1224,6 +1239,14 @@ const Teams: React.FC = ({ + + + + {