mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-06 20:15:17 +02:00
refactor(agents): hardwire multi-agent as the only chat factory (bucket B1)
Make create_multi_agent_chat_deep_agent the unconditional agent factory in all three streaming entry points (stream_new_chat monolith + new_chat/resume flow orchestrators). Drop the MULTI_AGENT_CHAT_ENABLED branch and the now-unused create_surfsense_deep_agent / _app_config imports. The single-agent implementation (chat_deepagent.py, subagents/) is left in place; it is deleted in a later phase. Suite green (2758 passed).
This commit is contained in:
parent
64d2ad6451
commit
724bbd6deb
3 changed files with 8 additions and 36 deletions
|
|
@ -27,7 +27,6 @@ from langchain_core.messages import HumanMessage
|
||||||
from sqlalchemy.future import select
|
from sqlalchemy.future import select
|
||||||
|
|
||||||
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
||||||
from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent
|
|
||||||
from app.agents.shared.checkpointer import get_checkpointer
|
from app.agents.shared.checkpointer import get_checkpointer
|
||||||
from app.agents.shared.context import SurfSenseContextSchema
|
from app.agents.shared.context import SurfSenseContextSchema
|
||||||
from app.agents.shared.errors import BusyError
|
from app.agents.shared.errors import BusyError
|
||||||
|
|
@ -1181,19 +1180,12 @@ async def stream_new_chat(
|
||||||
)
|
)
|
||||||
|
|
||||||
visibility = thread_visibility or ChatVisibility.PRIVATE
|
visibility = thread_visibility or ChatVisibility.PRIVATE
|
||||||
from app.config import config as _app_config
|
chat_agent_mode = "multi"
|
||||||
|
|
||||||
use_multi_agent = bool(_app_config.MULTI_AGENT_CHAT_ENABLED)
|
|
||||||
chat_agent_mode = "multi" if use_multi_agent else "single"
|
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
chat_span.set_attribute("agent.mode", chat_agent_mode)
|
chat_span.set_attribute("agent.mode", chat_agent_mode)
|
||||||
|
|
||||||
_t0 = time.perf_counter()
|
_t0 = time.perf_counter()
|
||||||
agent_factory = (
|
agent_factory = create_multi_agent_chat_deep_agent
|
||||||
create_multi_agent_chat_deep_agent
|
|
||||||
if use_multi_agent
|
|
||||||
else create_surfsense_deep_agent
|
|
||||||
)
|
|
||||||
# Build the agent inline. Provider 429s surface through the
|
# Build the agent inline. Provider 429s surface through the
|
||||||
# in-stream recovery loop below (``_is_provider_rate_limited``),
|
# in-stream recovery loop below (``_is_provider_rate_limited``),
|
||||||
# which repins the thread to an eligible alternative config and
|
# which repins the thread to an eligible alternative config and
|
||||||
|
|
@ -2512,17 +2504,11 @@ async def stream_resume_chat(
|
||||||
)
|
)
|
||||||
|
|
||||||
visibility = thread_visibility or ChatVisibility.PRIVATE
|
visibility = thread_visibility or ChatVisibility.PRIVATE
|
||||||
from app.config import config as _app_config
|
chat_agent_mode = "multi"
|
||||||
|
|
||||||
chat_agent_mode = "multi" if _app_config.MULTI_AGENT_CHAT_ENABLED else "single"
|
|
||||||
with contextlib.suppress(Exception):
|
with contextlib.suppress(Exception):
|
||||||
chat_span.set_attribute("agent.mode", chat_agent_mode)
|
chat_span.set_attribute("agent.mode", chat_agent_mode)
|
||||||
_t0 = time.perf_counter()
|
_t0 = time.perf_counter()
|
||||||
agent_factory = (
|
agent_factory = create_multi_agent_chat_deep_agent
|
||||||
create_multi_agent_chat_deep_agent
|
|
||||||
if _app_config.MULTI_AGENT_CHAT_ENABLED
|
|
||||||
else create_surfsense_deep_agent
|
|
||||||
)
|
|
||||||
# Build the agent inline. Provider 429s are handled by the
|
# Build the agent inline. Provider 429s are handled by the
|
||||||
# in-stream recovery loop, which repins to an eligible
|
# in-stream recovery loop, which repins to an eligible
|
||||||
# alternative config and rebuilds the agent before the user sees
|
# alternative config and rebuilds the agent before the user sees
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,8 @@ from typing import Any, Literal
|
||||||
import anyio
|
import anyio
|
||||||
|
|
||||||
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
||||||
from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent
|
|
||||||
from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection
|
from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection
|
||||||
from app.agents.shared.middleware.busy_mutex import end_turn
|
from app.agents.shared.middleware.busy_mutex import end_turn
|
||||||
from app.config import config as _app_config
|
|
||||||
from app.db import ChatVisibility, async_session_maker
|
from app.db import ChatVisibility, async_session_maker
|
||||||
from app.observability import otel as ot
|
from app.observability import otel as ot
|
||||||
from app.services.new_streaming_service import VercelStreamingService
|
from app.services.new_streaming_service import VercelStreamingService
|
||||||
|
|
@ -387,16 +385,11 @@ async def stream_new_chat(
|
||||||
)
|
)
|
||||||
|
|
||||||
visibility = thread_visibility or ChatVisibility.PRIVATE
|
visibility = thread_visibility or ChatVisibility.PRIVATE
|
||||||
use_multi_agent = bool(_app_config.MULTI_AGENT_CHAT_ENABLED)
|
chat_agent_mode = "multi"
|
||||||
chat_agent_mode = "multi" if use_multi_agent else "single"
|
|
||||||
set_agent_mode(chat_span, chat_agent_mode)
|
set_agent_mode(chat_span, chat_agent_mode)
|
||||||
|
|
||||||
_t0 = time.perf_counter()
|
_t0 = time.perf_counter()
|
||||||
agent_factory = (
|
agent_factory = create_multi_agent_chat_deep_agent
|
||||||
create_multi_agent_chat_deep_agent
|
|
||||||
if use_multi_agent
|
|
||||||
else create_surfsense_deep_agent
|
|
||||||
)
|
|
||||||
# Build the agent inline. Provider 429s surface through the in-stream
|
# Build the agent inline. Provider 429s surface through the in-stream
|
||||||
# recovery loop below, which repins the thread to an eligible
|
# recovery loop below, which repins the thread to an eligible
|
||||||
# alternative config and rebuilds the agent before the user sees any
|
# alternative config and rebuilds the agent before the user sees any
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,8 @@ from uuid import UUID
|
||||||
import anyio
|
import anyio
|
||||||
|
|
||||||
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
from app.agents.multi_agent_chat import create_multi_agent_chat_deep_agent
|
||||||
from app.agents.new_chat.chat_deepagent import create_surfsense_deep_agent
|
|
||||||
from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection
|
from app.agents.shared.filesystem_selection import FilesystemMode, FilesystemSelection
|
||||||
from app.agents.shared.middleware.busy_mutex import end_turn
|
from app.agents.shared.middleware.busy_mutex import end_turn
|
||||||
from app.config import config as _app_config
|
|
||||||
from app.db import ChatVisibility, async_session_maker
|
from app.db import ChatVisibility, async_session_maker
|
||||||
from app.observability import otel as ot
|
from app.observability import otel as ot
|
||||||
from app.services.chat_session_state_service import set_ai_responding
|
from app.services.chat_session_state_service import set_ai_responding
|
||||||
|
|
@ -326,16 +324,11 @@ async def stream_resume_chat(
|
||||||
)
|
)
|
||||||
|
|
||||||
visibility = thread_visibility or ChatVisibility.PRIVATE
|
visibility = thread_visibility or ChatVisibility.PRIVATE
|
||||||
use_multi_agent = bool(_app_config.MULTI_AGENT_CHAT_ENABLED)
|
chat_agent_mode = "multi"
|
||||||
chat_agent_mode = "multi" if use_multi_agent else "single"
|
|
||||||
set_agent_mode(chat_span, chat_agent_mode)
|
set_agent_mode(chat_span, chat_agent_mode)
|
||||||
|
|
||||||
_t0 = time.perf_counter()
|
_t0 = time.perf_counter()
|
||||||
agent_factory = (
|
agent_factory = create_multi_agent_chat_deep_agent
|
||||||
create_multi_agent_chat_deep_agent
|
|
||||||
if use_multi_agent
|
|
||||||
else create_surfsense_deep_agent
|
|
||||||
)
|
|
||||||
agent = await build_main_agent_for_thread(
|
agent = await build_main_agent_for_thread(
|
||||||
agent_factory,
|
agent_factory,
|
||||||
llm=llm,
|
llm=llm,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue