Open specs
Generative UI
Schema-driven renderers. LLM outputs typed JSON; UI reflects it.
Subpath: @agentskit/core/generative-ui.
Shape
type GenerativeBlock =
| { kind: 'text'; content: string }
| { kind: 'table'; columns: string[]; rows: unknown[][] }
| { kind: 'form'; fields: FormField[]; onSubmit: { tool: string } }
| { kind: 'chart'; spec: ChartSpec }
| { kind: 'citation'; url: string; title?: string }Validator
import { parseGenerativeBlock } from '@agentskit/core/generative-ui'
const block = parseGenerativeBlock(llmOutput)Renderer contract
Every UI binding (React / Vue / Svelte / Solid / Angular / RN / Ink)
ships a <GenerativeBlock> component. Swap kinds without changing the
render call.