Pricing
-Input: ${modelData.input_cost}/1M tokens
-Output: ${modelData.output_cost}/1M tokens
-Input: ${model.input_cost}/1M tokens
} + {showOutput &&Output: ${model.output_cost}/1M tokens
} + {hasPerSecond &&Output: {formatPerSecondCost(perSecond)}
} + {(model.output_cost_per_second_tiers ?? []).map(({ resolution, cost }) => ( ++ Output ({resolution}): {formatPerSecondCost(cost)} +
+ ))} +Configure {guardrailName} behavior
- -
- Custom Code Override
- - Replace the built-in guardrail with custom evaluation code -
-- Re-run this guardrail on recent failing logs to validate your changes -
- -Loading...
From 59693d501904e12e7742ce165e5b19046fb41d20 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:08:39 +0000 Subject: [PATCH 077/140] fix(ui): only offer team admins the teams they administer in the Team ID selector Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../src/components/model_info_view.test.tsx | 26 +++++++++++++++++++ .../src/components/model_info_view.tsx | 11 +++----- ui/litellm-dashboard/src/utils/roles.ts | 11 ++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/ui/litellm-dashboard/src/components/model_info_view.test.tsx b/ui/litellm-dashboard/src/components/model_info_view.test.tsx index 33f77085551..c5a03b0eed1 100644 --- a/ui/litellm-dashboard/src/components/model_info_view.test.tsx +++ b/ui/litellm-dashboard/src/components/model_info_view.test.tsx @@ -1668,6 +1668,32 @@ describe("ModelInfoView", () => { expect(payload.model_info.team_id).toBe("team-2"); }); + it("only offers a team admin the teams they administer", async () => { + mockUseTeams.mockReturnValue({ + data: [ + { team_id: "team-1", team_alias: "alpha", members_with_roles: [{ user_id: "123", role: "admin" }] }, + { team_id: "team-2", team_alias: "beta", members_with_roles: [{ user_id: "123", role: "user" }] }, + { team_id: "team-3", team_alias: "gamma", members_with_roles: [{ user_id: "123", role: "admin" }] }, + ], + isLoading: false, + error: null, + }); + const teamModel = { + ...defaultModelData, + model_info: { ...defaultModelData.model_info, team_id: "team-1" }, + }; + mockUseModelsInfo.mockReturnValue({ data: { data: [teamModel] }, isLoading: false, error: null }); + mockModelInfoV1Call.mockResolvedValue({ data: [teamModel] }); + const user = userEvent.setup(); + render(Loading...
diff --git a/ui/litellm-dashboard/src/utils/roles.ts b/ui/litellm-dashboard/src/utils/roles.ts index 62a5f02cc39..30b53e9b089 100644 --- a/ui/litellm-dashboard/src/utils/roles.ts +++ b/ui/litellm-dashboard/src/utils/roles.ts @@ -46,6 +46,17 @@ export const isUserTeamAdminForSingleTeam = (teamMemberWithRoles: Member[] | nul return teamMemberWithRoles.some((member) => member.user_id === userID && member.role === "admin"); }; +export const teamsUserCanAssign = ( + teams: Team[] | null, + userRole: string | null, + userID: string | null, +): Team[] | null => { + if (teams == null || all_admin_roles.includes(userRole ?? "")) { + return teams; + } + return teams.filter((team) => isUserTeamAdminForSingleTeam(team.members_with_roles, userID ?? "")); +}; + export const isOrgAdminForAnyOrg = ( organizations: Organization[] | null | undefined, userID: string | null | undefined, From 500790a93a5104f4d3fd4aeb850efe2bb4f907dc Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:19:23 +0000 Subject: [PATCH 078/140] fix(ui): keep every team selectable for org admins in the Team ID selector Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- ui/litellm-dashboard/src/utils/roles.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/litellm-dashboard/src/utils/roles.ts b/ui/litellm-dashboard/src/utils/roles.ts index 30b53e9b089..785f6ff78f4 100644 --- a/ui/litellm-dashboard/src/utils/roles.ts +++ b/ui/litellm-dashboard/src/utils/roles.ts @@ -51,7 +51,7 @@ export const teamsUserCanAssign = ( userRole: string | null, userID: string | null, ): Team[] | null => { - if (teams == null || all_admin_roles.includes(userRole ?? "")) { + if (teams == null || all_admin_roles.includes(userRole ?? "") || isOrgAdminSessionRole(userRole)) { return teams; } return teams.filter((team) => isUserTeamAdminForSingleTeam(team.members_with_roles, userID ?? "")); From 6db76b5f3959706911779eec4d1a68c13434e257 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:33:38 +0000 Subject: [PATCH 079/140] fix(ui): match the Team ID selector to the backend's proxy-admin-only bypass and show its placeholder Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../src/components/ModelInfoEditForm.tsx | 2 +- .../src/components/model_info_view.test.tsx | 16 ++++++++++++++-- ui/litellm-dashboard/src/utils/roles.ts | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ui/litellm-dashboard/src/components/ModelInfoEditForm.tsx b/ui/litellm-dashboard/src/components/ModelInfoEditForm.tsx index 7fa51d73b32..d76d7c88437 100644 --- a/ui/litellm-dashboard/src/components/ModelInfoEditForm.tsx +++ b/ui/litellm-dashboard/src/components/ModelInfoEditForm.tsx @@ -818,7 +818,7 @@ const ModelInfoEditForm: React.FC