Loading AgentsKit ecosystem navigation…
AgentsKit Chat
Components

Component catalog

Closed catalog of schema-backed UI components a model may propose — index for humans and agents.

View canonical Markdown

Component catalog

AgentsKit Chat ships a closed set of interactive components. The model may only propose registered keys; unknown keys and invalid props stay inert.

How to read this section

SurfacePurpose
This pageIndex + contract matrix (skim / agent handoff)
One page per keyLive preview, props schema, frame JSON, correct host callback
Examples labSide-by-side live renders only — not a second catalog

Index

Each card opens a dedicated page with preview, props, frame, and agent notes.

Contract matrix (for agents)

ComponentEventsValueA11y roleCapabilities
button-groupselectidgroupdisplay, selection
choice-listselectidgroupdisplay, selection
formsubmitformformdisplay, input
confirmationconfirm, cancelnonegroupdisplay, action
progressprogressbar (live=polite)display, progress
source-listopenidlistdisplay, navigation
link-cardopenurllinkdisplay, navigation
error-noticeretrynonealertdisplay, action
tool-callstatus (live=polite)display
approval-requestapprove, denynonegroupdisplay, action
tabletabledisplay
file-attachmentopenurllinkdisplay, download

Host callbacks

KeysCallback
choice-list onlyonComponentSelect
Other interactive keysonComponentInteract
progress, tool-call, tablenone (display-only)

Every key has renderer parity on react, react-native, ink, vue, svelte, solid, and angular.

Register everything

code
import { StandardComponentCatalog, defineComponentManifest, defineChat } from '@agentskit/chat'

export const definition = defineChat({
  id: 'app',
  components: defineComponentManifest(StandardComponentCatalog),
  chat: { adapter },
})

Prefer StandardComponentCatalog in production. To ship a subset, pass the named *Component exports (see each page).

Host callbacks

code
<AgentChat
  definition={definition}
  onComponentSelect={(event) => {
    // choice-list only — { choiceId, instanceId, componentKey }
  }}
  onComponentInteract={(event) => {
    // Always type: 'interact'. Branch on event.event + event.value
    // e.g. event.event === 'submit' | 'approve' | 'open' | 'select' | ...
  }}
/>

For agents (machine-readable rules)

RuleDetail
Protocolagentskit.chat.component version 1
Envelopetype: "render", componentKey, instanceId, props, fallback
KeysOnly keys in StandardComponentCatalog unless the host registered custom entries
PropsSchema-bounded JSON — see per-page tables; do not invent fields
FallbackAlways include fallback.kind + fallback.summary for non-graphical shells
SecurityURLs must be relative or http(s) without credentials
Inert on errorUnknown keys and invalid props do not render

Open the per-key page for frame JSON and the exact export name.