openai 6.45.0 → 6.47.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 (335) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +9 -2
  3. package/client.d.mts +1 -0
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +1 -0
  6. package/client.d.ts.map +1 -1
  7. package/client.js +11 -5
  8. package/client.js.map +1 -1
  9. package/client.mjs +11 -5
  10. package/client.mjs.map +1 -1
  11. package/core/streaming.d.mts.map +1 -1
  12. package/core/streaming.d.ts.map +1 -1
  13. package/core/streaming.js +38 -6
  14. package/core/streaming.js.map +1 -1
  15. package/core/streaming.mjs +38 -6
  16. package/core/streaming.mjs.map +1 -1
  17. package/core/uploads.d.mts +1 -1
  18. package/core/uploads.d.mts.map +1 -1
  19. package/core/uploads.d.ts +1 -1
  20. package/core/uploads.d.ts.map +1 -1
  21. package/core/uploads.js +3 -1
  22. package/core/uploads.js.map +1 -1
  23. package/core/uploads.mjs +1 -0
  24. package/core/uploads.mjs.map +1 -1
  25. package/helpers/audio.d.mts.map +1 -1
  26. package/helpers/audio.d.ts.map +1 -1
  27. package/helpers/audio.js +16 -3
  28. package/helpers/audio.js.map +1 -1
  29. package/helpers/audio.mjs +17 -4
  30. package/helpers/audio.mjs.map +1 -1
  31. package/helpers/zod.d.mts +20 -7
  32. package/helpers/zod.d.mts.map +1 -1
  33. package/helpers/zod.d.ts +20 -7
  34. package/helpers/zod.d.ts.map +1 -1
  35. package/helpers/zod.js +24 -12
  36. package/helpers/zod.js.map +1 -1
  37. package/helpers/zod.mjs +24 -12
  38. package/helpers/zod.mjs.map +1 -1
  39. package/index.d.mts +1 -1
  40. package/index.d.mts.map +1 -1
  41. package/index.d.ts +1 -1
  42. package/index.d.ts.map +1 -1
  43. package/index.js +2 -1
  44. package/index.js.map +1 -1
  45. package/index.mjs +1 -1
  46. package/index.mjs.map +1 -1
  47. package/internal/uploads.d.mts +26 -1
  48. package/internal/uploads.d.mts.map +1 -1
  49. package/internal/uploads.d.ts +26 -1
  50. package/internal/uploads.d.ts.map +1 -1
  51. package/internal/uploads.js +169 -1
  52. package/internal/uploads.js.map +1 -1
  53. package/internal/uploads.mjs +169 -2
  54. package/internal/uploads.mjs.map +1 -1
  55. package/lib/AbstractChatCompletionRunner.d.mts +3 -3
  56. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  57. package/lib/AbstractChatCompletionRunner.d.ts +3 -3
  58. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  59. package/lib/AbstractChatCompletionRunner.js +18 -3
  60. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  61. package/lib/AbstractChatCompletionRunner.mjs +18 -3
  62. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  63. package/lib/AssistantStream.d.mts.map +1 -1
  64. package/lib/AssistantStream.d.ts.map +1 -1
  65. package/lib/AssistantStream.js +4 -3
  66. package/lib/AssistantStream.js.map +1 -1
  67. package/lib/AssistantStream.mjs +4 -3
  68. package/lib/AssistantStream.mjs.map +1 -1
  69. package/lib/ChatCompletionRunner.d.mts +26 -2
  70. package/lib/ChatCompletionRunner.d.mts.map +1 -1
  71. package/lib/ChatCompletionRunner.d.ts +26 -2
  72. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  73. package/lib/ChatCompletionRunner.js.map +1 -1
  74. package/lib/ChatCompletionRunner.mjs.map +1 -1
  75. package/lib/ChatCompletionStream.d.mts +14 -1
  76. package/lib/ChatCompletionStream.d.mts.map +1 -1
  77. package/lib/ChatCompletionStream.d.ts +14 -1
  78. package/lib/ChatCompletionStream.d.ts.map +1 -1
  79. package/lib/ChatCompletionStream.js +75 -16
  80. package/lib/ChatCompletionStream.js.map +1 -1
  81. package/lib/ChatCompletionStream.mjs +74 -16
  82. package/lib/ChatCompletionStream.mjs.map +1 -1
  83. package/lib/ChatCompletionStreamingRunner.d.mts +25 -2
  84. package/lib/ChatCompletionStreamingRunner.d.mts.map +1 -1
  85. package/lib/ChatCompletionStreamingRunner.d.ts +25 -2
  86. package/lib/ChatCompletionStreamingRunner.d.ts.map +1 -1
  87. package/lib/ChatCompletionStreamingRunner.js +77 -0
  88. package/lib/ChatCompletionStreamingRunner.js.map +1 -1
  89. package/lib/ChatCompletionStreamingRunner.mjs +78 -1
  90. package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
  91. package/lib/EventStream.d.mts +13 -0
  92. package/lib/EventStream.d.mts.map +1 -1
  93. package/lib/EventStream.d.ts +13 -0
  94. package/lib/EventStream.d.ts.map +1 -1
  95. package/lib/EventStream.js +107 -2
  96. package/lib/EventStream.js.map +1 -1
  97. package/lib/EventStream.mjs +107 -2
  98. package/lib/EventStream.mjs.map +1 -1
  99. package/lib/RunnableFunction.d.mts +38 -21
  100. package/lib/RunnableFunction.d.mts.map +1 -1
  101. package/lib/RunnableFunction.d.ts +38 -21
  102. package/lib/RunnableFunction.d.ts.map +1 -1
  103. package/lib/RunnableFunction.js.map +1 -1
  104. package/lib/RunnableFunction.mjs.map +1 -1
  105. package/lib/parser.d.mts +2 -2
  106. package/lib/parser.d.mts.map +1 -1
  107. package/lib/parser.d.ts +2 -2
  108. package/lib/parser.d.ts.map +1 -1
  109. package/lib/parser.js.map +1 -1
  110. package/lib/parser.mjs.map +1 -1
  111. package/lib/responses/ResponseAccumulator.d.mts +6 -1
  112. package/lib/responses/ResponseAccumulator.d.mts.map +1 -1
  113. package/lib/responses/ResponseAccumulator.d.ts +6 -1
  114. package/lib/responses/ResponseAccumulator.d.ts.map +1 -1
  115. package/lib/responses/ResponseAccumulator.js +1 -0
  116. package/lib/responses/ResponseAccumulator.js.map +1 -1
  117. package/lib/responses/ResponseAccumulator.mjs +1 -0
  118. package/lib/responses/ResponseAccumulator.mjs.map +1 -1
  119. package/lib/responses/ResponseInputItems.d.mts.map +1 -1
  120. package/lib/responses/ResponseInputItems.d.ts.map +1 -1
  121. package/lib/responses/ResponseInputItems.js +2 -0
  122. package/lib/responses/ResponseInputItems.js.map +1 -1
  123. package/lib/responses/ResponseInputItems.mjs +2 -0
  124. package/lib/responses/ResponseInputItems.mjs.map +1 -1
  125. package/lib/responses/ResponseStream.d.mts +6 -1
  126. package/lib/responses/ResponseStream.d.mts.map +1 -1
  127. package/lib/responses/ResponseStream.d.ts +6 -1
  128. package/lib/responses/ResponseStream.d.ts.map +1 -1
  129. package/lib/responses/ResponseStream.js +21 -0
  130. package/lib/responses/ResponseStream.js.map +1 -1
  131. package/lib/responses/ResponseStream.mjs +21 -0
  132. package/lib/responses/ResponseStream.mjs.map +1 -1
  133. package/package.json +1 -1
  134. package/resources/admin/organization/projects/api-keys.d.mts +12 -0
  135. package/resources/admin/organization/projects/api-keys.d.mts.map +1 -1
  136. package/resources/admin/organization/projects/api-keys.d.ts +12 -0
  137. package/resources/admin/organization/projects/api-keys.d.ts.map +1 -1
  138. package/resources/beta/assistants.d.mts +12 -26
  139. package/resources/beta/assistants.d.mts.map +1 -1
  140. package/resources/beta/assistants.d.ts +12 -26
  141. package/resources/beta/assistants.d.ts.map +1 -1
  142. package/resources/beta/beta.d.mts +6 -1
  143. package/resources/beta/beta.d.mts.map +1 -1
  144. package/resources/beta/beta.d.ts +6 -1
  145. package/resources/beta/beta.d.ts.map +1 -1
  146. package/resources/beta/beta.js +4 -0
  147. package/resources/beta/beta.js.map +1 -1
  148. package/resources/beta/beta.mjs +4 -0
  149. package/resources/beta/beta.mjs.map +1 -1
  150. package/resources/beta/index.d.mts +1 -0
  151. package/resources/beta/index.d.mts.map +1 -1
  152. package/resources/beta/index.d.ts +1 -0
  153. package/resources/beta/index.d.ts.map +1 -1
  154. package/resources/beta/index.js +5 -3
  155. package/resources/beta/index.js.map +1 -1
  156. package/resources/beta/index.mjs +1 -0
  157. package/resources/beta/index.mjs.map +1 -1
  158. package/resources/beta/responses/index.d.mts +6 -0
  159. package/resources/beta/responses/index.d.mts.map +1 -0
  160. package/resources/beta/responses/index.d.ts +6 -0
  161. package/resources/beta/responses/index.d.ts.map +1 -0
  162. package/resources/beta/responses/index.js +11 -0
  163. package/resources/beta/responses/index.js.map +1 -0
  164. package/resources/beta/responses/index.mjs +5 -0
  165. package/resources/beta/responses/index.mjs.map +1 -0
  166. package/resources/beta/responses/input-items.d.mts +69 -0
  167. package/resources/beta/responses/input-items.d.mts.map +1 -0
  168. package/resources/beta/responses/input-items.d.ts +69 -0
  169. package/resources/beta/responses/input-items.d.ts.map +1 -0
  170. package/resources/beta/responses/input-items.js +37 -0
  171. package/resources/beta/responses/input-items.js.map +1 -0
  172. package/resources/beta/responses/input-items.mjs +33 -0
  173. package/resources/beta/responses/input-items.mjs.map +1 -0
  174. package/resources/beta/responses/input-tokens.d.mts +191 -0
  175. package/resources/beta/responses/input-tokens.d.mts.map +1 -0
  176. package/resources/beta/responses/input-tokens.d.ts +191 -0
  177. package/resources/beta/responses/input-tokens.d.ts.map +1 -0
  178. package/resources/beta/responses/input-tokens.js +34 -0
  179. package/resources/beta/responses/input-tokens.js.map +1 -0
  180. package/resources/beta/responses/input-tokens.mjs +30 -0
  181. package/resources/beta/responses/input-tokens.mjs.map +1 -0
  182. package/resources/beta/responses/internal-base.d.mts +71 -0
  183. package/resources/beta/responses/internal-base.d.mts.map +1 -0
  184. package/resources/beta/responses/internal-base.d.ts +71 -0
  185. package/resources/beta/responses/internal-base.d.ts.map +1 -0
  186. package/resources/beta/responses/internal-base.js +48 -0
  187. package/resources/beta/responses/internal-base.js.map +1 -0
  188. package/resources/beta/responses/internal-base.mjs +42 -0
  189. package/resources/beta/responses/internal-base.mjs.map +1 -0
  190. package/resources/beta/responses/responses.d.mts +9986 -0
  191. package/resources/beta/responses/responses.d.mts.map +1 -0
  192. package/resources/beta/responses/responses.d.ts +9986 -0
  193. package/resources/beta/responses/responses.d.ts.map +1 -0
  194. package/resources/beta/responses/responses.js +121 -0
  195. package/resources/beta/responses/responses.js.map +1 -0
  196. package/resources/beta/responses/responses.mjs +116 -0
  197. package/resources/beta/responses/responses.mjs.map +1 -0
  198. package/resources/beta/responses/ws-base.d.mts +106 -0
  199. package/resources/beta/responses/ws-base.d.mts.map +1 -0
  200. package/resources/beta/responses/ws-base.d.ts +106 -0
  201. package/resources/beta/responses/ws-base.d.ts.map +1 -0
  202. package/resources/beta/responses/ws-base.js +476 -0
  203. package/resources/beta/responses/ws-base.js.map +1 -0
  204. package/resources/beta/responses/ws-base.mjs +472 -0
  205. package/resources/beta/responses/ws-base.mjs.map +1 -0
  206. package/resources/beta/responses/ws.d.mts +13 -0
  207. package/resources/beta/responses/ws.d.mts.map +1 -0
  208. package/resources/beta/responses/ws.d.ts +13 -0
  209. package/resources/beta/responses/ws.d.ts.map +1 -0
  210. package/resources/beta/responses/ws.js +31 -0
  211. package/resources/beta/responses/ws.js.map +1 -0
  212. package/resources/beta/responses/ws.mjs +26 -0
  213. package/resources/beta/responses/ws.mjs.map +1 -0
  214. package/resources/beta/responses.d.mts +2 -0
  215. package/resources/beta/responses.d.mts.map +1 -0
  216. package/resources/beta/responses.d.ts +2 -0
  217. package/resources/beta/responses.d.ts.map +1 -0
  218. package/resources/beta/responses.js +6 -0
  219. package/resources/beta/responses.js.map +1 -0
  220. package/resources/beta/responses.mjs +3 -0
  221. package/resources/beta/responses.mjs.map +1 -0
  222. package/resources/beta/threads/runs/runs.d.mts +6 -13
  223. package/resources/beta/threads/runs/runs.d.mts.map +1 -1
  224. package/resources/beta/threads/runs/runs.d.ts +6 -13
  225. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  226. package/resources/beta/threads/runs/runs.js.map +1 -1
  227. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  228. package/resources/chat/completions/completions.d.mts +170 -20
  229. package/resources/chat/completions/completions.d.mts.map +1 -1
  230. package/resources/chat/completions/completions.d.ts +170 -20
  231. package/resources/chat/completions/completions.d.ts.map +1 -1
  232. package/resources/chat/completions/completions.js.map +1 -1
  233. package/resources/chat/completions/completions.mjs.map +1 -1
  234. package/resources/completions.d.mts +4 -0
  235. package/resources/completions.d.mts.map +1 -1
  236. package/resources/completions.d.ts +4 -0
  237. package/resources/completions.d.ts.map +1 -1
  238. package/resources/conversations/conversations.d.mts +19 -0
  239. package/resources/conversations/conversations.d.mts.map +1 -1
  240. package/resources/conversations/conversations.d.ts +19 -0
  241. package/resources/conversations/conversations.d.ts.map +1 -1
  242. package/resources/conversations/conversations.js.map +1 -1
  243. package/resources/conversations/conversations.mjs.map +1 -1
  244. package/resources/conversations/items.d.mts +45 -1
  245. package/resources/conversations/items.d.mts.map +1 -1
  246. package/resources/conversations/items.d.ts +45 -1
  247. package/resources/conversations/items.d.ts.map +1 -1
  248. package/resources/evals/runs/runs.d.mts +66 -143
  249. package/resources/evals/runs/runs.d.mts.map +1 -1
  250. package/resources/evals/runs/runs.d.ts +66 -143
  251. package/resources/evals/runs/runs.d.ts.map +1 -1
  252. package/resources/evals/runs/runs.js.map +1 -1
  253. package/resources/evals/runs/runs.mjs.map +1 -1
  254. package/resources/graders/grader-models.d.mts +6 -13
  255. package/resources/graders/grader-models.d.mts.map +1 -1
  256. package/resources/graders/grader-models.d.ts +6 -13
  257. package/resources/graders/grader-models.d.ts.map +1 -1
  258. package/resources/realtime/calls.d.mts +1 -1
  259. package/resources/realtime/calls.d.mts.map +1 -1
  260. package/resources/realtime/calls.d.ts +1 -1
  261. package/resources/realtime/calls.d.ts.map +1 -1
  262. package/resources/realtime/client-secrets.d.mts +5 -1
  263. package/resources/realtime/client-secrets.d.mts.map +1 -1
  264. package/resources/realtime/client-secrets.d.ts +5 -1
  265. package/resources/realtime/client-secrets.d.ts.map +1 -1
  266. package/resources/realtime/realtime.d.mts +9 -1
  267. package/resources/realtime/realtime.d.mts.map +1 -1
  268. package/resources/realtime/realtime.d.ts +9 -1
  269. package/resources/realtime/realtime.d.ts.map +1 -1
  270. package/resources/realtime/realtime.js.map +1 -1
  271. package/resources/realtime/realtime.mjs.map +1 -1
  272. package/resources/responses/input-tokens.d.mts +7 -1
  273. package/resources/responses/input-tokens.d.mts.map +1 -1
  274. package/resources/responses/input-tokens.d.ts +7 -1
  275. package/resources/responses/input-tokens.d.ts.map +1 -1
  276. package/resources/responses/responses.d.mts +819 -26
  277. package/resources/responses/responses.d.mts.map +1 -1
  278. package/resources/responses/responses.d.ts +819 -26
  279. package/resources/responses/responses.d.ts.map +1 -1
  280. package/resources/responses/responses.js +1 -1
  281. package/resources/responses/responses.js.map +1 -1
  282. package/resources/responses/responses.mjs +1 -1
  283. package/resources/responses/responses.mjs.map +1 -1
  284. package/resources/shared.d.mts +20 -28
  285. package/resources/shared.d.mts.map +1 -1
  286. package/resources/shared.d.ts +20 -28
  287. package/resources/shared.d.ts.map +1 -1
  288. package/src/client.ts +13 -5
  289. package/src/core/streaming.ts +36 -8
  290. package/src/core/uploads.ts +6 -1
  291. package/src/helpers/audio.ts +18 -4
  292. package/src/helpers/zod.ts +62 -23
  293. package/src/index.ts +1 -1
  294. package/src/internal/uploads.ts +214 -4
  295. package/src/lib/AbstractChatCompletionRunner.ts +32 -9
  296. package/src/lib/AssistantStream.ts +4 -3
  297. package/src/lib/ChatCompletionRunner.ts +46 -6
  298. package/src/lib/ChatCompletionStream.ts +115 -17
  299. package/src/lib/ChatCompletionStreamingRunner.ts +144 -7
  300. package/src/lib/EventStream.ts +114 -4
  301. package/src/lib/RunnableFunction.ts +60 -31
  302. package/src/lib/parser.ts +4 -0
  303. package/src/lib/responses/ResponseAccumulator.ts +10 -1
  304. package/src/lib/responses/ResponseInputItems.ts +2 -0
  305. package/src/lib/responses/ResponseStream.ts +29 -1
  306. package/src/resources/admin/organization/projects/api-keys.ts +15 -1
  307. package/src/resources/beta/assistants.ts +12 -26
  308. package/src/resources/beta/beta.ts +330 -2
  309. package/src/resources/beta/index.ts +163 -0
  310. package/src/resources/beta/responses/index.ts +169 -0
  311. package/src/resources/beta/responses/input-items.ts +105 -0
  312. package/src/resources/beta/responses/input-tokens.ts +245 -0
  313. package/src/resources/beta/responses/internal-base.ts +117 -0
  314. package/src/resources/beta/responses/responses.ts +12633 -0
  315. package/src/resources/beta/responses/ws-base.ts +615 -0
  316. package/src/resources/beta/responses/ws.ts +38 -0
  317. package/src/resources/beta/responses.ts +3 -0
  318. package/src/resources/beta/threads/runs/runs.ts +6 -13
  319. package/src/resources/chat/completions/completions.ts +237 -23
  320. package/src/resources/completions.ts +5 -0
  321. package/src/resources/conversations/conversations.ts +21 -0
  322. package/src/resources/conversations/items.ts +56 -0
  323. package/src/resources/evals/runs/runs.ts +66 -143
  324. package/src/resources/graders/grader-models.ts +6 -13
  325. package/src/resources/realtime/calls.ts +2 -0
  326. package/src/resources/realtime/client-secrets.ts +7 -0
  327. package/src/resources/realtime/realtime.ts +12 -0
  328. package/src/resources/responses/input-tokens.ts +8 -0
  329. package/src/resources/responses/responses.ts +953 -17
  330. package/src/resources/shared.ts +23 -27
  331. package/src/version.ts +1 -1
  332. package/version.d.mts +1 -1
  333. package/version.d.ts +1 -1
  334. package/version.js +1 -1
  335. package/version.mjs +1 -1
@@ -1,26 +1,63 @@
1
1
  import {
2
2
  type ChatCompletionChunk,
3
3
  type ChatCompletionCreateParamsStreaming,
4
+ type ChatCompletionMessageParam,
4
5
  } from '../resources/chat/completions';
5
6
  import { RunnerOptions, type AbstractChatCompletionRunnerEvents } from './AbstractChatCompletionRunner';
6
7
  import { type ReadableStream } from '../internal/shim-types';
7
8
  import { RunnableTools, type BaseFunctionsArgs } from './RunnableFunction';
8
- import { ChatCompletionSnapshot, ChatCompletionStream } from './ChatCompletionStream';
9
+ import {
10
+ type ChatCompletionReadableStreamItem,
11
+ ChatCompletionSnapshot,
12
+ ChatCompletionStream,
13
+ makeChatCompletionReadableStreamMessageChunk,
14
+ } from './ChatCompletionStream';
15
+ import { OpenAIError } from '../error';
9
16
  import OpenAI from '../index';
10
17
  import { AutoParseableTool } from '../lib/parser';
18
+ import { Stream } from '../streaming';
19
+ import { isAssistantMessage, isToolMessage } from './chatCompletionUtils';
11
20
 
12
21
  export interface ChatCompletionStreamEvents extends AbstractChatCompletionRunnerEvents {
13
22
  content: (contentDelta: string, contentSnapshot: string) => void;
14
23
  chunk: (chunk: ChatCompletionChunk, snapshot: ChatCompletionSnapshot) => void;
15
24
  }
16
25
 
17
- export type ChatCompletionStreamingToolRunnerParams<FunctionsArgs extends BaseFunctionsArgs> = Omit<
18
- ChatCompletionCreateParamsStreaming,
19
- 'tools'
20
- > & {
21
- tools: RunnableTools<FunctionsArgs> | AutoParseableTool<any, true>[];
26
+ type ChatCompletionStreamingToolRunnerParamsBase = Omit<ChatCompletionCreateParamsStreaming, 'tools'>;
27
+
28
+ /**
29
+ * Parameters for tools that do not require a context value.
30
+ */
31
+ export type ChatCompletionStreamingToolRunnerParamsWithoutContext<FunctionsArgs extends BaseFunctionsArgs> =
32
+ ChatCompletionStreamingToolRunnerParamsBase & {
33
+ tools: RunnableTools<FunctionsArgs> | AutoParseableTool<any, true>[];
34
+ toolContext?: never;
35
+ };
36
+
37
+ /**
38
+ * Parameters for tools that require a context value.
39
+ */
40
+ export type ChatCompletionStreamingToolRunnerParamsWithContext<
41
+ FunctionsArgs extends BaseFunctionsArgs,
42
+ ToolContext,
43
+ > = ChatCompletionStreamingToolRunnerParamsBase & {
44
+ tools: RunnableTools<FunctionsArgs, ToolContext> | AutoParseableTool<any, true>[];
45
+ /**
46
+ * Context to pass to each tool callback during this run.
47
+ */
48
+ toolContext: ToolContext;
22
49
  };
23
50
 
51
+ /**
52
+ * Parameters for running streaming tools. Supplying a context type makes
53
+ * `toolContext` required; omitting it preserves the existing no-context form.
54
+ */
55
+ export type ChatCompletionStreamingToolRunnerParams<
56
+ FunctionsArgs extends BaseFunctionsArgs,
57
+ ToolContext = never,
58
+ > = [ToolContext] extends [never] ? ChatCompletionStreamingToolRunnerParamsWithoutContext<FunctionsArgs>
59
+ : ChatCompletionStreamingToolRunnerParamsWithContext<FunctionsArgs, ToolContext>;
60
+
24
61
  export class ChatCompletionStreamingRunner<ParsedT = null>
25
62
  extends ChatCompletionStream<ParsedT>
26
63
  implements AsyncIterable<ChatCompletionChunk>
@@ -31,9 +68,109 @@ export class ChatCompletionStreamingRunner<ParsedT = null>
31
68
  return runner;
32
69
  }
33
70
 
71
+ override toReadableStream(): ReadableStream {
72
+ const pushQueue: ChatCompletionReadableStreamItem[] = [];
73
+ const readQueue: {
74
+ resolve: (event: ChatCompletionReadableStreamItem | undefined) => void;
75
+ reject: (err: unknown) => void;
76
+ }[] = [];
77
+ let done = false;
78
+ let lastChunk: ChatCompletionChunk | undefined;
79
+ let toolCallIds: string[] | undefined;
80
+
81
+ const pushEvent = (event: ChatCompletionReadableStreamItem) => {
82
+ const reader = readQueue.shift();
83
+ if (reader) {
84
+ reader.resolve(event);
85
+ } else {
86
+ pushQueue.push(event);
87
+ }
88
+ };
89
+
90
+ this.on('chunk', (chunk) => {
91
+ lastChunk = chunk;
92
+ pushEvent(chunk);
93
+ });
94
+ this.on('message', (message: ChatCompletionMessageParam) => {
95
+ if (isAssistantMessage(message)) {
96
+ toolCallIds = message.tool_calls?.map((toolCall) => toolCall.id);
97
+ return;
98
+ }
99
+
100
+ if (isToolMessage(message)) {
101
+ if (!lastChunk) {
102
+ throw new OpenAIError('cannot serialize a tool message before receiving any chunks');
103
+ }
104
+ pushEvent(makeChatCompletionReadableStreamMessageChunk(lastChunk, message, toolCallIds));
105
+ }
106
+ });
107
+
108
+ this.on('end', () => {
109
+ done = true;
110
+ for (const reader of readQueue) {
111
+ reader.resolve(undefined);
112
+ }
113
+ readQueue.length = 0;
114
+ });
115
+
116
+ this.on('abort', (err) => {
117
+ done = true;
118
+ for (const reader of readQueue) {
119
+ reader.reject(err);
120
+ }
121
+ readQueue.length = 0;
122
+ });
123
+
124
+ this.on('error', (err) => {
125
+ done = true;
126
+ for (const reader of readQueue) {
127
+ reader.reject(err);
128
+ }
129
+ readQueue.length = 0;
130
+ });
131
+
132
+ const iterator = (): AsyncIterator<ChatCompletionReadableStreamItem> => ({
133
+ next: async (): Promise<IteratorResult<ChatCompletionReadableStreamItem>> => {
134
+ if (!pushQueue.length) {
135
+ if (done) {
136
+ return { value: undefined, done: true };
137
+ }
138
+ return new Promise<ChatCompletionReadableStreamItem | undefined>((resolve, reject) =>
139
+ readQueue.push({ resolve, reject }),
140
+ ).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));
141
+ }
142
+ const event = pushQueue.shift();
143
+ if (!event) {
144
+ return { value: undefined, done: true };
145
+ }
146
+ return { value: event, done: false };
147
+ },
148
+ return: async () => {
149
+ this.abort();
150
+ return { value: undefined, done: true };
151
+ },
152
+ });
153
+
154
+ const stream = new Stream(iterator, this.controller);
155
+ return stream.toReadableStream();
156
+ }
157
+
158
+ static runTools<T extends (string | object)[], ParsedT = null, ToolContext = unknown>(
159
+ client: OpenAI,
160
+ params: ChatCompletionStreamingToolRunnerParamsWithContext<T, ToolContext>,
161
+ options?: RunnerOptions,
162
+ ): ChatCompletionStreamingRunner<ParsedT>;
163
+
34
164
  static runTools<T extends (string | object)[], ParsedT = null>(
35
165
  client: OpenAI,
36
- params: ChatCompletionStreamingToolRunnerParams<T>,
166
+ params: ChatCompletionStreamingToolRunnerParamsWithoutContext<T>,
167
+ options?: RunnerOptions,
168
+ ): ChatCompletionStreamingRunner<ParsedT>;
169
+ static runTools<T extends (string | object)[], ParsedT = null, ToolContext = unknown>(
170
+ client: OpenAI,
171
+ params:
172
+ | ChatCompletionStreamingToolRunnerParamsWithContext<T, ToolContext>
173
+ | ChatCompletionStreamingToolRunnerParamsWithoutContext<T>,
37
174
  options?: RunnerOptions,
38
175
  ): ChatCompletionStreamingRunner<ParsedT> {
39
176
  const runner = new ChatCompletionStreamingRunner<ParsedT>(
@@ -44,10 +44,17 @@ export class EventStream<EventTypes extends BaseEvents> {
44
44
  // Unfortunately if we call `executor()` immediately we get runtime errors about
45
45
  // references to `this` before the `super()` constructor call returns.
46
46
  setTimeout(() => {
47
- executor().then(() => {
48
- this._emitFinal();
49
- this._emit('end');
50
- }, this.#handleError.bind(this));
47
+ Promise.resolve()
48
+ .then(executor)
49
+ .then(() => {
50
+ try {
51
+ this._emitFinal();
52
+ } catch (error) {
53
+ this.#handleError(error);
54
+ return;
55
+ }
56
+ this._emit('end');
57
+ }, this.#handleError.bind(this));
51
58
  }, 0);
52
59
  }
53
60
 
@@ -157,6 +164,109 @@ export class EventStream<EventTypes extends BaseEvents> {
157
164
  });
158
165
  }
159
166
 
167
+ /**
168
+ * Returns an async iterator that yields every time the event is triggered.
169
+ * The iterator ends when the stream ends and rejects if the stream errors
170
+ * or is aborted. If you request the 'error' or 'abort' event, the iterator
171
+ * yields that event instead of rejecting.
172
+ *
173
+ * Example:
174
+ *
175
+ * for await (const [message] of stream.events('message')) {
176
+ * await processMessage(message);
177
+ * }
178
+ */
179
+ events<Event extends keyof EventTypes>(
180
+ event: Event,
181
+ ): AsyncIterableIterator<EventParameters<EventTypes, Event>> {
182
+ type Parameters = EventParameters<EventTypes, Event>;
183
+ type Result = IteratorResult<Parameters>;
184
+ type Reader = {
185
+ resolve: (result: Result) => void;
186
+ reject: (error: OpenAIError) => void;
187
+ };
188
+
189
+ const pushQueue: Parameters[] = [];
190
+ const readQueue: Reader[] = [];
191
+ let ended = this.ended;
192
+ let failure: OpenAIError | undefined;
193
+ let failureDelivered = false;
194
+
195
+ const doneResult = (): Result => ({ value: undefined as never, done: true });
196
+ const finishReaders = () => {
197
+ while (readQueue.length) {
198
+ readQueue.shift()!.resolve(doneResult());
199
+ }
200
+ };
201
+ const rejectReader = () => {
202
+ if (!failure || failureDelivered || !readQueue.length) return;
203
+ failureDelivered = true;
204
+ readQueue.shift()!.reject(failure);
205
+ };
206
+ const cleanup = () => {
207
+ this.off(event, onEvent as EventListener<EventTypes, Event>);
208
+ this.off('end', onEnd);
209
+ if (event !== 'error') this.off('error', onFailure);
210
+ if (event !== 'abort') this.off('abort', onFailure);
211
+ };
212
+ const onEvent = (...args: Parameters) => {
213
+ if (ended) return;
214
+ const reader = readQueue.shift();
215
+ if (reader) {
216
+ reader.resolve({ value: args, done: false });
217
+ } else {
218
+ pushQueue.push(args);
219
+ }
220
+ };
221
+ const onFailure = (error: OpenAIError) => {
222
+ failure = error;
223
+ if (!pushQueue.length) rejectReader();
224
+ };
225
+ const onEnd = () => {
226
+ ended = true;
227
+ cleanup();
228
+ if (!pushQueue.length) {
229
+ rejectReader();
230
+ finishReaders();
231
+ }
232
+ };
233
+
234
+ if (!ended) {
235
+ this.on(event, onEvent as EventListener<EventTypes, Event>);
236
+ this.on('end', onEnd);
237
+ if (event !== 'error') this.on('error', onFailure);
238
+ if (event !== 'abort') this.on('abort', onFailure);
239
+ }
240
+
241
+ return {
242
+ next: () => {
243
+ const value = pushQueue.shift();
244
+ if (value) return Promise.resolve({ value, done: false });
245
+
246
+ if (failure && !failureDelivered) {
247
+ failureDelivered = true;
248
+ return Promise.reject(failure);
249
+ }
250
+
251
+ if (ended) return Promise.resolve(doneResult());
252
+
253
+ return new Promise<Result>((resolve, reject) => {
254
+ readQueue.push({ resolve, reject });
255
+ });
256
+ },
257
+ return: () => {
258
+ ended = true;
259
+ pushQueue.length = 0;
260
+ cleanup();
261
+ finishReaders();
262
+ return Promise.resolve(doneResult());
263
+ },
264
+ [Symbol.asyncIterator]() {
265
+ return this;
266
+ },
267
+ };
268
+ }
269
+
160
270
  async done(): Promise<void> {
161
271
  this.#catchingPromiseCreated = true;
162
272
  await this.#endPromise;
@@ -4,15 +4,17 @@ import { JSONSchema } from './jsonschema';
4
4
 
5
5
  type PromiseOrValue<T> = T | Promise<T>;
6
6
 
7
- export type RunnableFunctionWithParse<Args extends object> = {
7
+ export type RunnableFunctionWithParse<Args extends object, ToolContext = unknown> = {
8
8
  /**
9
9
  * @param args the return value from `parse`.
10
10
  * @param runner the runner evaluating this callback.
11
+ * @param toolContext the context passed to `.runTools()`.
11
12
  * @returns a string to send back to OpenAI.
12
13
  */
13
14
  function: (
14
15
  args: Args,
15
16
  runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
17
+ toolContext: ToolContext,
16
18
  ) => PromiseOrValue<unknown>;
17
19
  /**
18
20
  * @param input the raw args from the OpenAI function call.
@@ -34,14 +36,17 @@ export type RunnableFunctionWithParse<Args extends object> = {
34
36
  strict?: boolean | undefined;
35
37
  };
36
38
 
37
- export type RunnableFunctionWithoutParse = {
39
+ export type RunnableFunctionWithoutParse<ToolContext = unknown> = {
38
40
  /**
39
41
  * @param args the raw args from the OpenAI function call.
42
+ * @param runner the runner evaluating this callback.
43
+ * @param toolContext the context passed to `.runTools()`.
40
44
  * @returns a string to send back to OpenAI
41
45
  */
42
46
  function: (
43
47
  args: string,
44
48
  runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
49
+ toolContext: ToolContext,
45
50
  ) => PromiseOrValue<unknown>;
46
51
  /**
47
52
  * The parameters the function accepts, describes as a JSON Schema object.
@@ -58,56 +63,80 @@ export type RunnableFunctionWithoutParse = {
58
63
  strict?: boolean | undefined;
59
64
  };
60
65
 
61
- export type RunnableFunction<Args extends object | string> =
62
- Args extends string ? RunnableFunctionWithoutParse
63
- : Args extends object ? RunnableFunctionWithParse<Args>
64
- : never;
66
+ export type RunnableFunction<Args extends object | string, ToolContext = unknown> = Args extends string ?
67
+ RunnableFunctionWithoutParse<ToolContext>
68
+ : Args extends object ? RunnableFunctionWithParse<Args, ToolContext>
69
+ : never;
65
70
 
66
- export type RunnableToolFunction<Args extends object | string> =
67
- Args extends string ? RunnableToolFunctionWithoutParse
68
- : Args extends object ? RunnableToolFunctionWithParse<Args>
69
- : never;
71
+ export type RunnableToolFunction<Args extends object | string, ToolContext = unknown> = Args extends string ?
72
+ RunnableToolFunctionWithoutParse<ToolContext>
73
+ : Args extends object ? RunnableToolFunctionWithParse<Args, ToolContext>
74
+ : never;
70
75
 
71
- export type RunnableToolFunctionWithoutParse = {
76
+ export type RunnableToolFunctionWithoutParse<ToolContext = unknown> = {
77
+ type: 'function';
78
+ function: RunnableFunctionWithoutParse<ToolContext>;
79
+ };
80
+ export type RunnableToolFunctionWithParse<Args extends object, ToolContext = unknown> = {
72
81
  type: 'function';
73
- function: RunnableFunctionWithoutParse;
82
+ function: RunnableFunctionWithParse<Args, ToolContext>;
74
83
  };
75
- export type RunnableToolFunctionWithParse<Args extends object> = {
84
+
85
+ /**
86
+ * A broad tool shape for contextually typing callbacks when the argument type is inferred.
87
+ */
88
+ export type RunnableToolFunctionWithContext<ToolContext> = {
76
89
  type: 'function';
77
- function: RunnableFunctionWithParse<Args>;
90
+ function: {
91
+ function: (
92
+ args: any,
93
+ runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
94
+ toolContext: ToolContext,
95
+ ) => PromiseOrValue<unknown>;
96
+ parse?: (input: string) => PromiseOrValue<any>;
97
+ parameters: JSONSchema;
98
+ description: string;
99
+ name?: string | undefined;
100
+ strict?: boolean | undefined;
101
+ };
78
102
  };
79
103
 
80
- export function isRunnableFunctionWithParse<Args extends object>(
104
+ export function isRunnableFunctionWithParse<Args extends object, ToolContext = unknown>(
81
105
  fn: any,
82
- ): fn is RunnableFunctionWithParse<Args> {
106
+ ): fn is RunnableFunctionWithParse<Args, ToolContext> {
83
107
  return typeof (fn as any).parse === 'function';
84
108
  }
85
109
 
86
110
  export type BaseFunctionsArgs = readonly (object | string)[];
87
111
 
88
- export type RunnableFunctions<FunctionsArgs extends BaseFunctionsArgs> =
89
- [any[]] extends [FunctionsArgs] ? readonly RunnableFunction<any>[]
90
- : {
91
- [Index in keyof FunctionsArgs]: Index extends number ? RunnableFunction<FunctionsArgs[Index]>
92
- : FunctionsArgs[Index];
93
- };
112
+ export type RunnableFunctions<FunctionsArgs extends BaseFunctionsArgs, ToolContext = unknown> = [
113
+ any[],
114
+ ] extends [FunctionsArgs] ?
115
+ readonly RunnableFunction<any, ToolContext>[]
116
+ : {
117
+ [Index in keyof FunctionsArgs]: Index extends number ? RunnableFunction<FunctionsArgs[Index], ToolContext>
118
+ : FunctionsArgs[Index];
119
+ };
94
120
 
95
- export type RunnableTools<FunctionsArgs extends BaseFunctionsArgs> =
96
- [any[]] extends [FunctionsArgs] ? readonly RunnableToolFunction<any>[]
97
- : {
98
- [Index in keyof FunctionsArgs]: Index extends number ? RunnableToolFunction<FunctionsArgs[Index]>
99
- : FunctionsArgs[Index];
100
- };
121
+ export type RunnableTools<FunctionsArgs extends BaseFunctionsArgs, ToolContext = unknown> = [any[]] extends (
122
+ [FunctionsArgs]
123
+ ) ?
124
+ readonly RunnableToolFunction<any, ToolContext>[]
125
+ : {
126
+ [Index in keyof FunctionsArgs]: Index extends number ?
127
+ RunnableToolFunction<FunctionsArgs[Index], ToolContext>
128
+ : FunctionsArgs[Index];
129
+ };
101
130
 
102
131
  /**
103
132
  * This is helper class for passing a `function` and `parse` where the `function`
104
133
  * argument type matches the `parse` return type.
105
134
  */
106
- export class ParsingToolFunction<Args extends object> {
135
+ export class ParsingToolFunction<Args extends object, ToolContext = unknown> {
107
136
  type: 'function';
108
- function: RunnableFunctionWithParse<Args>;
137
+ function: RunnableFunctionWithParse<Args, ToolContext>;
109
138
 
110
- constructor(input: RunnableFunctionWithParse<Args>) {
139
+ constructor(input: RunnableFunctionWithParse<Args, ToolContext>) {
111
140
  this.type = 'function';
112
141
  this.function = input;
113
142
  }
package/src/lib/parser.ts CHANGED
@@ -7,8 +7,10 @@ import {
7
7
  ChatCompletionMessage,
8
8
  ChatCompletionMessageFunctionToolCall,
9
9
  ChatCompletionStreamingToolRunnerParams,
10
+ ChatCompletionStreamingToolRunnerParamsWithContext,
10
11
  ChatCompletionStreamParams,
11
12
  ChatCompletionToolRunnerParams,
13
+ ChatCompletionToolRunnerParamsWithContext,
12
14
  ParsedChatCompletion,
13
15
  ParsedChoice,
14
16
  ParsedFunctionToolCall,
@@ -19,7 +21,9 @@ import { ResponseFormatJSONSchema } from '../resources/shared';
19
21
  type AnyChatCompletionCreateParams =
20
22
  | ChatCompletionCreateParams
21
23
  | ChatCompletionToolRunnerParams<any>
24
+ | ChatCompletionToolRunnerParamsWithContext<any, any>
22
25
  | ChatCompletionStreamingToolRunnerParams<any>
26
+ | ChatCompletionStreamingToolRunnerParamsWithContext<any, any>
23
27
  | ChatCompletionStreamParams;
24
28
 
25
29
  type Unpacked<T> = T extends (infer U)[] ? U : T;
@@ -6,6 +6,11 @@ import {
6
6
  import { OpenAIError } from '../../error';
7
7
  import { addOutputText } from '../ResponsesParser';
8
8
 
9
+ type ResponseKeepAliveEvent = {
10
+ type: 'keepalive';
11
+ sequence_number: number;
12
+ };
13
+
9
14
  /**
10
15
  * Applies a streaming event to a response snapshot.
11
16
  *
@@ -13,7 +18,10 @@ import { addOutputText } from '../ResponsesParser';
13
18
  * in place, while response lifecycle events return a detached replacement. Event
14
19
  * payloads are cloned, so retaining or replaying the raw events is safe.
15
20
  */
16
- export function accumulateResponse(event: ResponseStreamEvent, snapshot?: Response): Response {
21
+ export function accumulateResponse(
22
+ event: ResponseStreamEvent | ResponseKeepAliveEvent,
23
+ snapshot?: Response,
24
+ ): Response {
17
25
  if (!snapshot) {
18
26
  if (event.type !== 'response.created') {
19
27
  throw new OpenAIError(
@@ -371,6 +379,7 @@ export function accumulateResponse(event: ResponseStreamEvent, snapshot?: Respon
371
379
  case 'response.mcp_list_tools.in_progress':
372
380
  case 'response.mcp_list_tools.completed':
373
381
  case 'response.mcp_list_tools.failed':
382
+ case 'keepalive':
374
383
  case 'error': {
375
384
  // These events do not contain state represented by the Response object.
376
385
  break;
@@ -96,6 +96,8 @@ export function toResponseInputItem(item: ResponseInputItemLike): ResponseInputI
96
96
  case 'mcp_call':
97
97
  case 'mcp_list_tools':
98
98
  case 'message':
99
+ case 'program':
100
+ case 'program_output':
99
101
  case 'reasoning':
100
102
  case 'shell_call':
101
103
  case 'tool_search_call':
@@ -7,6 +7,7 @@ import {
7
7
  type ResponseStreamEvent,
8
8
  } from '../../resources/responses/responses';
9
9
  import { RequestOptions } from '../../internal/request-options';
10
+ import { type ReadableStream } from '../../internal/shim-types';
10
11
  import { APIUserAbortError, OpenAIError } from '../../error';
11
12
  import OpenAI from '../../index';
12
13
  import { type BaseEvents, EventStream } from '../EventStream';
@@ -27,7 +28,9 @@ export type ResponseStreamByIdParams = {
27
28
  */
28
29
  response_id: string;
29
30
  /**
30
- * If provided, the stream will start after the event with the given sequence number.
31
+ * If provided, events with a sequence number less than or equal to this value
32
+ * will not be emitted. The helper still replays them internally to build a
33
+ * complete snapshot for later events and `finalResponse()`.
31
34
  */
32
35
  starting_after?: number;
33
36
  /**
@@ -90,6 +93,12 @@ export class ResponseStream<ParsedT = null>
90
93
  return runner;
91
94
  }
92
95
 
96
+ static fromReadableStream(stream: ReadableStream): ResponseStream<null> {
97
+ const runner = new ResponseStream(null);
98
+ runner._run(() => runner._fromReadableStream(stream));
99
+ return runner;
100
+ }
101
+
93
102
  #beginRequest() {
94
103
  if (this.ended) return;
95
104
  this.#currentResponseSnapshot = undefined;
@@ -175,6 +184,8 @@ export class ResponseStream<ParsedT = null>
175
184
  let stream: Stream<ResponseStreamEvent> | undefined;
176
185
  let starting_after: number | null = null;
177
186
  if ('response_id' in params) {
187
+ // Keep the full replay so that `accumulateResponse()` sees `response.created` and can build
188
+ // complete snapshots before locally filtering events at `starting_after`.
178
189
  stream = await client.responses.retrieve(
179
190
  params.response_id,
180
191
  { stream: true },
@@ -198,6 +209,23 @@ export class ResponseStream<ParsedT = null>
198
209
  return this.#endRequest();
199
210
  }
200
211
 
212
+ protected async _fromReadableStream(
213
+ readableStream: ReadableStream,
214
+ options?: RequestOptions,
215
+ ): Promise<ParsedResponse<ParsedT>> {
216
+ this._listenForAbort(options?.signal);
217
+ this.#beginRequest();
218
+ this._connected();
219
+ const stream = Stream.fromReadableStream<ResponseStreamEvent>(readableStream, this.controller);
220
+ for await (const event of stream) {
221
+ this.#addEvent(event, null);
222
+ }
223
+ if (stream.controller.signal?.aborted) {
224
+ throw new APIUserAbortError();
225
+ }
226
+ return this.#endRequest();
227
+ }
228
+
201
229
  [Symbol.asyncIterator](this: ResponseStream<ParsedT>): AsyncIterator<ResponseStreamEvent> {
202
230
  const pushQueue: ResponseStreamEvent[] = [];
203
231
  const readQueue: {
@@ -121,6 +121,11 @@ export interface ProjectAPIKey {
121
121
 
122
122
  owner: ProjectAPIKey.Owner;
123
123
 
124
+ /**
125
+ * Whether the API key's owner currently has effective access to the project.
126
+ */
127
+ owner_project_access: 'active' | 'inactive';
128
+
124
129
  /**
125
130
  * The redacted value of the API key
126
131
  */
@@ -218,7 +223,16 @@ export interface APIKeyRetrieveParams {
218
223
  project_id: string;
219
224
  }
220
225
 
221
- export interface APIKeyListParams extends ConversationCursorPageParams {}
226
+ export interface APIKeyListParams extends ConversationCursorPageParams {
227
+ /**
228
+ * Filter API keys by whether the owner currently has effective access to the
229
+ * project. Use `active` for owners with access, `inactive` for owners without
230
+ * access, or `any` for all enabled project API keys. If omitted, the endpoint
231
+ * applies its existing membership-based visibility rules, which may exclude some
232
+ * enabled keys.
233
+ */
234
+ owner_project_access?: 'active' | 'inactive' | 'any';
235
+ }
222
236
 
223
237
  export interface APIKeyDeleteParams {
224
238
  /**
@@ -1141,19 +1141,12 @@ export interface AssistantCreateParams {
1141
1141
  name?: string | null;
1142
1142
 
1143
1143
  /**
1144
- * Constrains effort on reasoning for
1145
- * [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
1146
- * supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`.
1147
- * Reducing reasoning effort can result in faster responses and fewer tokens used
1148
- * on reasoning in a response.
1149
- *
1150
- * - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported
1151
- * reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool
1152
- * calls are supported for all reasoning values in gpt-5.1.
1153
- * - All models before `gpt-5.1` default to `medium` reasoning effort, and do not
1154
- * support `none`.
1155
- * - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort.
1156
- * - `xhigh` is supported for all models after `gpt-5.1-codex-max`.
1144
+ * Constrains effort on reasoning for reasoning models. Currently supported values
1145
+ * are `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Reducing
1146
+ * reasoning effort can result in faster responses and fewer tokens used on
1147
+ * reasoning in a response. Not all reasoning models support every value. See the
1148
+ * [reasoning guide](https://platform.openai.com/docs/guides/reasoning) for
1149
+ * model-specific support.
1157
1150
  */
1158
1151
  reasoning_effort?: Shared.ReasoningEffort | null;
1159
1152
 
@@ -1403,19 +1396,12 @@ export interface AssistantUpdateParams {
1403
1396
  name?: string | null;
1404
1397
 
1405
1398
  /**
1406
- * Constrains effort on reasoning for
1407
- * [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
1408
- * supported values are `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`.
1409
- * Reducing reasoning effort can result in faster responses and fewer tokens used
1410
- * on reasoning in a response.
1411
- *
1412
- * - `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported
1413
- * reasoning values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool
1414
- * calls are supported for all reasoning values in gpt-5.1.
1415
- * - All models before `gpt-5.1` default to `medium` reasoning effort, and do not
1416
- * support `none`.
1417
- * - The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort.
1418
- * - `xhigh` is supported for all models after `gpt-5.1-codex-max`.
1399
+ * Constrains effort on reasoning for reasoning models. Currently supported values
1400
+ * are `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Reducing
1401
+ * reasoning effort can result in faster responses and fewer tokens used on
1402
+ * reasoning in a response. Not all reasoning models support every value. See the
1403
+ * [reasoning guide](https://platform.openai.com/docs/guides/reasoning) for
1404
+ * model-specific support.
1419
1405
  */
1420
1406
  reasoning_effort?: Shared.ReasoningEffort | null;
1421
1407