openai 4.53.2 → 4.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +2 -2
  3. package/index.d.mts +4 -0
  4. package/index.d.ts +4 -0
  5. package/index.d.ts.map +1 -1
  6. package/index.js +1 -0
  7. package/index.js.map +1 -1
  8. package/index.mjs +1 -0
  9. package/index.mjs.map +1 -1
  10. package/lib/AbstractChatCompletionRunner.d.ts +6 -61
  11. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  12. package/lib/AbstractChatCompletionRunner.js +5 -185
  13. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  14. package/lib/AbstractChatCompletionRunner.mjs +6 -186
  15. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  16. package/lib/AssistantStream.d.ts +8 -4
  17. package/lib/AssistantStream.d.ts.map +1 -1
  18. package/lib/AssistantStream.js +14 -2
  19. package/lib/AssistantStream.js.map +1 -1
  20. package/lib/AssistantStream.mjs +14 -2
  21. package/lib/AssistantStream.mjs.map +1 -1
  22. package/lib/ChatCompletionRunner.d.ts +1 -1
  23. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  24. package/lib/ChatCompletionRunner.js.map +1 -1
  25. package/lib/ChatCompletionRunner.mjs.map +1 -1
  26. package/lib/ChatCompletionStream.d.ts +1 -1
  27. package/lib/ChatCompletionStream.d.ts.map +1 -1
  28. package/lib/ChatCompletionStream.js.map +1 -1
  29. package/lib/ChatCompletionStream.mjs.map +1 -1
  30. package/lib/EventStream.d.ts +63 -0
  31. package/lib/EventStream.d.ts.map +1 -0
  32. package/lib/EventStream.js +200 -0
  33. package/lib/EventStream.js.map +1 -0
  34. package/lib/EventStream.mjs +196 -0
  35. package/lib/EventStream.mjs.map +1 -0
  36. package/package.json +1 -1
  37. package/resources/audio/audio.d.ts +4 -0
  38. package/resources/audio/audio.d.ts.map +1 -1
  39. package/resources/audio/audio.js.map +1 -1
  40. package/resources/audio/audio.mjs.map +1 -1
  41. package/resources/audio/index.d.ts +2 -2
  42. package/resources/audio/index.d.ts.map +1 -1
  43. package/resources/audio/index.js.map +1 -1
  44. package/resources/audio/index.mjs.map +1 -1
  45. package/resources/audio/speech.d.ts +3 -1
  46. package/resources/audio/speech.d.ts.map +1 -1
  47. package/resources/audio/speech.js.map +1 -1
  48. package/resources/audio/speech.mjs.map +1 -1
  49. package/resources/audio/transcriptions.d.ts +2 -1
  50. package/resources/audio/transcriptions.d.ts.map +1 -1
  51. package/resources/audio/transcriptions.js.map +1 -1
  52. package/resources/audio/transcriptions.mjs.map +1 -1
  53. package/resources/audio/translations.d.ts +2 -1
  54. package/resources/audio/translations.d.ts.map +1 -1
  55. package/resources/audio/translations.js.map +1 -1
  56. package/resources/audio/translations.mjs.map +1 -1
  57. package/resources/beta/assistants.d.ts +2 -1
  58. package/resources/beta/assistants.d.ts.map +1 -1
  59. package/resources/beta/assistants.js.map +1 -1
  60. package/resources/beta/assistants.mjs.map +1 -1
  61. package/resources/beta/threads/runs/runs.d.ts +2 -1
  62. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  63. package/resources/beta/threads/runs/runs.js.map +1 -1
  64. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  65. package/resources/beta/threads/threads.d.ts +2 -1
  66. package/resources/beta/threads/threads.d.ts.map +1 -1
  67. package/resources/beta/threads/threads.js.map +1 -1
  68. package/resources/beta/threads/threads.mjs.map +1 -1
  69. package/resources/images.d.ts +5 -3
  70. package/resources/images.d.ts.map +1 -1
  71. package/resources/images.js.map +1 -1
  72. package/resources/images.mjs.map +1 -1
  73. package/resources/index.d.ts +3 -3
  74. package/resources/index.d.ts.map +1 -1
  75. package/resources/index.js.map +1 -1
  76. package/resources/index.mjs +1 -1
  77. package/resources/index.mjs.map +1 -1
  78. package/resources/moderations.d.ts +3 -1
  79. package/resources/moderations.d.ts.map +1 -1
  80. package/resources/moderations.js.map +1 -1
  81. package/resources/moderations.mjs.map +1 -1
  82. package/src/index.ts +4 -0
  83. package/src/lib/AbstractChatCompletionRunner.ts +16 -239
  84. package/src/lib/AssistantStream.ts +43 -15
  85. package/src/lib/ChatCompletionRunner.ts +1 -1
  86. package/src/lib/ChatCompletionStream.ts +2 -2
  87. package/src/lib/{AbstractAssistantStreamRunner.ts → EventStream.ts} +37 -138
  88. package/src/resources/audio/audio.ts +5 -0
  89. package/src/resources/audio/index.ts +2 -2
  90. package/src/resources/audio/speech.ts +4 -1
  91. package/src/resources/audio/transcriptions.ts +2 -1
  92. package/src/resources/audio/translations.ts +2 -1
  93. package/src/resources/beta/assistants.ts +2 -24
  94. package/src/resources/beta/threads/runs/runs.ts +2 -25
  95. package/src/resources/beta/threads/threads.ts +2 -25
  96. package/src/resources/images.ts +6 -3
  97. package/src/resources/index.ts +9 -2
  98. package/src/resources/moderations.ts +4 -1
  99. package/src/version.ts +1 -1
  100. package/version.d.ts +1 -1
  101. package/version.js +1 -1
  102. package/version.mjs +1 -1
  103. package/lib/AbstractAssistantStreamRunner.d.ts +0 -74
  104. package/lib/AbstractAssistantStreamRunner.d.ts.map +0 -1
  105. package/lib/AbstractAssistantStreamRunner.js +0 -246
  106. package/lib/AbstractAssistantStreamRunner.js.map +0 -1
  107. package/lib/AbstractAssistantStreamRunner.mjs +0 -242
  108. package/lib/AbstractAssistantStreamRunner.mjs.map +0 -1
@@ -8,7 +8,7 @@ import {
8
8
  type ChatCompletionCreateParams,
9
9
  type ChatCompletionTool,
10
10
  } from "../resources/chat/completions";
11
- import { APIUserAbortError, OpenAIError } from "../error";
11
+ import { OpenAIError } from "../error";
12
12
  import {
13
13
  type RunnableFunction,
14
14
  isRunnableFunctionWithParse,
@@ -20,6 +20,7 @@ import {
20
20
  ChatCompletionStreamingToolRunnerParams,
21
21
  } from './ChatCompletionStreamingRunner';
22
22
  import { isAssistantMessage, isFunctionMessage, isToolMessage } from './chatCompletionUtils';
23
+ import { BaseEvents, EventStream } from './EventStream';
23
24
 
24
25
  const DEFAULT_MAX_CHAT_COMPLETIONS = 10;
25
26
  export interface RunnerOptions extends Core.RequestOptions {
@@ -27,60 +28,16 @@ export interface RunnerOptions extends Core.RequestOptions {
27
28
  maxChatCompletions?: number;
28
29
  }
29
30
 
30
- export abstract class AbstractChatCompletionRunner<
31
- Events extends CustomEvents<any> = AbstractChatCompletionRunnerEvents,
32
- > {
33
- controller: AbortController = new AbortController();
34
-
35
- #connectedPromise: Promise<void>;
36
- #resolveConnectedPromise: () => void = () => {};
37
- #rejectConnectedPromise: (error: OpenAIError) => void = () => {};
38
-
39
- #endPromise: Promise<void>;
40
- #resolveEndPromise: () => void = () => {};
41
- #rejectEndPromise: (error: OpenAIError) => void = () => {};
42
-
43
- #listeners: { [Event in keyof Events]?: ListenersForEvent<Events, Event> } = {};
44
-
31
+ export class AbstractChatCompletionRunner<
32
+ EventTypes extends AbstractChatCompletionRunnerEvents,
33
+ > extends EventStream<EventTypes> {
45
34
  protected _chatCompletions: ChatCompletion[] = [];
46
35
  messages: ChatCompletionMessageParam[] = [];
47
36
 
48
- #ended = false;
49
- #errored = false;
50
- #aborted = false;
51
- #catchingPromiseCreated = false;
52
-
53
- constructor() {
54
- this.#connectedPromise = new Promise<void>((resolve, reject) => {
55
- this.#resolveConnectedPromise = resolve;
56
- this.#rejectConnectedPromise = reject;
57
- });
58
-
59
- this.#endPromise = new Promise<void>((resolve, reject) => {
60
- this.#resolveEndPromise = resolve;
61
- this.#rejectEndPromise = reject;
62
- });
63
-
64
- // Don't let these promises cause unhandled rejection errors.
65
- // we will manually cause an unhandled rejection error later
66
- // if the user hasn't registered any error listener or called
67
- // any promise-returning method.
68
- this.#connectedPromise.catch(() => {});
69
- this.#endPromise.catch(() => {});
70
- }
71
-
72
- protected _run(executor: () => Promise<any>) {
73
- // Unfortunately if we call `executor()` immediately we get runtime errors about
74
- // references to `this` before the `super()` constructor call returns.
75
- setTimeout(() => {
76
- executor().then(() => {
77
- this._emitFinal();
78
- this._emit('end');
79
- }, this.#handleError);
80
- }, 0);
81
- }
82
-
83
- protected _addChatCompletion(chatCompletion: ChatCompletion): ChatCompletion {
37
+ protected _addChatCompletion(
38
+ this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents>,
39
+ chatCompletion: ChatCompletion,
40
+ ): ChatCompletion {
84
41
  this._chatCompletions.push(chatCompletion);
85
42
  this._emit('chatCompletion', chatCompletion);
86
43
  const message = chatCompletion.choices[0]?.message;
@@ -88,7 +45,11 @@ export abstract class AbstractChatCompletionRunner<
88
45
  return chatCompletion;
89
46
  }
90
47
 
91
- protected _addMessage(message: ChatCompletionMessageParam, emit = true) {
48
+ protected _addMessage(
49
+ this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents>,
50
+ message: ChatCompletionMessageParam,
51
+ emit = true,
52
+ ) {
92
53
  if (!('content' in message)) message.content = null;
93
54
 
94
55
  this.messages.push(message);
@@ -110,99 +71,6 @@ export abstract class AbstractChatCompletionRunner<
110
71
  }
111
72
  }
112
73
 
113
- protected _connected() {
114
- if (this.ended) return;
115
- this.#resolveConnectedPromise();
116
- this._emit('connect');
117
- }
118
-
119
- get ended(): boolean {
120
- return this.#ended;
121
- }
122
-
123
- get errored(): boolean {
124
- return this.#errored;
125
- }
126
-
127
- get aborted(): boolean {
128
- return this.#aborted;
129
- }
130
-
131
- abort() {
132
- this.controller.abort();
133
- }
134
-
135
- /**
136
- * Adds the listener function to the end of the listeners array for the event.
137
- * No checks are made to see if the listener has already been added. Multiple calls passing
138
- * the same combination of event and listener will result in the listener being added, and
139
- * called, multiple times.
140
- * @returns this ChatCompletionStream, so that calls can be chained
141
- */
142
- on<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
143
- const listeners: ListenersForEvent<Events, Event> =
144
- this.#listeners[event] || (this.#listeners[event] = []);
145
- listeners.push({ listener });
146
- return this;
147
- }
148
-
149
- /**
150
- * Removes the specified listener from the listener array for the event.
151
- * off() will remove, at most, one instance of a listener from the listener array. If any single
152
- * listener has been added multiple times to the listener array for the specified event, then
153
- * off() must be called multiple times to remove each instance.
154
- * @returns this ChatCompletionStream, so that calls can be chained
155
- */
156
- off<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
157
- const listeners = this.#listeners[event];
158
- if (!listeners) return this;
159
- const index = listeners.findIndex((l) => l.listener === listener);
160
- if (index >= 0) listeners.splice(index, 1);
161
- return this;
162
- }
163
-
164
- /**
165
- * Adds a one-time listener function for the event. The next time the event is triggered,
166
- * this listener is removed and then invoked.
167
- * @returns this ChatCompletionStream, so that calls can be chained
168
- */
169
- once<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
170
- const listeners: ListenersForEvent<Events, Event> =
171
- this.#listeners[event] || (this.#listeners[event] = []);
172
- listeners.push({ listener, once: true });
173
- return this;
174
- }
175
-
176
- /**
177
- * This is similar to `.once()`, but returns a Promise that resolves the next time
178
- * the event is triggered, instead of calling a listener callback.
179
- * @returns a Promise that resolves the next time given event is triggered,
180
- * or rejects if an error is emitted. (If you request the 'error' event,
181
- * returns a promise that resolves with the error).
182
- *
183
- * Example:
184
- *
185
- * const message = await stream.emitted('message') // rejects if the stream errors
186
- */
187
- emitted<Event extends keyof Events>(
188
- event: Event,
189
- ): Promise<
190
- EventParameters<Events, Event> extends [infer Param] ? Param
191
- : EventParameters<Events, Event> extends [] ? void
192
- : EventParameters<Events, Event>
193
- > {
194
- return new Promise((resolve, reject) => {
195
- this.#catchingPromiseCreated = true;
196
- if (event !== 'error') this.once('error', reject);
197
- this.once(event, resolve as any);
198
- });
199
- }
200
-
201
- async done(): Promise<void> {
202
- this.#catchingPromiseCreated = true;
203
- await this.#endPromise;
204
- }
205
-
206
74
  /**
207
75
  * @returns a promise that resolves with the final ChatCompletion, or rejects
208
76
  * if an error occurred or the stream ended prematurely without producing a ChatCompletion.
@@ -327,75 +195,7 @@ export abstract class AbstractChatCompletionRunner<
327
195
  return [...this._chatCompletions];
328
196
  }
329
197
 
330
- #handleError = (error: unknown) => {
331
- this.#errored = true;
332
- if (error instanceof Error && error.name === 'AbortError') {
333
- error = new APIUserAbortError();
334
- }
335
- if (error instanceof APIUserAbortError) {
336
- this.#aborted = true;
337
- return this._emit('abort', error);
338
- }
339
- if (error instanceof OpenAIError) {
340
- return this._emit('error', error);
341
- }
342
- if (error instanceof Error) {
343
- const openAIError: OpenAIError = new OpenAIError(error.message);
344
- // @ts-ignore
345
- openAIError.cause = error;
346
- return this._emit('error', openAIError);
347
- }
348
- return this._emit('error', new OpenAIError(String(error)));
349
- };
350
-
351
- protected _emit<Event extends keyof Events>(event: Event, ...args: EventParameters<Events, Event>) {
352
- // make sure we don't emit any events after end
353
- if (this.#ended) {
354
- return;
355
- }
356
-
357
- if (event === 'end') {
358
- this.#ended = true;
359
- this.#resolveEndPromise();
360
- }
361
-
362
- const listeners: ListenersForEvent<Events, Event> | undefined = this.#listeners[event];
363
- if (listeners) {
364
- this.#listeners[event] = listeners.filter((l) => !l.once) as any;
365
- listeners.forEach(({ listener }: any) => listener(...args));
366
- }
367
-
368
- if (event === 'abort') {
369
- const error = args[0] as APIUserAbortError;
370
- if (!this.#catchingPromiseCreated && !listeners?.length) {
371
- Promise.reject(error);
372
- }
373
- this.#rejectConnectedPromise(error);
374
- this.#rejectEndPromise(error);
375
- this._emit('end');
376
- return;
377
- }
378
-
379
- if (event === 'error') {
380
- // NOTE: _emit('error', error) should only be called from #handleError().
381
-
382
- const error = args[0] as OpenAIError;
383
- if (!this.#catchingPromiseCreated && !listeners?.length) {
384
- // Trigger an unhandled rejection if the user hasn't registered any error handlers.
385
- // If you are seeing stack traces here, make sure to handle errors via either:
386
- // - runner.on('error', () => ...)
387
- // - await runner.done()
388
- // - await runner.finalChatCompletion()
389
- // - etc.
390
- Promise.reject(error);
391
- }
392
- this.#rejectConnectedPromise(error);
393
- this.#rejectEndPromise(error);
394
- this._emit('end');
395
- }
396
- }
397
-
398
- protected _emitFinal() {
198
+ protected override _emitFinal(this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents>) {
399
199
  const completion = this._chatCompletions[this._chatCompletions.length - 1];
400
200
  if (completion) this._emit('finalChatCompletion', completion);
401
201
  const finalMessage = this.#getFinalMessage();
@@ -650,27 +450,7 @@ export abstract class AbstractChatCompletionRunner<
650
450
  }
651
451
  }
652
452
 
653
- type CustomEvents<Event extends string> = {
654
- [k in Event]: k extends keyof AbstractChatCompletionRunnerEvents ? AbstractChatCompletionRunnerEvents[k]
655
- : (...args: any[]) => void;
656
- };
657
-
658
- type ListenerForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Event extends (
659
- keyof AbstractChatCompletionRunnerEvents
660
- ) ?
661
- AbstractChatCompletionRunnerEvents[Event]
662
- : Events[Event];
663
-
664
- type ListenersForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Array<{
665
- listener: ListenerForEvent<Events, Event>;
666
- once?: boolean;
667
- }>;
668
- type EventParameters<Events extends CustomEvents<any>, Event extends keyof Events> = Parameters<
669
- ListenerForEvent<Events, Event>
670
- >;
671
-
672
- export interface AbstractChatCompletionRunnerEvents {
673
- connect: () => void;
453
+ export interface AbstractChatCompletionRunnerEvents extends BaseEvents {
674
454
  functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
675
455
  message: (message: ChatCompletionMessageParam) => void;
676
456
  chatCompletion: (completion: ChatCompletion) => void;
@@ -680,8 +460,5 @@ export interface AbstractChatCompletionRunnerEvents {
680
460
  finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
681
461
  functionCallResult: (content: string) => void;
682
462
  finalFunctionCallResult: (content: string) => void;
683
- error: (error: OpenAIError) => void;
684
- abort: (error: APIUserAbortError) => void;
685
- end: () => void;
686
463
  totalUsage: (usage: CompletionUsage) => void;
687
464
  }
@@ -19,10 +19,6 @@ import {
19
19
  RunSubmitToolOutputsParamsBase,
20
20
  RunSubmitToolOutputsParamsStreaming,
21
21
  } from "../resources/beta/threads/runs/runs";
22
- import {
23
- AbstractAssistantRunnerEvents,
24
- AbstractAssistantStreamRunner,
25
- } from './AbstractAssistantStreamRunner';
26
22
  import { type ReadableStream } from "../_shims/index";
27
23
  import { Stream } from "../streaming";
28
24
  import { APIUserAbortError, OpenAIError } from "../error";
@@ -34,9 +30,12 @@ import {
34
30
  } from "../resources/beta/assistants";
35
31
  import { RunStep, RunStepDelta, ToolCall, ToolCallDelta } from "../resources/beta/threads/runs/steps";
36
32
  import { ThreadCreateAndRunParamsBase, Threads } from "../resources/beta/threads/threads";
33
+ import { BaseEvents, EventStream } from './EventStream';
37
34
  import MessageDelta = Messages.MessageDelta;
38
35
 
39
- export interface AssistantStreamEvents extends AbstractAssistantRunnerEvents {
36
+ export interface AssistantStreamEvents extends BaseEvents {
37
+ run: (run: Run) => void;
38
+
40
39
  //New event structure
41
40
  messageCreated: (message: Message) => void;
42
41
  messageDelta: (message: MessageDelta, snapshot: Message) => void;
@@ -57,8 +56,6 @@ export interface AssistantStreamEvents extends AbstractAssistantRunnerEvents {
57
56
  //No created or delta as this is not streamed
58
57
  imageFileDone: (content: ImageFile, snapshot: Message) => void;
59
58
 
60
- end: () => void;
61
-
62
59
  event: (event: AssistantStreamEvent) => void;
63
60
  }
64
61
 
@@ -75,7 +72,7 @@ export type RunSubmitToolOutputsParamsStream = Omit<RunSubmitToolOutputsParamsBa
75
72
  };
76
73
 
77
74
  export class AssistantStream
78
- extends AbstractAssistantStreamRunner<AssistantStreamEvents>
75
+ extends EventStream<AssistantStreamEvents>
79
76
  implements AsyncIterable<AssistantStreamEvent>
80
77
  {
81
78
  //Track all events in a single list for reference
@@ -207,7 +204,7 @@ export class AssistantStream
207
204
  return runner;
208
205
  }
209
206
 
210
- protected override async _createToolAssistantStream(
207
+ protected async _createToolAssistantStream(
211
208
  run: Runs,
212
209
  threadId: string,
213
210
  runId: string,
@@ -304,7 +301,7 @@ export class AssistantStream
304
301
  return this.#finalRun;
305
302
  }
306
303
 
307
- protected override async _createThreadAssistantStream(
304
+ protected async _createThreadAssistantStream(
308
305
  thread: Threads,
309
306
  params: ThreadCreateAndRunParamsBase,
310
307
  options?: Core.RequestOptions,
@@ -330,7 +327,7 @@ export class AssistantStream
330
327
  return this._addRun(this.#endRequest());
331
328
  }
332
329
 
333
- protected override async _createAssistantStream(
330
+ protected async _createAssistantStream(
334
331
  run: Runs,
335
332
  threadId: string,
336
333
  params: RunCreateParamsBase,
@@ -417,7 +414,7 @@ export class AssistantStream
417
414
  return this.#finalRun;
418
415
  }
419
416
 
420
- #handleMessage(event: MessageStreamEvent) {
417
+ #handleMessage(this: AssistantStream, event: MessageStreamEvent) {
421
418
  const [accumulatedMessage, newContent] = this.#accumulateMessage(event, this.#messageSnapshot);
422
419
  this.#messageSnapshot = accumulatedMessage;
423
420
  this.#messageSnapshots[accumulatedMessage.id] = accumulatedMessage;
@@ -500,7 +497,7 @@ export class AssistantStream
500
497
  }
501
498
  }
502
499
 
503
- #handleRunStep(event: RunStepStreamEvent) {
500
+ #handleRunStep(this: AssistantStream, event: RunStepStreamEvent) {
504
501
  const accumulatedRunStep = this.#accumulateRunStep(event);
505
502
  this.#currentRunStepSnapshot = accumulatedRunStep;
506
503
 
@@ -556,7 +553,7 @@ export class AssistantStream
556
553
  }
557
554
  }
558
555
 
559
- #handleEvent(event: AssistantStreamEvent) {
556
+ #handleEvent(this: AssistantStream, event: AssistantStreamEvent) {
560
557
  this.#events.push(event);
561
558
  this._emit('event', event);
562
559
  }
@@ -696,7 +693,7 @@ export class AssistantStream
696
693
  return acc;
697
694
  }
698
695
 
699
- #handleRun(event: RunStreamEvent) {
696
+ #handleRun(this: AssistantStream, event: RunStreamEvent) {
700
697
  this.#currentRunSnapshot = event.data;
701
698
  switch (event.event) {
702
699
  case 'thread.run.created':
@@ -720,4 +717,35 @@ export class AssistantStream
720
717
  break;
721
718
  }
722
719
  }
720
+
721
+ protected _addRun(run: Run): Run {
722
+ return run;
723
+ }
724
+
725
+ protected async _threadAssistantStream(
726
+ body: ThreadCreateAndRunParamsBase,
727
+ thread: Threads,
728
+ options?: Core.RequestOptions,
729
+ ): Promise<Run> {
730
+ return await this._createThreadAssistantStream(thread, body, options);
731
+ }
732
+
733
+ protected async _runAssistantStream(
734
+ threadId: string,
735
+ runs: Runs,
736
+ params: RunCreateParamsBase,
737
+ options?: Core.RequestOptions,
738
+ ): Promise<Run> {
739
+ return await this._createAssistantStream(runs, threadId, params, options);
740
+ }
741
+
742
+ protected async _runToolAssistantStream(
743
+ threadId: string,
744
+ runId: string,
745
+ runs: Runs,
746
+ params: RunSubmitToolOutputsParamsStream,
747
+ options?: Core.RequestOptions,
748
+ ): Promise<Run> {
749
+ return await this._createToolAssistantStream(runs, threadId, runId, params, options);
750
+ }
723
751
  }
@@ -59,7 +59,7 @@ export class ChatCompletionRunner extends AbstractChatCompletionRunner<ChatCompl
59
59
  return runner;
60
60
  }
61
61
 
62
- override _addMessage(message: ChatCompletionMessageParam) {
62
+ override _addMessage(this: ChatCompletionRunner, message: ChatCompletionMessageParam) {
63
63
  super._addMessage(message);
64
64
  if (isAssistantMessage(message) && message.content) {
65
65
  this._emit('content', message.content as string);
@@ -66,7 +66,7 @@ export class ChatCompletionStream
66
66
  if (this.ended) return;
67
67
  this.#currentChatCompletionSnapshot = undefined;
68
68
  }
69
- #addChunk(chunk: ChatCompletionChunk) {
69
+ #addChunk(this: ChatCompletionStream, chunk: ChatCompletionChunk) {
70
70
  if (this.ended) return;
71
71
  const completion = this.#accumulateChatCompletion(chunk);
72
72
  this._emit('chunk', chunk, completion);
@@ -208,7 +208,7 @@ export class ChatCompletionStream
208
208
  return snapshot;
209
209
  }
210
210
 
211
- [Symbol.asyncIterator](): AsyncIterator<ChatCompletionChunk> {
211
+ [Symbol.asyncIterator](this: ChatCompletionStream): AsyncIterator<ChatCompletionChunk> {
212
212
  const pushQueue: ChatCompletionChunk[] = [];
213
213
  const readQueue: {
214
214
  resolve: (chunk: ChatCompletionChunk | undefined) => void;