The upgrade lives at the boundary.
A release note tells you what changed. A captured run tells you what your subscriber actually receives.
Reviewed October 15, 2026 · Pinned npm clients 0.0.59 and 1.0.2 · Original local fixtures
01 / Establish the version being tested
AG-UI’s maintainers announced the 1.0 specification freeze in September 2026. RunBridge compares the actual npm clients 0.0.59 and 1.0.2; those package numbers are not interchangeable with a producer’s wire protocolVersion. Release announcement · Official migration guide.
Our inputs are local event captures. Each client receives a locally constructed SSE response through its own fetch implementation, with no live agent endpoint. We record subscriber events, messages, state, request body, warnings and exceptions. An arbitrary capture changes the actual SDK output; the sample buttons are starting points.
02 / A custom field stops arriving
In the original metadata fixture, attemptRef is present at the root of a STEP_STARTED event. The older client delivers it. The newer client removes it and records a diagnostic. A reviewed move into metadata.attemptRef retains the value in both clients.
The producer change alone is insufficient. A subscriber reading event.attemptRef must read the new location. Existing metadata, including its null-valued child, stays intact. Read the field and null case study.
03 / A warning is the difference
The optional-null example gives both clients an application state containing email: null, plus two whole optional protocol fields set to null. Both tested clients omit those two fields; only the newer one records compatibility warnings. We do not manufacture a retained-versus-removed difference where none occurred.
04 / A media result fails only in the old client
The content-parts example is rejected by 0.0.59 and accepted by 1.0.2. The optional reviewed fallback intentionally reduces the old branch to text plus an image-omission label. The modern branch retains its parts. Both can resolve afterward without becoming equivalent. See the media case.
05 / Reproduce before applying
Download the exact input and SDK bundles with the observed expectations. Run node replay.mjs after extracting the ZIP. Then repeat the relevant workflow in your actual application: the comparator cannot test its renderer, backend integration or email delivery. Use the owned-app check for that separate step.