Watch
0
0
Fork
You've already forked hyperhive
0
Commit graph hyperhive/frontend/packages/swarm-ui/src/agent
Author SHA1 Message Date
iris
5d5df29687 swarm-ui: shared code leaves page folders; SectionHeading and Preformatted replace per-page copies
durationLabel moves to util.ts, termPaths to agent/terminal/term-paths.ts,
StateBadges and tokenTotal to agent/state, and TryOutResult to
pages/review-common, so the builds, runs and agent pages no longer import
across page folders. SectionHeading is the body-size section heading the
create form and the egress card each styled; Preformatted is the scrolling
text block of the builds tail and the AGENTS.md view, which now share one
chrome and are both keyboard-scrollable. The components page shows both.
2026-11-06 19:09:18 +01:00
iris
811b23cd6b swarm-ui: forms share one submit flow, result line and field column
useSubmit holds the idle, sending, done and error state and the request
flow that six forms each wrote out; FormResult shows the success line and
the problem panel; FormStack is the column the link, claude-login,
inference and limits forms each styled by hand. The create-agent, link
account, backend-env and agent-input forms use the submit flow; the link,
claude-login, inference and limits forms use FormStack.
2026-11-06 19:00:01 +01:00
iris
8a2e5203ad swarm-ui: shared Hint, ActionRow, Toolbar, EmptyState, ExternalLink and ExpandableCard replace per-page copies
Hint, ActionRow, Toolbar, EmptyState and ExternalLink replace the muted
text, button row, refresh bar, empty line and _blank anchor that each page
restyled under its own class. ExpandableCard (with a loading twin) holds the
builds and recent-runs cards, which had identical head and body CSS. The
create form's raw checkbox becomes CheckboxField. The components page shows
each new piece.
2026-11-06 18:41:25 +01:00
iris
a9f0d61daa swarm-ui: an agent's settings and AGENTS.md show placeholders while they load
BadgeSkeleton is the twin of Badge: the real Badge frame, as tall as an
interactive one (the settings values are buttons), with a placeholder for its
value. Permissions, resource caps, internet and allowed domains use it in place of
their "loading…" text, the details popover shows lines of text, and the
AGENTS.md editor a block, in place of theirs. SkeletonLines is a few stacked
lines for such blocks.
2026-11-06 17:27:55 +01:00
iris
38505a5864 swarm-ui: the egress icon is shown as an emoji like the others
The globe of the egress card and of the allowed-domains box showed as a
plain monochrome glyph where the bee and the bell were emoji: a font with a
text-style glyph for the globe won over the emoji font. The two globes now carry
the emoji variation selector, and a panel's icon asks for emoji presentation
(font-variant-emoji), so another icon cannot fall the same way.
2026-11-06 17:20:27 +01:00
iris
33c230665b swarm-ui: the permissions box lists every permission instead of a narrow scroll area
The checkbox list was capped at 12em and scrolled, and the box shrinks the
list to its widest label, so the scrollbar sat in the middle of the popover
with the lower permissions hidden. The permissions are a short fixed list:
MultiselectFilterOptions takes scrollable={false} and the permissions box
uses it. Filter lists that can grow long keep the scroll area.
2026-11-06 00:27:53 +01:00
iris
27c4a593bb swarm-ui: the agents page shows placeholder cards in the shape of the real ones while the roster loads
A new Skeleton (a shimmering shape, still where motion is off) and a region
that tells assistive tech once that something is loading. The agent card's
header is split into AgentCardLayout, a layout with a slot for each part: the
card fills the slots with the real icon, badges and controls, its new
AgentCardSkeleton twin fills the same slots with placeholder shapes, so the
card that replaces it lands in the same place. The agents page uses the twin in
place of its "loading…" text.
2026-11-06 00:22:58 +01:00
iris
4876acd02a swarm-ui: a group pane's maximize and close are icon-only badges in its top right corner
The two controls sat among the pane's header badges as a labelled badge and a
cross glyph. They are now icon badges in the top right corner, through a
`trailing` slot of the terminal preview, so the header on the left keeps the
agent, split, subagents and state badges and a narrow pane wraps less.
2026-11-05 13:33:12 +01:00
iris
d733b1e2a9 swarm-ui: choosing a subagent in the subagents menu splits its terminal in beside the agent's
The menu on an agent's terminal page used to open the subagent on a tab of
its own. It now starts a group of this terminal and the subagent's, split to
the right; in a group's pane it splits that pane. A pane's layout key is the
agent, or `agent/subagent` for a subagent's pane, so the layout operations
stay as they are and a destroyed agent takes its subagent panes with it. A
subagent already in the group shows a marker and does nothing when chosen,
and maximize opens a subagent pane's terminal on its own.
2026-11-05 12:45:35 +01:00
iris
839dbd642a swarm-ui: groups of agent terminals: drag a terminal tab onto a terminal to split it, tmux style, with resizable panes, a split button, and a name you can edit 2026-11-05 08:24:58 +01:00
iris
0421f28d49 swarm-ui: the egress card on the swarm page lists and edits the swarm-wide denied domains, and says which hives have not applied them 2026-11-04 23:53:03 +01:00
iris
7122a3a36d swarm-ui: test which entries the egress card lists and the swarm-wide add body 2026-11-04 21:19:39 +01:00
iris
ad76e7e937 swarm-ui: an egress card on the swarm page for the swarm-wide allowed domains, sharing the agent card's add form and list hook 2026-11-04 21:14:43 +01:00
iris
5541e3606b swarm-ui: give the badge row its own stylesheet, imported where it is used 2026-11-04 17:21:56 +01:00
iris
369946169c swarm-ui: show the inference settings and resource caps on one wrapping line each 2026-11-04 17:21:56 +01:00
iris
e70560c0ad swarm-ui: format the allowed-domains badge row 2026-11-04 17:21:56 +01:00
iris
c5eb13f826 swarm-ui: card the badge popover body and lay the allowed-domains badges out in a wrapping row 2026-11-04 17:21:56 +01:00
iris
9afe21819f swarm-ui: read the agent's grant once for the internet and permissions controls, and save one permission change at a time 2026-11-04 17:21:56 +01:00
iris
5e23734667 swarm-ui: restructure the agent card into status, terminal, subagents and settings, with badge controls for internet, permissions and allowed domains 2026-11-04 17:21:56 +01:00
iris
e8e6150137 swarm-ui: link an agent's forge profile and config repo from its overview
The agent card's overview gets a forge row with two links, built from
the forge entry of the swarm's service links.
2026-11-02 22:29:43 +01:00
atlas
3e5b5b54a2 swarm-ui: link a gitlab account to an agent 2026-11-02 17:57:15 +01:00
atlas
d6e983995d add external gitlab accounts: stored in bao, linked per agent, allowed in squid, usable with glab 2026-11-02 16:44:56 +01:00
atlas
83bb47d134 swarm-ui: turn an archetype agent into a custom one from its detail 2026-11-01 22:44:28 +01:00
iris
5b66a83112 swarm ui: the agent card has a terminal icon beside the wanted menu
It opens the agent's terminal tab without opening the card.
2026-11-01 12:51:59 +01:00
iris
a3628bd9ce swarm-ui: an agent card shows a chevron, and no select highlight
The card header gets the same chevron a folded card has, right while shut and
down while open. The outline for an opened card goes: the sections say it is
open.
2026-11-01 01:29:47 +01:00
iris
3058a5871e swarm-ui: drop the wanted menu's two dead options, and two stale test headers
showDestroy and portal were each passed by one caller, the old card and the old
table cell, and neither exists now. Two test headers still named the detail
panel.
2026-11-01 01:26:40 +01:00
iris
2eaa02e892 swarm-ui: the agents page is one column of cards that open in place
The roster loses its second column and its table view. Selecting a card opens
its details under it as four folded sections: overview, settings, accounts and
the terminal. The status, message and wanted rows, which the card header
already shows, are gone from the details. The terminal page's details dialog
keeps the flat list.
2026-11-01 01:21:43 +01:00
atlas
9193f37963 derive per-agent egress entries from operator-linked accounts 2026-10-30 12:28:51 +01:00
atlas
9140d063d7 offer the log mode in the swarm ui 2026-10-30 08:52:22 +01:00
atlas
7e2f4ce7c8 always include a hive's own allowedDomains in the rendered swarm-wide list 2026-10-29 08:25:22 +01:00
atlas
c5a876b845 derive an agent's backend hosts into the egress allow list at the controller 2026-10-29 08:25:22 +01:00
atlas
c9abc2a42b make squid's allowed domains editable at runtime in the swarm ui 2026-10-28 23:01:43 +01:00
iris
da5fcbfd9b subagents publish their model and effort as headers on every row, and the swarm shows them
The subagent daemon stamps Swarm-Model and Swarm-Effort on each row it
publishes. The list endpoint reads them off the newest row it already fetches,
so a long-running subagent keeps them past the stream's 24 hour window, and the
terminal page's menu and the agent panel's list show them beside the name.
2026-10-28 21:55:02 +01:00
iris
9b0c0ad7be swarm-ui: the cancel badge is a filled pill like its neighbours 2026-10-28 20:19:02 +01:00
iris
8060e91939 swarm-ui: the cancel badge clears when the next turn starts 2026-10-28 20:16:11 +01:00
iris
2f2b4aa9e2 swarm-ui: cancel turn is a badge over the terminal, not a button by send 2026-10-28 20:12:11 +01:00
iris
214d7000d3 swarm-ui: the agent terminal page gets cancel turn, effort, state age and the expand-output setting
The per-agent page had these and the swarm terminal did not; they need no new
backend. A cancel turn button beside send, shown while the agent is in a turn,
posts to the controller's existing cancel route and says whether a turn was
stopped. The terminal's badges add the effort and how long the agent has been in
its turn state. The expand tool output setting moves to the shared package so
both pages render the one component, and the swarm menu gets it. Docs follow.
2026-10-28 20:12:11 +01:00
iris
4d5a65a185 swarm-ui: a request that finds the login ended reloads the page to the login
The gateway answered every non-page request without a session with a login
redirect, which fetch and EventSource cannot follow across origins, so polls,
forms and streams failed with errors that said nothing about the session. It
now answers anything that does not ask for text/html with a 401 and a
WWW-Authenticate header, and the swarm UI reloads on that 401, from a wrapped
fetch (one place for every call) and from a probe after a stream dies. A second
reload within ten seconds is skipped so a page that keeps answering 401 cannot
loop. The proxy test and the docs follow.
2026-10-28 19:19:26 +01:00
atlas
57b04d6c49 let the operator set, replace and remove an agent's backend env from the swarm ui 2026-10-28 08:49:32 +01:00
atlas
10508895c4 swarm-ui: show and toggle an agent's unrestricted internet flag, add it to the create dialog 2026-10-27 14:45:04 +01:00
iris
209a286d7c swarm-ui: repoint the HivesPage comments at HivesCard and pin the nav filter and lazy roster 2026-10-26 17:56:10 +01:00
atlas
711e413901 swarm-ui: tooltip on the inert wanted badge says to create the agent at swarm level; docs note destroy needs it too 2026-10-25 16:09:14 +01:00
atlas
716290e4d2 swarm-controller: state route refuses an agent the swarm has not declared on that hive
A placing state is accepted only for an agent declared or queued on the hive; anything else gets 404 telling the caller to create it at swarm level. swarm-ui's wanted badge no longer offers a first declaration for an undeclared row.
2026-10-25 15:58:25 +01:00
iris
10b8422d93 swarm-ui: the state row offers reconnect when its stream closes, and says no report yet 2026-10-25 15:07:39 +01:00
iris
705160c0fd swarm-ui: move the terminal preview's state badges into a state row of the agent details table
The small preview in the detail panel keeps only the connection badge and
expand, and no longer follows the agent's state stream; the full terminal
tab keeps all its badges. The table gets a state row with the turn state, a
paused badge, and the context and billed tokens (not the model, which the
inference row shows). The preview's top padding drops to one badge row, and
the showHeaderBadges prop goes since the full-tab mount is now the only one
with badges.
2026-10-25 14:52:57 +01:00
iris
78c48272ee swarm-ui: edit an agent's permissions on its detail panel
The detail panel had editors for inference, instructions, resource caps and
accounts, but nothing for the permissions the swarm grants, which could only
be set at create time or with swarmctl. A permissions row shows the grant
(the default set, none, or the list) and an edit dialog ticks the catalogue
from GET /api/permissions and saves with PUT /api/agents/{agent}/permissions.
Ticking exactly the default set sends the DELETE, as the create form sends no
list for it.
2026-10-25 01:18:26 +02:00
iris
31b7452e56 swarm-ui: let a closed stream reconnect and a failed caps read retry
When the server answers an event stream with an error status the browser
gives up and the badge stayed on disconnected with nothing to press. The
terminal, its state header and the messages page now offer a reconnect,
and the one rule for the state after an error moved into a tested helper.
The resource caps panel gets a retry beside its error, and its loading
state announces itself.
2026-10-22 07:13:32 +02:00
iris
acf82beba3 swarm-ui: add CheckboxField and use it for the issue report toggle and the account delete option 2026-10-21 23:56:30 +02:00
iris
8917ba27b6 swarm-ui: one polled-resource hook for the refreshing pages
Each polling page repeated its own fetch-and-set code on a fixed timer,
so a slow answer could be overtaken by the next tick, an older response
could overwrite a newer one, and nothing aborted a request when the page
went away.

usePolled skips a tick while a request is in flight, aborts on unmount
or refresh, ignores answers from dropped requests, and keeps the last
good data under an error. The alerts, hives, agents, schedules, builds,
review runs and broadcast pages and the subagent list use it.
2026-10-21 23:05:35 +02:00
iris
e727774dc8 swarm-ui: show agent panel read failures as text and keep loaded data
Inference, resource caps and linked accounts showed a failed read as a
badge with the reason in a hover title, which keyboard and touch users
cannot read. They now use ApiErrorPanel, and a list that already loaded
stays on screen under a failed refetch.
2026-10-21 22:57:51 +02:00