mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-06 20:15:17 +02:00
refactor(agents): move middleware package to app/agents/shared (slice 5c)
Relocate the entire new_chat/middleware/ package to the shared kernel as one cohesive unit (it is live shared infrastructure: the multi-agent stack wraps nearly every middleware via multi_agent_chat/middleware/main_agent/*, and anonymous_agent consumes it too). Flip 69 live importers across both the package-path and submodule-path forms. Shims left for the frozen single-agent stack: a package __init__ re-export plus submodule shims for permission, skills_backends, and scoped_model_fallback (the three imported via submodule path by chat_deepagent/subagents). Cycle break: importing shared.middleware previously reached back into new_chat.tools at module load, which dragged in new_chat.__init__ -> chat_deepagent -> the middleware shim -> half-initialized shared.middleware. Made action_log's ToolDefinition import TYPE_CHECKING-only and tool_call_repair's INVALID_TOOL_NAME import function-local. These tools-package back-edges fully resolve in slice 6. Asset note: skills_backends._default_builtin_root now walks to app/agents/new_chat/skills/builtin (the skills/ tree migrates in slice 7).
This commit is contained in:
parent
6f488d9564
commit
227983a104
98 changed files with 1131 additions and 999 deletions
|
|
@ -8,7 +8,7 @@ from datetime import UTC, datetime, timedelta
|
|||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.knowledge_search import search_knowledge_base
|
||||
from app.agents.shared.middleware.knowledge_search import search_knowledge_base
|
||||
|
||||
from .conftest import DUMMY_EMBEDDING
|
||||
|
||||
|
|
@ -27,11 +27,11 @@ async def test_search_knowledge_base_applies_date_filters(
|
|||
yield db_session
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.shielded_async_session",
|
||||
"app.agents.shared.middleware.knowledge_search.shielded_async_session",
|
||||
fake_shielded_async_session,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.embed_texts",
|
||||
"app.agents.shared.middleware.knowledge_search.embed_texts",
|
||||
lambda texts: [np.array(DUMMY_EMBEDDING) for _ in texts],
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ from langchain_core.messages import ToolMessage
|
|||
from langchain_core.tools import tool
|
||||
|
||||
from app.agents.shared.feature_flags import AgentFeatureFlags
|
||||
from app.agents.new_chat.middleware.action_log import ActionLogMiddleware
|
||||
from app.agents.shared.middleware.action_log import ActionLogMiddleware
|
||||
from app.agents.new_chat.tools.registry import ToolDefinition
|
||||
|
||||
|
||||
|
|
@ -58,7 +58,7 @@ def _disabled_flags() -> AgentFeatureFlags:
|
|||
def patch_get_flags():
|
||||
def _patch(flags: AgentFeatureFlags):
|
||||
return patch(
|
||||
"app.agents.new_chat.middleware.action_log.get_flags",
|
||||
"app.agents.shared.middleware.action_log.get_flags",
|
||||
return_value=flags,
|
||||
)
|
||||
|
||||
|
|
@ -360,7 +360,7 @@ class TestActionLogDispatch:
|
|||
patch_get_flags(_enabled_flags()),
|
||||
patch("app.db.shielded_async_session", side_effect=lambda: factory()),
|
||||
patch(
|
||||
"app.agents.new_chat.middleware.action_log.adispatch_custom_event",
|
||||
"app.agents.shared.middleware.action_log.adispatch_custom_event",
|
||||
dispatch_mock,
|
||||
),
|
||||
):
|
||||
|
|
@ -395,7 +395,7 @@ class TestActionLogDispatch:
|
|||
patch_get_flags(_enabled_flags()),
|
||||
patch("app.db.shielded_async_session", side_effect=_exploding_session),
|
||||
patch(
|
||||
"app.agents.new_chat.middleware.action_log.adispatch_custom_event",
|
||||
"app.agents.shared.middleware.action_log.adispatch_custom_event",
|
||||
dispatch_mock,
|
||||
),
|
||||
):
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
import pytest
|
||||
|
||||
from app.agents.shared.errors import BusyError
|
||||
from app.agents.new_chat.middleware.busy_mutex import (
|
||||
from app.agents.shared.middleware.busy_mutex import (
|
||||
BusyMutexMiddleware,
|
||||
end_turn,
|
||||
get_cancel_event,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from langchain_core.messages import (
|
|||
ToolMessage,
|
||||
)
|
||||
|
||||
from app.agents.new_chat.middleware.compaction import (
|
||||
from app.agents.shared.middleware.compaction import (
|
||||
PROTECTED_SYSTEM_PREFIXES,
|
||||
_is_protected_system_message,
|
||||
_sanitize_message_content,
|
||||
|
|
@ -72,7 +72,7 @@ class TestPartitionMessages:
|
|||
# SurfSenseCompactionMiddleware without a real model, but the
|
||||
# override path needs ``_lc_helper`` to delegate to. We mock
|
||||
# that with a simple slicing partitioner equivalent to the real one.
|
||||
from app.agents.new_chat.middleware.compaction import (
|
||||
from app.agents.shared.middleware.compaction import (
|
||||
SurfSenseCompactionMiddleware,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from typing import Any
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, HumanMessage, ToolMessage
|
||||
|
||||
from app.agents.new_chat.middleware.context_editing import (
|
||||
from app.agents.shared.middleware.context_editing import (
|
||||
SpillToBackendEdit,
|
||||
_build_spill_placeholder,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import pytest
|
|||
from langchain_core.messages import AIMessage
|
||||
from langchain_core.tools import StructuredTool
|
||||
|
||||
from app.agents.new_chat.middleware.dedup_tool_calls import (
|
||||
from app.agents.shared.middleware.dedup_tool_calls import (
|
||||
DedupHITLToolCallsMiddleware,
|
||||
)
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ def test_full_args_dedup_keeps_distinct_calls_sharing_a_field() -> None:
|
|||
|
||||
With :func:`dedup_key_full_args` only fully identical arg dicts dedup.
|
||||
"""
|
||||
from app.agents.new_chat.middleware.dedup_tool_calls import dedup_key_full_args
|
||||
from app.agents.shared.middleware.dedup_tool_calls import dedup_key_full_args
|
||||
|
||||
tool = _make_tool("createJiraIssue", dedup_key=dedup_key_full_args)
|
||||
mw = DedupHITLToolCallsMiddleware(agent_tools=[tool])
|
||||
|
|
@ -179,7 +179,7 @@ def test_full_args_dedup_keeps_distinct_calls_sharing_a_field() -> None:
|
|||
|
||||
|
||||
def test_full_args_dedup_drops_only_exact_duplicates() -> None:
|
||||
from app.agents.new_chat.middleware.dedup_tool_calls import dedup_key_full_args
|
||||
from app.agents.shared.middleware.dedup_tool_calls import dedup_key_full_args
|
||||
|
||||
tool = _make_tool("createJiraIssue", dedup_key=dedup_key_full_args)
|
||||
mw = DedupHITLToolCallsMiddleware(agent_tools=[tool])
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from __future__ import annotations
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.permission import PermissionMiddleware
|
||||
from app.agents.shared.middleware.permission import PermissionMiddleware
|
||||
from app.agents.shared.permissions import (
|
||||
Rule,
|
||||
Ruleset,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage
|
||||
|
||||
from app.agents.new_chat.middleware.doom_loop import DoomLoopMiddleware, _signature
|
||||
from app.agents.shared.middleware.doom_loop import DoomLoopMiddleware, _signature
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from unittest.mock import MagicMock
|
|||
import pytest
|
||||
from langchain_core.messages import HumanMessage, SystemMessage
|
||||
|
||||
from app.agents.new_chat.middleware.flatten_system import (
|
||||
from app.agents.shared.middleware.flatten_system import (
|
||||
FlattenSystemMessageMiddleware,
|
||||
_flatten_text_blocks,
|
||||
_flattened_request,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, HumanMessage
|
||||
|
||||
from app.agents.new_chat.middleware.noop_injection import (
|
||||
from app.agents.shared.middleware.noop_injection import (
|
||||
NOOP_TOOL_NAME,
|
||||
NoopInjectionMiddleware,
|
||||
_last_ai_has_tool_calls,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from unittest.mock import MagicMock
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, ToolMessage
|
||||
|
||||
from app.agents.new_chat.middleware.otel_span import (
|
||||
from app.agents.shared.middleware.otel_span import (
|
||||
OtelSpanMiddleware,
|
||||
_annotate_model_response,
|
||||
_annotate_tool_result,
|
||||
|
|
@ -206,13 +206,13 @@ class TestMiddlewareIntegration:
|
|||
duration_calls: list[dict[str, Any]] = []
|
||||
token_calls: list[dict[str, Any]] = []
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.otel_span.ot_metrics.record_model_call_duration",
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_model_call_duration",
|
||||
lambda duration_ms, **attrs: duration_calls.append(
|
||||
{"duration_ms": duration_ms, **attrs}
|
||||
),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.otel_span.ot_metrics.record_model_token_usage",
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_model_token_usage",
|
||||
lambda **attrs: token_calls.append(attrs),
|
||||
)
|
||||
|
||||
|
|
@ -257,11 +257,11 @@ class TestMiddlewareIntegration:
|
|||
|
||||
errors: list[str] = []
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.otel_span.ot_metrics.record_tool_call_error",
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_tool_call_error",
|
||||
lambda *, tool_name: errors.append(tool_name),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.otel_span.ot_metrics.record_tool_call_duration",
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_tool_call_duration",
|
||||
lambda *args, **kwargs: None,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import pytest
|
|||
from langchain_core.messages import AIMessage, ToolMessage
|
||||
|
||||
from app.agents.shared.errors import CorrectedError, RejectedError
|
||||
from app.agents.new_chat.middleware.permission import (
|
||||
from app.agents.shared.middleware.permission import (
|
||||
PermissionMiddleware,
|
||||
_normalize_permission_decision,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from __future__ import annotations
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.retry_after import (
|
||||
from app.agents.shared.middleware.retry_after import (
|
||||
RetryAfterMiddleware,
|
||||
_extract_retry_after_seconds,
|
||||
_is_non_retryable,
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ from unittest.mock import AsyncMock
|
|||
import pytest
|
||||
|
||||
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
|
||||
from app.agents.shared.middleware.filesystem import SurfSenseFilesystemMiddleware
|
||||
from app.agents.shared.middleware.kb_postgres_backend import KBPostgresBackend
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from pathlib import Path
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.skills_backends import (
|
||||
from app.agents.shared.middleware.skills_backends import (
|
||||
SKILLS_BUILTIN_PREFIX,
|
||||
SKILLS_SPACE_PREFIX,
|
||||
BuiltinSkillsBackend,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from __future__ import annotations
|
|||
|
||||
from langchain_core.tools import tool
|
||||
|
||||
from app.agents.new_chat.middleware.permission import PermissionMiddleware
|
||||
from app.agents.shared.middleware.permission import PermissionMiddleware
|
||||
from app.agents.new_chat.subagents import (
|
||||
build_connector_negotiator_subagent,
|
||||
build_explore_subagent,
|
||||
|
|
@ -140,7 +140,7 @@ class TestExploreSubagent:
|
|||
def test_includes_dedup_and_patch_middleware(self) -> None:
|
||||
from deepagents.middleware.patch_tool_calls import PatchToolCallsMiddleware
|
||||
|
||||
from app.agents.new_chat.middleware import DedupHITLToolCallsMiddleware
|
||||
from app.agents.shared.middleware import DedupHITLToolCallsMiddleware
|
||||
|
||||
spec = build_explore_subagent(tools=ALL_TOOLS)
|
||||
types = {type(m) for m in spec["middleware"]} # type: ignore[index]
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage
|
||||
|
||||
from app.agents.new_chat.middleware.tool_call_repair import (
|
||||
from app.agents.shared.middleware.tool_call_repair import (
|
||||
ToolCallNameRepairMiddleware,
|
||||
)
|
||||
from app.agents.new_chat.tools.invalid_tool import INVALID_TOOL_NAME
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import pytest
|
|||
from langchain_core.messages import AIMessage
|
||||
from langchain_core.tools import StructuredTool
|
||||
|
||||
from app.agents.new_chat.middleware.dedup_tool_calls import (
|
||||
from app.agents.shared.middleware.dedup_tool_calls import (
|
||||
DedupHITLToolCallsMiddleware,
|
||||
wrap_dedup_key_by_arg_name,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, HumanMessage
|
||||
|
||||
from app.agents.new_chat.middleware.file_intent import (
|
||||
from app.agents.shared.middleware.file_intent import (
|
||||
FileIntentMiddleware,
|
||||
FileOperationIntent,
|
||||
_fallback_path,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from app.agents.shared.filesystem_selection import (
|
|||
FilesystemSelection,
|
||||
LocalFilesystemMount,
|
||||
)
|
||||
from app.agents.new_chat.middleware.multi_root_local_folder_backend import (
|
||||
from app.agents.shared.middleware.multi_root_local_folder_backend import (
|
||||
MultiRootLocalFolderBackend,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ from types import SimpleNamespace
|
|||
import pytest
|
||||
|
||||
from app.agents.shared.filesystem_selection import FilesystemMode
|
||||
from app.agents.new_chat.middleware.filesystem import (
|
||||
from app.agents.shared.middleware.filesystem import (
|
||||
SurfSenseFilesystemMiddleware,
|
||||
_build_filesystem_system_prompt,
|
||||
_build_tool_descriptions,
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ from pathlib import Path
|
|||
import pytest
|
||||
|
||||
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 (
|
||||
from app.agents.shared.middleware.filesystem import SurfSenseFilesystemMiddleware
|
||||
from app.agents.shared.middleware.multi_root_local_folder_backend import (
|
||||
MultiRootLocalFolderBackend,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from unittest.mock import AsyncMock
|
|||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware import kb_persistence
|
||||
from app.agents.shared.middleware import kb_persistence
|
||||
from app.db import Document
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ from unittest.mock import AsyncMock, MagicMock
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware import kb_persistence
|
||||
from app.agents.shared.middleware import kb_persistence
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import pytest
|
|||
from langchain_core.messages import AIMessage, HumanMessage
|
||||
|
||||
from app.agents.shared.document_xml import build_document_xml as _build_document_xml
|
||||
from app.agents.new_chat.middleware.knowledge_search import (
|
||||
from app.agents.shared.middleware.knowledge_search import (
|
||||
KBSearchPlan,
|
||||
KnowledgeBaseSearchMiddleware,
|
||||
_normalize_optional_date_range,
|
||||
|
|
@ -258,7 +258,7 @@ class TestKnowledgeBaseSearchMiddlewarePlanner:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -301,7 +301,7 @@ class TestKnowledgeBaseSearchMiddlewarePlanner:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -330,7 +330,7 @@ class TestKnowledgeBaseSearchMiddlewarePlanner:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -375,11 +375,11 @@ class TestKnowledgeBaseSearchMiddlewarePlanner:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.browse_recent_documents",
|
||||
"app.agents.shared.middleware.knowledge_search.browse_recent_documents",
|
||||
fake_browse_recent_documents,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -422,11 +422,11 @@ class TestKnowledgeBaseSearchMiddlewarePlanner:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.browse_recent_documents",
|
||||
"app.agents.shared.middleware.knowledge_search.browse_recent_documents",
|
||||
fake_browse_recent_documents,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -549,11 +549,11 @@ class TestKnowledgePriorityMentionDrain:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
"app.agents.shared.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
fake_fetch_mentioned_documents,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -597,11 +597,11 @@ class TestKnowledgePriorityMentionDrain:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
"app.agents.shared.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
fake_fetch_mentioned_documents,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
@ -642,11 +642,11 @@ class TestKnowledgePriorityMentionDrain:
|
|||
return []
|
||||
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
"app.agents.shared.middleware.knowledge_search.fetch_mentioned_documents",
|
||||
fake_fetch_mentioned_documents,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.new_chat.middleware.knowledge_search.search_knowledge_base",
|
||||
"app.agents.shared.middleware.knowledge_search.search_knowledge_base",
|
||||
fake_search_knowledge_base,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ contract cannot silently regress.
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from app.agents.new_chat.middleware.knowledge_tree import KnowledgeTreeMiddleware
|
||||
from app.agents.shared.middleware.knowledge_tree import KnowledgeTreeMiddleware
|
||||
from app.agents.shared.path_resolver import DOCUMENTS_ROOT
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from pathlib import Path
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.local_folder_backend import LocalFolderBackend
|
||||
from app.agents.shared.middleware.local_folder_backend import LocalFolderBackend
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from pathlib import Path
|
|||
|
||||
import pytest
|
||||
|
||||
from app.agents.new_chat.middleware.multi_root_local_folder_backend import (
|
||||
from app.agents.shared.middleware.multi_root_local_folder_backend import (
|
||||
MultiRootLocalFolderBackend,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ from typing import Any
|
|||
import pytest
|
||||
|
||||
from app.agents.shared.errors import BusyError
|
||||
from app.agents.new_chat.middleware.busy_mutex import request_cancel, reset_cancel
|
||||
from app.agents.shared.middleware.busy_mutex import request_cancel, reset_cancel
|
||||
from app.tasks.chat.stream_new_chat import (
|
||||
_classify_stream_exception as old_classify,
|
||||
_emit_stream_terminal_error as old_emit_terminal_error,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import pytest
|
|||
|
||||
import app.tasks.chat.stream_new_chat as stream_new_chat_module
|
||||
from app.agents.shared.errors import BusyError
|
||||
from app.agents.new_chat.middleware.busy_mutex import request_cancel, reset_cancel
|
||||
from app.agents.shared.middleware.busy_mutex import request_cancel, reset_cancel
|
||||
from app.tasks.chat.stream_new_chat import (
|
||||
StreamResult,
|
||||
_classify_stream_exception,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue