Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

StreamProcessor drops TEXT_MESSAGE_CHUNK events without a warning

Abierto
#1,531 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@AlemTuzlak ya está trabajando en esto.

Desde el 27/9/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

waiting-on: maintainer
TanStack AI version

v0.61.0

Framework/Library version

React v19.2.0

Describe the bug and the steps to reproduce it

StreamProcessor has no handler for TEXT_MESSAGE_CHUNK. The event reaches
the default branch of processChunk and the processor drops it. There is no
warning.

AG-UI defines TEXT_MESSAGE_CHUNK as a short form of the
TEXT_MESSAGE_START / TEXT_MESSAGE_CONTENT / TEXT_MESSAGE_END triad. A
server can send one chunk event instead of three events. The AG-UI spec gives
the expansion job to the client stream transformer.

Two parts of this repository say that the event is supported:

  • packages/ai/src/types.ts declares TextMessageChunkEvent and puts it in
    the AGUIEvent union. That union is the exported StreamChunk type.
  • packages/ai/src/utilities/spec-event-keys.ts gives the event an allowlist
    entry, so stripToSpec keeps messageId, role, delta, and metadata
    at the top level.

The runtime does not match this. TOOL_CALL_CHUNK and
REASONING_MESSAGE_CHUNK have the same problem.

Steps to reproduce

live:
https://codesandbox.io/p/sandbox/hvf3mx

Open the sandbox. It needs no API key and makes no network calls. The AG-UI
events are constants in src/App.js.

  1. Build a StreamProcessor.
  2. Send RUN_STARTED, then one TEXT_MESSAGE_CHUNK with a messageId, a
    delta, and a metadata.error, then RUN_ERROR.
  3. Read processor.getMessages().
  4. Do the same again with the explicit triad in place of the chunk event.

Result

The chunk event loses three things that the triad keeps:

The server sent this, and the client TEXT_MESSAGE_CHUNK START / CONTENT / END
shows the text "the run failed" lost yes
keeps the message id "msg-1" lost yes
keeps metadata.error lost yes

The assistant message is not absent. It is empty, and it has a new id:

[{ "id": "msg-1790507900666-2mxf4p", "role": "assistant", "parts": [] }]

RUN_ERROR created that message. The id msg-1 from the server is gone, so a
later event that uses msg-1 cannot find the message.

Expected result
Both forms describe the same turn. Both must produce the same message.

Notes
MESSAGES_SNAPSHOT is a plain messages[], so a reload of a saved thread
shows the correct text. The fault is visible only during a live run. A unit
test that sends the triad cannot find this fault.

processChunk already has the three handlers that an expansion needs. A
case per chunk event can call them, hold the open message id, and close the
message when the id changes or when finalizeStream runs.

Related: #1465 tried this and closed without a merge. #1460 added the AG-UI 1.0
types and left the runtime out of scope.

Your Minimal, Reproducible Example - (Sandbox Highly Recommended)

https://codesandbox.io/p/sandbox/hvf3mx

Screenshots or Videos (Optional)
Image
Do you intend to try to help solve this bug with your own PR?

None

Terms & Code of Conduct
  • I agree to follow this project's Code of Conduct
  • I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.
Lenguaje dominante
TypeScript
Estrellas
3.1k
Forks
340
Merge medio
2 d 10 h
PR fusionados (30 d)
174

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TanStack/ai

Todos los issues de TanStack/ai

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.