import time
from amicus import core
from amicus import server as server_module
from pathlib import Path
from types import SimpleNamespace
# Create a SimpleNamespace to access underlying functions from FunctionTool wrappers
server = SimpleNamespace(
update_state=server_module.update_state.fn,
read_state=server_module.read_state.fn,
heartbeat=server_module.heartbeat.fn
)
def test_heartbeat(temp_context_dir, monkeypatch):
monkeypatch.setenv("CONTEXT_BUS_DIR", str(temp_context_dir))
core.set_tracking_enabled(True)
# Initialize state
server.update_state("S", [{"task": "N", "status": "TODO"}], [])
# Call heartbeat
result = server.heartbeat()
assert "received" in result
# Read state and check heartbeat
state = server.read_state()
assert "ACTIVE" in state
# Wait a bit or mock time to check stale (optional)