refactor(agents): move MAC middleware impls out of shared kernel

knowledge_search, memory_injection and scoped_model_fallback no longer
belong in the cross-agent kernel (app/agents/shared/middleware): they are
consumed only inside multi_agent_chat. Relocate each impl next to the
builder that uses it:

- knowledge_search.py -> multi_agent_chat/shared/middleware/ (genuinely
  shared: its _render_priority_message feeds kb_context_projection, used by
  both the main agent and the KB subagent)
- memory_injection.py -> multi_agent_chat/shared/middleware/ (beside its
  memory.py builder)
- scoped_model_fallback.py -> multi_agent_chat/shared/middleware/resilience/
  (beside fallback.py/bundle.py)

Impls moved verbatim (git rename). Builders/consumers now import the local
sibling; main_agent knowledge_priority imports the new shared path; shared
middleware barrel trimmed.

Tests: repoint imports; convert the knowledge_search monkeypatch targets
from brittle dotted-string form to object-based patching (monkeypatch.setattr
on the imported module), which is robust to import ordering. No behavior
change.
This commit is contained in:
CREDO23 2026-06-05 12:04:31 +02:00
parent 9493519c61
commit 8ae190a11d
12 changed files with 35 additions and 39 deletions

View file

@ -4,8 +4,10 @@ from __future__ import annotations
from langchain_core.language_models import BaseChatModel
from app.agents.multi_agent_chat.shared.middleware.knowledge_search import (
KnowledgePriorityMiddleware,
)
from app.agents.shared.filesystem_selection import FilesystemMode
from app.agents.shared.middleware import KnowledgePriorityMiddleware
from app.services.llm_service import get_planner_llm

View file

@ -12,9 +12,10 @@ from langgraph.runtime import Runtime
from app.agents.multi_agent_chat.shared.state.filesystem_state import (
SurfSenseFilesystemState,
)
from app.agents.shared.middleware.knowledge_search import _render_priority_message
from app.utils.perf import get_perf_logger
from .knowledge_search import _render_priority_message
_perf_log = get_perf_logger()

View file

@ -2,9 +2,10 @@
from __future__ import annotations
from app.agents.shared.middleware import MemoryInjectionMiddleware
from app.db import ChatVisibility
from .memory_injection import MemoryInjectionMiddleware
def build_memory_mw(
*,

View file

@ -12,13 +12,13 @@ from langchain.agents.middleware import (
from app.agents.shared.feature_flags import AgentFeatureFlags
from app.agents.shared.middleware import RetryAfterMiddleware
from app.agents.shared.middleware.scoped_model_fallback import (
ScopedModelFallbackMiddleware,
)
from .fallback import build_fallback_mw
from .model_call_limit import build_model_call_limit_mw
from .retry import build_retry_mw
from .scoped_model_fallback import (
ScopedModelFallbackMiddleware,
)
from .tool_call_limit import build_tool_call_limit_mw

View file

@ -5,11 +5,11 @@ from __future__ import annotations
import logging
from app.agents.shared.feature_flags import AgentFeatureFlags
from app.agents.shared.middleware.scoped_model_fallback import (
ScopedModelFallbackMiddleware,
)
from ..flags import enabled
from .scoped_model_fallback import (
ScopedModelFallbackMiddleware,
)
def build_fallback_mw(

View file

@ -9,20 +9,12 @@ from app.agents.shared.middleware.kb_persistence import (
KnowledgeBasePersistenceMiddleware,
commit_staged_filesystem_state,
)
from app.agents.shared.middleware.knowledge_search import (
KnowledgePriorityMiddleware,
)
from app.agents.shared.middleware.memory_injection import (
MemoryInjectionMiddleware,
)
from app.agents.shared.middleware.permission import PermissionMiddleware
from app.agents.shared.middleware.retry_after import RetryAfterMiddleware
__all__ = [
"BusyMutexMiddleware",
"KnowledgeBasePersistenceMiddleware",
"KnowledgePriorityMiddleware",
"MemoryInjectionMiddleware",
"PermissionMiddleware",
"RetryAfterMiddleware",
"SurfSenseCompactionMiddleware",