From d7fce48359082f55497c7f1070dc1fd07203deed Mon Sep 17 00:00:00 2001 From: mrinal Date: Fri, 2 Oct 2026 01:59:59 +0000 Subject: [PATCH] revert: drop rate limit upper bound Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .../users/_components/userRateLimitPayload.test.ts | 10 +++------- .../users/_components/userRateLimitPayload.ts | 2 +- .../users/_components/user_edit_view.test.tsx | 4 ++-- .../(dashboard)/users/_components/user_edit_view.tsx | 4 ++-- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.test.ts b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.test.ts index c7ed31f1df6..c64f6e6a88a 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.test.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.test.ts @@ -37,15 +37,11 @@ describe("isValidRateLimitInput", () => { ["number zero", 0], ["integer string", "12"], ["integer", 12], - ["maximum safe integer", String(Number.MAX_SAFE_INTEGER)], ])("accepts %s", (_label, value) => { expect(isValidRateLimitInput(value)).toBe(true); }); - it.each(["1.5", "-1", "abc", "1e400", "9007199254740992", "9007199254740993", "1e30", "9999999999999999999"])( - "rejects %s", - (value) => { - expect(isValidRateLimitInput(value)).toBe(false); - }, - ); + it.each(["1.5", "-1", "abc", "1e400"])("rejects %s", (value) => { + expect(isValidRateLimitInput(value)).toBe(false); + }); }); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.ts b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.ts index 90ff9dd58ed..82c0fb3bf88 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/userRateLimitPayload.ts @@ -13,5 +13,5 @@ export const isValidRateLimitInput = (value: string | number | null | undefined) return true; } const number = Number(value); - return Number.isSafeInteger(number) && number >= 0; + return Number.isFinite(number) && Number.isInteger(number) && number >= 0; }; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.test.tsx index dca6c04ec48..8d14e55df86 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.test.tsx @@ -543,7 +543,7 @@ describe("UserEditView", () => { expect(typeof onSubmit.mock.calls[0][0].rpm_limit).toBe("number"); }); - it.each(["-1", "1.5", "1e30", "9007199254740992"])("rejects an invalid TPM limit of %s", async (value) => { + it.each(["-1", "1.5"])("rejects an invalid TPM limit of %s", async (value) => { const onSubmit = vi.fn(); renderWithProviders(); @@ -558,7 +558,7 @@ describe("UserEditView", () => { fireEvent.submit(form); expect( - await screen.findByText("Enter a whole number from 0 to 9007199254740991, or leave empty for unlimited"), + await screen.findByText("Enter a non-negative whole number, or leave empty for unlimited"), ).toBeInTheDocument(); expect(onSubmit).not.toHaveBeenCalled(); }); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.tsx b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.tsx index 75d35ebe561..f30ba1ccb5f 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/users/_components/user_edit_view.tsx @@ -71,11 +71,11 @@ const budgetSchema = (unlimitedBudget: boolean) => tpm_limit: z .union([z.string(), z.number()]) .nullish() - .refine(isValidRateLimitInput, "Enter a whole number from 0 to 9007199254740991, or leave empty for unlimited"), + .refine(isValidRateLimitInput, "Enter a non-negative whole number, or leave empty for unlimited"), rpm_limit: z .union([z.string(), z.number()]) .nullish() - .refine(isValidRateLimitInput, "Enter a whole number from 0 to 9007199254740991, or leave empty for unlimited"), + .refine(isValidRateLimitInput, "Enter a non-negative whole number, or leave empty for unlimited"), }); type UserEditFormValues = z.infer>;