AI workspace
BlockProA whole AI application surface: conversations down one side, the active transcript with reasoning, tool calls and sources in the middle, and the context — window usage, attachments and a structured result — on the other.
- AI
- 13 components
- 1 file
Contract review — Acme MSA
A still, rendered at build time from the same story the tests run. The block itself is interactive; the copy that runs is the one the CLI installs.
pnpm dlx @dowel-ui/cli add ai-workspaceThis is a Pro block.
The preview is the real block, rendered from its own story — a still of it, not a copy of it. The source is installed by the CLI once this machine is signed in with a licence key — dowel login checks the key against the registry before storing it — and lands in your project as a file you own, exactly like a free block.
Registry name: ai-workspace
<AiWorkspaceBlock>
| Prop | Type | Default |
|---|---|---|
messages (required)The transcript of the active thread. | WorkspaceMessage[] | — |
threads (required) | WorkspaceThread[] | — |
activeThread | string | — |
attachments | WorkspaceAttachment[] | [] |
busyA response is in flight. | boolean | false |
headerActionsAnything else for the top bar — a share button, a settings link. | ReactNode | — |
model | string | — |
models | ModelOption[] | — |
nameThe application's name, at the top of the conversation list. | string | "Workspace" |
onAttach | () => void | — |
onModelChange | (model: string) => void | — |
onNewThread | () => void | — |
onRemoveAttachment | (attachment: WorkspaceAttachment) => void | — |
onSelectThread | (id: string) => void | — |
onSend | (message: string) => void | — |
onStop | () => void | — |
outputA structured result the conversation is filling in, shown beside it. | WorkspaceOutput | — |
placeholder | string | "Ask anything…" |
tokenLimit | number | — |
tokensUsedContext consumed so far, and the window. Both or neither. | number | — |
waitingShown before the first token arrives. | boolean | false |
className | string | — |