@acarmisc/backstage-plugin-litellm 0.44.0 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js
CHANGED
|
@@ -5166,7 +5166,7 @@ var init_TeamUsage = __esm({
|
|
|
5166
5166
|
}) })
|
|
5167
5167
|
] }) });
|
|
5168
5168
|
};
|
|
5169
|
-
TeamCard = ({ team, usage, usageLoading, memberUsage, memberUsageLoading, keyUsage, keyUsageLoading, canManage, onEditTeam, canManageMembers, onManageMembers, onExpand, vectorStores, mcpServers }) => {
|
|
5169
|
+
TeamCard = ({ team, usage, usageLoading, memberUsage, memberUsageLoading, memberUsageFailed, keyUsage, keyUsageLoading, keyUsageFailed, canManage, onEditTeam, canManageMembers, onManageMembers, onExpand, vectorStores, mcpServers }) => {
|
|
5170
5170
|
const [expanded, setExpanded] = useState9(false);
|
|
5171
5171
|
const chart = useChartTheme();
|
|
5172
5172
|
const handleExpandChange = (newExpanded) => {
|
|
@@ -5365,13 +5365,17 @@ var init_TeamUsage = __esm({
|
|
|
5365
5365
|
renderNamedTags("Knowledge bases", team.object_permission?.vector_stores, vectorStores),
|
|
5366
5366
|
renderNamedTags("MCP servers", team.object_permission?.mcp_servers, mcpServers),
|
|
5367
5367
|
renderDailySpendSection(),
|
|
5368
|
-
(memberUsageLoading || memberUsage) && /* @__PURE__ */ jsxs14(Box14, { mb: 2.5, children: [
|
|
5368
|
+
(memberUsageLoading || memberUsage || memberUsageFailed) && /* @__PURE__ */ jsxs14(Box14, { mb: 2.5, children: [
|
|
5369
5369
|
sectionLabel("Usage by member"),
|
|
5370
|
-
memberUsage
|
|
5370
|
+
memberUsage && /* @__PURE__ */ jsx15(MemberUsageTable, { usage: memberUsage }),
|
|
5371
|
+
!memberUsage && memberUsageFailed && /* @__PURE__ */ jsx15(Typography12, { variant: "caption", color: "text.secondary", children: "Could not load per-member usage" }),
|
|
5372
|
+
!memberUsage && !memberUsageFailed && /* @__PURE__ */ jsx15(Box14, { display: "flex", justifyContent: "center", py: 2, children: /* @__PURE__ */ jsx15(CircularProgress4, { size: 22 }) })
|
|
5371
5373
|
] }),
|
|
5372
|
-
(keyUsageLoading || keyUsage) && /* @__PURE__ */ jsxs14(Box14, { mb: 2.5, children: [
|
|
5374
|
+
(keyUsageLoading || keyUsage || keyUsageFailed) && /* @__PURE__ */ jsxs14(Box14, { mb: 2.5, children: [
|
|
5373
5375
|
sectionLabel("Keys by member"),
|
|
5374
|
-
keyUsage
|
|
5376
|
+
keyUsage && /* @__PURE__ */ jsx15(TeamKeyUsageTable, { usage: keyUsage }),
|
|
5377
|
+
!keyUsage && keyUsageFailed && /* @__PURE__ */ jsx15(Typography12, { variant: "caption", color: "text.secondary", children: "Could not load per-key usage" }),
|
|
5378
|
+
!keyUsage && !keyUsageFailed && /* @__PURE__ */ jsx15(Box14, { display: "flex", justifyContent: "center", py: 2, children: /* @__PURE__ */ jsx15(CircularProgress4, { size: 22 }) })
|
|
5375
5379
|
] }),
|
|
5376
5380
|
/* @__PURE__ */ jsxs14(Box14, { children: [
|
|
5377
5381
|
sectionLabel("Members"),
|
|
@@ -5431,6 +5435,8 @@ var init_TeamUsage = __esm({
|
|
|
5431
5435
|
getTeamMemberUsageLoading,
|
|
5432
5436
|
getTeamKeyUsage,
|
|
5433
5437
|
getTeamKeyUsageLoading,
|
|
5438
|
+
getTeamMemberUsageFailed,
|
|
5439
|
+
getTeamKeyUsageFailed,
|
|
5434
5440
|
canManage,
|
|
5435
5441
|
onEditTeam,
|
|
5436
5442
|
canCreate,
|
|
@@ -5496,6 +5502,8 @@ var init_TeamUsage = __esm({
|
|
|
5496
5502
|
memberUsageLoading: getTeamMemberUsageLoading?.(team.team_id) ?? false,
|
|
5497
5503
|
keyUsage: getTeamKeyUsage?.(team.team_id) ?? null,
|
|
5498
5504
|
keyUsageLoading: getTeamKeyUsageLoading?.(team.team_id) ?? false,
|
|
5505
|
+
memberUsageFailed: getTeamMemberUsageFailed?.(team.team_id) ?? false,
|
|
5506
|
+
keyUsageFailed: getTeamKeyUsageFailed?.(team.team_id) ?? false,
|
|
5499
5507
|
canManage,
|
|
5500
5508
|
onEditTeam,
|
|
5501
5509
|
canManageMembers: canManageMembers?.(team),
|
|
@@ -6344,7 +6352,7 @@ function initDateRange() {
|
|
|
6344
6352
|
else start.setDate(start.getDate() - 7);
|
|
6345
6353
|
return { start, end };
|
|
6346
6354
|
}
|
|
6347
|
-
var PERIOD_LS_KEY2, PAGE_TABS, isPageTab, LiteLLMPage;
|
|
6355
|
+
var PERIOD_LS_KEY2, PAGE_TABS, isPageTab, isRefusal, LiteLLMPage;
|
|
6348
6356
|
var init_LiteLLMPage = __esm({
|
|
6349
6357
|
"src/components/LiteLLMPage.tsx"() {
|
|
6350
6358
|
"use strict";
|
|
@@ -6365,6 +6373,7 @@ var init_LiteLLMPage = __esm({
|
|
|
6365
6373
|
PERIOD_LS_KEY2 = "litellm_usage_period";
|
|
6366
6374
|
PAGE_TABS = ["overview", "keys", "teams", "models", "insights"];
|
|
6367
6375
|
isPageTab = (v) => !!v && PAGE_TABS.includes(v);
|
|
6376
|
+
isRefusal = (err) => err instanceof ApiError && (err.status === 403 || err.status === 404);
|
|
6368
6377
|
LiteLLMPage = () => {
|
|
6369
6378
|
const api = useApi4(liteLlmApiRef);
|
|
6370
6379
|
const alertApi = useApi4(alertApiRef2);
|
|
@@ -6450,6 +6459,8 @@ var init_LiteLLMPage = __esm({
|
|
|
6450
6459
|
const [memberUsageLoading, setMemberUsageLoading] = useState11({});
|
|
6451
6460
|
const [keyUsageCache, setKeyUsageCache] = useState11({});
|
|
6452
6461
|
const [keyUsageLoading, setKeyUsageLoading] = useState11({});
|
|
6462
|
+
const [memberUsageFailed, setMemberUsageFailed] = useState11({});
|
|
6463
|
+
const [keyUsageFailed, setKeyUsageFailed] = useState11({});
|
|
6453
6464
|
const { value: userInfo, loading: userLoading, error: userError } = useAsync(
|
|
6454
6465
|
() => api.getUserInfo(),
|
|
6455
6466
|
[api]
|
|
@@ -6518,6 +6529,8 @@ var init_LiteLLMPage = __esm({
|
|
|
6518
6529
|
setMemberUsageLoading({});
|
|
6519
6530
|
setKeyUsageCache({});
|
|
6520
6531
|
setKeyUsageLoading({});
|
|
6532
|
+
setMemberUsageFailed({});
|
|
6533
|
+
setKeyUsageFailed({});
|
|
6521
6534
|
}, [setDateRange, setCurrentPreset]);
|
|
6522
6535
|
const loadTeamUsage = useCallback4(async (teamId) => {
|
|
6523
6536
|
if (teamUsageCache[teamId] !== void 0 || teamUsageLoading[teamId]) return;
|
|
@@ -6541,8 +6554,9 @@ var init_LiteLLMPage = __esm({
|
|
|
6541
6554
|
const endDate = toLocalDay(dateRange.end);
|
|
6542
6555
|
const data = await api.getTeamMemberUsage(teamId, startDate, endDate);
|
|
6543
6556
|
setMemberUsageCache((prev) => ({ ...prev, [teamId]: data }));
|
|
6544
|
-
} catch {
|
|
6557
|
+
} catch (err) {
|
|
6545
6558
|
setMemberUsageCache((prev) => ({ ...prev, [teamId]: null }));
|
|
6559
|
+
setMemberUsageFailed((prev) => ({ ...prev, [teamId]: !isRefusal(err) }));
|
|
6546
6560
|
} finally {
|
|
6547
6561
|
setMemberUsageLoading((prev) => ({ ...prev, [teamId]: false }));
|
|
6548
6562
|
}
|
|
@@ -6555,8 +6569,9 @@ var init_LiteLLMPage = __esm({
|
|
|
6555
6569
|
const endDate = toLocalDay(dateRange.end);
|
|
6556
6570
|
const data = await api.getTeamKeyUsage(teamId, startDate, endDate);
|
|
6557
6571
|
setKeyUsageCache((prev) => ({ ...prev, [teamId]: data }));
|
|
6558
|
-
} catch {
|
|
6572
|
+
} catch (err) {
|
|
6559
6573
|
setKeyUsageCache((prev) => ({ ...prev, [teamId]: null }));
|
|
6574
|
+
setKeyUsageFailed((prev) => ({ ...prev, [teamId]: !isRefusal(err) }));
|
|
6560
6575
|
} finally {
|
|
6561
6576
|
setKeyUsageLoading((prev) => ({ ...prev, [teamId]: false }));
|
|
6562
6577
|
}
|
|
@@ -6860,6 +6875,8 @@ var init_LiteLLMPage = __esm({
|
|
|
6860
6875
|
getTeamMemberUsageLoading: (teamId) => memberUsageLoading[teamId] ?? false,
|
|
6861
6876
|
getTeamKeyUsage: (teamId) => keyUsageCache[teamId] ?? null,
|
|
6862
6877
|
getTeamKeyUsageLoading: (teamId) => keyUsageLoading[teamId] ?? false,
|
|
6878
|
+
getTeamMemberUsageFailed: (teamId) => memberUsageFailed[teamId] ?? false,
|
|
6879
|
+
getTeamKeyUsageFailed: (teamId) => keyUsageFailed[teamId] ?? false,
|
|
6863
6880
|
canManage: teamMgmtEnabled && canManageTeam && !readOnly,
|
|
6864
6881
|
onEditTeam: (t) => setManageTeam({ mode: "edit", team: t }),
|
|
6865
6882
|
canCreate: teamMgmtEnabled && canCreateTeam && !readOnly,
|