| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | from collections.abc import Mappingfrom core.workflow.nodes.agent.agent_node import AgentNodefrom core.workflow.nodes.answer import AnswerNodefrom core.workflow.nodes.base import BaseNodefrom core.workflow.nodes.code import CodeNodefrom core.workflow.nodes.document_extractor import DocumentExtractorNodefrom core.workflow.nodes.end import EndNodefrom core.workflow.nodes.enums import NodeTypefrom core.workflow.nodes.http_request import HttpRequestNodefrom core.workflow.nodes.if_else import IfElseNodefrom core.workflow.nodes.intent_recon_train import IntentReconTrainNodefrom core.workflow.nodes.iteration import IterationNode, IterationStartNodefrom core.workflow.nodes.knowledge_retrieval import KnowledgeRetrievalNodefrom core.workflow.nodes.list_operator import ListOperatorNodefrom core.workflow.nodes.llm import LLMNodefrom core.workflow.nodes.loop import LoopNode, LoopStartNodefrom core.workflow.nodes.parameter_extractor import ParameterExtractorNodefrom core.workflow.nodes.question_classifier import QuestionClassifierNodefrom core.workflow.nodes.start import StartNodefrom core.workflow.nodes.template_transform import TemplateTransformNodefrom core.workflow.nodes.tool import ToolNodefrom core.workflow.nodes.variable_aggregator import VariableAggregatorNodefrom core.workflow.nodes.variable_assigner.v1 import VariableAssignerNode as VariableAssignerNodeV1from core.workflow.nodes.variable_assigner.v2 import VariableAssignerNode as VariableAssignerNodeV2LATEST_VERSION = "latest"NODE_TYPE_CLASSES_MAPPING: Mapping[NodeType, Mapping[str, type[BaseNode]]] = {    NodeType.START: {        LATEST_VERSION: StartNode,        "1": StartNode,    },    NodeType.END: {        LATEST_VERSION: EndNode,        "1": EndNode,    },    NodeType.ANSWER: {        LATEST_VERSION: AnswerNode,        "1": AnswerNode,    },    NodeType.LLM: {        LATEST_VERSION: LLMNode,        "1": LLMNode,    },    NodeType.KNOWLEDGE_RETRIEVAL: {        LATEST_VERSION: KnowledgeRetrievalNode,        "1": KnowledgeRetrievalNode,    },    NodeType.IF_ELSE: {        LATEST_VERSION: IfElseNode,        "1": IfElseNode,    },    NodeType.CODE: {        LATEST_VERSION: CodeNode,        "1": CodeNode,    },    NodeType.TEMPLATE_TRANSFORM: {        LATEST_VERSION: TemplateTransformNode,        "1": TemplateTransformNode,    },    NodeType.QUESTION_CLASSIFIER: {        LATEST_VERSION: QuestionClassifierNode,        "1": QuestionClassifierNode,    },    NodeType.HTTP_REQUEST: {        LATEST_VERSION: HttpRequestNode,        "1": HttpRequestNode,    },    NodeType.INTENT_RECON_TRAIN: {        LATEST_VERSION: IntentReconTrainNode,        "1": IntentReconTrainNode,    },    NodeType.TOOL: {        LATEST_VERSION: ToolNode,        "1": ToolNode,    },    NodeType.VARIABLE_AGGREGATOR: {        LATEST_VERSION: VariableAggregatorNode,        "1": VariableAggregatorNode,    },    NodeType.LEGACY_VARIABLE_AGGREGATOR: {        LATEST_VERSION: VariableAggregatorNode,        "1": VariableAggregatorNode,    },  # original name of VARIABLE_AGGREGATOR    NodeType.ITERATION: {        LATEST_VERSION: IterationNode,        "1": IterationNode,    },    NodeType.ITERATION_START: {        LATEST_VERSION: IterationStartNode,        "1": IterationStartNode,    },    NodeType.LOOP: {        LATEST_VERSION: LoopNode,        "1": LoopNode,    },    NodeType.LOOP_START: {        LATEST_VERSION: LoopStartNode,        "1": LoopStartNode,    },    NodeType.PARAMETER_EXTRACTOR: {        LATEST_VERSION: ParameterExtractorNode,        "1": ParameterExtractorNode,    },    NodeType.VARIABLE_ASSIGNER: {        LATEST_VERSION: VariableAssignerNodeV2,        "1": VariableAssignerNodeV1,        "2": VariableAssignerNodeV2,    },    NodeType.DOCUMENT_EXTRACTOR: {        LATEST_VERSION: DocumentExtractorNode,        "1": DocumentExtractorNode,    },    NodeType.LIST_OPERATOR: {        LATEST_VERSION: ListOperatorNode,        "1": ListOperatorNode,    },    NodeType.AGENT: {        LATEST_VERSION: AgentNode,        "1": AgentNode,    },}
 |