From d6e325e2a0d0ccd810c57d9a6d92f41f313ae9a3 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Sat, 14 Mar 2026 23:00:39 +0100 Subject: [PATCH] Project.get_language_server_manager_or_raise: Fix error message generation Fixes #1168 --- src/serena/agent.py | 1 + src/serena/project.py | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/serena/agent.py b/src/serena/agent.py index f826ef8c..671d2eb2 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -700,6 +700,7 @@ class SerenaAgent: ) self._active_project = project + project.set_agent(self) if update_active_modes: self._update_active_modes() diff --git a/src/serena/project.py b/src/serena/project.py index 48a624e4..00d8ba40 100644 --- a/src/serena/project.py +++ b/src/serena/project.py @@ -6,7 +6,7 @@ import shutil import threading from collections.abc import Sequence from pathlib import Path -from typing import Any, Literal +from typing import TYPE_CHECKING, Any, Literal, Optional import pathspec from sensai.util.logging import LogTime @@ -25,6 +25,9 @@ from solidlsp import SolidLanguageServer from solidlsp.ls_config import Language from solidlsp.ls_utils import FileUtils +if TYPE_CHECKING: + from serena.agent import SerenaAgent + log = logging.getLogger(__name__) @@ -255,6 +258,7 @@ class Project(ToStringMixin): self.language_server_manager: LanguageServerManager | None = None self._language_server_manager_init_error: Exception | None = None self._is_newly_created = is_newly_created + self._agent: Optional["SerenaAgent"] = None # create .gitignore file in the project's Serena data folder if not yet present serena_data_gitignore_path = os.path.join(self._serena_data_folder, ".gitignore") @@ -309,6 +313,9 @@ class Project(ToStringMixin): def _tostring_additional_entries(self) -> dict[str, Any]: return {"root": self.project_root, "name": self.project_name} + def set_agent(self, agent: "SerenaAgent") -> None: + self._agent = agent + @property def project_name(self) -> str: return self.project_config.project_name @@ -636,8 +643,9 @@ class Project(ToStringMixin): if self.language_server_manager is None: msg = TextBuilder("The language server manager is not initialized, indicating a problem during project initialisation.") if self._language_server_manager_init_error is not None: - msg.with_text(str(self._lsp_init_error)) - msg.with_text("For details, please check the logs. " + self.get_log_inspection_instructions()) + msg.with_text(str(self._language_server_manager_init_error)) + if self._agent is not None: + msg.with_text("For details, please check the logs. " + self._agent.get_log_inspection_instructions()) msg.with_text( "IMPORTANT: Stop, do not attempt workarounds. Inform the user and wait for further instructions before you continue!" )