Source code for serena.tools.config_tools

from sensai.util.helper import mark_used

from serena.tools import Tool, ToolMarkerDoesNotRequireActiveProject, ToolMarkerOptional


[docs] class OpenDashboardTool(Tool, ToolMarkerOptional, ToolMarkerDoesNotRequireActiveProject): """ Opens the Serena web dashboard in the default web browser. The dashboard provides logs, session information, and tool usage statistics. """
[docs] def apply(self) -> str: """ Opens the Serena web dashboard in the default web browser. """ if self.agent.open_dashboard(): return f"Serena web dashboard has been opened in the user's default web browser: {self.agent.get_dashboard_url()}" else: return f"Serena web dashboard could not be opened automatically; tell the user to open it via {self.agent.get_dashboard_url()}"
[docs] class ActivateProjectTool(Tool, ToolMarkerDoesNotRequireActiveProject): """ Activates a project based on the project name or path. """ # noinspection PyIncorrectDocstring # (session_id is injected via apply_ex)
[docs] def apply(self, project: str, session_id: str) -> str: """ Activates the project with the given name or path. :param project: the name of a registered project to activate or a path to a project directory """ is_new_activation = self.agent.activate_project_from_path_or_name(project) mark_used(is_new_activation) result = self.agent.get_project_activation_message(session_id) result += "\nIMPORTANT: If you have not yet read the 'Serena Instructions Manual', do it now before continuing!" return result
[docs] class RemoveProjectTool(Tool, ToolMarkerDoesNotRequireActiveProject, ToolMarkerOptional): """ Removes a project from the Serena configuration. """
[docs] def apply(self, project_name: str) -> str: """ Removes a project from the Serena configuration. :param project_name: Name of the project to remove """ self.agent.serena_config.remove_project(project_name) return f"Successfully removed project '{project_name}' from configuration."
[docs] class GetCurrentConfigTool(Tool): """ Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes. """
[docs] def apply(self) -> str: """ Print the current configuration of the agent, including the active and available projects, tools, contexts, and modes. """ return self.agent.get_current_config_overview()