From bf2573ee536fed80d8bb0bd3d8ea1fc6d2b10cf5 Mon Sep 17 00:00:00 2001 From: Michael Panchenko Date: Mon, 2 Jun 2025 21:25:52 +0200 Subject: [PATCH] Moved dashboard to src/serena. Stopped using serena_root_path (in favor of constants.py) --- src/serena/__init__.py | 7 ------- src/serena/agent.py | 6 +++--- src/serena/agno.py | 6 +++--- src/serena/constants.py | 2 ++ src/serena/dashboard.py | 5 ++--- .../serena/resources/dashboard}/dashboard.js | 0 .../serena/resources/dashboard}/index.html | 0 .../serena/resources/dashboard}/jquery.min.js | 0 .../serena/resources/dashboard}/serena-icon-16.png | Bin .../serena/resources/dashboard}/serena-icon-32.png | Bin .../serena/resources/dashboard}/serena-icon-48.png | Bin .../serena/resources/dashboard}/serena-logs.png | Bin 12 files changed, 10 insertions(+), 16 deletions(-) rename {dashboard => src/serena/resources/dashboard}/dashboard.js (100%) rename {dashboard => src/serena/resources/dashboard}/index.html (100%) rename {dashboard => src/serena/resources/dashboard}/jquery.min.js (100%) rename {dashboard => src/serena/resources/dashboard}/serena-icon-16.png (100%) rename {dashboard => src/serena/resources/dashboard}/serena-icon-32.png (100%) rename {dashboard => src/serena/resources/dashboard}/serena-icon-48.png (100%) rename {dashboard => src/serena/resources/dashboard}/serena-logs.png (100%) diff --git a/src/serena/__init__.py b/src/serena/__init__.py index 3e1a38d..85f7b17 100644 --- a/src/serena/__init__.py +++ b/src/serena/__init__.py @@ -1,12 +1,5 @@ __version__ = "2025-05-21" - -def serena_root_path() -> str: - from pathlib import Path - - return str(Path(__file__).parent.parent.parent.absolute()) - - def serena_version() -> str: """ :return: the version of the package, including git status if available. diff --git a/src/serena/agent.py b/src/serena/agent.py index 1b94c8a..a937cac 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -34,9 +34,9 @@ from multilspy import SyncLanguageServer from multilspy.multilspy_config import Language, MultilspyConfig from multilspy.multilspy_logger import MultilspyLogger from multilspy.multilspy_types import SymbolKind -from serena import serena_root_path, serena_version +from serena import serena_version from serena.config import SerenaAgentContext, SerenaAgentMode -from serena.constants import PROJECT_TEMPLATE_FILE, SELENA_CONFIG_TEMPLATE_FILE, SERENA_MANAGED_DIR_NAME +from serena.constants import PROJECT_TEMPLATE_FILE, SELENA_CONFIG_TEMPLATE_FILE, SERENA_MANAGED_DIR_NAME, REPO_ROOT from serena.dashboard import MemoryLogHandler, SerenaDashboardAPI from serena.prompt_factory import PromptFactory, SerenaPromptFactory from serena.symbol import SymbolManager @@ -308,7 +308,7 @@ class SerenaConfig(SerenaConfigBase): @classmethod def get_config_file_path(cls) -> str: - return os.path.join(serena_root_path(), cls.CONFIG_FILE) + return os.path.join(REPO_ROOT, cls.CONFIG_FILE) @classmethod def from_config_file(cls, generate_if_missing: bool = True) -> "SerenaConfig": diff --git a/src/serena/agno.py b/src/serena/agno.py index f6684ec..1248d1a 100644 --- a/src/serena/agno.py +++ b/src/serena/agno.py @@ -14,7 +14,7 @@ from agno.tools.toolkit import Toolkit from dotenv import load_dotenv from sensai.util.logging import LogTime -from serena import serena_root_path +from serena.constants import REPO_ROOT from serena.agent import SerenaAgent, Tool, show_fatal_exception_safe from serena.config import SerenaAgentContext @@ -65,7 +65,7 @@ class SerenaAgnoAgentProvider: return cls._agent # change to Serena root - os.chdir(serena_root_path()) + os.chdir(REPO_ROOT) load_dotenv() @@ -94,7 +94,7 @@ class SerenaAgnoAgentProvider: # If project file path is relative, make it absolute by joining with project root if not project_file.is_absolute(): # Get the project root directory (parent of scripts directory) - project_root = Path(serena_root_path()) + project_root = Path(REPO_ROOT) project_file = project_root / args_project_file # Ensure the path is normalized and absolute diff --git a/src/serena/constants.py b/src/serena/constants.py index b4bb586..9e0980f 100644 --- a/src/serena/constants.py +++ b/src/serena/constants.py @@ -7,6 +7,8 @@ REPO_ROOT = str(_repo_root_path) PROMPT_TEMPLATES_DIR = str(_serena_pkg_path / "resources" / "config" / "prompt_templates") CONTEXT_YAMLS_DIR = str(_serena_pkg_path / "resources" / "config" / "contexts") MODE_YAMLS_DIR = str(_serena_pkg_path / "resources" / "config" / "modes") +SERENA_DASHBOARD_DIR = str(_serena_pkg_path / "resources" / "dashboard") +SERENA_ICON_DIR = str(_serena_pkg_path / "resources" / "icons") SERENA_MANAGED_DIR_NAME = ".serena" diff --git a/src/serena/dashboard.py b/src/serena/dashboard.py index d52040b..4b0419a 100644 --- a/src/serena/dashboard.py +++ b/src/serena/dashboard.py @@ -10,7 +10,7 @@ from fastapi.staticfiles import StaticFiles from pydantic import BaseModel from sensai.util import logging -from serena import serena_root_path +from serena.constants import SERENA_DASHBOARD_DIR log = logging.getLogger(__name__) @@ -75,8 +75,7 @@ class SerenaDashboardAPI: self._setup_routes() def _setup_routes(self) -> None: - static_dir = os.path.join(serena_root_path(), "dashboard") - self._app.mount("/dashboard", StaticFiles(directory=static_dir), name="dashboard") + self._app.mount("/dashboard", StaticFiles(directory=SERENA_DASHBOARD_DIR), name="dashboard") self._app.add_api_route("/get_log_messages", self._get_log_messages, methods=["POST"], response_model=ResponseLog) self._app.add_api_route("/get_tool_names", self._get_tool_names, methods=["GET"], response_model=ResponseToolNames) diff --git a/dashboard/dashboard.js b/src/serena/resources/dashboard/dashboard.js similarity index 100% rename from dashboard/dashboard.js rename to src/serena/resources/dashboard/dashboard.js diff --git a/dashboard/index.html b/src/serena/resources/dashboard/index.html similarity index 100% rename from dashboard/index.html rename to src/serena/resources/dashboard/index.html diff --git a/dashboard/jquery.min.js b/src/serena/resources/dashboard/jquery.min.js similarity index 100% rename from dashboard/jquery.min.js rename to src/serena/resources/dashboard/jquery.min.js diff --git a/dashboard/serena-icon-16.png b/src/serena/resources/dashboard/serena-icon-16.png similarity index 100% rename from dashboard/serena-icon-16.png rename to src/serena/resources/dashboard/serena-icon-16.png diff --git a/dashboard/serena-icon-32.png b/src/serena/resources/dashboard/serena-icon-32.png similarity index 100% rename from dashboard/serena-icon-32.png rename to src/serena/resources/dashboard/serena-icon-32.png diff --git a/dashboard/serena-icon-48.png b/src/serena/resources/dashboard/serena-icon-48.png similarity index 100% rename from dashboard/serena-icon-48.png rename to src/serena/resources/dashboard/serena-icon-48.png diff --git a/dashboard/serena-logs.png b/src/serena/resources/dashboard/serena-logs.png similarity index 100% rename from dashboard/serena-logs.png rename to src/serena/resources/dashboard/serena-logs.png