import type { RAGPipelineVariables } from '@/models/pipeline' import type { StateCreator } from 'zustand' import type { ToolWithProvider, } from '@/app/components/workflow/types' import type { DataSourceItem } from '@/app/components/workflow/block-selector/types' import { transformDataSourceToTool } from '@/app/components/workflow/block-selector/utils' import type { IconInfo } from '@/models/datasets' import type { InputFieldEditorProps } from '../components/panel/input-field/editor' export type RagPipelineSliceShape = { pipelineId: string knowledgeName: string knowledgeIcon?: IconInfo showInputFieldPanel: boolean setShowInputFieldPanel: (showInputFieldPanel: boolean) => void showInputFieldPreviewPanel: boolean setShowInputFieldPreviewPanel: (showInputFieldPreviewPanel: boolean) => void inputFieldEditPanelProps: InputFieldEditorProps | null setInputFieldEditPanelProps: (showInputFieldEditPanel: InputFieldEditorProps | null) => void nodesDefaultConfigs: Record setNodesDefaultConfigs: (nodesDefaultConfigs: Record) => void ragPipelineVariables: RAGPipelineVariables setRagPipelineVariables: (ragPipelineVariables: RAGPipelineVariables) => void dataSourceList: ToolWithProvider[] setDataSourceList: (dataSourceList: DataSourceItem[]) => void } export type CreateRagPipelineSliceSlice = StateCreator export const createRagPipelineSliceSlice: StateCreator = set => ({ pipelineId: '', knowledgeName: '', showInputFieldPanel: false, setShowInputFieldPanel: showInputFieldPanel => set(() => ({ showInputFieldPanel })), showInputFieldPreviewPanel: false, setShowInputFieldPreviewPanel: showInputFieldPreviewPanel => set(() => ({ showInputFieldPreviewPanel })), inputFieldEditPanelProps: null, setInputFieldEditPanelProps: inputFieldEditPanelProps => set(() => ({ inputFieldEditPanelProps })), nodesDefaultConfigs: {}, setNodesDefaultConfigs: nodesDefaultConfigs => set(() => ({ nodesDefaultConfigs })), ragPipelineVariables: [], setRagPipelineVariables: (ragPipelineVariables: RAGPipelineVariables) => set(() => ({ ragPipelineVariables })), dataSourceList: [], setDataSourceList: (dataSourceList: DataSourceItem[]) => { const formattedDataSourceList = dataSourceList.map(item => transformDataSourceToTool(item)) set(() => ({ dataSourceList: formattedDataSourceList })) }, })