0.6.4
A patch cohort, headlined by an ingest fix in @silverprotocol/core: upgrading is recommended. It also ships four facet changes that landed since 0.6.3. The wire vocabulary is untouched (AGJSON_VERSION stays 1.0.0-draft.3), and no peer versions moved.
Fixed: an ingest issue in @silverprotocol/core
0.6.4 fixes an issue in ingestAgEvent / ingestAgEvents. Upgrading is recommended for every consumer that calls either function. Ordinary events are unaffected: their output is byte-identical to 0.6.3’s.
Claude: a carry and a fix
- Refusal fallback, whole. When Claude Code falls back to another model after a refusal, the facet used to read only the retracted message ids (→
message.remove) and drop the rest of the frame. The whole frame now also ridesext.anthropic.frame{kind: "model_refusal_fallback", frame}, after the removes, so its trigger, direction, original and fallback model, refusal category and explanation reach you. They reach you on the event stream only; the folded transcript does not show them. The retraction path is unchanged. - Replayed user frames emit nothing. A user frame the Agent SDK marks
isReplay: true(prompt acknowledgements, queued-prompt merges, history re-sends) is now a no-op. Nothing the facet emitted before is lost: replays carry content it never mapped. Before, a replay acknowledgement arriving mid-stream could split the message being streamed in two. A replayed tool result would also have re-emitted itstool.done, though no current Agent SDK version sends one.
OpenAI Agents SDK: MCP tool-result _meta
When your customDataExtractor returns the MCP result’s _meta (as ctx.resultMeta), @silverprotocol/openai-agents now puts it on the tool result’s _meta, verbatim. When that _meta includes ui (MCP Apps), the structured content is also placed on uiData, the same routing the Claude facet already applies. structuredContent itself is unchanged. With no _meta, output is byte-identical to 0.6.3. The package README gains an “MCP tool results” section on what your extractor should return.
Vercel AI SDK: OpenAI’s phase reaches you
With @ai-sdk/openai, text parts from GPT-5.5 and later carry providerMetadata.openai.phase: "commentary" for text between tool calls, "final_answer" for the answer. The facet used to drop it. text.start and text.end now carry the part’s providerMetadata verbatim, so the phase is known before the first delta. OpenAI asks that phase be sent back on follow-up requests, and a UI that ignores it merges commentary into the answer. Text parts without metadata are byte-identical to 0.6.3.
The compatibility tables on each npm page are unchanged.