Commit graph hyperhive/docs
Author SHA1 Message Date
iris
b41e3276c3 docs(turn-loop): add dedicated section for hyperhive.docs.enable agent.nix option
The option was only mentioned in passing in the system-prompt render
section. Add a proper ### section (following the pattern of Agent icon,
user.passwordlessSudo, etc.) with the nix snippet, default, effect on
$HIVE_DOCS_DIR + system prompt, and a note on the narrow docs flake
input that avoids full container rebuilds on doc edits.
2026-07-04 14:31:39 +02:00
iris
527022c5f2 fix: correct 409 endpoint name — /api/loose-ends not /api/state 2026-07-04 13:52:49 +02:00
iris
8e441ead93 docs(agent-ui): document HTTP error codes for POST endpoints
After the fix in c708f698, POSTs no longer always return 200 — they use
semantic status codes: 400 for bad input, 409 for retryable state
conflicts (turn in flight, hive-c0re busy), 500 only for genuine failures.
Update the preamble to the Per-agent endpoints section to reflect this.
2026-07-04 13:52:49 +02:00
iris
174876094e docs(observability): document OTEL configuration options
Add docs/observability.md covering all services.hyperhive.otel.*
options: enable, endpoint, protocol, headersCredential,
extraResourceAttributes, debug (new in cb0a66147a), and
metricIntervalMs.

Includes:
- Built-in OTEL_RESOURCE_ATTRIBUTES labels (service.name, agent, hive, swarm)
- Cumulative temporality note (avoids Prometheus DELTA drop)
- Network note for host-side collectors on non-standard ports,
  cross-referencing docs/network.md exposeHostPorts

Also:
- CLAUDE.md: add reading-path entry for the new doc
- docs/network.md: link the OTEL mention to observability.md

Closes no issue — gap found during doc sweep.
2026-07-04 13:17:42 +02:00
iris
2f8e9e2bb4 docs(turn-loop): document docs-pointer system-prompt injection, drop stale CLAUDE.md mention 2026-07-04 13:13:33 +02:00
iris
cea2f2faff docs(terminal-rendering): expand fmtToolUse description to cover new cases
The renderer dispatch section only mentioned recv and Bash as fmtToolUse
examples. Update the description to cover the full range: matrix tools,
remind, scheduling, and the fmtArgsGeneric fallback.
2026-07-04 13:12:17 +02:00
iris
44bb64fa1f docs(terminal-rendering): fix stale send_message fmtArgsGeneric example
mcp__matrix__send_message now has a specific fmtToolUse case and no
longer falls through to fmtArgsGeneric. Update the prose to reflect
that common tools have specific cases.
2026-07-04 13:12:17 +02:00
iris
6c56bf76d6 feat(agent-term): matrix-tool icons + formatters, fill remaining fmtToolUse gaps
Add specific icons for matrix tools that had the generic 💬 fallback:
- mcp__matrix__read_room → 📖
- mcp__matrix__mark_read → 👁️
- mcp__matrix__list_rooms / list_room_members / list_invites → 📋
- mcp__bash__kill → 🛑 (was generic 🔧)

Add fmtToolUse cases for high-use tools that fell through to fmtArgsGeneric:
- set_status: 'set_status* "idle"' instead of 'set_status text: "idle"'
- get_loose_ends: 'get_loose_ends* [iris]' or 'get_loose_ends*()'
- get_agent_meta: 'get_agent_meta* iris' or 'get_agent_meta*()'
- cancel_loose_end: 'cancel_loose_end* question #42'
- bash kill: 'kill* abc123 [force]'
- Matrix tools: 'read_room* !abc1234 [50]', 'mark_read* !abc1234',
  'send_message* → !room: "body"', 'send_dm* → @mara: "body"',
  'send_reply*', 'send_reaction*', 'join_room*', 'open_dm*',
  'invite_user*', 'download_file*'

Also extend the short-name shortening to cover mcp__matrix__ prefix
(was only hyperhive + bash), so matrix tool rows show 'read_room*'
instead of 'mcp__matrix__read_room' as the prefix.

Two small helpers added: fmtRoom (truncates !id before ':' for
readability; keeps #alias intact) and fmtUser (@user:server → @user).

Closes #2198. Updates terminal-rendering.md icon list.
2026-07-04 13:12:17 +02:00
iris
fc415a72a5 docs: update stale tabs.js→swarm.js/call.js references
After the SW4RM and Y3R C4LL extractions from tabs.js (PRs merged
earlier), several docs still pointed at `assets/tabs.js::fn`. Update
them to the authoritative module:

- dashboard.md: renderContainers, buildAgentTree → swarm.js
                renderApprovals → call.js
                renderPeerHives → swarm.js
- shape.md: generic "tabs.js render function" → "domain module"
- conventions.md: clarify async-form listener lives in tabs.js (dashboard)
                  AND app.js (per-agent UI)
2026-07-04 12:07:14 +02:00
iris
1011428cc7 docs(terminal-rendering): document plugin_install, commands_changed, compact_boundary rows
The renderer dispatch section was missing entries for three system
subtypes that now have specific renderers (added in the preceding
commits on this branch). Update the row taxonomy table and the
numbered dispatch description to cover all four system-subtype
handlers (thinking_tokens was already documented; 1b–1e are new).
2026-07-04 11:59:37 +02:00
damocles
78396c8189 recv: cap batch size at 5, default stays 1 (#2150 clarified) 2026-07-03 18:50:21 +02:00
damocles
ee45db6323 Revert "recv mcp tool: default max to a small batch of 5 (wire default stays 1)"
This reverts commit b8d608d4b6a7ed95faffdec8d8b3167ae8f3b39e.
2026-07-03 18:50:21 +02:00
damocles
d46d3c261b recv mcp tool: default max to a small batch of 5 (wire default stays 1) 2026-07-03 18:50:21 +02:00
damocles
f310b1ce5a config mirror: never force-push — keep forge history on rolled-back deploys 2026-07-03 00:54:32 +02:00
iris
7391900b88 fix(web-ui/dashboard): correct BU1LDS stream paths — /dashboard/stream → /api/dashboard/stream and /build-logs/stream/{id} → /build-logs/id/{id}/stream 2026-07-03 00:50:32 +02:00
iris
a589acf4d1 docs(web-ui): update C0R3/L0GS/BU1LDS page docs to reflect build queue move
R3BU1LD QU3U3 and M3T4 1NPUTS moved from /core.html to /builds.html
(the BU1LDS page); the BUILD log tab moved from /logs.html to /builds.html.
dashboard.md still described the old 4-tab C0R3 page and 4-tab L0GS page.

Changes:
- C0R3 page section: update to the actual 2 tabs (K3PT ST4T3 +
  C0NT41N3R L04D); add pointer to BU1LDS page
- Add new BU1LDS page section: R3BU1LD QU3U3 (with all 9 queue kind
  glyphs + deferred-start parent_id note), M3T4 1NPUTS, BUILD L0GS
- L0GS page section: update to actual 3 tabs (AGENT / SYSTEM / AUDIT);
  remove BUILD sub-tab prose; add pointer to BU1LDS page
- Fix two stale 'C0R3 page R3BU1LD QU3U3' refs to 'BU1LDS page'
- web-ui.md index: mention BU1LDS alongside C0R3 and L0GS
2026-07-03 00:50:32 +02:00
iris
b63c6c543d docs(web-ui/dashboard): document K3PT ST4T3 stale perms + active model badge
Two undocumented features from recent commits:

feat(core) 6ab0757cc6: K3PT ST4T3 now has two
sub-sections — tombstones (existing) and a new 'stale permission entries'
list showing agents with capability/tool-group JSON entries but no live
container. Lazy-loaded, auto-refreshes on capabilities_changed +
tool_groups_changed; each entry has a 'clear perms' button.

feat(dash) 4375ab6246: container rows show an
active model badge (blue) when the container is running and the harness has
persisted a model name in harness/hyperhive-model. Stale values suppressed
for stopped containers.
2026-07-03 00:13:13 +02:00
iris
2717c2f305 docs(web-ui/agent): add POST /api/effort and effort_changed to endpoint + event list 2026-07-02 23:34:13 +02:00
atlas
8406a45275 feat(#1997): add prettier markdown formatter to treefmt
- .prettierrc: proseWrap=preserve (no prose reflow)
- .prettierignore: exclude hivectl-cli.md (auto-generated) + 11 docs
  with multi-line list-item continuations prettier would strip to col 0
  (CommonMark limitation in prettier's list handling)
- format 16 markdown files: cosmetic only (*→_, table alignment,
  heading normalisation) — verified no broken continuations, idempotent
2026-07-02 23:33:11 +02:00
iris
e5916f95a3 docs(web-ui/dashboard): fix wrong API paths and add missing build-log + schedule endpoints
Several paths in the dashboard docs had bugs:

- /dashboard/stream and /dashboard/history were missing the /api/
  prefix (7 occurrences). Verified correct paths from frontend source:
  flow.js:212 ('/api/dashboard/history'), core.js:305, tabs.js:1517,
  builds.js:624 (all '/api/dashboard/stream'); backend routes match.
- GET /api/build-logs/stream/{id} was wrong; the actual route (and
  what common.js:323 calls) is GET /api/build-logs/id/{id}/stream.

Also adds two missing endpoint entries to the API reference section:

- GET /api/build-logs/id/{id}/stream (the live SSE stream)
- GET /api/build-logs/id/{id}/raw (the plain-text download link)
- POST /api/schedules/{id}/pause and /resume (mentioned in prose at
  the SCH3DUL3S section but absent from the endpoint list)

The POST /meta-update prefix fix is already in-flight on a separate
branch; left untouched here to avoid conflict.
2026-07-02 23:20:36 +02:00
iris
7d8ca1f63a docs(web-ui/agent): add GET /api/bash-tasks and GET /icon to endpoint list 2026-07-02 22:30:50 +02:00
iris
6999217c29 docs(ci): document actions/checkout mirror + forge.mirrors option
feat(#2072) auto-seeded an actions/checkout pull-mirror when
forge.ci.enable is set, pointing Forgejo DEFAULT_ACTIONS_URL at the
local instance so CI uses: steps resolve on loopback. Also added a
general-purpose forge.mirrors option for pre-seeding any upstream
repo as a pull-mirror. Neither feature was documented in docs/ci.md.
2026-07-02 22:29:58 +02:00
iris
f90c4a0ca9 docs(web-ui/dashboard): document merge_config_pr approval card rendering
- Per-kind glyph/chip/sha table covers all 6 kinds: apply_commit (→,
  apply), merge_config_pr (⇒, merge-pr), update_meta_inputs (↻,
  meta-update), schedule_prompt (⏱, schedule), init_config (⊕, init),
  spawn (⊕, spawn)
- Document 'review PR on forge ↗' link in the what-changed body
- Clarify inline diff side-panel is apply_commit-only
- Supersedes #1939 (lexis's PR)

Closes #1939.
2026-07-02 22:29:12 +02:00
damocles
d13ed94309 docs: rfc3339 wire timestamps convention + audit-log field notes 2026-07-02 22:28:30 +02:00
iris
e5e62ad2e6 docs(web-ui/dashboard): fix missing /api/ prefix on meta-update endpoint
POST /meta-update was documented without the /api/ prefix in two
places (BU1LDS section prose + endpoint list). The actual route is
/api/meta-update (hive-c0re/src/dashboard.rs).
2026-07-02 22:14:31 +02:00
iris
d5a27a5823 docs(web-ui/dashboard): fix missing /api/ prefix on reminder endpoints
/cancel-reminder/{id} and /retry-reminder/{id} were documented without
the /api/ prefix in two places (SCH3DUL3S tab prose + endpoint list).
The actual routes (hive-c0re/src/dashboard.rs) and the frontend JS
(tabs.js) both use /api/cancel-reminder/ and /api/retry-reminder/.
2026-07-02 22:14:31 +02:00
damocles
224cb06004 rename pr verbs per review: request-review -> assign-reviewer, assign -> assign-committer 2026-07-02 22:14:29 +02:00
damocles
a97d159009 hive-forge: pr request-review verb — set/withdraw requested reviewers (closes #2153) 2026-07-02 22:14:29 +02:00
damocles
2f43077e31 rename choom flag --continue to --resume to match the claude flag it maps to (mara review) 2026-07-02 20:51:20 +02:00
damocles
4e7a9b93d9 choom: map --continue <id> to claude --resume — claude's own --continue takes no value (closes #2127) 2026-07-02 20:51:20 +02:00
iris
9727cee9bd docs: add infra_admin capability to tables; fix get_agent_meta matrix_accounts in turn-loop 2026-07-02 15:29:14 +02:00
iris
3ee831ccdd docs(tools/forge): document repo-create, repo-add-collaborator, repo-labels verbs 2026-07-02 15:28:45 +02:00
iris
0de8c37233 docs(turn-loop): document ack_until tool + [msg #id] markers in recv/wake prompt
ack_until was added to the messaging group by the ack_until feature
but was missing from the turn-loop.md MCP surface documentation
entirely. Add it to:

- Messaging group signature list
- recv bullet: mention that each row is prefixed with [msg #<id>]
  so agents know what id to pass to ack_until
- New ack_until bullet explaining recipient-scoped bulk-triage use case
- Wake prompt section: mention the [msg #<id>] prefix and its purpose
2026-07-02 15:28:25 +02:00
iris
2b3dfeb23b docs(tools/scheduling): fix stale edit_schedule interval_seconds doc
The edit_schedule MCP tool accepts interval_seconds as Option<u64>
(positive values only), mapping None→leave-alone and Some(v)→set.
The handler wraps this as .map(Some) before dispatching, so there
is no way to express Some(None) = clear via the agent surface.

The old doc said 'Clearing interval_seconds to null flips
recurring → one-shot' which is only true for the dashboard
PATCH endpoint (which uses the full double-Option form).

Corrected: interval_seconds is positive-only via the MCP tool;
toggling recurring→one-shot is operator-only via the dashboard.
2026-07-02 14:26:16 +02:00
iris
dd67cfbe97 docs(tools/bash): fix stale sh -c -> bash invocation note
feat 2d97401f changed the bash runner from sh to bash but
docs/tools/bash.md still said 'sh -c <cmd>'. Correct to 'runs via
bash'.
2026-07-02 14:15:49 +02:00
iris
64d60e5cdb docs(turn-loop): mention kill in bash allowed-tools note
The allowed-tools note only named run/status; kill is also always
available since the bash MCP server uses allowedTools = ["*"].
Reword to name all three and explain the wildcard mechanism.
2026-07-02 14:15:49 +02:00
iris
eb04225ddf docs(tools/bash): add killed to status tool status enum
The kill tool (previous commit) produces the 'killed' terminal status,
but the status tool docs listed only pending/running/done/timed_out/
interrupted. Add 'killed' to complete the enum.
2026-07-02 14:15:49 +02:00
iris
c7c2536e34 docs(tools/bash): document mcp__bash__kill tool
feat b16629801b added the kill tool to
hive-bash-mcp but docs/tools/bash.md wasn't updated. The tool was
described only in the MCP server tool-description string; add a proper
section to the reference doc.

kill(id, force?) fires SIGINT (force: false, default) or SIGKILL
(force: true) to the task's process group. Fire-and-forget — the
completion wake fires as usual. A pending task is cancelled outright.
Escalation pattern: SIGINT first, then force: true if it doesn't exit.
2026-07-02 14:15:49 +02:00
iris
9162ce7dc7 docs(turn-loop): document active bash tasks in get_loose_ends output
feat 3c853c2b58 added active bash tasks
to the get_loose_ends response but only updated the MCP server tool
description string; the docs/turn-loop.md entry for the tool still only
mentioned questions and reminders.

Add 'active local tasks published by external MCP daemons (e.g. running
bash tasks from hive-bash-mcp)' to the tool description so agents
reading the reference docs see the full picture.
2026-07-02 14:15:49 +02:00
iris
3036472a55 docs(tools/forge): note that comments verb includes PR review bodies
hive-forge comments on a PR now merges review bodies (the summary
text from approve / request-changes / comment reviews) into the
comment listing, fixed in 1cff77f5. The verb list inline comment and
the 'Which read verb when' table row both said 'only the comments'
which was stale. Updated both to reflect the review-body inclusion.
2026-07-02 14:15:46 +02:00
iris
2f504247ed docs(turn-loop): document optional HTTP MCP transport (httpPort)
When hyperhive.mcp.httpPort is set in agent.nix, the hive-mcp-http
systemd daemon runs the embedded MCP server as a persistent streamable-
HTTP service; claude-mcp-config.json points at the HTTP URL instead of
spawning a stdio child per turn. Document both modes in the subcommand
list and the on-boot files section.
2026-07-02 14:15:46 +02:00
iris
f965e35761 docs(web-ui/agent): fix stale /answer-question/{id} → /api/answer-question/{id}
Both loose-ends flyout and ask-bind prose referenced the bare path
without the /api/ prefix. The code was fixed in 98b5e976 to use the
correct path; dashboard.md already documents it correctly as
POST /api/answer-question/{id}. Align agent.md to match.
2026-07-02 14:15:46 +02:00
iris
2c317c1106 docs(web-ui/agent): update inbox flyout to reflect unread-only filter
The broker's recent_for was fixed to filter acked_at IS NULL (commit
5264828091), so the agent inbox flyout
now shows only unread messages and empties after 'mark all read'.

The agent.md prose still described the old behaviour ('shows the
most-recent N regardless of ack state; the list stays put after drain').
Update it to match: unread-only, list empties on reload after drain.
2026-07-02 14:15:24 +02:00
iris
1b8e275f4d docs(dashboard): document schedule pause/resume toggle in SCH3DUL3S tab
The schedule pause/resume button (added in PR #2053) was missing from
the dashboard.md SCH3DUL3S tab docs. The action column listed only three
actions (fire-now, edit, cancel); the pause/resume toggle was undocumented.

Add the full action-column breakdown with the pause/resume semantics:
- paused rows show a 'paused' badge in the next column
- sorted middle bucket (after active, before cancelled)
- fire-now button is disabled while paused
- routes to /api/schedules/{id}/pause or /resume
2026-07-02 14:15:18 +02:00
iris
1150cbfbb4 docs: add missing startup_sweep to source chip list in dashboard.md 2026-07-02 14:15:04 +02:00
iris
688531030b fix(builds): add missing start/stop/graceful_stop kind glyphs to QUEUE_KIND_GLYPH
The QueueKind enum has graceful_stop, start, and stop variants but the
dashboard QUEUE_KIND_GLYPH map only covered rebuild/meta_update/spawn/
destroy/restart/startup_sweep/perm_change — the three missing kinds
rendered as '?' in the build queue UI.

This became visible with the deferred start-after-rebuild change: a fast-lane
Start entry now appears as a child of its Rebuild parent, but showed the
fallback '?' glyph.

Glyphs assigned: graceful_stop=⏹, start=▶, stop=■.

Also update the dashboard.md kind-glyph list to include all nine kinds and
note that deferred start-after-rebuild entries also use parent_id grouping.
2026-07-02 14:15:04 +02:00
damocles
383bb3b083 make the forge-notify cursor bound explicit: shared fetch-limit const + assert + docs (closes #2117) 2026-07-02 12:57:55 +02:00
damocles
34374fd10a add ack_until: bulk-ack inbox messages by id + surface msg ids in wake prompts and recv (closes #2125) 2026-07-02 12:55:18 +02:00
damocles
b191858366 defer start-after-rebuild to the fast lane so the build lane frees up (closes #2094) 2026-07-01 23:37:13 +02:00
atlas
ae41e39dfb refactor(#2111): remove nixpkgs-unstable, source claude-code from main nixpkgs 2026-07-01 19:32:46 +02:00