hyperhive/hive-core-agent-sock
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 4121e11d87 hive-c0re: drop the subtree check from the scheduling verbs
The topology predicate `is_descendant_of` gated the four schedule-
managing verbs: a caller could only name a schedule owned by an agent at
or below itself in `topology.json`. Those gates now permit any requester,
so the predicate, its pure `_in` form and the `schedule_authorized`
wrapper built on it are gone rather than left returning a constant. The
other two wrappers went earlier with the verbs they served —
`require_descendant` with the lifecycle MCP verbs in 87970a8c, and
`resolve_agent_state_target` with `get_loose_ends`'s agent parameter.

`require_group(agent, "scheduling", ...)` is untouched and still fires at
dispatch for every one of the five scheduling verbs, so holding the tool
group remains the gate; what goes is the ownership restriction layered on
top of it.

The three schedule-mutating verbs keep their row lookup as a plain
existence check, so a caller naming a schedule that does not exist still
gets `not found` rather than a message from deeper in the cancel path.
`list_schedules` stops filtering per row: it would only have hidden rows
the requester may act on anyway.

Error messages, tool descriptions and docs that described the subtree
relation are reworded — a refusal message naming a topology that no
longer decides anything is worse than none.

The six `is_descendant_of_in` unit tests go with the function they test;
the permit behaviour they leave unasserted is picked up by the next
commit.

Refs #4472
2026-09-21 17:20:44 +02:00
..
src hive-c0re: drop the subtree check from the scheduling verbs 2026-09-21 17:20:44 +02:00
Cargo.toml docs(#2627): add READMEs for the remaining infra crates 2026-07-23 13:16:29 +02:00
README.md treefmt: apply prettier 2026-09-02 15:25:07 +02:00

hive-core-agent-sock

Wire types for the per-agent + manager socket (/run/hive/mcp.sock) — the unified Request / Response protocol spoken between an agent's in-container harness (and the manager) and the hive-c0re daemon.

Why it's its own crate

Re-homed out of hive-sh4re so this one socket owns its protocol crate, mirroring the hive-host-sock / hive-priv-sock splits. The shared payload types it references (Message, LooseEnd, Approval, …) stay in hive-sh4re, which this crate depends on — this crate is just the request/response envelope for this socket.

Not to be confused with hive-agent-sock

This is the host-served protocol: the harness talks out to hive-c0re over /run/hive/mcp.sock (broker sends, approvals, lifecycle). hive-agent-sock is the separate in-container socket the harness serves to its own local producers — that one never leaves the container. See docs/trust-boundary/boundary.md for the socket topology.