import { KeyRoundIcon } from 'lucide-react'; import { AuthType, AgentCapabilities } from 'librechat-data-provider'; import { useFormContext, Controller, useWatch } from 'react-hook-form'; import { Checkbox, HoverCard, CircleHelpIcon, HoverCardContent, HoverCardPortal, HoverCardTrigger, } from '@librechat/client'; import type { AgentForm } from '~/common'; import { useLocalize, useCodeApiKeyForm } from '~/hooks'; import ApiKeyDialog from './ApiKeyDialog'; import { ESide } from '~/common'; export default function Action({ authType = '', isToolAuthenticated = false }) { const localize = useLocalize(); const methods = useFormContext(); const { control, setValue, getValues } = methods; const { onSubmit, isDialogOpen, setIsDialogOpen, handleRevokeApiKey, methods: keyFormMethods, } = useCodeApiKeyForm({ onSubmit: () => { setValue(AgentCapabilities.execute_code, true, { shouldDirty: true }); }, onRevoke: () => { setValue(AgentCapabilities.execute_code, false, { shouldDirty: true }); }, }); const runCodeIsEnabled = useWatch({ control, name: AgentCapabilities.execute_code }); const isUserProvided = authType === AuthType.USER_PROVIDED; const handleCheckboxChange = (checked: boolean) => { if (isToolAuthenticated) { setValue(AgentCapabilities.execute_code, checked, { shouldDirty: true }); } else if (runCodeIsEnabled) { setValue(AgentCapabilities.execute_code, false, { shouldDirty: true }); } else { setIsDialogOpen(true); } }; return ( <>
( )} />
{isUserProvided && (isToolAuthenticated || runCodeIsEnabled) && ( )}

{localize('com_agents_code_interpreter')}

); }