openai 7.5.0 → 7.6.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 +105 -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 +58 -19
  92. package/core/streaming.js.map +1 -1
  93. package/core/streaming.mjs +58 -19
  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 +9 -12
  427. package/resources/beta/responses/responses.d.mts.map +1 -1
  428. package/resources/beta/responses/responses.d.ts +9 -12
  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 +9 -12
  492. package/resources/responses/responses.d.mts.map +1 -1
  493. package/resources/responses/responses.d.ts +9 -12
  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 +71 -20
  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 +9 -12
  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 +9 -12
  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
@@ -17,6 +17,7 @@ interface ResponseKeepAliveEvent {
17
17
  }
18
18
 
19
19
  type ResponseAccumulatorEvent = ResponseStreamEvent | ResponseKeepAliveEvent;
20
+ type ResponseItemScopedEvent = Extract<ResponseAccumulatorEvent, { item_id: string; output_index: number }>;
20
21
  type ResponseOutputItemEvent = Extract<
21
22
  ResponseAccumulatorEvent,
22
23
  { type: 'response.output_item.added' | 'response.output_item.done' }
@@ -136,6 +137,15 @@ type ResponseIgnoredEvent = Extract<
136
137
  }
137
138
  >;
138
139
 
140
+ interface ResponseOutputIdentityIndex {
141
+ snapshot: Response;
142
+ output: Response['output'];
143
+ length: number;
144
+ identities: Set<string>;
145
+ }
146
+
147
+ const responseOutputIdentityIndexes = new WeakMap<ResponseAccumulatorContext, ResponseOutputIdentityIndex>();
148
+
139
149
  function validateArrayIndex(
140
150
  collection: readonly unknown[],
141
151
  index: number,
@@ -172,6 +182,240 @@ function getOutput(snapshot: Response, outputIndex: number): Response['output'][
172
182
  return output;
173
183
  }
174
184
 
185
+ function hasRoutedOutputCallIdentity(
186
+ output: Response['output'][number],
187
+ ): output is Extract<
188
+ Response['output'][number],
189
+ { type: 'function_call' | 'custom_tool_call' | 'shell_call' | 'shell_call_output' }
190
+ > {
191
+ return (
192
+ output.type === 'function_call' ||
193
+ output.type === 'custom_tool_call' ||
194
+ output.type === 'shell_call' ||
195
+ output.type === 'shell_call_output'
196
+ );
197
+ }
198
+
199
+ function getOutputItemIdentityKeys(output: Response['output'][number], eventType: string): string[] {
200
+ if (!hasOwn(output, 'type') || typeof output.type !== 'string') {
201
+ throw new OpenAIError(`expected an own output item type for ${eventType}`);
202
+ }
203
+
204
+ const optionalPlatformID = output.type === 'function_call' || output.type === 'custom_tool_call';
205
+ const identities: string[] = [];
206
+
207
+ if (hasOwn(output, 'id')) {
208
+ if (typeof output.id !== 'string' || output.id.length === 0) {
209
+ throw new OpenAIError(`expected a non-empty output item id for ${eventType}`);
210
+ }
211
+ identities.push(`id:${output.id}`);
212
+ } else if (!optionalPlatformID) {
213
+ throw new OpenAIError(`expected a non-empty output item id for ${eventType}`);
214
+ }
215
+
216
+ if (hasRoutedOutputCallIdentity(output)) {
217
+ if (!hasOwn(output, 'call_id') || typeof output.call_id !== 'string' || output.call_id.length === 0) {
218
+ throw new OpenAIError(`expected a non-empty output item call_id for ${eventType}`);
219
+ }
220
+ identities.push(`call:${output.type}:${output.call_id}`);
221
+ }
222
+
223
+ return identities;
224
+ }
225
+
226
+ function assertOutputItemIdentitiesAvailable(identities: Set<string>, keys: readonly string[]): void {
227
+ for (const key of keys) {
228
+ if (identities.has(key)) {
229
+ throw new OpenAIError(`duplicate output item identity '${key}'`);
230
+ }
231
+ }
232
+ }
233
+
234
+ function addOutputItemIdentities(identities: Set<string>, keys: readonly string[]): void {
235
+ assertOutputItemIdentitiesAvailable(identities, keys);
236
+ for (const key of keys) {
237
+ identities.add(key);
238
+ }
239
+ }
240
+
241
+ function createResponseOutputIdentityIndex(snapshot: Response): ResponseOutputIdentityIndex {
242
+ const identityIndex: ResponseOutputIdentityIndex = {
243
+ snapshot,
244
+ output: snapshot.output,
245
+ length: snapshot.output.length,
246
+ identities: new Set(),
247
+ };
248
+
249
+ for (let index = 0; index < snapshot.output.length; index += 1) {
250
+ const output = getOutput(snapshot, index);
251
+ addOutputItemIdentities(identityIndex.identities, getOutputItemIdentityKeys(output, 'response snapshot'));
252
+ }
253
+
254
+ return identityIndex;
255
+ }
256
+
257
+ function getResponseOutputIdentityIndex(
258
+ context: ResponseAccumulatorContext,
259
+ snapshot: Response,
260
+ ): ResponseOutputIdentityIndex {
261
+ const cached = responseOutputIdentityIndexes.get(context);
262
+ if (
263
+ cached &&
264
+ cached.snapshot === snapshot &&
265
+ cached.output === snapshot.output &&
266
+ cached.length === snapshot.output.length
267
+ ) {
268
+ return cached;
269
+ }
270
+
271
+ const identityIndex = createResponseOutputIdentityIndex(snapshot);
272
+ responseOutputIdentityIndexes.set(context, identityIndex);
273
+ return identityIndex;
274
+ }
275
+
276
+ function cloneValidatedResponse(context: ResponseAccumulatorContext, response: Response): Response {
277
+ const nextContext = createCanonicalResponseContext();
278
+ const snapshot = cloneResponse(nextContext, response);
279
+ const identityIndex = createResponseOutputIdentityIndex(snapshot);
280
+
281
+ context.canonicalSnapshot = nextContext.canonicalSnapshot;
282
+ context.outputTextLengths = nextContext.outputTextLengths;
283
+ context.outputTextIndex = nextContext.outputTextIndex;
284
+ responseOutputIdentityIndexes.set(context, identityIndex);
285
+
286
+ return snapshot;
287
+ }
288
+
289
+ const expectedOutputItemTypes = {
290
+ 'response.output_text.delta': 'message',
291
+ 'response.output_text.done': 'message',
292
+ 'response.output_text.annotation.added': 'message',
293
+ 'response.refusal.delta': 'message',
294
+ 'response.refusal.done': 'message',
295
+ 'response.function_call_arguments.delta': 'function_call',
296
+ 'response.function_call_arguments.done': 'function_call',
297
+ 'response.custom_tool_call_input.delta': 'custom_tool_call',
298
+ 'response.custom_tool_call_input.done': 'custom_tool_call',
299
+ 'response.mcp_call_arguments.delta': 'mcp_call',
300
+ 'response.mcp_call_arguments.done': 'mcp_call',
301
+ 'response.mcp_call.in_progress': 'mcp_call',
302
+ 'response.mcp_call.completed': 'mcp_call',
303
+ 'response.mcp_call.failed': 'mcp_call',
304
+ 'response.shell_call_output_content.delta': 'shell_call_output',
305
+ 'response.shell_call_output_content.done': 'shell_call_output',
306
+ 'response.reasoning_text.delta': 'reasoning',
307
+ 'response.reasoning_text.done': 'reasoning',
308
+ 'response.reasoning_summary_part.added': 'reasoning',
309
+ 'response.reasoning_summary_part.done': 'reasoning',
310
+ 'response.reasoning_summary_text.delta': 'reasoning',
311
+ 'response.reasoning_summary_text.done': 'reasoning',
312
+ 'response.code_interpreter_call_code.delta': 'code_interpreter_call',
313
+ 'response.code_interpreter_call_code.done': 'code_interpreter_call',
314
+ 'response.code_interpreter_call.in_progress': 'code_interpreter_call',
315
+ 'response.code_interpreter_call.interpreting': 'code_interpreter_call',
316
+ 'response.code_interpreter_call.completed': 'code_interpreter_call',
317
+ 'response.file_search_call.in_progress': 'file_search_call',
318
+ 'response.file_search_call.searching': 'file_search_call',
319
+ 'response.file_search_call.completed': 'file_search_call',
320
+ 'response.web_search_call.in_progress': 'web_search_call',
321
+ 'response.web_search_call.searching': 'web_search_call',
322
+ 'response.web_search_call.completed': 'web_search_call',
323
+ 'response.image_generation_call.in_progress': 'image_generation_call',
324
+ 'response.image_generation_call.generating': 'image_generation_call',
325
+ 'response.image_generation_call.completed': 'image_generation_call',
326
+ 'response.image_generation_call.partial_image': 'image_generation_call',
327
+ 'response.mcp_list_tools.in_progress': 'mcp_list_tools',
328
+ 'response.mcp_list_tools.completed': 'mcp_list_tools',
329
+ 'response.mcp_list_tools.failed': 'mcp_list_tools',
330
+ } satisfies Record<
331
+ Exclude<ResponseItemScopedEvent['type'], 'response.content_part.added' | 'response.content_part.done'>,
332
+ Response['output'][number]['type']
333
+ >;
334
+
335
+ function getExpectedOutputItemType(event: ResponseItemScopedEvent): Response['output'][number]['type'] {
336
+ if (event.type === 'response.content_part.added' || event.type === 'response.content_part.done') {
337
+ return event.part.type === 'reasoning_text' ? 'reasoning' : 'message';
338
+ }
339
+
340
+ return expectedOutputItemTypes[event.type];
341
+ }
342
+
343
+ function validateCompletedOutputItemIdentity(
344
+ event: Extract<ResponseOutputItemEvent, { type: 'response.output_item.done' }>,
345
+ snapshot: Response,
346
+ ): void {
347
+ const output = getOutput(snapshot, event.output_index);
348
+ const replacement = event.item;
349
+ getOutputItemIdentityKeys(output, event.type);
350
+ getOutputItemIdentityKeys(replacement, event.type);
351
+
352
+ if (!hasOwn(replacement, 'type') || output.type !== replacement.type) {
353
+ throw new OpenAIError(`expected output item type '${output.type}', got '${replacement.type}'`);
354
+ }
355
+
356
+ const outputID = hasOwn(output, 'id') ? output.id : undefined;
357
+ const replacementID = hasOwn(replacement, 'id') ? replacement.id : undefined;
358
+ if (outputID !== replacementID) {
359
+ throw new OpenAIError(`expected output item id '${outputID}', got '${replacementID}'`);
360
+ }
361
+
362
+ if (
363
+ hasRoutedOutputCallIdentity(output) &&
364
+ hasRoutedOutputCallIdentity(replacement) &&
365
+ output.call_id !== replacement.call_id
366
+ ) {
367
+ throw new OpenAIError(`expected output item call_id '${output.call_id}', got '${replacement.call_id}'`);
368
+ }
369
+ }
370
+
371
+ function validateOutputItemIdentity(
372
+ event: ResponseAccumulatorEvent,
373
+ snapshot: Response,
374
+ rejectInvalidShellTargets: boolean,
375
+ ): void {
376
+ if (event.type === 'response.output_item.done') {
377
+ validateCompletedOutputItemIdentity(event, snapshot);
378
+ return;
379
+ }
380
+
381
+ if (
382
+ rejectInvalidShellTargets &&
383
+ (event.type === 'response.shell_call_command.added' ||
384
+ event.type === 'response.shell_call_command.delta' ||
385
+ event.type === 'response.shell_call_command.done')
386
+ ) {
387
+ const output = getOutput(snapshot, event.output_index);
388
+ if (!hasOwn(output, 'type') || output.type !== 'shell_call') {
389
+ throw new OpenAIError(`expected output item type 'shell_call', got '${output.type}'`);
390
+ }
391
+ return;
392
+ }
393
+
394
+ if (
395
+ event.type !== 'response.content_part.added' &&
396
+ event.type !== 'response.content_part.done' &&
397
+ !hasOwn(expectedOutputItemTypes, event.type)
398
+ ) {
399
+ return;
400
+ }
401
+
402
+ const itemEvent = event as ResponseItemScopedEvent;
403
+ if (!hasOwn(event, 'item_id') || typeof itemEvent.item_id !== 'string' || itemEvent.item_id.length === 0) {
404
+ throw new OpenAIError(`expected a non-empty item_id for ${event.type}`);
405
+ }
406
+
407
+ const output = getOutput(snapshot, itemEvent.output_index);
408
+ const outputID = hasOwn(output, 'id') ? output.id : undefined;
409
+ if (outputID !== itemEvent.item_id) {
410
+ throw new OpenAIError(`expected item_id '${outputID}', got '${itemEvent.item_id}'`);
411
+ }
412
+
413
+ const expectedType = getExpectedOutputItemType(itemEvent);
414
+ if (output.type !== expectedType) {
415
+ throw new OpenAIError(`expected output item type '${expectedType}', got '${output.type}'`);
416
+ }
417
+ }
418
+
175
419
  function getContent<T>(content: T[], contentIndex: number): T {
176
420
  validateArrayIndex(content, contentIndex, 'content');
177
421
  const part = content[contentIndex];
@@ -208,8 +452,137 @@ function getShellOutputContent(
208
452
  return getContent(output.output, commandIndex);
209
453
  }
210
454
 
211
- function assertNever(value: never): never {
212
- throw new OpenAIError(`Unhandled response stream event: ${JSON.stringify(value)}`);
455
+ function createSupportedResponseEventTypes<EventTypes extends readonly ResponseAccumulatorEvent['type'][]>(
456
+ eventTypes: EventTypes &
457
+ (Exclude<ResponseAccumulatorEvent['type'], EventTypes[number]> extends never ? unknown : never),
458
+ ): ReadonlySet<ResponseAccumulatorEvent['type']> {
459
+ return new Set(eventTypes);
460
+ }
461
+
462
+ const supportedResponseEventTypes = createSupportedResponseEventTypes([
463
+ 'response.output_item.added',
464
+ 'response.output_item.done',
465
+ 'response.content_part.added',
466
+ 'response.content_part.done',
467
+ 'response.output_text.delta',
468
+ 'response.output_text.done',
469
+ 'response.output_text.annotation.added',
470
+ 'response.refusal.delta',
471
+ 'response.refusal.done',
472
+ 'response.function_call_arguments.delta',
473
+ 'response.function_call_arguments.done',
474
+ 'response.custom_tool_call_input.delta',
475
+ 'response.custom_tool_call_input.done',
476
+ 'response.mcp_call_arguments.delta',
477
+ 'response.mcp_call_arguments.done',
478
+ 'response.shell_call_command.added',
479
+ 'response.shell_call_command.done',
480
+ 'response.shell_call_command.delta',
481
+ 'response.shell_call_output_content.delta',
482
+ 'response.shell_call_output_content.done',
483
+ 'response.reasoning_text.delta',
484
+ 'response.reasoning_text.done',
485
+ 'response.reasoning_summary_part.added',
486
+ 'response.reasoning_summary_part.done',
487
+ 'response.reasoning_summary_text.delta',
488
+ 'response.reasoning_summary_text.done',
489
+ 'response.code_interpreter_call_code.delta',
490
+ 'response.code_interpreter_call_code.done',
491
+ 'response.code_interpreter_call.in_progress',
492
+ 'response.code_interpreter_call.interpreting',
493
+ 'response.code_interpreter_call.completed',
494
+ 'response.file_search_call.in_progress',
495
+ 'response.file_search_call.searching',
496
+ 'response.file_search_call.completed',
497
+ 'response.web_search_call.in_progress',
498
+ 'response.web_search_call.searching',
499
+ 'response.web_search_call.completed',
500
+ 'response.image_generation_call.in_progress',
501
+ 'response.image_generation_call.generating',
502
+ 'response.image_generation_call.completed',
503
+ 'response.mcp_call.in_progress',
504
+ 'response.mcp_call.completed',
505
+ 'response.mcp_call.failed',
506
+ 'response.created',
507
+ 'response.queued',
508
+ 'response.in_progress',
509
+ 'response.completed',
510
+ 'response.failed',
511
+ 'response.incomplete',
512
+ 'response.audio.delta',
513
+ 'response.audio.done',
514
+ 'response.audio.transcript.delta',
515
+ 'response.audio.transcript.done',
516
+ 'response.image_generation_call.partial_image',
517
+ 'response.mcp_list_tools.in_progress',
518
+ 'response.mcp_list_tools.completed',
519
+ 'response.mcp_list_tools.failed',
520
+ 'keepalive',
521
+ 'error',
522
+ ] as const);
523
+
524
+ function assertNever(_value: never): never {
525
+ throw new OpenAIError('Unhandled response stream event: unknown');
526
+ }
527
+
528
+ const responseEventRoutingFields = [
529
+ 'item_id',
530
+ 'output_index',
531
+ 'content_index',
532
+ 'annotation_index',
533
+ 'command_index',
534
+ 'summary_index',
535
+ ] as const;
536
+
537
+ function sanitizeResponseEvent(event: ResponseAccumulatorEvent): ResponseAccumulatorEvent {
538
+ let descriptor: PropertyDescriptor | undefined;
539
+ try {
540
+ descriptor = Object.getOwnPropertyDescriptor(event, 'type');
541
+ } catch {
542
+ return assertNever(event as never);
543
+ }
544
+
545
+ const type: unknown = descriptor?.value;
546
+ if (
547
+ typeof type !== 'string' ||
548
+ !supportedResponseEventTypes.has(type as ResponseAccumulatorEvent['type'])
549
+ ) {
550
+ return assertNever(event as never);
551
+ }
552
+
553
+ const stableValues = new Map<PropertyKey, unknown>([['type', type]]);
554
+ const itemScoped =
555
+ type === 'response.output_item.added' ||
556
+ type === 'response.output_item.done' ||
557
+ type === 'response.content_part.added' ||
558
+ type === 'response.content_part.done' ||
559
+ type === 'response.shell_call_command.added' ||
560
+ type === 'response.shell_call_command.delta' ||
561
+ type === 'response.shell_call_command.done' ||
562
+ hasOwn(expectedOutputItemTypes, type);
563
+
564
+ if (itemScoped) {
565
+ try {
566
+ for (const field of responseEventRoutingFields) {
567
+ const routingDescriptor = Object.getOwnPropertyDescriptor(event, field);
568
+ stableValues.set(field, routingDescriptor ? Reflect.get(event, field, event) : undefined);
569
+ }
570
+
571
+ if (type === 'response.output_item.done') {
572
+ stableValues.set('item', structuredClone(Reflect.get(event, 'item', event)));
573
+ } else if (type === 'response.content_part.added' || type === 'response.content_part.done') {
574
+ stableValues.set('part', structuredClone(Reflect.get(event, 'part', event)));
575
+ }
576
+ } catch {
577
+ return assertNever(event as never);
578
+ }
579
+ }
580
+
581
+ return new Proxy(event, {
582
+ get(target, property) {
583
+ return stableValues.has(property) ? stableValues.get(property) : Reflect.get(target, property, target);
584
+ },
585
+ });
213
586
  }
214
587
 
215
588
  function accumulateOutputItemEvent(
@@ -220,11 +593,16 @@ function accumulateOutputItemEvent(
220
593
  switch (event.type) {
221
594
  case 'response.output_item.added': {
222
595
  validateArrayAppend(snapshot.output, event.output_index, 'output');
596
+ const identityIndex = getResponseOutputIdentityIndex(context, snapshot);
223
597
  const output = structuredClone(event.item);
598
+ const identities = getOutputItemIdentityKeys(output, event.type);
599
+ assertOutputItemIdentitiesAvailable(identityIndex.identities, identities);
224
600
  if (output.type === 'message') {
225
601
  ensureCanonicalOutputText(context, snapshot);
226
602
  }
227
603
  snapshot.output.push(output);
604
+ addOutputItemIdentities(identityIndex.identities, identities);
605
+ identityIndex.length = snapshot.output.length;
228
606
  const text = getOutputText(context, output);
229
607
  if (context.canonicalSnapshot === snapshot) {
230
608
  context.outputTextIndex.append(text.length);
@@ -237,7 +615,7 @@ function accumulateOutputItemEvent(
237
615
  case 'response.output_item.done': {
238
616
  const output = getOutput(snapshot, event.output_index);
239
617
  const previousText = getOutputText(context, output);
240
- const replacement = structuredClone(event.item);
618
+ const replacement = event.item;
241
619
  if (output.type === 'message' || replacement.type === 'message') {
242
620
  ensureCanonicalOutputText(context, snapshot);
243
621
  }
@@ -267,7 +645,7 @@ function accumulateContentPartAddedEvent(
267
645
  const { part } = event;
268
646
  if (type === 'message' && part.type !== 'reasoning_text') {
269
647
  validateArrayAppend(output.content, event.content_index, 'content');
270
- const content = structuredClone(part);
648
+ const content = part;
271
649
  if (content.type === 'output_text') {
272
650
  ensureCanonicalOutputText(context, snapshot);
273
651
  }
@@ -282,7 +660,7 @@ function accumulateContentPartAddedEvent(
282
660
  if (!output.content) {
283
661
  output.content = content;
284
662
  }
285
- content.push(structuredClone(part));
663
+ content.push(part);
286
664
  }
287
665
  return true;
288
666
  }
@@ -304,7 +682,7 @@ function accumulateContentPartDoneEvent(
304
682
  if (output.type === 'message' && part.type !== 'reasoning_text') {
305
683
  const content = getContent(output.content, event.content_index);
306
684
  const previousText = content.type === 'output_text' ? content.text : '';
307
- const replacement = structuredClone(part);
685
+ const replacement = part;
308
686
  if (content.type === 'output_text' || replacement.type === 'output_text') {
309
687
  ensureCanonicalOutputText(context, snapshot);
310
688
  }
@@ -318,7 +696,7 @@ function accumulateContentPartDoneEvent(
318
696
  throw new OpenAIError(`missing content at index ${event.content_index}`);
319
697
  }
320
698
  getContent(content, event.content_index);
321
- content[event.content_index] = structuredClone(part);
699
+ content[event.content_index] = part;
322
700
  }
323
701
  return true;
324
702
  }
@@ -794,52 +1172,61 @@ export function accumulateResponseWithContext(
794
1172
  event: ResponseAccumulatorEvent,
795
1173
  snapshot: Response | undefined,
796
1174
  context: ResponseAccumulatorContext,
1175
+ rejectInvalidShellTargets = false,
1176
+ onSanitizedEvent?: (event: ResponseStreamEvent) => void,
797
1177
  ): Response {
1178
+ const dispatchEvent = sanitizeResponseEvent(event);
1179
+ if (onSanitizedEvent && dispatchEvent.type !== 'keepalive') {
1180
+ onSanitizedEvent(dispatchEvent);
1181
+ }
1182
+
798
1183
  if (!snapshot) {
799
- if (event.type !== 'response.created') {
1184
+ if (dispatchEvent.type !== 'response.created') {
800
1185
  throw new OpenAIError(
801
- `When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`,
1186
+ `When snapshot hasn't been set yet, expected 'response.created' event, got ${dispatchEvent.type}`,
802
1187
  );
803
1188
  }
804
- return cloneResponse(context, event.response);
1189
+ return cloneValidatedResponse(context, dispatchEvent.response);
805
1190
  }
806
1191
 
807
- if (accumulateOutputItemEvent(event, snapshot, context)) {
1192
+ validateOutputItemIdentity(dispatchEvent, snapshot, rejectInvalidShellTargets);
1193
+
1194
+ if (accumulateOutputItemEvent(dispatchEvent, snapshot, context)) {
808
1195
  return snapshot;
809
1196
  }
810
- if (accumulateContentPartAddedEvent(event, snapshot, context)) {
1197
+ if (accumulateContentPartAddedEvent(dispatchEvent, snapshot, context)) {
811
1198
  return snapshot;
812
1199
  }
813
- if (accumulateContentPartDoneEvent(event, snapshot, context)) {
1200
+ if (accumulateContentPartDoneEvent(dispatchEvent, snapshot, context)) {
814
1201
  return snapshot;
815
1202
  }
816
- if (accumulateOutputTextEvent(event, snapshot, context)) {
1203
+ if (accumulateOutputTextEvent(dispatchEvent, snapshot, context)) {
817
1204
  return snapshot;
818
1205
  }
819
- if (accumulateRefusalAndArgumentsEvent(event, snapshot)) {
1206
+ if (accumulateRefusalAndArgumentsEvent(dispatchEvent, snapshot)) {
820
1207
  return snapshot;
821
1208
  }
822
- if (accumulateShellEvent(event, snapshot)) {
1209
+ if (accumulateShellEvent(dispatchEvent, snapshot)) {
823
1210
  return snapshot;
824
1211
  }
825
- if (accumulateReasoningEvent(event, snapshot)) {
1212
+ if (accumulateReasoningEvent(dispatchEvent, snapshot)) {
826
1213
  return snapshot;
827
1214
  }
828
- if (accumulateCodeInterpreterEvent(event, snapshot)) {
1215
+ if (accumulateCodeInterpreterEvent(dispatchEvent, snapshot)) {
829
1216
  return snapshot;
830
1217
  }
831
- if (accumulateSearchStatusEvent(event, snapshot)) {
1218
+ if (accumulateSearchStatusEvent(dispatchEvent, snapshot)) {
832
1219
  return snapshot;
833
1220
  }
834
- if (accumulateImageAndMcpStatusEvent(event, snapshot)) {
1221
+ if (accumulateImageAndMcpStatusEvent(dispatchEvent, snapshot)) {
835
1222
  return snapshot;
836
1223
  }
837
1224
 
838
- if (isResponseLifecycleEvent(event)) {
839
- return cloneResponse(context, event.response);
1225
+ if (isResponseLifecycleEvent(dispatchEvent)) {
1226
+ return cloneValidatedResponse(context, dispatchEvent.response);
840
1227
  }
841
- if (isIgnoredResponseEvent(event)) {
1228
+ if (isIgnoredResponseEvent(dispatchEvent)) {
842
1229
  return snapshot;
843
1230
  }
844
- return assertNever(event);
1231
+ return assertNever(dispatchEvent);
845
1232
  }