Skip to content

Commit 3dcaa34

Browse files
committed
feat: assistant fromReadableStream (#738)
1 parent 1b1d357 commit 3dcaa34

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/lib/AssistantStream.ts

+27-1
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,32 @@ export class AssistantStream
158158
};
159159
}
160160

161+
static fromReadableStream(stream: ReadableStream): AssistantStream {
162+
const runner = new AssistantStream();
163+
runner._run(() => runner._fromReadableStream(stream));
164+
return runner;
165+
}
166+
167+
protected async _fromReadableStream(
168+
readableStream: ReadableStream,
169+
options?: Core.RequestOptions,
170+
): Promise<Run> {
171+
const signal = options?.signal;
172+
if (signal) {
173+
if (signal.aborted) this.controller.abort();
174+
signal.addEventListener('abort', () => this.controller.abort());
175+
}
176+
this._connected();
177+
const stream = Stream.fromReadableStream<AssistantStreamEvent>(readableStream, this.controller);
178+
for await (const event of stream) {
179+
this.#handleEvent(event);
180+
}
181+
if (stream.controller.signal?.aborted) {
182+
throw new APIUserAbortError();
183+
}
184+
return this._addRun(this.#endRequest());
185+
}
186+
161187
toReadableStream(): ReadableStream {
162188
const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);
163189
return stream.toReadableStream();
@@ -385,7 +411,7 @@ export class AssistantStream
385411
throw new OpenAIError(`stream has ended, this shouldn't happen`);
386412
}
387413

388-
if (!this.#finalRun) throw Error('Final run has been been received');
414+
if (!this.#finalRun) throw Error('Final run has not been received');
389415

390416
return this.#finalRun;
391417
}

0 commit comments

Comments
 (0)