refactor(agents): move mac-only modules out of the cross-agent shared kernel

app/agents/shared/ is a sibling of anonymous_chat/podcaster/multi_agent_chat/
video_presentation, so it should only hold code shared across 2+ of those
agents. In practice podcaster and video_presentation import nothing from it,
and anonymous_chat needs only context + compaction + retry_after + web_search.
Everything else was multi_agent_chat-only (the boundary just passes through).

Move the multi_agent_chat-only cluster into multi_agent_chat/shared/ (files
moved verbatim via git rename; ~116 import sites rewritten):

  errors, feature_flags, filesystem_selection, path_resolver, prompt_caching,
  sandbox, llm_config, mention_resolver
  middleware/busy_mutex, middleware/kb_persistence

busy_mutex/llm_config/mention_resolver are boundary-only but import the moved
modules, so they were folded in to avoid a backwards shared -> multi_agent_chat
dependency. main_agent builders now import the impls directly; the shared
middleware barrel keeps only the genuinely-shared compaction + retry_after.

Also delete the dead leftover shared/plugins and shared/skills dirs (live
copies already live under main_agent/).

Remaining in app/agents/shared/: context, system_prompt(+prompts), checkpointer,
middleware/{compaction,retry_after,dedup_tool_calls}, tools/. checkpointer and
system_prompt are boundary-only infra pending a dedicated home decision.
This commit is contained in:
CREDO23 2026-06-05 12:30:15 +02:00
parent c0c4f57f5d
commit 82c5dc5b02
126 changed files with 238 additions and 196 deletions

View file

@ -13,6 +13,7 @@ from langgraph.graph.message import add_messages
from pydantic import BaseModel
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.shared.feature_flags import AgentFeatureFlags
from app.agents.multi_agent_chat.shared.middleware.permissions import (
build_permission_mw,
)
@ -20,7 +21,6 @@ from app.agents.multi_agent_chat.shared.middleware.permissions.ask.payload impor
build_permission_ask_payload,
)
from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset
from app.agents.shared.feature_flags import AgentFeatureFlags
class _NoArgs(BaseModel):

View file

@ -23,11 +23,11 @@ from langgraph.graph.message import add_messages
from langgraph.types import Command
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.shared.feature_flags import AgentFeatureFlags
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
def _kb_style_ruleset() -> Ruleset:

View file

@ -14,11 +14,11 @@ from langgraph.types import Command
from pydantic import BaseModel
from typing_extensions import TypedDict
from app.agents.multi_agent_chat.shared.feature_flags import AgentFeatureFlags
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
class _NoArgs(BaseModel):

View file

@ -19,6 +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.shared.feature_flags import AgentFeatureFlags
from app.agents.multi_agent_chat.shared.middleware.permissions.middleware.core import (
PermissionMiddleware,
)
@ -26,7 +27,6 @@ from app.agents.multi_agent_chat.shared.permissions import Rule, Ruleset, evalua
from app.agents.multi_agent_chat.subagents.shared.subagent_builder import (
pack_subagent,
)
from app.agents.shared.feature_flags import AgentFeatureFlags
class RateLimitError(Exception):

View file

@ -14,7 +14,7 @@ from app.agents.multi_agent_chat.main_agent.middleware.action_log.middleware imp
ActionLogMiddleware,
ToolDefinition,
)
from app.agents.shared.feature_flags import AgentFeatureFlags
from app.agents.multi_agent_chat.shared.feature_flags import AgentFeatureFlags
@dataclass

View file

@ -4,8 +4,8 @@ from __future__ import annotations
import pytest
from app.agents.shared.errors import BusyError
from app.agents.shared.middleware.busy_mutex import (
from app.agents.multi_agent_chat.shared.errors import BusyError
from app.agents.multi_agent_chat.shared.middleware.busy_mutex import (
BusyMutexMiddleware,
end_turn,
get_cancel_event,

View file

@ -4,7 +4,7 @@ from __future__ import annotations
import pytest
from app.agents.shared.feature_flags import (
from app.agents.multi_agent_chat.shared.feature_flags import (
AgentFeatureFlags,
reload_for_tests,
)

View file

@ -15,14 +15,14 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
from app.agents.shared import mention_resolver
from app.agents.shared.mention_resolver import (
from app.agents.multi_agent_chat.shared.mention_resolver import (
ResolvedMention,
ResolvedMentionSet,
resolve_mentions,
substitute_in_text,
)
from app.agents.shared.path_resolver import DOCUMENTS_ROOT, PathIndex
from app.agents.multi_agent_chat.shared.path_resolver import DOCUMENTS_ROOT, PathIndex
from app.agents.multi_agent_chat.shared import mention_resolver
from app.schemas.new_chat import MentionedDocumentInfo
pytestmark = pytest.mark.unit

View file

@ -7,7 +7,7 @@ from unittest.mock import AsyncMock, MagicMock
import pytest
from app.agents.shared.path_resolver import (
from app.agents.multi_agent_chat.shared.path_resolver import (
DOCUMENTS_ROOT,
PathIndex,
doc_to_virtual_path,

View file

@ -1,5 +1,5 @@
r"""Tests for ``apply_litellm_prompt_caching`` in
:mod:`app.agents.shared.prompt_caching`.
:mod:`app.agents.multi_agent_chat.shared.prompt_caching`.
The helper replaces the legacy ``AnthropicPromptCachingMiddleware`` (which
never activated for our LiteLLM stack) with LiteLLM-native multi-provider
@ -34,8 +34,10 @@ from typing import Any
import pytest
from app.agents.shared.llm_config import AgentConfig
from app.agents.shared.prompt_caching import apply_litellm_prompt_caching
from app.agents.multi_agent_chat.shared.llm_config import AgentConfig
from app.agents.multi_agent_chat.shared.prompt_caching import (
apply_litellm_prompt_caching,
)
pytestmark = pytest.mark.unit