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
@@ -1,11 +1,5 @@
1
1
  import { MalformedJSON, partialParse } from '../_vendor/partial-json-parser/parser';
2
- import {
3
- APIError,
4
- APIUserAbortError,
5
- ContentFilterFinishReasonError,
6
- LengthFinishReasonError,
7
- OpenAIError,
8
- } from '../error';
2
+ import { APIError, ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from '../error';
9
3
  import type OpenAI from '../index';
10
4
  import { observeJSONRequestBody, type RequestOptions } from '../internal/request-options';
11
5
  import type { ReadableStream } from '../internal/shim-types';
@@ -35,8 +29,20 @@ import type {
35
29
  } from '../resources/chat/completions/completions';
36
30
  import { Stream } from '../streaming';
37
31
  import { AbstractChatCompletionRunner } from './AbstractChatCompletionRunner';
38
- import type { AbstractChatCompletionRunnerEvents } from './AbstractChatCompletionRunner';
32
+ import type { AbstractChatCompletionRunnerEvents, RunnerOptions } from './AbstractChatCompletionRunner';
33
+ import type {
34
+ ChatCompletionRunner,
35
+ ChatCompletionToolRunnerParamsWithContext,
36
+ ChatCompletionToolRunnerParamsWithoutContext,
37
+ } from './ChatCompletionRunner';
38
+ import type {
39
+ ChatCompletionStreamingRunner,
40
+ ChatCompletionStreamingToolRunnerParamsWithContext,
41
+ ChatCompletionStreamingToolRunnerParamsWithoutContext,
42
+ } from './ChatCompletionStreamingRunner';
43
+ import type { BaseFunctionsArgs } from './RunnableFunction';
39
44
 
45
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Partial JSON may have any shape; callers validate or parse it against their response schema.
40
46
  function parseStructuredStreamingJSON(content: string): unknown {
41
47
  try {
42
48
  return partialParse(content);
@@ -218,6 +224,7 @@ export function makeChatCompletionReadableStreamMessageChunk(
218
224
  const payload: ChatCompletionReadableStreamMessage = {
219
225
  type: 'message',
220
226
  message,
227
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
221
228
  ...(toolCallIds ? { tool_call_ids: toolCallIds } : {}),
222
229
  };
223
230
 
@@ -248,6 +255,7 @@ function getChatCompletionReadableStreamMessage(
248
255
  return item;
249
256
  }
250
257
 
258
+ // SAFETY: This decoder reads the SDK's tagged readable-stream envelope; JSON parsing restores its serialized message fields for the stream accumulator.
251
259
  return JSON.parse(
252
260
  item.object.slice(CHAT_COMPLETION_READABLE_STREAM_MESSAGE_PREFIX.length),
253
261
  ) as ChatCompletionReadableStreamMessage;
@@ -465,16 +473,18 @@ function reservePartialJSONParse(state: PartialJSONParseState, budget: PartialJS
465
473
  }
466
474
 
467
475
  function captureStructuredJSONSnapshot(
468
- snapshot: object,
476
+ snapshot: ChatCompletionSnapshot.Choice.Message | ChatCompletionSnapshot.Choice.Message.ToolCall.Function,
469
477
  property: 'content' | 'arguments' | 'refusal',
470
478
  ): string | null | undefined {
471
479
  const descriptor = Object.getOwnPropertyDescriptor(snapshot, property);
472
480
  if (!descriptor) {
481
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
473
482
  let prototype = Object.getPrototypeOf(snapshot) as object | null;
474
483
  for (let depth = 0; prototype !== null; depth += 1) {
475
484
  if (depth >= MAX_PARTIAL_JSON_DEPTH || Object.getOwnPropertyDescriptor(prototype, property)) {
476
485
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
477
486
  }
487
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
478
488
  prototype = Object.getPrototypeOf(prototype) as object | null;
479
489
  }
480
490
  return undefined;
@@ -486,6 +496,7 @@ function captureStructuredJSONSnapshot(
486
496
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
487
497
  }
488
498
 
499
+ // SAFETY: The own data descriptor was explicitly checked to contain only a string, null, or undefined.
489
500
  return descriptor.value as string | null | undefined;
490
501
  }
491
502
 
@@ -502,22 +513,25 @@ function captureStructuredMessageSnapshot(
502
513
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
503
514
  }
504
515
 
516
+ // SAFETY: The choice contract supplies a message; the own data descriptor check prevents getters from changing which object is captured.
505
517
  return descriptor.value as ChatCompletionSnapshot.Choice.Message;
506
518
  }
507
519
 
508
520
  function captureSnapshotArray<Item>(
509
- snapshot: object,
521
+ snapshot: ChatCompletionSnapshot | ChatCompletionSnapshot.Choice.Message,
510
522
  property: 'choices' | 'tool_calls',
511
523
  maximum: number,
512
524
  kind: 'choice' | 'tool-call',
513
525
  ): Item[] | undefined {
514
526
  const descriptor = Object.getOwnPropertyDescriptor(snapshot, property);
515
527
  if (!descriptor) {
528
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
516
529
  let prototype = Object.getPrototypeOf(snapshot) as object | null;
517
530
  for (let depth = 0; prototype !== null; depth += 1) {
518
531
  if (depth >= MAX_PARTIAL_JSON_DEPTH || Object.getOwnPropertyDescriptor(prototype, property)) {
519
532
  throw new OpenAIError(`Chat completion stream contains an unsafe snapshot ${kind} collection`);
520
533
  }
534
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
521
535
  prototype = Object.getPrototypeOf(prototype) as object | null;
522
536
  }
523
537
  return undefined;
@@ -531,6 +545,7 @@ function captureSnapshotArray<Item>(
531
545
  throw new OpenAIError(`Chat completion stream exceeded its snapshot ${kind} limit`);
532
546
  }
533
547
 
548
+ // SAFETY: The captured data property is an array with a checked bounded length; Item comes from the owning snapshot collection's contract.
534
549
  return descriptor.value as Item[];
535
550
  }
536
551
 
@@ -543,6 +558,7 @@ function captureSnapshotArrayItem<Item>(array: Item[], index: number): Item | un
543
558
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
544
559
  }
545
560
 
561
+ // SAFETY: The descriptor is a data property of the typed Item array, so its value retains that array's element contract.
546
562
  return descriptor.value as Item;
547
563
  }
548
564
 
@@ -568,6 +584,7 @@ function mapCapturedSnapshotArray<Item, Mapped>(
568
584
  if (!('value' in item)) {
569
585
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
570
586
  }
587
+ // SAFETY: The descriptor is a data property of the typed Item array, so its value retains that array's element contract.
571
588
  mapped[index] = map(item.value as Item, index);
572
589
  }
573
590
 
@@ -616,6 +633,7 @@ function assertBoundToolCallIdentity(toolCall: PartialToolCallSnapshot, identity
616
633
  }
617
634
  }
618
635
 
636
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- This assignment primitive copies own properties from heterogeneous snapshot and delta objects.
619
637
  function assignOwnProperties<T extends object>(target: T, source: object): T {
620
638
  if (Object.prototype.propertyIsEnumerable.call(source, '__proto__') && !hasOwn(target, '__proto__')) {
621
639
  Object.defineProperty(target, '__proto__', {
@@ -641,6 +659,7 @@ function cloneParserConfigObject<Value extends object>(
641
659
  }
642
660
 
643
661
  descriptors[field] = {
662
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Generic config cloning must resolve inherited/accessor keys outside the declared config shape.
644
663
  value: descriptor && 'value' in descriptor ? descriptor.value : Reflect.get(value, field, value),
645
664
  enumerable: descriptor?.enumerable ?? false,
646
665
  configurable: descriptor?.configurable ?? true,
@@ -648,6 +667,7 @@ function cloneParserConfigObject<Value extends object>(
648
667
  };
649
668
  }
650
669
 
670
+ // SAFETY: The clone preserves the original prototype and descriptors, replacing only the parser metadata captured from that same value.
651
671
  return Object.create(Object.getPrototypeOf(value), descriptors) as Value;
652
672
  }
653
673
 
@@ -670,6 +690,7 @@ function snapshotChatCompletionParserParams(params: ChatCompletionCreateParams):
670
690
  continue;
671
691
  }
672
692
 
693
+ // SAFETY: This own data descriptor comes from the request's typed tools array; the following code captures its parser metadata.
673
694
  const tool = item.value as NonNullable<ChatCompletionCreateParams['tools']>[number];
674
695
  const stableTool = cloneParserConfigObject(tool, [
675
696
  'type',
@@ -690,6 +711,7 @@ function snapshotChatCompletionParserParams(params: ChatCompletionCreateParams):
690
711
  };
691
712
  }
692
713
 
714
+ // SAFETY: The cloned tool retains the original prototype and descriptors while substituting its captured parser configuration.
693
715
  stableTools[index] = Object.create(Object.getPrototypeOf(tool), descriptors) as typeof tool;
694
716
  }
695
717
  snapshot.tools = stableTools;
@@ -763,6 +785,7 @@ function canonicalSerializedParserSchema(
763
785
  return true;
764
786
  };
765
787
 
788
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
766
789
  const visit = (current: unknown, depth: number): CanonicalSerializedParserValue => {
767
790
  if (depth > MAX_SERIALIZED_PARSER_SCHEMA_DEPTH || budget.nodes >= MAX_SERIALIZED_PARSER_SCHEMA_NODES) {
768
791
  return UNSAFE_SERIALIZED_PARSER_VALUE;
@@ -792,6 +815,7 @@ function canonicalSerializedParserSchema(
792
815
  }
793
816
 
794
817
  const array = Array.isArray(current);
818
+ // SAFETY: Object.getPrototypeOf returns an object or null; the following traversal checks inherited properties without assuming a specific prototype type.
795
819
  const prototype = Object.getPrototypeOf(current) as object | null;
796
820
  if (
797
821
  (array && prototype !== Array.prototype) ||
@@ -923,7 +947,9 @@ function canonicalSerializedParserSchema(
923
947
 
924
948
  function rememberSerializedParserSchema(
925
949
  signatures: WeakMap<object, string>,
950
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Parser owners are tracked by identity before their metadata descriptors are validated.
926
951
  source: object,
952
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Serialized schema holders may be arbitrary objects with hostile accessors or prototypes.
927
953
  holder: object,
928
954
  key: string,
929
955
  ): void {
@@ -947,7 +973,9 @@ function rememberSerializedParserSchema(
947
973
 
948
974
  function hasMatchingSerializedParserSchema(
949
975
  signatures: WeakMap<object, string>,
976
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Parser signatures belong to the original object identity, independent of its fields.
950
977
  source: object | undefined,
978
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The schema holder is inspected through own descriptors before its contents are trusted.
951
979
  holder: object,
952
980
  key: string,
953
981
  value: unknown,
@@ -973,7 +1001,7 @@ function serializedParserDescriptor(
973
1001
 
974
1002
  function shadowSerializedParserMetadata(
975
1003
  descriptors: PropertyDescriptorMap,
976
- source: object,
1004
+ source: ChatCompletionInputTool | ChatCompletionResponseFormat,
977
1005
  fields: readonly string[],
978
1006
  ): void {
979
1007
  for (const field of fields) {
@@ -994,6 +1022,7 @@ function shadowSerializedParserMetadata(
994
1022
  }
995
1023
 
996
1024
  function snapshotSerializedParserTool(serialized: SerializedToolParserConfig): ChatCompletionInputTool {
1025
+ // SAFETY: The fallback is a serialization scaffold: the code below installs the captured wire fields before the tool is returned.
997
1026
  const source =
998
1027
  serialized.source ??
999
1028
  ({
@@ -1008,10 +1037,12 @@ function snapshotSerializedParserTool(serialized: SerializedToolParserConfig): C
1008
1037
  descriptors.function = serializedParserDescriptor(descriptors.function, undefined);
1009
1038
  }
1010
1039
  shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw', '$callback']);
1040
+ // SAFETY: The descriptors reconstruct the tool's captured serialized fields and shadow parser metadata while retaining its original prototype.
1011
1041
  return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionInputTool;
1012
1042
  }
1013
1043
 
1014
1044
  const descriptor = descriptors.function;
1045
+ // SAFETY: The preceding guard proves this data descriptor contains a non-null object; no more specific type is assumed.
1015
1046
  const original =
1016
1047
  descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value !== null
1017
1048
  ? (descriptor.value as object)
@@ -1033,21 +1064,25 @@ function snapshotSerializedParserTool(serialized: SerializedToolParserConfig): C
1033
1064
  shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw', '$callback']);
1034
1065
  }
1035
1066
 
1067
+ // SAFETY: The descriptors reconstruct the tool's captured serialized fields and shadow parser metadata while retaining its original prototype.
1036
1068
  return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionInputTool;
1037
1069
  }
1038
1070
 
1039
1071
  function snapshotSerializedResponseFormat(
1040
1072
  serialized: SerializedResponseParserConfig,
1041
1073
  ): ChatCompletionResponseFormat {
1074
+ // SAFETY: The fallback seeds only the discriminator; the captured response-format fields are installed below before returning it.
1042
1075
  const source = serialized.source ?? ({ type: serialized.type } as ChatCompletionResponseFormat);
1043
1076
  const descriptors = Object.getOwnPropertyDescriptors(source);
1044
1077
  descriptors.type = serializedParserDescriptor(descriptors.type, serialized.type);
1045
1078
  if (serialized.type !== 'json_schema' || !serialized.source || !serialized.schemaMatches) {
1046
1079
  shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw']);
1047
1080
  }
1081
+ // SAFETY: The descriptors restore the captured response-format fields and parser metadata on the original prototype.
1048
1082
  return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionResponseFormat;
1049
1083
  }
1050
1084
 
1085
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The serialization visitor accepts arbitrary object and array holders, inspecting own descriptors only.
1051
1086
  function ownSerializedParserObject(holder: object, key: string): object | undefined {
1052
1087
  const descriptor = Object.getOwnPropertyDescriptor(holder, key);
1053
1088
  if (!descriptor || !('value' in descriptor)) {
@@ -1126,6 +1161,8 @@ function observeSerializedChatCompletionParserParams(
1126
1161
  if (Array.isArray(value)) {
1127
1162
  tools = new Proxy(value, {
1128
1163
  get(target, property) {
1164
+ // SAFETY: Proxy property values may be arbitrary; unknown preserves that uncertainty before the property-specific checks below.
1165
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys with the original target as accessor receiver.
1129
1166
  const actual = Reflect.get(target, property, target) as unknown;
1130
1167
  if (typeof property === 'string') {
1131
1168
  const index = Number(property);
@@ -1254,6 +1291,7 @@ export class ChatCompletionStream<ParsedT = null>
1254
1291
  implements AsyncIterable<ChatCompletionChunk>
1255
1292
  {
1256
1293
  #params: ChatCompletionCreateParams | null;
1294
+ #rejectsUnfinishedTurns = false;
1257
1295
  #audioDoneChoiceIndexes: Set<number>;
1258
1296
  #choiceEventStates: ChoiceEventState[];
1259
1297
  #currentChatCompletionSnapshot: ChatCompletionSnapshot | undefined;
@@ -1276,6 +1314,7 @@ export class ChatCompletionStream<ParsedT = null>
1276
1314
  if (!descriptor || !('value' in descriptor)) {
1277
1315
  continue;
1278
1316
  }
1317
+ // SAFETY: The descriptor is read from the typed request tools array and checked as an own data property before accessing the tool.
1279
1318
  const tool = descriptor.value as ChatCompletionInputTool;
1280
1319
  if (
1281
1320
  isChatCompletionFunctionTool(tool) &&
@@ -1313,6 +1352,7 @@ export class ChatCompletionStream<ParsedT = null>
1313
1352
  params: ChatCompletionStreamParams,
1314
1353
  options?: RequestOptions,
1315
1354
  ): ChatCompletionStream<ParsedT> {
1355
+ // SAFETY: The runner forces stream: true when sending this request; the same parameters retain the caller's parsing configuration.
1316
1356
  const runner = new ChatCompletionStream<ParsedT>(params as ChatCompletionCreateParamsStreaming);
1317
1357
  runner._run(() =>
1318
1358
  runner._runChatCompletion(
@@ -1490,10 +1530,12 @@ export class ChatCompletionStream<ParsedT = null>
1490
1530
  }
1491
1531
 
1492
1532
  if (toolCallSnapshot.type === 'function') {
1533
+ // SAFETY: The find predicate verifies the function-tool discriminator before matching its name; the cast carries that refinement through find.
1493
1534
  const inputTool = this.#params?.tools?.find(
1494
1535
  (tool) => isChatCompletionFunctionTool(tool) && tool.function.name === toolCallSnapshot.function.name,
1495
1536
  ) as ChatCompletionFunctionTool | undefined; // TS doesn't narrow based on isChatCompletionTool
1496
1537
 
1538
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The initial null is replaced with an arbitrary tool-parser result after snapshot validation.
1497
1539
  let parsedArguments: unknown = null;
1498
1540
  const parseable = isAutoParsableTool(inputTool) || inputTool?.function.strict === true;
1499
1541
  let argumentsSnapshot: string;
@@ -1680,6 +1722,7 @@ export class ChatCompletionStream<ParsedT = null>
1680
1722
  if (!descriptor || !('value' in descriptor)) {
1681
1723
  throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1682
1724
  }
1725
+ // SAFETY: The tool-call function is captured through an own data descriptor; its fields are subsequently checked by the structured snapshot reader.
1683
1726
  const fn = descriptor.value as ChatCompletionSnapshot.Choice.Message.ToolCall.Function;
1684
1727
  const argumentsSnapshot = captureStructuredJSONSnapshot(fn, 'arguments');
1685
1728
  if (typeof argumentsSnapshot !== 'string') {
@@ -1717,6 +1760,21 @@ export class ChatCompletionStream<ParsedT = null>
1717
1760
  return finalizeChatCompletion(snapshot, this.#params, audioDoneChoiceIndexes, validatedMessages);
1718
1761
  }
1719
1762
 
1763
+ /** Rejects unfinished turns before tool callbacks while preserving ordinary stream and replay behavior. */
1764
+ protected override _runTools<FunctionsArgs extends BaseFunctionsArgs, ToolContext>(
1765
+ client: OpenAI,
1766
+ params:
1767
+ | ChatCompletionToolRunnerParamsWithContext<FunctionsArgs, ToolContext>
1768
+ | ChatCompletionToolRunnerParamsWithoutContext<FunctionsArgs>
1769
+ | ChatCompletionStreamingToolRunnerParamsWithContext<FunctionsArgs, ToolContext>
1770
+ | ChatCompletionStreamingToolRunnerParamsWithoutContext<FunctionsArgs>,
1771
+ runner: ChatCompletionRunner<any> | ChatCompletionStreamingRunner<any>,
1772
+ options?: RunnerOptions,
1773
+ ): Promise<void> {
1774
+ this.#rejectsUnfinishedTurns = true;
1775
+ return super._runTools(client, params, runner, options);
1776
+ }
1777
+
1720
1778
  protected override async _createChatCompletion(
1721
1779
  client: OpenAI,
1722
1780
  params: ChatCompletionCreateParams,
@@ -1757,7 +1815,7 @@ export class ChatCompletionStream<ParsedT = null>
1757
1815
  this.#addChunk(chunk);
1758
1816
  }
1759
1817
  if (stream.controller.signal?.aborted) {
1760
- throw new APIUserAbortError();
1818
+ throw this._userAbortError();
1761
1819
  }
1762
1820
  return this._addChatCompletion(this.#endRequest());
1763
1821
  }
@@ -1810,7 +1868,7 @@ export class ChatCompletionStream<ParsedT = null>
1810
1868
  }
1811
1869
  }
1812
1870
  if (stream.controller.signal?.aborted) {
1813
- throw new APIUserAbortError();
1871
+ throw this._userAbortError();
1814
1872
  }
1815
1873
  if (this.#currentChatCompletionSnapshot) {
1816
1874
  return this._addChatCompletion(this.#endRequest());
@@ -1896,7 +1954,7 @@ export class ChatCompletionStream<ParsedT = null>
1896
1954
  if (finish_reason) {
1897
1955
  choice.finish_reason = finish_reason;
1898
1956
 
1899
- if (this.#params && hasAutoParseableInput(this.#params)) {
1957
+ if (this.#params && (this.#rejectsUnfinishedTurns || hasAutoParseableInput(this.#params))) {
1900
1958
  if (finish_reason === 'length') {
1901
1959
  throw new LengthFinishReasonError();
1902
1960
  }
@@ -1915,6 +1973,7 @@ export class ChatCompletionStream<ParsedT = null>
1915
1973
  } // Shouldn't happen; just in case.
1916
1974
 
1917
1975
  this.#audioDoneChoiceIndexes.delete(index);
1976
+ // SAFETY: Streaming audio fields arrive incrementally even though the generated delta type omits them; each present field is merged below.
1918
1977
  const { audio, content, refusal, function_call, role, ...capturedDeltaFields } =
1919
1978
  delta as typeof delta & {
1920
1979
  audio?: Partial<ChatCompletionAudio> | null;
@@ -2001,6 +2060,7 @@ export class ChatCompletionStream<ParsedT = null>
2001
2060
  // Tool calls are built up across chunks, so while the stream is in progress the
2002
2061
  // entries are only partially filled in; they match `ChatCompletionSnapshot.Choice.Message.ToolCall`
2003
2062
  // once every delta for them has been accumulated.
2063
+ // SAFETY: This SDK-owned collection holds partial tool calls during accumulation; finalization checks required fields before exposing completed calls.
2004
2064
  const toolCallSnapshots = (choice.message.tool_calls ??= []) as PartialToolCallSnapshot[];
2005
2065
 
2006
2066
  for (const toolCallDelta of tool_calls) {
@@ -2159,6 +2219,7 @@ function finalizeChatCompletion<ParsedT>(
2159
2219
  }
2160
2220
  const stableChoice = new Proxy(choice, {
2161
2221
  get(target, property, receiver) {
2222
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys and the original accessor receiver.
2162
2223
  return property === 'message' ? validated.message : Reflect.get(target, property, receiver);
2163
2224
  },
2164
2225
  });
@@ -2174,6 +2235,7 @@ function finalizeChatCompletion<ParsedT>(
2174
2235
  if (property === 'tool_calls') {
2175
2236
  return validated.toolCallCollection;
2176
2237
  }
2238
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys and the original accessor receiver.
2177
2239
  return Reflect.get(target, property, receiver);
2178
2240
  },
2179
2241
  });
@@ -2186,7 +2248,9 @@ function finalizeChatCompletion<ParsedT>(
2186
2248
  throw new OpenAIError(`missing finish_reason for choice ${index}`);
2187
2249
  }
2188
2250
 
2251
+ // SAFETY: The completed API response contract supplies the audio fields; this preserves the existing pass-through behavior at finalization.
2189
2252
  const audioResponse = audio ? { audio: audio as ChatCompletionAudio } : {};
2253
+ // SAFETY: The API completion contract uses assistant role; retaining the wire role preserves existing behavior without adding runtime rejection.
2190
2254
  const role = message.role as 'assistant'; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.
2191
2255
  if (!role) {
2192
2256
  throw new OpenAIError(`missing role for choice ${index}`);
@@ -2262,6 +2326,7 @@ function finalizeChatCompletion<ParsedT>(
2262
2326
  if (property === 'name') {
2263
2327
  return captured.name;
2264
2328
  }
2329
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys and the original accessor receiver.
2265
2330
  return Reflect.get(target, property, receiver);
2266
2331
  },
2267
2332
  });
@@ -2275,6 +2340,7 @@ function finalizeChatCompletion<ParsedT>(
2275
2340
  if (property === 'function') {
2276
2341
  return stableFunction;
2277
2342
  }
2343
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys and the original accessor receiver.
2278
2344
  return Reflect.get(target, property, receiver);
2279
2345
  },
2280
2346
  })
@@ -2329,6 +2395,7 @@ function finalizeChatCompletion<ParsedT>(
2329
2395
  created,
2330
2396
  model,
2331
2397
  object: 'chat.completion',
2398
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
2332
2399
  ...(system_fingerprint ? { system_fingerprint } : {}),
2333
2400
  };
2334
2401
 
@@ -66,12 +66,14 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
66
66
  return this;
67
67
  }
68
68
 
69
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
69
70
  const emittedRegistration = this.#emittedListenerRegistrations.get(listener as object);
70
71
  if (
71
72
  emittedRegistration?.event === event &&
72
73
  !emittedRegistration.registration.removed &&
73
74
  !emittedRegistration.registration.detached
74
75
  ) {
76
+ // SAFETY: The stored registration event was compared with this event above, preserving the event/listener type correlation.
75
77
  this.#removeEmittedListener(
76
78
  event,
77
79
  emittedRegistration.registration as EventListeners<EventTypes, Event>[number],
@@ -113,6 +115,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
113
115
  registration?.listener === listener &&
114
116
  registration.once
115
117
  ) {
118
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
116
119
  this.#emittedListenerRegistrations.set(listener as object, { event, registration });
117
120
  }
118
121
  }
@@ -126,6 +129,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
126
129
  }
127
130
 
128
131
  registration.removed = true;
132
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
129
133
  this.#emittedListenerRegistrations.delete(registration.listener as object);
130
134
  this.#pendingListenerCleanup.add(event);
131
135
  if (this.#listenerDispatchDepth === 0) {
@@ -135,9 +139,11 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
135
139
 
136
140
  #cleanupEmittedListeners(): void {
137
141
  for (const event of this.#pendingListenerCleanup) {
142
+ // SAFETY: Pending cleanup keys are added only from registered EventTypes events; the key retains its event-map membership.
138
143
  const eventType = event as keyof EventTypes;
139
144
  const listeners = this.#listeners[eventType];
140
145
  if (listeners) {
146
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
141
147
  this.#listeners[eventType] = listeners.filter((listener) => !listener.removed) as any;
142
148
  }
143
149
  }
@@ -161,20 +167,26 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
161
167
  event: Event,
162
168
  ): Promise<EmittedEventResult<EventParameters<EventTypes, Event>>> {
163
169
  return new Promise((resolve, reject) => {
170
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Failures and rejection reasons can be arbitrary JavaScript values; preserve them until inspection or forwarding.
164
171
  const onError = (error: unknown) => {
172
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
165
173
  this.off(event, onEvent as any);
166
174
  reject(error);
167
175
  };
168
176
  const onEvent = (...values: unknown[]) => {
169
177
  if (event !== 'error') {
178
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
170
179
  this.off('error', onError as any);
171
180
  }
181
+ // SAFETY: The emitted API returns the sole argument or the full tuple according to its existing EventTypes-dependent result contract.
172
182
  resolve((values.length > 1 ? values : values[0]) as any);
173
183
  };
174
184
 
175
185
  if (event !== 'error') {
186
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
176
187
  this.#onceForEmitted('error', onError as any);
177
188
  }
189
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
178
190
  this.#onceForEmitted(event, onEvent as any);
179
191
  });
180
192
  }
@@ -186,6 +198,7 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
186
198
  ) {
187
199
  const listeners: EventListeners<EventTypes, Event> | undefined = this.#listeners[event];
188
200
  if (listeners) {
201
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
189
202
  this.#listeners[event] = listeners.filter((listener) => {
190
203
  if (listener.once) {
191
204
  listener.detached = true;
@@ -196,10 +209,12 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
196
209
  let firstListenerError: unknown;
197
210
  this.#listenerDispatchDepth += 1;
198
211
  try {
212
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
199
213
  for (const registration of listeners as any) {
200
214
  if (!registration.removed) {
201
215
  try {
202
216
  const { listener } = registration;
217
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
203
218
  listener(...(args as any));
204
219
  } catch (error) {
205
220
  if (!listenerThrew) {