Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

StreamProcessor drops TEXT_MESSAGE_CHUNK events without a warning

Đang mở
#1,531 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@AlemTuzlak đang làm issue này rồi.

Từ ngày 27/9/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

has-pr 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.
Ngôn ngữ chính
TypeScript
Star
3.1k
Fork
340
Merge trung bình
2 ngày 7 giờ
Pull request đã merge (30 ngày)
175

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của TanStack/ai

Tất cả issue của TanStack/ai

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.