HKUDS/nanobot · error · ValueError

ChannelPlugin.management.instance_specs for '{plugin.name}'

Error message

ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate instance id '{spec.instance_id}'

What it means

Error "ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate instance id '{spec.instance_id}'" thrown in HKUDS/nanobot.

Source

Thrown at nanobot/channels/contracts.py:360

        raise TypeError(
            f"ChannelPlugin.management.instance_specs for '{plugin.name}' must return an iterable"
        )
    specs = list(cast(Iterable[object], raw_specs))
    if not _all_channel_instance_specs(specs):
        raise TypeError(
            f"ChannelPlugin.management.instance_specs for '{plugin.name}' returned an invalid item"
        )

    instance_ids: set[str] = set()
    runtime_names: set[str] = set()
    for spec in specs:
        instance_id = cast(object, spec.instance_id)
        if not isinstance(instance_id, str) or not instance_id.strip():
            raise ValueError(
                f"ChannelPlugin.management.instance_specs for '{plugin.name}' returned an empty instance id"
            )
        if spec.instance_id in instance_ids:
            raise ValueError(
                f"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate instance id "
                f"'{spec.instance_id}'"
            )
        runtime_name = channel_runtime_name(plugin, spec.instance_id)
        if runtime_name in runtime_names:
            raise ValueError(
                f"ChannelPlugin.management.instance_specs for '{plugin.name}' returned duplicate runtime name "
                f"'{runtime_name}'"
            )
        instance_ids.add(spec.instance_id)
        runtime_names.add(runtime_name)
    return specs


def _all_channel_instance_specs(
    values: list[object],
) -> TypeGuard[list[ChannelInstanceSpec]]:
    return all(isinstance(value, ChannelInstanceSpec) for value in values)

View on GitHub (pinned to 42f37dc4c0)

When it happens

Trigger: Thrown at nanobot/channels/contracts.py:360 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/817a8b7fe850873e. Report an issue: GitHub.