diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroupDetails.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroupDetails.ts index c0379b25321..62693e18d83 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroupDetails.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroupDetails.ts @@ -29,7 +29,7 @@ const fetchAccessGroupDetails = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.test.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.test.ts index b15ea4491e9..756e49f6a46 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.test.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.test.ts @@ -208,7 +208,10 @@ describe("useAccessGroups", () => { expect(result.current.error).toBeInstanceOf(Error); expect((result.current.error as Error).message).toBe("Forbidden"); expect(result.current.data).toBeUndefined(); - expect(networking.handleError).toHaveBeenCalledWith("Forbidden"); + // handleError now receives the raw error object (not the derived string) + // so its built-in `extractErrorType` can dispatch on `error.type` for + // auth-related redirects (D1 taxonomy). See networking.tsx:507. + expect(networking.handleError).toHaveBeenCalledWith({ detail: "Forbidden" }); }); it("should return empty array when API returns empty list", async () => { diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.ts index 215b555fcf9..7d1356b41ca 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useAccessGroups.ts @@ -49,7 +49,7 @@ const fetchAccessGroups = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useCreateAccessGroup.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useCreateAccessGroup.ts index 7ea5a813462..340b495a2f6 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useCreateAccessGroup.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useCreateAccessGroup.ts @@ -41,7 +41,7 @@ const createAccessGroup = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useDeleteAccessGroup.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useDeleteAccessGroup.ts index 5df5960ce0a..b64bf0f9fff 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useDeleteAccessGroup.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useDeleteAccessGroup.ts @@ -28,7 +28,7 @@ const deleteAccessGroup = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useEditAccessGroup.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useEditAccessGroup.ts index 5dc2252f640..6a33498ea63 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useEditAccessGroup.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/accessGroups/useEditAccessGroup.ts @@ -47,7 +47,7 @@ const updateAccessGroup = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/guardrails/useRegisterGuardrail.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/guardrails/useRegisterGuardrail.ts index 3135e8326fc..a44bae0eed7 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/guardrails/useRegisterGuardrail.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/guardrails/useRegisterGuardrail.ts @@ -45,7 +45,7 @@ const registerGuardrail = async ( if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useKeys.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useKeys.ts index fbe5eccb75a..114a8066964 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useKeys.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useKeys.ts @@ -90,7 +90,7 @@ const keyListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useResetKeySpend.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useResetKeySpend.ts index a845fc5881a..c002e2c6d30 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useResetKeySpend.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/keys/useResetKeySpend.ts @@ -39,7 +39,7 @@ export const resetKeySpend = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useCreateProject.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useCreateProject.ts index e206c770b19..e069a79bdcd 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useCreateProject.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useCreateProject.ts @@ -44,7 +44,7 @@ const createProject = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useDeleteProject.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useDeleteProject.ts index 5abf9e03be2..35305a7a56a 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useDeleteProject.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useDeleteProject.ts @@ -29,7 +29,7 @@ const deleteProjects = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } }; diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjectDetails.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjectDetails.ts index 1d35ac1bf70..6c3cfe8c743 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjectDetails.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjectDetails.ts @@ -29,7 +29,7 @@ const fetchProjectDetails = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjects.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjects.ts index 85c8b25645c..76c141e4a62 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjects.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useProjects.ts @@ -66,7 +66,7 @@ const fetchProjects = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useUpdateProject.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useUpdateProject.ts index 2042c8fc7cd..566d078ea44 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useUpdateProject.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/projects/useUpdateProject.ts @@ -45,7 +45,7 @@ const updateProject = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/proxyConfig/useProxyConfig.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/proxyConfig/useProxyConfig.ts index b823ce4ffd8..93174fcf369 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/proxyConfig/useProxyConfig.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/proxyConfig/useProxyConfig.ts @@ -89,7 +89,7 @@ export const getProxyConfigCall = async (accessToken: string, configType: Config if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -128,7 +128,7 @@ export const deleteProxyConfigFieldCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/app/(dashboard)/hooks/teams/useTeams.ts b/ui/litellm-dashboard/src/app/(dashboard)/hooks/teams/useTeams.ts index f74a71e901e..630ab03a2c6 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/hooks/teams/useTeams.ts +++ b/ui/litellm-dashboard/src/app/(dashboard)/hooks/teams/useTeams.ts @@ -76,7 +76,7 @@ export const teamListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -202,7 +202,7 @@ const deletedTeamListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 66c885f00c7..8ba78c7ea75 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -24,7 +24,7 @@ export const getCallbackConfigsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -54,7 +54,7 @@ export const getInProductNudgesCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -405,6 +405,7 @@ const SESSION_EXPIRED_SIGNALS = [ "Authentication Error - Expired Key", "Authentication Error - Invalid", "Authentication Error: Invalid", + "Authentication Error, Invalid", // comma variant emitted by token-not-found path "token has been revoked", "No auth header", "Session expired", @@ -793,7 +794,7 @@ export const modelCreateCall = async (accessToken: string, formValues: Model) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -831,7 +832,7 @@ export const modelDeleteCall = async (accessToken: string, model_id: string) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -867,7 +868,7 @@ export const budgetDeleteCall = async (accessToken: string | null, budget_id: st if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -903,7 +904,7 @@ export const budgetCreateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -940,7 +941,7 @@ export const budgetUpdateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -974,7 +975,7 @@ export const invitationCreateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1007,7 +1008,7 @@ export const alertingSettingsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1268,7 +1269,7 @@ export const keyDeleteCall = async (accessToken: string, user_key: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1302,7 +1303,7 @@ export const userDeleteCall = async (accessToken: string, userIds: string[]) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1334,7 +1335,7 @@ export const teamDeleteCall = async (accessToken: string, teamID: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1435,7 +1436,7 @@ export const userListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1497,7 +1498,7 @@ export const userGetInfoV2 = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1550,7 +1551,7 @@ export const userInfoCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1581,7 +1582,7 @@ export const teamInfoCall = async (accessToken: string, teamID: string | null) = if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1654,7 +1655,7 @@ export const v2TeamListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1715,7 +1716,7 @@ export const teamListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1747,7 +1748,7 @@ export const availableTeamListCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1795,7 +1796,7 @@ export const organizationListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1825,7 +1826,7 @@ export const organizationInfoCall = async (accessToken: string, organizationID: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1872,7 +1873,7 @@ export const organizationCreateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1908,7 +1909,7 @@ export const organizationUpdateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -1970,7 +1971,7 @@ export const transformRequestCall = async (accessToken: string, request: object) if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2060,7 +2061,7 @@ const fetchDailyActivity = async ({ if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2208,7 +2209,7 @@ export const getOnboardingCredentials = async (inviteUUID: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2245,7 +2246,7 @@ export const claimOnboardingToken = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2277,7 +2278,7 @@ export const regenerateKeyCall = async (accessToken: string, keyToRegenerate: st if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2404,7 +2405,7 @@ export const modelInfoV1Call = async (accessToken: string, modelId: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2494,7 +2495,7 @@ export const modelHubCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2525,7 +2526,7 @@ export const getAllowedIPs = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2555,7 +2556,7 @@ export const addAllowedIP = async (accessToken: string, ip: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2585,7 +2586,7 @@ export const deleteAllowedIP = async (accessToken: string, ip: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2615,7 +2616,7 @@ export const updateUsefulLinksCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2672,7 +2673,7 @@ export const modelAvailableCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2700,7 +2701,7 @@ export const teamSpendLogsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2742,7 +2743,7 @@ export const tagsSpendLogsCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2770,7 +2771,7 @@ export const allTagNamesCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2798,7 +2799,7 @@ export const allEndUsersCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2837,7 +2838,7 @@ export const userFilterUICall = async (accessToken: string, params: URLSearchPar if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2924,7 +2925,7 @@ export const uiSpendLogsCall = async ({ if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2952,7 +2953,7 @@ export const adminSpendLogsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -2981,7 +2982,7 @@ export const adminTopKeysCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3031,7 +3032,7 @@ export const adminTopEndUsersCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3074,7 +3075,7 @@ export const adminspendByProvider = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3111,7 +3112,7 @@ export const adminGlobalActivity = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3148,7 +3149,7 @@ export const adminGlobalCacheActivity = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3185,7 +3186,7 @@ export const adminGlobalActivityPerModel = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3213,7 +3214,7 @@ export const adminTopModelsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3437,7 +3438,7 @@ export const keyListCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3492,7 +3493,7 @@ export const keyAliasesCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3542,7 +3543,7 @@ export const userDailyActivityAggregatedCall = async (accessToken: string, start if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3568,7 +3569,7 @@ export const getPossibleUserRoles = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3612,7 +3613,7 @@ export const teamCreateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3657,7 +3658,7 @@ export const credentialCreateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3690,7 +3691,7 @@ export const credentialListCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3727,7 +3728,7 @@ export const credentialGetCall = async (accessToken: string, credentialName: str if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3756,7 +3757,7 @@ export const credentialDeleteCall = async (accessToken: string, credentialName: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -3802,7 +3803,7 @@ export const credentialUpdateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4166,7 +4167,7 @@ export const teamMemberDeleteCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4239,7 +4240,7 @@ export const organizationMemberDeleteCall = async (accessToken: string, organiza if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4276,7 +4277,7 @@ export const organizationMemberUpdateCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4315,7 +4316,7 @@ export const userUpdateUserCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4380,7 +4381,7 @@ export const userBulkUpdateUserCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4457,7 +4458,7 @@ export const getBudgetList = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4489,7 +4490,7 @@ export const getCallbacksCall = async (accessToken: string, userID: string, user if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4521,7 +4522,7 @@ export const getGeneralSettingsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4550,7 +4551,7 @@ export const getRouterSettingsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4577,7 +4578,7 @@ export const getCacheSettingsCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4607,7 +4608,7 @@ export const testCacheConnectionCall = async (accessToken: string, cacheSettings if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4637,7 +4638,7 @@ export const updateCacheSettingsCall = async (accessToken: string, cacheSettings if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4669,7 +4670,7 @@ export const getPassThroughEndpointsCall = async (accessToken: string, teamId?: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4701,7 +4702,7 @@ export const getConfigFieldSetting = async (accessToken: string, fieldName: stri if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4736,7 +4737,7 @@ export const createPassThroughEndpoint = async (accessToken: string, formValues: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4772,7 +4773,7 @@ export const updateConfigFieldSetting = async (accessToken: string, fieldName: s if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4808,7 +4809,7 @@ export const deleteConfigFieldSetting = async (accessToken: string, fieldName: s if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4840,7 +4841,7 @@ export const deletePassThroughEndpointsCall = async (accessToken: string, endpoi if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -4876,7 +4877,7 @@ export const setCallbacksCall = async (accessToken: string, formValues: Record { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5064,7 +5065,7 @@ export const getMCPSemanticFilterSettings = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5097,7 +5098,7 @@ export const updateMCPSemanticFilterSettings = async (accessToken: string, setti if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5149,7 +5150,7 @@ export const testMCPSemanticFilter = async (accessToken: string, model: string, if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5201,7 +5202,7 @@ export const getGuardrailsList = async (accessToken: string) => { if (!fallbackResponse.ok) { const errorData = await fallbackResponse.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5263,7 +5264,7 @@ export const listGuardrailSubmissions = async ( if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -5286,7 +5287,7 @@ export const approveGuardrailSubmission = async ( if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -5309,7 +5310,7 @@ export const rejectGuardrailSubmission = async ( if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -5426,7 +5427,7 @@ export const getPoliciesList = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5513,7 +5514,7 @@ export const testPoliciesAndGuardrails = async ( } catch { errorMessage = errorData || errorMessage; } - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5538,7 +5539,7 @@ export const getPolicyInfoWithGuardrails = async (accessToken: string, policyNam if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5564,7 +5565,7 @@ export const getPolicyTemplates = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5602,7 +5603,7 @@ export const enrichPolicyTemplate = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5640,7 +5641,7 @@ export const suggestPolicyTemplates = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5675,7 +5676,7 @@ export const testPolicyTemplate = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5720,7 +5721,7 @@ export const enrichPolicyTemplateStream = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5795,7 +5796,7 @@ export const usageAiChatStream = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5851,7 +5852,7 @@ export const createPolicyCall = async (accessToken: string, policyData: any) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5878,7 +5879,7 @@ export const updatePolicyCall = async (accessToken: string, policyId: string, po if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5910,7 +5911,7 @@ export const listPolicyVersions = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5943,7 +5944,7 @@ export const createPolicyVersion = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -5975,7 +5976,7 @@ export const updatePolicyVersionStatus = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6000,7 +6001,7 @@ export const deletePolicyCall = async (accessToken: string, policyId: string) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6026,7 +6027,7 @@ export const getPolicyInfo = async (accessToken: string, policyId: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6054,7 +6055,7 @@ export const getPolicyAttachmentsList = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6081,7 +6082,7 @@ export const createPolicyAttachmentCall = async (accessToken: string, attachment if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6109,7 +6110,7 @@ export const deletePolicyAttachmentCall = async (accessToken: string, attachment if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6140,7 +6141,7 @@ export const testPipelineCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6168,7 +6169,7 @@ export const getResolvedGuardrails = async (accessToken: string, policyId: strin if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6200,7 +6201,7 @@ export const resolvePoliciesCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6231,7 +6232,7 @@ export const estimateAttachmentImpactCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6262,7 +6263,7 @@ export const getPromptsList = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6291,7 +6292,7 @@ export const getPromptInfo = async (accessToken: string, promptId: string, envir if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6322,7 +6323,7 @@ export const getPromptVersions = async (accessToken: string, promptId: string, e const errorMessage = deriveErrorMessage(errorData); // Don't throw global error for 404 (no versions found) as we might want to handle it gracefully if (response.status !== 404) { - handleError(errorMessage); + handleError(errorData); } throw new Error(errorMessage); } @@ -6351,7 +6352,7 @@ export const createPromptCall = async (accessToken: string, promptData: any) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6379,7 +6380,7 @@ export const updatePromptCall = async (accessToken: string, promptId: string, pr if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6406,7 +6407,7 @@ export const deletePromptCall = async (accessToken: string, promptId: string) => if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6439,7 +6440,7 @@ export const convertPromptFileToJson = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6530,7 +6531,7 @@ export const uiSpendLogDetailsCall = async (accessToken: string, logId: string, if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6561,7 +6562,7 @@ export const getInternalUserSettings = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6649,7 +6650,7 @@ export const fetchDiscoverableMCPServers = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6683,7 +6684,7 @@ export const fetchMCPServers = async (accessToken: string, teamId?: string | nul if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6721,7 +6722,7 @@ export const fetchMCPServerHealth = async (accessToken: string, serverIds?: stri if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6752,7 +6753,7 @@ export const fetchMCPAccessGroups = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6812,7 +6813,7 @@ export const createMCPServer = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -6841,7 +6842,7 @@ export const updateMCPServer = async (accessToken: string, formValues: Record if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } } catch (error) { @@ -6889,7 +6890,7 @@ export const fetchMCPToolsets = async (accessToken: string): Promise => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return await response.json(); @@ -6913,7 +6914,7 @@ export const createMCPToolset = async (accessToken: string, formValues: Record { if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -7028,7 +7029,7 @@ export const approveMCPServer = async (accessToken: string, serverId: string) => if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -7052,7 +7053,7 @@ export const rejectMCPServer = async (accessToken: string, serverId: string, rev if (!response.ok) { const errorData = await response.json().catch(() => ({})); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } return response.json(); @@ -7079,7 +7080,7 @@ export const fetchSearchTools = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7111,7 +7112,7 @@ export const createSearchTool = async (accessToken: string, formValues: Record { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7235,7 +7236,7 @@ export const testSearchToolConnection = async (accessToken: string, litellmParam if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7340,13 +7341,14 @@ export const callMCPTool = async ( if (!response.ok) { let errorMessage = "Network response was not ok"; let errorDetails = null; + let errorData: any = null; // First, try to get the response as text to see what we're dealing with const responseText = await response.text(); try { // Try to parse as JSON - const errorData = JSON.parse(responseText); + errorData = JSON.parse(responseText); if (errorData.detail) { if (typeof errorData.detail === "string") { @@ -7372,7 +7374,9 @@ export const callMCPTool = async ( (enhancedError as any).statusText = response.statusText; (enhancedError as any).details = errorDetails; - handleError(errorMessage); + // Pass the parsed object when JSON parsing succeeded so handleError can + // dispatch on `error.type` (D1 taxonomy); fall back to raw text otherwise. + handleError(errorData ?? responseText); throw enhancedError; } @@ -7538,7 +7542,7 @@ export const getDefaultTeamSettings = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7570,7 +7574,7 @@ export const updateDefaultTeamSettings = async (accessToken: string, settings: R if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7631,7 +7635,7 @@ export const teamPermissionsUpdateCall = async (accessToken: string, teamId: str if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -7664,7 +7668,7 @@ export const sessionSpendLogsCall = async (accessToken: string, session_id: stri if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -8535,7 +8539,7 @@ export const getSSOSettings = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -8573,7 +8577,7 @@ export const updateSSOSettings = async (accessToken: string, settings: Record 0 ? detailMessage : deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); const enhancedError = new Error(errorMessage); if (errorData?.detail !== undefined) { @@ -8644,7 +8648,7 @@ export const uiAuditLogsCall = async ({ if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -8757,7 +8761,7 @@ export const updatePassThroughEndpoint = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -8791,7 +8795,7 @@ export const deleteCallback = async (accessToken: string, callbackName: string) if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9115,7 +9119,7 @@ export const tagDauCall = async (accessToken: string, endDate: Date, tagFilter?: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9171,7 +9175,7 @@ export const tagWauCall = async (accessToken: string, endDate: Date, tagFilter?: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9227,7 +9231,7 @@ export const tagMauCall = async (accessToken: string, endDate: Date, tagFilter?: if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9257,7 +9261,7 @@ export const tagDistinctCall = async (accessToken: string) => { if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9317,7 +9321,7 @@ export const userAgentSummaryCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9369,7 +9373,7 @@ export const perUserAnalyticsCall = async ( if (!response.ok) { const errorData = await response.json(); const errorMessage = deriveErrorMessage(errorData); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9550,7 +9554,7 @@ export const getClaudeCodeMarketplace = async () => { if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9585,7 +9589,7 @@ export const getClaudeCodePluginsList = async (accessToken: string, enabledOnly: if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9620,7 +9624,7 @@ export const getClaudeCodePluginDetails = async (accessToken: string, pluginName if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9666,7 +9670,7 @@ export const registerClaudeCodePlugin = async ( if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9701,7 +9705,7 @@ export const enableClaudeCodePlugin = async (accessToken: string, pluginName: st if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9736,7 +9740,7 @@ export const disableClaudeCodePlugin = async (accessToken: string, pluginName: s if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); } @@ -9771,7 +9775,7 @@ export const deleteClaudeCodePlugin = async (accessToken: string, pluginName: st if (!response.ok) { const errorData = await response.text(); const errorMessage = deriveErrorMessage(JSON.parse(errorData)); - handleError(errorMessage); + handleError(errorData); throw new Error(errorMessage); }