refactor(agents): introduce chat/ category; dissolve top-level agents/shared

Recursive shared-folder rule: a shared/ must be shared by ALL siblings at its
level. The kernel (context, compaction, retry_after, web_search) was shared by
only 2 of the agents -- anonymous_chat + multi_agent_chat -- never by podcaster
or video_presentation. Those 2 are the "chat" category, so their shared code
belongs in that category's shared/, not the top-level one.

  app/agents/anonymous_chat/   -> app/agents/chat/anonymous_chat/
  app/agents/multi_agent_chat/ -> app/agents/chat/multi_agent_chat/
  app/agents/shared/           -> app/agents/chat/shared/   (anon<->mac kernel)

Top-level app/agents/shared/ is gone: nothing was shared across all three
categories (chat / podcaster / video_presentation).

~289 import sites rewritten (app.agents.{anonymous_chat,multi_agent_chat,shared}
-> app.agents.chat.*); all moves are git renames (history preserved).
app/agents/ now: chat/, podcaster/, video_presentation/, runtime/.
This commit is contained in:
CREDO23 2026-06-05 12:54:02 +02:00
parent d59bb2b5aa
commit 24b62a63b4
570 changed files with 712 additions and 613 deletions

View file

@ -16,7 +16,7 @@ import pytest
from langchain_core.messages import AIMessage, HumanMessage, ToolMessage
from langgraph.checkpoint.memory import InMemorySaver
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
from app.agents.chat.multi_agent_chat import create_multi_agent_chat_deep_agent
from app.services.connector_service import ConnectorService
from tests.integration.harness import (
ScriptedTurn,

View file

@ -20,14 +20,14 @@ 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.shared.filesystem_selection import (
from app.agents.chat.multi_agent_chat.shared.filesystem_selection import (
FilesystemMode,
FilesystemSelection,
)
from app.agents.multi_agent_chat.shared.middleware.filesystem import (
from app.agents.chat.multi_agent_chat.shared.middleware.filesystem import (
build_filesystem_mw,
)
from app.agents.multi_agent_chat.shared.middleware.filesystem.backends.resolver import (
from app.agents.chat.multi_agent_chat.shared.middleware.filesystem.backends.resolver import (
build_backend_resolver,
)
from tests.integration.harness import ScriptedTurn, build_scripted_harness

View file

@ -1,10 +1,10 @@
"""Real-behavior tests for the LIVE knowledge-base filesystem middleware (B).
These exercise ``app.agents.multi_agent_chat.shared.middleware.filesystem``
These exercise ``app.agents.chat.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*
(``app.agents.shared.middleware.filesystem``) that is never instantiated, so the
(``app.agents.chat.shared.middleware.filesystem``) that is never instantiated, so the
live tool path had no real coverage.
Strategy: mount the production ``build_filesystem_mw`` on a minimal
@ -23,15 +23,15 @@ 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.shared.filesystem_selection import (
from app.agents.chat.multi_agent_chat.shared.filesystem_selection import (
FilesystemMode,
FilesystemSelection,
LocalFilesystemMount,
)
from app.agents.multi_agent_chat.shared.middleware.filesystem import (
from app.agents.chat.multi_agent_chat.shared.middleware.filesystem import (
build_filesystem_mw,
)
from app.agents.multi_agent_chat.shared.middleware.filesystem.backends.resolver import (
from app.agents.chat.multi_agent_chat.shared.middleware.filesystem.backends.resolver import (
build_backend_resolver,
)
from tests.integration.harness import ScriptedTurn, build_scripted_harness

View file

@ -239,7 +239,7 @@ def patched_shielded_session(async_engine, monkeypatch):
yield session
monkeypatch.setattr(
"app.agents.multi_agent_chat.subagents.builtins.deliverables.tools.knowledge_base.shielded_async_session",
"app.agents.chat.multi_agent_chat.subagents.builtins.deliverables.tools.knowledge_base.shielded_async_session",
_test_shielded,
)

View file

@ -17,7 +17,7 @@ async def test_browse_recent_documents_with_list_type_returns_both(
committed_google_data, patched_shielded_session
):
"""_browse_recent_documents returns docs of all types when given a list."""
from app.agents.multi_agent_chat.subagents.builtins.deliverables.tools.knowledge_base import (
from app.agents.chat.multi_agent_chat.subagents.builtins.deliverables.tools.knowledge_base import (
_browse_recent_documents,
)

View file

@ -8,8 +8,8 @@ from datetime import UTC, datetime, timedelta
import numpy as np
import pytest
from app.agents.multi_agent_chat.shared.middleware import knowledge_search as ks
from app.agents.multi_agent_chat.shared.middleware.knowledge_search import (
from app.agents.chat.multi_agent_chat.shared.middleware import knowledge_search as ks
from app.agents.chat.multi_agent_chat.shared.middleware.knowledge_search import (
search_knowledge_base,
)