import { Button } from "@/components/ui/button"; import { ModelProvider } from "@/lib/types/config"; import { RbacOperation, RbacResource, useRbac } from "@enterprise/lib"; import { SettingsIcon, Trash } from "lucide-react"; import { useMemo, useState } from "react"; import ProviderConfigSheet from "../dialogs/providerConfigSheet"; import ModelProviderKeysTableView from "./modelProviderKeysTableView"; import ProviderGovernanceTable from "./providerGovernanceTable"; interface Props { provider: ModelProvider; onRequestDelete?: () => void; } export default function ModelProviderConfig({ provider, onRequestDelete }: Props) { const [showConfigSheet, setShowConfigSheet] = useState(false); const hasGovernanceAccess = useRbac(RbacResource.Governance, RbacOperation.View); const hasDeleteProviderAccess = useRbac(RbacResource.ModelProvider, RbacOperation.Delete); const showApiKeys = useMemo(() => { if (provider.custom_provider_config) { return !(provider.custom_provider_config?.is_key_less ?? false); } return true; }, [provider.name, provider.custom_provider_config?.is_key_less]); const editConfigButton = (
{onRequestDelete && hasDeleteProviderAccess && ( )}
); return (
setShowConfigSheet(false)} provider={provider} /> {hasGovernanceAccess ? : null}
); }