Skip to content

Reasoning Activity Summaries

Chainabit does not expose raw private Chain-of-Thought as a public UI feature. Public apps should show concise activity summaries from SSE activity payloads and persisted message.toolCalls.

Use these events for user-facing reasoning and tool cards:

EventUse
capability.resolvedShow which capability was selected for a request
plan.step_addedAdd a planned write action to review UI
tool.startedOpen or update a tool card
tool.progressUpdate card detail/status text
tool.approval_requiredShow approve/reject controls
tool.approval_responseMark approval accepted or rejected
tool.approval_timeoutMark approval expired
tool.completedMark the tool card completed
tool.failedMark the tool card failed, but keep the run open
tool.degradedShow a graceful fallback state

Normal chat text still comes from message.delta and message.completed.

Tool Card Payload

Normalize tool-like payloads before rendering:

Normalized fieldPreferred lookup
toolKeypayload.toolKey ?? payload.key
callIdpayload.callId ?? payload.toolCallId ?? envelope.stepId
inputpayload.input ?? payload.args
outputpayload.data ?? payload.output

When payload.activity exists, render from it:

FieldMeaning
activityTypeActivity category, such as tool_read, tool_write, approval, research, or image_generation
originProducer, usually chao
labelShort card title
detailHuman-readable progress or result detail
renderHintSuggested card style, such as tool_card or status_card
statuspending, active, completed, or failed
subjectTypeDomain such as bits, calendar, research, or media
subjectIdTool call ID or related subject ID

Reload Behavior

Use persisted message.toolCalls to reconstruct cards after reload. Supported statuses include:

pending, executing, completed, failed, degraded, rejected, and skipped.

tool.failed is not terminal. Keep listening until you receive message.completed, message.partially_completed, run.failed, run.error, or run.settlement.completed.

Diagnostic Events

Some diagnostic sessions may include cot.* events. Treat them as nonessential debug metadata. Do not build normal public UI around them and do not show raw reasoning text to end users by default.

Built with purpose.