diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/deny.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/deny.py index 196c4040e..ed5c872b3 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/deny.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/deny.py @@ -11,7 +11,7 @@ from typing import Any from langchain_core.messages import ToolMessage -from app.agents.new_chat.errors import StreamingError +from app.agents.shared.errors import StreamingError from app.agents.new_chat.permissions import Rule diff --git a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/middleware/core.py b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/middleware/core.py index d2950c5b4..0bf93189a 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/middleware/core.py +++ b/surfsense_backend/app/agents/multi_agent_chat/middleware/shared/permissions/middleware/core.py @@ -26,7 +26,7 @@ from langchain_core.messages import AIMessage, ToolMessage from langchain_core.tools import BaseTool from langgraph.runtime import Runtime -from app.agents.new_chat.errors import CorrectedError, RejectedError +from app.agents.shared.errors import CorrectedError, RejectedError from app.agents.new_chat.permissions import Ruleset from app.services.user_tool_allowlist import TrustedToolSaver diff --git a/surfsense_backend/app/agents/new_chat/middleware/busy_mutex.py b/surfsense_backend/app/agents/new_chat/middleware/busy_mutex.py index e7d9b8f75..559047634 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/busy_mutex.py +++ b/surfsense_backend/app/agents/new_chat/middleware/busy_mutex.py @@ -20,7 +20,7 @@ What this provides: tools can poll to abort cooperatively. The event is reset between turns. Tools should check ``runtime.context.cancel_event.is_set()`` in tight inner loops. -- A typed :class:`~app.agents.new_chat.errors.BusyError` raised when a +- A typed :class:`~app.agents.shared.errors.BusyError` raised when a second turn arrives while the lock is held. Note: SurfSense's ``stream_new_chat`` is the call site that should @@ -46,7 +46,7 @@ from langchain.agents.middleware.types import ( from langgraph.config import get_config from langgraph.runtime import Runtime -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError logger = logging.getLogger(__name__) diff --git a/surfsense_backend/app/agents/new_chat/middleware/permission.py b/surfsense_backend/app/agents/new_chat/middleware/permission.py index 07549bedb..8545b69c9 100644 --- a/surfsense_backend/app/agents/new_chat/middleware/permission.py +++ b/surfsense_backend/app/agents/new_chat/middleware/permission.py @@ -50,7 +50,7 @@ from langchain_core.messages import AIMessage, ToolMessage from langgraph.runtime import Runtime from langgraph.types import interrupt -from app.agents.new_chat.errors import ( +from app.agents.shared.errors import ( CorrectedError, RejectedError, StreamingError, diff --git a/surfsense_backend/app/agents/new_chat/errors.py b/surfsense_backend/app/agents/shared/errors.py similarity index 100% rename from surfsense_backend/app/agents/new_chat/errors.py rename to surfsense_backend/app/agents/shared/errors.py diff --git a/surfsense_backend/app/tasks/chat/stream_new_chat.py b/surfsense_backend/app/tasks/chat/stream_new_chat.py index e150cf494..5c0d6921b 100644 --- a/surfsense_backend/app/tasks/chat/stream_new_chat.py +++ b/surfsense_backend/app/tasks/chat/stream_new_chat.py @@ -30,7 +30,7 @@ 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.checkpointer import get_checkpointer from app.agents.new_chat.context import SurfSenseContextSchema -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.agents.new_chat.filesystem_selection import FilesystemMode, FilesystemSelection from app.agents.new_chat.llm_config import ( AgentConfig, diff --git a/surfsense_backend/app/tasks/chat/streaming/errors/classifier.py b/surfsense_backend/app/tasks/chat/streaming/errors/classifier.py index 3af2b9f9f..a95a104b2 100644 --- a/surfsense_backend/app/tasks/chat/streaming/errors/classifier.py +++ b/surfsense_backend/app/tasks/chat/streaming/errors/classifier.py @@ -7,7 +7,7 @@ import logging import time from typing import Any, Literal -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.agents.new_chat.middleware.busy_mutex import ( get_cancel_state, is_cancel_requested, diff --git a/surfsense_backend/app/tasks/chat/streaming/flows/shared/terminal_error.py b/surfsense_backend/app/tasks/chat/streaming/flows/shared/terminal_error.py index b305dba23..ca8cf49eb 100644 --- a/surfsense_backend/app/tasks/chat/streaming/flows/shared/terminal_error.py +++ b/surfsense_backend/app/tasks/chat/streaming/flows/shared/terminal_error.py @@ -14,7 +14,7 @@ import traceback from collections.abc import Iterator from typing import Any, Literal -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.observability import metrics as ot_metrics, otel as ot from app.services.new_streaming_service import VercelStreamingService from app.tasks.chat.streaming.errors.classifier import classify_stream_exception diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_busy_mutex.py b/surfsense_backend/tests/unit/agents/new_chat/test_busy_mutex.py index f0161f605..0c5f41bfd 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_busy_mutex.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_busy_mutex.py @@ -4,7 +4,7 @@ from __future__ import annotations import pytest -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.agents.new_chat.middleware.busy_mutex import ( BusyMutexMiddleware, end_turn, diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_desktop_safety_rules.py b/surfsense_backend/tests/unit/agents/new_chat/test_desktop_safety_rules.py index 653175eab..d7b410aa6 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_desktop_safety_rules.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_desktop_safety_rules.py @@ -93,7 +93,7 @@ class TestPermissionMiddlewareIntegration: def test_middleware_raises_interrupt_for_rm_in_desktop_mode(self) -> None: from langchain_core.messages import AIMessage - from app.agents.new_chat.errors import RejectedError + from app.agents.shared.errors import RejectedError mw = PermissionMiddleware(rulesets=[SURFSENSE_DEFAULTS, DESKTOP_SAFETY_RULESET]) # Stub the interrupt to a "reject" decision so we can assert the diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py b/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py index 68db11ba6..146e31763 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_permission_middleware.py @@ -5,7 +5,7 @@ from __future__ import annotations import pytest from langchain_core.messages import AIMessage, ToolMessage -from app.agents.new_chat.errors import CorrectedError, RejectedError +from app.agents.shared.errors import CorrectedError, RejectedError from app.agents.new_chat.middleware.permission import ( PermissionMiddleware, _normalize_permission_decision, diff --git a/surfsense_backend/tests/unit/tasks/chat/streaming/test_stage_1_parity.py b/surfsense_backend/tests/unit/tasks/chat/streaming/test_stage_1_parity.py index 8fde773e3..20e421eb5 100644 --- a/surfsense_backend/tests/unit/tasks/chat/streaming/test_stage_1_parity.py +++ b/surfsense_backend/tests/unit/tasks/chat/streaming/test_stage_1_parity.py @@ -16,7 +16,7 @@ from typing import Any import pytest -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.agents.new_chat.middleware.busy_mutex import request_cancel, reset_cancel from app.tasks.chat.stream_new_chat import ( _classify_stream_exception as old_classify, diff --git a/surfsense_backend/tests/unit/test_stream_new_chat_contract.py b/surfsense_backend/tests/unit/test_stream_new_chat_contract.py index 19b06201f..794db41a7 100644 --- a/surfsense_backend/tests/unit/test_stream_new_chat_contract.py +++ b/surfsense_backend/tests/unit/test_stream_new_chat_contract.py @@ -7,7 +7,7 @@ from pathlib import Path import pytest import app.tasks.chat.stream_new_chat as stream_new_chat_module -from app.agents.new_chat.errors import BusyError +from app.agents.shared.errors import BusyError from app.agents.new_chat.middleware.busy_mutex import request_cancel, reset_cancel from app.tasks.chat.stream_new_chat import ( StreamResult,