- 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<string, ComponentType<any>> = {
 -   [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<string, ComponentType<any>> = {
 -   [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'
 
 
  |