From f7c8d4c14c46d13fc37d399c55ca8e8da0d44e01 Mon Sep 17 00:00:00 2001 From: iris Date: Thu, 12 Nov 2026 09:13:16 +0100 Subject: [PATCH] swarm-ui: the model and effort badges on an agent's terminal open its inference settings Clicking either opens the settings in a popover under the badge, the same panel the agent's card has. A subagent's terminal keeps plain badges. --- .../swarm-ui/src/agent/state/StateBadges.tsx | 57 +++++++++++++------ .../src/agent/terminal/AgentTermPreview.tsx | 9 ++- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/frontend/packages/swarm-ui/src/agent/state/StateBadges.tsx b/frontend/packages/swarm-ui/src/agent/state/StateBadges.tsx index a50e6d5e3..365a3f348 100644 --- a/frontend/packages/swarm-ui/src/agent/state/StateBadges.tsx +++ b/frontend/packages/swarm-ui/src/agent/state/StateBadges.tsx @@ -1,4 +1,6 @@ import { Badge, type BadgeTone } from "@hive/shared/badge.js"; +import { BadgePopover } from "../../ui/badge-popover/BadgePopover.js"; +import { AgentInference } from "../detail/AgentInference.js"; import { RelativeTime } from "../../ui/relative-time/RelativeTime.js"; import { useSwarmAgentStateStream, @@ -46,13 +48,20 @@ export function StateBadges({ ctx, cost, withModel = true, + agent, }: { header: NonNullable["header"]>; ctx: number | null; cost: number | null; // Off where the model is shown beside them, as in the details table. withModel?: boolean; + // The agent whose settings the model and effort badges open in a popover + // when clicked. Omitted: the badges only display. + agent?: string; }) { + const modelTitle = header.resolved_model + ? `resolved to ${header.resolved_model}` + : undefined; return ( <> )} - {withModel && ( - - )} - {withModel && ( - - )} + {withModel && + (agent === undefined ? ( + + ) : ( + + + + ))} + {withModel && + (agent === undefined ? ( + + ) : ( + + + + ))} {ctx !== null && ( )} - {header && } + {header && ( + + )} {header && subagent === undefined && (