{"record":{"id":"5df9e27b486c3acf","repo":"microsoft/semantic-kernel","slug":"unsupported-node-type-node-type","errorCode":null,"errorMessage":"Unsupported node type: {node.Type}","messagePattern":"Unsupported node type: (.+?)","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Experimental/Process.Core/Workflow/WorkflowBuilder.cs","lineNumber":119,"sourceCode":"    internal async Task AddStepAsync(Node node, ProcessBuilder processBuilder, Dictionary<string, Type>? stepTypes = null)\n    {\n        Verify.NotNull(node);\n\n        if (node.Type == \"dotnet\")\n        {\n            await this.BuildDotNetStepAsync(node, processBuilder, stepTypes).ConfigureAwait(false);\n        }\n        else if (node.Type == \"python\")\n        {\n            await this.BuildPythonStepAsync(node, processBuilder).ConfigureAwait(false);\n        }\n        else if (node.Type == \"declarative\")\n        {\n            await this.BuildDeclarativeStepAsync(node, processBuilder).ConfigureAwait(false);\n        }\n        else\n        {\n            throw new ArgumentException($\"Unsupported node type: {node.Type}\");\n        }\n    }\n\n    private Task BuildDeclarativeStepAsync(Node node, ProcessBuilder processBuilder)\n    {\n        Verify.NotNull(node);\n\n        // Check for built-in step types\n        if (node.Id.Equals(\"End\", StringComparison.OrdinalIgnoreCase))\n        {\n            var endBuilder = processBuilder.AddEndStep();\n            this._stepBuilders[\"End\"] = endBuilder;\n            return Task.CompletedTask;\n        }\n\n        AgentDefinition? agentDefinition = node.Agent ?? throw new KernelException(\"Declarative steps must have an agent defined.\");\n        var stepBuilder = processBuilder.AddStepFromAgent(agentDefinition, node.Id);\n        if (stepBuilder is not ProcessAgentBuilder agentBuilder)","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Experimental/Process.Core/Workflow/WorkflowBuilder.cs#L101-L137","documentation":"Thrown by WorkflowBuilder when dispatching a Node whose Type is not one of the recognized kinds. The builder handles 'dotnet', 'python', and 'declarative'; any other node.Type falls through to this ArgumentException.","triggerScenarios":"A workflow node with node.Type set to a value other than 'dotnet', 'python', or 'declarative' (typos, unknown types, case mismatch, or a forward-compatible field the runtime does not yet support).","commonSituations":"Workflow YAML using a new node type not supported by the installed runtime version; typos like 'DotNet' or 'declare'; cross-language definitions authored for a newer schema.","solutions":["Set node.Type to one of 'dotnet', 'python', or 'declarative' (lowercase) as supported by the runtime.","Upgrade the Semantic Kernel runtime to a version that supports the node type if it is a newer feature.","Validate node.Type against the allowed set before calling BuildProcessAsync."],"exampleFix":"// before: unsupported type\nnode.Type = \"DotNet\";\n\n// after\nnode.Type = \"dotnet\";","handlingStrategy":"validation","validationCode":"var allowed = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { \"dotnet\", \"python\", \"declarative\" };\nforeach (var n in workflow.Nodes)\n    if (!allowed.Contains(n.Type)) throw new ArgumentException($\"Unsupported node type: {n.Type}\");","typeGuard":"static bool IsSupportedNodeType(string? t) => t is \"dotnet\" or \"python\" or \"declarative\";","tryCatchPattern":"try { await builder.BuildProcessAsync(workflow, yaml); }\ncatch (ArgumentException ex) when (ex.Message.Contains(\"Unsupported node type\"))\n{ /* correct node.Type or upgrade runtime */ }","preventionTips":["Maintain an allow-list of node types matching the installed runtime version.","Lowercase node.Type consistently; treat case differences as errors.","Upgrade runtime when adopting new node types."],"tags":["semantic-kernel","process","workflow","node-type"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}