refactor(agents): colocate middleware into vertical slices

Eliminate the top-level multi_agent_chat/middleware/ package so each slice
owns its middleware (vertical-slice colocation):

- middleware/shared/   -> shared/middleware/        (cross-slice middleware)
- middleware/subagent/ -> subagents/shared/middleware/ (subagent stack)
- main_agent/middleware/ already colocated in Slice A

The moved shared/ subtree is internally consistent (all relative imports
stay within it), so only external absolute refs were rewritten. The
subagent stack's ..shared.* relatives were promoted to absolute paths to
the new shared/middleware/ location.

multi_agent_chat/ root is now: main_agent/, shared/, subagents/.
Verified: 2430 unit tests pass, 1 skipped (baseline unchanged).
This commit is contained in:
CREDO23 2026-06-04 18:13:47 +02:00
parent 9c845d562e
commit add9e14694
117 changed files with 49 additions and 45 deletions

View file

@ -20,7 +20,7 @@ from langchain.agents import create_agent
from langchain_core.messages import HumanMessage, ToolMessage
from langgraph.checkpoint.memory import InMemorySaver
from app.agents.multi_agent_chat.middleware.shared.filesystem import (
from app.agents.multi_agent_chat.shared.middleware.filesystem import (
build_filesystem_mw,
)
from app.agents.shared.filesystem_backends import build_backend_resolver

View file

@ -1,6 +1,6 @@
"""Real-behavior tests for the LIVE knowledge-base filesystem middleware (B).
These exercise ``app.agents.multi_agent_chat.middleware.shared.filesystem``
These exercise ``app.agents.multi_agent_chat.shared.middleware.filesystem``
the decomposed middleware + tools that production actually mounts on the
knowledge_base subagent (via ``build_filesystem_mw``). The previous
``tests/unit/middleware/test_filesystem_*.py`` suite asserts a *dead twin*
@ -23,7 +23,7 @@ from langchain.agents import create_agent
from langchain_core.messages import HumanMessage, ToolMessage
from langgraph.checkpoint.memory import InMemorySaver
from app.agents.multi_agent_chat.middleware.shared.filesystem import (
from app.agents.multi_agent_chat.shared.middleware.filesystem import (
build_filesystem_mw,
)
from app.agents.shared.filesystem_backends import build_backend_resolver

View file

@ -43,7 +43,7 @@ from app.agents.multi_agent_chat.main_agent.middleware.checkpointed_subagent_mid
from app.agents.multi_agent_chat.main_agent.middleware.checkpointed_subagent_middleware.task_tool import (
build_task_tool_with_parent_config,
)
from app.agents.multi_agent_chat.middleware.shared.permissions.ask.request import (
from app.agents.multi_agent_chat.shared.middleware.permissions.ask.request import (
request_permission_decision,
)
from app.agents.multi_agent_chat.subagents.shared.hitl.approvals.self_gated import (

View file

@ -16,7 +16,7 @@ from langgraph.graph import END, START, StateGraph
from langgraph.types import Command
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.middleware.shared.permissions.ask.request import (
from app.agents.multi_agent_chat.shared.middleware.permissions.ask.request import (
request_permission_decision,
)
from app.agents.shared.permissions import Rule

View file

@ -13,10 +13,10 @@ from langgraph.graph.message import add_messages
from pydantic import BaseModel
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.middleware.shared.permissions import (
from app.agents.multi_agent_chat.shared.middleware.permissions import (
build_permission_mw,
)
from app.agents.multi_agent_chat.middleware.shared.permissions.ask.payload import (
from app.agents.multi_agent_chat.shared.middleware.permissions.ask.payload import (
build_permission_ask_payload,
)
from app.agents.shared.feature_flags import AgentFeatureFlags

View file

@ -23,7 +23,7 @@ from langgraph.graph.message import add_messages
from langgraph.types import Command
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.middleware.shared.permissions import (
from app.agents.multi_agent_chat.shared.middleware.permissions import (
build_permission_mw,
)
from app.agents.shared.feature_flags import AgentFeatureFlags

View file

@ -14,7 +14,7 @@ from langgraph.types import Command
from pydantic import BaseModel
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.middleware.shared.permissions import (
from app.agents.multi_agent_chat.shared.middleware.permissions import (
build_permission_mw,
)
from app.agents.shared.feature_flags import AgentFeatureFlags

View file

@ -19,7 +19,7 @@ from langchain_core.language_models.fake_chat_models import (
from langchain_core.messages import AIMessage, BaseMessage, HumanMessage
from langchain_core.outputs import ChatGeneration, ChatResult
from app.agents.multi_agent_chat.middleware.shared.permissions.middleware.core import (
from app.agents.multi_agent_chat.shared.middleware.permissions.middleware.core import (
PermissionMiddleware,
)
from app.agents.multi_agent_chat.subagents.shared.subagent_builder import (

View file

@ -8,7 +8,7 @@ Ported from the dead-twin suites:
Both exercised ``app.agents.shared.middleware.filesystem`` (dead). This drives
the production free functions in
``app.agents.multi_agent_chat.middleware.shared.filesystem.middleware`` instead.
``app.agents.multi_agent_chat.shared.middleware.filesystem.middleware`` instead.
The functions only touch ``mw._filesystem_mode`` and ``mw._get_backend`` so we
pass a lightweight fake ``mw`` rather than constructing the full middleware.
"""
@ -20,13 +20,13 @@ from types import SimpleNamespace
import pytest
from app.agents.multi_agent_chat.middleware.shared.filesystem.middleware.mode import (
from app.agents.multi_agent_chat.shared.middleware.filesystem.middleware.mode import (
default_cwd,
)
from app.agents.multi_agent_chat.middleware.shared.filesystem.middleware.namespace_policy import (
from app.agents.multi_agent_chat.shared.middleware.filesystem.middleware.namespace_policy import (
check_cloud_write_namespace,
)
from app.agents.multi_agent_chat.middleware.shared.filesystem.middleware.path_resolution import (
from app.agents.multi_agent_chat.shared.middleware.filesystem.middleware.path_resolution import (
current_cwd,
get_contract_suggested_path,
normalize_local_mount_path,

View file

@ -3,7 +3,7 @@
Ported from the former ``tests/unit/agents/new_chat/test_rm_rmdir_cloud.py``,
which exercised the *dead twin* ``app.agents.shared.middleware.filesystem``.
This drives the production decomposed tools
(``app.agents.multi_agent_chat.middleware.shared.filesystem``) instead: it
(``app.agents.multi_agent_chat.shared.middleware.filesystem``) instead: it
builds the real middleware via ``build_filesystem_mw``, pulls the real ``rm`` /
``rmdir`` tools off it, and invokes their coroutines with a stubbed
``KBPostgresBackend`` + runtime so we can assert the end-of-turn staging
@ -19,7 +19,7 @@ from unittest.mock import AsyncMock
import pytest
from app.agents.multi_agent_chat.middleware.shared.filesystem import (
from app.agents.multi_agent_chat.shared.middleware.filesystem import (
build_filesystem_mw,
)
from app.agents.shared.filesystem_backends import build_backend_resolver

View file

@ -18,7 +18,7 @@ from __future__ import annotations
import pytest
from app.agents.multi_agent_chat.middleware.shared.filesystem.system_prompt import (
from app.agents.multi_agent_chat.shared.middleware.filesystem.system_prompt import (
build_system_prompt,
)
from app.agents.shared.filesystem_selection import FilesystemMode