| Filename | Latest commit message | Latest commit date |
|---|---|---|
fetch_total read issue_get_issue's comments field, Forgejo's running counter on the Issue object that also increments for several non-prose event kinds (review_request, issue_ref, comment_ref, pull_push, ...) that issue_get_comments never returns. Diffing that count against a fetched window reported drift that was never real: a comment that would never be shown at any window size. Live repro on PR #4333 (damocles's diagnosis on the issue): more_after: 2, both events non-prose. Fix: read the total straight off issue_get_comments's own X-Total-Count header instead — the same endpoint that produces the window, so the two populations can never drift apart again. Mirrors timeline.rs's own fetch_total, which made the same move for its endpoint first. fetch_head now captures the header from the request it already makes (one fewer round trip in the --limit path); the --tail/default path still probes once via page_size=1, same shape as before but now scoped to the endpoint that actually produces the window. This also fixes the more serious half: fetch_tail derives its pagination offset (which page holds the tail) from the same total, so an inflated total didn't just skew the trailer's count, it could send the offset math reaching for a page beyond the real thread's end, returning fewer rows than requested or none at all when fetch_tail's empty-page guard tripped. New test pins this against fetch_tail's existing pagination-plan helper. Refs #4335 |
||
| .. | ||
| 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.