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
@@ -96,11 +96,12 @@ function validateStaticCredentials(options: BedrockProviderOptions): AwsCredenti
96
96
  return {
97
97
  accessKeyId: options.accessKeyId,
98
98
  secretAccessKey: options.secretAccessKey,
99
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
99
100
  ...(options.sessionToken ? { sessionToken: options.sessionToken } : {}),
100
101
  };
101
102
  }
102
103
 
103
- function requestTarget(parsedURL: URL): { path: string; query: Record<string, string | string[]> } {
104
+ function requestTarget(parsedURL: URL) {
104
105
  const query: Record<string, string | string[]> = Object.create(null);
105
106
  for (const [name, value] of parsedURL.searchParams) {
106
107
  if (name === '__proto__') {
@@ -195,6 +196,7 @@ class BedrockSigV4Auth implements BedrockRequestAuth {
195
196
  }
196
197
 
197
198
  async prepareRequest(request: FinalizedRequestInit, context: ProviderRequestContext): Promise<void> {
199
+ // SAFETY: process is optional outside Node; the native process tag is checked before using Node-specific signing and credential behavior.
198
200
  if (Object.prototype.toString.call((globalThis as any).process) !== '[object process]') {
199
201
  throw new Errors.OpenAIError(
200
202
  'Bedrock AWS credential authentication is only supported in Node.js and compatible server runtimes. Use bearer authentication in this runtime.',
@@ -230,10 +232,12 @@ class BedrockSigV4Auth implements BedrockRequestAuth {
230
232
  this.signatureV4().sign({
231
233
  protocol: parsedURL.protocol,
232
234
  hostname: parsedURL.hostname,
235
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
233
236
  ...(parsedURL.port ? { port: Number(parsedURL.port) } : {}),
234
237
  method,
235
238
  ...target,
236
239
  headers: Object.fromEntries(headers.entries()),
240
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
237
241
  ...(body === undefined ? {} : { body }),
238
242
  }),
239
243
  failureMessage: this.options.usesDefaultChain
@@ -13,6 +13,7 @@ import { assertX509WebSocketSupported } from '../internal/auth/x509-workload-ide
13
13
  /** Parses frame data without exposing malformed payloads through JSON syntax errors. */
14
14
  export function parseRealtimeEvent(data: string): RealtimeServerEvent {
15
15
  try {
16
+ // SAFETY: RealtimeServerEvent is the API wire contract; JSON syntax is checked here while future event types remain accepted at runtime.
16
17
  return JSON.parse(data) as RealtimeServerEvent;
17
18
  } catch (error) {
18
19
  if (error instanceof SyntaxError) {
@@ -87,6 +88,7 @@ type RealtimeEvents = Simplify<
87
88
  type: EventType;
88
89
  }
89
90
  >,
91
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Preserve the published event-callback contract, which accepts and ignores arbitrary return values.
90
92
  ) => unknown;
91
93
  }
92
94
  >;
@@ -43,6 +43,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
43
43
  return true;
44
44
  }
45
45
 
46
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
46
47
  const scope = globalThis as RuntimeScope;
47
48
  return (
48
49
  typeof scope.WorkerGlobalScope === 'function' &&
@@ -61,6 +62,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
61
62
 
62
63
  /** Reports whether the runtime supports request headers in native WebSocket options. */
63
64
  function supportsWebSocketRequestHeaders(): boolean {
65
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
64
66
  const scope = globalThis as RuntimeScope;
65
67
  if (
66
68
  isRunningInBrowserOrBrowserWorker() ||
@@ -183,7 +185,9 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
183
185
  ) {
184
186
  super();
185
187
  let apiKey = getRealtimeAPIKey(client, props.__apiKey);
188
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
186
189
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
190
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
187
191
  const dangerouslyAllowBrowser =
188
192
  props.dangerouslyAllowBrowser ??
189
193
  (client as any)?._options?.dangerouslyAllowBrowser ??
@@ -257,7 +261,12 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
257
261
  });
258
262
 
259
263
  this.socket.addEventListener('error', (event: any) => {
260
- this._onError(null, event.message, null);
264
+ // Native ErrorEvents can carry an empty message while `error` still holds the failure.
265
+ const cause = event.error ?? null;
266
+ const message = [event.message, cause?.message].find(
267
+ (value) => typeof value === 'string' && value !== '',
268
+ );
269
+ this._onError(null, message ?? 'unknown error', cause);
261
270
  });
262
271
  }
263
272
 
@@ -317,6 +326,7 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
317
326
  return new OpenAIRealtimeWebSocket(
318
327
  {
319
328
  ...connection,
329
+ // Preserve explicit browser consent as an own data property without invoking an inherited setter.
320
330
  ...(dangerouslyAllowBrowser === undefined ? {} : { dangerouslyAllowBrowser }),
321
331
  __resolvedApiKey: isApiKeyProvider,
322
332
  __apiKey: apiKey,
@@ -55,6 +55,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
55
55
  super();
56
56
  client ??= new OpenAI();
57
57
  const apiKey = props.__apiKey === undefined ? client.apiKey : props.__apiKey;
58
+ // SAFETY: The supplied OpenAI client owns _options; this read detects its existing API-key provider without changing its public surface.
58
59
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
59
60
  if (hasProvider && !props.__resolvedApiKey) {
60
61
  throw new Error(
@@ -69,6 +70,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
69
70
  const headers = {
70
71
  'User-Agent': `${client.constructor.name}/JS ${VERSION}`,
71
72
  ...props.options?.headers,
73
+ // A credential must be an own data property without invoking an inherited setter.
72
74
  ...(isAzure(client) && !props.__resolvedApiKey ? {} : { Authorization: `Bearer ${apiKey}` }),
73
75
  };
74
76
 
@@ -178,6 +180,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
178
180
  ...props.options,
179
181
  headers: {
180
182
  ...props.options?.headers,
183
+ // A credential must be an own data property without invoking an inherited setter.
181
184
  ...(isApiKeyProvider ? {} : { 'api-key': apiKey }),
182
185
  },
183
186
  },
@@ -4048,6 +4048,7 @@ export interface SessionTurnError {
4048
4048
  * - `session_budget_exceeded` - The session has reached its usage budget.
4049
4049
  * - `usage_limit_exceeded` - The organization has reached a usage, plan, or
4050
4050
  * billing limit.
4051
+ * - `credit_balance_exhausted` - The organization has no API credits remaining.
4051
4052
  * - `rate_limit_exceeded` - The request exceeds the available rate limit.
4052
4053
  * - `server_overloaded` - The model service is temporarily overloaded.
4053
4054
  * - `cyber_policy` - The request was rejected by a safety policy.
@@ -4070,6 +4071,7 @@ export interface SessionTurnError {
4070
4071
  | 'context_length_exceeded'
4071
4072
  | 'session_budget_exceeded'
4072
4073
  | 'usage_limit_exceeded'
4074
+ | 'credit_balance_exhausted'
4073
4075
  | 'rate_limit_exceeded'
4074
4076
  | 'server_overloaded'
4075
4077
  | 'cyber_policy'
@@ -217,6 +217,7 @@ import {
217
217
  BetaResponseCodeInterpreterCallInProgressEvent,
218
218
  BetaResponseCodeInterpreterCallInterpretingEvent,
219
219
  BetaResponseCodeInterpreterToolCall,
220
+ BetaResponseCompactionCompactingEvent,
220
221
  BetaResponseCompactionItem,
221
222
  BetaResponseCompactionItemParam,
222
223
  BetaResponseCompletedEvent,
@@ -588,6 +589,7 @@ export declare namespace Beta {
588
589
  type BetaResponseCodeInterpreterCallInProgressEvent as BetaResponseCodeInterpreterCallInProgressEvent,
589
590
  type BetaResponseCodeInterpreterCallInterpretingEvent as BetaResponseCodeInterpreterCallInterpretingEvent,
590
591
  type BetaResponseCodeInterpreterToolCall as BetaResponseCodeInterpreterToolCall,
592
+ type BetaResponseCompactionCompactingEvent as BetaResponseCompactionCompactingEvent,
591
593
  type BetaResponseCompactionItem as BetaResponseCompactionItem,
592
594
  type BetaResponseCompactionItemParam as BetaResponseCompactionItemParam,
593
595
  type BetaResponseCompletedEvent as BetaResponseCompletedEvent,
@@ -165,6 +165,7 @@ export {
165
165
  type BetaResponseCodeInterpreterCallInProgressEvent,
166
166
  type BetaResponseCodeInterpreterCallInterpretingEvent,
167
167
  type BetaResponseCodeInterpreterToolCall,
168
+ type BetaResponseCompactionCompactingEvent,
168
169
  type BetaResponseCompactionItem,
169
170
  type BetaResponseCompactionItemParam,
170
171
  type BetaResponseCompletedEvent,
@@ -40,6 +40,7 @@ export {
40
40
  type BetaResponseCodeInterpreterCallInProgressEvent,
41
41
  type BetaResponseCodeInterpreterCallInterpretingEvent,
42
42
  type BetaResponseCodeInterpreterToolCall,
43
+ type BetaResponseCompactionCompactingEvent,
43
44
  type BetaResponseCompactionItem,
44
45
  type BetaResponseCompactionItemParam,
45
46
  type BetaResponseCompletedEvent,
@@ -27,13 +27,21 @@ type WebSocketErrorEvent = Extract<ResponsesAPI.BetaResponsesServerEvent, { type
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
 
@@ -77,8 +85,8 @@ export abstract class ResponsesEmitter extends EventEmitter<WebSocketEvents> {
77
85
  protected _onError(event: null, message: string, cause: any): void;
78
86
  protected _onError(event: WebSocketErrorEvent, message?: string | undefined): void;
79
87
  protected _onError(event: WebSocketErrorEvent | null, message?: string | undefined, cause?: any): void {
80
- const eventMessage = event && ('error' in event ? event.error?.message : event.message);
81
- message = message ?? eventMessage ?? safeJSONStringify(event) ?? 'unknown error';
88
+ const safeMessage = safeWebSocketErrorMessage(event, message);
89
+ message = safeMessage ?? 'unknown error';
82
90
 
83
91
  if (!this._hasListener('error')) {
84
92
  const error = new WebSocketError(
@@ -109,10 +117,20 @@ export function buildURL(client: OpenAI, parameters: Record<string, unknown>): U
109
117
  return url;
110
118
  }
111
119
 
112
- function safeJSONStringify(value: unknown): string | null {
120
+ function safeWebSocketErrorMessage(event: unknown, message: unknown): string | undefined {
121
+ if (typeof message === 'string') return message;
122
+ if (typeof event !== 'object' || event === null) return undefined;
123
+
113
124
  try {
114
- return JSON.stringify(value);
125
+ const error = Object.getOwnPropertyDescriptor(event, 'error')?.value;
126
+ const nestedMessage =
127
+ typeof error === 'object' && error !== null
128
+ ? Object.getOwnPropertyDescriptor(error, 'message')?.value
129
+ : undefined;
130
+ const eventMessage = Object.getOwnPropertyDescriptor(event, 'message')?.value;
131
+ const candidate = typeof nestedMessage === 'string' ? nestedMessage : eventMessage;
132
+ return typeof candidate === 'string' ? candidate : undefined;
115
133
  } catch {
116
- return null;
134
+ return undefined;
117
135
  }
118
136
  }
@@ -2443,6 +2443,49 @@ export namespace BetaResponseCodeInterpreterToolCall {
2443
2443
  }
2444
2444
  }
2445
2445
 
2446
+ /**
2447
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
2448
+ * no summary content.
2449
+ */
2450
+ export interface BetaResponseCompactionCompactingEvent {
2451
+ /**
2452
+ * The ID of the compaction output item.
2453
+ */
2454
+ item_id: string;
2455
+
2456
+ /**
2457
+ * The index of the compaction output item.
2458
+ */
2459
+ output_index: number;
2460
+
2461
+ /**
2462
+ * The sequence number of the event that was emitted.
2463
+ */
2464
+ sequence_number: number;
2465
+
2466
+ /**
2467
+ * The type of the event, always `response.compaction.compacting`.
2468
+ */
2469
+ type: 'response.compaction.compacting';
2470
+
2471
+ /**
2472
+ * The agent that owns this multi-agent streaming event.
2473
+ */
2474
+ agent?: BetaResponseCompactionCompactingEvent.Agent;
2475
+ }
2476
+
2477
+ export namespace BetaResponseCompactionCompactingEvent {
2478
+ /**
2479
+ * The agent that owns this multi-agent streaming event.
2480
+ */
2481
+ export interface Agent {
2482
+ /**
2483
+ * The canonical name of the agent that produced this item.
2484
+ */
2485
+ agent_name: string;
2486
+ }
2487
+ }
2488
+
2446
2489
  /**
2447
2490
  * A compaction item generated by the
2448
2491
  * [`v1/responses/compact` API](https://developers.openai.com/api/reference/resources/responses/methods/compact).
@@ -10942,6 +10985,7 @@ export type BetaResponseStreamEvent =
10942
10985
  | BetaResponseCodeInterpreterCallCompletedEvent
10943
10986
  | BetaResponseCodeInterpreterCallInProgressEvent
10944
10987
  | BetaResponseCodeInterpreterCallInterpretingEvent
10988
+ | BetaResponseCompactionCompactingEvent
10945
10989
  | BetaResponseCompletedEvent
10946
10990
  | BetaResponseContentPartAddedEvent
10947
10991
  | BetaResponseContentPartDoneEvent
@@ -12231,6 +12275,7 @@ export type BetaResponsesServerEvent =
12231
12275
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallWsCompleted
12232
12276
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallInWsProgress
12233
12277
  | BetaResponsesServerEvent.BetaResponseCodeInterpreterCallWsInterpreting
12278
+ | BetaResponsesServerEvent.BetaResponseCompactionWsCompacting
12234
12279
  | BetaResponsesServerEvent.BetaResponseWsCompleted
12235
12280
  | BetaResponsesServerEvent.BetaResponseContentPartWsAdded
12236
12281
  | BetaResponsesServerEvent.BetaResponseContentPartWsDone
@@ -12387,6 +12432,18 @@ export namespace BetaResponsesServerEvent {
12387
12432
  stream_id?: string;
12388
12433
  }
12389
12434
 
12435
+ /**
12436
+ * Emitted when new summary content is sampled for a compaction trigger. Contains
12437
+ * no summary content.
12438
+ */
12439
+ export interface BetaResponseCompactionWsCompacting extends BetaResponseCompactionCompactingEvent {
12440
+ /**
12441
+ * The WebSocket lane that emitted this event. This field is present when the
12442
+ * originating `response.create` event supplied a `stream_id`.
12443
+ */
12444
+ stream_id?: string;
12445
+ }
12446
+
12390
12447
  /**
12391
12448
  * Emitted when the model response is complete.
12392
12449
  */
@@ -14820,6 +14877,7 @@ export declare namespace Responses {
14820
14877
  type BetaResponseCodeInterpreterCallInProgressEvent as BetaResponseCodeInterpreterCallInProgressEvent,
14821
14878
  type BetaResponseCodeInterpreterCallInterpretingEvent as BetaResponseCodeInterpreterCallInterpretingEvent,
14822
14879
  type BetaResponseCodeInterpreterToolCall as BetaResponseCodeInterpreterToolCall,
14880
+ type BetaResponseCompactionCompactingEvent as BetaResponseCompactionCompactingEvent,
14823
14881
  type BetaResponseCompactionItem as BetaResponseCompactionItem,
14824
14882
  type BetaResponseCompactionItemParam as BetaResponseCompactionItemParam,
14825
14883
  type BetaResponseCompletedEvent as BetaResponseCompletedEvent,
@@ -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
  }
@@ -101,7 +103,11 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
101
103
  this.socket = this._connect();
102
104
  }
103
105
 
104
- /** Creates a platform-specific WebSocket for the given URL and auth headers. */
106
+ /**
107
+ * Creates a platform-specific WebSocket for the given URL and captured client auth headers.
108
+ * The transport must supply or validate its final credentials before connecting;
109
+ * these headers may be empty when authentication is managed by the transport.
110
+ */
105
111
  protected abstract _createSocket(url: URL, authHeaders: Record<string, string>): TSocket;
106
112
 
107
113
  send(event: ResponsesAPI.BetaResponsesClientEvent) {
@@ -169,6 +175,11 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
169
175
  * The iterator will exit if the socket closes but exiting the iterator
170
176
  * does not close the socket.
171
177
  *
178
+ * Pass `maxBufferedEvents` to limit queued records for this iterator, including
179
+ * lifecycle events. Overflow discards its backlog and rejects `next()` with a
180
+ * WebSocketError; the shared socket and other iterators remain active.
181
+ * Omitted means unlimited. This is an event-count limit, not a byte limit.
182
+ *
172
183
  * @example
173
184
  * ```ts
174
185
  * for await (const event of client.stream()) {
@@ -186,26 +197,59 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
186
197
  * }
187
198
  * ```
188
199
  */
189
- stream(): AsyncIterableIterator<ResponsesStreamMessage> {
190
- return this[Symbol.asyncIterator]();
200
+ stream(options?: WebSocketStreamOptions): AsyncIterableIterator<ResponsesStreamMessage> {
201
+ return options === undefined ? this[Symbol.asyncIterator]() : this[Symbol.asyncIterator](options);
191
202
  }
192
203
 
193
- [Symbol.asyncIterator](): AsyncIterableIterator<ResponsesStreamMessage> {
204
+ [Symbol.asyncIterator](options?: WebSocketStreamOptions): AsyncIterableIterator<ResponsesStreamMessage> {
194
205
  if (!this.socket) {
195
206
  throw new OpenAIError('Internal error: failed to initialize socket. Please report this issue.');
196
207
  }
197
208
 
209
+ const maxBufferedEvents = getMaxBufferedEvents(options);
210
+
198
211
  // Two-queue async iterator: `queue` buffers incoming messages,
199
212
  // `resolvers` buffers waiting next() calls. A push wakes the
200
213
  // oldest next(); a next() drains the oldest message.
201
- const queue: ResponsesStreamMessage[] = [];
202
- const resolvers: (() => void)[] = [];
214
+ const queue: (ResponsesStreamMessage | undefined)[] = [];
215
+ const resolvers: ((() => void) | undefined)[] = [];
216
+ let queueHead = 0;
217
+ let resolverHead = 0;
203
218
  let done = false;
219
+ let failure: WebSocketError | undefined;
204
220
  let currentSocket = this.socket;
205
221
 
222
+ const wakeResolver = () => {
223
+ if (resolverHead >= resolvers.length) return;
224
+
225
+ const resolver = resolvers[resolverHead];
226
+ resolvers[resolverHead] = undefined;
227
+ resolverHead += 1;
228
+ if (resolverHead >= 64 && resolverHead * 2 >= resolvers.length) {
229
+ resolvers.splice(0, resolverHead);
230
+ resolverHead = 0;
231
+ }
232
+ resolver?.();
233
+ };
234
+
206
235
  const push = (msg: ResponsesStreamMessage) => {
236
+ if (done) return;
237
+
238
+ if (maxBufferedEvents !== undefined && queue.length - queueHead >= maxBufferedEvents) {
239
+ failure = new WebSocketError(
240
+ `WebSocket stream exceeded maxBufferedEvents (${maxBufferedEvents})`,
241
+ null,
242
+ );
243
+ done = true;
244
+ queue.length = 0;
245
+ queueHead = 0;
246
+ cleanup();
247
+ flushResolvers();
248
+ return;
249
+ }
250
+
207
251
  queue.push(msg);
208
- resolvers.shift()?.();
252
+ wakeResolver();
209
253
  };
210
254
 
211
255
  const onEvent = (event: ResponsesAPI.BetaResponsesServerEvent) => {
@@ -235,9 +279,14 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
235
279
  };
236
280
 
237
281
  const flushResolvers = () => {
238
- for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
239
- resolver();
282
+ while (resolverHead < resolvers.length) {
283
+ const resolver = resolvers[resolverHead];
284
+ resolvers[resolverHead] = undefined;
285
+ resolverHead += 1;
286
+ resolver?.();
240
287
  }
288
+ resolvers.length = 0;
289
+ resolverHead = 0;
241
290
  };
242
291
 
243
292
  const onClose = (
@@ -251,8 +300,9 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
251
300
  cleanup();
252
301
  };
253
302
 
254
- const onSocketSwap = (oldSocket: TSocket, newSocket: TSocket) => {
255
- oldSocket.off('open', onOpen);
303
+ const onSocketSwap = (_oldSocket: TSocket, newSocket: TSocket) => {
304
+ if (currentSocket === newSocket) return;
305
+ currentSocket.off('open', onOpen);
256
306
  newSocket.on('open', onOpen);
257
307
  currentSocket = newSocket;
258
308
  };
@@ -309,9 +359,21 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
309
359
  }
310
360
  }
311
361
 
312
- const resolve = (res: (value: IteratorResult<ResponsesStreamMessage>) => void) => {
313
- if (queue.length > 0) {
314
- res({ value: queue.shift()!, done: false });
362
+ const resolve = (
363
+ res: (value: IteratorResult<ResponsesStreamMessage>) => void,
364
+ reject: (error: WebSocketError) => void,
365
+ ) => {
366
+ if (failure) {
367
+ reject(failure);
368
+ } else if (queueHead < queue.length) {
369
+ const queued = queue[queueHead]!;
370
+ queue[queueHead] = undefined;
371
+ queueHead += 1;
372
+ if (queueHead >= 64 && queueHead * 2 >= queue.length) {
373
+ queue.splice(0, queueHead);
374
+ queueHead = 0;
375
+ }
376
+ res({ value: queued, done: false });
315
377
  } else if (done) {
316
378
  res({ value: undefined, done: true });
317
379
  } else {
@@ -321,10 +383,10 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
321
383
  };
322
384
 
323
385
  const next = (): Promise<IteratorResult<ResponsesStreamMessage>> =>
324
- new Promise((res) => {
325
- if (resolve(res)) return;
386
+ new Promise((res, reject) => {
387
+ if (resolve(res, reject)) return;
326
388
  resolvers.push(() => {
327
- resolve(res);
389
+ resolve(res, reject);
328
390
  });
329
391
  });
330
392
 
@@ -332,6 +394,8 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
332
394
  next,
333
395
  return: (): Promise<IteratorReturnResult<undefined>> => {
334
396
  done = true;
397
+ queue.length = 0;
398
+ queueHead = 0;
335
399
  cleanup();
336
400
  flushResolvers();
337
401
  return Promise.resolve({ value: undefined, done: true });
@@ -364,6 +428,35 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
364
428
  return;
365
429
  }
366
430
 
431
+ if (
432
+ event === null ||
433
+ typeof event !== 'object' ||
434
+ Array.isArray(event) ||
435
+ !Object.prototype.hasOwnProperty.call(event, 'type') ||
436
+ typeof event.type !== 'string'
437
+ ) {
438
+ this._onError(
439
+ null,
440
+ 'received invalid WebSocket event: expected an object with an own string type',
441
+ undefined,
442
+ );
443
+ return;
444
+ }
445
+
446
+ const eventType: string = event.type;
447
+ const reservedEventType =
448
+ eventType === 'raw' ||
449
+ eventType === 'close' ||
450
+ eventType === 'event' ||
451
+ eventType === 'reconnecting' ||
452
+ eventType === 'reconnected' ||
453
+ eventType === 'open' ||
454
+ eventType === 'error';
455
+ if (reservedEventType && eventType !== 'error') {
456
+ this._onError(null, 'received reserved WebSocket event type', undefined);
457
+ return;
458
+ }
459
+
367
460
  this._emit('event', event);
368
461
 
369
462
  if (event.type === 'error') {
@@ -607,9 +700,7 @@ export abstract class ResponsesWSBase<TSocket extends WebSocketLike> extends Res
607
700
  }
608
701
 
609
702
  protected _authHeaders(): Record<string, string> {
610
- if (this._client.apiKey) {
611
- return { Authorization: `Bearer ${this._client.apiKey}` };
612
- }
613
- return {};
703
+ const apiKey = this._client.apiKey;
704
+ return typeof apiKey === 'string' && apiKey ? { Authorization: `Bearer ${apiKey}` } : {};
614
705
  }
615
706
  }
@@ -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/beta/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
  }