mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-11 23:18:24 +02:00
add the budget config to the resources
This commit is contained in:
@@ -1817,6 +1817,8 @@
|
|||||||
"aiResourceAliasRequired": "Alias is required for inference resources",
|
"aiResourceAliasRequired": "Alias is required for inference resources",
|
||||||
"aiResourceDomainConfiguration": "Domain configuration",
|
"aiResourceDomainConfiguration": "Domain configuration",
|
||||||
"aiResourceDomainConfigurationDescription": "Choose the domain clients will use to reach this inference resource.",
|
"aiResourceDomainConfigurationDescription": "Choose the domain clients will use to reach this inference resource.",
|
||||||
|
"resourceBudgetSettings": "Budget",
|
||||||
|
"resourceBudgetSettingsDescription": "Configure how this inference resource restricts usage based on spending or token limits",
|
||||||
"sidebarApiKeys": "API Keys",
|
"sidebarApiKeys": "API Keys",
|
||||||
"sidebarProvisioning": "Provisioning",
|
"sidebarProvisioning": "Provisioning",
|
||||||
"sidebarSettings": "Settings",
|
"sidebarSettings": "Settings",
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { SettingsContainer } from "@app/components/Settings";
|
||||||
|
import { BudgetsEditor } from "@app/components/BudgetsEditor";
|
||||||
|
import { useSiteResourceContext } from "@app/hooks/useSiteResourceContext";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
import { useRouter } from "next/navigation";
|
||||||
|
import { useEffect } from "react";
|
||||||
|
|
||||||
|
export default function PrivateResourceBudgetPage() {
|
||||||
|
const { siteResource } = useSiteResourceContext();
|
||||||
|
const router = useRouter();
|
||||||
|
const t = useTranslations();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (siteResource.mode !== "inference") {
|
||||||
|
router.replace(
|
||||||
|
`/${siteResource.orgId}/settings/resources/private/${siteResource.niceId}/general`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [
|
||||||
|
router,
|
||||||
|
siteResource.mode,
|
||||||
|
siteResource.niceId,
|
||||||
|
siteResource.orgId
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (siteResource.mode !== "inference") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SettingsContainer>
|
||||||
|
<BudgetsEditor
|
||||||
|
orgId={siteResource.orgId}
|
||||||
|
scope={{ type: "siteResource", id: siteResource.id }}
|
||||||
|
title={t("resourceBudgetSettings")}
|
||||||
|
description={t("resourceBudgetSettingsDescription")}
|
||||||
|
/>
|
||||||
|
</SettingsContainer>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -70,6 +70,13 @@ export default async function PrivateResourceLayout(
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (siteResource.mode === "inference") {
|
||||||
|
navItems.push({
|
||||||
|
title: t("resourceBudgetSettings"),
|
||||||
|
href: `/{orgId}/settings/resources/private/{niceId}/budget`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SettingsSectionTitle
|
<SettingsSectionTitle
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { SettingsContainer } from "@app/components/Settings";
|
||||||
|
import { BudgetsEditor } from "@app/components/BudgetsEditor";
|
||||||
|
import { useResourceContext } from "@app/hooks/useResourceContext";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
import { useRouter } from "next/navigation";
|
||||||
|
import { useEffect } from "react";
|
||||||
|
|
||||||
|
export default function PublicResourceBudgetPage() {
|
||||||
|
const { resource } = useResourceContext();
|
||||||
|
const router = useRouter();
|
||||||
|
const t = useTranslations();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (resource.mode !== "inference") {
|
||||||
|
router.replace(
|
||||||
|
`/${resource.orgId}/settings/resources/public/${resource.niceId}/general`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [router, resource.mode, resource.niceId, resource.orgId]);
|
||||||
|
|
||||||
|
if (resource.mode !== "inference") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SettingsContainer>
|
||||||
|
<BudgetsEditor
|
||||||
|
orgId={resource.orgId}
|
||||||
|
scope={{ type: "resource", id: resource.resourceId }}
|
||||||
|
title={t("resourceBudgetSettings")}
|
||||||
|
description={t("resourceBudgetSettingsDescription")}
|
||||||
|
/>
|
||||||
|
</SettingsContainer>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -113,6 +113,13 @@ export default async function ResourceLayout(props: ResourceLayoutProps) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resource.mode === "inference") {
|
||||||
|
navItems.push({
|
||||||
|
title: t("resourceBudgetSettings"),
|
||||||
|
href: `/{orgId}/settings/resources/public/{niceId}/budget`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SettingsSectionTitle
|
<SettingsSectionTitle
|
||||||
|
|||||||
Reference in New Issue
Block a user