{"record":{"id":"646af918bc99d9b3","repo":"HKUDS/nanobot","slug":"module-name-plugin-webui-entry-does-not-exist","errorCode":null,"errorMessage":"{module_name}.PLUGIN webui entry does not exist: {plugin.webui}","messagePattern":"(.+?)\\.PLUGIN webui entry does not exist: (.+?)","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/plugin.py","lineNumber":176,"sourceCode":"            raise TypeError(\n                f\"{module_name}.PLUGIN {label} must stay inside {package_name}: \"\n                f\"{target_module}\"\n            )\n        target_parts = target_module.removeprefix(f\"{package_name}.\").split(\".\")\n        target_file = package_root.joinpath(\n            *target_parts[:-1],\n            f\"{target_parts[-1]}.py\",\n        )\n        target_package = package_root.joinpath(*target_parts, \"__init__.py\")\n        if not (target_file.is_file() or target_package.is_file()):\n            raise TypeError(\n                f\"{module_name}.PLUGIN {label} module does not exist inside its package: \"\n                f\"{target_module}\"\n            )\n    if plugin.webui is not None:\n        webui_entry = files(\"nanobot.channels\").joinpath(name, *plugin.webui.split(\"/\"))\n        if not webui_entry.is_file():\n            raise TypeError(\n                f\"{module_name}.PLUGIN webui entry does not exist: {plugin.webui}\"\n            )\n    return plugin\n\n\n__all__ = [\n    \"ChannelPlugin\",\n    \"has_channel_package\",\n    \"load_channel_package\",\n]\n","sourceCodeStart":158,"sourceCodeEnd":187,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/plugin.py#L158-L187","documentation":"Error \"{module_name}.PLUGIN webui entry does not exist: {plugin.webui}\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/plugin.py:176 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"}