agent page: consolidate alive/thinking/paused into one status badge
mara, #3757: fold the separate alive badge into the turn-state badge, with pause/resume + cancel-turn moved into its dropdown. Cancel-turn is click-again-to-confirm, not a modal. model/effort/ctx/cost stay as separate badges — not asked to fold those in too.
This commit is contained in:
parent
d6ca52535f
commit
1e4399d49e
5 changed files with 135 additions and 71 deletions
|
|
@ -142,10 +142,8 @@ export function Root() {
|
|||
<>
|
||||
<Header label="…" pills={pills}>
|
||||
<StatusChips
|
||||
aliveLabel="… connecting"
|
||||
aliveTone="neutral"
|
||||
stateLabel="… booting"
|
||||
stateTone="neutral"
|
||||
statusLabel="… connecting"
|
||||
statusTone="neutral"
|
||||
model=""
|
||||
availableModels={[]}
|
||||
onSelectModel={() => {}}
|
||||
|
|
@ -175,6 +173,24 @@ export function Root() {
|
|||
const effectiveTurnState = state.status === 'online' ? state.turn_state : 'offline';
|
||||
const turnDef = STATE_LABELS[effectiveTurnState] ?? { glyph: '○', text: 'offline', tone: 'negative' as BadgeTone };
|
||||
const stateAge = fmtAge(Date.now() - state.turn_state_since * 1000);
|
||||
// Consolidated status badge (mara: "why do we have separate alive
|
||||
// badge? ... one badge that shows thinking / idle / paused").
|
||||
// Not online → the alive-table's own reading (rate-limited/needs-login/
|
||||
// offline), no age (nothing to age). Online + paused → 'paused'
|
||||
// overrides the turn-state reading, since a paused agent won't be
|
||||
// thinking regardless of its last turn_state. Online + running →
|
||||
// turn-state + age, same as before.
|
||||
const primaryStatus =
|
||||
state.status !== 'online'
|
||||
? { glyph: alive.glyph, text: alive.text, tone: alive.tone, tooltip: undefined as string | undefined }
|
||||
: state.paused
|
||||
? { glyph: '⏸', text: 'paused', tone: 'warning' as BadgeTone, tooltip: undefined }
|
||||
: {
|
||||
glyph: turnDef.glyph,
|
||||
text: `${turnDef.text} · ${stateAge}`,
|
||||
tone: turnDef.tone,
|
||||
tooltip: STATE_TOOLTIPS[effectiveTurnState],
|
||||
};
|
||||
const ctx = tokenTotal(state.ctx_usage);
|
||||
const cost = tokenTotal(state.cost_usage);
|
||||
|
||||
|
|
@ -186,11 +202,9 @@ export function Root() {
|
|||
pills={pills}
|
||||
>
|
||||
<StatusChips
|
||||
aliveLabel={`${alive.glyph} ${alive.text}`}
|
||||
aliveTone={alive.tone}
|
||||
stateLabel={`${turnDef.glyph} ${turnDef.text} · ${stateAge}`}
|
||||
stateTone={turnDef.tone}
|
||||
stateTooltip={STATE_TOOLTIPS[effectiveTurnState]}
|
||||
statusLabel={`${primaryStatus.glyph} ${primaryStatus.text}`}
|
||||
statusTone={primaryStatus.tone}
|
||||
statusTooltip={primaryStatus.tooltip}
|
||||
model={state.model}
|
||||
resolvedModel={state.resolved_model ?? undefined}
|
||||
availableModels={state.available_models}
|
||||
|
|
|
|||
Loading…
Reference in a new issue