openai 7.16.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 (631) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/_vendor/zod-to-json-schema/Options.d.mts.map +1 -1
  3. package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -1
  4. package/_vendor/zod-to-json-schema/Options.js +2 -0
  5. package/_vendor/zod-to-json-schema/Options.js.map +1 -1
  6. package/_vendor/zod-to-json-schema/Options.mjs +2 -0
  7. package/_vendor/zod-to-json-schema/Options.mjs.map +1 -1
  8. package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
  9. package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
  10. package/_vendor/zod-to-json-schema/parseDef.js +1 -0
  11. package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
  12. package/_vendor/zod-to-json-schema/parseDef.mjs +1 -0
  13. package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
  14. package/_vendor/zod-to-json-schema/parsers/bigint.d.mts.map +1 -1
  15. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  16. package/_vendor/zod-to-json-schema/parsers/bigint.js +2 -0
  17. package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -1
  18. package/_vendor/zod-to-json-schema/parsers/bigint.mjs +2 -0
  19. package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -1
  20. package/_vendor/zod-to-json-schema/parsers/literal.d.mts.map +1 -1
  21. package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  22. package/_vendor/zod-to-json-schema/parsers/literal.js +1 -0
  23. package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -1
  24. package/_vendor/zod-to-json-schema/parsers/literal.mjs +1 -0
  25. package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -1
  26. package/_vendor/zod-to-json-schema/parsers/null.d.mts.map +1 -1
  27. package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  28. package/_vendor/zod-to-json-schema/parsers/null.js +1 -0
  29. package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -1
  30. package/_vendor/zod-to-json-schema/parsers/null.mjs +1 -0
  31. package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -1
  32. package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
  33. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  34. package/_vendor/zod-to-json-schema/parsers/nullable.js +4 -0
  35. package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
  36. package/_vendor/zod-to-json-schema/parsers/nullable.mjs +4 -0
  37. package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
  38. package/_vendor/zod-to-json-schema/parsers/number.d.mts.map +1 -1
  39. package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  40. package/_vendor/zod-to-json-schema/parsers/number.js +2 -0
  41. package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -1
  42. package/_vendor/zod-to-json-schema/parsers/number.mjs +2 -0
  43. package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -1
  44. package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
  45. package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
  46. package/_vendor/zod-to-json-schema/parsers/optional.js +6 -7
  47. package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
  48. package/_vendor/zod-to-json-schema/parsers/optional.mjs +6 -7
  49. package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
  50. package/_vendor/zod-to-json-schema/parsers/record.d.mts.map +1 -1
  51. package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  52. package/_vendor/zod-to-json-schema/parsers/record.js +2 -0
  53. package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -1
  54. package/_vendor/zod-to-json-schema/parsers/record.mjs +2 -0
  55. package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -1
  56. package/_vendor/zod-to-json-schema/parsers/string.d.mts.map +1 -1
  57. package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  58. package/_vendor/zod-to-json-schema/parsers/string.js +1 -0
  59. package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -1
  60. package/_vendor/zod-to-json-schema/parsers/string.mjs +1 -0
  61. package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -1
  62. package/_vendor/zod-to-json-schema/parsers/union.d.mts.map +1 -1
  63. package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  64. package/_vendor/zod-to-json-schema/parsers/union.js +3 -0
  65. package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -1
  66. package/_vendor/zod-to-json-schema/parsers/union.mjs +3 -0
  67. package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -1
  68. package/_vendor/zod-to-json-schema/util.d.mts.map +1 -1
  69. package/_vendor/zod-to-json-schema/util.d.ts.map +1 -1
  70. package/_vendor/zod-to-json-schema/util.js +1 -0
  71. package/_vendor/zod-to-json-schema/util.js.map +1 -1
  72. package/_vendor/zod-to-json-schema/util.mjs +1 -0
  73. package/_vendor/zod-to-json-schema/util.mjs.map +1 -1
  74. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts.map +1 -1
  75. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -1
  76. package/_vendor/zod-to-json-schema/zodToJsonSchema.js +2 -0
  77. package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  78. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +2 -0
  79. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -1
  80. package/auth/subject-token-providers.d.mts.map +1 -1
  81. package/auth/subject-token-providers.d.ts.map +1 -1
  82. package/auth/subject-token-providers.js +6 -1
  83. package/auth/subject-token-providers.js.map +1 -1
  84. package/auth/subject-token-providers.mjs +6 -1
  85. package/auth/subject-token-providers.mjs.map +1 -1
  86. package/auth/workload-identity-auth.d.mts.map +1 -1
  87. package/auth/workload-identity-auth.d.ts.map +1 -1
  88. package/auth/workload-identity-auth.js +9 -0
  89. package/auth/workload-identity-auth.js.map +1 -1
  90. package/auth/workload-identity-auth.mjs +9 -0
  91. package/auth/workload-identity-auth.mjs.map +1 -1
  92. package/auth/x509-transport.d.mts.map +1 -1
  93. package/auth/x509-transport.d.ts.map +1 -1
  94. package/auth/x509-transport.js +11 -0
  95. package/auth/x509-transport.js.map +1 -1
  96. package/auth/x509-transport.mjs +11 -0
  97. package/auth/x509-transport.mjs.map +1 -1
  98. package/azure.d.mts.map +1 -1
  99. package/azure.d.ts.map +1 -1
  100. package/azure.js +3 -0
  101. package/azure.js.map +1 -1
  102. package/azure.mjs +3 -0
  103. package/azure.mjs.map +1 -1
  104. package/bedrock.d.mts.map +1 -1
  105. package/bedrock.d.ts.map +1 -1
  106. package/bedrock.js +5 -0
  107. package/bedrock.js.map +1 -1
  108. package/bedrock.mjs +5 -0
  109. package/bedrock.mjs.map +1 -1
  110. package/beta/realtime/internal-base.d.mts.map +1 -1
  111. package/beta/realtime/internal-base.d.ts.map +1 -1
  112. package/beta/realtime/internal-base.js +1 -0
  113. package/beta/realtime/internal-base.js.map +1 -1
  114. package/beta/realtime/internal-base.mjs +1 -0
  115. package/beta/realtime/internal-base.mjs.map +1 -1
  116. package/beta/realtime/websocket.d.mts.map +1 -1
  117. package/beta/realtime/websocket.d.ts.map +1 -1
  118. package/beta/realtime/websocket.js +9 -1
  119. package/beta/realtime/websocket.js.map +1 -1
  120. package/beta/realtime/websocket.mjs +9 -1
  121. package/beta/realtime/websocket.mjs.map +1 -1
  122. package/beta/realtime/ws.d.mts.map +1 -1
  123. package/beta/realtime/ws.d.ts.map +1 -1
  124. package/beta/realtime/ws.js +3 -0
  125. package/beta/realtime/ws.js.map +1 -1
  126. package/beta/realtime/ws.mjs +3 -0
  127. package/beta/realtime/ws.mjs.map +1 -1
  128. package/client.d.mts +1 -0
  129. package/client.d.mts.map +1 -1
  130. package/client.d.ts +1 -0
  131. package/client.d.ts.map +1 -1
  132. package/client.js +27 -6
  133. package/client.js.map +1 -1
  134. package/client.mjs +27 -6
  135. package/client.mjs.map +1 -1
  136. package/core/EventEmitter.d.mts.map +1 -1
  137. package/core/EventEmitter.d.ts.map +1 -1
  138. package/core/EventEmitter.js +15 -0
  139. package/core/EventEmitter.js.map +1 -1
  140. package/core/EventEmitter.mjs +15 -0
  141. package/core/EventEmitter.mjs.map +1 -1
  142. package/core/streaming.d.mts +1 -0
  143. package/core/streaming.d.mts.map +1 -1
  144. package/core/streaming.d.ts +1 -0
  145. package/core/streaming.d.ts.map +1 -1
  146. package/core/streaming.js +28 -1
  147. package/core/streaming.js.map +1 -1
  148. package/core/streaming.mjs +28 -1
  149. package/core/streaming.mjs.map +1 -1
  150. package/helpers/audio.d.mts.map +1 -1
  151. package/helpers/audio.d.ts.map +1 -1
  152. package/helpers/audio.js +2 -0
  153. package/helpers/audio.js.map +1 -1
  154. package/helpers/audio.mjs +2 -0
  155. package/helpers/audio.mjs.map +1 -1
  156. package/helpers/standard-schema.d.mts.map +1 -1
  157. package/helpers/standard-schema.d.ts.map +1 -1
  158. package/helpers/standard-schema.js +28 -18
  159. package/helpers/standard-schema.js.map +1 -1
  160. package/helpers/standard-schema.mjs +28 -18
  161. package/helpers/standard-schema.mjs.map +1 -1
  162. package/helpers/zod-v3-strict-schema.d.mts.map +1 -1
  163. package/helpers/zod-v3-strict-schema.d.ts.map +1 -1
  164. package/helpers/zod-v3-strict-schema.js +5 -0
  165. package/helpers/zod-v3-strict-schema.js.map +1 -1
  166. package/helpers/zod-v3-strict-schema.mjs +5 -0
  167. package/helpers/zod-v3-strict-schema.mjs.map +1 -1
  168. package/helpers/zod.d.mts.map +1 -1
  169. package/helpers/zod.d.ts.map +1 -1
  170. package/helpers/zod.js +16 -1
  171. package/helpers/zod.js.map +1 -1
  172. package/helpers/zod.mjs +17 -2
  173. package/helpers/zod.mjs.map +1 -1
  174. package/internal/assistant-stream-delta.d.mts.map +1 -1
  175. package/internal/assistant-stream-delta.d.ts.map +1 -1
  176. package/internal/assistant-stream-delta.js +8 -1
  177. package/internal/assistant-stream-delta.js.map +1 -1
  178. package/internal/assistant-stream-delta.mjs +8 -1
  179. package/internal/assistant-stream-delta.mjs.map +1 -1
  180. package/internal/auth/x509-credential-options.d.mts.map +1 -1
  181. package/internal/auth/x509-credential-options.d.ts.map +1 -1
  182. package/internal/auth/x509-credential-options.js +3 -0
  183. package/internal/auth/x509-credential-options.js.map +1 -1
  184. package/internal/auth/x509-credential-options.mjs +3 -0
  185. package/internal/auth/x509-credential-options.mjs.map +1 -1
  186. package/internal/auth/x509-token-exchange.d.mts.map +1 -1
  187. package/internal/auth/x509-token-exchange.d.ts.map +1 -1
  188. package/internal/auth/x509-token-exchange.js +2 -0
  189. package/internal/auth/x509-token-exchange.js.map +1 -1
  190. package/internal/auth/x509-token-exchange.mjs +2 -0
  191. package/internal/auth/x509-token-exchange.mjs.map +1 -1
  192. package/internal/auth/x509-transport-capability.d.mts.map +1 -1
  193. package/internal/auth/x509-transport-capability.d.ts.map +1 -1
  194. package/internal/auth/x509-transport-capability.js +1 -0
  195. package/internal/auth/x509-transport-capability.js.map +1 -1
  196. package/internal/auth/x509-transport-capability.mjs +1 -0
  197. package/internal/auth/x509-transport-capability.mjs.map +1 -1
  198. package/internal/auth/x509-transport-state.mjs +1 -0
  199. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -1
  200. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -1
  201. package/internal/auth/x509-workload-identity-auth.js +11 -0
  202. package/internal/auth/x509-workload-identity-auth.js.map +1 -1
  203. package/internal/auth/x509-workload-identity-auth.mjs +11 -0
  204. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -1
  205. package/internal/bedrock.d.mts.map +1 -1
  206. package/internal/bedrock.d.ts.map +1 -1
  207. package/internal/bedrock.js +17 -1
  208. package/internal/bedrock.js.map +1 -1
  209. package/internal/bedrock.mjs +17 -1
  210. package/internal/bedrock.mjs.map +1 -1
  211. package/internal/decoders/line.d.mts.map +1 -1
  212. package/internal/decoders/line.d.ts.map +1 -1
  213. package/internal/decoders/line.js +1 -0
  214. package/internal/decoders/line.js.map +1 -1
  215. package/internal/decoders/line.mjs +1 -0
  216. package/internal/decoders/line.mjs.map +1 -1
  217. package/internal/parse.d.mts +1 -0
  218. package/internal/parse.d.mts.map +1 -1
  219. package/internal/parse.d.ts +1 -0
  220. package/internal/parse.d.ts.map +1 -1
  221. package/internal/parse.js.map +1 -1
  222. package/internal/parse.mjs.map +1 -1
  223. package/internal/provider.d.mts.map +1 -1
  224. package/internal/provider.d.ts.map +1 -1
  225. package/internal/provider.js +3 -0
  226. package/internal/provider.js.map +1 -1
  227. package/internal/provider.mjs +3 -0
  228. package/internal/provider.mjs.map +1 -1
  229. package/internal/qs/stringify.d.mts.map +1 -1
  230. package/internal/qs/stringify.d.ts.map +1 -1
  231. package/internal/qs/stringify.js +3 -0
  232. package/internal/qs/stringify.js.map +1 -1
  233. package/internal/qs/stringify.mjs +3 -0
  234. package/internal/qs/stringify.mjs.map +1 -1
  235. package/internal/qs/utils.d.mts.map +1 -1
  236. package/internal/qs/utils.d.ts.map +1 -1
  237. package/internal/qs/utils.js +15 -3
  238. package/internal/qs/utils.js.map +1 -1
  239. package/internal/qs/utils.mjs +15 -3
  240. package/internal/qs/utils.mjs.map +1 -1
  241. package/internal/responses/response-accumulator.d.mts.map +1 -1
  242. package/internal/responses/response-accumulator.d.ts.map +1 -1
  243. package/internal/responses/response-accumulator.js +20 -4
  244. package/internal/responses/response-accumulator.js.map +1 -1
  245. package/internal/responses/response-accumulator.mjs +20 -4
  246. package/internal/responses/response-accumulator.mjs.map +1 -1
  247. package/internal/to-file.js.map +1 -1
  248. package/internal/to-file.mjs.map +1 -1
  249. package/internal/uploads.d.mts.map +1 -1
  250. package/internal/uploads.d.ts.map +1 -1
  251. package/internal/uploads.js +10 -0
  252. package/internal/uploads.js.map +1 -1
  253. package/internal/uploads.mjs +10 -0
  254. package/internal/uploads.mjs.map +1 -1
  255. package/internal/utils/abort.d.mts.map +1 -1
  256. package/internal/utils/abort.d.ts.map +1 -1
  257. package/internal/utils/abort.js +9 -2
  258. package/internal/utils/abort.js.map +1 -1
  259. package/internal/utils/abort.mjs +9 -2
  260. package/internal/utils/abort.mjs.map +1 -1
  261. package/internal/utils/bytes.d.mts.map +1 -1
  262. package/internal/utils/bytes.d.ts.map +1 -1
  263. package/internal/utils/bytes.js +2 -0
  264. package/internal/utils/bytes.js.map +1 -1
  265. package/internal/utils/bytes.mjs +2 -0
  266. package/internal/utils/bytes.mjs.map +1 -1
  267. package/internal/utils/path.d.mts.map +1 -1
  268. package/internal/utils/path.d.ts.map +1 -1
  269. package/internal/utils/path.js +2 -0
  270. package/internal/utils/path.js.map +1 -1
  271. package/internal/utils/path.mjs +2 -0
  272. package/internal/utils/path.mjs.map +1 -1
  273. package/internal/utils/sleep.d.mts +1 -1
  274. package/internal/utils/sleep.d.mts.map +1 -1
  275. package/internal/utils/sleep.d.ts +1 -1
  276. package/internal/utils/sleep.d.ts.map +1 -1
  277. package/internal/utils/sleep.js +51 -1
  278. package/internal/utils/sleep.js.map +1 -1
  279. package/internal/utils/sleep.mjs +51 -1
  280. package/internal/utils/sleep.mjs.map +1 -1
  281. package/internal/ws-adapter-browser.d.mts.map +1 -1
  282. package/internal/ws-adapter-browser.d.ts.map +1 -1
  283. package/internal/ws-adapter-browser.js +2 -0
  284. package/internal/ws-adapter-browser.js.map +1 -1
  285. package/internal/ws-adapter-browser.mjs +2 -0
  286. package/internal/ws-adapter-browser.mjs.map +1 -1
  287. package/internal/ws.d.mts +9 -0
  288. package/internal/ws.d.mts.map +1 -1
  289. package/internal/ws.d.ts +9 -0
  290. package/internal/ws.d.ts.map +1 -1
  291. package/internal/ws.js +36 -4
  292. package/internal/ws.js.map +1 -1
  293. package/internal/ws.mjs +35 -4
  294. package/internal/ws.mjs.map +1 -1
  295. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  296. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  297. package/lib/AbstractChatCompletionRunner.js +41 -16
  298. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  299. package/lib/AbstractChatCompletionRunner.mjs +42 -17
  300. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  301. package/lib/AssistantStream.d.mts.map +1 -1
  302. package/lib/AssistantStream.d.ts.map +1 -1
  303. package/lib/AssistantStream.js +19 -5
  304. package/lib/AssistantStream.js.map +1 -1
  305. package/lib/AssistantStream.mjs +20 -6
  306. package/lib/AssistantStream.mjs.map +1 -1
  307. package/lib/ChatCompletionRunner.d.mts.map +1 -1
  308. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  309. package/lib/ChatCompletionRunner.js +1 -0
  310. package/lib/ChatCompletionRunner.js.map +1 -1
  311. package/lib/ChatCompletionRunner.mjs +1 -0
  312. package/lib/ChatCompletionRunner.mjs.map +1 -1
  313. package/lib/ChatCompletionStream.d.mts +6 -1
  314. package/lib/ChatCompletionStream.d.mts.map +1 -1
  315. package/lib/ChatCompletionStream.d.ts +6 -1
  316. package/lib/ChatCompletionStream.d.ts.map +1 -1
  317. package/lib/ChatCompletionStream.js +63 -7
  318. package/lib/ChatCompletionStream.js.map +1 -1
  319. package/lib/ChatCompletionStream.mjs +64 -8
  320. package/lib/ChatCompletionStream.mjs.map +1 -1
  321. package/lib/EventEmitter.d.mts.map +1 -1
  322. package/lib/EventEmitter.d.ts.map +1 -1
  323. package/lib/EventEmitter.js +15 -0
  324. package/lib/EventEmitter.js.map +1 -1
  325. package/lib/EventEmitter.mjs +15 -0
  326. package/lib/EventEmitter.mjs.map +1 -1
  327. package/lib/EventStream.d.mts +2 -0
  328. package/lib/EventStream.d.mts.map +1 -1
  329. package/lib/EventStream.d.ts +2 -0
  330. package/lib/EventStream.d.ts.map +1 -1
  331. package/lib/EventStream.js +111 -14
  332. package/lib/EventStream.js.map +1 -1
  333. package/lib/EventStream.mjs +111 -14
  334. package/lib/EventStream.mjs.map +1 -1
  335. package/lib/ResponsesParser.d.mts.map +1 -1
  336. package/lib/ResponsesParser.d.ts.map +1 -1
  337. package/lib/ResponsesParser.js +4 -0
  338. package/lib/ResponsesParser.js.map +1 -1
  339. package/lib/ResponsesParser.mjs +4 -0
  340. package/lib/ResponsesParser.mjs.map +1 -1
  341. package/lib/RunnableFunction.d.mts.map +1 -1
  342. package/lib/RunnableFunction.d.ts.map +1 -1
  343. package/lib/RunnableFunction.js.map +1 -1
  344. package/lib/RunnableFunction.mjs.map +1 -1
  345. package/lib/agents/agent-session-stream.d.mts.map +1 -1
  346. package/lib/agents/agent-session-stream.d.ts.map +1 -1
  347. package/lib/agents/agent-session-stream.js +5 -2
  348. package/lib/agents/agent-session-stream.js.map +1 -1
  349. package/lib/agents/agent-session-stream.mjs +5 -2
  350. package/lib/agents/agent-session-stream.mjs.map +1 -1
  351. package/lib/embeddings.d.mts.map +1 -1
  352. package/lib/embeddings.d.ts.map +1 -1
  353. package/lib/embeddings.js +2 -0
  354. package/lib/embeddings.js.map +1 -1
  355. package/lib/embeddings.mjs +2 -0
  356. package/lib/embeddings.mjs.map +1 -1
  357. package/lib/live/transcript-grouper.d.mts.map +1 -1
  358. package/lib/live/transcript-grouper.d.ts.map +1 -1
  359. package/lib/live/transcript-grouper.js +8 -2
  360. package/lib/live/transcript-grouper.js.map +1 -1
  361. package/lib/live/transcript-grouper.mjs +8 -2
  362. package/lib/live/transcript-grouper.mjs.map +1 -1
  363. package/lib/parser.d.mts.map +1 -1
  364. package/lib/parser.d.ts.map +1 -1
  365. package/lib/parser.js +13 -0
  366. package/lib/parser.js.map +1 -1
  367. package/lib/parser.mjs +13 -0
  368. package/lib/parser.mjs.map +1 -1
  369. package/lib/responses/ResponseInputItems.d.mts.map +1 -1
  370. package/lib/responses/ResponseInputItems.d.ts.map +1 -1
  371. package/lib/responses/ResponseInputItems.js +11 -0
  372. package/lib/responses/ResponseInputItems.js.map +1 -1
  373. package/lib/responses/ResponseInputItems.mjs +11 -0
  374. package/lib/responses/ResponseInputItems.mjs.map +1 -1
  375. package/lib/responses/ResponseStream.d.mts.map +1 -1
  376. package/lib/responses/ResponseStream.d.ts.map +1 -1
  377. package/lib/responses/ResponseStream.js +7 -3
  378. package/lib/responses/ResponseStream.js.map +1 -1
  379. package/lib/responses/ResponseStream.mjs +8 -4
  380. package/lib/responses/ResponseStream.mjs.map +1 -1
  381. package/lib/transform.d.mts.map +1 -1
  382. package/lib/transform.d.ts.map +1 -1
  383. package/lib/transform.js +69 -33
  384. package/lib/transform.js.map +1 -1
  385. package/lib/transform.mjs +69 -33
  386. package/lib/transform.mjs.map +1 -1
  387. package/lib/webrtc/connection.d.mts.map +1 -1
  388. package/lib/webrtc/connection.d.ts.map +1 -1
  389. package/lib/webrtc/connection.js +6 -1
  390. package/lib/webrtc/connection.js.map +1 -1
  391. package/lib/webrtc/connection.mjs +6 -1
  392. package/lib/webrtc/connection.mjs.map +1 -1
  393. package/lib/webrtc/data-channel.d.mts.map +1 -1
  394. package/lib/webrtc/data-channel.d.ts.map +1 -1
  395. package/lib/webrtc/data-channel.js +9 -1
  396. package/lib/webrtc/data-channel.js.map +1 -1
  397. package/lib/webrtc/data-channel.mjs +9 -1
  398. package/lib/webrtc/data-channel.mjs.map +1 -1
  399. package/lib/webrtc/subscriptions.d.mts.map +1 -1
  400. package/lib/webrtc/subscriptions.d.ts.map +1 -1
  401. package/lib/webrtc/subscriptions.js +2 -0
  402. package/lib/webrtc/subscriptions.js.map +1 -1
  403. package/lib/webrtc/subscriptions.mjs +2 -0
  404. package/lib/webrtc/subscriptions.mjs.map +1 -1
  405. package/lib/webrtc/types.d.mts.map +1 -1
  406. package/lib/webrtc/types.d.ts.map +1 -1
  407. package/package.json +1 -1
  408. package/providers/bedrock/aws.d.mts.map +1 -1
  409. package/providers/bedrock/aws.d.ts.map +1 -1
  410. package/providers/bedrock/aws.js +4 -0
  411. package/providers/bedrock/aws.js.map +1 -1
  412. package/providers/bedrock/aws.mjs +4 -0
  413. package/providers/bedrock/aws.mjs.map +1 -1
  414. package/realtime/internal-base.d.mts.map +1 -1
  415. package/realtime/internal-base.d.ts.map +1 -1
  416. package/realtime/internal-base.js +1 -0
  417. package/realtime/internal-base.js.map +1 -1
  418. package/realtime/internal-base.mjs +1 -0
  419. package/realtime/internal-base.mjs.map +1 -1
  420. package/realtime/websocket.d.mts.map +1 -1
  421. package/realtime/websocket.d.ts.map +1 -1
  422. package/realtime/websocket.js +9 -1
  423. package/realtime/websocket.js.map +1 -1
  424. package/realtime/websocket.mjs +9 -1
  425. package/realtime/websocket.mjs.map +1 -1
  426. package/realtime/ws.d.mts.map +1 -1
  427. package/realtime/ws.d.ts.map +1 -1
  428. package/realtime/ws.js +3 -0
  429. package/realtime/ws.js.map +1 -1
  430. package/realtime/ws.mjs +3 -0
  431. package/realtime/ws.mjs.map +1 -1
  432. package/resources/beta/agents/agents.d.mts +2 -1
  433. package/resources/beta/agents/agents.d.mts.map +1 -1
  434. package/resources/beta/agents/agents.d.ts +2 -1
  435. package/resources/beta/agents/agents.d.ts.map +1 -1
  436. package/resources/beta/agents/agents.js.map +1 -1
  437. package/resources/beta/agents/agents.mjs.map +1 -1
  438. package/resources/beta/beta.d.mts +2 -2
  439. package/resources/beta/beta.d.mts.map +1 -1
  440. package/resources/beta/beta.d.ts +2 -2
  441. package/resources/beta/beta.d.ts.map +1 -1
  442. package/resources/beta/beta.js.map +1 -1
  443. package/resources/beta/beta.mjs.map +1 -1
  444. package/resources/beta/index.d.mts +1 -1
  445. package/resources/beta/index.d.mts.map +1 -1
  446. package/resources/beta/index.d.ts +1 -1
  447. package/resources/beta/index.d.ts.map +1 -1
  448. package/resources/beta/index.js.map +1 -1
  449. package/resources/beta/index.mjs.map +1 -1
  450. package/resources/beta/responses/index.d.mts +1 -1
  451. package/resources/beta/responses/index.d.mts.map +1 -1
  452. package/resources/beta/responses/index.d.ts +1 -1
  453. package/resources/beta/responses/index.d.ts.map +1 -1
  454. package/resources/beta/responses/index.js.map +1 -1
  455. package/resources/beta/responses/index.mjs.map +1 -1
  456. package/resources/beta/responses/internal-base.d.mts +3 -0
  457. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  458. package/resources/beta/responses/internal-base.d.ts +3 -0
  459. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  460. package/resources/beta/responses/internal-base.js +21 -12
  461. package/resources/beta/responses/internal-base.js.map +1 -1
  462. package/resources/beta/responses/internal-base.mjs +21 -12
  463. package/resources/beta/responses/internal-base.mjs.map +1 -1
  464. package/resources/beta/responses/responses.d.mts +51 -3
  465. package/resources/beta/responses/responses.d.mts.map +1 -1
  466. package/resources/beta/responses/responses.d.ts +51 -3
  467. package/resources/beta/responses/responses.d.ts.map +1 -1
  468. package/resources/beta/responses/responses.js.map +1 -1
  469. package/resources/beta/responses/responses.mjs.map +1 -1
  470. package/resources/beta/responses/ws-base.d.mts +5 -1
  471. package/resources/beta/responses/ws-base.d.mts.map +1 -1
  472. package/resources/beta/responses/ws-base.d.ts +5 -1
  473. package/resources/beta/responses/ws-base.d.ts.map +1 -1
  474. package/resources/beta/responses/ws-base.js +2 -4
  475. package/resources/beta/responses/ws-base.js.map +1 -1
  476. package/resources/beta/responses/ws-base.mjs +2 -4
  477. package/resources/beta/responses/ws-base.mjs.map +1 -1
  478. package/resources/beta/responses/ws.d.mts +2 -0
  479. package/resources/beta/responses/ws.d.mts.map +1 -1
  480. package/resources/beta/responses/ws.d.ts +2 -0
  481. package/resources/beta/responses/ws.d.ts.map +1 -1
  482. package/resources/beta/responses/ws.js +12 -3
  483. package/resources/beta/responses/ws.js.map +1 -1
  484. package/resources/beta/responses/ws.mjs +12 -3
  485. package/resources/beta/responses/ws.mjs.map +1 -1
  486. package/resources/live/forks/internal-base.d.mts +3 -0
  487. package/resources/live/forks/internal-base.d.mts.map +1 -1
  488. package/resources/live/forks/internal-base.d.ts +3 -0
  489. package/resources/live/forks/internal-base.d.ts.map +1 -1
  490. package/resources/live/forks/internal-base.js +21 -5
  491. package/resources/live/forks/internal-base.js.map +1 -1
  492. package/resources/live/forks/internal-base.mjs +21 -5
  493. package/resources/live/forks/internal-base.mjs.map +1 -1
  494. package/resources/live/internal-base.d.mts +3 -0
  495. package/resources/live/internal-base.d.mts.map +1 -1
  496. package/resources/live/internal-base.d.ts +3 -0
  497. package/resources/live/internal-base.d.ts.map +1 -1
  498. package/resources/live/internal-base.js +21 -5
  499. package/resources/live/internal-base.js.map +1 -1
  500. package/resources/live/internal-base.mjs +21 -5
  501. package/resources/live/internal-base.mjs.map +1 -1
  502. package/resources/live/sideband/internal-base.d.mts +3 -0
  503. package/resources/live/sideband/internal-base.d.mts.map +1 -1
  504. package/resources/live/sideband/internal-base.d.ts +3 -0
  505. package/resources/live/sideband/internal-base.d.ts.map +1 -1
  506. package/resources/live/sideband/internal-base.js +21 -5
  507. package/resources/live/sideband/internal-base.js.map +1 -1
  508. package/resources/live/sideband/internal-base.mjs +21 -5
  509. package/resources/live/sideband/internal-base.mjs.map +1 -1
  510. package/resources/responses/internal-base.d.mts +3 -0
  511. package/resources/responses/internal-base.d.mts.map +1 -1
  512. package/resources/responses/internal-base.d.ts +3 -0
  513. package/resources/responses/internal-base.d.ts.map +1 -1
  514. package/resources/responses/internal-base.js +21 -12
  515. package/resources/responses/internal-base.js.map +1 -1
  516. package/resources/responses/internal-base.mjs +21 -12
  517. package/resources/responses/internal-base.mjs.map +1 -1
  518. package/resources/responses/responses.d.mts +36 -3
  519. package/resources/responses/responses.d.mts.map +1 -1
  520. package/resources/responses/responses.d.ts +36 -3
  521. package/resources/responses/responses.d.ts.map +1 -1
  522. package/resources/responses/responses.js.map +1 -1
  523. package/resources/responses/responses.mjs.map +1 -1
  524. package/resources/responses/ws-base.d.mts +5 -1
  525. package/resources/responses/ws-base.d.mts.map +1 -1
  526. package/resources/responses/ws-base.d.ts +5 -1
  527. package/resources/responses/ws-base.d.ts.map +1 -1
  528. package/resources/responses/ws-base.js +2 -4
  529. package/resources/responses/ws-base.js.map +1 -1
  530. package/resources/responses/ws-base.mjs +2 -4
  531. package/resources/responses/ws-base.mjs.map +1 -1
  532. package/resources/responses/ws.d.mts +2 -0
  533. package/resources/responses/ws.d.mts.map +1 -1
  534. package/resources/responses/ws.d.ts +2 -0
  535. package/resources/responses/ws.d.ts.map +1 -1
  536. package/resources/responses/ws.js +12 -3
  537. package/resources/responses/ws.js.map +1 -1
  538. package/resources/responses/ws.mjs +12 -3
  539. package/resources/responses/ws.mjs.map +1 -1
  540. package/src/_vendor/zod-to-json-schema/Options.ts +2 -0
  541. package/src/_vendor/zod-to-json-schema/parseDef.ts +1 -0
  542. package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +2 -0
  543. package/src/_vendor/zod-to-json-schema/parsers/literal.ts +1 -0
  544. package/src/_vendor/zod-to-json-schema/parsers/null.ts +1 -0
  545. package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +4 -0
  546. package/src/_vendor/zod-to-json-schema/parsers/number.ts +2 -0
  547. package/src/_vendor/zod-to-json-schema/parsers/optional.ts +6 -7
  548. package/src/_vendor/zod-to-json-schema/parsers/record.ts +2 -0
  549. package/src/_vendor/zod-to-json-schema/parsers/string.ts +1 -0
  550. package/src/_vendor/zod-to-json-schema/parsers/union.ts +3 -0
  551. package/src/_vendor/zod-to-json-schema/util.ts +1 -0
  552. package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +3 -1
  553. package/src/auth/subject-token-providers.ts +6 -1
  554. package/src/auth/workload-identity-auth.ts +10 -1
  555. package/src/auth/x509-transport.ts +13 -2
  556. package/src/azure.ts +3 -0
  557. package/src/bedrock.ts +5 -0
  558. package/src/beta/realtime/internal-base.ts +2 -0
  559. package/src/beta/realtime/websocket.ts +11 -1
  560. package/src/beta/realtime/ws.ts +3 -0
  561. package/src/client.ts +35 -3
  562. package/src/core/EventEmitter.ts +15 -0
  563. package/src/core/streaming.ts +30 -2
  564. package/src/helpers/audio.ts +2 -0
  565. package/src/helpers/standard-schema.ts +31 -19
  566. package/src/helpers/zod-v3-strict-schema.ts +8 -2
  567. package/src/helpers/zod.ts +32 -13
  568. package/src/internal/assistant-stream-delta.ts +7 -1
  569. package/src/internal/auth/x509-credential-options.ts +3 -0
  570. package/src/internal/auth/x509-token-exchange.ts +10 -1
  571. package/src/internal/auth/x509-transport-capability.ts +2 -1
  572. package/src/internal/auth/x509-workload-identity-auth.ts +13 -8
  573. package/src/internal/bedrock.ts +15 -0
  574. package/src/internal/decoders/line.ts +1 -0
  575. package/src/internal/parse.ts +1 -0
  576. package/src/internal/provider.ts +3 -0
  577. package/src/internal/qs/stringify.ts +3 -0
  578. package/src/internal/qs/utils.ts +14 -3
  579. package/src/internal/responses/response-accumulator.ts +34 -4
  580. package/src/internal/to-file.ts +1 -1
  581. package/src/internal/uploads.ts +11 -1
  582. package/src/internal/utils/abort.ts +7 -2
  583. package/src/internal/utils/bytes.ts +2 -0
  584. package/src/internal/utils/path.ts +2 -0
  585. package/src/internal/utils/sleep.ts +52 -1
  586. package/src/internal/ws-adapter-browser.ts +2 -0
  587. package/src/internal/ws.ts +44 -4
  588. package/src/lib/AbstractChatCompletionRunner.ts +40 -17
  589. package/src/lib/AssistantStream.ts +31 -20
  590. package/src/lib/ChatCompletionRunner.ts +1 -0
  591. package/src/lib/ChatCompletionStream.ts +81 -14
  592. package/src/lib/EventEmitter.ts +15 -0
  593. package/src/lib/EventStream.ts +93 -3
  594. package/src/lib/ResponsesParser.ts +5 -0
  595. package/src/lib/RunnableFunction.ts +4 -1
  596. package/src/lib/agents/agent-session-stream.ts +5 -3
  597. package/src/lib/embeddings.ts +3 -1
  598. package/src/lib/live/transcript-grouper.ts +4 -0
  599. package/src/lib/parser.ts +16 -2
  600. package/src/lib/responses/ResponseInputItems.ts +11 -0
  601. package/src/lib/responses/ResponseStream.ts +6 -3
  602. package/src/lib/transform.ts +70 -35
  603. package/src/lib/webrtc/connection.ts +5 -1
  604. package/src/lib/webrtc/data-channel.ts +7 -0
  605. package/src/lib/webrtc/subscriptions.ts +3 -0
  606. package/src/lib/webrtc/types.ts +1 -0
  607. package/src/providers/bedrock/aws.ts +5 -1
  608. package/src/realtime/internal-base.ts +2 -0
  609. package/src/realtime/websocket.ts +11 -1
  610. package/src/realtime/ws.ts +3 -0
  611. package/src/resources/beta/agents/agents.ts +2 -0
  612. package/src/resources/beta/beta.ts +2 -0
  613. package/src/resources/beta/index.ts +1 -0
  614. package/src/resources/beta/responses/index.ts +1 -0
  615. package/src/resources/beta/responses/internal-base.ts +24 -11
  616. package/src/resources/beta/responses/responses.ts +58 -0
  617. package/src/resources/beta/responses/ws-base.ts +7 -5
  618. package/src/resources/beta/responses/ws.ts +21 -6
  619. package/src/resources/live/forks/internal-base.ts +24 -5
  620. package/src/resources/live/internal-base.ts +24 -5
  621. package/src/resources/live/sideband/internal-base.ts +24 -5
  622. package/src/resources/responses/api.md +1 -0
  623. package/src/resources/responses/internal-base.ts +24 -11
  624. package/src/resources/responses/responses.ts +41 -0
  625. package/src/resources/responses/ws-base.ts +7 -5
  626. package/src/resources/responses/ws.ts +21 -6
  627. package/src/version.ts +1 -1
  628. package/version.d.mts +1 -1
  629. package/version.d.ts +1 -1
  630. package/version.js +1 -1
  631. package/version.mjs +1 -1
@@ -53,6 +53,7 @@ function calculateRefreshAt(
53
53
  const NATIVE_RESPONSE_PROTOTYPE = Response.prototype;
54
54
  const READ_NATIVE_RESPONSE_BODY = NATIVE_RESPONSE_PROTOTYPE.arrayBuffer;
55
55
 
56
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Custom fetch response prototypes are verified through descriptors before trusting their native contract.
56
57
  function isResponsePrototype(response: Response, prototype: object): boolean {
57
58
  const constructor = Object.getOwnPropertyDescriptor(prototype, 'constructor')?.value;
58
59
  if (
@@ -73,6 +74,7 @@ function isResponsePrototype(response: Response, prototype: object): boolean {
73
74
  );
74
75
  }
75
76
 
77
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The prototype walk compares untrusted cross-realm objects by identity and descriptor metadata.
76
78
  function isResponseBodyPrototype(prototype: object, responsePrototype: object | null): boolean {
77
79
  if (prototype === responsePrototype) {
78
80
  return true;
@@ -89,10 +91,12 @@ function isResponseBodyPrototype(prototype: object, responsePrototype: object |
89
91
  }
90
92
 
91
93
  function decodeNativeResponseBody(body: ArrayBuffer): string {
94
+ // SAFETY: Bun is an optional runtime global; its version is checked before selecting Bun-specific decoding behavior.
92
95
  const scope = globalThis as typeof globalThis & { Bun?: { version?: unknown } };
93
96
  return new TextDecoder('utf-8', { ignoreBOM: typeof scope.Bun?.version === 'string' }).decode(body);
94
97
  }
95
98
 
99
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Decoded token JSON remains untrusted until the caller validates its fields.
96
100
  async function parseOAuthTokenResponse(response: Response): Promise<unknown> {
97
101
  let readText: ((this: Response) => Promise<string>) | undefined;
98
102
  let responsePrototype: object | null = null;
@@ -140,6 +144,7 @@ async function parseOAuthTokenResponse(response: Response): Promise<unknown> {
140
144
  }
141
145
 
142
146
  function isUnsafeAccessToken(accessToken: string): boolean {
147
+ // SAFETY: Bun is an optional runtime global; its version is checked before selecting Bun-specific decoding behavior.
143
148
  const scope = globalThis as typeof globalThis & { Bun?: { version?: unknown } };
144
149
  if (typeof scope.Bun?.version === 'string') {
145
150
  return /[^\t\u0020-\u007E]|^[\t ]|[\t ]$/u.test(accessToken);
@@ -173,7 +178,9 @@ export class WorkloadIdentityAuth {
173
178
  this.config = {
174
179
  identityProviderId,
175
180
  serviceAccountId,
181
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
176
182
  ...(clientId === undefined ? {} : { clientId }),
183
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
177
184
  ...(refreshBufferSeconds === undefined ? {} : { refreshBufferSeconds }),
178
185
  provider: {
179
186
  tokenType: provider.tokenType,
@@ -226,6 +233,7 @@ export class WorkloadIdentityAuth {
226
233
 
227
234
  private async refreshToken(generation: number): Promise<string> {
228
235
  const subjectToken = await this.config.provider.getToken();
236
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The token-exchange field dictionary gains an optional client_id after its required fields are initialized.
229
237
  const body: Record<string, string> = {
230
238
  grant_type: TOKEN_EXCHANGE_GRANT_TYPE,
231
239
  subject_token: subjectToken,
@@ -260,7 +268,7 @@ export class WorkloadIdentityAuth {
260
268
  }
261
269
 
262
270
  if (response.status === 400 || response.status === 401 || response.status === 403) {
263
- throw new OAuthError(response.status as 400 | 401 | 403, body, response.headers);
271
+ throw new OAuthError(response.status, body, response.headers);
264
272
  }
265
273
  throw APIError.generate(
266
274
  response.status,
@@ -283,6 +291,7 @@ export class WorkloadIdentityAuth {
283
291
  throw new OpenAIError("Token exchange response missing 'access_token' field");
284
292
  }
285
293
 
294
+ // SAFETY: The token response was checked as an object with a valid access token; expires_in is still validated by calculateExpiresAt.
286
295
  const expiresIn = (tokenResponse as Partial<TokenExchangeResponse>).expires_in ?? 3600;
287
296
  const expiresAt = calculateExpiresAt(expiresIn, exchangeStartedAt);
288
297
 
@@ -82,6 +82,7 @@ function safeOptionRecord(
82
82
  if (prototype !== Object.prototype && prototype !== null) {
83
83
  throw new Error(`X.509 ${label} options must have only own plain data properties.`);
84
84
  }
85
+ // SAFETY: The snapshot starts empty with no prototype; only checked own data properties are copied into it below.
85
86
  const snapshot = Object.create(null) as Record<string, unknown>;
86
87
  for (const name of Reflect.ownKeys(value)) {
87
88
  if (typeof name !== 'string' || !allowed.has(name)) {
@@ -179,6 +180,7 @@ function validatedCredentialOptions(options: X509CredentialOptions): ValidatedX5
179
180
  const leaf = new X509Certificate(certificateChain);
180
181
  const privateKey = createPrivateKey({
181
182
  key: privateKeyPEM,
183
+ // Create an own data property so an inherited setter cannot intercept the private-key passphrase.
182
184
  ...(passphrase === undefined ? {} : { passphrase }),
183
185
  });
184
186
  if (!leaf.checkPrivateKey(privateKey)) {
@@ -239,6 +241,7 @@ function credentialDispatcher(
239
241
  requestTls: VerifiedX509TLSOptions,
240
242
  ): { dispatcher: Agent | ProxyAgent; proxy: X509ProxyMode } {
241
243
  if (proxyOptionsInput === undefined) {
244
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The dispatcher owner returns one contract for direct Agents and both supported CONNECT proxy modes.
242
245
  return { dispatcher: new Agent({ connect: requestTls }), proxy: 'direct' };
243
246
  }
244
247
 
@@ -262,16 +265,20 @@ function credentialDispatcher(
262
265
  }
263
266
  const auth = proxyAuthentication(url);
264
267
 
268
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared transport contract preserves the same dispatcher and proxy types across both construction paths.
265
269
  return {
266
270
  proxy,
267
271
  dispatcher: new ProxyAgent({
268
272
  uri: url.href,
273
+ // Define proxy credentials as own data without invoking inherited setters.
269
274
  ...(auth === undefined ? {} : { auth }),
270
275
  requestTls,
276
+ // Keep the optional proxy TLS configuration as an own data property.
271
277
  ...(proxy === 'https-connect'
272
278
  ? {
273
279
  proxyTls: {
274
280
  rejectUnauthorized: true,
281
+ // Define explicit proxy trust roots as own data without invoking inherited setters.
275
282
  ...(proxyCA === undefined ? {} : { ca: proxyCA }),
276
283
  },
277
284
  }
@@ -300,6 +307,7 @@ export function createX509Transport(options: X509TransportOptions): X509Transpor
300
307
  transport: capability,
301
308
  identityProviderId,
302
309
  serviceAccountId,
310
+ // Preserve the cancellation signal as own data without invoking inherited setters.
303
311
  ...(signal ? { signal } : {}),
304
312
  }),
305
313
  run: (operation) =>
@@ -315,11 +323,13 @@ export function createX509Transport(options: X509TransportOptions): X509Transpor
315
323
  export function fromX509(options: X509CredentialOptions): X509Credential {
316
324
  const configured = validatedCredentialOptions(options);
317
325
 
318
- const requestTls = {
326
+ const requestTls: VerifiedX509TLSOptions = {
319
327
  cert: configured.certificateChain,
320
328
  key: configured.privateKey,
321
- rejectUnauthorized: true as const,
329
+ rejectUnauthorized: true,
330
+ // Define the TLS passphrase as own data so inherited setters cannot intercept it.
322
331
  ...(configured.passphrase === undefined ? {} : { passphrase: configured.passphrase }),
332
+ // Define explicit workload trust roots as own data without invoking inherited setters.
323
333
  ...(configured.ca === undefined ? {} : { ca: configured.ca }),
324
334
  };
325
335
  const { dispatcher, proxy } = credentialDispatcher(configured.proxy, requestTls);
@@ -335,6 +345,7 @@ export function fromX509(options: X509CredentialOptions): X509Credential {
335
345
  type: 'x509',
336
346
  identityProviderId: configured.identityProviderId,
337
347
  serviceAccountId: configured.serviceAccountId,
348
+ // Preserve the optional refresh setting as own data without invoking inherited setters.
338
349
  ...(configured.refreshBufferSeconds === undefined
339
350
  ? {}
340
351
  : { refreshBufferSeconds: configured.refreshBufferSeconds }),
package/src/azure.ts CHANGED
@@ -101,6 +101,7 @@ export class AzureOpenAI extends OpenAI {
101
101
  );
102
102
  }
103
103
 
104
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Azure accepts JavaScript credential configuration; distinguish static keys from callable token providers.
104
105
  if (typeof azureADTokenProvider === 'function') {
105
106
  dangerouslyAllowBrowser ??= true;
106
107
  }
@@ -143,6 +144,7 @@ export class AzureOpenAI extends OpenAI {
143
144
  apiKey: azureADTokenProvider ?? apiKey,
144
145
  baseURL,
145
146
  ...opts,
147
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
146
148
  ...(dangerouslyAllowBrowser === undefined ? {} : { dangerouslyAllowBrowser }),
147
149
  });
148
150
 
@@ -224,6 +226,7 @@ export class AzureOpenAI extends OpenAI {
224
226
  schemes?: { bearerAuth?: boolean; adminAPIKeyAuth?: boolean },
225
227
  ): Promise<NullableHeaders | undefined> {
226
228
  const security = schemes ?? { bearerAuth: true, adminAPIKeyAuth: true };
229
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Azure accepts JavaScript credential configuration; distinguish static keys from callable token providers.
227
230
  if (security.bearerAuth && typeof this._options.apiKey === 'string') {
228
231
  return buildHeaders([{ 'api-key': this.apiKey }]);
229
232
  }
package/src/bedrock.ts CHANGED
@@ -112,6 +112,7 @@ function addBedrockOutputText<ResponseT extends ResponsesAPI.Response>(response:
112
112
  function restoreBedrockStreamOutputText(responses: API.Responses): API.Responses {
113
113
  const stream = responses.stream.bind(responses);
114
114
 
115
+ // SAFETY: The wrapper forwards the original stream parameters and preserves its generic result, only repairing the final response's output_text property.
115
116
  responses.stream = ((body: ResponseStreamParams, options?: RequestOptions) => {
116
117
  const responseStream = stream(body, options);
117
118
  const finalResponse = responseStream.finalResponse.bind(responseStream);
@@ -162,6 +163,8 @@ export class BedrockOpenAI extends OpenAI {
162
163
  apiKey = readEnv('AWS_BEARER_TOKEN_BEDROCK') ?? null;
163
164
  }
164
165
 
166
+ // SAFETY: The widening keeps a runtime guard for JavaScript callers that supply an API-key function despite the declared string contract.
167
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Reject a JavaScript function supplied as a static Bedrock API key before it can become a credential.
165
168
  if (typeof (apiKey as unknown) === 'function') {
166
169
  throw new Errors.OpenAIError(
167
170
  'Pass refreshable Bedrock credentials via `bedrockTokenProvider`, not `apiKey`.',
@@ -281,8 +284,10 @@ export class BedrockOpenAI extends OpenAI {
281
284
  const bedrockTokenProvider =
282
285
  options.apiKey === undefined ? (options.bedrockTokenProvider ?? this.bedrockTokenProvider) : undefined;
283
286
 
287
+ // SAFETY: Bedrock options extend the base client options; forwarding them preserves the subclass's existing withOptions construction behavior.
284
288
  return super.withOptions({
285
289
  ...options,
290
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
286
291
  ...(bedrockTokenProvider ? { apiKey: undefined, bedrockTokenProvider } : {}),
287
292
  } as Partial<ClientOptions>);
288
293
  }
@@ -12,6 +12,7 @@ import { assertX509WebSocketSupported } from '../../internal/auth/x509-workload-
12
12
  /** Parses frame data without exposing malformed payloads through JSON syntax errors. */
13
13
  export function parseRealtimeEvent(data: string): RealtimeServerEvent {
14
14
  try {
15
+ // SAFETY: RealtimeServerEvent is the API wire contract; JSON syntax is checked here while future event types remain accepted at runtime.
15
16
  return JSON.parse(data) as RealtimeServerEvent;
16
17
  } catch (error) {
17
18
  if (error instanceof SyntaxError) {
@@ -86,6 +87,7 @@ type RealtimeEvents = Simplify<
86
87
  type: EventType;
87
88
  }
88
89
  >,
90
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Preserve the published event-callback contract, which accepts and ignores arbitrary return values.
89
91
  ) => unknown;
90
92
  }
91
93
  >;
@@ -37,6 +37,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
37
37
  return true;
38
38
  }
39
39
 
40
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
40
41
  const scope = globalThis as RuntimeScope;
41
42
  return (
42
43
  typeof scope.WorkerGlobalScope === 'function' &&
@@ -55,6 +56,7 @@ function isRunningInBrowserOrBrowserWorker(): boolean {
55
56
 
56
57
  /** Reports whether the runtime supports request headers in native WebSocket options. */
57
58
  function supportsWebSocketRequestHeaders(): boolean {
59
+ // SAFETY: RuntimeScope describes optional host capabilities; the following predicates verify their presence and value before use.
58
60
  const scope = globalThis as RuntimeScope;
59
61
  if (
60
62
  isRunningInBrowserOrBrowserWorker() ||
@@ -189,7 +191,9 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
189
191
  ) {
190
192
  super();
191
193
  let apiKey = getRealtimeAPIKey(client, props.__apiKey);
194
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
192
195
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
196
+ // SAFETY: The supplied OpenAI client owns _options; these compatibility reads preserve its provider and browser-consent settings.
193
197
  const dangerouslyAllowBrowser =
194
198
  props.dangerouslyAllowBrowser ??
195
199
  (client as any)?._options?.dangerouslyAllowBrowser ??
@@ -265,7 +269,12 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
265
269
  });
266
270
 
267
271
  this.socket.addEventListener('error', (event: any) => {
268
- this._onError(null, event.message, null);
272
+ // Native ErrorEvents can carry an empty message while `error` still holds the failure.
273
+ const cause = event.error ?? null;
274
+ const message = [event.message, cause?.message].find(
275
+ (value) => typeof value === 'string' && value !== '',
276
+ );
277
+ this._onError(null, message ?? 'unknown error', cause);
269
278
  });
270
279
  }
271
280
 
@@ -329,6 +338,7 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
329
338
  return new OpenAIRealtimeWebSocket(
330
339
  {
331
340
  model: deploymentName,
341
+ // Preserve explicit browser consent as an own data property without invoking an inherited setter.
332
342
  ...(dangerouslyAllowBrowser === undefined ? {} : { dangerouslyAllowBrowser }),
333
343
  __resolvedApiKey: isApiKeyProvider,
334
344
  __apiKey: apiKey,
@@ -60,6 +60,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
60
60
  super();
61
61
  client ??= new OpenAI();
62
62
  const apiKey = props.__apiKey === undefined ? client.apiKey : props.__apiKey;
63
+ // SAFETY: The supplied OpenAI client owns _options; this read detects its existing API-key provider without changing its public surface.
63
64
  const hasProvider = typeof (client as any)?._options?.apiKey === 'function';
64
65
  if (hasProvider && !props.__resolvedApiKey) {
65
66
  throw new Error(
@@ -75,6 +76,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
75
76
  const headers = {
76
77
  'User-Agent': `${client.constructor.name}/JS ${VERSION}`,
77
78
  ...props.options?.headers,
79
+ // A credential must be an own data property without invoking an inherited setter.
78
80
  ...(isAzure(client) && !props.__resolvedApiKey ? {} : { Authorization: `Bearer ${apiKey}` }),
79
81
  'OpenAI-Beta': 'realtime=v1',
80
82
  };
@@ -186,6 +188,7 @@ export class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
186
188
  ...props.options,
187
189
  headers: {
188
190
  ...props.options?.headers,
191
+ // A credential must be an own data property without invoking an inherited setter.
189
192
  ...(isApiKeyProvider ? {} : { 'api-key': apiKey }),
190
193
  },
191
194
  },
package/src/client.ts CHANGED
@@ -856,6 +856,10 @@ export class OpenAI {
856
856
  return Errors.APIError.generate(status, normalizedError, message, headers);
857
857
  }
858
858
 
859
+ _hasApiKeyProvider(): boolean {
860
+ return typeof this._options.apiKey === 'function';
861
+ }
862
+
859
863
  /**
860
864
  * Resolves a function-based API key and retains the resolved value on this client.
861
865
  * Returns whether a provider was invoked. Internal callers can capture this
@@ -1108,6 +1112,8 @@ export class OpenAI {
1108
1112
  props.options,
1109
1113
  retriesRemaining,
1110
1114
  props.retryOfRequestLogID ?? props.requestLogID,
1115
+ undefined,
1116
+ props.requestSignal,
1111
1117
  );
1112
1118
  Object.assign(props, next);
1113
1119
  } finally {
@@ -1318,7 +1324,13 @@ export class OpenAI {
1318
1324
  message: x509Authentication ? 'X.509 workload identity API connection failed.' : response.message,
1319
1325
  }),
1320
1326
  );
1321
- return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);
1327
+ return this.retryRequest(
1328
+ options,
1329
+ retriesRemaining,
1330
+ retryOfRequestLogID ?? requestLogID,
1331
+ undefined,
1332
+ req.signal,
1333
+ );
1322
1334
  }
1323
1335
  const terminalMessage = hasStreamingBody
1324
1336
  ? 'error; streaming body cannot be retried'
@@ -1442,6 +1454,7 @@ export class OpenAI {
1442
1454
  retriesRemaining,
1443
1455
  retryOfRequestLogID ?? requestLogID,
1444
1456
  response.headers,
1457
+ req.signal,
1445
1458
  );
1446
1459
  }
1447
1460
 
@@ -1497,7 +1510,15 @@ export class OpenAI {
1497
1510
  helperMethod: options.__metadata?.['helperMethod'],
1498
1511
  ...(continueRequest ? { continueRequest } : {}),
1499
1512
  });
1500
- return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };
1513
+ return {
1514
+ response,
1515
+ options,
1516
+ controller,
1517
+ requestSignal: req.signal,
1518
+ requestLogID,
1519
+ retryOfRequestLogID,
1520
+ startTime,
1521
+ };
1501
1522
  }
1502
1523
 
1503
1524
  getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(
@@ -1638,6 +1659,7 @@ export class OpenAI {
1638
1659
  retriesRemaining: number,
1639
1660
  requestLogID: string,
1640
1661
  responseHeaders?: Headers | undefined,
1662
+ requestSignal: AbortSignal | null | undefined = options.signal,
1641
1663
  ): Promise<APIResponseProps> {
1642
1664
  let timeoutMillis: number | undefined;
1643
1665
 
@@ -1685,7 +1707,17 @@ export class OpenAI {
1685
1707
  if (x509Authentication) {
1686
1708
  await x509Authentication.waitForRetry(timeoutMillis, x509Authentication.effectiveSignal());
1687
1709
  } else {
1688
- await sleep(timeoutMillis);
1710
+ const retrySignals =
1711
+ requestSignal === options.signal ? [requestSignal] : [requestSignal, options.signal];
1712
+ try {
1713
+ await sleep(timeoutMillis, ...retrySignals);
1714
+ } catch (error) {
1715
+ const abortedSignal = retrySignals.find((signal) => signal?.aborted);
1716
+ if (abortedSignal) {
1717
+ throw this._makeUserAbortError(abortedSignal);
1718
+ }
1719
+ throw error;
1720
+ }
1689
1721
  }
1690
1722
 
1691
1723
  return this.makeRequest(options, retriesRemaining - 1, requestLogID);
@@ -54,12 +54,14 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
54
54
  return this;
55
55
  }
56
56
 
57
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
57
58
  const emittedRegistration = this.#emittedListenerRegistrations.get(listener as object);
58
59
  if (
59
60
  emittedRegistration?.event === event &&
60
61
  !emittedRegistration.registration.removed &&
61
62
  !emittedRegistration.registration.detached
62
63
  ) {
64
+ // SAFETY: The stored registration event was compared with this event above, preserving the event/listener type correlation.
63
65
  this.#removeEmittedListener(
64
66
  event,
65
67
  emittedRegistration.registration as EventListeners<EventTypes, Event>[number],
@@ -101,6 +103,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
101
103
  registration?.listener === listener &&
102
104
  registration.once
103
105
  ) {
106
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
104
107
  this.#emittedListenerRegistrations.set(listener as object, { event, registration });
105
108
  }
106
109
  }
@@ -114,6 +117,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
114
117
  }
115
118
 
116
119
  registration.removed = true;
120
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
117
121
  this.#emittedListenerRegistrations.delete(registration.listener as object);
118
122
  this.#pendingListenerCleanup.add(event);
119
123
  if (this.#listenerDispatchDepth === 0) {
@@ -123,9 +127,11 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
123
127
 
124
128
  #cleanupEmittedListeners(): void {
125
129
  for (const event of this.#pendingListenerCleanup) {
130
+ // SAFETY: Pending cleanup keys are added only from registered EventTypes events; the key retains its event-map membership.
126
131
  const eventType = event as keyof EventTypes;
127
132
  const listeners = this.#listeners[eventType];
128
133
  if (listeners) {
134
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
129
135
  this.#listeners[eventType] = listeners.filter((listener) => !listener.removed) as any;
130
136
  }
131
137
  }
@@ -150,21 +156,27 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
150
156
  ): Promise<EmittedEventResult<EventParameters<EventTypes, Event>>> {
151
157
  return new Promise((resolve, reject) => {
152
158
  const listeners = {
159
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Failures and rejection reasons can be arbitrary JavaScript values; preserve them until inspection or forwarding.
153
160
  onError: (error: unknown) => {
161
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
154
162
  this.off(event, listeners.onEvent as any);
155
163
  reject(error);
156
164
  },
157
165
  onEvent: (...values: unknown[]) => {
158
166
  if (event !== 'error') {
167
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
159
168
  this.off('error', listeners.onError as any);
160
169
  }
170
+ // SAFETY: The emitted API returns the sole argument or the full tuple according to its existing EventTypes-dependent result contract.
161
171
  resolve((values.length > 1 ? values : values[0]) as any);
162
172
  },
163
173
  };
164
174
 
165
175
  if (event !== 'error') {
176
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
166
177
  this.#onceForEmitted('error', listeners.onError as any);
167
178
  }
179
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
168
180
  this.#onceForEmitted(event, listeners.onEvent as any);
169
181
  });
170
182
  }
@@ -176,6 +188,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
176
188
  ) {
177
189
  const listeners: EventListeners<EventTypes, Event> | undefined = this.#listeners[event];
178
190
  if (listeners) {
191
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
179
192
  this.#listeners[event] = listeners.filter((listener) => {
180
193
  if (listener.once) {
181
194
  listener.detached = true;
@@ -186,10 +199,12 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
186
199
  let firstListenerError: unknown;
187
200
  this.#listenerDispatchDepth += 1;
188
201
  try {
202
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
189
203
  for (const registration of listeners as any) {
190
204
  if (!registration.removed) {
191
205
  try {
192
206
  const { listener } = registration;
207
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
193
208
  listener(...(args as any));
194
209
  } catch (error) {
195
210
  if (!listenerThrew) {
@@ -139,7 +139,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
139
139
  let data;
140
140
 
141
141
  try {
142
- data = JSON.parse(sse.data) as any;
142
+ data = JSON.parse(sse.data);
143
143
  } catch {
144
144
  logger.error(`Could not parse message into JSON:`);
145
145
  logger.error(`From chunk:`);
@@ -164,6 +164,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
164
164
  logger.error(`From chunk:`);
165
165
  throw new SyntaxError('Error reading response: malformed server-sent event JSON.');
166
166
  }
167
+ // SAFETY: Named SSE events use the public stream's event/data envelope; Item is the caller-selected API event contract.
167
168
  yield { event: sse.event, data } as any;
168
169
  }
169
170
  }
@@ -264,6 +265,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
264
265
  if (line) {
265
266
  let data: Item;
266
267
  try {
268
+ // SAFETY: Item is the caller's NDJSON response contract; JSON syntax is parsed here without a per-resource runtime schema.
267
269
  data = JSON.parse(line) as Item;
268
270
  } catch (error) {
269
271
  if (error instanceof SyntaxError) {
@@ -352,10 +354,13 @@ export class Stream<Item> implements AsyncIterable<Item> {
352
354
  * which can be turned back into a Stream with `Stream.fromReadableStream()`.
353
355
  * Canceling a response-backed readable aborts its request. Canceling a tee
354
356
  * branch discards its buffered events and leaves sibling consumers running.
357
+ * Read or serialization failures also release the iterator without replacing the original error.
355
358
  */
356
359
  toReadableStream(): ReadableStream {
357
360
  const { controller } = this;
358
361
  let iter: AsyncIterator<Item>;
362
+ let cancellation: Promise<void> | undefined;
363
+ const cancel = () => (cancellation ??= this.#cancelIterator(iter, controller));
359
364
 
360
365
  return makeReadableStream({
361
366
  start: async () => {
@@ -373,9 +378,12 @@ export class Stream<Item> implements AsyncIterable<Item> {
373
378
  ctrl.enqueue(bytes);
374
379
  } catch (err) {
375
380
  ctrl.error(err);
381
+ // An errored readable never invokes its cancel hook. Release the source ourselves,
382
+ // without letting failed or stalled cleanup replace the read/serialization error.
383
+ void cancel().catch(() => undefined);
376
384
  }
377
385
  },
378
- cancel: () => this.#cancelIterator(iter, controller),
386
+ cancel,
379
387
  });
380
388
  }
381
389
 
@@ -385,6 +393,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
385
393
  if (!this.#isTeeBranch) {
386
394
  controller.abort();
387
395
  }
396
+ // oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the captured iterator method with its receiver even if a caller-supplied function shadows call.
388
397
  await Reflect.apply(returnMethod, iterator, []);
389
398
  }
390
399
  }
@@ -524,6 +533,7 @@ export async function* _iterSSEMessages(
524
533
  ): AsyncGenerator<ServerSentEvent, void, unknown> {
525
534
  if (!response.body) {
526
535
  controller.abort();
536
+ // SAFETY: navigator is optional across SDK runtimes; this compatibility branch checks its presence before identifying React Native.
527
537
  if (
528
538
  (globalThis as any).navigator !== undefined &&
529
539
  (globalThis as any).navigator.product === 'ReactNative'
@@ -569,6 +579,15 @@ export async function* _iterSSEMessages(
569
579
  yield sse;
570
580
  }
571
581
  }
582
+ // Servers sometimes omit the trailing blank line that normally
583
+ // terminates the last event. Flush any in-progress event exactly once.
584
+ if (signal.aborted) {
585
+ return;
586
+ }
587
+ const pending = sseDecoder.flush();
588
+ if (pending) {
589
+ yield pending;
590
+ }
572
591
  } catch (error) {
573
592
  failed = true;
574
593
  if (!signal.aborted || (!isAbortError(error) && error !== signal.reason)) {
@@ -699,6 +718,15 @@ class SSEDecoder {
699
718
 
700
719
  return null;
701
720
  }
721
+
722
+ /**
723
+ * Emits a pending event at EOF when the stream omitted the trailing blank
724
+ * line. Returns `null` when no event is in progress so a record that already
725
+ * ended with a blank line is not delivered twice.
726
+ */
727
+ flush(): ServerSentEvent | null {
728
+ return this.decode('');
729
+ }
702
730
  }
703
731
 
704
732
  function partition(str: string, delimiter: string): [string, string, string] {
@@ -47,11 +47,13 @@ async function nodejsPlayAudio(stream: NodeJS.ReadableStream | Response | File):
47
47
  try {
48
48
  let source: NodeJS.ReadableStream;
49
49
  if (isResponse(stream)) {
50
+ // SAFETY: Fetch implementations may expose a web or Node response body; the following pipe check selects the matching stream adapter.
50
51
  const body = stream.body as NodeReadableStream | NodeJS.ReadableStream | null;
51
52
  if (!body) {
52
53
  throw new Error('Cannot play audio from a response without a body');
53
54
  }
54
55
 
56
+ // SAFETY: The preceding branch handled Node pipe streams; the remaining response body follows the web ReadableStream contract consumed by fromWeb.
55
57
  source =
56
58
  'pipe' in body && typeof body.pipe === 'function'
57
59
  ? body