Agent roster
Twenty agents down the side of a workspace, each with a face of its own.
See it
Three rows and a group. Each row reads its state from the registry and shows the dot and badge the host's own data implies; the buttons stand in for the events a real host would publish.
holdState beats facts, so a celebration plays on top of whatever the row knows and hands back when its time to live runs out. The WorkingBadge is deliberately separate from the character: a row can be busy without its face having to say so, which is what keeps a long list calm.
When to use it
The list of agents down the side of a workspace: who exists, who is busy, who has something for you. Here the character is an identity first — a consistent face derived from the agent's id, with nothing stored — and a status second. Twenty rows are on screen at once, so anything that moves has to earn it, and everything shares one stage.
Components
AgentAvatar— picture, group cluster or character, chosen from the agent record.AvatarStack— a group's members, each punched out of the one behind it in its own silhouette.AvatarStatusDotandUnreadBadge— presence and counts in the corner.WorkingBadge— three dots out of phase, for a row that is busy but whose face should stay still.useMarkCommands—holdFacts,holdState,releaseState; the roster and the chat read the same registry.MarkStageProvider— twenty idle blobs cost one engine.
How the states move
Read the registry with useMarkCommand(id, 'avatar'). The surface matters: composing facts resolve to idle on an avatar, because a reply that is being written is the point in a chat and noise in a list of twenty faces.
What each state looks like
| State | Eyes | Mouth | Effect | Id | HUD | |
|---|---|---|---|---|---|---|
idleIdle | dot → dot → dot → dotLeft → dot → dotRight | none | — | 02 | — | |
workingWorking | dotDown → dot → dotDown | none | arc | 1632 | gauge | |
waitingWaiting | dot → dotLeft → dot → dotRight | none | ellipsis | 48 | timer | |
notifyingNotifying | dotWide → arch → dot | dot | — | 50 | notify | |
celebrateCelebrating | star → archWide → wink → arch | grin | sparkle | 2533 | kpi | |
sleepingSleeping | curve | none | zz | 00 | clock |
waiting hands its body to the orbit belt; notifying keeps its body and lights the corner badge instead. idle blinks and glances on three unrelated sine waves, so a row that sits there for ten minutes never loops.
Next
- AgentAvatar — a stable face per id
- AvatarStack — overlapping group avatars
- Badges and status — unread counts and status dots