sync update from LAN repo (source master @ ca48c4ec)

This commit is contained in:
gozeros committed 2026-11-05 10:53:54 +08:00
1 parent 8bc8b0e082
commit ea9dcff9c0
873 files changed
+107866 -14011

No files matched your search

@@ -1,5 +1,7 @@
from types import SimpleNamespace
import pytest
from app.gateway.services import (
apply_knowledge_space_strict_scope,
enforce_knowledge_retrieval_mode_run_config,
@@ -128,6 +130,55 @@ def test_retrieval_modes_mount_mutually_exclusive_knowledge_tool_surfaces() -> N
assert "ordinary_knowledge_search" in excluded
assert "ordinary_wiki_search" in excluded
@pytest.mark.parametrize("delivery", [False, True])
def test_classic_strict_knowledge_scope_builds_lead_agent(monkeypatch, delivery) -> None:
from deerflow.agents.deep_research import retrieval
from deerflow.agents.lead_agent import agent as lead_agent
captured_tools: dict = {}
app_config = SimpleNamespace(
get_model_config=lambda _name: SimpleNamespace(supports_thinking=True),
)
monkeypatch.setattr(lead_agent, "_resolve_model_name", lambda *_args, **_kwargs: "test-model")
monkeypatch.setattr(lead_agent, "validate_agent_id", lambda _value: "roundtable-coordinator")
monkeypatch.setattr(lead_agent, "create_chat_model", lambda **_kwargs: object())
monkeypatch.setattr(lead_agent, "create_agent", lambda **kwargs: kwargs)
monkeypatch.setattr(lead_agent, "load_agent_soul", lambda _agent: "")
monkeypatch.setattr(lead_agent, "_log_es_query_routing_registration", lambda **_kwargs: None)
monkeypatch.setattr(lead_agent, "_build_middlewares", lambda *_args, **_kwargs: [])
monkeypatch.setattr(lead_agent, "apply_prompt_template", lambda **_kwargs: "test prompt")
monkeypatch.setattr(lead_agent, "_filter_available_skills_for_excluded_tools", lambda skills, _excluded: skills)
monkeypatch.setattr(retrieval, "resolve_collector_skill_visibility", lambda _agent, skills, _extra: skills)
monkeypatch.setattr(retrieval, "runtime_extra_skills", lambda _config: [])
import deerflow.tools
def fake_get_available_tools(**kwargs):
captured_tools.update(kwargs)
return []
monkeypatch.setattr(deerflow.tools, "get_available_tools", fake_get_available_tools)
result = lead_agent._make_lead_agent(
{
"configurable": {
"is_bootstrap": False,
"writing_mode": True,
"workbench_write_now": delivery,
"workbench_session_id": "test-session" if delivery else None,
"knowledge_space_strict": True,
"knowledge_retrieval_mode": "classic",
}
},
app_config=app_config,
)
assert result["system_prompt"].startswith("test prompt")
assert captured_tools["include_mcp"] is False
assert "web_search" in captured_tools["excluded_tools"]
assert ("deep_research_report" in {tool.name for tool in result["tools"]}) is delivery
smart = {
"configurable": {
"llmwiki_knowledge_base_ids": ["kb-1"],