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:
| Event | Use |
|---|---|
capability.resolved | Show which capability was selected for a request |
plan.step_added | Add a planned write action to review UI |
tool.started | Open or update a tool card |
tool.progress | Update card detail/status text |
tool.approval_required | Show approve/reject controls |
tool.approval_response | Mark approval accepted or rejected |
tool.approval_timeout | Mark approval expired |
tool.completed | Mark the tool card completed |
tool.failed | Mark the tool card failed, but keep the run open |
tool.degraded | Show 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 field | Preferred lookup |
|---|---|
toolKey | payload.toolKey ?? payload.key |
callId | payload.callId ?? payload.toolCallId ?? envelope.stepId |
input | payload.input ?? payload.args |
output | payload.data ?? payload.output |
When payload.activity exists, render from it:
| Field | Meaning |
|---|---|
activityType | Activity category, such as tool_read, tool_write, approval, research, or image_generation |
origin | Producer, usually chao |
label | Short card title |
detail | Human-readable progress or result detail |
renderHint | Suggested card style, such as tool_card or status_card |
status | pending, active, completed, or failed |
subjectType | Domain such as bits, calendar, research, or media |
subjectId | Tool 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.