import type { ComponentType } from 'react' import { BlockEnum } from '../types' import StartNode from './start/node' import StartPanel from './start/panel' import EndNode from './end/node' import EndPanel from './end/panel' import AnswerNode from './answer/node' import AnswerPanel from './answer/panel' import LLMNode from './llm/node' import LLMPanel from './llm/panel' import KnowledgeRetrievalNode from './knowledge-retrieval/node' import KnowledgeRetrievalPanel from './knowledge-retrieval/panel' import QuestionClassifierNode from './question-classifier/node' import QuestionClassifierPanel from './question-classifier/panel' import IfElseNode from './if-else/node' import IfElsePanel from './if-else/panel' import CodeNode from './code/node' import CodePanel from './code/panel' import TemplateTransformNode from './template-transform/node' import TemplateTransformPanel from './template-transform/panel' import HttpNode from './http/node' import HttpPanel from './http/panel' import ToolNode from './tool/node' import ToolPanel from './tool/panel' import VariableAssignerNode from './variable-assigner/node' import VariableAssignerPanel from './variable-assigner/panel' import AssignerNode from './assigner/node' import AssignerPanel from './assigner/panel' import ParameterExtractorNode from './parameter-extractor/node' import ParameterExtractorPanel from './parameter-extractor/panel' import IterationNode from './iteration/node' import IterationPanel from './iteration/panel' import DocExtractorNode from './document-extractor/node' import DocExtractorPanel from './document-extractor/panel' import ListFilterNode from './list-operator/node' import ListFilterPanel from './list-operator/panel' export const NodeComponentMap: Record> = { [BlockEnum.Start]: StartNode, [BlockEnum.End]: EndNode, [BlockEnum.Answer]: AnswerNode, [BlockEnum.LLM]: LLMNode, [BlockEnum.KnowledgeRetrieval]: KnowledgeRetrievalNode, [BlockEnum.QuestionClassifier]: QuestionClassifierNode, [BlockEnum.IfElse]: IfElseNode, [BlockEnum.Code]: CodeNode, [BlockEnum.TemplateTransform]: TemplateTransformNode, [BlockEnum.HttpRequest]: HttpNode, [BlockEnum.Tool]: ToolNode, [BlockEnum.VariableAssigner]: VariableAssignerNode, [BlockEnum.Assigner]: AssignerNode, [BlockEnum.VariableAggregator]: VariableAssignerNode, [BlockEnum.ParameterExtractor]: ParameterExtractorNode, [BlockEnum.Iteration]: IterationNode, [BlockEnum.DocExtractor]: DocExtractorNode, [BlockEnum.ListFilter]: ListFilterNode, } export const PanelComponentMap: Record> = { [BlockEnum.Start]: StartPanel, [BlockEnum.End]: EndPanel, [BlockEnum.Answer]: AnswerPanel, [BlockEnum.LLM]: LLMPanel, [BlockEnum.KnowledgeRetrieval]: KnowledgeRetrievalPanel, [BlockEnum.QuestionClassifier]: QuestionClassifierPanel, [BlockEnum.IfElse]: IfElsePanel, [BlockEnum.Code]: CodePanel, [BlockEnum.TemplateTransform]: TemplateTransformPanel, [BlockEnum.HttpRequest]: HttpPanel, [BlockEnum.Tool]: ToolPanel, [BlockEnum.VariableAssigner]: VariableAssignerPanel, [BlockEnum.VariableAggregator]: VariableAssignerPanel, [BlockEnum.Assigner]: AssignerPanel, [BlockEnum.ParameterExtractor]: ParameterExtractorPanel, [BlockEnum.Iteration]: IterationPanel, [BlockEnum.DocExtractor]: DocExtractorPanel, [BlockEnum.ListFilter]: ListFilterPanel, } export const CUSTOM_NODE_TYPE = 'custom'