Files
OpenMesh/tests/test_wake_resume.py
zhaolei 6f402ffcee
Some checks failed
CI / pytest (push) Has been cancelled
CI / gui-unit (push) Has been cancelled
CI / gui-e2e (push) Has been cancelled
feat: OpenMesh 基础平台与 MD/PDF 转换技能
- 后端: coworker 智能体框架, WS API, 文件上传, 附件处理
- 前端: Open WebUI, 文件全量走 upload API (含 MD/TXT/JSON 等文本类)
- 技能: md-to-office (pandoc + wkhtmltopdf)
- 修复: 上传文件路径丢失, Agent 搜索浪费, 输出文件跑到 uploads/
- 打包: PyInstaller one-dir, 预打包 pandoc/wkhtmltopdf/chromium
2026-09-13 23:41:04 +08:00

63 lines
1.8 KiB
Python

"""Phase 3 wiring — self-wake tools registered, scheduler resume hook, wake messages."""
from __future__ import annotations
import asyncio
from coworker.agent import build_engine
from coworker.agents.code import code_agent
from coworker.agents.cowork import cowork_agent
from coworker.automation.scheduler import Scheduler
from coworker.selfwake import Wake, WakeStore
from coworker.server.manager import SessionManager
class _FakeStore:
def due(self):
return []
def test_scheduler_runs_extra_tick():
async def run():
hits = {"n": 0}
async def extra():
hits["n"] += 1
sched = Scheduler(_FakeStore(), runner=None, extra_tick=extra)
await sched._tick(trigger="schedule")
assert hits["n"] == 1
asyncio.run(run())
def test_wake_messages_by_kind():
timer = Wake("1", "s1", "timer", note="poll")
completion = Wake("2", "s1", "completion", job_id="job-9")
event = Wake("3", "s1", "event", event_key="pr-opened")
assert "timer" in SessionManager._wake_message(timer)
assert "poll" in SessionManager._wake_message(timer)
assert "job-9" in SessionManager._wake_message(completion)
assert "pr-opened" in SessionManager._wake_message(event)
def test_selfwake_tools_registered_for_knowledge(tmp_path):
engine = build_engine(
agent=cowork_agent(),
workspace=tmp_path,
wake_store=WakeStore(tmp_path / "wakes.json"),
session_id="s1",
)
names = set(engine.registry.names())
assert {"sleep_until", "wake_on", "wake_on_event"} <= names
def test_selfwake_tools_absent_for_code(tmp_path):
engine = build_engine(
agent=code_agent(),
workspace=tmp_path,
wake_store=WakeStore(tmp_path / "wakes.json"),
session_id="s1",
)
assert "sleep_until" not in set(engine.registry.names())