import type { FC } from 'react' import type { KnowledgeRetrievalNodeType } from './types' import type { NodePanelProps } from '@/app/components/workflow/types' import { intersectionBy } from 'es-toolkit/compat' import { memo, useMemo, } from 'react' import { useTranslation } from 'react-i18next' import Field from '@/app/components/workflow/nodes/_base/components/field' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import Split from '@/app/components/workflow/nodes/_base/components/split' import VarReferencePicker from '../_base/components/variable/var-reference-picker' import AddKnowledge from './components/add-dataset' import DatasetList from './components/dataset-list' import MetadataFilter from './components/metadata/metadata-filter' import RetrievalConfig from './components/retrieval-config' import useConfig from './use-config' const i18nPrefix = 'nodes.knowledgeRetrieval' const Panel: FC> = ({ id, data, }) => { const { t } = useTranslation() const { readOnly, inputs, handleQueryVarChange, handleQueryAttachmentChange, filterStringVar, filterFileVar, handleModelChanged, handleCompletionParamsChange, handleRetrievalModeChange, handleMultipleRetrievalConfigChange, selectedDatasets, selectedDatasetsLoaded, handleOnDatasetsChange, rerankModelOpen, setRerankModelOpen, handleAddCondition, handleMetadataFilterModeChange, handleRemoveCondition, handleToggleConditionLogicalOperator, handleUpdateCondition, handleMetadataModelChange, handleMetadataCompletionParamsChange, availableStringVars, availableStringNodesWithParent, availableNumberVars, availableNumberNodesWithParent, showImageQueryVarSelector, } = useConfig(id, data) const metadataList = useMemo(() => { return intersectionBy(...selectedDatasets.filter((dataset) => { return !!dataset.doc_metadata }).map((dataset) => { return dataset.doc_metadata! }), 'name') }, [selectedDatasets]) return (
{showImageQueryVarSelector && ( )} {!readOnly && (
)} {!readOnly && ( )}
)} >
<>
) } export default memo(Panel)