openai 7.15.0 → 7.17.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 (696) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +6 -0
  3. package/_vendor/zod-to-json-schema/Options.d.mts.map +1 -1
  4. package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -1
  5. package/_vendor/zod-to-json-schema/Options.js +2 -0
  6. package/_vendor/zod-to-json-schema/Options.js.map +1 -1
  7. package/_vendor/zod-to-json-schema/Options.mjs +2 -0
  8. package/_vendor/zod-to-json-schema/Options.mjs.map +1 -1
  9. package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
  10. package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
  11. package/_vendor/zod-to-json-schema/parseDef.js +1 -0
  12. package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
  13. package/_vendor/zod-to-json-schema/parseDef.mjs +1 -0
  14. package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
  15. package/_vendor/zod-to-json-schema/parsers/bigint.d.mts.map +1 -1
  16. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  17. package/_vendor/zod-to-json-schema/parsers/bigint.js +2 -0
  18. package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -1
  19. package/_vendor/zod-to-json-schema/parsers/bigint.mjs +2 -0
  20. package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -1
  21. package/_vendor/zod-to-json-schema/parsers/literal.d.mts.map +1 -1
  22. package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  23. package/_vendor/zod-to-json-schema/parsers/literal.js +1 -0
  24. package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -1
  25. package/_vendor/zod-to-json-schema/parsers/literal.mjs +1 -0
  26. package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -1
  27. package/_vendor/zod-to-json-schema/parsers/null.d.mts.map +1 -1
  28. package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  29. package/_vendor/zod-to-json-schema/parsers/null.js +1 -0
  30. package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -1
  31. package/_vendor/zod-to-json-schema/parsers/null.mjs +1 -0
  32. package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -1
  33. package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
  34. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  35. package/_vendor/zod-to-json-schema/parsers/nullable.js +4 -0
  36. package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
  37. package/_vendor/zod-to-json-schema/parsers/nullable.mjs +4 -0
  38. package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
  39. package/_vendor/zod-to-json-schema/parsers/number.d.mts.map +1 -1
  40. package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  41. package/_vendor/zod-to-json-schema/parsers/number.js +2 -0
  42. package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -1
  43. package/_vendor/zod-to-json-schema/parsers/number.mjs +2 -0
  44. package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -1
  45. package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
  46. package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
  47. package/_vendor/zod-to-json-schema/parsers/optional.js +6 -7
  48. package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
  49. package/_vendor/zod-to-json-schema/parsers/optional.mjs +6 -7
  50. package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
  51. package/_vendor/zod-to-json-schema/parsers/record.d.mts.map +1 -1
  52. package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  53. package/_vendor/zod-to-json-schema/parsers/record.js +2 -0
  54. package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -1
  55. package/_vendor/zod-to-json-schema/parsers/record.mjs +2 -0
  56. package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -1
  57. package/_vendor/zod-to-json-schema/parsers/string.d.mts.map +1 -1
  58. package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  59. package/_vendor/zod-to-json-schema/parsers/string.js +1 -0
  60. package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -1
  61. package/_vendor/zod-to-json-schema/parsers/string.mjs +1 -0
  62. package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -1
  63. package/_vendor/zod-to-json-schema/parsers/union.d.mts.map +1 -1
  64. package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  65. package/_vendor/zod-to-json-schema/parsers/union.js +3 -0
  66. package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -1
  67. package/_vendor/zod-to-json-schema/parsers/union.mjs +3 -0
  68. package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -1
  69. package/_vendor/zod-to-json-schema/util.d.mts.map +1 -1
  70. package/_vendor/zod-to-json-schema/util.d.ts.map +1 -1
  71. package/_vendor/zod-to-json-schema/util.js +1 -0
  72. package/_vendor/zod-to-json-schema/util.js.map +1 -1
  73. package/_vendor/zod-to-json-schema/util.mjs +1 -0
  74. package/_vendor/zod-to-json-schema/util.mjs.map +1 -1
  75. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts.map +1 -1
  76. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -1
  77. package/_vendor/zod-to-json-schema/zodToJsonSchema.js +2 -0
  78. package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  79. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +2 -0
  80. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -1
  81. package/auth/subject-token-providers.d.mts.map +1 -1
  82. package/auth/subject-token-providers.d.ts.map +1 -1
  83. package/auth/subject-token-providers.js +6 -1
  84. package/auth/subject-token-providers.js.map +1 -1
  85. package/auth/subject-token-providers.mjs +6 -1
  86. package/auth/subject-token-providers.mjs.map +1 -1
  87. package/auth/workload-identity-auth.d.mts.map +1 -1
  88. package/auth/workload-identity-auth.d.ts.map +1 -1
  89. package/auth/workload-identity-auth.js +9 -0
  90. package/auth/workload-identity-auth.js.map +1 -1
  91. package/auth/workload-identity-auth.mjs +9 -0
  92. package/auth/workload-identity-auth.mjs.map +1 -1
  93. package/auth/x509-transport.d.mts.map +1 -1
  94. package/auth/x509-transport.d.ts.map +1 -1
  95. package/auth/x509-transport.js +11 -0
  96. package/auth/x509-transport.js.map +1 -1
  97. package/auth/x509-transport.mjs +11 -0
  98. package/auth/x509-transport.mjs.map +1 -1
  99. package/azure.d.mts.map +1 -1
  100. package/azure.d.ts.map +1 -1
  101. package/azure.js +3 -0
  102. package/azure.js.map +1 -1
  103. package/azure.mjs +3 -0
  104. package/azure.mjs.map +1 -1
  105. package/bedrock.d.mts.map +1 -1
  106. package/bedrock.d.ts.map +1 -1
  107. package/bedrock.js +14 -6
  108. package/bedrock.js.map +1 -1
  109. package/bedrock.mjs +14 -6
  110. package/bedrock.mjs.map +1 -1
  111. package/beta/realtime/internal-base.d.mts.map +1 -1
  112. package/beta/realtime/internal-base.d.ts.map +1 -1
  113. package/beta/realtime/internal-base.js +1 -0
  114. package/beta/realtime/internal-base.js.map +1 -1
  115. package/beta/realtime/internal-base.mjs +1 -0
  116. package/beta/realtime/internal-base.mjs.map +1 -1
  117. package/beta/realtime/websocket.d.mts.map +1 -1
  118. package/beta/realtime/websocket.d.ts.map +1 -1
  119. package/beta/realtime/websocket.js +9 -1
  120. package/beta/realtime/websocket.js.map +1 -1
  121. package/beta/realtime/websocket.mjs +9 -1
  122. package/beta/realtime/websocket.mjs.map +1 -1
  123. package/beta/realtime/ws.d.mts.map +1 -1
  124. package/beta/realtime/ws.d.ts.map +1 -1
  125. package/beta/realtime/ws.js +3 -0
  126. package/beta/realtime/ws.js.map +1 -1
  127. package/beta/realtime/ws.mjs +3 -0
  128. package/beta/realtime/ws.mjs.map +1 -1
  129. package/client.d.mts +14 -3
  130. package/client.d.mts.map +1 -1
  131. package/client.d.ts +14 -3
  132. package/client.d.ts.map +1 -1
  133. package/client.js +64 -26
  134. package/client.js.map +1 -1
  135. package/client.mjs +64 -26
  136. package/client.mjs.map +1 -1
  137. package/core/EventEmitter.d.mts.map +1 -1
  138. package/core/EventEmitter.d.ts.map +1 -1
  139. package/core/EventEmitter.js +15 -0
  140. package/core/EventEmitter.js.map +1 -1
  141. package/core/EventEmitter.mjs +15 -0
  142. package/core/EventEmitter.mjs.map +1 -1
  143. package/core/streaming.d.mts +1 -0
  144. package/core/streaming.d.mts.map +1 -1
  145. package/core/streaming.d.ts +1 -0
  146. package/core/streaming.d.ts.map +1 -1
  147. package/core/streaming.js +28 -1
  148. package/core/streaming.js.map +1 -1
  149. package/core/streaming.mjs +28 -1
  150. package/core/streaming.mjs.map +1 -1
  151. package/helpers/audio.d.mts.map +1 -1
  152. package/helpers/audio.d.ts.map +1 -1
  153. package/helpers/audio.js +2 -0
  154. package/helpers/audio.js.map +1 -1
  155. package/helpers/audio.mjs +2 -0
  156. package/helpers/audio.mjs.map +1 -1
  157. package/helpers/standard-schema.d.mts.map +1 -1
  158. package/helpers/standard-schema.d.ts.map +1 -1
  159. package/helpers/standard-schema.js +28 -18
  160. package/helpers/standard-schema.js.map +1 -1
  161. package/helpers/standard-schema.mjs +28 -18
  162. package/helpers/standard-schema.mjs.map +1 -1
  163. package/helpers/zod-v3-strict-schema.d.mts.map +1 -1
  164. package/helpers/zod-v3-strict-schema.d.ts.map +1 -1
  165. package/helpers/zod-v3-strict-schema.js +5 -0
  166. package/helpers/zod-v3-strict-schema.js.map +1 -1
  167. package/helpers/zod-v3-strict-schema.mjs +5 -0
  168. package/helpers/zod-v3-strict-schema.mjs.map +1 -1
  169. package/helpers/zod.d.mts.map +1 -1
  170. package/helpers/zod.d.ts.map +1 -1
  171. package/helpers/zod.js +16 -1
  172. package/helpers/zod.js.map +1 -1
  173. package/helpers/zod.mjs +17 -2
  174. package/helpers/zod.mjs.map +1 -1
  175. package/internal/assistant-stream-delta.d.mts.map +1 -1
  176. package/internal/assistant-stream-delta.d.ts.map +1 -1
  177. package/internal/assistant-stream-delta.js +8 -1
  178. package/internal/assistant-stream-delta.js.map +1 -1
  179. package/internal/assistant-stream-delta.mjs +8 -1
  180. package/internal/assistant-stream-delta.mjs.map +1 -1
  181. package/internal/auth/x509-credential-options.d.mts.map +1 -1
  182. package/internal/auth/x509-credential-options.d.ts.map +1 -1
  183. package/internal/auth/x509-credential-options.js +3 -0
  184. package/internal/auth/x509-credential-options.js.map +1 -1
  185. package/internal/auth/x509-credential-options.mjs +3 -0
  186. package/internal/auth/x509-credential-options.mjs.map +1 -1
  187. package/internal/auth/x509-token-exchange.d.mts.map +1 -1
  188. package/internal/auth/x509-token-exchange.d.ts.map +1 -1
  189. package/internal/auth/x509-token-exchange.js +2 -0
  190. package/internal/auth/x509-token-exchange.js.map +1 -1
  191. package/internal/auth/x509-token-exchange.mjs +2 -0
  192. package/internal/auth/x509-token-exchange.mjs.map +1 -1
  193. package/internal/auth/x509-transport-capability.d.mts.map +1 -1
  194. package/internal/auth/x509-transport-capability.d.ts.map +1 -1
  195. package/internal/auth/x509-transport-capability.js +1 -0
  196. package/internal/auth/x509-transport-capability.js.map +1 -1
  197. package/internal/auth/x509-transport-capability.mjs +1 -0
  198. package/internal/auth/x509-transport-capability.mjs.map +1 -1
  199. package/internal/auth/x509-transport-state.mjs +1 -0
  200. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -1
  201. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -1
  202. package/internal/auth/x509-workload-identity-auth.js +11 -0
  203. package/internal/auth/x509-workload-identity-auth.js.map +1 -1
  204. package/internal/auth/x509-workload-identity-auth.mjs +11 -0
  205. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -1
  206. package/internal/bedrock.d.mts.map +1 -1
  207. package/internal/bedrock.d.ts.map +1 -1
  208. package/internal/bedrock.js +17 -1
  209. package/internal/bedrock.js.map +1 -1
  210. package/internal/bedrock.mjs +17 -1
  211. package/internal/bedrock.mjs.map +1 -1
  212. package/internal/decoders/line.d.mts.map +1 -1
  213. package/internal/decoders/line.d.ts.map +1 -1
  214. package/internal/decoders/line.js +1 -0
  215. package/internal/decoders/line.js.map +1 -1
  216. package/internal/decoders/line.mjs +1 -0
  217. package/internal/decoders/line.mjs.map +1 -1
  218. package/internal/parse.d.mts +1 -0
  219. package/internal/parse.d.mts.map +1 -1
  220. package/internal/parse.d.ts +1 -0
  221. package/internal/parse.d.ts.map +1 -1
  222. package/internal/parse.js.map +1 -1
  223. package/internal/parse.mjs.map +1 -1
  224. package/internal/provider.d.mts.map +1 -1
  225. package/internal/provider.d.ts.map +1 -1
  226. package/internal/provider.js +3 -0
  227. package/internal/provider.js.map +1 -1
  228. package/internal/provider.mjs +3 -0
  229. package/internal/provider.mjs.map +1 -1
  230. package/internal/qs/stringify.d.mts.map +1 -1
  231. package/internal/qs/stringify.d.ts.map +1 -1
  232. package/internal/qs/stringify.js +3 -0
  233. package/internal/qs/stringify.js.map +1 -1
  234. package/internal/qs/stringify.mjs +3 -0
  235. package/internal/qs/stringify.mjs.map +1 -1
  236. package/internal/qs/utils.d.mts.map +1 -1
  237. package/internal/qs/utils.d.ts.map +1 -1
  238. package/internal/qs/utils.js +15 -3
  239. package/internal/qs/utils.js.map +1 -1
  240. package/internal/qs/utils.mjs +15 -3
  241. package/internal/qs/utils.mjs.map +1 -1
  242. package/internal/realtime-credentials.d.mts +1 -1
  243. package/internal/realtime-credentials.d.ts +1 -1
  244. package/internal/realtime-credentials.js +1 -1
  245. package/internal/realtime-credentials.mjs +1 -1
  246. package/internal/responses/response-accumulator.d.mts.map +1 -1
  247. package/internal/responses/response-accumulator.d.ts.map +1 -1
  248. package/internal/responses/response-accumulator.js +20 -4
  249. package/internal/responses/response-accumulator.js.map +1 -1
  250. package/internal/responses/response-accumulator.mjs +20 -4
  251. package/internal/responses/response-accumulator.mjs.map +1 -1
  252. package/internal/to-file.js.map +1 -1
  253. package/internal/to-file.mjs.map +1 -1
  254. package/internal/uploads.d.mts.map +1 -1
  255. package/internal/uploads.d.ts.map +1 -1
  256. package/internal/uploads.js +10 -0
  257. package/internal/uploads.js.map +1 -1
  258. package/internal/uploads.mjs +10 -0
  259. package/internal/uploads.mjs.map +1 -1
  260. package/internal/utils/abort.d.mts +11 -0
  261. package/internal/utils/abort.d.mts.map +1 -0
  262. package/internal/utils/abort.d.ts +11 -0
  263. package/internal/utils/abort.d.ts.map +1 -0
  264. package/internal/utils/abort.js +94 -0
  265. package/internal/utils/abort.js.map +1 -0
  266. package/internal/utils/abort.mjs +90 -0
  267. package/internal/utils/abort.mjs.map +1 -0
  268. package/internal/utils/bytes.d.mts.map +1 -1
  269. package/internal/utils/bytes.d.ts.map +1 -1
  270. package/internal/utils/bytes.js +2 -0
  271. package/internal/utils/bytes.js.map +1 -1
  272. package/internal/utils/bytes.mjs +2 -0
  273. package/internal/utils/bytes.mjs.map +1 -1
  274. package/internal/utils/path.d.mts.map +1 -1
  275. package/internal/utils/path.d.ts.map +1 -1
  276. package/internal/utils/path.js +2 -0
  277. package/internal/utils/path.js.map +1 -1
  278. package/internal/utils/path.mjs +2 -0
  279. package/internal/utils/path.mjs.map +1 -1
  280. package/internal/utils/sleep.d.mts +1 -1
  281. package/internal/utils/sleep.d.mts.map +1 -1
  282. package/internal/utils/sleep.d.ts +1 -1
  283. package/internal/utils/sleep.d.ts.map +1 -1
  284. package/internal/utils/sleep.js +51 -1
  285. package/internal/utils/sleep.js.map +1 -1
  286. package/internal/utils/sleep.mjs +51 -1
  287. package/internal/utils/sleep.mjs.map +1 -1
  288. package/internal/ws-adapter-browser.d.mts.map +1 -1
  289. package/internal/ws-adapter-browser.d.ts.map +1 -1
  290. package/internal/ws-adapter-browser.js +2 -0
  291. package/internal/ws-adapter-browser.js.map +1 -1
  292. package/internal/ws-adapter-browser.mjs +2 -0
  293. package/internal/ws-adapter-browser.mjs.map +1 -1
  294. package/internal/ws.d.mts +22 -0
  295. package/internal/ws.d.mts.map +1 -1
  296. package/internal/ws.d.ts +22 -0
  297. package/internal/ws.d.ts.map +1 -1
  298. package/internal/ws.js +46 -4
  299. package/internal/ws.js.map +1 -1
  300. package/internal/ws.mjs +44 -4
  301. package/internal/ws.mjs.map +1 -1
  302. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  303. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  304. package/lib/AbstractChatCompletionRunner.js +41 -16
  305. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  306. package/lib/AbstractChatCompletionRunner.mjs +42 -17
  307. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  308. package/lib/AssistantStream.d.mts.map +1 -1
  309. package/lib/AssistantStream.d.ts.map +1 -1
  310. package/lib/AssistantStream.js +19 -5
  311. package/lib/AssistantStream.js.map +1 -1
  312. package/lib/AssistantStream.mjs +20 -6
  313. package/lib/AssistantStream.mjs.map +1 -1
  314. package/lib/ChatCompletionRunner.d.mts.map +1 -1
  315. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  316. package/lib/ChatCompletionRunner.js +1 -0
  317. package/lib/ChatCompletionRunner.js.map +1 -1
  318. package/lib/ChatCompletionRunner.mjs +1 -0
  319. package/lib/ChatCompletionRunner.mjs.map +1 -1
  320. package/lib/ChatCompletionStream.d.mts +6 -1
  321. package/lib/ChatCompletionStream.d.mts.map +1 -1
  322. package/lib/ChatCompletionStream.d.ts +6 -1
  323. package/lib/ChatCompletionStream.d.ts.map +1 -1
  324. package/lib/ChatCompletionStream.js +63 -7
  325. package/lib/ChatCompletionStream.js.map +1 -1
  326. package/lib/ChatCompletionStream.mjs +64 -8
  327. package/lib/ChatCompletionStream.mjs.map +1 -1
  328. package/lib/EventEmitter.d.mts.map +1 -1
  329. package/lib/EventEmitter.d.ts.map +1 -1
  330. package/lib/EventEmitter.js +15 -0
  331. package/lib/EventEmitter.js.map +1 -1
  332. package/lib/EventEmitter.mjs +15 -0
  333. package/lib/EventEmitter.mjs.map +1 -1
  334. package/lib/EventStream.d.mts +2 -0
  335. package/lib/EventStream.d.mts.map +1 -1
  336. package/lib/EventStream.d.ts +2 -0
  337. package/lib/EventStream.d.ts.map +1 -1
  338. package/lib/EventStream.js +111 -14
  339. package/lib/EventStream.js.map +1 -1
  340. package/lib/EventStream.mjs +111 -14
  341. package/lib/EventStream.mjs.map +1 -1
  342. package/lib/ResponsesParser.d.mts.map +1 -1
  343. package/lib/ResponsesParser.d.ts.map +1 -1
  344. package/lib/ResponsesParser.js +4 -0
  345. package/lib/ResponsesParser.js.map +1 -1
  346. package/lib/ResponsesParser.mjs +4 -0
  347. package/lib/ResponsesParser.mjs.map +1 -1
  348. package/lib/RunnableFunction.d.mts.map +1 -1
  349. package/lib/RunnableFunction.d.ts.map +1 -1
  350. package/lib/RunnableFunction.js.map +1 -1
  351. package/lib/RunnableFunction.mjs.map +1 -1
  352. package/lib/agents/agent-session-stream.d.mts.map +1 -1
  353. package/lib/agents/agent-session-stream.d.ts.map +1 -1
  354. package/lib/agents/agent-session-stream.js +5 -2
  355. package/lib/agents/agent-session-stream.js.map +1 -1
  356. package/lib/agents/agent-session-stream.mjs +5 -2
  357. package/lib/agents/agent-session-stream.mjs.map +1 -1
  358. package/lib/embeddings.d.mts.map +1 -1
  359. package/lib/embeddings.d.ts.map +1 -1
  360. package/lib/embeddings.js +2 -0
  361. package/lib/embeddings.js.map +1 -1
  362. package/lib/embeddings.mjs +2 -0
  363. package/lib/embeddings.mjs.map +1 -1
  364. package/lib/live/transcript-grouper.d.mts.map +1 -1
  365. package/lib/live/transcript-grouper.d.ts.map +1 -1
  366. package/lib/live/transcript-grouper.js +8 -2
  367. package/lib/live/transcript-grouper.js.map +1 -1
  368. package/lib/live/transcript-grouper.mjs +8 -2
  369. package/lib/live/transcript-grouper.mjs.map +1 -1
  370. package/lib/live/transcript-grouping.d.mts +2 -2
  371. package/lib/live/transcript-grouping.d.mts.map +1 -1
  372. package/lib/live/transcript-grouping.d.ts +2 -2
  373. package/lib/live/transcript-grouping.d.ts.map +1 -1
  374. package/lib/live/transcript-grouping.js +44 -22
  375. package/lib/live/transcript-grouping.js.map +1 -1
  376. package/lib/live/transcript-grouping.mjs +44 -22
  377. package/lib/live/transcript-grouping.mjs.map +1 -1
  378. package/lib/parser.d.mts.map +1 -1
  379. package/lib/parser.d.ts.map +1 -1
  380. package/lib/parser.js +13 -0
  381. package/lib/parser.js.map +1 -1
  382. package/lib/parser.mjs +13 -0
  383. package/lib/parser.mjs.map +1 -1
  384. package/lib/responses/ResponseInputItems.d.mts.map +1 -1
  385. package/lib/responses/ResponseInputItems.d.ts.map +1 -1
  386. package/lib/responses/ResponseInputItems.js +11 -0
  387. package/lib/responses/ResponseInputItems.js.map +1 -1
  388. package/lib/responses/ResponseInputItems.mjs +11 -0
  389. package/lib/responses/ResponseInputItems.mjs.map +1 -1
  390. package/lib/responses/ResponseStream.d.mts.map +1 -1
  391. package/lib/responses/ResponseStream.d.ts.map +1 -1
  392. package/lib/responses/ResponseStream.js +7 -3
  393. package/lib/responses/ResponseStream.js.map +1 -1
  394. package/lib/responses/ResponseStream.mjs +8 -4
  395. package/lib/responses/ResponseStream.mjs.map +1 -1
  396. package/lib/transform.d.mts.map +1 -1
  397. package/lib/transform.d.ts.map +1 -1
  398. package/lib/transform.js +69 -33
  399. package/lib/transform.js.map +1 -1
  400. package/lib/transform.mjs +69 -33
  401. package/lib/transform.mjs.map +1 -1
  402. package/lib/webrtc/connection.d.mts.map +1 -1
  403. package/lib/webrtc/connection.d.ts.map +1 -1
  404. package/lib/webrtc/connection.js +6 -1
  405. package/lib/webrtc/connection.js.map +1 -1
  406. package/lib/webrtc/connection.mjs +6 -1
  407. package/lib/webrtc/connection.mjs.map +1 -1
  408. package/lib/webrtc/data-channel.d.mts.map +1 -1
  409. package/lib/webrtc/data-channel.d.ts.map +1 -1
  410. package/lib/webrtc/data-channel.js +9 -1
  411. package/lib/webrtc/data-channel.js.map +1 -1
  412. package/lib/webrtc/data-channel.mjs +9 -1
  413. package/lib/webrtc/data-channel.mjs.map +1 -1
  414. package/lib/webrtc/subscriptions.d.mts.map +1 -1
  415. package/lib/webrtc/subscriptions.d.ts.map +1 -1
  416. package/lib/webrtc/subscriptions.js +2 -0
  417. package/lib/webrtc/subscriptions.js.map +1 -1
  418. package/lib/webrtc/subscriptions.mjs +2 -0
  419. package/lib/webrtc/subscriptions.mjs.map +1 -1
  420. package/lib/webrtc/types.d.mts.map +1 -1
  421. package/lib/webrtc/types.d.ts.map +1 -1
  422. package/package.json +1 -1
  423. package/providers/bedrock/aws.d.mts.map +1 -1
  424. package/providers/bedrock/aws.d.ts.map +1 -1
  425. package/providers/bedrock/aws.js +4 -0
  426. package/providers/bedrock/aws.js.map +1 -1
  427. package/providers/bedrock/aws.mjs +4 -0
  428. package/providers/bedrock/aws.mjs.map +1 -1
  429. package/realtime/internal-base.d.mts.map +1 -1
  430. package/realtime/internal-base.d.ts.map +1 -1
  431. package/realtime/internal-base.js +1 -0
  432. package/realtime/internal-base.js.map +1 -1
  433. package/realtime/internal-base.mjs +1 -0
  434. package/realtime/internal-base.mjs.map +1 -1
  435. package/realtime/websocket.d.mts.map +1 -1
  436. package/realtime/websocket.d.ts.map +1 -1
  437. package/realtime/websocket.js +9 -1
  438. package/realtime/websocket.js.map +1 -1
  439. package/realtime/websocket.mjs +9 -1
  440. package/realtime/websocket.mjs.map +1 -1
  441. package/realtime/ws.d.mts.map +1 -1
  442. package/realtime/ws.d.ts.map +1 -1
  443. package/realtime/ws.js +3 -0
  444. package/realtime/ws.js.map +1 -1
  445. package/realtime/ws.mjs +3 -0
  446. package/realtime/ws.mjs.map +1 -1
  447. package/resources/beta/agents/agents.d.mts +2 -1
  448. package/resources/beta/agents/agents.d.mts.map +1 -1
  449. package/resources/beta/agents/agents.d.ts +2 -1
  450. package/resources/beta/agents/agents.d.ts.map +1 -1
  451. package/resources/beta/agents/agents.js.map +1 -1
  452. package/resources/beta/agents/agents.mjs.map +1 -1
  453. package/resources/beta/beta.d.mts +2 -2
  454. package/resources/beta/beta.d.mts.map +1 -1
  455. package/resources/beta/beta.d.ts +2 -2
  456. package/resources/beta/beta.d.ts.map +1 -1
  457. package/resources/beta/beta.js.map +1 -1
  458. package/resources/beta/beta.mjs.map +1 -1
  459. package/resources/beta/index.d.mts +1 -1
  460. package/resources/beta/index.d.mts.map +1 -1
  461. package/resources/beta/index.d.ts +1 -1
  462. package/resources/beta/index.d.ts.map +1 -1
  463. package/resources/beta/index.js.map +1 -1
  464. package/resources/beta/index.mjs.map +1 -1
  465. package/resources/beta/responses/index.d.mts +1 -1
  466. package/resources/beta/responses/index.d.mts.map +1 -1
  467. package/resources/beta/responses/index.d.ts +1 -1
  468. package/resources/beta/responses/index.d.ts.map +1 -1
  469. package/resources/beta/responses/index.js.map +1 -1
  470. package/resources/beta/responses/index.mjs.map +1 -1
  471. package/resources/beta/responses/internal-base.d.mts +3 -0
  472. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  473. package/resources/beta/responses/internal-base.d.ts +3 -0
  474. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  475. package/resources/beta/responses/internal-base.js +21 -6
  476. package/resources/beta/responses/internal-base.js.map +1 -1
  477. package/resources/beta/responses/internal-base.mjs +21 -6
  478. package/resources/beta/responses/internal-base.mjs.map +1 -1
  479. package/resources/beta/responses/responses.d.mts +51 -3
  480. package/resources/beta/responses/responses.d.mts.map +1 -1
  481. package/resources/beta/responses/responses.d.ts +51 -3
  482. package/resources/beta/responses/responses.d.ts.map +1 -1
  483. package/resources/beta/responses/responses.js.map +1 -1
  484. package/resources/beta/responses/responses.mjs.map +1 -1
  485. package/resources/beta/responses/ws-base.d.mts +18 -9
  486. package/resources/beta/responses/ws-base.d.mts.map +1 -1
  487. package/resources/beta/responses/ws-base.d.ts +18 -9
  488. package/resources/beta/responses/ws-base.d.ts.map +1 -1
  489. package/resources/beta/responses/ws-base.js +87 -18
  490. package/resources/beta/responses/ws-base.js.map +1 -1
  491. package/resources/beta/responses/ws-base.mjs +89 -20
  492. package/resources/beta/responses/ws-base.mjs.map +1 -1
  493. package/resources/beta/responses/ws.d.mts +3 -0
  494. package/resources/beta/responses/ws.d.mts.map +1 -1
  495. package/resources/beta/responses/ws.d.ts +3 -0
  496. package/resources/beta/responses/ws.d.ts.map +1 -1
  497. package/resources/beta/responses/ws.js +12 -3
  498. package/resources/beta/responses/ws.js.map +1 -1
  499. package/resources/beta/responses/ws.mjs +12 -3
  500. package/resources/beta/responses/ws.mjs.map +1 -1
  501. package/resources/live/forks/internal-base.d.mts +3 -0
  502. package/resources/live/forks/internal-base.d.mts.map +1 -1
  503. package/resources/live/forks/internal-base.d.ts +3 -0
  504. package/resources/live/forks/internal-base.d.ts.map +1 -1
  505. package/resources/live/forks/internal-base.js +21 -5
  506. package/resources/live/forks/internal-base.js.map +1 -1
  507. package/resources/live/forks/internal-base.mjs +21 -5
  508. package/resources/live/forks/internal-base.mjs.map +1 -1
  509. package/resources/live/forks/ws-base.d.mts +13 -8
  510. package/resources/live/forks/ws-base.d.mts.map +1 -1
  511. package/resources/live/forks/ws-base.d.ts +13 -8
  512. package/resources/live/forks/ws-base.d.ts.map +1 -1
  513. package/resources/live/forks/ws-base.js +85 -14
  514. package/resources/live/forks/ws-base.js.map +1 -1
  515. package/resources/live/forks/ws-base.mjs +87 -16
  516. package/resources/live/forks/ws-base.mjs.map +1 -1
  517. package/resources/live/forks/ws.d.mts +1 -0
  518. package/resources/live/forks/ws.d.mts.map +1 -1
  519. package/resources/live/forks/ws.d.ts +1 -0
  520. package/resources/live/forks/ws.d.ts.map +1 -1
  521. package/resources/live/forks/ws.js.map +1 -1
  522. package/resources/live/forks/ws.mjs.map +1 -1
  523. package/resources/live/internal-base.d.mts +3 -0
  524. package/resources/live/internal-base.d.mts.map +1 -1
  525. package/resources/live/internal-base.d.ts +3 -0
  526. package/resources/live/internal-base.d.ts.map +1 -1
  527. package/resources/live/internal-base.js +21 -5
  528. package/resources/live/internal-base.js.map +1 -1
  529. package/resources/live/internal-base.mjs +21 -5
  530. package/resources/live/internal-base.mjs.map +1 -1
  531. package/resources/live/sideband/internal-base.d.mts +3 -0
  532. package/resources/live/sideband/internal-base.d.mts.map +1 -1
  533. package/resources/live/sideband/internal-base.d.ts +3 -0
  534. package/resources/live/sideband/internal-base.d.ts.map +1 -1
  535. package/resources/live/sideband/internal-base.js +21 -5
  536. package/resources/live/sideband/internal-base.js.map +1 -1
  537. package/resources/live/sideband/internal-base.mjs +21 -5
  538. package/resources/live/sideband/internal-base.mjs.map +1 -1
  539. package/resources/live/sideband/ws-base.d.mts +13 -8
  540. package/resources/live/sideband/ws-base.d.mts.map +1 -1
  541. package/resources/live/sideband/ws-base.d.ts +13 -8
  542. package/resources/live/sideband/ws-base.d.ts.map +1 -1
  543. package/resources/live/sideband/ws-base.js +85 -14
  544. package/resources/live/sideband/ws-base.js.map +1 -1
  545. package/resources/live/sideband/ws-base.mjs +87 -16
  546. package/resources/live/sideband/ws-base.mjs.map +1 -1
  547. package/resources/live/sideband/ws.d.mts +1 -0
  548. package/resources/live/sideband/ws.d.mts.map +1 -1
  549. package/resources/live/sideband/ws.d.ts +1 -0
  550. package/resources/live/sideband/ws.d.ts.map +1 -1
  551. package/resources/live/sideband/ws.js.map +1 -1
  552. package/resources/live/sideband/ws.mjs.map +1 -1
  553. package/resources/live/ws-base.d.mts +13 -8
  554. package/resources/live/ws-base.d.mts.map +1 -1
  555. package/resources/live/ws-base.d.ts +13 -8
  556. package/resources/live/ws-base.d.ts.map +1 -1
  557. package/resources/live/ws-base.js +85 -14
  558. package/resources/live/ws-base.js.map +1 -1
  559. package/resources/live/ws-base.mjs +87 -16
  560. package/resources/live/ws-base.mjs.map +1 -1
  561. package/resources/live/ws.d.mts +1 -0
  562. package/resources/live/ws.d.mts.map +1 -1
  563. package/resources/live/ws.d.ts +1 -0
  564. package/resources/live/ws.d.ts.map +1 -1
  565. package/resources/live/ws.js.map +1 -1
  566. package/resources/live/ws.mjs.map +1 -1
  567. package/resources/responses/internal-base.d.mts +3 -0
  568. package/resources/responses/internal-base.d.mts.map +1 -1
  569. package/resources/responses/internal-base.d.ts +3 -0
  570. package/resources/responses/internal-base.d.ts.map +1 -1
  571. package/resources/responses/internal-base.js +21 -6
  572. package/resources/responses/internal-base.js.map +1 -1
  573. package/resources/responses/internal-base.mjs +21 -6
  574. package/resources/responses/internal-base.mjs.map +1 -1
  575. package/resources/responses/responses.d.mts +36 -3
  576. package/resources/responses/responses.d.mts.map +1 -1
  577. package/resources/responses/responses.d.ts +36 -3
  578. package/resources/responses/responses.d.ts.map +1 -1
  579. package/resources/responses/responses.js.map +1 -1
  580. package/resources/responses/responses.mjs.map +1 -1
  581. package/resources/responses/ws-base.d.mts +18 -9
  582. package/resources/responses/ws-base.d.mts.map +1 -1
  583. package/resources/responses/ws-base.d.ts +18 -9
  584. package/resources/responses/ws-base.d.ts.map +1 -1
  585. package/resources/responses/ws-base.js +87 -18
  586. package/resources/responses/ws-base.js.map +1 -1
  587. package/resources/responses/ws-base.mjs +89 -20
  588. package/resources/responses/ws-base.mjs.map +1 -1
  589. package/resources/responses/ws.d.mts +3 -0
  590. package/resources/responses/ws.d.mts.map +1 -1
  591. package/resources/responses/ws.d.ts +3 -0
  592. package/resources/responses/ws.d.ts.map +1 -1
  593. package/resources/responses/ws.js +12 -3
  594. package/resources/responses/ws.js.map +1 -1
  595. package/resources/responses/ws.mjs +12 -3
  596. package/resources/responses/ws.mjs.map +1 -1
  597. package/src/_vendor/zod-to-json-schema/Options.ts +2 -0
  598. package/src/_vendor/zod-to-json-schema/parseDef.ts +1 -0
  599. package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +2 -0
  600. package/src/_vendor/zod-to-json-schema/parsers/literal.ts +1 -0
  601. package/src/_vendor/zod-to-json-schema/parsers/null.ts +1 -0
  602. package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +4 -0
  603. package/src/_vendor/zod-to-json-schema/parsers/number.ts +2 -0
  604. package/src/_vendor/zod-to-json-schema/parsers/optional.ts +6 -7
  605. package/src/_vendor/zod-to-json-schema/parsers/record.ts +2 -0
  606. package/src/_vendor/zod-to-json-schema/parsers/string.ts +1 -0
  607. package/src/_vendor/zod-to-json-schema/parsers/union.ts +3 -0
  608. package/src/_vendor/zod-to-json-schema/util.ts +1 -0
  609. package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +3 -1
  610. package/src/auth/subject-token-providers.ts +6 -1
  611. package/src/auth/workload-identity-auth.ts +10 -1
  612. package/src/auth/x509-transport.ts +13 -2
  613. package/src/azure.ts +3 -0
  614. package/src/bedrock.ts +23 -7
  615. package/src/beta/realtime/internal-base.ts +2 -0
  616. package/src/beta/realtime/websocket.ts +11 -1
  617. package/src/beta/realtime/ws.ts +3 -0
  618. package/src/client.ts +78 -22
  619. package/src/core/EventEmitter.ts +15 -0
  620. package/src/core/streaming.ts +30 -2
  621. package/src/helpers/audio.ts +2 -0
  622. package/src/helpers/standard-schema.ts +31 -19
  623. package/src/helpers/zod-v3-strict-schema.ts +8 -2
  624. package/src/helpers/zod.ts +32 -13
  625. package/src/internal/assistant-stream-delta.ts +7 -1
  626. package/src/internal/auth/x509-credential-options.ts +3 -0
  627. package/src/internal/auth/x509-token-exchange.ts +10 -1
  628. package/src/internal/auth/x509-transport-capability.ts +2 -1
  629. package/src/internal/auth/x509-workload-identity-auth.ts +13 -8
  630. package/src/internal/bedrock.ts +15 -0
  631. package/src/internal/decoders/line.ts +1 -0
  632. package/src/internal/parse.ts +1 -0
  633. package/src/internal/provider.ts +3 -0
  634. package/src/internal/qs/stringify.ts +3 -0
  635. package/src/internal/qs/utils.ts +14 -3
  636. package/src/internal/realtime-credentials.ts +1 -1
  637. package/src/internal/responses/response-accumulator.ts +34 -4
  638. package/src/internal/to-file.ts +1 -1
  639. package/src/internal/uploads.ts +11 -1
  640. package/src/internal/utils/abort.ts +116 -0
  641. package/src/internal/utils/bytes.ts +2 -0
  642. package/src/internal/utils/path.ts +2 -0
  643. package/src/internal/utils/sleep.ts +52 -1
  644. package/src/internal/ws-adapter-browser.ts +2 -0
  645. package/src/internal/ws.ts +66 -4
  646. package/src/lib/AbstractChatCompletionRunner.ts +40 -17
  647. package/src/lib/AssistantStream.ts +31 -20
  648. package/src/lib/ChatCompletionRunner.ts +1 -0
  649. package/src/lib/ChatCompletionStream.ts +81 -14
  650. package/src/lib/EventEmitter.ts +15 -0
  651. package/src/lib/EventStream.ts +93 -3
  652. package/src/lib/ResponsesParser.ts +5 -0
  653. package/src/lib/RunnableFunction.ts +4 -1
  654. package/src/lib/agents/agent-session-stream.ts +5 -3
  655. package/src/lib/embeddings.ts +3 -1
  656. package/src/lib/live/transcript-grouper.ts +4 -0
  657. package/src/lib/live/transcript-grouping.ts +59 -27
  658. package/src/lib/parser.ts +16 -2
  659. package/src/lib/responses/ResponseInputItems.ts +11 -0
  660. package/src/lib/responses/ResponseStream.ts +6 -3
  661. package/src/lib/transform.ts +70 -35
  662. package/src/lib/webrtc/connection.ts +5 -1
  663. package/src/lib/webrtc/data-channel.ts +7 -0
  664. package/src/lib/webrtc/subscriptions.ts +3 -0
  665. package/src/lib/webrtc/types.ts +1 -0
  666. package/src/providers/bedrock/aws.ts +5 -1
  667. package/src/realtime/internal-base.ts +2 -0
  668. package/src/realtime/websocket.ts +11 -1
  669. package/src/realtime/ws.ts +3 -0
  670. package/src/resources/beta/agents/agents.ts +2 -0
  671. package/src/resources/beta/beta.ts +2 -0
  672. package/src/resources/beta/index.ts +1 -0
  673. package/src/resources/beta/responses/index.ts +1 -0
  674. package/src/resources/beta/responses/internal-base.ts +24 -6
  675. package/src/resources/beta/responses/responses.ts +58 -0
  676. package/src/resources/beta/responses/ws-base.ts +117 -26
  677. package/src/resources/beta/responses/ws.ts +23 -6
  678. package/src/resources/live/forks/internal-base.ts +24 -5
  679. package/src/resources/live/forks/ws-base.ts +110 -21
  680. package/src/resources/live/forks/ws.ts +2 -0
  681. package/src/resources/live/internal-base.ts +24 -5
  682. package/src/resources/live/sideband/internal-base.ts +24 -5
  683. package/src/resources/live/sideband/ws-base.ts +110 -21
  684. package/src/resources/live/sideband/ws.ts +2 -0
  685. package/src/resources/live/ws-base.ts +110 -21
  686. package/src/resources/live/ws.ts +2 -0
  687. package/src/resources/responses/api.md +1 -0
  688. package/src/resources/responses/internal-base.ts +24 -6
  689. package/src/resources/responses/responses.ts +41 -0
  690. package/src/resources/responses/ws-base.ts +117 -26
  691. package/src/resources/responses/ws.ts +23 -6
  692. package/src/version.ts +1 -1
  693. package/version.d.mts +1 -1
  694. package/version.d.ts +1 -1
  695. package/version.js +1 -1
  696. package/version.mjs +1 -1
@@ -6,6 +6,8 @@ import { sleep } from '../../internal/utils/sleep';
6
6
  import { type WebSocketLike, ReadyState } from '../../internal/ws-adapter';
7
7
  import {
8
8
  SendQueue,
9
+ getMaxBufferedEvents,
10
+ type WebSocketStreamOptions,
9
11
  flattenRawData,
10
12
  isRecoverableClose,
11
13
  type RawWebSocketData,
@@ -51,11 +53,11 @@ export interface LiveWSBaseOptions {
51
53
  reconnect?: LiveWSReconnectOptions | null | undefined;
52
54
 
53
55
  /**
54
- * Maximum size of the outgoing message queue in bytes.
55
- * Messages queued while the socket is connecting or reconnecting are held
56
- * in memory up to this limit. Once the limit is reached, new messages are
57
- * discarded and an `error` event is emitted.
58
- * Default: 1 MB
56
+ * Byte budget for outgoing messages queued while the socket is connecting
57
+ * or reconnecting. An empty queue accepts one message even if it exceeds
58
+ * this budget. Further messages are discarded and an `error` event is emitted
59
+ * if the total queued size would exceed the budget.
60
+ * Default: 1 MiB (1,048,576 bytes).
59
61
  */
60
62
  maxQueueSize?: number | undefined;
61
63
  }
@@ -165,6 +167,11 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
165
167
  * The iterator will exit if the socket closes but exiting the iterator
166
168
  * does not close the socket.
167
169
  *
170
+ * Pass `maxBufferedEvents` to limit queued records for this iterator, including
171
+ * lifecycle events. Overflow discards its backlog and rejects `next()` with a
172
+ * WebSocketError; the shared socket and other iterators remain active.
173
+ * Omitted means unlimited. This is an event-count limit, not a byte limit.
174
+ *
168
175
  * @example
169
176
  * ```ts
170
177
  * for await (const event of client.stream()) {
@@ -182,26 +189,59 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
182
189
  * }
183
190
  * ```
184
191
  */
185
- stream(): AsyncIterableIterator<LiveStreamMessage> {
186
- return this[Symbol.asyncIterator]();
192
+ stream(options?: WebSocketStreamOptions): AsyncIterableIterator<LiveStreamMessage> {
193
+ return options === undefined ? this[Symbol.asyncIterator]() : this[Symbol.asyncIterator](options);
187
194
  }
188
195
 
189
- [Symbol.asyncIterator](): AsyncIterableIterator<LiveStreamMessage> {
196
+ [Symbol.asyncIterator](options?: WebSocketStreamOptions): AsyncIterableIterator<LiveStreamMessage> {
190
197
  if (!this.socket) {
191
198
  throw new OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
192
199
  }
193
200
 
201
+ const maxBufferedEvents = getMaxBufferedEvents(options);
202
+
194
203
  // Two-queue async iterator: `queue` buffers incoming messages,
195
204
  // `resolvers` buffers waiting next() calls. A push wakes the
196
205
  // oldest next(); a next() drains the oldest message.
197
- const queue: LiveStreamMessage[] = [];
198
- const resolvers: (() => void)[] = [];
206
+ const queue: (LiveStreamMessage | undefined)[] = [];
207
+ const resolvers: ((() => void) | undefined)[] = [];
208
+ let queueHead = 0;
209
+ let resolverHead = 0;
199
210
  let done = false;
211
+ let failure: WebSocketError | undefined;
200
212
  let currentSocket = this.socket;
201
213
 
214
+ const wakeResolver = () => {
215
+ if (resolverHead >= resolvers.length) return;
216
+
217
+ const resolver = resolvers[resolverHead];
218
+ resolvers[resolverHead] = undefined;
219
+ resolverHead += 1;
220
+ if (resolverHead >= 64 && resolverHead * 2 >= resolvers.length) {
221
+ resolvers.splice(0, resolverHead);
222
+ resolverHead = 0;
223
+ }
224
+ resolver?.();
225
+ };
226
+
202
227
  const push = (msg: LiveStreamMessage) => {
228
+ if (done) return;
229
+
230
+ if (maxBufferedEvents !== undefined && queue.length - queueHead >= maxBufferedEvents) {
231
+ failure = new WebSocketError(
232
+ `WebSocket stream exceeded maxBufferedEvents (${maxBufferedEvents})`,
233
+ null,
234
+ );
235
+ done = true;
236
+ queue.length = 0;
237
+ queueHead = 0;
238
+ cleanup();
239
+ flushResolvers();
240
+ return;
241
+ }
242
+
203
243
  queue.push(msg);
204
- resolvers.shift()?.();
244
+ wakeResolver();
205
245
  };
206
246
 
207
247
  const onEvent = (event: LiveAPI.ServerEvent) => {
@@ -231,9 +271,14 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
231
271
  };
232
272
 
233
273
  const flushResolvers = () => {
234
- for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
235
- resolver();
274
+ while (resolverHead < resolvers.length) {
275
+ const resolver = resolvers[resolverHead];
276
+ resolvers[resolverHead] = undefined;
277
+ resolverHead += 1;
278
+ resolver?.();
236
279
  }
280
+ resolvers.length = 0;
281
+ resolverHead = 0;
237
282
  };
238
283
 
239
284
  const onClose = (code: number, reason: string, unsent: UnsentMessage<LiveAPI.ClientEvent>[]) => {
@@ -243,8 +288,9 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
243
288
  cleanup();
244
289
  };
245
290
 
246
- const onSocketSwap = (oldSocket: TSocket, newSocket: TSocket) => {
247
- oldSocket.off('open', onOpen);
291
+ const onSocketSwap = (_oldSocket: TSocket, newSocket: TSocket) => {
292
+ if (currentSocket === newSocket) return;
293
+ currentSocket.off('open', onOpen);
248
294
  newSocket.on('open', onOpen);
249
295
  currentSocket = newSocket;
250
296
  };
@@ -301,9 +347,21 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
301
347
  }
302
348
  }
303
349
 
304
- const resolve = (res: (value: IteratorResult<LiveStreamMessage>) => void) => {
305
- if (queue.length > 0) {
306
- res({ value: queue.shift()!, done: false });
350
+ const resolve = (
351
+ res: (value: IteratorResult<LiveStreamMessage>) => void,
352
+ reject: (error: WebSocketError) => void,
353
+ ) => {
354
+ if (failure) {
355
+ reject(failure);
356
+ } else if (queueHead < queue.length) {
357
+ const queued = queue[queueHead]!;
358
+ queue[queueHead] = undefined;
359
+ queueHead += 1;
360
+ if (queueHead >= 64 && queueHead * 2 >= queue.length) {
361
+ queue.splice(0, queueHead);
362
+ queueHead = 0;
363
+ }
364
+ res({ value: queued, done: false });
307
365
  } else if (done) {
308
366
  res({ value: undefined, done: true });
309
367
  } else {
@@ -313,10 +371,10 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
313
371
  };
314
372
 
315
373
  const next = (): Promise<IteratorResult<LiveStreamMessage>> =>
316
- new Promise((res) => {
317
- if (resolve(res)) return;
374
+ new Promise((res, reject) => {
375
+ if (resolve(res, reject)) return;
318
376
  resolvers.push(() => {
319
- resolve(res);
377
+ resolve(res, reject);
320
378
  });
321
379
  });
322
380
 
@@ -324,6 +382,8 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
324
382
  next,
325
383
  return: (): Promise<IteratorReturnResult<undefined>> => {
326
384
  done = true;
385
+ queue.length = 0;
386
+ queueHead = 0;
327
387
  cleanup();
328
388
  flushResolvers();
329
389
  return Promise.resolve({ value: undefined, done: true });
@@ -356,6 +416,35 @@ export abstract class LiveWSBase<TSocket extends WebSocketLike> extends LiveEmit
356
416
  return;
357
417
  }
358
418
 
419
+ if (
420
+ event === null ||
421
+ typeof event !== 'object' ||
422
+ Array.isArray(event) ||
423
+ !Object.prototype.hasOwnProperty.call(event, 'type') ||
424
+ typeof event.type !== 'string'
425
+ ) {
426
+ this._onError(
427
+ null,
428
+ 'received invalid WebSocket event: expected an object with an own string type',
429
+ undefined,
430
+ );
431
+ return;
432
+ }
433
+
434
+ const eventType: string = event.type;
435
+ const reservedEventType =
436
+ eventType === 'raw' ||
437
+ eventType === 'close' ||
438
+ eventType === 'event' ||
439
+ eventType === 'reconnecting' ||
440
+ eventType === 'reconnected' ||
441
+ eventType === 'open' ||
442
+ eventType === 'error';
443
+ if (reservedEventType && eventType !== 'error') {
444
+ this._onError(null, 'received reserved WebSocket event type', undefined);
445
+ return;
446
+ }
447
+
359
448
  this._emit('event', event);
360
449
 
361
450
  if (event.type === 'error') {
@@ -6,6 +6,8 @@ import { LiveWSBase, type LiveWSBaseOptions } from './ws-base';
6
6
  import { OpenAI } from '../../client';
7
7
  import { VERSION } from '../../version';
8
8
 
9
+ export type { WebSocketStreamOptions } from '../../internal/ws';
10
+
9
11
  export type { LiveWSReconnectOptions } from './ws-base';
10
12
 
11
13
  export interface LiveWSClientOptions extends WS.ClientOptions, LiveWSBaseOptions {}
@@ -38,6 +38,7 @@ Types:
38
38
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterCallInProgressEvent</a></code>
39
39
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterCallInterpretingEvent</a></code>
40
40
  - <code><a href="./src/resources/responses/responses.ts">ResponseCodeInterpreterToolCall</a></code>
41
+ - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionCompactingEvent</a></code>
41
42
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionItem</a></code>
42
43
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompactionItemParam</a></code>
43
44
  - <code><a href="./src/resources/responses/responses.ts">ResponseCompletedEvent</a></code>
@@ -27,13 +27,21 @@ type WebSocketErrorEvent = Extract<ResponsesAPI.ResponsesServerEvent, { type: 'e
27
27
  export class WebSocketError extends OpenAIError {
28
28
  /**
29
29
  * The error data that the API sent back in an error event.
30
+ *
31
+ * This property is non-enumerable to avoid exposing the event through
32
+ * JSON serialization, object spread, or Object.assign.
30
33
  */
31
34
  error?: WebSocketErrorEvent | undefined;
32
35
 
33
36
  constructor(message: string, event: WebSocketErrorEvent | null) {
34
37
  super(message);
35
38
 
36
- this.error = event ?? undefined;
39
+ Object.defineProperty(this, 'error', {
40
+ value: event ?? undefined,
41
+ writable: true,
42
+ configurable: true,
43
+ enumerable: false,
44
+ });
37
45
  }
38
46
  }
39
47
 
@@ -73,8 +81,8 @@ export abstract class ResponsesEmitter extends EventEmitter<WebSocketEvents> {
73
81
  protected _onError(event: null, message: string, cause: any): void;
74
82
  protected _onError(event: WebSocketErrorEvent, message?: string | undefined): void;
75
83
  protected _onError(event: WebSocketErrorEvent | null, message?: string | undefined, cause?: any): void {
76
- const eventMessage = event && ('error' in event ? event.error?.message : event.message);
77
- message = message ?? eventMessage ?? safeJSONStringify(event) ?? 'unknown error';
84
+ const safeMessage = safeWebSocketErrorMessage(event, message);
85
+ message = safeMessage ?? 'unknown error';
78
86
 
79
87
  if (!this._hasListener('error')) {
80
88
  const error = new WebSocketError(
@@ -105,10 +113,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
105
113
  return url;
106
114
  }
107
115
 
108
- function safeJSONStringify(value: unknown): string | null {
116
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
117
+ if (typeof message === 'string') return message;
118
+ if (typeof event !== 'object' || event === null) return undefined;
119
+
109
120
  try {
110
- return JSON.stringify(value);
121
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
122
+ const nestedMessage =
123
+ typeof error === 'object' && error !== null
124
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
125
+ : undefined;
126
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
127
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
128
+ return typeof candidate === 'string' ? candidate : undefined;
111
129
  } catch {
112
- return null;
130
+ return undefined;
113
131
  }
114
132
  }
@@ -2026,6 +2026,32 @@ export namespace ResponseCodeInterpreterToolCall {
2026
2026
  }
2027
2027
  }
2028
2028
 
2029
+ /**
2030
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
2031
+ * no summary content.
2032
+ */
2033
+ export interface ResponseCompactionCompactingEvent {
2034
+ /**
2035
+ * The ID of the compaction output item.
2036
+ */
2037
+ item_id: string;
2038
+
2039
+ /**
2040
+ * The index of the compaction output item.
2041
+ */
2042
+ output_index: number;
2043
+
2044
+ /**
2045
+ * The sequence number of the event that was emitted.
2046
+ */
2047
+ sequence_number: number;
2048
+
2049
+ /**
2050
+ * The type of the event, always `response.compaction.compacting`.
2051
+ */
2052
+ type: 'response.compaction.compacting';
2053
+ }
2054
+
2029
2055
  /**
2030
2056
  * A compaction item generated by the
2031
2057
  * [`v1/responses/compact` API](https://developers.openai.com/api/reference/resources/responses/methods/compact).
@@ -8136,6 +8162,7 @@ export type ResponseStreamEvent =
8136
8162
  | ResponseCodeInterpreterCallCompletedEvent
8137
8163
  | ResponseCodeInterpreterCallInProgressEvent
8138
8164
  | ResponseCodeInterpreterCallInterpretingEvent
8165
+ | ResponseCompactionCompactingEvent
8139
8166
  | ResponseCompletedEvent
8140
8167
  | ResponseContentPartAddedEvent
8141
8168
  | ResponseContentPartDoneEvent
@@ -9128,6 +9155,7 @@ export type ResponsesServerEvent =
9128
9155
  | ResponsesServerEvent.ResponseCodeInterpreterCallWsCompleted
9129
9156
  | ResponsesServerEvent.ResponseCodeInterpreterCallInWsProgress
9130
9157
  | ResponsesServerEvent.ResponseCodeInterpreterCallWsInterpreting
9158
+ | ResponsesServerEvent.ResponseCompactionWsCompacting
9131
9159
  | ResponsesServerEvent.ResponseWsCompleted
9132
9160
  | ResponsesServerEvent.ResponseContentPartWsAdded
9133
9161
  | ResponsesServerEvent.ResponseContentPartWsDone
@@ -9282,6 +9310,18 @@ export namespace ResponsesServerEvent {
9282
9310
  stream_id?: string;
9283
9311
  }
9284
9312
 
9313
+ /**
9314
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
9315
+ * no summary content.
9316
+ */
9317
+ export interface ResponseCompactionWsCompacting extends ResponseCompactionCompactingEvent {
9318
+ /**
9319
+ * The WebSocket lane that emitted this event. This field is present when the
9320
+ * originating `response.create` event supplied a `stream_id`.
9321
+ */
9322
+ stream_id?: string;
9323
+ }
9324
+
9285
9325
  /**
9286
9326
  * Emitted when the model response is complete.
9287
9327
  */
@@ -11468,6 +11508,7 @@ export declare namespace Responses {
11468
11508
  type ResponseCodeInterpreterCallInProgressEvent as ResponseCodeInterpreterCallInProgressEvent,
11469
11509
  type ResponseCodeInterpreterCallInterpretingEvent as ResponseCodeInterpreterCallInterpretingEvent,
11470
11510
  type ResponseCodeInterpreterToolCall as ResponseCodeInterpreterToolCall,
11511
+ type ResponseCompactionCompactingEvent as ResponseCompactionCompactingEvent,
11471
11512
  type ResponseCompactionItem as ResponseCompactionItem,
11472
11513
  type ResponseCompactionItemParam as ResponseCompactionItemParam,
11473
11514
  type ResponseCompletedEvent as ResponseCompletedEvent,
@@ -6,6 +6,8 @@ import { sleep } from '../../internal/utils/sleep';
6
6
  import { type WebSocketLike, ReadyState } from '../../internal/ws-adapter';
7
7
  import {
8
8
  SendQueue,
9
+ getMaxBufferedEvents,
10
+ type WebSocketStreamOptions,
9
11
  flattenRawData,
10
12
  isRecoverableClose,
11
13
  type RawWebSocketData,
@@ -51,11 +53,11 @@ export interface ResponsesWSBaseOptions {
51
53
  reconnect?: ResponsesWSReconnectOptions | null | undefined;
52
54
 
53
55
  /**
54
- * Maximum size of the outgoing message queue in bytes.
55
- * Messages queued while the socket is connecting or reconnecting are held
56
- * in memory up to this limit. Once the limit is reached, new messages are
57
- * discarded and an `error` event is emitted.
58
- * Default: 1 MB
56
+ * Byte budget for outgoing messages queued while the socket is connecting
57
+ * or reconnecting. An empty queue accepts one message even if it exceeds
58
+ * this budget. Further messages are discarded and an `error` event is emitted
59
+ * if the total queued size would exceed the budget.
60
+ * Default: 1 MiB (1,048,576 bytes).
59
61
  */
60
62
  maxQueueSize?: number | undefined;
61
63
  }
@@ -97,7 +99,11 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
97
99
  this.socket = this._connect();
98
100
  }
99
101
 
100
- /** Creates a platform-specific WebSocket for the given URL and auth headers. */
102
+ /**
103
+ * Creates a platform-specific WebSocket for the given URL and captured client auth headers.
104
+ * The transport must supply or validate its final credentials before connecting;
105
+ * these headers may be empty when authentication is managed by the transport.
106
+ */
101
107
  protected abstract _createSocket(url: URL, authHeaders: Record<string, string>): TSocket;
102
108
 
103
109
  send(event: ResponsesAPI.ResponsesClientEvent) {
@@ -165,6 +171,11 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
165
171
  * The iterator will exit if the socket closes but exiting the iterator
166
172
  * does not close the socket.
167
173
  *
174
+ * Pass `maxBufferedEvents` to limit queued records for this iterator, including
175
+ * lifecycle events. Overflow discards its backlog and rejects `next()` with a
176
+ * WebSocketError; the shared socket and other iterators remain active.
177
+ * Omitted means unlimited. This is an event-count limit, not a byte limit.
178
+ *
168
179
  * @example
169
180
  * ```ts
170
181
  * for await (const event of client.stream()) {
@@ -182,26 +193,59 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
182
193
  * }
183
194
  * ```
184
195
  */
185
- stream(): AsyncIterableIterator<ResponsesStreamMessage> {
186
- return this[Symbol.asyncIterator]();
196
+ stream(options?: WebSocketStreamOptions): AsyncIterableIterator<ResponsesStreamMessage> {
197
+ return options === undefined ? this[Symbol.asyncIterator]() : this[Symbol.asyncIterator](options);
187
198
  }
188
199
 
189
- [Symbol.asyncIterator](): AsyncIterableIterator<ResponsesStreamMessage> {
200
+ [Symbol.asyncIterator](options?: WebSocketStreamOptions): AsyncIterableIterator<ResponsesStreamMessage> {
190
201
  if (!this.socket) {
191
202
  throw new OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
192
203
  }
193
204
 
205
+ const maxBufferedEvents = getMaxBufferedEvents(options);
206
+
194
207
  // Two-queue async iterator: `queue` buffers incoming messages,
195
208
  // `resolvers` buffers waiting next() calls. A push wakes the
196
209
  // oldest next(); a next() drains the oldest message.
197
- const queue: ResponsesStreamMessage[] = [];
198
- const resolvers: (() => void)[] = [];
210
+ const queue: (ResponsesStreamMessage | undefined)[] = [];
211
+ const resolvers: ((() => void) | undefined)[] = [];
212
+ let queueHead = 0;
213
+ let resolverHead = 0;
199
214
  let done = false;
215
+ let failure: WebSocketError | undefined;
200
216
  let currentSocket = this.socket;
201
217
 
218
+ const wakeResolver = () => {
219
+ if (resolverHead >= resolvers.length) return;
220
+
221
+ const resolver = resolvers[resolverHead];
222
+ resolvers[resolverHead] = undefined;
223
+ resolverHead += 1;
224
+ if (resolverHead >= 64 && resolverHead * 2 >= resolvers.length) {
225
+ resolvers.splice(0, resolverHead);
226
+ resolverHead = 0;
227
+ }
228
+ resolver?.();
229
+ };
230
+
202
231
  const push = (msg: ResponsesStreamMessage) => {
232
+ if (done) return;
233
+
234
+ if (maxBufferedEvents !== undefined && queue.length - queueHead >= maxBufferedEvents) {
235
+ failure = new WebSocketError(
236
+ `WebSocket stream exceeded maxBufferedEvents (${maxBufferedEvents})`,
237
+ null,
238
+ );
239
+ done = true;
240
+ queue.length = 0;
241
+ queueHead = 0;
242
+ cleanup();
243
+ flushResolvers();
244
+ return;
245
+ }
246
+
203
247
  queue.push(msg);
204
- resolvers.shift()?.();
248
+ wakeResolver();
205
249
  };
206
250
 
207
251
  const onEvent = (event: ResponsesAPI.ResponsesServerEvent) => {
@@ -231,9 +275,14 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
231
275
  };
232
276
 
233
277
  const flushResolvers = () => {
234
- for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
235
- resolver();
278
+ while (resolverHead < resolvers.length) {
279
+ const resolver = resolvers[resolverHead];
280
+ resolvers[resolverHead] = undefined;
281
+ resolverHead += 1;
282
+ resolver?.();
236
283
  }
284
+ resolvers.length = 0;
285
+ resolverHead = 0;
237
286
  };
238
287
 
239
288
  const onClose = (
@@ -247,8 +296,9 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
247
296
  cleanup();
248
297
  };
249
298
 
250
- const onSocketSwap = (oldSocket: TSocket, newSocket: TSocket) => {
251
- oldSocket.off('open', onOpen);
299
+ const onSocketSwap = (_oldSocket: TSocket, newSocket: TSocket) => {
300
+ if (currentSocket === newSocket) return;
301
+ currentSocket.off('open', onOpen);
252
302
  newSocket.on('open', onOpen);
253
303
  currentSocket = newSocket;
254
304
  };
@@ -305,9 +355,21 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
305
355
  }
306
356
  }
307
357
 
308
- const resolve = (res: (value: IteratorResult<ResponsesStreamMessage>) => void) => {
309
- if (queue.length > 0) {
310
- res({ value: queue.shift()!, done: false });
358
+ const resolve = (
359
+ res: (value: IteratorResult<ResponsesStreamMessage>) => void,
360
+ reject: (error: WebSocketError) => void,
361
+ ) => {
362
+ if (failure) {
363
+ reject(failure);
364
+ } else if (queueHead < queue.length) {
365
+ const queued = queue[queueHead]!;
366
+ queue[queueHead] = undefined;
367
+ queueHead += 1;
368
+ if (queueHead >= 64 && queueHead * 2 >= queue.length) {
369
+ queue.splice(0, queueHead);
370
+ queueHead = 0;
371
+ }
372
+ res({ value: queued, done: false });
311
373
  } else if (done) {
312
374
  res({ value: undefined, done: true });
313
375
  } else {
@@ -317,10 +379,10 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
317
379
  };
318
380
 
319
381
  const next = (): Promise<IteratorResult<ResponsesStreamMessage>> =>
320
- new Promise((res) => {
321
- if (resolve(res)) return;
382
+ new Promise((res, reject) => {
383
+ if (resolve(res, reject)) return;
322
384
  resolvers.push(() => {
323
- resolve(res);
385
+ resolve(res, reject);
324
386
  });
325
387
  });
326
388
 
@@ -328,6 +390,8 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
328
390
  next,
329
391
  return: (): Promise<IteratorReturnResult<undefined>> => {
330
392
  done = true;
393
+ queue.length = 0;
394
+ queueHead = 0;
331
395
  cleanup();
332
396
  flushResolvers();
333
397
  return Promise.resolve({ value: undefined, done: true });
@@ -360,6 +424,35 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
360
424
  return;
361
425
  }
362
426
 
427
+ if (
428
+ event === null ||
429
+ typeof event !== 'object' ||
430
+ Array.isArray(event) ||
431
+ !Object.prototype.hasOwnProperty.call(event, 'type') ||
432
+ typeof event.type !== 'string'
433
+ ) {
434
+ this._onError(
435
+ null,
436
+ 'received invalid WebSocket event: expected an object with an own string type',
437
+ undefined,
438
+ );
439
+ return;
440
+ }
441
+
442
+ const eventType: string = event.type;
443
+ const reservedEventType =
444
+ eventType === 'raw' ||
445
+ eventType === 'close' ||
446
+ eventType === 'event' ||
447
+ eventType === 'reconnecting' ||
448
+ eventType === 'reconnected' ||
449
+ eventType === 'open' ||
450
+ eventType === 'error';
451
+ if (reservedEventType && eventType !== 'error') {
452
+ this._onError(null, 'received reserved WebSocket event type', undefined);
453
+ return;
454
+ }
455
+
363
456
  this._emit('event', event);
364
457
 
365
458
  if (event.type === 'error') {
@@ -603,9 +696,7 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
603
696
  }
604
697
 
605
698
  protected _authHeaders(): Record<string, string> {
606
- if (this._client.apiKey) {
607
- return { Authorization: `Bearer ${this._client.apiKey}` };
608
- }
609
- return {};
699
+ const apiKey = this._client.apiKey;
700
+ return typeof apiKey === 'string' && apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
610
701
  }
611
702
  }
@@ -5,10 +5,17 @@ import { NodeWebSocket } from '../../internal/ws-adapter-node';
5
5
  import { ResponsesWSBase, type ResponsesWSBaseOptions } from './ws-base';
6
6
  import { OpenAI } from '../../client';
7
7
  import { VERSION } from '../../version';
8
+ import { OpenAIError } from '../../core/error';
9
+ import { snapshotWebSocketCredentials } from '../../internal/ws';
10
+
11
+ export type { WebSocketStreamOptions } from '../../internal/ws';
8
12
 
9
13
  export type { ResponsesWSReconnectOptions } from './ws-base';
10
14
 
11
- export interface ResponsesWSClientOptions extends WS.ClientOptions, ResponsesWSBaseOptions {}
15
+ export interface ResponsesWSClientOptions extends WS.ClientOptions, ResponsesWSBaseOptions {
16
+ /** Basic authentication forwarded by the Node `ws` transport. */
17
+ auth?: string;
18
+ }
12
19
 
13
20
  export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
14
21
  private _wsOptions: WS.ClientOptions | null | undefined;
@@ -19,7 +26,6 @@ export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
19
26
  'ResponsesWS from "openai/resources/responses/ws" requires the "ws" package but it could not be loaded.',
20
27
  );
21
28
  }
22
-
23
29
  const { reconnect, maxQueueSize, ...wsOptions } = options ?? {};
24
30
  super(client, { reconnect, maxQueueSize });
25
31
  this._wsOptions = wsOptions;
@@ -27,16 +33,27 @@ export class ResponsesWS extends ResponsesWSBase<NodeWebSocket> {
27
33
  }
28
34
 
29
35
  protected _createSocket(url: URL, authHeaders: Record<string, string>): NodeWebSocket {
30
- const ws = new WS.WebSocket(url, {
36
+ const capturedAuthHeaders = { ...authHeaders };
37
+ const socketOptions: ResponsesWSClientOptions = {
31
38
  ...this._wsOptions,
32
39
  headers: {
33
40
  'User-Agent': `${this._client.constructor.name}/JS ${VERSION}`,
34
-
35
- ...authHeaders,
41
+ ...capturedAuthHeaders,
36
42
  ...this._wsOptions?.headers,
37
43
  },
38
44
  followRedirects: false,
39
- });
45
+ };
46
+ if (
47
+ this._client._hasApiKeyProvider() &&
48
+ !capturedAuthHeaders['Authorization'] &&
49
+ !snapshotWebSocketCredentials(socketOptions)
50
+ ) {
51
+ throw new OpenAIError(
52
+ 'Cannot open a Responses WebSocket with an unresolved function-based apiKey. Resolve it before constructing the WebSocket or provide explicit WebSocket credentials.',
53
+ );
54
+ }
55
+
56
+ const ws = new WS.WebSocket(url, socketOptions);
40
57
  return new NodeWebSocket(ws);
41
58
  }
42
59
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** Version of the installed OpenAI SDK package. */
2
- export const VERSION = '7.15.0'; // x-release-please-version
2
+ export const VERSION = '7.17.0'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Version of the installed OpenAI SDK package. */
2
- export declare const VERSION = "7.15.0";
2
+ export declare const VERSION = "7.17.0";
3
3
  //# sourceMappingURL=version.d.mts.map