HKUDS/nanobot · error · TypeError

ChannelPlugin.management.feature_instances for '{plugin.name

Error message

ChannelPlugin.management.feature_instances for '{plugin.name}' must return a list of dicts or None

What it means

Error "ChannelPlugin.management.feature_instances for '{plugin.name}' must return a list of dicts or None" thrown in HKUDS/nanobot.

Source

Thrown at nanobot/channels/contracts.py:477

def channel_feature_instances(
    plugin: ChannelPlugin,
    section: Any,
    *,
    setup_spec: ChannelSetupSpec | None = None,
) -> list[dict[str, Any]] | None:
    factory = plugin.management.feature_instances
    overrides = (
        cast(object, factory(section, setup_spec=setup_spec))
        if factory is not None
        else None
    )
    if overrides is None and not plugin.management.multi_instance:
        return None
    if overrides is not None and (
        not isinstance(overrides, list)
        or any(not isinstance(instance, dict) for instance in cast(list[object], overrides))
    ):
        raise TypeError(
            f"ChannelPlugin.management.feature_instances for '{plugin.name}' "
            "must return a list of dicts or None"
        )

    enabled_ids = {
        spec.instance_id for spec in channel_instance_specs(plugin, section, enabled_only=True)
    }

    instances = [
        _channel_feature_instance(
            plugin.name,
            spec,
            setup_spec,
            enabled=spec.instance_id in enabled_ids,
        )
        for spec in channel_instance_specs(plugin, section, enabled_only=False)
    ]
    if overrides is None:

View on GitHub (pinned to 42f37dc4c0)

When it happens

Trigger: Thrown at nanobot/channels/contracts.py:477 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26). Data as JSON: /api/errors/44b8c38e0b006da0. Report an issue: GitHub.