Commit graph

2,292 commits

Author SHA1 Message Date
atlas
442efa76f2 temp: add prettier configs 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
damocles
cafef519a9 dashboard frontend: consume rfc3339 timestamps from the api 2026-07-02 22:28:30 +02:00
damocles
bac2c0a65e hive-c0re: rfc3339 timestamps on dashboard api + sse json 2026-07-02 22:28:30 +02:00
damocles
cf3ac49729 hive-sh4re: wire_time serde adaptor - timestamps as rfc3339 on the wire 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
db85cdfdc2 docs(get_agent_meta): add matrix_accounts to tool description
The feat added matrix_accounts to the GetAgentMeta response in
commit 5b442796 but didn't update the MCP tool description string
that agents see when introspecting the tool. Add a brief note so
agents know to expect the field.
2026-07-02 16:38:42 +02:00
iris
26aba38fc6 fix(hive-forge): hint to stderr when list page is full (more results may exist) 2026-07-02 15:29:32 +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
1e15c8cc6b fix(dashboard): replace stale 'manager' with 'submitter' in approval UI text
Two operator-visible strings and one code comment still referenced 'the
manager' in the approval card UI:

- init_config card description: 'manager customises agent.nix before
  spawn' -> 'submitting agent customises agent.nix before spawn'
- deny form data-prompt: 'sent to manager' -> 'sent to submitter'
  (the deny note goes to the ApprovalResolved submitter, not a fixed
  manager role)
- code comment: 'surfaced to the manager via' -> 'surfaced to the
  submitting agent via'
- builds.html meta text: 'manager learns each outcome' -> 'the
  submitting agent learns each outcome'

The 'manager' role is no longer structural — root-ness is topological.
Any agent with the approvals tool group can submit; the note/event routes
to the submitter.
2026-07-02 14:15:07 +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
c89642872c recv/count/dedupe queries exclude acked rows — a pending row closed by ack_until must never pop (iris review) 2026-07-02 12:55:18 +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
damocles
ebb85e6291 fix(#2121): rebuild POST from agent term also missing api/ prefix (mara audit) 2026-07-01 19:33:25 +02:00
damocles
98b5e976af fix(#2121): add missing api/ prefix to answer-question POST from agent term 2026-07-01 19:33:25 +02:00
atlas
ae41e39dfb refactor(#2111): remove nixpkgs-unstable, source claude-code from main nixpkgs 2026-07-01 19:32:46 +02:00
iris
26dd8b0d34 docs(matrix-mcp): add send_file, download_file, unread guard to tools/matrix.md
The human-readable matrix MCP reference was missing three behaviours
documented only in the MCP server instructions string:

- send_file / download_file tools (issues 1829, 1830)
- [file:]/[image:]/[audio:]/[video:] attachment markers in read_room (issue 1830)
- unread guard: send_message, send_dm, send_file, send_reply all
  reject if the room has unread messages (issue 1828)
- send_redact (omitted from the tool list entirely)

Add all four to docs/tools/matrix.md to match the MCP server
instructions added in the previous commit.
2026-07-01 19:07:25 +02:00
iris
a35fd1dcf2 docs(matrix-mcp): document send_file, download_file, and unread guard in server instructions
The MCP server instructions string omitted three behaviours added in
earlier PRs, leaving agents without context on them:

- send_file / download_file tools (#1829, #1830)
- [file:]/[image:]/[audio:]/[video:] attachment markers in read_room (#1830)
- unread guard: send_message, send_dm, send_file, send_reply all
  reject if the room has unread messages; read_room + mark_read
  are required first (#1828)

Closes #1828. Closes #1829. Closes #1830.
2026-07-01 19:05:54 +02:00
damocles
d2a0493092 address mara: drop clippy allow on run_graceful_stop — return () since the body is infallible, wrap the dispatch arm 2026-07-01 19:05:24 +02:00
damocles
c7bac398b2 address mara: drop CompactionMode, always checkpoint-then-compact 2026-07-01 19:05:24 +02:00
damocles
fc42f97691 parallelize graceful agent drains, serialize container stops on fast lane; unify shutdown+checkpoint+compact prompt 2026-07-01 19:05:24 +02:00
damocles
f6d9ca7f99 fold forge_cursor into hyperhive-harness.json + prose comments (mara/argus review) 2026-07-01 18:52:56 +02:00
damocles
2549cc51ba fix(#2106): persist forge-notify dedupe cursor to disk so rebuilds don't re-deliver the unread backlog 2026-07-01 18:52:56 +02:00
iris
5264828091 fix: view-queue link + agent inbox shows unread messages only
fix(dashboard): update 'view queue' link to /builds.html

The build queue moved to its own /builds.html page. The queue-summary
'view queue →' link in tabs.js still pointed at /core.html, so clicking
it landed on the wrong page.

fix(broker): filter agent inbox to unread (acked_at IS NULL)

recent_for was returning all messages regardless of ack state, so the
agent inbox showed everything even after 'mark all read'. Now filters
to acked_at IS NULL — mirroring exactly what mark_all_read drains —
so the inbox empties on reload after the operator drains it.
2026-07-01 18:41:43 +02:00
damocles
a05d093d19 harden hive-mcp-http: restart=always + document failure-mode/port-collision (atlas review) 2026-07-01 18:39:28 +02:00