circuitforge-core/tests
pyr0ball a54a530493 feat: agent watchdog — persist known nodes + auto-reconnect after coordinator restart
closes #15

- NodeStore: SQLite persistence for known agent nodes
  (~/.local/share/circuitforge/cf-orch-nodes.db)
  - upsert on every register(); prune_stale() for 30-day cleanup
  - survives coordinator restarts — data readable by next process

- AgentSupervisor.restore_from_store(): reload known nodes on startup,
  mark all offline; heartbeat loop brings back any that respond

- AgentSupervisor.register(): persists to NodeStore on every call

- cli.py coordinator: NodeStore wired in; restore_from_store() called
  before uvicorn starts

- cli.py agent: one-shot registration replaced with persistent reconnect
  loop (daemon thread, 30 s interval) — coordinator restart → nodes
  reappear within one cycle with no manual intervention on agent hosts

- 16 new tests: NodeStore (8) + AgentSupervisor watchdog (8)
2026-04-02 22:01:55 -07:00
..
test_documents feat: hardware detection, cf-docuvision service, documents ingestion pipeline 2026-04-02 18:53:25 -07:00
test_hardware feat: hardware detection, cf-docuvision service, documents ingestion pipeline 2026-04-02 18:53:25 -07:00
test_resources feat: agent watchdog — persist known nodes + auto-reconnect after coordinator restart 2026-04-02 22:01:55 -07:00
test_tasks fix(tasks): fix VRAM accounting race, lock scope, type annotations 2026-03-31 09:15:09 -07:00
__init__.py feat: scaffold circuitforge-core package 2026-03-25 11:02:26 -07:00
test_config.py feat: add config module and vision router stub 2026-03-25 11:08:03 -07:00
test_db.py feat: add db base connection and migration runner 2026-03-25 11:03:35 -07:00
test_llm_router.py feat: add LLM router (extracted from Peregrine) 2026-03-25 11:06:29 -07:00
test_stubs.py feat: add wizard and pipeline stubs 2026-03-25 11:09:40 -07:00
test_tiers.py feat: add generalised tier system with BYOK and local vision unlocks 2026-03-25 11:04:55 -07:00