{"record":{"id":"7b8cca79c7046deb","repo":"HKUDS/nanobot","slug":"no-key-is-defined-for-app-name","errorCode":null,"errorMessage":"no {key} is defined for {app['name']}","messagePattern":"no (.+?) is defined for (.+?)","errorType":"exception","errorClass":"CliAppError","httpStatus":null,"severity":"error","filePath":"nanobot/apps/cli/service.py","lineNumber":957,"sourceCode":"        return removed\n\n    def _retry_stale_npm_install(\n        self,\n        app: dict[str, Any],\n        argv: list[str],\n        result: subprocess.CompletedProcess[str],\n    ) -> subprocess.CompletedProcess[str]:\n        output = f\"{result.stderr}\\n{result.stdout}\"\n        if \"ENOTEMPTY\" not in output or \"rename\" not in output:\n            return result\n        if not self._cleanup_stale_npm_install(app):\n            return result\n        return self._run_argv(argv, timeout=self.runtime.install_timeout)\n\n    def _split_safe_command(self, app: dict[str, Any], key: str, expected: str) -> list[str]:\n        command = str(app.get(key) or \"\")\n        if not command:\n            raise CliAppError(f\"no {key} is defined for {app['name']}\")\n        if _has_shell_meta(command):\n            raise CliAppError(\"script-style install commands are disabled in this MVP\")\n        try:\n            argv = shlex.split(command)\n        except ValueError as exc:\n            raise CliAppError(f\"invalid command: {exc}\") from exc\n        if not argv or argv[0] != expected:\n            raise CliAppError(f\"unsupported {expected} command\")\n        return argv\n\n    def _argv_for_action(\n        self,\n        app: dict[str, Any],\n        action: str,\n        installed_entry: dict[str, Any] | None = None,\n    ) -> list[str] | None:\n        strategy = self._strategy(app)\n        if strategy == \"pip\":","sourceCodeStart":939,"sourceCodeEnd":975,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/apps/cli/service.py#L939-L975","documentation":"Error \"no {key} is defined for {app['name']}\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/apps/cli/service.py:957 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"}