full_stream when the interface also needs reasoning deltas, tool progress, approval checkpoints, or lifecycle events.
Ruby item values are generic hashes rather than a closed typed item union. Validate the fields your UI consumes and keep an unknown-item fallback for future provider events.