{"record":{"id":"170c99029575cc50","repo":"HKUDS/nanobot","slug":"plugin-name-does-not-support-multiple-instances","errorCode":null,"errorMessage":"{plugin.name} does not support multiple instances","messagePattern":"(.+?) does not support multiple instances","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/contracts.py","lineNumber":316,"sourceCode":"    for part in parts[:-1]:\n        nested: object = target.get(part)\n        if not isinstance(nested, dict):\n            nested = {}\n            target[part] = nested\n        target = cast(dict[str, Any], nested)\n    target[parts[-1]] = value\n\n\ndef channel_local_state_present(plugin: ChannelPlugin, section: Any) -> bool:\n    checker = plugin.management.local_state_present\n    return bool(checker and checker(section))\n\n\ndef channel_runtime_name(plugin: ChannelPlugin, instance_id: str = \"default\") -> str:\n    factory = plugin.management.runtime_name\n    if factory is None:\n        if instance_id not in {\"\", \"default\"}:\n            raise ValueError(f\"{plugin.name} does not support multiple instances\")\n        runtime_name = plugin.name\n    else:\n        runtime_name = str(factory(plugin.name, instance_id))\n    _validate_runtime_name(plugin, runtime_name)\n    return runtime_name\n\n\ndef channel_instance_specs(\n    plugin: ChannelPlugin,\n    section: Any,\n    *,\n    enabled_only: bool = True,\n) -> list[ChannelInstanceSpec]:\n    \"\"\"Expand persisted config through the dependency-free management adapter.\"\"\"\n    factory = plugin.management.instance_specs\n    if factory is None:\n        activation = ChannelActivation.from_config(section)\n        raw_specs: object = (","sourceCodeStart":298,"sourceCodeEnd":334,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/contracts.py#L298-L334","documentation":"Error \"{plugin.name} does not support multiple instances\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/contracts.py:316 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"42f37dc4c0e409eac7818a82d165c5f2757bc075","analyzedAt":"2026-08-26T00:18:52.276Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}