chore: initial commit (sources + docs, ignore build artifacts and secrets)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
from mulit_agent_app.application.agent_service import AgentService
|
||||
from mulit_agent_app.config import AgentConfig
|
||||
from mulit_agent_app.infrastructure.database import AgentDatabase
|
||||
|
||||
|
||||
class _Session:
|
||||
def __init__(self) -> None:
|
||||
self.acks: list[tuple[str, int, str, str]] = []
|
||||
|
||||
def send_mcp_ack(self, tool_id: str, version: int, status: str, error: str = "") -> None:
|
||||
self.acks.append((tool_id, version, status, error))
|
||||
|
||||
|
||||
class _Executor:
|
||||
def __init__(self) -> None:
|
||||
self.desktop_enabled = False
|
||||
|
||||
def set_desktop_filesystem_enabled(self, enabled: bool) -> None:
|
||||
self.desktop_enabled = enabled
|
||||
|
||||
|
||||
def test_mcp_snapshot_persists_version_and_reacknowledges_after_reconnect(tmp_path):
|
||||
config = AgentConfig(tmp_path, tmp_path / "settings.json", tmp_path / "agent.sqlite3", tmp_path / "agent.log")
|
||||
service = AgentService.__new__(AgentService)
|
||||
service._config = config
|
||||
service._database = AgentDatabase(config.database_path)
|
||||
service._database.initialize()
|
||||
service.session = _Session()
|
||||
service.task_executor = _Executor()
|
||||
snapshot = {
|
||||
"tools": [
|
||||
{
|
||||
"id": "desktop-filesystem",
|
||||
"deployment_version": 3,
|
||||
"enabled": True,
|
||||
"scope": "desktop-directories",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
service.apply_mcp_snapshot(snapshot)
|
||||
service.apply_mcp_snapshot(snapshot)
|
||||
|
||||
assert service._database.get_meta("mcp.desktop-filesystem.enabled") == "true"
|
||||
assert service._database.get_meta("mcp.desktop-filesystem.version") == "3"
|
||||
assert service.task_executor.desktop_enabled is True
|
||||
assert service.session.acks == [
|
||||
("desktop-filesystem", 3, "applied", ""),
|
||||
("desktop-filesystem", 3, "applied", ""),
|
||||
]
|
||||
|
||||
|
||||
def test_mcp_snapshot_rejects_lower_version_without_changing_enabled_state(tmp_path):
|
||||
config = AgentConfig(tmp_path, tmp_path / "settings.json", tmp_path / "agent.sqlite3", tmp_path / "agent.log")
|
||||
service = AgentService.__new__(AgentService)
|
||||
service._config = config
|
||||
service._database = AgentDatabase(config.database_path)
|
||||
service._database.initialize()
|
||||
service._database.set_meta("mcp.desktop-filesystem.enabled", "true")
|
||||
service._database.set_meta("mcp.desktop-filesystem.version", "4")
|
||||
service.session = _Session()
|
||||
service.task_executor = _Executor()
|
||||
|
||||
service.apply_mcp_snapshot(
|
||||
{"tools": [{"id": "desktop-filesystem", "deployment_version": 3, "enabled": True, "scope": "desktop-directories"}]}
|
||||
)
|
||||
|
||||
assert service._database.get_meta("mcp.desktop-filesystem.version") == "4"
|
||||
assert service.task_executor.desktop_enabled is False
|
||||
assert service.session.acks == [("desktop-filesystem", 3, "failed", "拒绝低版本桌面文件工具部署。")]
|
||||
Reference in New Issue
Block a user