import { useEffect, useMemo } from 'react'; import { useFormContext, Controller, useWatch } from 'react-hook-form'; import { Capabilities } from 'librechat-data-provider'; import type { AssistantsEndpoint } from 'librechat-data-provider'; import type { AssistantForm } from '~/common'; import OptionHover from '~/components/SidePanel/Parameters/OptionHover'; import { Checkbox, HoverCard, HoverCardTrigger } from '~/components/ui'; import { useLocalize } from '~/hooks'; import { ESide } from '~/common'; import { cn } from '~/utils/'; export default function Retrieval({ version, retrievalModels, }: { version: number | string; retrievalModels: Set; endpoint: AssistantsEndpoint; }) { const localize = useLocalize(); const methods = useFormContext(); const { control, setValue, getValues } = methods; const model = useWatch({ control, name: 'model' }); const assistant = useWatch({ control, name: 'assistant' }); const vectorStores = useMemo(() => { if (typeof assistant === 'string') { return []; } return assistant.tool_resources?.file_search; }, [assistant]); const isDisabled = useMemo(() => !retrievalModels.has(model), [model, retrievalModels]); useEffect(() => { if (model && isDisabled) { setValue(Capabilities.retrieval, false); } }, [model, setValue, isDisabled]); return ( <>
( )} />
{version == 2 && (
{localize('com_assistants_file_search_info')}
)} ); }