Component reference
HTML in a string shows as text, not markup. To show a page, write it to a
workspace file and open it with the
open_canvas client action.
A reloaded chat is rebuilt from the model’s turns: their text, thinking and tool
steps, the sources any tool returned, and the files tools opened. Everything else,
including text the body yields itself, shows only while the turn streams.
Thinking
Consecutivethinking yields append to the same bubble until a different type
arrives. Provider reasoning deltas map here automatically, so extended thinking
from Anthropic and delta.reasoning from OpenAI-compatible endpoints both show
up without any work on your side.
Tables
Send the header row once, then onerow per record. Rows render as they arrive,
so a slow query shows partial results instead of nothing.
Client actions
Aui event triggers something in the client. Nothing is rendered in the
conversation and nothing is kept in history.
Apart from
open_plan_modal, these come from the built-in tools,
connectors and the loop. Yield them directly only from a
custom loop. The turn ends after the Suggest and Ask tools, and after a
tool returns confirm or connect, because what comes next is the user’s.
Errors
An unhandled exception inside the body becomes anerror callout with a short
reference id, which the callout also carries as error_id, and the full traceback
goes to structured logs.
step line that counts the attempts. A tool that fails or
times out returns an Error: result to the model, which decides what to do next.
Next
Context
What the body receives on every turn.