Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

StreamProcessor discards metadata from REASONING_MESSAGE_START

Aperta
#1,667 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@tombeckenham ci sta già lavorando.

Dal 9/10/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

waiting-on: maintainer
TanStack AI version

@tanstack/ai 0.66.0, installed from npm in an isolated directory.
The same behavior also occurs on main commit 96191eafee12040c78f849fe7d47220f64591684.

Framework/Library version

Node.js 26.6.0, with a bare StreamProcessor.
The reproduction does not need React, a provider, or an API key.

Describe the bug and the steps to reproduce it

Custom metadata on REASONING_MESSAGE_START does not survive conversion into a UIMessage.
The thinking text appears, but the resulting message has no metadata.

The reproduction uses one root run.
It compares the same metadata on two events:

  • On REASONING_MESSAGE_START: the metadata is lost.
  • On REASONING_MESSAGE_CONTENT: the metadata is preserved.

Expected

The metadata remains available after processing the reasoning stream, consistently with the content-event case.

Actual

UIMessage.metadata is undefined when only the start event carries the metadata.

Steps

  1. Download the files from the reproduction gist.
  2. Run npm install --ignore-scripts --no-audit --no-fund.
  3. Run npm run metadata.

The script first checks the content-event control.
That check passes.
The assertion for the start event then fails:

Metadata on START: undefined
Metadata on CONTENT: { source: 'reasoning', traceId: 'trace-1' }
AssertionError [ERR_ASSERTION]: Metadata on reasoning start is lost

Source

The dispatcher ignores REASONING_MESSAGE_START.
The content handler only merges metadata from the content event.

Please clarify the intended destination for reasoning-start metadata: the owning UIMessage or its ThinkingPart.
At present, neither exposes it.

Related issue

#1533 concerns reasoning ownership across different messages.
This report isolates metadata loss in one run.
Our local workaround copies the metadata onto reasoning content events.

Your Minimal, Reproducible Example - (Sandbox Highly Recommended)

Complete runnable reproduction: metadata.mjs, package.json, and instructions

The package version is pinned to 0.66.0.
The second script in the gist provides an additional reproduction for #1533.

Screenshots or Videos (Optional)

No screenshot is needed for this framework-independent reproduction.

Do you intend to try to help solve this bug with your own PR?

Maybe, I'll investigate and start debugging.

No PR accompanies this report.

Terms & Code of Conduct
  • I agree to follow this project's Code of Conduct.
  • I understand that if my bug cannot be reliably reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.
Lingua principale
TypeScript
Stelle
3.2k
Fork
361
Merge medio
1g 15h
PR unite (30g)
210

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TanStack/ai

Tutte le issue di TanStack/ai

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.