mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-06 20:15:17 +02:00
refactor(agents): colocate 8 main-agent-only middleware as per-concept folders
Each main-agent-only middleware now lives in its own folder under main_agent/middleware/<concept>/ with builder.py (flag-gated construction) + middleware.py (the impl), re-exported via __init__.py. This kills the cross-folder hop into agents/shared/middleware and keeps each middleware's two responsibilities (build vs behavior) as colocated siblings. Moved (impl from shared/middleware, builder from main_agent/middleware): action_log, anonymous_document, context_editing, doom_loop, knowledge_tree, noop_injection, otel_span, tool_call_repair. Impls moved verbatim (git rename, no body edits) so behavior is unchanged. Builders now import from the local .middleware sibling. stack.py import paths updated for the 3 renamed folders; shared middleware barrel trimmed; tests repointed (imports + patch targets).
This commit is contained in:
parent
fbd5ccc35a
commit
9493519c61
33 changed files with 149 additions and 83 deletions
|
|
@ -10,9 +10,11 @@ import pytest
|
|||
from langchain_core.messages import ToolMessage
|
||||
from langchain_core.tools import tool
|
||||
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.action_log.middleware import (
|
||||
ActionLogMiddleware,
|
||||
ToolDefinition,
|
||||
)
|
||||
from app.agents.shared.feature_flags import AgentFeatureFlags
|
||||
from app.agents.shared.middleware.action_log import ActionLogMiddleware
|
||||
from app.agents.shared.middleware.action_log import ToolDefinition
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
@ -58,7 +60,7 @@ def _disabled_flags() -> AgentFeatureFlags:
|
|||
def patch_get_flags():
|
||||
def _patch(flags: AgentFeatureFlags):
|
||||
return patch(
|
||||
"app.agents.shared.middleware.action_log.get_flags",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.action_log.middleware.get_flags",
|
||||
return_value=flags,
|
||||
)
|
||||
|
||||
|
|
@ -360,7 +362,7 @@ class TestActionLogDispatch:
|
|||
patch_get_flags(_enabled_flags()),
|
||||
patch("app.db.shielded_async_session", side_effect=lambda: factory()),
|
||||
patch(
|
||||
"app.agents.shared.middleware.action_log.adispatch_custom_event",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.action_log.middleware.adispatch_custom_event",
|
||||
dispatch_mock,
|
||||
),
|
||||
):
|
||||
|
|
@ -395,7 +397,7 @@ class TestActionLogDispatch:
|
|||
patch_get_flags(_enabled_flags()),
|
||||
patch("app.db.shielded_async_session", side_effect=_exploding_session),
|
||||
patch(
|
||||
"app.agents.shared.middleware.action_log.adispatch_custom_event",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.action_log.middleware.adispatch_custom_event",
|
||||
dispatch_mock,
|
||||
),
|
||||
):
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from typing import Any
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, HumanMessage, ToolMessage
|
||||
|
||||
from app.agents.shared.middleware.context_editing import (
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.context_editing.middleware import (
|
||||
SpillToBackendEdit,
|
||||
_build_spill_placeholder,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage
|
||||
|
||||
from app.agents.shared.middleware.doom_loop import DoomLoopMiddleware, _signature
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.doom_loop.middleware import (
|
||||
DoomLoopMiddleware,
|
||||
_signature,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage, HumanMessage
|
||||
|
||||
from app.agents.shared.middleware.noop_injection import (
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.noop_injection.middleware 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.shared.middleware.otel_span import (
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.otel_span.middleware 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.shared.middleware.otel_span.ot_metrics.record_model_call_duration",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.otel_span.middleware.ot_metrics.record_model_call_duration",
|
||||
lambda duration_ms, **attrs: duration_calls.append(
|
||||
{"duration_ms": duration_ms, **attrs}
|
||||
),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_model_token_usage",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.otel_span.middleware.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.shared.middleware.otel_span.ot_metrics.record_tool_call_error",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.otel_span.middleware.ot_metrics.record_tool_call_error",
|
||||
lambda *, tool_name: errors.append(tool_name),
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"app.agents.shared.middleware.otel_span.ot_metrics.record_tool_call_duration",
|
||||
"app.agents.multi_agent_chat.main_agent.middleware.otel_span.middleware.ot_metrics.record_tool_call_duration",
|
||||
lambda *args, **kwargs: None,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ from __future__ import annotations
|
|||
import pytest
|
||||
from langchain_core.messages import AIMessage
|
||||
|
||||
from app.agents.multi_agent_chat.main_agent.tools.invalid_tool import INVALID_TOOL_NAME
|
||||
from app.agents.shared.middleware.tool_call_repair import (
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.tool_call_repair.middleware import (
|
||||
ToolCallNameRepairMiddleware,
|
||||
)
|
||||
from app.agents.multi_agent_chat.main_agent.tools.invalid_tool import INVALID_TOOL_NAME
|
||||
|
||||
pytestmark = pytest.mark.unit
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ contract cannot silently regress.
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from app.agents.shared.middleware.knowledge_tree import KnowledgeTreeMiddleware
|
||||
from app.agents.multi_agent_chat.main_agent.middleware.knowledge_tree.middleware import (
|
||||
KnowledgeTreeMiddleware,
|
||||
)
|
||||
from app.agents.shared.path_resolver import DOCUMENTS_ROOT
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue