feat(operator): hh-agent manifest — VMs carry a self-describing handoff record

Add ICM-aligned agent-manifest tooling so a hack-house sandbox/VM can be
shared, traded, and resumed without a human briefing. manifest.py is a
dependency-light (stdlib + optional PyYAML) library + CLI that writes a
`.hh-agent/` bundle: manifest.yaml (canonical machine record) plus rendered
AGENT.md / last-state.md / summary.md / goals.yaml views.

Wire a `manifest` op into the operator bridge (push/pull/update) that moves the
bundle in and out of the *target sandbox* via the same exec path as write/get,
so the VM itself carries its purpose, goals, user intent, live state, and a
provenance chain — the unit of agent-to-agent work transmission. Pairs with
`spawn`: stamp → push → hand a child "load the .hh-agent manifest and continue."

Proven end-to-end against a real Kali podman container (push → on-disk verify →
update → pull-back) and covered by 6 new offline tests (34 green total).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
leetcrypt
2026-06-26 20:28:48 -07:00
parent 338e843e85
commit 19d5b80a2c
5 changed files with 608 additions and 0 deletions
+25
View File
@@ -103,6 +103,31 @@ Tokens combine: literal text types verbatim; named keys send control bytes;
**Rule:** end a stuck command with `ctrl-c`; if ignored, `ctrl-\` then `ctrl-c`
again. Always know how to exit an interactive program *before* you start it.
## 3b. Agent manifest — make a VM carry its own handoff record
A sandbox becomes **shareable/tradeable** when it documents itself. `manifest`
writes an ICM-style `.hh-agent/` bundle *inside* the target sandbox so the next
agent (human or a spawned Claude) can resume without a briefing:
```bash
# stamp a fresh VM with purpose, goal, user intent, stop conditions
$HH manifest push --root /root --name kali-recon-vm \
--purpose "Kali recon sandbox" \
--objective "map the target and hand off" \
--intent "tradeable VM state across handoffs" --stop "scan complete"
# as work progresses, record state + a provenance line
$HH manifest update --root /root --status done --progress "scan done" \
--done "ran nmap" --todo "exploit phase" --note "oracle → child handoff"
# what a spawn/handoff reads first to resume exactly where you left off
$HH manifest pull --root /root # → parsed manifest.yaml
```
Bundle written under `<root>/.hh-agent/`: `manifest.yaml` (canonical machine
record), `AGENT.md` (read this first), `last-state.md`, `summary.md`,
`goals.yaml`. The yaml is the source of truth; the rest are rendered from it.
Pair with `spawn`: stamp → push → spawn a child whose objective is "load the
`.hh-agent` manifest and continue."
## 4. Delegate to a local model (optional)
A room often has an `/ai <name>` Ollama agent. To offload a task, just `say`