0.4.1
A one-day-turnaround fix for a real consumer gap: the normative Reducer’s tool.done handling now carries _meta — the spec §0.4 host side-channel — onto tool-result blocks, in both the CREATE and MERGE arms.
_meta-only payloads are exactly the generative-UI bootstraps (canonical MCP-Apps _meta.ui, A2UI render descriptors). Before this release the facet stamped them onto tool.done events and the fold silently discarded them, so a folded consumer couldn’t mount cards from AgReduceResult without a repair wrapper. Now:
- CREATE spreads
_metaonto the new tool-result block, mirroring thetext.start/reasoning.startprecedent. - MERGE assigns it guarded, so a preliminary (
more: true) result’s bootstrap survives a final replace that omits its own — and a final carrying its own overwrites.
If you carried a sidecar to re-attach _meta after folding, it collapses to new Reducer().