diff --git a/src/langbot/pkg/workflow/node.py b/src/langbot/pkg/workflow/node.py index 8562f69c..41daedc9 100644 --- a/src/langbot/pkg/workflow/node.py +++ b/src/langbot/pkg/workflow/node.py @@ -118,6 +118,28 @@ class WorkflowNode(abc.ABC): registry = NodeTypeRegistry.instance() return registry.get_metadata(self.type_name) + @classmethod + def to_schema(cls) -> dict[str, Any]: + """Return a schema dict for this node type. + + This is used by tests and tooling to inspect node capabilities. + """ + from .registry import NodeTypeRegistry + registry = NodeTypeRegistry.instance() + metadata = registry.get_metadata(cls.type_name) + if metadata: + return registry._metadata_to_schema(metadata) + # Fallback: build a minimal schema from class attributes + return { + 'type': f'{cls.category}.{cls.type_name}' if cls.type_name else cls.type_name, + 'category': cls.category, + 'label': getattr(cls, 'name', cls.type_name), + 'description': getattr(cls, 'description', ''), + 'inputs': [], + 'outputs': [], + 'config_schema': [], + } + # ------------------------------------------------------------------ # Decorator and pending registration helpers diff --git a/src/langbot/pkg/workflow/nodes/question_classifier.py b/src/langbot/pkg/workflow/nodes/question_classifier.py index d86519ec..df561ff9 100644 --- a/src/langbot/pkg/workflow/nodes/question_classifier.py +++ b/src/langbot/pkg/workflow/nodes/question_classifier.py @@ -5,7 +5,6 @@ Node metadata is loaded from: ../../templates/metadata/nodes/question_classifier from __future__ import annotations -import json import logging from typing import Any