| Filename | Latest commit message | Latest commit date |
|---|---|---|
Nine of the 38 .nix tokens mentioned anywhere in *.rs did not name anything that exists. Twelve mentions, five distinct targets: hive-c0re.nix, hive-gateway.nix and hive-forge.nix are all directories now; nix/modules/ is not a directory we have; hive-forge-tools.nix was a bash script the binary replaced and is gone. Where the reference is load-bearing it is corrected rather than deleted, because the reference is the point: a comment saying a constant must match a nix literal is only useful if you can open the file it names. Where the module member was unambiguous the path now names it exactly. paths.rs's STATE_ROOT marker was the worst of them: it claimed the value came from services.hyperhive.c0re.statePath, in hive-c0re.nix. Neither exists. The option is not declared anywhere and the file is a directory, so a "must match" contract pointed at two things that cannot be opened. /var/lib/hyperhive is hardcoded on both sides, which is what the comment now says. hive-forge-tools.nix keeps no replacement: naming a file that was deliberately deleted helps nobody, and "replaces a prior bash script" is complete without it. Measured before and after with the same command: 9 unresolved of 38 before, 4 of 35 after. The remaining four are an example path in a doc comment, an upstream nixpkgs path, and two from one synthetic test fixture. |
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
hive-forge
Typed CLI wrapper around the in-cluster Forgejo's REST API — issues,
PRs, comments, labels, reviews, CI status, attachments, triage.
Replaces the old bash-script wrapper so agents and operators get
consistent error handling, exit codes, and JSON shapes. This is the
only supported path to the forge from inside an agent container;
never curl it directly.
Reads credentials from the environment (HIVE_FORGE_URL,
HYPERHIVE_STATE_DIR); -f/--forge <label> retargets a
dashboard-provisioned external forge account instead. The active repo
resolves -r/--repo > the origin remote of the cwd's git checkout >
HIVE_FORGE_REPO (last-resort override, unset by default) > a hard
error — see client::Client::from_env.
When to use it
Reach for this crate when adding or changing a forge verb — it's the
single place issue/PR/comment/CI logic lives for every agent and
hivectl. Adding a tool an agent's claude session calls is
hive-agent-mcp wrapping a shellout to this binary, not new logic
here.
Shape
verbs/— one module per subcommand (clapArgs+run).client.rs— the Forgejo client wrapper + token loading.notify.rs— the read-before-comment guard, backed by forge's own notification read-state (no local mirror to drift).body.rs— shared--body/--body-file/stdin resolution.
Full verb reference: docs/tools/forge.md.