diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/payload.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/payload.py index dd9217e80..89f91b6df 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/payload.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/payload.py @@ -6,6 +6,7 @@ from typing import Any from langchain_core.tools import BaseTool +from app.agents.multi_agent_chat.shared.permissions import Rule from app.agents.multi_agent_chat.subagents.shared.hitl.wire import ( LC_DECISION_APPROVE, LC_DECISION_EDIT, @@ -13,7 +14,6 @@ from app.agents.multi_agent_chat.subagents.shared.hitl.wire import ( SURFSENSE_DECISION_APPROVE_ALWAYS, build_lc_hitl_payload, ) -from app.agents.shared.permissions import Rule PERMISSION_ASK_INTERRUPT_TYPE = "permission_ask" diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/request.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/request.py index c3c5ddd7f..c63d10a20 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/request.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/ask/request.py @@ -16,7 +16,7 @@ from typing import Any from langchain_core.tools import BaseTool from langgraph.types import interrupt -from app.agents.shared.permissions import Rule +from app.agents.multi_agent_chat.shared.permissions import Rule from app.observability import metrics as ot_metrics, otel as ot from .decision import normalize_permission_decision diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/deny.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/deny.py index 05f7236cf..f636e2fad 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/deny.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/deny.py @@ -11,8 +11,8 @@ from typing import Any from langchain_core.messages import ToolMessage +from app.agents.multi_agent_chat.shared.permissions import Rule from app.agents.shared.errors import StreamingError -from app.agents.shared.permissions import Rule def build_deny_message(tool_call: dict[str, Any], rule: Rule) -> ToolMessage: diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/core.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/core.py index 06bf756ef..7658013b1 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/core.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/core.py @@ -26,8 +26,8 @@ from langchain_core.messages import AIMessage, ToolMessage from langchain_core.tools import BaseTool from langgraph.runtime import Runtime +from app.agents.multi_agent_chat.shared.permissions import Ruleset from app.agents.shared.errors import CorrectedError, RejectedError -from app.agents.shared.permissions import Ruleset from app.services.user_tool_allowlist import TrustedToolSaver from ..ask.edit import merge_edited_args diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/evaluation.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/evaluation.py index 138bf810d..7ed2c0289 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/evaluation.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/evaluation.py @@ -16,7 +16,7 @@ from __future__ import annotations import logging from typing import Any -from app.agents.shared.permissions import ( +from app.agents.multi_agent_chat.shared.permissions import ( Rule, RuleAction, Ruleset, diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/factory.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/factory.py index a115ad1f7..ff2ca620a 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/factory.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/factory.py @@ -27,8 +27,8 @@ from collections.abc import Sequence from langchain_core.tools import BaseTool +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.shared.permissions import Rule, Ruleset from app.services.user_tool_allowlist import TrustedToolSaver from .core import PermissionMiddleware diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/ruleset_view.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/ruleset_view.py index 210574243..713d23da1 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/ruleset_view.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/ruleset_view.py @@ -9,7 +9,11 @@ newly-promoted rules apply to subsequent calls. from __future__ import annotations -from app.agents.shared.permissions import Ruleset, aggregate_action, evaluate_many +from app.agents.multi_agent_chat.shared.permissions import ( + Ruleset, + aggregate_action, + evaluate_many, +) def all_rulesets( diff --git a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/runtime_promote.py b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/runtime_promote.py index df9220241..b5b0d9c6f 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/runtime_promote.py +++ b/surfsense_backend/app/agents/multi_agent_chat/shared/middleware/permissions/middleware/runtime_promote.py @@ -7,7 +7,7 @@ is the streaming layer's job — this module keeps the in-memory copy only. from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset def persist_always( diff --git a/surfsense_backend/app/agents/shared/permissions.py b/surfsense_backend/app/agents/multi_agent_chat/shared/permissions.py similarity index 100% rename from surfsense_backend/app/agents/shared/permissions.py rename to surfsense_backend/app/agents/multi_agent_chat/shared/permissions.py diff --git a/surfsense_backend/app/agents/shared/deliverable_wait.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/deliverable_wait.py similarity index 100% rename from surfsense_backend/app/agents/shared/deliverable_wait.py rename to surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/deliverable_wait.py diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/index.py index 60d711ab8..a23cc19e8 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .generate_image import create_generate_image_tool from .podcast import create_generate_podcast_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/podcast.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/podcast.py index ef4bdfc09..52a3393bb 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/podcast.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/podcast.py @@ -18,7 +18,9 @@ from sqlalchemy.ext.asyncio import AsyncSession from app.agents.multi_agent_chat.shared.receipts.command import with_receipt from app.agents.multi_agent_chat.shared.receipts.receipt import make_receipt -from app.agents.shared.deliverable_wait import wait_for_deliverable +from app.agents.multi_agent_chat.subagents.builtins.deliverables.deliverable_wait import ( + wait_for_deliverable, +) from app.db import Podcast, PodcastStatus, shielded_async_session logger = logging.getLogger(__name__) @@ -96,7 +98,7 @@ def create_generate_podcast_tool( # Wait until the Celery worker flips the row to a terminal # state. The wait is bounded only by the subagent invoke # timeout (multi-agent) or HTTP lifetime (single-agent) — - # see app.agents.shared.deliverable_wait for details. + # see app.agents.multi_agent_chat.subagents.builtins.deliverables.deliverable_wait for details. terminal_status, columns, elapsed = await wait_for_deliverable( model=Podcast, row_id=podcast_id, diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/video_presentation.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/video_presentation.py index a04413fd5..f6bb39c18 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/video_presentation.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/deliverables/tools/video_presentation.py @@ -19,7 +19,9 @@ from sqlalchemy.ext.asyncio import AsyncSession from app.agents.multi_agent_chat.shared.receipts.command import with_receipt from app.agents.multi_agent_chat.shared.receipts.receipt import make_receipt -from app.agents.shared.deliverable_wait import wait_for_deliverable +from app.agents.multi_agent_chat.subagents.builtins.deliverables.deliverable_wait import ( + wait_for_deliverable, +) from app.db import VideoPresentation, VideoPresentationStatus, shielded_async_session logger = logging.getLogger(__name__) @@ -83,7 +85,7 @@ def create_generate_video_presentation_tool( # Wait until the Celery worker flips the row to a terminal # state. The wait is bounded only by the subagent invoke # timeout (multi-agent) or HTTP lifetime (single-agent) — - # see app.agents.shared.deliverable_wait for details. + # see app.agents.multi_agent_chat.subagents.builtins.deliverables.deliverable_wait for details. terminal_status, _columns, elapsed = await wait_for_deliverable( model=VideoPresentation, row_id=video_pres_id, 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 a6e99bb08..fb7fb090a 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 @@ -13,9 +13,9 @@ from deepagents import SubAgent from langchain_core.language_models import BaseChatModel from langchain_core.tools import BaseTool +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.multi_agent_chat.subagents.shared.spec import SurfSenseSubagentSpec from app.agents.shared.filesystem_selection import FilesystemMode -from app.agents.shared.permissions import Rule, Ruleset from .middleware_stack import build_kb_middleware from .prompts import load_description, load_readonly_system_prompt, load_system_prompt 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 ad39d9868..d0647f92c 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 @@ -28,9 +28,9 @@ from app.agents.multi_agent_chat.shared.middleware.patch_tool_calls import ( from app.agents.multi_agent_chat.shared.middleware.permissions import ( build_permission_mw, ) +from app.agents.multi_agent_chat.shared.permissions import Ruleset from app.agents.shared.feature_flags import AgentFeatureFlags from app.agents.shared.filesystem_selection import FilesystemMode -from app.agents.shared.permissions import Ruleset def _kb_user_allowlist( diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/memory/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/memory/tools/index.py index e610db79b..d909f48f4 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/memory/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/memory/tools/index.py @@ -6,7 +6,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from app.db import ChatVisibility from .update_memory import create_update_memory_tool, create_update_team_memory_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/research/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/research/tools/index.py index bf99c2433..9cc5282eb 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/research/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/builtins/research/tools/index.py @@ -6,7 +6,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .scrape_webpage import create_scrape_webpage_tool from .web_search import create_web_search_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/airtable/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/airtable/tools/index.py index ebf71a640..49ec1996a 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/airtable/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/airtable/tools/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset NAME = "airtable" diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/calendar/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/calendar/tools/index.py index 251f05c9a..41aa177d2 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/calendar/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/calendar/tools/index.py @@ -10,7 +10,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_event import create_create_calendar_event_tool from .delete_event import create_delete_calendar_event_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/clickup/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/clickup/tools/index.py index 6d5a3dca2..7a192bfc0 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/clickup/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/clickup/tools/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset NAME = "clickup" diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/confluence/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/confluence/tools/index.py index cbe8f3274..4746bf63c 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/confluence/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/confluence/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_page import create_create_confluence_page_tool from .delete_page import create_delete_confluence_page_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/discord/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/discord/tools/index.py index dfb4754ee..260531c70 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/discord/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/discord/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .list_channels import create_list_discord_channels_tool from .read_messages import create_read_discord_messages_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/dropbox/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/dropbox/tools/index.py index 30dd835e0..eb97bde0f 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/dropbox/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/dropbox/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_file import create_create_dropbox_file_tool from .trash_file import create_delete_dropbox_file_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/tools/index.py index 3097287e5..864e03483 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/gmail/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_draft import create_create_gmail_draft_tool from .read_email import create_read_gmail_email_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/google_drive/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/google_drive/tools/index.py index 95b78d53c..07b57cf83 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/google_drive/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/google_drive/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_file import create_create_google_drive_file_tool from .trash_file import create_delete_google_drive_file_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/jira/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/jira/tools/index.py index 80b6c01ce..6accb99aa 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/jira/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/jira/tools/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset NAME = "jira" diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/linear/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/linear/tools/index.py index 5654e426f..002b650cd 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/linear/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/linear/tools/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset NAME = "linear" diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/luma/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/luma/tools/index.py index 9b6dfbc77..c9910bc8f 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/luma/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/luma/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_event import create_create_luma_event_tool from .list_events import create_list_luma_events_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/tools/index.py index b24ed6089..7d03fedb9 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/notion/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_page import create_create_notion_page_tool from .delete_page import create_delete_notion_page_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/onedrive/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/onedrive/tools/index.py index 396523cac..7848bbb03 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/onedrive/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/onedrive/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .create_file import create_create_onedrive_file_tool from .trash_file import create_delete_onedrive_file_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/slack/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/slack/tools/index.py index 2e4786b9f..ad95cb794 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/slack/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/slack/tools/index.py @@ -2,7 +2,7 @@ from __future__ import annotations -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset NAME = "slack" diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/teams/tools/index.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/teams/tools/index.py index 8879106a6..0516a2a19 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/teams/tools/index.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/connectors/teams/tools/index.py @@ -9,7 +9,7 @@ from typing import Any from langchain_core.tools import BaseTool -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset from .list_channels import create_list_teams_channels_tool from .read_messages import create_read_teams_messages_tool diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/spec.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/spec.py index 310ddd6ad..7cf9d5aba 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/spec.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/spec.py @@ -8,7 +8,7 @@ from typing import Any from deepagents import SubAgent -from app.agents.shared.permissions import Ruleset +from app.agents.multi_agent_chat.shared.permissions import Ruleset # A context-hint provider receives the parent-agent ``runtime.state`` mapping # and the ``description`` the orchestrator wrote, and returns a short string diff --git a/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/subagent_builder.py b/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/subagent_builder.py index 1a48a0138..fba02307e 100644 --- a/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/subagent_builder.py +++ b/surfsense_backend/app/agents/multi_agent_chat/subagents/shared/subagent_builder.py @@ -14,6 +14,7 @@ from langchain_core.tools import BaseTool from app.agents.multi_agent_chat.shared.middleware.permissions import ( build_permission_mw, ) +from app.agents.multi_agent_chat.shared.permissions import Ruleset from app.agents.multi_agent_chat.subagents.shared.md_file_reader import ( read_shared_snippet, ) @@ -22,7 +23,6 @@ from app.agents.multi_agent_chat.subagents.shared.spec import ( ContextHintProvider, SurfSenseSubagentSpec, ) -from app.agents.shared.permissions import Ruleset logger = logging.getLogger(__name__) diff --git a/surfsense_backend/app/agents/shared/middleware/permission.py b/surfsense_backend/app/agents/shared/middleware/permission.py index c277e29c7..4e624a81a 100644 --- a/surfsense_backend/app/agents/shared/middleware/permission.py +++ b/surfsense_backend/app/agents/shared/middleware/permission.py @@ -50,17 +50,17 @@ from langchain_core.messages import AIMessage, ToolMessage from langgraph.runtime import Runtime from langgraph.types import interrupt -from app.agents.shared.errors import ( - CorrectedError, - RejectedError, - StreamingError, -) -from app.agents.shared.permissions import ( +from app.agents.multi_agent_chat.shared.permissions import ( Rule, Ruleset, aggregate_action, evaluate_many, ) +from app.agents.shared.errors import ( + CorrectedError, + RejectedError, + StreamingError, +) from app.observability import metrics as ot_metrics, otel as ot logger = logging.getLogger(__name__) diff --git a/surfsense_backend/app/services/user_tool_allowlist.py b/surfsense_backend/app/services/user_tool_allowlist.py index 525d7b0ef..a65f4ceea 100644 --- a/surfsense_backend/app/services/user_tool_allowlist.py +++ b/surfsense_backend/app/services/user_tool_allowlist.py @@ -19,7 +19,7 @@ from sqlalchemy.orm.attributes import flag_modified from app.agents.multi_agent_chat.constants import ( CONNECTOR_TYPE_TO_CONNECTOR_AGENT_MAPS, ) -from app.agents.shared.permissions import Rule, Ruleset +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.db import SearchSourceConnector, async_session_maker logger = logging.getLogger(__name__) diff --git a/surfsense_backend/app/tasks/chat/streaming/handlers/tools/deliverables/generate_video_presentation/emission.py b/surfsense_backend/app/tasks/chat/streaming/handlers/tools/deliverables/generate_video_presentation/emission.py index 51a67f369..95aed2b85 100644 --- a/surfsense_backend/app/tasks/chat/streaming/handlers/tools/deliverables/generate_video_presentation/emission.py +++ b/surfsense_backend/app/tasks/chat/streaming/handlers/tools/deliverables/generate_video_presentation/emission.py @@ -21,7 +21,7 @@ def iter_completion_emission_frames( # ``ready`` is the live success status now that the tool waits for the # Celery worker to reach a terminal state. ``pending`` is retained as a # legacy branch for old saved chats that pre-date the wait-for-terminal - # change (see ``app.agents.shared.deliverable_wait``). + # change (see ``app.agents.multi_agent_chat.subagents.builtins.deliverables.deliverable_wait``). if status == "ready": yield ctx.streaming_service.format_terminal_info( f"Video presentation generated successfully: {out.get('title', 'Presentation')}", diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/checkpointed_subagent_middleware/test_parallel_self_and_middleware_gated.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/checkpointed_subagent_middleware/test_parallel_self_and_middleware_gated.py index 5470c6667..4d279f4ac 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/checkpointed_subagent_middleware/test_parallel_self_and_middleware_gated.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/checkpointed_subagent_middleware/test_parallel_self_and_middleware_gated.py @@ -46,10 +46,10 @@ from app.agents.multi_agent_chat.main_agent.middleware.checkpointed_subagent_mid from app.agents.multi_agent_chat.shared.middleware.permissions.ask.request import ( request_permission_decision, ) +from app.agents.multi_agent_chat.shared.permissions import Rule from app.agents.multi_agent_chat.subagents.shared.hitl.approvals.self_gated import ( request_approval, ) -from app.agents.shared.permissions import Rule class _SubState(TypedDict, total=False): diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_lc_hitl_wire.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_lc_hitl_wire.py index f4bffb415..0c21b81f4 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_lc_hitl_wire.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_lc_hitl_wire.py @@ -19,7 +19,7 @@ from typing_extensions import TypedDict from app.agents.multi_agent_chat.shared.middleware.permissions.ask.request import ( request_permission_decision, ) -from app.agents.shared.permissions import Rule +from app.agents.multi_agent_chat.shared.permissions import Rule class _State(TypedDict, total=False): diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_permission_ask_mcp_context.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_permission_ask_mcp_context.py index 1258f8f92..0de5e5b51 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_permission_ask_mcp_context.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_permission_ask_mcp_context.py @@ -19,8 +19,8 @@ from app.agents.multi_agent_chat.shared.middleware.permissions import ( from app.agents.multi_agent_chat.shared.middleware.permissions.ask.payload import ( build_permission_ask_payload, ) +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.shared.permissions import Rule, Ruleset class _NoArgs(BaseModel): diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_subagent_owned_ruleset.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_subagent_owned_ruleset.py index 7555dc002..f90d60d1d 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_subagent_owned_ruleset.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_subagent_owned_ruleset.py @@ -26,8 +26,8 @@ from typing_extensions import TypedDict from app.agents.multi_agent_chat.shared.middleware.permissions import ( build_permission_mw, ) +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.shared.permissions import Rule, Ruleset def _kb_style_ruleset() -> Ruleset: diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_trusted_tool_save_on_always.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_trusted_tool_save_on_always.py index 92388602a..ab8811bbb 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_trusted_tool_save_on_always.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/middleware/shared/permissions/test_trusted_tool_save_on_always.py @@ -17,8 +17,8 @@ from typing_extensions import TypedDict from app.agents.multi_agent_chat.shared.middleware.permissions import ( build_permission_mw, ) +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.shared.permissions import Rule, Ruleset class _NoArgs(BaseModel): diff --git a/surfsense_backend/tests/unit/agents/multi_agent_chat/subagents/shared/test_subagent_builder.py b/surfsense_backend/tests/unit/agents/multi_agent_chat/subagents/shared/test_subagent_builder.py index eaa656e03..db0ae1051 100644 --- a/surfsense_backend/tests/unit/agents/multi_agent_chat/subagents/shared/test_subagent_builder.py +++ b/surfsense_backend/tests/unit/agents/multi_agent_chat/subagents/shared/test_subagent_builder.py @@ -22,11 +22,11 @@ from langchain_core.outputs import ChatGeneration, ChatResult from app.agents.multi_agent_chat.shared.middleware.permissions.middleware.core import ( PermissionMiddleware, ) +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset, evaluate from app.agents.multi_agent_chat.subagents.shared.subagent_builder import ( pack_subagent, ) from app.agents.shared.feature_flags import AgentFeatureFlags -from app.agents.shared.permissions import Rule, Ruleset, evaluate class RateLimitError(Exception): diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_default_permissions_layering.py b/surfsense_backend/tests/unit/agents/new_chat/test_default_permissions_layering.py index e2ae513da..f1f02d92d 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_default_permissions_layering.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_default_permissions_layering.py @@ -27,7 +27,7 @@ from __future__ import annotations import pytest -from app.agents.shared.permissions import ( +from app.agents.multi_agent_chat.shared.permissions import ( Rule, Ruleset, aggregate_action, 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 e387e53f0..0f5a5c6d0 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 @@ -10,13 +10,13 @@ from __future__ import annotations import pytest -from app.agents.shared.middleware.permission import PermissionMiddleware -from app.agents.shared.permissions import ( +from app.agents.multi_agent_chat.shared.permissions import ( Rule, Ruleset, aggregate_action, evaluate_many, ) +from app.agents.shared.middleware.permission import PermissionMiddleware pytestmark = pytest.mark.unit 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 e84ed4f61..66bd7a74b 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,12 +5,12 @@ from __future__ import annotations import pytest from langchain_core.messages import AIMessage, ToolMessage +from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset from app.agents.shared.errors import CorrectedError, RejectedError from app.agents.shared.middleware.permission import ( PermissionMiddleware, _normalize_permission_decision, ) -from app.agents.shared.permissions import Rule, Ruleset pytestmark = pytest.mark.unit diff --git a/surfsense_backend/tests/unit/agents/new_chat/test_permissions.py b/surfsense_backend/tests/unit/agents/new_chat/test_permissions.py index 37d0e906a..01736974f 100644 --- a/surfsense_backend/tests/unit/agents/new_chat/test_permissions.py +++ b/surfsense_backend/tests/unit/agents/new_chat/test_permissions.py @@ -4,7 +4,7 @@ from __future__ import annotations import pytest -from app.agents.shared.permissions import ( +from app.agents.multi_agent_chat.shared.permissions import ( Rule, Ruleset, aggregate_action,