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,3 +1,4 @@
1
+ import { isObj } from '../internal/utils/values';
1
2
  import { OpenAIError } from '../error';
2
3
  import type { AutoParseableResponseFormat, AutoParseableTextFormat, AutoParseableTool } from '../lib/parser';
3
4
  import {
@@ -138,6 +139,7 @@ type StandardTextFormatProps = Omit<
138
139
  /** Function callback invoked with arguments validated by a Standard Schema implementation. */
139
140
  type StandardToolFunction<Parameters extends StandardSchemaLike> = (
140
141
  args: InferStandardOutput<Parameters>,
142
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
141
143
  ) => unknown | Promise<unknown>;
142
144
 
143
145
  /** Model-facing function-tool settings and optional Standard Schema validation callback. */
@@ -198,10 +200,11 @@ const JSON_SCHEMA_TYPES = new Set(['string', 'number', 'integer', 'boolean', 'ob
198
200
  type JSONPrimitive = string | number | boolean | null;
199
201
 
200
202
  function getSchemaTypes(schema: unknown): Set<string> | undefined {
201
- if (!schema || typeof schema !== 'object' || Array.isArray(schema)) {
203
+ if (!isObj(schema)) {
202
204
  return undefined;
203
205
  }
204
206
 
207
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
205
208
  const type = (schema as Record<string, unknown>)['type'];
206
209
  if (type === undefined) {
207
210
  return getLiteralSchemaTypes(schema);
@@ -227,10 +230,11 @@ function isJSONPrimitive(value: unknown): value is JSONPrimitive {
227
230
  }
228
231
 
229
232
  function getLiteralValues(schema: unknown): JSONPrimitive[] | undefined {
230
- if (!schema || typeof schema !== 'object' || Array.isArray(schema)) {
233
+ if (!isObj(schema)) {
231
234
  return undefined;
232
235
  }
233
236
 
237
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
234
238
  const record = schema as Record<string, unknown>;
235
239
  if ('const' in record && isJSONPrimitive(record['const'])) {
236
240
  return [record['const']];
@@ -286,19 +290,17 @@ function haveDisjointObjectDiscriminator(left: unknown, right: unknown, root: JS
286
290
  return false;
287
291
  }
288
292
 
293
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
289
294
  const leftRecord = left as Record<string, unknown>;
295
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
290
296
  const rightRecord = right as Record<string, unknown>;
291
297
  const leftProperties = leftRecord['properties'];
292
298
  const rightProperties = rightRecord['properties'];
293
299
  const leftRequired = leftRecord['required'];
294
300
  const rightRequired = rightRecord['required'];
295
301
  if (
296
- !leftProperties ||
297
- typeof leftProperties !== 'object' ||
298
- Array.isArray(leftProperties) ||
299
- !rightProperties ||
300
- typeof rightProperties !== 'object' ||
301
- Array.isArray(rightProperties) ||
302
+ !isObj(leftProperties) ||
303
+ !isObj(rightProperties) ||
302
304
  !Array.isArray(leftRequired) ||
303
305
  !Array.isArray(rightRequired)
304
306
  ) {
@@ -306,6 +308,7 @@ function haveDisjointObjectDiscriminator(left: unknown, right: unknown, root: JS
306
308
  }
307
309
 
308
310
  for (const property of leftRequired) {
311
+ // SAFETY: Both properties maps were checked as non-null non-array objects; the selected values remain untrusted inputs to reference resolution.
309
312
  if (
310
313
  typeof property === 'string' &&
311
314
  rightRequired.includes(property) &&
@@ -328,14 +331,13 @@ function getClosedObjectPropertySet(
328
331
  return undefined;
329
332
  }
330
333
 
334
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
331
335
  const record = schema as Record<string, unknown>;
332
336
  const properties = record['properties'];
333
337
  const required = record['required'];
334
338
  if (
335
339
  record['additionalProperties'] !== false ||
336
- !properties ||
337
- typeof properties !== 'object' ||
338
- Array.isArray(properties) ||
340
+ !isObj(properties) ||
339
341
  !Array.isArray(required) ||
340
342
  required.some((property) => typeof property !== 'string')
341
343
  ) {
@@ -343,6 +345,7 @@ function getClosedObjectPropertySet(
343
345
  }
344
346
 
345
347
  const propertySet = new Set(Object.keys(properties));
348
+ // SAFETY: The preceding every check proved each required-property name is a string.
346
349
  const requiredProperties = required as string[];
347
350
  // A required undeclared property makes a closed branch unsatisfiable, but
348
351
  // the strictifier rejects that shape rather than representing it. Keep this
@@ -355,9 +358,9 @@ function getClosedObjectPropertySet(
355
358
  }
356
359
 
357
360
  function haveDisjointClosedObjectPropertySets(left: unknown, right: unknown): boolean {
358
- const leftShape = getClosedObjectPropertySet(left);
359
- const rightShape = getClosedObjectPropertySet(right);
360
- if (!leftShape || !rightShape) {
361
+ const leftPropertySet = getClosedObjectPropertySet(left);
362
+ const rightPropertySet = getClosedObjectPropertySet(right);
363
+ if (!leftPropertySet || !rightPropertySet) {
361
364
  return false;
362
365
  }
363
366
 
@@ -366,8 +369,8 @@ function haveDisjointClosedObjectPropertySets(left: unknown, right: unknown): bo
366
369
  // an additional property. This proves oneOf exclusivity without widening
367
370
  // overlapping closed shapes.
368
371
  return (
369
- leftShape.required.some((property) => !rightShape.properties.has(property)) ||
370
- rightShape.required.some((property) => !leftShape.properties.has(property))
372
+ leftPropertySet.required.some((property) => !rightPropertySet.properties.has(property)) ||
373
+ rightPropertySet.required.some((property) => !leftPropertySet.properties.has(property))
371
374
  );
372
375
  }
373
376
 
@@ -395,17 +398,20 @@ function resolveLocalRefForExclusivity(
395
398
  schema: unknown,
396
399
  root: JSONSchema,
397
400
  seenRefs = new Set<string>(),
401
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Resolving untrusted schema references may produce any value; callers perform the schema checks.
398
402
  ): unknown | undefined {
399
- if (!schema || typeof schema !== 'object' || Array.isArray(schema)) {
403
+ if (!isObj(schema)) {
400
404
  return schema;
401
405
  }
402
406
 
407
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
403
408
  const record = schema as Record<string, unknown>;
404
409
  const ref = record['$ref'];
405
410
  if (ref !== undefined) {
406
411
  // Annotation keywords do not affect Draft 7 validation, so they are safe
407
412
  // to retain while proving the referenced branches are mutually exclusive.
408
413
  // Keep the proof conservative for every other sibling constraint.
414
+ // SAFETY: The helper only checks allowed sibling keys on this object; it does not assume that arbitrary property values form a valid schema.
409
415
  if (typeof ref !== 'string' || !hasOnlyRefAndAnnotations(record as JSONSchema)) {
410
416
  return undefined;
411
417
  }
@@ -425,6 +431,7 @@ function resolveLocalRefForExclusivity(
425
431
  if (!Array.isArray(record['allOf'])) {
426
432
  return undefined;
427
433
  }
434
+ // SAFETY: The allOf value was checked as an array; normalization performs the remaining branch-shape checks before proving exclusivity.
428
435
  const normalized = normalizeObjectAllOfForExclusivity(record as JSONSchema, root);
429
436
  if (normalized === undefined) {
430
437
  return undefined;
@@ -460,9 +467,10 @@ function normalizeStructuredOutputSchema(schema: JSONSchema): JSONSchema {
460
467
  const visitedSchemas = new Set<Record<string, unknown>>();
461
468
 
462
469
  const visitSchema = (value: unknown): void => {
463
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
470
+ if (!isObj(value)) {
464
471
  return;
465
472
  }
473
+ // SAFETY: The preceding guard excludes null, primitives, and arrays; property values remain unknown until their individual schema checks.
466
474
  const record = value as Record<string, unknown>;
467
475
  if (visitedSchemas.has(record)) {
468
476
  return;
@@ -528,6 +536,7 @@ function parseStandardSchema<Schema extends StandardSchemaLike>(
528
536
  ): InferStandardOutput<Schema> {
529
537
  const parsed = parseResponseFormatContent({ type: 'json_schema', $parseRaw: undefined }, content);
530
538
  const { standard, validate } = getBinding();
539
+ // oxlint-disable-next-line anti-slop/no-reflect-apply -- A validator may shadow call; invoke the captured function with its original metadata receiver.
531
540
  const result = Reflect.apply(validate, standard, [parsed]);
532
541
 
533
542
  if (isPromiseLike(result)) {
@@ -541,6 +550,7 @@ function parseStandardSchema<Schema extends StandardSchemaLike>(
541
550
  throw new OpenAIError(`Standard Schema validation failed: ${formatStandardSchemaIssues(result.issues)}`);
542
551
  }
543
552
 
553
+ // SAFETY: The captured Standard Schema validator completed synchronously without issues, so its value follows that schema's inferred output contract.
544
554
  return result.value as InferStandardOutput<Schema>;
545
555
  }
546
556
 
@@ -548,6 +558,7 @@ function resolveStandardJSONSchema<Schema extends StandardSchemaLike>(
548
558
  getBinding: () => StandardSchemaBinding<Schema>,
549
559
  schemaOverride?: JSONSchema | Record<string, unknown> | undefined,
550
560
  ): Record<string, unknown> {
561
+ // SAFETY: The override or Standard Schema input converter supplies the schema; normalization and strict conversion below validate the supported structure.
551
562
  const schema = (schemaOverride ?? getBinding().standard.jsonSchema?.input({ target: 'draft-07' })) as
552
563
  | JSONSchema
553
564
  | undefined;
@@ -558,7 +569,8 @@ function resolveStandardJSONSchema<Schema extends StandardSchemaLike>(
558
569
  );
559
570
  }
560
571
 
561
- return toStrictJsonSchema(normalizeStructuredOutputSchema(schema)) as unknown as Record<string, unknown>;
572
+ // SAFETY: Strict conversion returns an object schema here; the record view exposes its JSON keyword properties without narrowing their values.
573
+ return toStrictJsonSchema(normalizeStructuredOutputSchema(schema)) as Record<string, unknown>;
562
574
  }
563
575
 
564
576
  /**
@@ -10,6 +10,7 @@ interface SchemaDefinition {
10
10
  typeName: string;
11
11
  checks?: readonly { kind: string; value?: unknown }[];
12
12
  coerce?: boolean;
13
+ // oxlint-disable-next-line anti-slop/no-shape-in-symbol-names -- Zod v3 defines this property name on object schemas.
13
14
  shape: () => Record<string, SchemaNode>;
14
15
  type: SchemaNode;
15
16
  innerType: SchemaNode;
@@ -32,6 +33,7 @@ interface SchemaChild {
32
33
  path: string;
33
34
  }
34
35
 
36
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Runtime Zod type names index this dictionary, including unsupported names outside the known entries.
35
37
  const simpleJSONDomains: Readonly<Record<string, JSONDomain['type']>> = {
36
38
  ZodString: 'string',
37
39
  ZodNumber: 'number',
@@ -109,6 +111,7 @@ function nativeEnumDomains(def: SchemaDefinition): JSONDomain[] {
109
111
  if (!definitionValues || Array.isArray(definitionValues)) {
110
112
  return [];
111
113
  }
114
+ // SAFETY: The preceding guard accepts a non-array object; its values remain unknown until individual definition checks.
112
115
  const object = definitionValues as Record<string, unknown>;
113
116
  const values = Object.keys(object)
114
117
  .filter((key) => {
@@ -429,12 +432,15 @@ export function assertSupportedZodV3Schema(
429
432
  definitions: Record<string, ZodV3Schema> | undefined,
430
433
  ): void {
431
434
  const visited = new Set<SchemaDefinition>();
432
- visit(schema as unknown as SchemaNode, '$', visited);
435
+ // SAFETY: The public Zod v3 input is viewed through the validator's minimal schema-node contract; visit checks its definition and rejects unsupported kinds.
436
+ visit(schema as SchemaNode, '$', visited);
433
437
  for (const [name, definition] of Object.entries(definitions ?? {})) {
434
- visit(definition as unknown as SchemaNode, `$.definitions.${name}`, visited);
438
+ // SAFETY: The public Zod v3 input is viewed through the validator's minimal schema-node contract; visit checks its definition and rejects unsupported kinds.
439
+ visit(definition as SchemaNode, `$.definitions.${name}`, visited);
435
440
  }
436
441
  }
437
442
 
443
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Serialization validation must inspect any object, including arrays and foreign prototypes, without trusting fields.
438
444
  function assertNoJSONSerializationHook(value: object, path: string): void {
439
445
  for (let current: object | null = value; current !== null; current = Object.getPrototypeOf(current)) {
440
446
  const descriptor = Object.getOwnPropertyDescriptor(current, 'toJSON');
@@ -16,7 +16,7 @@ import type { ResponseFormatTextJSONSchemaConfig } from '../resources/responses/
16
16
  import type { RealtimeFunctionTool } from '../resources/realtime/realtime';
17
17
  import { forEachJSONSchemaChild, toStrictJsonSchema } from '../lib/transform';
18
18
  import type { JSONSchema } from '../lib/jsonschema';
19
- import { hasOwn } from '../internal/utils/values';
19
+ import { hasOwn, isObj } from '../internal/utils/values';
20
20
  import { assertJSONSerializableSchema, assertSupportedZodV3Schema } from './zod-v3-strict-schema';
21
21
 
22
22
  type ZodV4Schema = z4.ZodType | z4Mini.ZodMiniType;
@@ -39,6 +39,7 @@ type ZodTypeLike = (
39
39
  }
40
40
  ) & {
41
41
  /** Synchronous schema parser when the validator exposes an instance-level parse method. */
42
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- The public schema adapter accepts arbitrary validated outputs and derives their concrete type separately. Zod parsers and their recursive metadata accept untrusted values before schema validation.
42
43
  parse?: (data: unknown) => unknown;
43
44
  };
44
45
 
@@ -97,11 +98,12 @@ function escapeSchemaDefinitionRefs<T extends object>(
97
98
 
98
99
  const visited = new Set<object>();
99
100
  const visit = (value: unknown): void => {
100
- if (!value || typeof value !== 'object' || Array.isArray(value) || visited.has(value)) {
101
+ if (!isObj(value) || visited.has(value)) {
101
102
  return;
102
103
  }
103
104
 
104
105
  visited.add(value);
106
+ // SAFETY: The traversal has excluded primitives, null, arrays, and previously visited objects; schema property values remain unknown for validation.
105
107
  const record = value as Record<string, unknown>;
106
108
  const ref = record['$ref'];
107
109
  if (typeof ref === 'string') {
@@ -134,8 +136,10 @@ function zodV3ToJsonSchema(
134
136
  schema: z3.ZodType,
135
137
  options: { name: string; schemaDefinitions?: ZodSchemaDefinitions | undefined },
136
138
  ): Record<string, unknown> {
139
+ // SAFETY: This is the Zod v3 conversion path; assertSupportedZodV3Schema verifies the root and named definitions before conversion.
137
140
  assertSupportedZodV3Schema(schema, options.schemaDefinitions as Record<string, z3.ZodType> | undefined);
138
141
  const rootName = getZodV3RootName(options.name, options.schemaDefinitions);
142
+ // SAFETY: This is the Zod v3 conversion path; assertSupportedZodV3Schema verifies the root and named definitions before conversion.
139
143
  const jsonSchema = _zodToJsonSchema(schema, {
140
144
  openaiStrictMode: true,
141
145
  name: rootName,
@@ -143,7 +147,7 @@ function zodV3ToJsonSchema(
143
147
  $refStrategy: 'extract-to-root',
144
148
  nullableStrategy: 'property',
145
149
  ...(options.schemaDefinitions
146
- ? { definitions: options.schemaDefinitions as unknown as Record<string, z3.ZodType> }
150
+ ? { definitions: options.schemaDefinitions as Record<string, z3.ZodType> }
147
151
  : undefined),
148
152
  });
149
153
 
@@ -159,15 +163,17 @@ function zodV4ToJsonSchema(
159
163
  schema: ZodV4Schema,
160
164
  options: { schemaDefinitions?: ZodSchemaDefinitions | undefined } = {},
161
165
  ): Record<string, unknown> {
162
- const metadata = options.schemaDefinitions ? z4.registry<Record<string, unknown>>() : undefined;
166
+ const metadata = options.schemaDefinitions ? z4.registry<{ id: string }>() : undefined;
163
167
  const definitionNames = new Map<string, string>();
164
168
  for (const [name, definition] of Object.entries(options.schemaDefinitions ?? {})) {
165
169
  // Avoid `/` and `~` so Zod versions that escape JSON Pointer tokens emit the same IDs.
166
170
  const id = encodeURIComponent(name).replace(/~/g, '%7E');
167
171
  definitionNames.set(id, name);
168
- metadata?.add(definition as unknown as z4.ZodType, { id });
172
+ // SAFETY: The Zod v4 conversion path registers these definitions with the v4 metadata registry before toJSONSchema uses them.
173
+ metadata?.add(definition as z4.ZodType, { id });
169
174
  }
170
175
 
176
+ // SAFETY: The v4 schema converter produces JSON Schema; the following normalization checks and rewrites its schema records.
171
177
  const jsonSchema = z4.toJSONSchema(schema, {
172
178
  target: 'draft-7',
173
179
  ...(metadata ? { metadata } : undefined),
@@ -208,6 +214,7 @@ function zodV4ToJsonSchema(
208
214
  );
209
215
  }
210
216
 
217
+ // SAFETY: Strict conversion returns the normalized object schema; the record view exposes keywords without trusting arbitrary values.
211
218
  return toStrictJsonSchema(escapedSchema) as Record<string, unknown>;
212
219
  }
213
220
 
@@ -221,6 +228,7 @@ function zodV3ToNonStrictJsonSchema(schema: z3.ZodType, options: { name: string
221
228
  }
222
229
 
223
230
  function zodV4ToNonStrictJsonSchema(schema: ZodV4Schema): Record<string, unknown> {
231
+ // SAFETY: Zod v4 owns this JSON Schema output; the record return preserves arbitrary supported keyword properties.
224
232
  return z4.toJSONSchema(schema, {
225
233
  target: 'draft-7',
226
234
  io: 'input',
@@ -236,17 +244,20 @@ function parseZodObject<ZodInput extends ZodTypeLike>(
236
244
  content: string,
237
245
  ): InferZodType<ZodInput> {
238
246
  const parsed = parseResponseFormatContent({ type: 'json_schema', $parseRaw: undefined }, content);
239
- const parser = (zodObject as { parse?: (data: unknown) => unknown }).parse;
247
+ const parser = zodObject.parse;
240
248
 
241
249
  if (typeof parser === 'function') {
250
+ // SAFETY: The schema's parse method is invoked with its original receiver and owns the inferred output type.
242
251
  const result = parser.call(zodObject, parsed) as InferZodType<ZodInput>;
243
- if (!isZodV4(zodObject as unknown as ZodSchema)) {
252
+ // SAFETY: This read only identifies the supported Zod version before applying its corresponding serialization checks.
253
+ if (!isZodV4(zodObject as ZodSchema)) {
244
254
  assertJSONSerializableSchema(result);
245
255
  }
246
256
  return result;
247
257
  }
248
258
 
249
- return z4.parse(zodObject as unknown as ZodV4Schema, parsed) as InferZodType<ZodInput>;
259
+ // SAFETY: Schemas without a parse method use the supported Zod v4 core parser, which validates the input and supplies the inferred output.
260
+ return z4.parse(zodObject as ZodV4Schema, parsed) as InferZodType<ZodInput>;
250
261
  }
251
262
 
252
263
  /**
@@ -297,7 +308,8 @@ export function zodResponseFormat<ZodInput extends ZodTypeLike>(
297
308
  name: string,
298
309
  props?: ZodResponseFormatProps,
299
310
  ): AutoParseableResponseFormat<InferZodType<ZodInput>> {
300
- const zodSchema = zodObject as unknown as ZodSchema;
311
+ // SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
312
+ const zodSchema = zodObject as ZodSchema;
301
313
  const { schemaDefinitions, ...responseFormatProps } = props ?? {};
302
314
  validateSchemaDefinitions(schemaDefinitions);
303
315
 
@@ -343,7 +355,8 @@ export function zodTextFormat<ZodInput extends ZodTypeLike>(
343
355
  name: string,
344
356
  props?: Omit<ResponseFormatTextJSONSchemaConfig, 'schema' | 'type' | 'strict' | 'name'>,
345
357
  ): AutoParseableTextFormat<InferZodType<ZodInput>> {
346
- const zodSchema = zodObject as unknown as ZodSchema;
358
+ // SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
359
+ const zodSchema = zodObject as ZodSchema;
347
360
 
348
361
  return makeParseableTextFormat<InferZodType<ZodInput>>(
349
362
  {
@@ -366,6 +379,7 @@ interface ZodFunctionOptions<Parameters extends ZodTypeLike> {
366
379
  parameters: Parameters;
367
380
 
368
381
  /** Optional callback invoked with validated arguments by chat `runTools()`. */
382
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
369
383
  function?: ((args: InferZodType<Parameters>) => unknown | Promise<unknown>) | undefined;
370
384
 
371
385
  /** Optional model-visible explanation of when and how the function should be used. */
@@ -415,7 +429,8 @@ export function zodFunction<Parameters extends ZodTypeLike>(
415
429
  /** Builds a strict Chat Completions function tool from the supplied Zod schema. */
416
430
  export function zodFunction<Parameters extends ZodTypeLike>(options: ZodFunctionOptions<Parameters>) {
417
431
  const parameters = options.parameters;
418
- const zodSchema = parameters as unknown as ZodSchema;
432
+ // SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
433
+ const zodSchema = parameters as ZodSchema;
419
434
 
420
435
  return makeParseableTool<any>(
421
436
  {
@@ -455,6 +470,7 @@ export function zodResponsesFunction<Parameters extends ZodTypeLike>(options: {
455
470
  parameters: Parameters;
456
471
 
457
472
  /** Optional callback retained on the tool; `responses.parse()` does not execute it. */
473
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
458
474
  function?: ((args: InferZodType<Parameters>) => unknown | Promise<unknown>) | undefined;
459
475
 
460
476
  /** Optional model-visible explanation of when and how the function should be used. */
@@ -467,10 +483,12 @@ export function zodResponsesFunction<Parameters extends ZodTypeLike>(options: {
467
483
  name: string;
468
484
 
469
485
  /** Callback signature associated with validated function-call arguments. */
486
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Public tool callbacks may return arbitrary application values; preserve the published callback contract.
470
487
  function: (args: InferZodType<Parameters>) => unknown;
471
488
  }> {
472
489
  const parameters = options.parameters;
473
- const zodSchema = parameters as unknown as ZodSchema;
490
+ // SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
491
+ const zodSchema = parameters as ZodSchema;
474
492
 
475
493
  return makeParseableResponseTool<any>(
476
494
  {
@@ -510,7 +528,8 @@ export function zodRealtimeFunction<Parameters extends ZodTypeLike>(options: {
510
528
  /** Optional model-visible explanation of when and how the function should be used. */
511
529
  description?: string | undefined;
512
530
  }): RealtimeFunctionTool {
513
- const zodSchema = options.parameters as unknown as ZodSchema;
531
+ // SAFETY: The public structural Zod input is dispatched by version below; each version-specific converter validates its supported schema contract.
532
+ const zodSchema = options.parameters as ZodSchema;
514
533
 
515
534
  return {
516
535
  type: 'function',
@@ -68,7 +68,7 @@ function commitAssistantStreamArrayProjection(projection: AssistantStreamDeltaPr
68
68
  }
69
69
  }
70
70
 
71
- function isPrimitiveAssistantStreamValue(value: unknown): boolean {
71
+ function isPrimitiveAssistantStreamValue(value: unknown): value is string | number {
72
72
  return typeof value === 'string' || typeof value === 'number';
73
73
  }
74
74
 
@@ -118,6 +118,7 @@ function getAssistantStreamDeltaIndex(
118
118
  );
119
119
  }
120
120
 
121
+ // SAFETY: Number.isSafeInteger rejects non-numbers before numeric comparisons; the remaining checks enforce the permitted index range.
121
122
  if (
122
123
  !Number.isSafeInteger(index) ||
123
124
  (index as number) < 0 ||
@@ -128,6 +129,7 @@ function getAssistantStreamDeltaIndex(
128
129
  throw new OpenAIError(`Assistant stream delta contains an invalid ${kind} index: ${safeIndex}`);
129
130
  }
130
131
 
132
+ // SAFETY: Number.isSafeInteger rejects non-numbers before numeric comparisons; the remaining checks enforce the permitted index range.
131
133
  return index as number;
132
134
  }
133
135
 
@@ -323,6 +325,7 @@ function applyAssistantStreamArrayDelta(
323
325
  }
324
326
  accumulator[index] = deltaEntry;
325
327
  } else {
328
+ // SAFETY: The preceding validation accepts this accumulated record before recursively merging the matching delta entry.
326
329
  accumulator[index] = applyRecord(accumulatedEntry as AssistantStreamRecord, deltaEntry);
327
330
  }
328
331
  } else {
@@ -398,11 +401,14 @@ export function assertSafeAssistantStreamDelta(value: unknown): void {
398
401
 
399
402
  export function accumulateAssistantStreamDelta<Accumulator extends object>(
400
403
  accumulator: Accumulator,
404
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- This exported accumulator accepts heterogeneous partial SDK deltas and validates their properties at runtime.
401
405
  delta: object,
402
406
  cacheArrays = false,
403
407
  ): Accumulator {
404
408
  assertSafeAssistantStreamDelta(delta);
409
+ // SAFETY: The generic accumulator uses record entries after delta validation; recursive merge retains the original accumulator's public type.
405
410
  const accumulatorRecord = accumulator as AssistantStreamRecord;
411
+ // SAFETY: The generic accumulator uses record entries after delta validation; recursive merge retains the original accumulator's public type.
406
412
  const deltaRecord = delta as AssistantStreamRecord;
407
413
  const projection = createAssistantStreamDeltaProjection(
408
414
  cacheArrays && !isAssistantStreamValueExternallyMutable(accumulator),
@@ -13,6 +13,7 @@ export function normalizeX509CredentialOptions(options: ClientOptions): {
13
13
  } {
14
14
  const { credential } = options;
15
15
  if (credential === undefined) {
16
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the exported normalization contract when no X.509 credential is configured.
16
17
  return { credential, options };
17
18
  }
18
19
 
@@ -32,6 +33,7 @@ export function normalizeX509CredentialOptions(options: ClientOptions): {
32
33
  );
33
34
  }
34
35
 
36
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared ClientOptions return contract supports both normalized and unchanged client options.
35
37
  return {
36
38
  credential,
37
39
  options: {
@@ -142,5 +144,6 @@ export function prepareX509ClientClone(
142
144
  }
143
145
  }
144
146
 
147
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the exported clone contract across inherited and replaced credentials and providers.
145
148
  return { credential: nextCredential, provider: prepareProviderClone(inherited, overrides) };
146
149
  }
@@ -74,6 +74,7 @@ function cancelResponseBody(response: Response): void {
74
74
  }
75
75
  }
76
76
 
77
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Decoded token JSON remains untrusted until the caller validates its fields.
77
78
  async function readResponseBody(response: Response, signal?: AbortSignal): Promise<unknown> {
78
79
  if (!response.body) {
79
80
  throw new OpenAIError('X.509 workload identity token exchange returned invalid JSON.');
@@ -124,12 +125,20 @@ async function readResponseBody(response: Response, signal?: AbortSignal): Promi
124
125
  }
125
126
  }
126
127
 
128
+ interface UnvalidatedTokenResponse {
129
+ access_token?: unknown;
130
+ token_type?: unknown;
131
+ issued_token_type?: unknown;
132
+ expires_in?: unknown;
133
+ }
134
+
127
135
  function validateTokenResponse(value: unknown): X509ExchangedToken {
128
136
  if (typeof value !== 'object' || value === null || Array.isArray(value)) {
129
137
  throw new OpenAIError('X.509 workload identity token exchange returned an invalid token response.');
130
138
  }
131
139
 
132
- const response = value as Record<string, unknown>;
140
+ // SAFETY: The object check above establishes a container; optional unknown fields make no claim about its values.
141
+ const response = value as UnvalidatedTokenResponse;
133
142
  if (
134
143
  !hasOwn(response, 'access_token') ||
135
144
  typeof response['access_token'] !== 'string' ||
@@ -44,7 +44,7 @@ class NodeX509Transport implements X509Transport {
44
44
  Object.freeze(this);
45
45
  }
46
46
 
47
- static dispatcher(value: object): Agent | ProxyAgent | undefined {
47
+ static dispatcher(value: X509Transport): Agent | ProxyAgent | undefined {
48
48
  return #dispatcher in value ? value.#dispatcher : undefined;
49
49
  }
50
50
  }
@@ -66,6 +66,7 @@ export function registerX509Transport(transport: X509Transport, registered: Regi
66
66
  rememberRegisteredX509Transport(transport, Object.freeze(registered));
67
67
  }
68
68
 
69
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- Own data-property values must remain untrusted until their option-specific validators run.
69
70
  function dataOption(options: X509TransportOptions, name: keyof X509TransportOptions): unknown {
70
71
  const descriptor = Object.getOwnPropertyDescriptor(options, name);
71
72
  if (!descriptor || !('value' in descriptor)) {
@@ -43,10 +43,7 @@ function assertSafeHeaders(headers: Headers): void {
43
43
  }
44
44
  }
45
45
 
46
- function exchangeDeadline(
47
- timeout: number | undefined,
48
- callerSignal: AbortSignal | null | undefined,
49
- ): { signal: AbortSignal; dispose: () => void } {
46
+ function exchangeDeadline(timeout: number | undefined, callerSignal: AbortSignal | null | undefined) {
50
47
  const deadline = new AbortController();
51
48
  const timer =
52
49
  timeout === undefined
@@ -104,10 +101,7 @@ interface X509TokenRequestContext {
104
101
  fetchOptions: MergedRequestInit;
105
102
  }
106
103
 
107
- function waitForRefresh(
108
- attempt: X509RefreshAttempt,
109
- signal: AbortSignal,
110
- ): { result: Promise<X509ExchangedToken>; dispose: () => void } {
104
+ function waitForRefresh(attempt: X509RefreshAttempt, signal: AbortSignal) {
111
105
  let abort: (() => void) | undefined;
112
106
  // AbortSignal remains callback-only on supported TypeScript/runtime combinations.
113
107
  // oxlint-disable-next-line promise/avoid-new -- A callback-only AbortSignal must race a shared refresh.
@@ -145,6 +139,7 @@ export function isX509WorkloadIdentity(
145
139
  }
146
140
  break;
147
141
  }
142
+ // SAFETY: Object.getPrototypeOf returns an object or null; the traversal checks descriptors rather than assuming a credential-provider subtype.
148
143
  providerOwner = Object.getPrototypeOf(providerOwner) as object | null;
149
144
  }
150
145
 
@@ -157,6 +152,7 @@ export function isX509WorkloadIdentity(
157
152
  }
158
153
  return discriminator.value === 'x509';
159
154
  }
155
+ // SAFETY: Object.getPrototypeOf returns an object or null; the traversal checks descriptors rather than assuming a credential-provider subtype.
160
156
  current = Object.getPrototypeOf(current) as object | null;
161
157
  }
162
158
  return false;
@@ -267,9 +263,11 @@ export class X509WorkloadIdentityAuth {
267
263
  type: 'x509',
268
264
  identityProviderId: this.#identityProviderId,
269
265
  serviceAccountId: this.#serviceAccountId,
266
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
270
267
  ...(this.#configuredRefreshBufferMs === undefined
271
268
  ? {}
272
269
  : { refreshBufferMs: this.#configuredRefreshBufferMs }),
270
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
273
271
  ...(this.#configuredRefreshBufferSeconds === undefined
274
272
  ? {}
275
273
  : { refreshBufferSeconds: this.#configuredRefreshBufferSeconds }),
@@ -302,6 +300,7 @@ export class X509WorkloadIdentityAuth {
302
300
  if (!defaultHeaders || !requestHeaders) {
303
301
  throw new OpenAIError('X.509 workload identity requires snapshotted request headers.');
304
302
  }
303
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The exposed snapshot contract deliberately hides the private request-scope representation.
305
304
  return { defaultHeaders, requestHeaders };
306
305
  }
307
306
 
@@ -495,6 +494,7 @@ export class X509WorkloadIdentityAuth {
495
494
  }
496
495
 
497
496
  /** Establishes an independent scope even when concurrent requests share caller options. */
497
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Logical request owners are opaque identity tokens; their properties are never read.
498
498
  runRequest<T>(operation: () => Promise<T>, requestOwner: object): Promise<T> {
499
499
  return this.#transport.run(async () => {
500
500
  const scope = this.#transport.current();
@@ -515,6 +515,7 @@ export class X509WorkloadIdentityAuth {
515
515
  }
516
516
 
517
517
  /** Reports whether a public request-building call already belongs to an active logical operation. */
518
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Request scope membership compares the opaque caller token by identity only.
518
519
  inRequest(requestOwner: object): boolean {
519
520
  const scope = this.#transport.current();
520
521
  return scope?.owner === this && scope.requestOwner === requestOwner && scope.phase !== 'authorizing';
@@ -540,9 +541,13 @@ export class X509WorkloadIdentityAuth {
540
541
  wallStartedAt,
541
542
  monotonicStartedAt,
542
543
  owner: this,
544
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
543
545
  ...(deadlineArmed ? { deadlineArmed } : {}),
546
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
544
547
  ...(request ? { request } : {}),
548
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
545
549
  ...(effectiveSignal ? { effectiveSignal } : {}),
550
+ // Spread creates an own data property without invoking inherited setters or changing the object prototype.
546
551
  ...(requestOwner ? { requestOwner } : {}),
547
552
  };
548
553
  return (operation) =>