AgentHud
The arbiter's current reading, as a character and a plate.
One source of truth
Everything on the screen comes from the nearest AgentStateProvider. The state drives the face, the tips line becomes the plate's supporting text, and the hud travels with whichever session is winning — so a timer sent by one session never lingers on the face of another. The plate's level follows the state: alerting and refusing are alert, waiting and suspicious are warn, happy, proud and celebrate are ok, everything else is info. Pass level to override it.
Outside a provider the component still renders — an idle character with the agent's name and no dial — so a header can mount before the agent channel is connected.
useAgentHud
The hook behind it. It reads the winning result's hud off the provider, or null when there is no provider or no dial, so a host that wants its own layout can put the same spec on a CharacterMark directly.
Appearance
agent supplies the shape, ink, face and nose the same way AgentAvatar resolves them: explicit fields first, then preset, then a deterministic derivation from id. face, nose and lineWeight override the agent's, so a line-face HUD in a heavier pen is one prop away. The line weight is shared by the nose, the mouth and the dial — see the line face across surfaces.
API
| Prop | Type | Default | Description |
|---|---|---|---|
agent | AgentLike | — | Whose face to draw. Without one the character falls back to the default blob. |
className | string | — | — |
face | "cute" | "eyes" | "line" | — | — |
level | HudLevel | — | Override the level the state implies. |
lineWeight | number | — | — |
nose | "slant" | "angular" | "hook" | "long" | "curve" | "bow" | null | — | — |
placement | HudPlacement | 'bottom' | — |
sizePx | number | 72 | — |
style | CSSProperties | — | — |
title | string | — | Heading on the plate. Defaults to the agent's name. |
Next
- HudPlate — a figure beside the dial
- Progress HUD — the body works, the ring counts