mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-07 23:02:39 +02:00
Compose async multi-agent chat entrypoint and drop legacy supervisor scaffolding.
This commit is contained in:
parent
5497f472b2
commit
388e86ebc9
27 changed files with 149 additions and 779 deletions
|
|
@ -2,36 +2,74 @@
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from langchain_core.language_models import BaseChatModel
|
||||
from langchain_core.tools import BaseTool
|
||||
from langgraph.types import Checkpointer
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.agents.multi_agent_chat.calendar import build_google_calendar_connector_tools
|
||||
from app.agents.multi_agent_chat.gmail import build_gmail_connector_tools
|
||||
from app.db import ChatVisibility
|
||||
|
||||
from app.agents.new_chat.tools.mcp_tool import load_mcp_tools
|
||||
|
||||
from app.agents.multi_agent_chat.core.mcp_partition import (
|
||||
fetch_mcp_connector_metadata_maps,
|
||||
partition_mcp_tools_by_expert_route,
|
||||
)
|
||||
from app.agents.multi_agent_chat.core.registry import build_registry_dependencies
|
||||
from app.agents.multi_agent_chat.routing.supervisor_routing import build_supervisor_routing_tools
|
||||
from app.agents.multi_agent_chat.supervisor import build_supervisor_agent
|
||||
|
||||
|
||||
def create_multi_agent_chat(
|
||||
async def create_multi_agent_chat(
|
||||
llm: BaseChatModel,
|
||||
*,
|
||||
db_session: AsyncSession,
|
||||
search_space_id: int,
|
||||
user_id: str,
|
||||
checkpointer: Checkpointer | None = None,
|
||||
thread_id: str | None = None,
|
||||
firecrawl_api_key: str | None = None,
|
||||
connector_service: Any | None = None,
|
||||
available_connectors: list[str] | None = None,
|
||||
available_document_types: list[str] | None = None,
|
||||
thread_visibility: ChatVisibility = ChatVisibility.PRIVATE,
|
||||
include_mcp_tools: bool = True,
|
||||
):
|
||||
"""Build the full multi-agent chat graph (supervisor + Gmail + Calendar sub-agents via ``new_chat`` tools)."""
|
||||
"""Build the full multi-agent chat graph (supervisor + domain subgraphs via routing tools).
|
||||
|
||||
**Builtins** (:mod:`expert_agent.builtins`): registry-grouped **categories** (research, memory, deliverables).
|
||||
**Connectors** (:mod:`expert_agent.connectors`): **vendor integrations** — one subgraph each where split
|
||||
(e.g. Gmail, Calendar, Discord, Teams, Notion, Confluence, Google Drive, Dropbox, OneDrive, Luma).
|
||||
|
||||
MCP tools from ``new_chat`` (``load_mcp_tools``) are partitioned inside this package and attached only
|
||||
to the matching expert subgraphs — not to the supervisor tool list as raw MCP calls.
|
||||
|
||||
Deliverables (thread-scoped reports, podcasts, etc.) are registered only when ``thread_id`` is set.
|
||||
"""
|
||||
mcp_tools_by_route: dict[str, list[BaseTool]] | None = None
|
||||
if include_mcp_tools:
|
||||
mcp_flat = await load_mcp_tools(db_session, search_space_id)
|
||||
id_map, name_map = await fetch_mcp_connector_metadata_maps(db_session, search_space_id)
|
||||
mcp_tools_by_route = partition_mcp_tools_by_expert_route(mcp_flat, id_map, name_map)
|
||||
|
||||
registry_dependencies = build_registry_dependencies(
|
||||
db_session=db_session,
|
||||
search_space_id=search_space_id,
|
||||
user_id=user_id,
|
||||
thread_id=thread_id or "",
|
||||
llm=llm,
|
||||
firecrawl_api_key=firecrawl_api_key,
|
||||
connector_service=connector_service,
|
||||
available_connectors=available_connectors,
|
||||
available_document_types=available_document_types,
|
||||
thread_visibility=thread_visibility,
|
||||
)
|
||||
routing_tools = build_supervisor_routing_tools(
|
||||
llm,
|
||||
gmail_tools=build_gmail_connector_tools(
|
||||
db_session=db_session,
|
||||
search_space_id=search_space_id,
|
||||
user_id=user_id,
|
||||
),
|
||||
calendar_tools=build_google_calendar_connector_tools(
|
||||
db_session=db_session,
|
||||
search_space_id=search_space_id,
|
||||
user_id=user_id,
|
||||
),
|
||||
registry_dependencies=registry_dependencies,
|
||||
include_deliverables=thread_id is not None,
|
||||
mcp_tools_by_route=mcp_tools_by_route,
|
||||
)
|
||||
return build_supervisor_agent(llm, tools=routing_tools, checkpointer=checkpointer)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue