Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/hive-sh4re/README.md
atlas 58ef299c3c hive-c0re: remove the approvals subsystem
Nothing submits an approval since scheduled prompts left hive-c0re, so the
queue only acted on rows written before that.

- hive-c0re: the approvals store and its migrations, approve/deny/
  resolve actions, the ResolveApproval tail node (and meta_update's
  approval_id), POST /api/approve and /api/deny, the approval views on
  /api/state, the approval_resolved dashboard event, the orphan GC,
  destroy/purge failing pending rows, and the approval rows in
  get_loose_ends. DestroyBookkeeping loses the purge flag, which only
  worded the approval-failure note.
- The CancelLooseEnd request goes: its only hive-c0re arm was the
  approval one. cancel_loose_end handles reminder and todo in the harness.
- Wire types: hive_sh4re::approvals (ReminderStats moves to inbox),
  LooseEnd::Approval, CancelLooseEndKind, HelperEvent::ApprovalResolved,
  ToolGroup::Approvals, HostRequest::{Pending,Approve,Deny} and
  HostResponse.approvals. HOST_SOCK_VERSION goes to 2 for the removed
  field.
- hivectl loses the approvals verbs; docs/tools/hivectl-cli.md is
  regenerated.
- The system prompt drops approval_resolved.
- The approvals table stays in broker.sqlite, unread, the same way the
  operator_questions table was left when its store was removed.
- An `approvals` entry still in tool-groups.json is skipped with a warning
  by ToolGroup::parse_list, like any unknown group.
- docs/agent-lifecycle/approvals.md is renamed to config-changes.md so the
  code's doc pointers resolve; its content follows in the docs commit.
2026-10-04 23:55:32 +02:00

32 lines
1.3 KiB
Markdown

# hive-sh4re
The **shared payload vocabulary** between `hive-c0re` and the in-container
harness — the common types (`Message`, `LooseEnd`, `HelperEvent`, …)
that the per-socket wire protocols are built from. The request/response
_envelopes_ themselves now live in the per-socket crates (below); this crate
holds the payloads they carry.
## Where it sits
This is the shared payload crate; the per-socket _protocol envelopes_ have been
split into their own smaller crates so specialised binaries don't have to pull
in all of `hive-sh4re`:
- `hive-host-sock` — host admin socket (`hivectl` ↔ `hive-c0re`)
- `hive-core-agent-sock` — per-agent/manager socket (`/run/hive/mcp.sock`)
- `hive-priv-sock` — the privileged-helper socket
Those crates re-export or reference the payload types that still live here
(`Message`, `LooseEnd`, …).
## Modules
- **`wire_time`** — the timestamp convention: wire fields are
`chrono::DateTime<Utc>` (serialized RFC 3339), while sqlite storage + input
args stay unix-epoch `i64`; this module owns the two boundary conversions.
- **`paths`** — well-known on-disk path helpers.
- **`assets`** — resolves bundled runtime asset paths (branding, prompts) under
`HIVE_ASSETS_DIR`.
Agent-name fields are typed as `hive_types::Ident` for serde-validated parsing at
the socket boundary.