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
@@ -30,10 +30,12 @@ const bufferedJSONStringify = JSON.stringify;
30
30
  const bufferedJSONParse = JSON.parse;
31
31
  const sdkOwnedBufferedEventArguments = new WeakSet<object>();
32
32
 
33
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
33
34
  const typedArrayBufferGetter = Object.getOwnPropertyDescriptor(
34
35
  Object.getPrototypeOf(Uint8Array.prototype) as object,
35
36
  'buffer',
36
37
  )?.get;
38
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
37
39
  const typedArrayLengthGetter = Object.getOwnPropertyDescriptor(
38
40
  Object.getPrototypeOf(Uint8Array.prototype) as object,
39
41
  'length',
@@ -51,6 +53,8 @@ const errorStackDescriptor = Object.getOwnPropertyDescriptor(new Error('native s
51
53
  const functionToString = Function.prototype.toString;
52
54
  const objectToString = Object.prototype.toString;
53
55
  const errorBrandDescriptor = Object.getOwnPropertyDescriptor(Error, 'isError');
56
+ // The native Error.isError predicate brands arbitrary values before an Error contract can be assumed.
57
+ // SAFETY: The captured native Error.isError property was checked to be a function before it is used as a brand predicate.
54
58
  const nativeErrorBrand =
55
59
  errorBrandDescriptor && 'value' in errorBrandDescriptor && typeof errorBrandDescriptor.value === 'function'
56
60
  ? (errorBrandDescriptor.value as (value: unknown) => boolean)
@@ -82,8 +86,10 @@ const trustedNativeConstructorSources = new Set<string>();
82
86
  const canonicalIntrinsicDescriptors = new Map<string, ReadonlyMap<PropertyKey, PropertyDescriptor>>();
83
87
  const foreignErrorStackDescriptors = new WeakMap<object, PropertyDescriptor>();
84
88
 
89
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Native and cross-realm constructor identities are inspected without assuming an unvalidated result type.
85
90
  type NativeErrorConstructor = (...args: never[]) => unknown;
86
91
 
92
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The native proxy predicate accepts arbitrary object identities without invoking their handlers.
87
93
  function captureNativeProxyDetector(): ((value: object) => boolean) | undefined {
88
94
  if (typeof process === 'undefined') {
89
95
  return undefined;
@@ -94,6 +100,7 @@ function captureNativeProxyDetector(): ((value: object) => boolean) | undefined
94
100
  if (!loader || !('value' in loader) || typeof loader.value !== 'function') {
95
101
  return undefined;
96
102
  }
103
+ // oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the descriptor value without reading a potentially overridden call property.
97
104
  const util: unknown = Reflect.apply(loader.value, process, ['node:util']);
98
105
  if (typeof util !== 'object' || util === null) {
99
106
  return undefined;
@@ -106,6 +113,8 @@ function captureNativeProxyDetector(): ((value: object) => boolean) | undefined
106
113
  if (!detector || !('value' in detector) || typeof detector.value !== 'function') {
107
114
  return undefined;
108
115
  }
116
+ // SAFETY: The native detector data property was checked to be callable; it is invoked only to test the corresponding intrinsic object brand.
117
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The captured native predicate is called only for objects, before their properties are inspected.
109
118
  return detector.value as (value: object) => boolean;
110
119
  } catch {
111
120
  return undefined;
@@ -130,6 +139,7 @@ function rememberTrustedIntrinsic(constructor: unknown): void {
130
139
  return;
131
140
  }
132
141
 
142
+ // SAFETY: The prototype data descriptor was checked as a non-null object before adding its identity to the trusted-intrinsic set.
133
143
  trustedIntrinsicPrototypes.add(prototypeDescriptor.value as object);
134
144
  const source = functionToString.call(constructor);
135
145
  if (
@@ -194,6 +204,7 @@ for (const name of [
194
204
  }
195
205
  }
196
206
 
207
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
197
208
  const typedArrayConstructorDescriptor = Object.getOwnPropertyDescriptor(
198
209
  Object.getPrototypeOf(Uint8Array.prototype) as object,
199
210
  'constructor',
@@ -216,6 +227,7 @@ const blobInternalHandlePrototype = (() => {
216
227
  for (const key of Object.getOwnPropertySymbols(blob)) {
217
228
  const descriptor = Object.getOwnPropertyDescriptor(blob, key);
218
229
  if (descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value) {
230
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
219
231
  return Object.getPrototypeOf(descriptor.value) as object;
220
232
  }
221
233
  }
@@ -229,6 +241,7 @@ const mapEntries = Map.prototype.entries;
229
241
  const setValues = Set.prototype.values;
230
242
  const headersEntriesDescriptor =
231
243
  typeof Headers === 'function' ? Object.getOwnPropertyDescriptor(Headers.prototype, 'entries') : undefined;
244
+ // SAFETY: The own Headers entries data property was checked to be callable and retains the native method signature.
232
245
  const headersEntries =
233
246
  headersEntriesDescriptor &&
234
247
  'value' in headersEntriesDescriptor &&
@@ -252,12 +265,14 @@ interface TrustedForeignIntrinsic {
252
265
  functionPrototype: object;
253
266
  }
254
267
 
268
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Foreign prototypes are untrusted objects until their constructor descriptors are verified.
255
269
  function getTrustedForeignIntrinsic(prototype: object): TrustedForeignIntrinsic | undefined {
256
270
  const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
257
271
  if (!descriptor || !('value' in descriptor) || typeof descriptor.value !== 'function') {
258
272
  return undefined;
259
273
  }
260
274
 
275
+ // SAFETY: The descriptor contains a function; the following native-source and prototype checks verify the Error constructor before use.
261
276
  const constructor = descriptor.value as NativeErrorConstructor;
262
277
  const source = functionToString.call(constructor);
263
278
  const descriptors = canonicalIntrinsicDescriptors.get(source);
@@ -276,9 +291,11 @@ function getTrustedForeignIntrinsic(prototype: object): TrustedForeignIntrinsic
276
291
  return undefined;
277
292
  }
278
293
 
294
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
279
295
  return { constructor, descriptors, functionPrototype: Object.getPrototypeOf(constructor) as object };
280
296
  }
281
297
 
298
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Intrinsic trust is established by object identity or verified cross-realm descriptors.
282
299
  function isTrustedIntrinsicPrototype(prototype: object): boolean {
283
300
  return trustedIntrinsicPrototypes.has(prototype) || getTrustedForeignIntrinsic(prototype) !== undefined;
284
301
  }
@@ -286,6 +303,7 @@ function isTrustedIntrinsicPrototype(prototype: object): boolean {
286
303
  function isCanonicalIntrinsicFunction(
287
304
  value: unknown,
288
305
  canonical: unknown,
306
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Cross-realm function prototypes are compared by identity without trusting a callable signature.
289
307
  functionPrototype: object,
290
308
  ): boolean {
291
309
  if (canonical === undefined) {
@@ -301,6 +319,7 @@ function isCanonicalIntrinsicFunction(
301
319
  return false;
302
320
  }
303
321
 
322
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
304
323
  const actualFunctionPrototype = Object.getPrototypeOf(value) as object;
305
324
  if (actualFunctionPrototype === functionPrototype) {
306
325
  return true;
@@ -319,6 +338,7 @@ function isCanonicalIntrinsicFunction(
319
338
  function isCanonicalIntrinsicDescriptor(
320
339
  descriptor: PropertyDescriptor,
321
340
  canonical: PropertyDescriptor | undefined,
341
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Descriptor validation compares the verified function-prototype identity without reading its fields.
322
342
  functionPrototype: object,
323
343
  ): boolean {
324
344
  if (
@@ -349,6 +369,7 @@ function isCanonicalIntrinsicDescriptor(
349
369
  );
350
370
  }
351
371
 
372
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Native error branding must inspect arbitrary objects before assuming an Error contract.
352
373
  function hasNativeErrorBrand(current: object): boolean {
353
374
  if (nativeErrorBrand) {
354
375
  return nativeErrorBrand.call(Error, current);
@@ -359,6 +380,7 @@ function hasNativeErrorBrand(current: object): boolean {
359
380
  if (Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag)) {
360
381
  return false;
361
382
  }
383
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
362
384
  prototype = Object.getPrototypeOf(prototype) as object | null;
363
385
  }
364
386
 
@@ -366,6 +388,7 @@ function hasNativeErrorBrand(current: object): boolean {
366
388
  }
367
389
 
368
390
  function getVerifiedForeignErrorConstructor(
391
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Foreign error constructors are verified from descriptors of an otherwise untrusted object.
369
392
  current: object,
370
393
  stackDescriptor: PropertyDescriptor,
371
394
  ): { constructor: NativeErrorConstructor; prototype: object } | undefined {
@@ -373,15 +396,18 @@ function getVerifiedForeignErrorConstructor(
373
396
  return undefined;
374
397
  }
375
398
 
399
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
376
400
  let prototype = Object.getPrototypeOf(current) as object | null;
377
401
  for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
378
402
  const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
379
403
  if (descriptor && 'value' in descriptor && typeof descriptor.value === 'function') {
404
+ // SAFETY: The descriptor contains a function; the following intrinsic and constructor-prototype checks decide whether it is a trusted Error constructor.
380
405
  const constructor = descriptor.value as NativeErrorConstructor;
381
406
  if (
382
407
  functionToString.call(constructor) === nativeErrorConstructorSource &&
383
408
  isTrustedIntrinsicPrototype(prototype)
384
409
  ) {
410
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
385
411
  const functionPrototype = Object.getPrototypeOf(constructor) as object;
386
412
  if (
387
413
  Object.getPrototypeOf(stackDescriptor.get) === functionPrototype &&
@@ -392,12 +418,14 @@ function getVerifiedForeignErrorConstructor(
392
418
  return undefined;
393
419
  }
394
420
  }
421
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
395
422
  prototype = Object.getPrototypeOf(prototype) as object | null;
396
423
  }
397
424
 
398
425
  return undefined;
399
426
  }
400
427
 
428
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Stack accessors are trusted only after the object passes native error branding.
401
429
  function isTrustedNativeErrorStack(current: object, descriptor: PropertyDescriptor): boolean {
402
430
  if (!hasNativeErrorBrand(current)) {
403
431
  return false;
@@ -421,6 +449,7 @@ function isTrustedNativeErrorStack(current: object, descriptor: PropertyDescript
421
449
 
422
450
  let canonicalDescriptor = foreignErrorStackDescriptors.get(verified.prototype);
423
451
  if (!canonicalDescriptor) {
452
+ // SAFETY: Reflect.construct returns an untyped value; unknown preserves that uncertainty for the descriptor checks below.
424
453
  const canonical = Reflect.construct(verified.constructor, []) as unknown;
425
454
  if (
426
455
  typeof canonical !== 'object' ||
@@ -495,7 +524,9 @@ function createEventQueue<Value>(): EventQueue<Value> {
495
524
  };
496
525
  }
497
526
 
527
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Retained storage branding walks arbitrary object prototypes without assuming their native type.
498
528
  function getRetainedStorageBrand(current: object): string | undefined {
529
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
499
530
  let prototype = Object.getPrototypeOf(current) as object | null;
500
531
 
501
532
  for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
@@ -524,6 +555,7 @@ function getRetainedStorageBrand(current: object): string | undefined {
524
555
  ) {
525
556
  return descriptor.value;
526
557
  }
558
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
527
559
  prototype = Object.getPrototypeOf(prototype) as object | null;
528
560
  }
529
561
 
@@ -531,6 +563,7 @@ function getRetainedStorageBrand(current: object): string | undefined {
531
563
  }
532
564
 
533
565
  function estimateRetainedBufferBytes(
566
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Memory accounting inspects arbitrary retained objects and detects native backing storage at runtime.
534
567
  current: object,
535
568
  visit: (value: unknown, depth: number) => void,
536
569
  depth: number,
@@ -540,9 +573,11 @@ function estimateRetainedBufferBytes(
540
573
  let kind: RetainedStorage['kind'] = 'typed-array';
541
574
 
542
575
  try {
576
+ // SAFETY: The captured intrinsic getter performs its own receiver brand check; its result stays unknown until the ArrayBuffer validation below.
543
577
  buffer = typedArrayBufferGetter?.call(current) as unknown;
544
578
  } catch {
545
579
  kind = 'data-view';
580
+ // SAFETY: The DataView intrinsic getter performs its receiver brand check; its result stays unknown until the ArrayBuffer validation below.
546
581
  buffer = dataViewBufferGetter?.call(current) as unknown;
547
582
  }
548
583
 
@@ -560,6 +595,7 @@ function estimateRetainedBufferBytes(
560
595
  return undefined;
561
596
  }
562
597
 
598
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Captured native accessors are checked for a finite numeric result before retained-size accounting.
563
599
  let getter: (() => unknown) | undefined;
564
600
  const kind: RetainedStorage['kind'] = 'buffer';
565
601
  switch (brand) {
@@ -582,6 +618,7 @@ function estimateRetainedBufferBytes(
582
618
  return { bytes: 0, kind: 'map' };
583
619
  }
584
620
  case 'Date': {
621
+ // oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the captured intrinsic without reading its mutable call property.
585
622
  Reflect.apply(dateTimestampGetter, current, []);
586
623
  return { bytes: 8, kind: 'date' };
587
624
  }
@@ -607,6 +644,7 @@ function estimateRetainedBufferBytes(
607
644
  }
608
645
 
609
646
  function visitHiddenEventValues(
647
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Native collection contents are inspected only after storage branding, without trusting structural fields.
610
648
  current: object,
611
649
  kind: RetainedStorage['kind'] | undefined,
612
650
  visit: (value: unknown, overhead: number) => boolean,
@@ -631,6 +669,7 @@ function visitHiddenEventValues(
631
669
  if (!headersEntries) {
632
670
  return false;
633
671
  }
672
+ // SAFETY: The captured native Headers.entries method performs its receiver brand check inside the enclosing try/catch.
634
673
  for (const [name, value] of headersEntries.call(current as Headers)) {
635
674
  if (!visit(name, 8) || !visit(value, 8)) {
636
675
  return false;
@@ -642,6 +681,7 @@ function visitHiddenEventValues(
642
681
  }
643
682
 
644
683
  function getInspectableEventKeys(
684
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Event key inspection must accept arbitrary retained objects, arrays, and native storage views.
645
685
  current: object,
646
686
  kind: RetainedStorage['kind'] | undefined,
647
687
  availableBytes: number,
@@ -684,6 +724,7 @@ function getInspectableEventKeys(
684
724
  }
685
725
 
686
726
  function visitInspectableEventProperties(
727
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Retained event properties are inspected through descriptors on arbitrary object identities.
687
728
  current: object,
688
729
  kind: RetainedStorage['kind'] | undefined,
689
730
  depth: number,
@@ -721,6 +762,7 @@ function visitInspectableEventProperties(
721
762
  }
722
763
 
723
764
  function visitRetainedEventPrototypes(
765
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Retention accounting follows arbitrary object prototypes without assuming their properties.
724
766
  current: object,
725
767
  depth: number,
726
768
  isBlobInternalHandle: boolean,
@@ -728,8 +770,10 @@ function visitRetainedEventPrototypes(
728
770
  availableBytes: () => number,
729
771
  charge: (bytes: number) => boolean,
730
772
  visit: (value: unknown, depth: number, isBlobInternalHandle?: boolean) => void,
773
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The retention callback records prototype identity before inspecting its descriptors.
731
774
  retainPrototype: (prototype: object, inspect: () => boolean) => boolean,
732
775
  ): boolean {
776
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
733
777
  let prototype = Object.getPrototypeOf(current) as object | null;
734
778
 
735
779
  for (let prototypeDepth = depth + 1; prototype !== null; prototypeDepth += 1) {
@@ -795,6 +839,7 @@ function visitRetainedEventPrototypes(
795
839
  return false;
796
840
  }
797
841
 
842
+ // SAFETY: Object.getPrototypeOf returns an object or null; this native-prototype inspection does not assume an application-specific instance type.
798
843
  prototype = Object.getPrototypeOf(retainedPrototype) as object | null;
799
844
  }
800
845
 
@@ -861,6 +906,7 @@ function inspectBufferedEventGraph(
861
906
  }
862
907
  return bytes <= remainingBytes;
863
908
  };
909
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The ledger records object and symbol identities, which have no shared structural contract.
864
910
  const addIdentity = (identity: BufferedRetainedIdentity): void => {
865
911
  if (activeNode) {
866
912
  activeNode.edges.add(identity);
@@ -868,6 +914,7 @@ function inspectBufferedEventGraph(
868
914
  roots.add(identity);
869
915
  }
870
916
  };
917
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Retained graph nodes are identified by object or symbol identity independently of their fields.
871
918
  const retainIdentity = (identity: BufferedRetainedIdentity, inspect: () => boolean): boolean => {
872
919
  addIdentity(identity);
873
920
  const node: BufferedInspectedNode = { bytes: 0, edges: new Set() };
@@ -894,6 +941,8 @@ function inspectBufferedEventGraph(
894
941
  if (!symbolDescriptionGetter) {
895
942
  return false;
896
943
  }
944
+ // SAFETY: The captured Symbol description getter is called after the symbol branch and returns a string or undefined by its native contract.
945
+ // oxlint-disable-next-line anti-slop/no-reflect-apply -- Invoke the captured intrinsic without reading its mutable call property.
897
946
  const description = Reflect.apply(symbolDescriptionGetter, current, []) as string | undefined;
898
947
  return charge(8 + (description?.length ?? 0) * 2);
899
948
  })
@@ -1065,6 +1114,7 @@ function collectBufferedLedgerIdentities(
1065
1114
  }
1066
1115
 
1067
1116
  function getBufferedLedgerChange(
1117
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Ledger changes are keyed by object or symbol identity, not a structural event type.
1068
1118
  identity: BufferedRetainedIdentity,
1069
1119
  graph: BufferedInspectedGraph,
1070
1120
  records: Map<BufferedRetainedIdentity, BufferedLedgerRecord>,
@@ -1313,6 +1363,7 @@ function createBufferedEventLedger(): {
1313
1363
  entry.identities.clear();
1314
1364
  };
1315
1365
 
1366
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The ledger contract contextually types its callbacks and keeps retained-identity internals private.
1316
1367
  return {
1317
1368
  retain(graph) {
1318
1369
  const entry: BufferedLedgerEntry = { scalarBytes: 0, roots: new Set(), identities: new Set() };
@@ -1444,19 +1495,38 @@ export class EventStream<EventTypes extends BaseEvents> {
1444
1495
  this.controller.abort();
1445
1496
  }
1446
1497
 
1498
+ /** Creates a user-abort error retaining this runner's cancellation reason. */
1499
+ protected _userAbortError(): APIUserAbortError {
1500
+ const error = new APIUserAbortError();
1501
+ Object.defineProperty(error, 'cause', {
1502
+ value: this.controller.signal.reason,
1503
+ writable: true,
1504
+ configurable: true,
1505
+ });
1506
+ return error;
1507
+ }
1508
+
1509
+ #abortFromSignal(signal: AbortSignal) {
1510
+ try {
1511
+ this.controller.abort(signal.reason);
1512
+ } catch {
1513
+ this.controller.abort();
1514
+ }
1515
+ }
1516
+
1447
1517
  protected _listenForAbort(signal: AbortSignal | null | undefined) {
1448
1518
  if (!signal || this.ended) {
1449
1519
  return;
1450
1520
  }
1451
1521
  if (signal.aborted) {
1452
- this.controller.abort();
1522
+ this.#abortFromSignal(signal);
1453
1523
  return;
1454
1524
  }
1455
1525
  if (this.#abortListeners.some((registration) => registration.signal === signal)) {
1456
1526
  return;
1457
1527
  }
1458
1528
 
1459
- const listener = () => this.controller.abort();
1529
+ const listener = () => this.#abortFromSignal(signal);
1460
1530
  signal.addEventListener('abort', listener, { once: true });
1461
1531
  this.#abortListeners.push({ signal, listener });
1462
1532
  }
@@ -1493,12 +1563,14 @@ export class EventStream<EventTypes extends BaseEvents> {
1493
1563
  return this;
1494
1564
  }
1495
1565
 
1566
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
1496
1567
  const emittedRegistration = this.#emittedListenerRegistrations.get(listener as object);
1497
1568
  if (
1498
1569
  emittedRegistration?.event === event &&
1499
1570
  !emittedRegistration.registration.removed &&
1500
1571
  !emittedRegistration.registration.detached
1501
1572
  ) {
1573
+ // SAFETY: The stored registration event was compared with this event above, preserving the event/listener type correlation.
1502
1574
  this.#removeEmittedListener(
1503
1575
  event,
1504
1576
  emittedRegistration.registration as EventListeners<EventTypes, Event>[number],
@@ -1539,6 +1611,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1539
1611
  registration?.listener === listener &&
1540
1612
  registration.once
1541
1613
  ) {
1614
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
1542
1615
  this.#emittedListenerRegistrations.set(listener as object, { event, registration });
1543
1616
  }
1544
1617
  }
@@ -1552,6 +1625,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1552
1625
  }
1553
1626
 
1554
1627
  registration.removed = true;
1628
+ // SAFETY: Listener functions are object identities used as WeakMap keys; registration and removal use the same function instance.
1555
1629
  this.#emittedListenerRegistrations.delete(registration.listener as object);
1556
1630
  this.#pendingListenerCleanup.add(event);
1557
1631
  if (this.#listenerDispatchDepth === 0) {
@@ -1561,9 +1635,11 @@ export class EventStream<EventTypes extends BaseEvents> {
1561
1635
 
1562
1636
  #cleanupEmittedListeners(): void {
1563
1637
  for (const event of this.#pendingListenerCleanup) {
1638
+ // SAFETY: Pending cleanup keys are added only from registered EventTypes events; the key retains its event-map membership.
1564
1639
  const eventType = event as keyof EventTypes;
1565
1640
  const listeners = this.#listeners[eventType];
1566
1641
  if (listeners) {
1642
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
1567
1643
  this.#listeners[eventType] = listeners.filter((listener) => !listener.removed) as any;
1568
1644
  }
1569
1645
  }
@@ -1589,6 +1665,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1589
1665
  return new Promise((resolve, reject) => {
1590
1666
  this.#catchingPromiseCreated = true;
1591
1667
  const onError = (error: OpenAIError) => {
1668
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
1592
1669
  this.off(event, onEvent as EventListener<EventTypes, Event>);
1593
1670
  reject(error);
1594
1671
  };
@@ -1596,12 +1673,15 @@ export class EventStream<EventTypes extends BaseEvents> {
1596
1673
  if (event !== 'error') {
1597
1674
  this.off('error', onError);
1598
1675
  }
1676
+ // SAFETY: The emitted API returns the sole argument or the full tuple according to its existing EventTypes-dependent result contract.
1599
1677
  resolve((values.length > 1 ? values : values[0]) as any);
1600
1678
  };
1601
1679
 
1602
1680
  if (event !== 'error') {
1681
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
1603
1682
  this.#onceForEmitted('error', onError as EventListener<EventTypes, 'error'>);
1604
1683
  }
1684
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
1605
1685
  this.#onceForEmitted(event, onEvent as EventListener<EventTypes, Event>);
1606
1686
  });
1607
1687
  }
@@ -1632,7 +1712,9 @@ export class EventStream<EventTypes extends BaseEvents> {
1632
1712
  sdkOwnedBufferedEventArguments.delete(args);
1633
1713
  }
1634
1714
  };
1715
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
1635
1716
  this.on(event, onEvent as EventListener<EventTypes, Event>);
1717
+ // SAFETY: This callback is paired with the same event when registered and removed; its variadic body forwards the event tuple or captured error.
1636
1718
  return () => this.off(event, onEvent as EventListener<EventTypes, Event>);
1637
1719
  },
1638
1720
  {
@@ -1685,6 +1767,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1685
1767
  let failureDelivered = false;
1686
1768
  let detach: () => void = () => undefined;
1687
1769
 
1770
+ // SAFETY: A completed iterator result has no yielded value; never preserves the iterator public result type for done: true.
1688
1771
  const doneResult = (): Result => ({ value: undefined as never, done: true });
1689
1772
  const finishReaders = () => {
1690
1773
  while (readQueue.length) {
@@ -1766,10 +1849,12 @@ export class EventStream<EventTypes extends BaseEvents> {
1766
1849
  }
1767
1850
 
1768
1851
  if (typeof value === 'object' && value !== null && sdkOwnedBufferedEventArguments.has(value)) {
1852
+ // SAFETY: Only SDK-created argument tuples are inserted into this private WeakSet, so membership establishes the array identity.
1769
1853
  const argumentsTuple = value as unknown[];
1770
1854
  for (let index = 0; index < argumentsTuple.length; index += 1) {
1771
1855
  const argument = argumentsTuple[index];
1772
1856
  if (typeof argument === 'string') {
1857
+ // SAFETY: The branch checked argument is a string; JSON stringify/parse returns that same string value while detaching retained storage.
1773
1858
  argumentsTuple[index] = bufferedJSONParse(bufferedJSONStringify(argument)) as string;
1774
1859
  }
1775
1860
  }
@@ -1897,7 +1982,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1897
1982
  #handleError(this: EventStream<EventTypes>, error: unknown) {
1898
1983
  this.#errored = true;
1899
1984
  if (error instanceof Error && error.name === 'AbortError') {
1900
- error = new APIUserAbortError();
1985
+ error = this._userAbortError();
1901
1986
  }
1902
1987
  if (error instanceof APIUserAbortError) {
1903
1988
  this.#aborted = true;
@@ -1926,6 +2011,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1926
2011
  hasListeners: boolean,
1927
2012
  ): void {
1928
2013
  if (event === 'abort') {
2014
+ // SAFETY: The abort event key selects the APIUserAbortError argument tuple established by the typed emit contract.
1929
2015
  const error = args[0] as APIUserAbortError;
1930
2016
  this.#terminalFailure ??= { kind: 'abort', error };
1931
2017
  if (!this.#catchingPromiseCreated && !hasListeners) {
@@ -1940,6 +2026,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1940
2026
  if (event === 'error') {
1941
2027
  // NOTE: _emit('error', error) should only be called from #handleError().
1942
2028
 
2029
+ // SAFETY: The error event is emitted by the error-normalization path, which supplies an OpenAIError as its first argument.
1943
2030
  const error = args[0] as OpenAIError;
1944
2031
  this.#terminalFailure ??= { kind: 'error', error };
1945
2032
  if (!this.#catchingPromiseCreated && !hasListeners) {
@@ -1983,6 +2070,7 @@ export class EventStream<EventTypes extends BaseEvents> {
1983
2070
  let dispatchThrew = false;
1984
2071
  try {
1985
2072
  if (listeners) {
2073
+ // SAFETY: Filtering only removes registrations from the same event bucket and preserves the listener signatures for that event.
1986
2074
  this.#listeners[event] = listeners.filter((listener) => {
1987
2075
  if (listener.once) {
1988
2076
  listener.detached = true;
@@ -1991,9 +2079,11 @@ export class EventStream<EventTypes extends BaseEvents> {
1991
2079
  }) as any;
1992
2080
  this.#listenerDispatchDepth += 1;
1993
2081
  try {
2082
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
1994
2083
  for (const registration of listeners as any) {
1995
2084
  if (!registration.removed) {
1996
2085
  const { listener } = registration;
2086
+ // SAFETY: The listener bucket and argument tuple come from the same EventTypes key; this bridges TypeScript generic indexed-access correlation.
1997
2087
  listener(...(args as any));
1998
2088
  }
1999
2089
  }
@@ -88,6 +88,7 @@ export function maybeParseResponse<
88
88
  };
89
89
 
90
90
  if (needsOutputText(response, parsed)) {
91
+ // SAFETY: The copy retains every response field and only adds parsed metadata; addOutputText accepts that original response structure.
91
92
  addOutputText(parsed as Response);
92
93
  }
93
94
 
@@ -160,6 +161,7 @@ export function parseResponse<
160
161
  },
161
162
  });
162
163
 
164
+ // SAFETY: The output_parsed getter was installed immediately above and returns the first parsed content or null.
163
165
  return parsed as ParsedResponse<ParsedT>;
164
166
  }
165
167
 
@@ -203,6 +205,7 @@ type ToolOptions = {
203
205
  /** A Responses API function tool with an argument parser and optional executable callback. */
204
206
  export type AutoParseableResponseTool<
205
207
  OptionsT extends ToolOptions,
208
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- This public conditional type detects any callable callback without constraining its return type.
206
209
  HasFunction = OptionsT['function'] extends (...args: never[]) => unknown ? true : false,
207
210
  > = FunctionTool & {
208
211
  /** Type-only marker for parsed tool arguments; this property does not exist at runtime. */
@@ -248,6 +251,7 @@ export function makeParseableResponseTool<OptionsT extends ToolOptions>(
248
251
  },
249
252
  });
250
253
 
254
+ // SAFETY: The non-enumerable parser brand and callbacks were installed on this copied tool immediately above.
251
255
  return obj as AutoParseableResponseTool<OptionsT>;
252
256
  }
253
257
 
@@ -281,6 +285,7 @@ function parseToolCall<Params extends ResponseCreateParamsBase>(
281
285
  ): ParsedResponseFunctionToolCall {
282
286
  const inputTool = getInputToolByName(params.tools ?? [], toolCall.name, toolCall.namespace);
283
287
 
288
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Parsing replaces the initial null with an arbitrary caller-parser result, so unknown is required.
284
289
  let parsedArguments: unknown = null;
285
290
  if (isAutoParsableTool(inputTool)) {
286
291
  parsedArguments = inputTool.$parseRaw(toolCall.arguments);
@@ -17,6 +17,7 @@ export type RunnableFunctionWithParse<Args extends object, ToolContext = unknown
17
17
  args: Args,
18
18
  runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
19
19
  toolContext: ToolContext,
20
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
20
21
  ) => PromiseOrValue<unknown>;
21
22
  /**
22
23
  * @param input the raw args from the OpenAI function call.
@@ -51,6 +52,7 @@ export type RunnableFunctionWithoutParse<ToolContext = unknown> = {
51
52
  args: string,
52
53
  runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
53
54
  toolContext: ToolContext,
55
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
54
56
  ) => PromiseOrValue<unknown>;
55
57
  /**
56
58
  * The parameters the function accepts, described as a JSON Schema object.
@@ -110,6 +112,7 @@ export type RunnableToolFunctionWithContext<ToolContext> = {
110
112
  args: any,
111
113
  runner: ChatCompletionRunner<unknown> | ChatCompletionStreamingRunner<unknown>,
112
114
  toolContext: ToolContext,
115
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
113
116
  ) => PromiseOrValue<unknown>;
114
117
  /** Optionally converts raw JSON arguments into the callback's argument value. */
115
118
  parse?: (input: string) => PromiseOrValue<any>;
@@ -128,7 +131,7 @@ export type RunnableToolFunctionWithContext<ToolContext> = {
128
131
  export function isRunnableFunctionWithParse<Args extends object, ToolContext = unknown>(
129
132
  fn: any,
130
133
  ): fn is RunnableFunctionWithParse<Args, ToolContext> {
131
- return typeof (fn as any).parse === 'function';
134
+ return typeof fn.parse === 'function';
132
135
  }
133
136
 
134
137
  /** The ordered raw-string or parsed-object argument types accepted by runnable functions. */
@@ -60,9 +60,9 @@ function normalizedOutput(value: unknown): AgentFunctionCallOutputParam | null {
60
60
  throw new OpenAIError('Tool output must be text, content, a JSON object, or null');
61
61
  }
62
62
 
63
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The public AgentToolOutput contract accepts arbitrary JSON-serializable object results.
63
64
  function toolResult(call: AgentFunctionCallItem, value: AgentToolOutput): ToolResult {
64
- const output =
65
- value !== null && typeof value === 'object' && !Array.isArray(value) ? JSON.stringify(value) : value;
65
+ const output = isObj(value) ? JSON.stringify(value) : value;
66
66
  // Detect unserializable callback results inside the redacted failure boundary.
67
67
  const serialized = JSON.stringify(output);
68
68
  if (serialized === undefined) {
@@ -188,6 +188,7 @@ export class AgentSessionStream implements AsyncIterable<AgentSessionEvent> {
188
188
  this.#sessionID,
189
189
  {
190
190
  events: [this.#input],
191
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
191
192
  ...(this.#inputKey === undefined ? {} : { 'Idempotency-Key': this.#inputKey }),
192
193
  },
193
194
  {
@@ -234,9 +235,10 @@ export class AgentSessionStream implements AsyncIterable<AgentSessionEvent> {
234
235
  async #result(call: AgentFunctionCallItem, handler: AgentToolHandler): Promise<ToolResult> {
235
236
  try {
236
237
  const args: unknown = typeof call.arguments === 'string' ? JSON.parse(call.arguments) : call.arguments;
237
- if (args === null || typeof args !== 'object' || Array.isArray(args)) {
238
+ if (!isObj(args)) {
238
239
  throw new OpenAIError('Function arguments must be a JSON object');
239
240
  }
241
+ // SAFETY: Arguments were parsed as JSON and checked to be a non-null non-array object before invoking the handler.
240
242
  return toolResult(call, await this.#wait(() => handler(args as Record<string, unknown>)));
241
243
  } catch {
242
244
  this.#checkAbort();
@@ -55,13 +55,15 @@ export function createEmbedding(
55
55
  // Preserve the original iteration length and skip sparse-array holes.
56
56
  for (let index = 0; index < length; index += 1) {
57
57
  if (index in embeddings) {
58
+ // SAFETY: This indexed entry belongs to the API embedding data array; sparse entries are skipped by the preceding membership check.
58
59
  const embeddingBase64Obj = embeddings[index] as Embedding;
59
60
  const { embedding } = embeddingBase64Obj;
60
61
  // Request hooks and serialization can also select float embeddings.
61
62
  if (Array.isArray(embedding)) {
62
63
  continue;
63
64
  }
64
- embeddingBase64Obj.embedding = toFloat32Array(embedding as unknown as string);
65
+ // SAFETY: The Array.isArray branch already handled decoded vectors; this request explicitly asked the server for base64 encoding.
66
+ embeddingBase64Obj.embedding = toFloat32Array(embedding as string);
65
67
  }
66
68
  }
67
69
  }
@@ -73,8 +73,10 @@ function normalizeTranscript(
73
73
  const { event_id: id, delta: text, start_ms: startMs, end_ms: endMs } = event;
74
74
  const speaker = event.type === 'session.input_transcript.delta' ? 'user' : 'assistant';
75
75
  if (
76
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
76
77
  typeof id !== 'string' ||
77
78
  !id ||
79
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
78
80
  typeof text !== 'string' ||
79
81
  !Number.isSafeInteger(startMs) ||
80
82
  startMs < 0 ||
@@ -272,9 +274,11 @@ export class TranscriptGrouper extends EventEmitter<TranscriptGrouperEvents> {
272
274
  );
273
275
  const timer: unknown = this.timer;
274
276
  if (
277
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
275
278
  typeof timer === 'object' &&
276
279
  timer !== null &&
277
280
  'unref' in timer &&
281
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate streamed transcript identifiers and text before grouping, and probe optional timer capabilities.
278
282
  typeof timer.unref === 'function'
279
283
  ) {
280
284
  timer.unref();