{"record":{"id":"d6e81024ca2ab365","repo":"iflytek/astron-agent","slug":"eng-protocol-validate-error-current-workflow-does-not","errorCode":"ENG_PROTOCOL_VALIDATE_ERROR","errorMessage":"Current workflow does not support node type: {node.get_node_type()}","messagePattern":"Current workflow does not support node type: (.+?)","errorType":"error_code","errorClass":"CustomException","httpStatus":null,"severity":"error","filePath":"core/workflow/engine/node.py","lineNumber":773,"sourceCode":"class NodeFactory:\n    \"\"\"Factory class for creating workflow engine nodes.\"\"\"\n\n    @staticmethod\n    def create(node: Node, span_context: Span) -> SparkFlowEngineNode:\n        \"\"\"\n        Create a node instance.\n\n        :param node: Node data\n        :param span_context: Span context for tracing\n        :return: Created node instance\n        :raises CustomException: When node type is not supported\n        \"\"\"\n\n        from workflow.engine.nodes.cache_node import tool_classes\n\n        node_class = tool_classes.get(node.get_node_type())\n        if not node_class:\n            raise CustomException(\n                CodeEnum.ENG_PROTOCOL_VALIDATE_ERROR,\n                err_msg=f\"Current workflow does not support node type: {node.get_node_type()}\",\n                cause_error=f\"Current workflow does not support node type: {node.get_node_type()}\",\n            )\n\n        if not node.data:\n            return node_class(span=span_context)\n\n        # Get basic configuration\n        inputs = node.data.inputs\n        outputs = node.data.outputs\n\n        # Build retry configuration\n        retry_config = node.data.retryConfig\n        retry_config.custom_output = NodeFactory._check_custom_output(\n            retry_config.custom_output, outputs, span_context\n        )\n","sourceCodeStart":755,"sourceCodeEnd":791,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/core/workflow/engine/node.py#L755-L791","documentation":"Raised by NodeFactory.create when the workflow engine's tool_classes registry (built from workflow.engine.nodes.cache_node) has no node class registered for the given node's type string. The engine cannot instantiate a node whose type it does not recognize, so it fails protocol validation with ENG_PROTOCOL_VALIDATE_ERROR. This usually means the workflow definition references a node type from a newer/older version or a plugin node that is not loaded.","triggerScenarios":"Calling NodeFactory.create (directly or via workflow instantiation) with a node whose get_node_type() returns a string not present in tool_classes — e.g. an imported workflow DSL containing a node type this deployment does not support, or a typo in a hand-edited workflow JSON.","commonSituations":"Importing an exported workflow from a different product version that contains node types not yet released in this engine; disabling a plugin module so its node class is never registered; hand-editing workflow definitions and misspelling the node type.","solutions":["Check the node_type value in the workflow definition against the registry keys in workflow/engine/nodes/cache_node.tool_classes and correct any typo","Upgrade or fix the deployment so the plugin/module registering that node class is loaded (verify cache_node imports all node modules)","Remove or replace the unsupported node in the workflow DSL with a supported equivalent type","If the workflow came from another version, re-export it from a matching engine version"],"exampleFix":"// before (workflow DSL)\n{\"type\": \"agentNode_v3\"}\n// after\n{\"type\": \"agent\"}","handlingStrategy":"validation","validationCode":"from workflow.engine.nodes.cache_node import tool_classes\ndef node_type_supported(node_type: str) -> bool:\n    return node_type in tool_classes","typeGuard":null,"tryCatchPattern":"try:\n    node = NodeFactory.create(node_data)\nexcept CustomException as e:\n    if e.err_code == CodeEnum.ENG_PROTOCOL_VALIDATE_ERROR:\n        log.warning(\"unsupported node type skipped: %s\", node_data.get(\"type\"))\n        return None\n    raise","preventionTips":["Validate imported workflow DSLs against the current engine's node registry before import","Keep node modules imported in cache_node so all types are registered","Avoid hand-editing node type strings in workflow JSON"],"tags":["workflow","validation","registry","unsupported-node-type"],"backgroundTag":"invalid-enum-value","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}