openai 7.5.0 → 7.7.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 (597) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/README.md +46 -2
  3. package/auth/index.d.mts +1 -1
  4. package/auth/index.d.mts.map +1 -1
  5. package/auth/index.d.ts +1 -1
  6. package/auth/index.d.ts.map +1 -1
  7. package/auth/index.js.map +1 -1
  8. package/auth/index.mjs.map +1 -1
  9. package/auth/subject-token-providers.d.mts.map +1 -1
  10. package/auth/subject-token-providers.d.ts.map +1 -1
  11. package/auth/subject-token-providers.js +176 -4
  12. package/auth/subject-token-providers.js.map +1 -1
  13. package/auth/subject-token-providers.mjs +176 -4
  14. package/auth/subject-token-providers.mjs.map +1 -1
  15. package/auth/types.d.mts +17 -0
  16. package/auth/types.d.mts.map +1 -1
  17. package/auth/types.d.ts +17 -0
  18. package/auth/types.d.ts.map +1 -1
  19. package/auth/workload-identity-auth.d.mts.map +1 -1
  20. package/auth/workload-identity-auth.d.ts.map +1 -1
  21. package/auth/workload-identity-auth.js +80 -7
  22. package/auth/workload-identity-auth.js.map +1 -1
  23. package/auth/workload-identity-auth.mjs +80 -7
  24. package/auth/workload-identity-auth.mjs.map +1 -1
  25. package/auth/x509-transport.d.mts +5 -0
  26. package/auth/x509-transport.d.mts.map +1 -0
  27. package/auth/x509-transport.d.ts +5 -0
  28. package/auth/x509-transport.d.ts.map +1 -0
  29. package/auth/x509-transport.js +39 -0
  30. package/auth/x509-transport.js.map +1 -0
  31. package/auth/x509-transport.mjs +36 -0
  32. package/auth/x509-transport.mjs.map +1 -0
  33. package/azure.d.mts +11 -2
  34. package/azure.d.mts.map +1 -1
  35. package/azure.d.ts +11 -2
  36. package/azure.d.ts.map +1 -1
  37. package/azure.js +7 -1
  38. package/azure.js.map +1 -1
  39. package/azure.mjs +7 -1
  40. package/azure.mjs.map +1 -1
  41. package/bedrock.d.mts +6 -2
  42. package/bedrock.d.mts.map +1 -1
  43. package/bedrock.d.ts +6 -2
  44. package/bedrock.d.ts.map +1 -1
  45. package/bedrock.js +34 -4
  46. package/bedrock.js.map +1 -1
  47. package/bedrock.mjs +35 -5
  48. package/bedrock.mjs.map +1 -1
  49. package/beta/realtime/internal-base.d.mts +2 -0
  50. package/beta/realtime/internal-base.d.mts.map +1 -1
  51. package/beta/realtime/internal-base.d.ts +2 -0
  52. package/beta/realtime/internal-base.d.ts.map +1 -1
  53. package/beta/realtime/internal-base.js +15 -0
  54. package/beta/realtime/internal-base.js.map +1 -1
  55. package/beta/realtime/internal-base.mjs +14 -0
  56. package/beta/realtime/internal-base.mjs.map +1 -1
  57. package/beta/realtime/websocket.d.mts +11 -5
  58. package/beta/realtime/websocket.d.mts.map +1 -1
  59. package/beta/realtime/websocket.d.ts +11 -5
  60. package/beta/realtime/websocket.d.ts.map +1 -1
  61. package/beta/realtime/websocket.js +106 -31
  62. package/beta/realtime/websocket.js.map +1 -1
  63. package/beta/realtime/websocket.mjs +107 -32
  64. package/beta/realtime/websocket.mjs.map +1 -1
  65. package/beta/realtime/ws.d.mts +0 -2
  66. package/beta/realtime/ws.d.mts.map +1 -1
  67. package/beta/realtime/ws.d.ts +0 -2
  68. package/beta/realtime/ws.d.ts.map +1 -1
  69. package/beta/realtime/ws.js +24 -5
  70. package/beta/realtime/ws.js.map +1 -1
  71. package/beta/realtime/ws.mjs +25 -6
  72. package/beta/realtime/ws.mjs.map +1 -1
  73. package/client.d.mts +17 -2
  74. package/client.d.mts.map +1 -1
  75. package/client.d.ts +17 -2
  76. package/client.d.ts.map +1 -1
  77. package/client.js +422 -70
  78. package/client.js.map +1 -1
  79. package/client.mjs +423 -71
  80. package/client.mjs.map +1 -1
  81. package/core/EventEmitter.d.mts.map +1 -1
  82. package/core/EventEmitter.d.ts.map +1 -1
  83. package/core/EventEmitter.js +67 -9
  84. package/core/EventEmitter.js.map +1 -1
  85. package/core/EventEmitter.mjs +68 -10
  86. package/core/EventEmitter.mjs.map +1 -1
  87. package/core/streaming.d.mts +1 -0
  88. package/core/streaming.d.mts.map +1 -1
  89. package/core/streaming.d.ts +1 -0
  90. package/core/streaming.d.ts.map +1 -1
  91. package/core/streaming.js +216 -26
  92. package/core/streaming.js.map +1 -1
  93. package/core/streaming.mjs +216 -26
  94. package/core/streaming.mjs.map +1 -1
  95. package/helpers/audio.d.mts +5 -5
  96. package/helpers/audio.d.mts.map +1 -1
  97. package/helpers/audio.d.ts +5 -5
  98. package/helpers/audio.d.ts.map +1 -1
  99. package/helpers/audio.js +93 -22
  100. package/helpers/audio.js.map +1 -1
  101. package/helpers/audio.mjs +93 -22
  102. package/helpers/audio.mjs.map +1 -1
  103. package/helpers/standard-schema.d.mts.map +1 -1
  104. package/helpers/standard-schema.d.ts.map +1 -1
  105. package/helpers/standard-schema.js +34 -14
  106. package/helpers/standard-schema.js.map +1 -1
  107. package/helpers/standard-schema.mjs +35 -15
  108. package/helpers/standard-schema.mjs.map +1 -1
  109. package/helpers/zod-v3-strict-schema.d.mts +7 -0
  110. package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
  111. package/helpers/zod-v3-strict-schema.d.ts +7 -0
  112. package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
  113. package/helpers/zod-v3-strict-schema.js +403 -0
  114. package/helpers/zod-v3-strict-schema.js.map +1 -0
  115. package/helpers/zod-v3-strict-schema.mjs +399 -0
  116. package/helpers/zod-v3-strict-schema.mjs.map +1 -0
  117. package/helpers/zod.d.mts.map +1 -1
  118. package/helpers/zod.d.ts.map +1 -1
  119. package/helpers/zod.js +11 -3
  120. package/helpers/zod.js.map +1 -1
  121. package/helpers/zod.mjs +12 -4
  122. package/helpers/zod.mjs.map +1 -1
  123. package/index.d.mts +1 -1
  124. package/index.d.mts.map +1 -1
  125. package/index.d.ts +1 -1
  126. package/index.d.ts.map +1 -1
  127. package/index.js.map +1 -1
  128. package/index.mjs.map +1 -1
  129. package/internal/assistant-stream-delta.d.mts.map +1 -1
  130. package/internal/assistant-stream-delta.d.ts.map +1 -1
  131. package/internal/assistant-stream-delta.js +28 -8
  132. package/internal/assistant-stream-delta.js.map +1 -1
  133. package/internal/assistant-stream-delta.mjs +28 -8
  134. package/internal/assistant-stream-delta.mjs.map +1 -1
  135. package/internal/auth/x509-token-exchange.d.mts +16 -0
  136. package/internal/auth/x509-token-exchange.d.mts.map +1 -0
  137. package/internal/auth/x509-token-exchange.d.ts +16 -0
  138. package/internal/auth/x509-token-exchange.d.ts.map +1 -0
  139. package/internal/auth/x509-token-exchange.js +246 -0
  140. package/internal/auth/x509-token-exchange.js.map +1 -0
  141. package/internal/auth/x509-token-exchange.mjs +243 -0
  142. package/internal/auth/x509-token-exchange.mjs.map +1 -0
  143. package/internal/auth/x509-transport-capability.d.mts +37 -0
  144. package/internal/auth/x509-transport-capability.d.mts.map +1 -0
  145. package/internal/auth/x509-transport-capability.d.ts +37 -0
  146. package/internal/auth/x509-transport-capability.d.ts.map +1 -0
  147. package/internal/auth/x509-transport-capability.js +169 -0
  148. package/internal/auth/x509-transport-capability.js.map +1 -0
  149. package/internal/auth/x509-transport-capability.mjs +164 -0
  150. package/internal/auth/x509-transport-capability.mjs.map +1 -0
  151. package/internal/auth/x509-transport-registry.d.mts +63 -0
  152. package/internal/auth/x509-transport-registry.d.mts.map +1 -0
  153. package/internal/auth/x509-transport-registry.d.ts +63 -0
  154. package/internal/auth/x509-transport-registry.d.ts.map +1 -0
  155. package/internal/auth/x509-transport-registry.js +53 -0
  156. package/internal/auth/x509-transport-registry.js.map +1 -0
  157. package/internal/auth/x509-transport-registry.mjs +48 -0
  158. package/internal/auth/x509-transport-registry.mjs.map +1 -0
  159. package/internal/auth/x509-transport-state-browser.d.mts +21 -0
  160. package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
  161. package/internal/auth/x509-transport-state-browser.d.ts +21 -0
  162. package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
  163. package/internal/auth/x509-transport-state-browser.js +30 -0
  164. package/internal/auth/x509-transport-state-browser.js.map +1 -0
  165. package/internal/auth/x509-transport-state-browser.mjs +27 -0
  166. package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
  167. package/internal/auth/x509-transport-state.cjs +30 -0
  168. package/internal/auth/x509-transport-state.cjs.map +1 -0
  169. package/internal/auth/x509-transport-state.d.cts +21 -0
  170. package/internal/auth/x509-transport-state.d.cts.map +1 -0
  171. package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
  172. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
  173. package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
  174. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
  175. package/internal/auth/x509-workload-identity-auth.js +767 -0
  176. package/internal/auth/x509-workload-identity-auth.js.map +1 -0
  177. package/internal/auth/x509-workload-identity-auth.mjs +757 -0
  178. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
  179. package/internal/bedrock.d.mts +2 -0
  180. package/internal/bedrock.d.mts.map +1 -1
  181. package/internal/bedrock.d.ts +2 -0
  182. package/internal/bedrock.d.ts.map +1 -1
  183. package/internal/bedrock.js +169 -5
  184. package/internal/bedrock.js.map +1 -1
  185. package/internal/bedrock.mjs +168 -5
  186. package/internal/bedrock.mjs.map +1 -1
  187. package/internal/data-residency.d.mts +12 -0
  188. package/internal/data-residency.d.mts.map +1 -0
  189. package/internal/data-residency.d.ts +12 -0
  190. package/internal/data-residency.d.ts.map +1 -0
  191. package/internal/data-residency.js +34 -0
  192. package/internal/data-residency.js.map +1 -0
  193. package/internal/data-residency.mjs +30 -0
  194. package/internal/data-residency.mjs.map +1 -0
  195. package/internal/multipart-encoding.d.mts +8 -0
  196. package/internal/multipart-encoding.d.mts.map +1 -0
  197. package/internal/multipart-encoding.d.ts +8 -0
  198. package/internal/multipart-encoding.d.ts.map +1 -0
  199. package/internal/multipart-encoding.js +51 -0
  200. package/internal/multipart-encoding.js.map +1 -0
  201. package/internal/multipart-encoding.mjs +48 -0
  202. package/internal/multipart-encoding.mjs.map +1 -0
  203. package/internal/qs/utils.d.mts.map +1 -1
  204. package/internal/qs/utils.d.ts.map +1 -1
  205. package/internal/qs/utils.js +307 -10
  206. package/internal/qs/utils.js.map +1 -1
  207. package/internal/qs/utils.mjs +307 -10
  208. package/internal/qs/utils.mjs.map +1 -1
  209. package/internal/request-options.d.mts +7 -0
  210. package/internal/request-options.d.mts.map +1 -1
  211. package/internal/request-options.d.ts +7 -0
  212. package/internal/request-options.d.ts.map +1 -1
  213. package/internal/request-options.js +43 -1
  214. package/internal/request-options.js.map +1 -1
  215. package/internal/request-options.mjs +42 -1
  216. package/internal/request-options.mjs.map +1 -1
  217. package/internal/responses/canonical-output-text.js +3 -3
  218. package/internal/responses/canonical-output-text.js.map +1 -1
  219. package/internal/responses/canonical-output-text.mjs +3 -3
  220. package/internal/responses/canonical-output-text.mjs.map +1 -1
  221. package/internal/responses/response-accumulator.d.mts +1 -1
  222. package/internal/responses/response-accumulator.d.mts.map +1 -1
  223. package/internal/responses/response-accumulator.d.ts +1 -1
  224. package/internal/responses/response-accumulator.d.ts.map +1 -1
  225. package/internal/responses/response-accumulator.js +331 -25
  226. package/internal/responses/response-accumulator.js.map +1 -1
  227. package/internal/responses/response-accumulator.mjs +331 -25
  228. package/internal/responses/response-accumulator.mjs.map +1 -1
  229. package/internal/tslib.js +6 -0
  230. package/internal/tslib.mjs +6 -1
  231. package/internal/uploads.d.mts +10 -6
  232. package/internal/uploads.d.mts.map +1 -1
  233. package/internal/uploads.d.ts +10 -6
  234. package/internal/uploads.d.ts.map +1 -1
  235. package/internal/uploads.js +65 -24
  236. package/internal/uploads.js.map +1 -1
  237. package/internal/uploads.mjs +65 -24
  238. package/internal/uploads.mjs.map +1 -1
  239. package/internal/utils/env.d.mts.map +1 -1
  240. package/internal/utils/env.d.ts.map +1 -1
  241. package/internal/utils/env.js +9 -4
  242. package/internal/utils/env.js.map +1 -1
  243. package/internal/utils/env.mjs +9 -4
  244. package/internal/utils/env.mjs.map +1 -1
  245. package/internal/ws.d.mts.map +1 -1
  246. package/internal/ws.d.ts.map +1 -1
  247. package/internal/ws.js +23 -1
  248. package/internal/ws.js.map +1 -1
  249. package/internal/ws.mjs +23 -1
  250. package/internal/ws.mjs.map +1 -1
  251. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  252. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  253. package/lib/AbstractChatCompletionRunner.js +32 -7
  254. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  255. package/lib/AbstractChatCompletionRunner.mjs +34 -9
  256. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  257. package/lib/AssistantStream.d.mts.map +1 -1
  258. package/lib/AssistantStream.d.ts.map +1 -1
  259. package/lib/AssistantStream.js +211 -23
  260. package/lib/AssistantStream.js.map +1 -1
  261. package/lib/AssistantStream.mjs +211 -23
  262. package/lib/AssistantStream.mjs.map +1 -1
  263. package/lib/ChatCompletionStream.d.mts +1 -1
  264. package/lib/ChatCompletionStream.d.mts.map +1 -1
  265. package/lib/ChatCompletionStream.d.ts +1 -1
  266. package/lib/ChatCompletionStream.d.ts.map +1 -1
  267. package/lib/ChatCompletionStream.js +1118 -67
  268. package/lib/ChatCompletionStream.js.map +1 -1
  269. package/lib/ChatCompletionStream.mjs +1119 -68
  270. package/lib/ChatCompletionStream.mjs.map +1 -1
  271. package/lib/EventEmitter.d.mts.map +1 -1
  272. package/lib/EventEmitter.d.ts.map +1 -1
  273. package/lib/EventEmitter.js +67 -9
  274. package/lib/EventEmitter.js.map +1 -1
  275. package/lib/EventEmitter.mjs +68 -10
  276. package/lib/EventEmitter.mjs.map +1 -1
  277. package/lib/EventStream.d.mts +4 -0
  278. package/lib/EventStream.d.mts.map +1 -1
  279. package/lib/EventStream.d.ts +4 -0
  280. package/lib/EventStream.d.ts.map +1 -1
  281. package/lib/EventStream.js +1096 -11
  282. package/lib/EventStream.js.map +1 -1
  283. package/lib/EventStream.mjs +1097 -12
  284. package/lib/EventStream.mjs.map +1 -1
  285. package/lib/ResponsesParser.d.mts.map +1 -1
  286. package/lib/ResponsesParser.d.ts.map +1 -1
  287. package/lib/ResponsesParser.js +1 -1
  288. package/lib/ResponsesParser.js.map +1 -1
  289. package/lib/ResponsesParser.mjs +1 -1
  290. package/lib/ResponsesParser.mjs.map +1 -1
  291. package/lib/Util.d.mts +2 -0
  292. package/lib/Util.d.mts.map +1 -1
  293. package/lib/Util.d.ts +2 -0
  294. package/lib/Util.d.ts.map +1 -1
  295. package/lib/Util.js +7 -4
  296. package/lib/Util.js.map +1 -1
  297. package/lib/Util.mjs +7 -4
  298. package/lib/Util.mjs.map +1 -1
  299. package/lib/assistant-run-polling.d.mts +12 -0
  300. package/lib/assistant-run-polling.d.mts.map +1 -0
  301. package/lib/assistant-run-polling.d.ts +12 -0
  302. package/lib/assistant-run-polling.d.ts.map +1 -0
  303. package/lib/assistant-run-polling.js +17 -0
  304. package/lib/assistant-run-polling.js.map +1 -0
  305. package/lib/assistant-run-polling.mjs +14 -0
  306. package/lib/assistant-run-polling.mjs.map +1 -0
  307. package/lib/embeddings.d.mts +18 -0
  308. package/lib/embeddings.d.mts.map +1 -0
  309. package/lib/embeddings.d.ts +18 -0
  310. package/lib/embeddings.d.ts.map +1 -0
  311. package/lib/embeddings.js +50 -0
  312. package/lib/embeddings.js.map +1 -0
  313. package/lib/embeddings.mjs +47 -0
  314. package/lib/embeddings.mjs.map +1 -0
  315. package/lib/file-processing.d.mts +10 -0
  316. package/lib/file-processing.d.mts.map +1 -0
  317. package/lib/file-processing.d.ts +10 -0
  318. package/lib/file-processing.d.ts.map +1 -0
  319. package/lib/file-processing.js +30 -0
  320. package/lib/file-processing.js.map +1 -0
  321. package/lib/file-processing.mjs +27 -0
  322. package/lib/file-processing.mjs.map +1 -0
  323. package/lib/parser.d.mts.map +1 -1
  324. package/lib/parser.d.ts.map +1 -1
  325. package/lib/parser.js +16 -4
  326. package/lib/parser.js.map +1 -1
  327. package/lib/parser.mjs +16 -4
  328. package/lib/parser.mjs.map +1 -1
  329. package/lib/polling.d.mts +20 -0
  330. package/lib/polling.d.mts.map +1 -0
  331. package/lib/polling.d.ts +20 -0
  332. package/lib/polling.d.ts.map +1 -0
  333. package/lib/polling.js +130 -0
  334. package/lib/polling.js.map +1 -0
  335. package/lib/polling.mjs +127 -0
  336. package/lib/polling.mjs.map +1 -0
  337. package/lib/responses/ResponseStream.d.mts.map +1 -1
  338. package/lib/responses/ResponseStream.d.ts.map +1 -1
  339. package/lib/responses/ResponseStream.js +21 -11
  340. package/lib/responses/ResponseStream.js.map +1 -1
  341. package/lib/responses/ResponseStream.mjs +21 -11
  342. package/lib/responses/ResponseStream.mjs.map +1 -1
  343. package/lib/vector-store-polling.d.mts +22 -0
  344. package/lib/vector-store-polling.d.mts.map +1 -0
  345. package/lib/vector-store-polling.d.ts +22 -0
  346. package/lib/vector-store-polling.d.ts.map +1 -0
  347. package/lib/vector-store-polling.js +24 -0
  348. package/lib/vector-store-polling.js.map +1 -0
  349. package/lib/vector-store-polling.mjs +20 -0
  350. package/lib/vector-store-polling.mjs.map +1 -0
  351. package/lib/vector-store-upload.d.mts +17 -0
  352. package/lib/vector-store-upload.d.mts.map +1 -0
  353. package/lib/vector-store-upload.d.ts +17 -0
  354. package/lib/vector-store-upload.d.ts.map +1 -0
  355. package/lib/vector-store-upload.js +37 -0
  356. package/lib/vector-store-upload.js.map +1 -0
  357. package/lib/vector-store-upload.mjs +34 -0
  358. package/lib/vector-store-upload.mjs.map +1 -0
  359. package/lib/webhook-signature.d.mts +15 -0
  360. package/lib/webhook-signature.d.mts.map +1 -0
  361. package/lib/webhook-signature.d.ts +15 -0
  362. package/lib/webhook-signature.d.ts.map +1 -0
  363. package/lib/webhook-signature.js +125 -0
  364. package/lib/webhook-signature.js.map +1 -0
  365. package/lib/webhook-signature.mjs +121 -0
  366. package/lib/webhook-signature.mjs.map +1 -0
  367. package/package.json +14 -1
  368. package/realtime/internal-base.d.mts +2 -0
  369. package/realtime/internal-base.d.mts.map +1 -1
  370. package/realtime/internal-base.d.ts +2 -0
  371. package/realtime/internal-base.d.ts.map +1 -1
  372. package/realtime/internal-base.js +15 -0
  373. package/realtime/internal-base.js.map +1 -1
  374. package/realtime/internal-base.mjs +14 -0
  375. package/realtime/internal-base.mjs.map +1 -1
  376. package/realtime/websocket.d.mts +3 -2
  377. package/realtime/websocket.d.mts.map +1 -1
  378. package/realtime/websocket.d.ts +3 -2
  379. package/realtime/websocket.d.ts.map +1 -1
  380. package/realtime/websocket.js +90 -26
  381. package/realtime/websocket.js.map +1 -1
  382. package/realtime/websocket.mjs +91 -27
  383. package/realtime/websocket.mjs.map +1 -1
  384. package/realtime/ws.d.mts.map +1 -1
  385. package/realtime/ws.d.ts.map +1 -1
  386. package/realtime/ws.js +9 -1
  387. package/realtime/ws.js.map +1 -1
  388. package/realtime/ws.mjs +10 -2
  389. package/realtime/ws.mjs.map +1 -1
  390. package/resources/admin/organization/index.d.mts +2 -2
  391. package/resources/admin/organization/index.d.mts.map +1 -1
  392. package/resources/admin/organization/index.d.ts +2 -2
  393. package/resources/admin/organization/index.d.ts.map +1 -1
  394. package/resources/admin/organization/index.js.map +1 -1
  395. package/resources/admin/organization/index.mjs.map +1 -1
  396. package/resources/admin/organization/organization.d.mts +4 -4
  397. package/resources/admin/organization/organization.d.mts.map +1 -1
  398. package/resources/admin/organization/organization.d.ts +4 -4
  399. package/resources/admin/organization/organization.d.ts.map +1 -1
  400. package/resources/admin/organization/organization.js.map +1 -1
  401. package/resources/admin/organization/organization.mjs.map +1 -1
  402. package/resources/admin/organization/projects/index.d.mts +1 -1
  403. package/resources/admin/organization/projects/index.d.mts.map +1 -1
  404. package/resources/admin/organization/projects/index.d.ts +1 -1
  405. package/resources/admin/organization/projects/index.d.ts.map +1 -1
  406. package/resources/admin/organization/projects/index.js.map +1 -1
  407. package/resources/admin/organization/projects/index.mjs.map +1 -1
  408. package/resources/admin/organization/projects/projects.d.mts +22 -5
  409. package/resources/admin/organization/projects/projects.d.mts.map +1 -1
  410. package/resources/admin/organization/projects/projects.d.ts +22 -5
  411. package/resources/admin/organization/projects/projects.d.ts.map +1 -1
  412. package/resources/admin/organization/projects/projects.js.map +1 -1
  413. package/resources/admin/organization/projects/projects.mjs.map +1 -1
  414. package/resources/admin/organization/usage.d.mts +62 -1
  415. package/resources/admin/organization/usage.d.mts.map +1 -1
  416. package/resources/admin/organization/usage.d.ts +62 -1
  417. package/resources/admin/organization/usage.d.ts.map +1 -1
  418. package/resources/admin/organization/usage.js.map +1 -1
  419. package/resources/admin/organization/usage.mjs.map +1 -1
  420. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  421. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  422. package/resources/beta/responses/internal-base.js +2 -0
  423. package/resources/beta/responses/internal-base.js.map +1 -1
  424. package/resources/beta/responses/internal-base.mjs +2 -0
  425. package/resources/beta/responses/internal-base.mjs.map +1 -1
  426. package/resources/beta/responses/responses.d.mts +17 -20
  427. package/resources/beta/responses/responses.d.mts.map +1 -1
  428. package/resources/beta/responses/responses.d.ts +17 -20
  429. package/resources/beta/responses/responses.d.ts.map +1 -1
  430. package/resources/beta/responses/responses.js.map +1 -1
  431. package/resources/beta/responses/responses.mjs.map +1 -1
  432. package/resources/beta/threads/runs/index.d.mts +1 -1
  433. package/resources/beta/threads/runs/index.d.mts.map +1 -1
  434. package/resources/beta/threads/runs/index.d.ts +1 -1
  435. package/resources/beta/threads/runs/index.d.ts.map +1 -1
  436. package/resources/beta/threads/runs/runs.d.mts.map +1 -1
  437. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  438. package/resources/beta/threads/runs/runs.js +2 -43
  439. package/resources/beta/threads/runs/runs.js.map +1 -1
  440. package/resources/beta/threads/runs/runs.mjs +2 -43
  441. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  442. package/resources/chat/completions/completions.d.mts +6 -0
  443. package/resources/chat/completions/completions.d.mts.map +1 -1
  444. package/resources/chat/completions/completions.d.ts +6 -0
  445. package/resources/chat/completions/completions.d.ts.map +1 -1
  446. package/resources/chat/completions/completions.js.map +1 -1
  447. package/resources/chat/completions/completions.mjs.map +1 -1
  448. package/resources/embeddings.d.mts.map +1 -1
  449. package/resources/embeddings.d.ts.map +1 -1
  450. package/resources/embeddings.js +2 -36
  451. package/resources/embeddings.js.map +1 -1
  452. package/resources/embeddings.mjs +2 -36
  453. package/resources/embeddings.mjs.map +1 -1
  454. package/resources/files.d.mts.map +1 -1
  455. package/resources/files.d.ts.map +1 -1
  456. package/resources/files.js +2 -15
  457. package/resources/files.js.map +1 -1
  458. package/resources/files.mjs +2 -15
  459. package/resources/files.mjs.map +1 -1
  460. package/resources/images.d.mts +12 -22
  461. package/resources/images.d.mts.map +1 -1
  462. package/resources/images.d.ts +12 -22
  463. package/resources/images.d.ts.map +1 -1
  464. package/resources/realtime/calls.d.mts +23 -1
  465. package/resources/realtime/calls.d.mts.map +1 -1
  466. package/resources/realtime/calls.d.ts +23 -1
  467. package/resources/realtime/calls.d.ts.map +1 -1
  468. package/resources/realtime/calls.js +24 -0
  469. package/resources/realtime/calls.js.map +1 -1
  470. package/resources/realtime/calls.mjs +24 -0
  471. package/resources/realtime/calls.mjs.map +1 -1
  472. package/resources/realtime/index.d.mts +1 -1
  473. package/resources/realtime/index.d.mts.map +1 -1
  474. package/resources/realtime/index.d.ts +1 -1
  475. package/resources/realtime/index.d.ts.map +1 -1
  476. package/resources/realtime/index.js.map +1 -1
  477. package/resources/realtime/index.mjs +1 -1
  478. package/resources/realtime/index.mjs.map +1 -1
  479. package/resources/realtime/realtime.d.mts +5 -4
  480. package/resources/realtime/realtime.d.mts.map +1 -1
  481. package/resources/realtime/realtime.d.ts +5 -4
  482. package/resources/realtime/realtime.d.ts.map +1 -1
  483. package/resources/realtime/realtime.js.map +1 -1
  484. package/resources/realtime/realtime.mjs.map +1 -1
  485. package/resources/responses/internal-base.d.mts.map +1 -1
  486. package/resources/responses/internal-base.d.ts.map +1 -1
  487. package/resources/responses/internal-base.js +2 -0
  488. package/resources/responses/internal-base.js.map +1 -1
  489. package/resources/responses/internal-base.mjs +2 -0
  490. package/resources/responses/internal-base.mjs.map +1 -1
  491. package/resources/responses/responses.d.mts +17 -20
  492. package/resources/responses/responses.d.mts.map +1 -1
  493. package/resources/responses/responses.d.ts +17 -20
  494. package/resources/responses/responses.d.ts.map +1 -1
  495. package/resources/responses/responses.js.map +1 -1
  496. package/resources/responses/responses.mjs.map +1 -1
  497. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  498. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  499. package/resources/vector-stores/file-batches.js +4 -61
  500. package/resources/vector-stores/file-batches.js.map +1 -1
  501. package/resources/vector-stores/file-batches.mjs +4 -61
  502. package/resources/vector-stores/file-batches.mjs.map +1 -1
  503. package/resources/vector-stores/files.d.mts +1 -1
  504. package/resources/vector-stores/files.d.mts.map +1 -1
  505. package/resources/vector-stores/files.d.ts +1 -1
  506. package/resources/vector-stores/files.d.ts.map +1 -1
  507. package/resources/vector-stores/files.js +2 -35
  508. package/resources/vector-stores/files.js.map +1 -1
  509. package/resources/vector-stores/files.mjs +2 -35
  510. package/resources/vector-stores/files.mjs.map +1 -1
  511. package/resources/webhooks/webhooks.d.mts.map +1 -1
  512. package/resources/webhooks/webhooks.d.ts.map +1 -1
  513. package/resources/webhooks/webhooks.js +5 -43
  514. package/resources/webhooks/webhooks.js.map +1 -1
  515. package/resources/webhooks/webhooks.mjs +5 -43
  516. package/resources/webhooks/webhooks.mjs.map +1 -1
  517. package/src/auth/index.ts +6 -1
  518. package/src/auth/subject-token-providers.ts +196 -4
  519. package/src/auth/types.ts +24 -0
  520. package/src/auth/workload-identity-auth.ts +104 -7
  521. package/src/auth/x509-transport.ts +49 -0
  522. package/src/azure.ts +22 -1
  523. package/src/bedrock.ts +49 -5
  524. package/src/beta/realtime/internal-base.ts +15 -0
  525. package/src/beta/realtime/websocket.ts +148 -40
  526. package/src/beta/realtime/ws.ts +31 -13
  527. package/src/client.ts +536 -92
  528. package/src/core/EventEmitter.ts +91 -7
  529. package/src/core/streaming.ts +226 -30
  530. package/src/helpers/audio.ts +93 -22
  531. package/src/helpers/standard-schema.ts +50 -16
  532. package/src/helpers/zod-v3-strict-schema.ts +514 -0
  533. package/src/helpers/zod.ts +17 -4
  534. package/src/index.ts +1 -1
  535. package/src/internal/assistant-stream-delta.ts +33 -10
  536. package/src/internal/auth/x509-token-exchange.ts +310 -0
  537. package/src/internal/auth/x509-transport-capability.ts +219 -0
  538. package/src/internal/auth/x509-transport-registry.ts +118 -0
  539. package/src/internal/auth/x509-transport-state-browser.ts +36 -0
  540. package/src/internal/auth/x509-transport-state.cts +36 -0
  541. package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
  542. package/src/internal/bedrock.ts +182 -5
  543. package/src/internal/data-residency.ts +44 -0
  544. package/src/internal/multipart-encoding.ts +53 -0
  545. package/src/internal/qs/utils.ts +375 -13
  546. package/src/internal/request-options.ts +52 -1
  547. package/src/internal/responses/canonical-output-text.ts +3 -3
  548. package/src/internal/responses/response-accumulator.ts +411 -24
  549. package/src/internal/uploads.ts +81 -26
  550. package/src/internal/utils/env.ts +9 -5
  551. package/src/internal/ws.ts +24 -3
  552. package/src/lib/AbstractChatCompletionRunner.ts +33 -6
  553. package/src/lib/AssistantStream.ts +262 -22
  554. package/src/lib/ChatCompletionStream.ts +1467 -103
  555. package/src/lib/EventEmitter.ts +91 -7
  556. package/src/lib/EventStream.ts +1483 -10
  557. package/src/lib/ResponsesParser.ts +4 -1
  558. package/src/lib/Util.ts +7 -5
  559. package/src/lib/assistant-run-polling.ts +27 -0
  560. package/src/lib/embeddings.ts +65 -0
  561. package/src/lib/file-processing.ts +36 -0
  562. package/src/lib/parser.ts +19 -4
  563. package/src/lib/polling.ts +144 -0
  564. package/src/lib/responses/ResponseStream.ts +22 -10
  565. package/src/lib/vector-store-polling.ts +46 -0
  566. package/src/lib/vector-store-upload.ts +53 -0
  567. package/src/lib/webhook-signature.ts +164 -0
  568. package/src/realtime/internal-base.ts +15 -0
  569. package/src/realtime/websocket.ts +130 -27
  570. package/src/realtime/ws.ts +15 -2
  571. package/src/resources/admin/organization/index.ts +2 -0
  572. package/src/resources/admin/organization/organization.ts +4 -0
  573. package/src/resources/admin/organization/projects/index.ts +1 -0
  574. package/src/resources/admin/organization/projects/projects.ts +37 -4
  575. package/src/resources/admin/organization/usage.ts +83 -0
  576. package/src/resources/beta/responses/internal-base.ts +2 -0
  577. package/src/resources/beta/responses/responses.ts +19 -22
  578. package/src/resources/beta/threads/runs/index.ts +1 -1
  579. package/src/resources/beta/threads/runs/runs.ts +2 -45
  580. package/src/resources/chat/completions/completions.ts +7 -0
  581. package/src/resources/embeddings.ts +2 -42
  582. package/src/resources/files.ts +2 -19
  583. package/src/resources/images.ts +12 -22
  584. package/src/resources/realtime/api.md +1 -0
  585. package/src/resources/realtime/calls.ts +46 -0
  586. package/src/resources/realtime/index.ts +7 -1
  587. package/src/resources/realtime/realtime.ts +5 -3
  588. package/src/resources/responses/internal-base.ts +2 -0
  589. package/src/resources/responses/responses.ts +19 -22
  590. package/src/resources/vector-stores/file-batches.ts +8 -77
  591. package/src/resources/vector-stores/files.ts +3 -43
  592. package/src/resources/webhooks/webhooks.ts +5 -61
  593. package/src/version.ts +1 -1
  594. package/version.d.mts +1 -1
  595. package/version.d.ts +1 -1
  596. package/version.js +1 -1
  597. package/version.mjs +1 -1
@@ -99,19 +99,69 @@ export type RunSubmitToolOutputsParamsStream = Omit<RunSubmitToolOutputsParamsBa
99
99
  stream?: true;
100
100
  };
101
101
 
102
+ function stabilizeAssistantStreamEvent(event: AssistantStreamEvent): {
103
+ event: AssistantStreamEvent;
104
+ exposedEvent: AssistantStreamEvent;
105
+ } {
106
+ const eventDescriptor = Object.getOwnPropertyDescriptor(event, 'event');
107
+ const dataDescriptor = Object.getOwnPropertyDescriptor(event, 'data');
108
+ const eventType = Reflect.get(event, 'event', event) as AssistantStreamEvent['event'];
109
+ const data = Reflect.get(event, 'data', event) as AssistantStreamEvent['data'];
110
+ let stableData = data;
111
+ if (
112
+ eventType === 'thread.message.created' ||
113
+ eventType === 'thread.message.in_progress' ||
114
+ eventType === 'thread.message.delta' ||
115
+ eventType === 'thread.message.completed' ||
116
+ eventType === 'thread.message.incomplete' ||
117
+ eventType === 'thread.run.step.created' ||
118
+ eventType === 'thread.run.step.in_progress' ||
119
+ eventType === 'thread.run.step.delta' ||
120
+ eventType === 'thread.run.step.completed' ||
121
+ eventType === 'thread.run.step.failed' ||
122
+ eventType === 'thread.run.step.cancelled' ||
123
+ eventType === 'thread.run.step.expired'
124
+ ) {
125
+ const messageID = Object.getOwnPropertyDescriptor(data, 'id');
126
+ if (messageID && 'value' in messageID && Reflect.get(data, 'id', data) !== messageID.value) {
127
+ const canonicalID = messageID.value as unknown;
128
+ stableData = new Proxy(data, {
129
+ get(target, property) {
130
+ return property === 'id' ? canonicalID : Reflect.get(target, property, target);
131
+ },
132
+ }) as AssistantStreamEvent['data'];
133
+ }
134
+ }
135
+ const stableEvent = Object.freeze({ event: eventType, data: stableData }) as AssistantStreamEvent;
136
+ const ordinaryEvent =
137
+ eventDescriptor !== undefined &&
138
+ 'value' in eventDescriptor &&
139
+ eventDescriptor.value === eventType &&
140
+ dataDescriptor !== undefined &&
141
+ 'value' in dataDescriptor &&
142
+ dataDescriptor.value === data &&
143
+ stableData === data;
144
+
145
+ return {
146
+ event: stableEvent,
147
+ exposedEvent: ordinaryEvent ? event : ({ event: eventType, data: stableData } as AssistantStreamEvent),
148
+ };
149
+ }
150
+
102
151
  /** Streams assistant-run events while accumulating messages, run steps, and tool-call snapshots. */
103
152
  export class AssistantStream
104
153
  extends EventStream<AssistantStreamEvents>
105
154
  implements AsyncIterable<AssistantStreamEvent>
106
155
  {
107
- //Track all events in a single list for reference
108
- #events: AssistantStreamEvent[] = [];
109
-
110
156
  //Used to accumulate deltas
111
157
  //We are accumulating many types so the value here is not strict
112
158
  #runStepSnapshots: Record<string, Runs.RunStep> = Object.create(null);
159
+ #runStepIDOwners = new Map<string, string>();
160
+ #activeRunStepID: string | undefined;
113
161
  #messageSnapshots: Record<string, Message> = Object.create(null);
162
+ #messageIDOwners = new Map<string, string>();
114
163
  #messageSnapshot: Message | undefined;
164
+ #activeMessageID: string | undefined;
115
165
  #finalRun: Run | undefined;
116
166
  #currentContentIndex: number | undefined;
117
167
  #currentContent: MessageContent | undefined;
@@ -339,11 +389,49 @@ export class AssistantStream
339
389
  return;
340
390
  }
341
391
 
342
- this.#currentEvent = event;
392
+ const { event: stableEvent, exposedEvent } = stabilizeAssistantStreamEvent(event);
393
+
394
+ let messageID: string | undefined;
395
+ let messageData: MessageStreamEvent['data'] | undefined;
396
+ let runStepID: string | undefined;
397
+ let runStepData: RunStepStreamEvent['data'] | undefined;
398
+ switch (stableEvent.event) {
399
+ case 'thread.message.created':
400
+ case 'thread.message.in_progress':
401
+ case 'thread.message.delta':
402
+ case 'thread.message.completed':
403
+ case 'thread.message.incomplete': {
404
+ messageID = this.#validateMessageEvent(stableEvent);
405
+ messageData = stableEvent.data;
406
+ break;
407
+ }
408
+ case 'thread.run.step.created':
409
+ case 'thread.run.step.in_progress':
410
+ case 'thread.run.step.delta':
411
+ case 'thread.run.step.completed':
412
+ case 'thread.run.step.failed':
413
+ case 'thread.run.step.cancelled':
414
+ case 'thread.run.step.expired': {
415
+ runStepID = this.#validateRunStepEvent(stableEvent);
416
+ runStepData = stableEvent.data;
417
+ break;
418
+ }
419
+ }
420
+
421
+ this.#currentEvent = exposedEvent;
343
422
 
344
- this.#handleEvent(event);
423
+ this.#handleEvent(exposedEvent);
424
+ if (messageID !== undefined && messageData !== undefined) {
425
+ this.#reserveMessageAlias(messageData, messageID);
426
+ }
427
+ if (runStepID !== undefined && runStepData !== undefined) {
428
+ this.#reserveRunStepAlias(runStepData, runStepID);
429
+ }
430
+ if (runStepID === undefined && this.#activeRunStepID !== undefined && this.#currentRunStepSnapshot) {
431
+ this.#reserveRunStepAlias(this.#currentRunStepSnapshot, this.#activeRunStepID);
432
+ }
345
433
 
346
- switch (event.event) {
434
+ switch (stableEvent.event) {
347
435
  case 'thread.created': {
348
436
  //No action on this event.
349
437
  break;
@@ -359,7 +447,7 @@ export class AssistantStream
359
447
  case 'thread.run.cancelling':
360
448
  case 'thread.run.cancelled':
361
449
  case 'thread.run.expired': {
362
- this.#handleRun(event);
450
+ this.#handleRun(stableEvent);
363
451
  break;
364
452
  }
365
453
 
@@ -370,7 +458,19 @@ export class AssistantStream
370
458
  case 'thread.run.step.failed':
371
459
  case 'thread.run.step.cancelled':
372
460
  case 'thread.run.step.expired': {
373
- this.#handleRunStep(event);
461
+ if (runStepID === undefined) {
462
+ throw new OpenAIError('Received assistant run-step event without a canonical run-step ID');
463
+ }
464
+ const activeRunStep = this.#runStepSnapshots[runStepID];
465
+ if (activeRunStep) {
466
+ this.#reserveRunStepAlias(activeRunStep, runStepID);
467
+ }
468
+ this.#handleRunStep(stableEvent, runStepID);
469
+ this.#reserveRunStepAlias(stableEvent.data, runStepID);
470
+ const retainedRunStep = this.#runStepSnapshots[runStepID];
471
+ if (retainedRunStep) {
472
+ this.#reserveRunStepAlias(retainedRunStep, runStepID);
473
+ }
374
474
  break;
375
475
  }
376
476
 
@@ -379,7 +479,14 @@ export class AssistantStream
379
479
  case 'thread.message.delta':
380
480
  case 'thread.message.completed':
381
481
  case 'thread.message.incomplete': {
382
- this.#handleMessage(event);
482
+ this.#handleMessage(stableEvent);
483
+ if (messageID !== undefined) {
484
+ this.#reserveMessageAlias(stableEvent.data, messageID);
485
+ const retainedMessage = this.#messageSnapshots[messageID];
486
+ if (retainedMessage) {
487
+ this.#reserveMessageAlias(retainedMessage, messageID);
488
+ }
489
+ }
383
490
  break;
384
491
  }
385
492
 
@@ -390,7 +497,7 @@ export class AssistantStream
390
497
  );
391
498
  }
392
499
  default: {
393
- assertNever(event);
500
+ assertNever(stableEvent);
394
501
  }
395
502
  }
396
503
  }
@@ -407,10 +514,142 @@ export class AssistantStream
407
514
  return this.#finalRun;
408
515
  }
409
516
 
517
+ #validateRunStepEvent(event: RunStepStreamEvent): string {
518
+ const descriptor = Object.getOwnPropertyDescriptor(event.data, 'id');
519
+ const runStepID = descriptor && 'value' in descriptor ? descriptor.value : undefined;
520
+
521
+ if (typeof runStepID !== 'string' || runStepID.length === 0) {
522
+ throw new OpenAIError('Received assistant run-step event with an invalid run-step ID');
523
+ }
524
+
525
+ if (event.event === 'thread.run.step.created') {
526
+ if (this.#activeRunStepID !== undefined) {
527
+ throw new OpenAIError(
528
+ `Received run-step creation for "${runStepID}" before the active run step "${this.#activeRunStepID}" reached a terminal state`,
529
+ );
530
+ }
531
+
532
+ if (hasOwn(this.#runStepSnapshots, runStepID) || this.#runStepIDOwners.has(runStepID)) {
533
+ throw new OpenAIError(
534
+ `Received run-step creation for run step "${runStepID}", which has already been created`,
535
+ );
536
+ }
537
+
538
+ this.#activeRunStepID = runStepID;
539
+ this.#runStepIDOwners.set(runStepID, runStepID);
540
+ return runStepID;
541
+ }
542
+
543
+ if (this.#activeRunStepID !== undefined) {
544
+ if (runStepID !== this.#activeRunStepID) {
545
+ throw new OpenAIError(
546
+ `Received ${event.event} for run step "${runStepID}", which does not match the active run step "${this.#activeRunStepID}"`,
547
+ );
548
+ }
549
+ return runStepID;
550
+ }
551
+
552
+ if (event.event === 'thread.run.step.delta') {
553
+ if (!hasOwn(this.#runStepSnapshots, runStepID)) {
554
+ throw new OpenAIError('Received a RunStepDelta before creation of a snapshot');
555
+ }
556
+ throw new OpenAIError(`Received run-step delta for "${runStepID}" with no active run step`);
557
+ }
558
+
559
+ if (hasOwn(this.#runStepSnapshots, runStepID) || this.#runStepIDOwners.has(runStepID)) {
560
+ throw new OpenAIError(
561
+ `Received run-step event for run step "${runStepID}", which has already been created`,
562
+ );
563
+ }
564
+
565
+ this.#runStepIDOwners.set(runStepID, runStepID);
566
+ if (event.event === 'thread.run.step.in_progress') {
567
+ this.#activeRunStepID = runStepID;
568
+ }
569
+ return runStepID;
570
+ }
571
+
572
+ #reserveRunStepAlias(data: RunStepStreamEvent['data'], canonicalID: string): void {
573
+ const descriptor = Object.getOwnPropertyDescriptor(data, 'id');
574
+ const runStepID = descriptor && 'value' in descriptor ? descriptor.value : undefined;
575
+ if (typeof runStepID !== 'string' || runStepID.length === 0) {
576
+ throw new OpenAIError('Received assistant run-step event with an invalid run-step ID');
577
+ }
578
+ const owner = this.#runStepIDOwners.get(runStepID);
579
+ if (owner !== undefined && owner !== canonicalID) {
580
+ throw new OpenAIError(
581
+ `Received run-step creation for run step "${runStepID}", which has already been created`,
582
+ );
583
+ }
584
+ this.#runStepIDOwners.set(runStepID, canonicalID);
585
+ }
586
+
587
+ #validateMessageEvent(event: MessageStreamEvent): string {
588
+ const descriptor = Object.getOwnPropertyDescriptor(event.data, 'id');
589
+ const messageID = descriptor && 'value' in descriptor ? descriptor.value : undefined;
590
+
591
+ if (typeof messageID !== 'string' || messageID.length === 0) {
592
+ throw new OpenAIError('Received assistant message event with an invalid message ID');
593
+ }
594
+
595
+ if (event.event === 'thread.message.created') {
596
+ if (this.#messageSnapshot) {
597
+ throw new OpenAIError(
598
+ `Received message creation for "${messageID}" before the active message "${this.#activeMessageID}" reached a terminal state`,
599
+ );
600
+ }
601
+
602
+ if (hasOwn(this.#messageSnapshots, messageID) || this.#messageIDOwners.has(messageID)) {
603
+ throw new OpenAIError(
604
+ `Received message creation for message "${messageID}", which has already been created`,
605
+ );
606
+ }
607
+
608
+ this.#activeMessageID = messageID;
609
+ this.#messageIDOwners.set(messageID, messageID);
610
+ return messageID;
611
+ }
612
+
613
+ if (!this.#messageSnapshot) {
614
+ if (event.event === 'thread.message.delta') {
615
+ throw new OpenAIError(
616
+ 'Received a delta with no existing snapshot (there should be one from message creation)',
617
+ );
618
+ }
619
+
620
+ throw new OpenAIError('Received thread message event with no existing snapshot');
621
+ }
622
+
623
+ if (messageID !== this.#activeMessageID) {
624
+ throw new OpenAIError(
625
+ `Received ${event.event} for message "${messageID}", which does not match the active message "${this.#activeMessageID}"`,
626
+ );
627
+ }
628
+ return messageID;
629
+ }
630
+
631
+ #reserveMessageAlias(data: MessageStreamEvent['data'], canonicalID: string): void {
632
+ const descriptor = Object.getOwnPropertyDescriptor(data, 'id');
633
+ const messageID = descriptor && 'value' in descriptor ? descriptor.value : undefined;
634
+ if (typeof messageID !== 'string' || messageID.length === 0) {
635
+ throw new OpenAIError('Received assistant message event with an invalid message ID');
636
+ }
637
+ const owner = this.#messageIDOwners.get(messageID);
638
+ if (owner !== undefined && owner !== canonicalID) {
639
+ throw new OpenAIError(
640
+ `Received message creation for message "${messageID}", which has already been created`,
641
+ );
642
+ }
643
+ this.#messageIDOwners.set(messageID, canonicalID);
644
+ }
645
+
410
646
  #handleMessage(this: AssistantStream, event: MessageStreamEvent) {
411
647
  const [accumulatedMessage, newContent] = this.#accumulateMessage(event, this.#messageSnapshot);
412
648
  this.#messageSnapshot = accumulatedMessage;
413
- this.#messageSnapshots[accumulatedMessage.id] = accumulatedMessage;
649
+ if (!this.#activeMessageID) {
650
+ throw new OpenAIError('Received thread message event with no active message ID');
651
+ }
652
+ this.#messageSnapshots[this.#activeMessageID] = accumulatedMessage;
414
653
 
415
654
  for (const content of newContent) {
416
655
  const snapshotContent = accumulatedMessage.content[content.index];
@@ -502,12 +741,13 @@ export class AssistantStream
502
741
  this.#currentContentIndex = undefined;
503
742
  this.#currentContent = undefined;
504
743
  this.#messageSnapshot = undefined;
744
+ this.#activeMessageID = undefined;
505
745
  }
506
746
  }
507
747
  }
508
748
 
509
- #handleRunStep(this: AssistantStream, event: RunStepStreamEvent) {
510
- const accumulatedRunStep = this.#accumulateRunStep(event);
749
+ #handleRunStep(this: AssistantStream, event: RunStepStreamEvent, runStepID: string) {
750
+ const accumulatedRunStep = this.#accumulateRunStep(event, runStepID);
511
751
  this.#currentRunStepSnapshot = accumulatedRunStep;
512
752
 
513
753
  switch (event.event) {
@@ -554,6 +794,7 @@ export class AssistantStream
554
794
  case 'thread.run.step.cancelled':
555
795
  case 'thread.run.step.expired': {
556
796
  this.#currentRunStepSnapshot = undefined;
797
+ this.#activeRunStepID = undefined;
557
798
  const details = event.data.step_details;
558
799
  if (details.type === 'tool_calls' && this.#currentToolCall) {
559
800
  this.#emitExposed('toolCallDone', this.#currentToolCall as ToolCall);
@@ -582,19 +823,18 @@ export class AssistantStream
582
823
  }
583
824
 
584
825
  #handleEvent(this: AssistantStream, event: AssistantStreamEvent) {
585
- this.#events.push(event);
586
826
  this.#emitExposed('event', event);
587
827
  }
588
828
 
589
- #accumulateRunStep(event: RunStepStreamEvent): Runs.RunStep {
829
+ #accumulateRunStep(event: RunStepStreamEvent, runStepID: string): Runs.RunStep {
590
830
  switch (event.event) {
591
831
  case 'thread.run.step.created': {
592
- this.#runStepSnapshots[event.data.id] = event.data;
832
+ this.#runStepSnapshots[runStepID] = event.data;
593
833
  return event.data;
594
834
  }
595
835
 
596
836
  case 'thread.run.step.delta': {
597
- const snapshot = this.#runStepSnapshots[event.data.id] as Runs.RunStep;
837
+ const snapshot = this.#runStepSnapshots[runStepID] as Runs.RunStep;
598
838
  if (!snapshot) {
599
839
  throw new Error('Received a RunStepDelta before creation of a snapshot');
600
840
  }
@@ -603,10 +843,10 @@ export class AssistantStream
603
843
 
604
844
  if (data.delta) {
605
845
  const accumulated = accumulateAssistantStreamDelta(snapshot, data.delta, true) as Runs.RunStep;
606
- this.#runStepSnapshots[event.data.id] = accumulated;
846
+ this.#runStepSnapshots[runStepID] = accumulated;
607
847
  }
608
848
 
609
- return this.#runStepSnapshots[event.data.id] as Runs.RunStep;
849
+ return this.#runStepSnapshots[runStepID] as Runs.RunStep;
610
850
  }
611
851
 
612
852
  case 'thread.run.step.completed':
@@ -614,13 +854,13 @@ export class AssistantStream
614
854
  case 'thread.run.step.cancelled':
615
855
  case 'thread.run.step.expired':
616
856
  case 'thread.run.step.in_progress': {
617
- this.#runStepSnapshots[event.data.id] = event.data;
857
+ this.#runStepSnapshots[runStepID] = event.data;
618
858
  break;
619
859
  }
620
860
  }
621
861
 
622
- if (this.#runStepSnapshots[event.data.id]) {
623
- return this.#runStepSnapshots[event.data.id] as Runs.RunStep;
862
+ if (this.#runStepSnapshots[runStepID]) {
863
+ return this.#runStepSnapshots[runStepID] as Runs.RunStep;
624
864
  }
625
865
  throw new Error('No snapshot available');
626
866
  }