Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/frontend
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 49b15e7775 review try-out: open a PR with the classifications on the page
The try-out page gets an "open a PR" button. It posts the page's
classifications to the new POST /api/review-classifier/open-pr, which
merges them by name into the repo's rules file on the default branch
and has the review-classifier forge account commit the result on a new
branch, review-classifier/<user>-<8 hex>, through the contents API. The
commit's author is the forge account named like the session's
Remote-User, read with the controller's admin token. The answer links
to the forge's compare page, where the user opens the PR as themselves.

The push uses the account's existing token from the store
(swarm/services/review-classifier/forge/token, scope write:repository),
so the account needs write access to the repo; a refused push answers
403 naming that. In a YAML rules file, the entries the merge leaves
alone keep their text, as long as the result reads back as the merged
list; otherwise the file is written out whole.

DefaultBranchFiles now carries each file's blob sha, which the forge
needs to replace a file, and the repo's web URL for the link.

Fixes #5259
Refs #5096
2026-10-14 18:36:36 +02:00
..
packages review try-out: open a PR with the classifications on the page 2026-10-14 18:36:36 +02:00
.gitignore frontend: add npm workspace scaffold under frontend/ 2026-05-23 14:51:01 +02:00
npm-deps-hash frontend: regenerate npm-deps-hash for the dompurify/marked workspace move 2026-09-13 20:23:51 +02:00
package-lock.json swarm-ui: read-only agent terminal page consuming the swarm term stream 2026-09-13 20:23:51 +02:00
package.json swarm-ui: bootstrap new swarm-level frontend (Preact + wouter + TS + JSX) 2026-08-11 21:31:44 +02:00
README.md docs(readmes): address audit 2026-10-02 11:40:07 +02:00

hyperhive frontend

npm workspaces project for the hyperhive browser-facing assets:

  • packages/shared/ — shared modules used by every surface (terminal pane, Catppuccin palette + body typography).
  • packages/dashboard/ — the hive-c0re dashboard SPA.
  • packages/agent/ — the per-container web UI (default agent page, stats, screen).
  • packages/swarm-ui/ — the swarm-level operator UI shell (hives, agents, jobs, issue-report pages).

Build

npm install            # one-off; uses the checked-in package-lock.json
npm run build          # builds every workspace into packages/*/dist/

The Rust binaries serve packages/dashboard/dist/ and packages/agent/dist/ via tower_http::ServeDir at runtime; nix/packages/frontend.nix wires up the build derivation. The services.hyperhive.agent.frontend.extraFiles option in agent.nix layers per-agent additions on top of the default agent dist.

Why npm + esbuild

  • Hermetic: dependencies vendored via the checked-in lockfile; buildNpmPackage in nix uses it as the source-of-truth so the output is reproducible without network access at build time.
  • esbuild: agent and swarm-ui are Preact apps; dashboard is a vanilla-JS + custom-element MPA with a few Preact-rendered pages (builds.js, swarm.js); shared holds both kinds of module. No framework runtime beyond Preact where it's used. Each workspace's build.mjs is a short esbuild script.
  • Single-PR migration: see the tracked design proposal and the four-commit shape (npm scaffold → nix derivations → container plumbing → Rust cutover).