jobq-wire: move the generic graph projection into its own crate
The wire types were in hive-host-sock, which is the host *socket* crate — so anything living there is core-shaped by construction, and the projection had quietly grown two core dependencies to match: it selected roots by matching NodeKind::Dag, and rendered payloads through free functions in hive-c0re that nothing obliged a second host to write. hive-jobq is the wrong home too. That crate is the scheduler — logic — and folding presentation in means every consumer of it carries a JSON vocabulary it may never serve. So: a new hive-jobq-wire. A host implements WireNode for its payload N and WireResource for its resource name R; GraphWire::wire_snapshot is blanket-implemented for Graph<N, R> when both hold, and for nothing else. A payload that has never said how it displays has no way onto the wire. wire_snapshot takes the roots to serve rather than reading Graph::roots itself. Nothing is ever removed from a Graph, so retention is a policy only the host can hold; hive-c0re passes visible_roots(), which is the existing MAX_HISTORY_DAGS bound selected structurally (a root is a node with no parent) instead of by node kind.
This commit is contained in:
parent
f357f98867
commit
7966d5eb66
14 changed files with 564 additions and 297 deletions
|
|
@ -63,6 +63,13 @@ hand-maintained per-file tree drifts out of sync with the code.
|
|||
remaining `job_queue/` module is the c0re-specific layer *over* this
|
||||
crate, and is being removed in favour of it — new scheduler-shaped code
|
||||
belongs here, not there.
|
||||
- **`hive-jobq-wire/`** — wire types for serving a `hive-jobq` graph to a
|
||||
viewer, plus the `WireNode` / `WireResource` traits a host implements to
|
||||
say how its `N` and `R` render. Deliberately *not* part of `hive-jobq`:
|
||||
that crate is logic, this is presentation, and folded together they
|
||||
remix. `GraphWire::wire_snapshot` is blanket-implemented for any
|
||||
`Graph<N, R>` whose parameters implement both — so a payload that has
|
||||
never said how it displays cannot reach a viewer at all.
|
||||
- **`hive-screen-mcp/`** — stdio MCP bridge for GUI agents
|
||||
(`hyperhive.gui.enable`): `screenshot` via `grim`, `type_text` /
|
||||
`key_press` via `wtype` (Wayland virtual-keyboard protocol), and
|
||||
|
|
|
|||
Loading…
Reference in a new issue