mvp / three recipes

Start with a complete flow

Use the starter for a broad first screen. Use a focused recipe when you need to model one state family precisely.

The recipe rule

State stays local to the object it describes.

Streaming belongs to the message, tool status belongs to the tool call, and approval belongs to the immutable action. A host can replace the demo script with server-rendered HTML or its own event layer.

Compose before inventing

Judgement pause = approval-gate + ask-user-question.

Policy or support-style “paused for review” screens are compositions of existing primitives, documented on the tool approval recipe. Synthesis and verdict layouts compose thinking-steps, tool-call, and card. Message footers (copy, regenerate) are host button slots on chat-message.