Add a QMP client module for the web UI

Wraps the connect/negotiate/command dance with a lock, since only one client
can hold the QMP socket at a time. Events interleave with replies, so command()
reads until it sees the matching return rather than trusting the first message.

Connection failure carries the reason and the likely cause: key.py already
holding the socket.
This commit is contained in:
mckero committed 2026-08-28 04:29:11 +01:00
1 parent b246132a35
commit 59ca82403f
3 files changed
+164

No files matched your search

+3
View File
@@ -10,3 +10,6 @@ build/
# Screenshots used in the README are committed on purpose.
!docs/screenshots/*.png
# Plan documents from the plan skill: local working notes.
.hermes/