{"record":{"id":"dd2618c8f5bc17e3","repo":"oraios/serena","slug":"this-operation-requires-serena-jetbrains-plugin-ve","errorCode":null,"errorMessage":"This operation requires Serena JetBrains plugin version {'.'.join(map(str, version_parts))} or higher, but the installed version is {self._plugin_version}. Ask the user to update the plugin!","messagePattern":"This operation requires Serena JetBrains plugin version (.+?) or higher, but the installed version is (.+?)\\. Ask the user to update the plugin!","errorType":"exception","errorClass":"SerenaClientError","httpStatus":null,"severity":"error","filePath":"src/serena/jetbrains/jetbrains_plugin_client.py","lineNumber":300,"sourceCode":"        :return: whether this client instance matches the given project path\n        \"\"\"\n        if self.project_root is None:\n            return False\n        return self._paths_match(str(resolved_path), self.project_root)\n\n    def is_version_at_least(self, *version_parts: int) -> bool:\n        if self._plugin_version is None:\n            return False\n        return self._plugin_version.is_at_least(*version_parts)\n\n    def _require_version_at_least(self, *version_parts: int) -> None:\n        \"\"\"\n        Ensures that the plugin version is at least the given version and raises an error otherwise.\n\n        :param version_parts: the minimum required version parts (major, minor, patch)\n        \"\"\"\n        if not self.is_version_at_least(*version_parts):\n            raise SerenaClientError(\n                f\"This operation requires Serena JetBrains plugin version \"\n                f\"{'.'.join(map(str, version_parts))} or higher, but the installed version is \"\n                f\"{self._plugin_version}. Ask the user to update the plugin!\"\n            )\n\n    def _make_request(self, method: str, endpoint: str, data: Optional[dict] = None, pythonify: bool = True) -> dict[str, Any]:\n        \"\"\"\n        :param method: the HTTP method to use (\"GET\" or \"POST\")\n        :param endpoint: the endpoint to call (e.g., \"/findSymbol\")\n        :param data: the data to send in the request body (for POST requests)\n        :param pythonify: whether to recursively \"pythonify\" the response object, converting all keys to snake_case.\n            This must not be enabled if *any* key contains variable data rather (and therefore isn't a well-defined DTO structure).\n        :return: the response as a dictionary\n        \"\"\"\n        url = f\"{self._base_url}{endpoint}\"\n\n        response: Response | None = None\n        try:","sourceCodeStart":282,"sourceCodeEnd":318,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/serena/jetbrains/jetbrains_plugin_client.py#L282-L318","documentation":"JetBrainsPluginClient._require_version_at_least guards features that need a minimum Serena JetBrains plugin version. If the installed plugin version is older, it raises SerenaClientError naming the required minimum and the installed version, directing the user to update the plugin.","triggerScenarios":"Calling any operation gated on a version minimum — find_symbol, move, get_supertypes, get_subtypes, safe_delete, inline_symbol — while the installed Serena JetBrains plugin is below the required version (e.g. needing >=2023.2.6 behaviors).","commonSituations":"IDE plugin auto-update disabled; IDE pinned to an old version that can't host a newer plugin; user upgraded the serena CLI/library but not the IDE plugin.","solutions":["Update the Serena plugin via IDE Settings > Plugins > Serena (or install the latest from the plugin marketplace)","Update the JetBrains IDE itself if it blocks the newer plugin","Downgrade/avoid the specific operation not supported by the installed plugin version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"# pre-check the plugin version before calling gated operations\nif not client.is_version_at_least(2023, 2, 6):\n    warn_user(\"Update the Serena JetBrains plugin for this operation\")","typeGuard":null,"tryCatchPattern":"try:\n    client._require_version_at_least(2023, 2, 6)  # or call the gated op\nexcept SerenaClientError as e:\n    if \"update the plugin\" in str(e).lower():\n        instruct_user_to_update_plugin()\n    else:\n        raise","preventionTips":["Check the plugin version with the client's version API before version-gated operations","Enable IDE plugin auto-updates","Keep the serena library and JetBrains plugin versions in sync","Avoid gated operations (move, safe_delete, inline_symbol) on old plugins"],"tags":["jetbrains","version","compatibility","plugin"],"backgroundTag":"version-too-old","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}