{"record":{"id":"f6233b49b00c063b","repo":"HKUDS/nanobot","slug":"token-issue-path-must-start-with","errorCode":null,"errorMessage":"token_issue_path must start with \"/\"","messagePattern":"token_issue_path must start with \"/\"","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"nanobot/channels/websocket/runtime.py","lineNumber":250,"sourceCode":"        if not path.is_absolute():\n            raise ValueError(\"unix_socket_path must be an absolute path\")\n        return str(path)\n\n    @field_validator(\"path\")\n    @classmethod\n    def path_must_start_with_slash(cls, value: str) -> str:\n        if not value.startswith(\"/\"):\n            raise ValueError('path must start with \"/\"')\n        return _normalize_config_path(value)\n\n    @field_validator(\"token_issue_path\")\n    @classmethod\n    def token_issue_path_format(cls, value: str) -> str:\n        value = value.strip()\n        if not value:\n            return \"\"\n        if not value.startswith(\"/\"):\n            raise ValueError('token_issue_path must start with \"/\"')\n        return _normalize_config_path(value)\n\n    @field_validator(\"public_ws_url\")\n    @classmethod\n    def public_ws_url_format(cls, value: str) -> str:\n        value = value.strip()\n        if not value:\n            return \"\"\n        parsed = urlsplit(value)\n        if (\n            parsed.scheme not in {\"ws\", \"wss\"}\n            or not parsed.netloc\n            or parsed.username is not None\n            or parsed.password is not None\n            or parsed.query\n            or parsed.fragment\n        ):\n            raise ValueError(\"public_ws_url must be an absolute ws:// or wss:// URL without credentials\")","sourceCodeStart":232,"sourceCodeEnd":268,"githubUrl":"https://github.com/HKUDS/nanobot/blob/42f37dc4c0e409eac7818a82d165c5f2757bc075/nanobot/channels/websocket/runtime.py#L232-L268","documentation":"Error \"token_issue_path must start with \"/\"\" thrown in HKUDS/nanobot.","triggerScenarios":"Thrown at nanobot/channels/websocket/runtime.py:250 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"}