diff --git a/surfsense_backend/app/agents/multi_agent_chat/main_agent/graph/compile_graph_sync.py b/surfsense_backend/app/agents/multi_agent_chat/main_agent/graph/compile_graph_sync.py index 2acbe0314..b28471497 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/main_agent/graph/compile_graph_sync.py +++ b/surfsense_backend/app/agents/multi_agent_chat/main_agent/graph/compile_graph_sync.py @@ -16,7 +16,7 @@ from app.agents.multi_agent_chat.middleware.stack import ( ) from app.agents.shared.context import SurfSenseContextSchema from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.db import ChatVisibility diff --git a/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/agent_cache.py b/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/agent_cache.py index ac950b3de..dac8c0631 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/agent_cache.py +++ b/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/agent_cache.py @@ -18,7 +18,7 @@ from app.agents.new_chat.agent_cache import ( tools_signature, ) from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.db import ChatVisibility from ..graph.compile_graph_sync import build_compiled_agent_graph_sync diff --git a/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/factory.py b/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/factory.py index caafe4e5d..63c2fc799 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/factory.py +++ b/surfsense_backend/app/agents/multi_agent_chat/main_agent/runtime/factory.py @@ -24,7 +24,7 @@ from app.agents.new_chat.connector_searchable_types import ( ) from app.agents.shared.feature_flags import AgentFeatureFlags, get_flags from app.agents.new_chat.filesystem_backends import build_backend_resolver -from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.llm_config import AgentConfig from app.agents.new_chat.prompt_caching import apply_litellm_prompt_caching from app.agents.new_chat.tools.invalid_tool import INVALID_TOOL_NAME, invalid_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/anonymous_doc.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/anonymous_doc.py index afd54a2d3..1361bde20 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/anonymous_doc.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/anonymous_doc.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware import AnonymousDocumentMiddleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/kb_persistence.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/kb_persistence.py index 4b27581e7..afe72347b 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/kb_persistence.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/kb_persistence.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware import KnowledgeBasePersistenceMiddleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_priority.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_priority.py index 27cee8b37..2e5d90a62 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_priority.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_priority.py @@ -4,7 +4,7 @@ from __future__ import annotations from langchain_core.language_models import BaseChatModel -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware import KnowledgePriorityMiddleware from app.services.llm_service import get_planner_llm diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_tree.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_tree.py index fb4511067..965a7e744 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_tree.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/knowledge_tree.py @@ -4,7 +4,7 @@ from __future__ import annotations from langchain_core.language_models import BaseChatModel -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware import KnowledgeTreeMiddleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/skills.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/skills.py index 71aa952fb..c13a37d6e 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/skills.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/main_agent/skills.py @@ -7,7 +7,7 @@ import logging from deepagents.middleware.skills import SkillsMiddleware from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware import ( build_skills_backend_factory, default_skills_sources, diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/index.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/index.py index fb8dbe209..8c9c2227e 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/index.py @@ -4,7 +4,7 @@ from __future__ import annotations from typing import Any -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from .middleware import SurfSenseFilesystemMiddleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/middleware.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/middleware.py index c32e14438..21f6e236f 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/middleware.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/middleware.py @@ -7,7 +7,7 @@ from typing import Any from deepagents import FilesystemMiddleware from langchain_core.tools import BaseTool -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.sandbox import is_sandbox_enabled diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/mode.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/mode.py index a23d77535..e5d49ca8e 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/mode.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/mode.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.path_resolver import DOCUMENTS_ROOT diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/path_resolution.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/path_resolution.py index 2c8ec6b4d..a45bce8c4 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/path_resolution.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/middleware/path_resolution.py @@ -7,7 +7,7 @@ from typing import TYPE_CHECKING from langchain.tools import ToolRuntime -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.middleware.multi_root_local_folder_backend import ( MultiRootLocalFolderBackend, diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/system_prompt/index.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/system_prompt/index.py index 9d3cdbae3..85606051c 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/system_prompt/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/system_prompt/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from .cloud import BODY as CLOUD_BODY from .common import HEADER, SANDBOX_ADDENDUM diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/cd/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/cd/description.py index 6d7b987c8..b0b45f42b 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/cd/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/cd/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _DESCRIPTION = """Changes the current working directory (cwd). diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/edit_file/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/edit_file/description.py index de2a47648..4cb6c9c60 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/edit_file/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/edit_file/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Performs exact string replacements in files. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/execute_code/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/execute_code/description.py index 89415c2f3..eaff98194 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/execute_code/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/execute_code/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _DESCRIPTION = """Executes Python code in an isolated sandbox environment. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/glob/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/glob/description.py index d022f9a7a..c46553313 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/glob/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/glob/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _DESCRIPTION = """Find files matching a glob pattern. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/grep/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/grep/description.py index 5d7c393a9..769aed80b 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/grep/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/grep/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Search for a literal text pattern across files. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/list_tree/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/list_tree/description.py index a24230fb0..75c9314aa 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/list_tree/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/list_tree/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Lists files/folders recursively in a single bounded call. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/ls/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/ls/description.py index 8c7e301dc..bdd2f666e 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/ls/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/ls/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Lists files and directories at the given path. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/mkdir/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/mkdir/description.py index 1c86e72f7..94d9e5763 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/mkdir/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/mkdir/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Creates a directory under `/documents/`. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/move_file/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/move_file/description.py index fdba40b29..a4dc61743 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/move_file/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/move_file/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Moves or renames a file or folder. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/pwd/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/pwd/description.py index 594a38843..62e568dcb 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/pwd/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/pwd/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _DESCRIPTION = """Prints the current working directory.""" diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/read_file/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/read_file/description.py index 9b5d7623f..8bf8af588 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/read_file/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/read_file/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _DESCRIPTION = """Reads a file from the filesystem. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rm/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rm/description.py index a9e120e7c..ffa33e778 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rm/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rm/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Deletes a single file under `/documents/`. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rmdir/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rmdir/description.py index 2b72f815b..d119c2f55 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rmdir/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/rmdir/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Deletes an empty directory under `/documents/`. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/write_file/description.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/write_file/description.py index 223cc3f26..60e88a9a1 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/write_file/description.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/filesystem/tools/write_file/description.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode _CLOUD_DESCRIPTION = """Writes a new text file to the workspace. diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/stack.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/stack.py index 51e00e954..d9753f3a3 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/stack.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/stack.py @@ -32,7 +32,7 @@ from app.agents.multi_agent_chat.subagents.builtins.knowledge_base.ask_knowledge build_ask_knowledge_base_tool, ) from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.db import ChatVisibility from .main_agent.action_log import build_action_log_mw diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/agent.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/agent.py index c6a0220ec..f08cea5fa 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/agent.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/agent.py @@ -14,7 +14,7 @@ from langchain_core.language_models import BaseChatModel from langchain_core.tools import BaseTool from app.agents.multi_agent_chat.subagents.shared.spec import SurfSenseSubagentSpec -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.permissions import Rule, Ruleset from .middleware_stack import build_kb_middleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/middleware_stack.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/middleware_stack.py index c6cfc212c..04d5c1376 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/middleware_stack.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/middleware_stack.py @@ -29,7 +29,7 @@ from app.agents.multi_agent_chat.middleware.shared.permissions import ( build_permission_mw, ) from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.permissions import Ruleset diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/prompts.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/prompts.py index 617bb2a85..92c5a6a7c 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/prompts.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/knowledge_base/prompts.py @@ -3,7 +3,7 @@ from __future__ import annotations from app.agents.multi_agent_chat.subagents.shared.md_file_reader import read_md_file -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode def load_system_prompt(filesystem_mode: FilesystemMode) -> str: diff --git a/surfsense_backend/app/agents/new_chat/filesystem_backends.py b/surfsense_backend/app/agents/new_chat/filesystem_backends.py index c8288be71..781266a00 100644 --- a/surfsense_backend/app/agents/new_chat/filesystem_backends.py +++ b/surfsense_backend/app/agents/new_chat/filesystem_backends.py @@ -9,7 +9,7 @@ from deepagents.backends.protocol import BackendProtocol from deepagents.backends.state import StateBackend from langgraph.prebuilt.tool_node import ToolRuntime -from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.middleware.kb_postgres_backend import KBPostgresBackend from app.agents.new_chat.middleware.multi_root_local_folder_backend import ( MultiRootLocalFolderBackend, diff --git a/surfsense_backend/app/agents/new_chat/filesystem_selection.py b/surfsense_backend/app/agents/new_chat/filesystem_selection.py index bf0497d26..32ea3d4dc 100644 --- a/surfsense_backend/app/agents/new_chat/filesystem_selection.py +++ b/surfsense_backend/app/agents/new_chat/filesystem_selection.py @@ -1,41 +1,24 @@ -"""Filesystem mode contracts and selection helpers for chat sessions.""" +"""Backward-compatible shim. + +The filesystem mode contracts moved to :mod:`app.agents.shared.filesystem_selection` +as part of promoting the shared agent toolkit out of ``new_chat`` into the +cross-agent kernel. Import from there directly; this re-export keeps the +not-yet-retired single-agent stack working during the migration and will be +removed with it. +""" from __future__ import annotations -from dataclasses import dataclass -from enum import StrEnum +from app.agents.shared.filesystem_selection import ( + ClientPlatform, + FilesystemMode, + FilesystemSelection, + LocalFilesystemMount, +) - -class FilesystemMode(StrEnum): - """Supported filesystem backends for agent tool execution.""" - - CLOUD = "cloud" - DESKTOP_LOCAL_FOLDER = "desktop_local_folder" - - -class ClientPlatform(StrEnum): - """Client runtime reported by the caller.""" - - WEB = "web" - DESKTOP = "desktop" - - -@dataclass(slots=True) -class LocalFilesystemMount: - """Canonical mount mapping provided by desktop runtime.""" - - mount_id: str - root_path: str - - -@dataclass(slots=True) -class FilesystemSelection: - """Resolved filesystem selection for a single chat request.""" - - mode: FilesystemMode = FilesystemMode.CLOUD - client_platform: ClientPlatform = ClientPlatform.WEB - local_mounts: tuple[LocalFilesystemMount, ...] = () - - @property - def is_local_mode(self) -> bool: - return self.mode == FilesystemMode.DESKTOP_LOCAL_FOLDER +__all__ = [ + "ClientPlatform", + "FilesystemMode", + "FilesystemSelection", + "LocalFilesystemMount", +] diff --git a/surfsense_backend/app/agents/new_chat/middleware/filesystem.py b/surfsense_backend/app/agents/new_chat/middleware/filesystem.py index 7987ec466..b3801c50e 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/filesystem.py +++ b/surfsense_backend/app/agents/new_chat/middleware/filesystem.py @@ -46,7 +46,7 @@ from langchain_core.messages import ToolMessage from langchain_core.tools import BaseTool, StructuredTool from langgraph.types import Command -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.middleware.kb_postgres_backend import ( KBPostgresBackend, diff --git a/surfsense_backend/app/agents/new_chat/middleware/kb_persistence.py b/surfsense_backend/app/agents/new_chat/middleware/kb_persistence.py index 5e45882de..0e3458980 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/kb_persistence.py +++ b/surfsense_backend/app/agents/new_chat/middleware/kb_persistence.py @@ -46,7 +46,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession from app.agents.shared.feature_flags import get_flags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.path_resolver import ( DOCUMENTS_ROOT, diff --git a/surfsense_backend/app/agents/new_chat/middleware/knowledge_search.py b/surfsense_backend/app/agents/new_chat/middleware/knowledge_search.py index 967e8247b..aff8fa4ce 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/knowledge_search.py +++ b/surfsense_backend/app/agents/new_chat/middleware/knowledge_search.py @@ -42,7 +42,7 @@ from pydantic import BaseModel, Field, ValidationError from sqlalchemy import select from app.agents.shared.feature_flags import get_flags -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.path_resolver import ( PathIndex, diff --git a/surfsense_backend/app/agents/new_chat/middleware/knowledge_tree.py b/surfsense_backend/app/agents/new_chat/middleware/knowledge_tree.py index 6bd6430d1..fe69f2bc3 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/knowledge_tree.py +++ b/surfsense_backend/app/agents/new_chat/middleware/knowledge_tree.py @@ -33,7 +33,7 @@ from langchain_core.messages import SystemMessage from langgraph.runtime import Runtime from sqlalchemy import select -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.filesystem_state import SurfSenseFilesystemState from app.agents.new_chat.path_resolver import ( DOCUMENTS_ROOT, diff --git a/surfsense_backend/app/agents/shared/filesystem_selection.py b/surfsense_backend/app/agents/shared/filesystem_selection.py new file mode 100644 index 000000000..bf0497d26 --- /dev/null +++ b/surfsense_backend/app/agents/shared/filesystem_selection.py @@ -0,0 +1,41 @@ +"""Filesystem mode contracts and selection helpers for chat sessions.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import StrEnum + + +class FilesystemMode(StrEnum): + """Supported filesystem backends for agent tool execution.""" + + CLOUD = "cloud" + DESKTOP_LOCAL_FOLDER = "desktop_local_folder" + + +class ClientPlatform(StrEnum): + """Client runtime reported by the caller.""" + + WEB = "web" + DESKTOP = "desktop" + + +@dataclass(slots=True) +class LocalFilesystemMount: + """Canonical mount mapping provided by desktop runtime.""" + + mount_id: str + root_path: str + + +@dataclass(slots=True) +class FilesystemSelection: + """Resolved filesystem selection for a single chat request.""" + + mode: FilesystemMode = FilesystemMode.CLOUD + client_platform: ClientPlatform = ClientPlatform.WEB + local_mounts: tuple[LocalFilesystemMount, ...] = () + + @property + def is_local_mode(self) -> bool: + return self.mode == FilesystemMode.DESKTOP_LOCAL_FOLDER diff --git a/surfsense_backend/app/routes/new_chat_routes.py b/surfsense_backend/app/routes/new_chat_routes.py index 63b7732a9..4fd2712d9 100644 --- a/surfsense_backend/app/routes/new_chat_routes.py +++ b/surfsense_backend/app/routes/new_chat_routes.py @@ -24,7 +24,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from sqlalchemy.orm import selectinload -from app.agents.new_chat.filesystem_selection import ( +from app.agents.shared.filesystem_selection import ( ClientPlatform, FilesystemMode, FilesystemSelection, diff --git a/surfsense_backend/app/tasks/chat/stream_new_chat.py b/surfsense_backend/app/tasks/chat/stream_new_chat.py index 25d85258e..97243ef60 100644 --- a/surfsense_backend/app/tasks/chat/stream_new_chat.py +++ b/surfsense_backend/app/tasks/chat/stream_new_chat.py @@ -31,7 +31,7 @@ from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent from app.agents.new_chat.checkpointer import get_checkpointer from app.agents.shared.context import SurfSenseContextSchema from app.agents.shared.errors import BusyError -from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.llm_config import ( AgentConfig, create_chat_litellm_from_agent_config, diff --git a/surfsense_backend/app/tasks/chat/streaming/agent/builder.py b/surfsense_backend/app/tasks/chat/streaming/agent/builder.py index 0db42edbf..313e87058 100644 --- a/surfsense_backend/app/tasks/chat/streaming/agent/builder.py +++ b/surfsense_backend/app/tasks/chat/streaming/agent/builder.py @@ -9,7 +9,7 @@ from __future__ import annotations from typing import Any -from app.agents.new_chat.filesystem_selection import FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemSelection from app.agents.new_chat.llm_config import AgentConfig from app.db import ChatVisibility from app.services.connector_service import ConnectorService diff --git a/surfsense_backend/app/tasks/chat/streaming/agent/event_loop.py b/surfsense_backend/app/tasks/chat/streaming/agent/event_loop.py index b77bd3890..4cba8fdad 100644 --- a/surfsense_backend/app/tasks/chat/streaming/agent/event_loop.py +++ b/surfsense_backend/app/tasks/chat/streaming/agent/event_loop.py @@ -11,7 +11,7 @@ from __future__ import annotations from collections.abc import AsyncGenerator from typing import Any -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware.kb_persistence import ( commit_staged_filesystem_state, ) diff --git a/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/input_state.py b/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/input_state.py index b5187190d..61371d62b 100644 --- a/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/input_state.py +++ b/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/input_state.py @@ -28,7 +28,7 @@ from langchain_core.messages import HumanMessage from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.mention_resolver import resolve_mentions, substitute_in_text from app.db import ( ChatVisibility, diff --git a/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/orchestrator.py b/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/orchestrator.py index f1cdfa186..b5afc8371 100644 --- a/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/orchestrator.py +++ b/surfsense_backend/app/tasks/chat/streaming/flows/new_chat/orchestrator.py @@ -31,7 +31,7 @@ import anyio from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent -from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.middleware.busy_mutex import end_turn from app.config import config as _app_config from app.db import ChatVisibility, async_session_maker diff --git a/surfsense_backend/app/tasks/chat/streaming/flows/resume_chat/orchestrator.py b/surfsense_backend/app/tasks/chat/streaming/flows/resume_chat/orchestrator.py index e1b95aa63..ff5f5c2f5 100644 --- a/surfsense_backend/app/tasks/chat/streaming/flows/resume_chat/orchestrator.py +++ b/surfsense_backend/app/tasks/chat/streaming/flows/resume_chat/orchestrator.py @@ -25,7 +25,7 @@ import anyio from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent -from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection +from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.middleware.busy_mutex import end_turn from app.config import config as _app_config from app.db import ChatVisibility, async_session_maker diff --git a/surfsense_backend/app/tasks/chat/streaming/flows/shared/stream_loop.py b/surfsense_backend/app/tasks/chat/streaming/flows/shared/stream_loop.py index 6cf0df855..8161bc433 100644 --- a/surfsense_backend/app/tasks/chat/streaming/flows/shared/stream_loop.py +++ b/surfsense_backend/app/tasks/chat/streaming/flows/shared/stream_loop.py @@ -15,7 +15,7 @@ from __future__ import annotations from collections.abc import AsyncGenerator, Awaitable, Callable from typing import Any -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.services.new_streaming_service import VercelStreamingService from app.tasks.chat.streaming.agent.event_loop import stream_agent_events from app.tasks.chat.streaming.shared.stream_result import StreamResult diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_rm_rmdir_cloud.py b/surfsense_backend/tests/unit/agents/new_chat/test_rm_rmdir_cloud.py index 7cabb6524..aa08ab59f 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_rm_rmdir_cloud.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_rm_rmdir_cloud.py @@ -20,7 +20,7 @@ from unittest.mock import AsyncMock import pytest -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware.filesystem import SurfSenseFilesystemMiddleware from app.agents.new_chat.middleware.kb_postgres_backend import KBPostgresBackend diff --git a/surfsense_backend/tests/unit/middleware/test_filesystem_backends.py b/surfsense_backend/tests/unit/middleware/test_filesystem_backends.py index c71b5efde..db16342f6 100644 --- a/surfsense_backend/tests/unit/middleware/test_filesystem_backends.py +++ b/surfsense_backend/tests/unit/middleware/test_filesystem_backends.py @@ -3,7 +3,7 @@ from pathlib import Path import pytest from app.agents.new_chat.filesystem_backends import build_backend_resolver -from app.agents.new_chat.filesystem_selection import ( +from app.agents.shared.filesystem_selection import ( ClientPlatform, FilesystemMode, FilesystemSelection, diff --git a/surfsense_backend/tests/unit/middleware/test_filesystem_middleware.py b/surfsense_backend/tests/unit/middleware/test_filesystem_middleware.py index 70430f4ca..7b53948b3 100644 --- a/surfsense_backend/tests/unit/middleware/test_filesystem_middleware.py +++ b/surfsense_backend/tests/unit/middleware/test_filesystem_middleware.py @@ -18,7 +18,7 @@ from types import SimpleNamespace import pytest -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware.filesystem import ( SurfSenseFilesystemMiddleware, _build_filesystem_system_prompt, diff --git a/surfsense_backend/tests/unit/middleware/test_filesystem_verification.py b/surfsense_backend/tests/unit/middleware/test_filesystem_verification.py index 81cf590d3..889683fd2 100644 --- a/surfsense_backend/tests/unit/middleware/test_filesystem_verification.py +++ b/surfsense_backend/tests/unit/middleware/test_filesystem_verification.py @@ -2,7 +2,7 @@ from pathlib import Path import pytest -from app.agents.new_chat.filesystem_selection import FilesystemMode +from app.agents.shared.filesystem_selection import FilesystemMode from app.agents.new_chat.middleware.filesystem import SurfSenseFilesystemMiddleware from app.agents.new_chat.middleware.multi_root_local_folder_backend import ( MultiRootLocalFolderBackend, diff --git a/surfsense_backend/tests/unit/tasks/chat/streaming/test_parallel_refactor_parity.py b/surfsense_backend/tests/unit/tasks/chat/streaming/test_parallel_refactor_parity.py index 77846444a..3a9a834f9 100644 --- a/surfsense_backend/tests/unit/tasks/chat/streaming/test_parallel_refactor_parity.py +++ b/surfsense_backend/tests/unit/tasks/chat/streaming/test_parallel_refactor_parity.py @@ -97,7 +97,7 @@ def _normalize_annotation(ann: Any) -> str: raw.replace("typing.", "") .replace("collections.abc.", "") .replace("app.db.", "") - .replace("app.agents.new_chat.filesystem_selection.", "") + .replace("app.agents.shared.filesystem_selection.", "") .replace("app.agents.shared.context.", "") ) # Unwrap ```` → ``int`` (legacy-side type objects).