OpenBMB/ChatDev · error · RegistryError
Edge condition type '{condition.type}' does not provide a ma
Error message
Edge condition type '{condition.type}' does not provide a manager implementation What it means
The requested edge condition type is registered, but its registration has no manager_cls, so build_edge_condition_manager cannot instantiate an EdgeConditionManager for the edge. Every usable condition type must supply a manager implementation class.
Source
Thrown at runtime/edge/conditions/registry.py:80
return registration
def iter_edge_condition_registrations() -> Dict[str, EdgeConditionRegistration]:
"""Iterate over registered condition types."""
_ensure_builtins_loaded()
return {name: entry.load() for name, entry in edge_condition_registry.items()}
def build_edge_condition_manager(
condition: "EdgeConditionConfig",
context: ConditionFactoryContext,
execution_context: ExecutionContext
) -> "EdgeConditionManager[Any]":
"""Instantiate the manager responsible for a specific edge."""
registration = get_edge_condition_registration(condition.type)
manager_cls = registration.manager_cls
if not manager_cls:
raise RegistryError(
f"Edge condition type '{condition.type}' does not provide a manager implementation"
)
return manager_cls(condition.config, context, execution_context)
__all__ = [
"EdgeConditionRegistration",
"register_edge_condition",
"get_edge_condition_registration",
"iter_edge_condition_registrations",
"build_edge_condition_manager",
]
View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Register the condition type with a concrete manager_cls implementing EdgeConditionManager
- If the condition is intentionally abstract, stop referencing it in edge configs
- Switch the edge to a fully implemented builtin condition type
Example fix
# before
register_edge_condition('mycond', config_cls=C, manager_cls=None)
# after
class MyCondManager(EdgeConditionManager[MyCondConfig]):
...
register_edge_condition('mycond', config_cls=C, manager_cls=MyCondManager) Defensive patterns
Strategy: validation
Validate before calling
from runtime.edge.conditions.registry import get_edge_condition_registration
reg = get_edge_condition_registration(cond.type)
if reg.manager_cls is None:
raise ConfigError(f'{cond.type} has no manager; pick a builtin type') Prevention
- Validate graph config before execution
- Only reference fully implemented condition types
When it happens
Trigger: An edge config uses condition.type = X where X's registration was created with manager_cls=None (or omitted), and the graph executes edges via _prepare_edge_conditions or _execute_node which call build_edge_condition_manager.
Common situations: Registering a config-only or abstract condition type meant only for schema/documentation; copying a registration call and forgetting the manager_cls argument; custom condition types that were never fully implemented.
Related errors
- Edge condition type '{name}' already registered
- Edge processor type '{processor_config.type}' does not provi
- unsupported memory store type '{store_type}'
- unsupported node type '{node_type}'
- Entry '{name}' is not a BaseConfig subclass
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/4eeaad3a009b3c67.
Report an issue: GitHub.