import { Spinner } from '@librechat/client'; import { useWatch, useFormContext } from 'react-hook-form'; import { SystemRoles, Permissions, PermissionTypes, PERMISSION_BITS, } from 'librechat-data-provider'; import type { AgentForm, AgentPanelProps } from '~/common'; import { useLocalize, useAuthContext, useHasAccess, useResourcePermissions } from '~/hooks'; import GrantAccessDialog from './Sharing/GrantAccessDialog'; import { useUpdateAgentMutation } from '~/data-provider'; import AdvancedButton from './Advanced/AdvancedButton'; import VersionButton from './Version/VersionButton'; import DuplicateAgent from './DuplicateAgent'; import AdminSettings from './AdminSettings'; import DeleteButton from './DeleteButton'; import { Panel } from '~/common'; export default function AgentFooter({ activePanel, createMutation, updateMutation, setActivePanel, setCurrentAgentId, }: Pick< AgentPanelProps, 'setCurrentAgentId' | 'createMutation' | 'activePanel' | 'setActivePanel' > & { updateMutation: ReturnType; }) { const localize = useLocalize(); const { user } = useAuthContext(); const methods = useFormContext(); const { control } = methods; const agent = useWatch({ control, name: 'agent' }); const agent_id = useWatch({ control, name: 'id' }); const hasAccessToShareAgents = useHasAccess({ permissionType: PermissionTypes.AGENTS, permission: Permissions.SHARED_GLOBAL, }); const { hasPermission, isLoading: permissionsLoading } = useResourcePermissions( 'agent', agent?._id || '', ); const canShareThisAgent = hasPermission(PERMISSION_BITS.SHARE); const canDeleteThisAgent = hasPermission(PERMISSION_BITS.DELETE); const renderSaveButton = () => { if (createMutation.isLoading || updateMutation.isLoading) { return