57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
import hashlib
|
|
|
|
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, str, str]] = []
|
|
|
|
def send_skill_ack(self, skill_id: str, status: str, error: str = "") -> None:
|
|
self.acks.append((skill_id, status, error))
|
|
|
|
|
|
class _Executor:
|
|
def __init__(self) -> None:
|
|
self.prefix = ""
|
|
|
|
def set_instruction_prefix(self, value: str) -> None:
|
|
self.prefix = value
|
|
|
|
|
|
def test_chinese_skill_name_installs_and_empty_snapshot_removes_it(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()
|
|
content = "# 图生图工具\n\n仅用于测试。"
|
|
skill_id = "a" * 32
|
|
|
|
service.apply_skill_snapshot(
|
|
{
|
|
"skills": [
|
|
{
|
|
"id": skill_id,
|
|
"name": "图生图工具",
|
|
"version": "0.3.2",
|
|
"content": content,
|
|
"checksum": hashlib.sha256(content.encode("utf-8")).hexdigest(),
|
|
}
|
|
]
|
|
}
|
|
)
|
|
|
|
assert (config.data_dir / "skills" / skill_id / "SKILL.md").read_text(encoding="utf-8") == content
|
|
assert service._database.get_meta(f"skill.{skill_id}.name") == "图生图工具"
|
|
assert service.session.acks == [(skill_id, "applied", "")]
|
|
|
|
service.apply_skill_snapshot({"skills": []})
|
|
|
|
assert not (config.data_dir / "skills" / skill_id).exists()
|
|
assert service._database.get_meta(f"skill.{skill_id}.name") == ""
|