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
@@ -54,6 +54,7 @@ export type BedrockAuthFactory = () => BedrockRequestAuth;
54
54
 
55
55
  /** Wraps a provider failure in an SDK error while preserving its original cause. */
56
56
  export function errorWithCause(message: string, cause: unknown): Errors.OpenAIError {
57
+ // SAFETY: This SDK error is created locally and receives its optional cause immediately below; no existing error shape is trusted.
57
58
  const error = new Errors.OpenAIError(message) as Errors.OpenAIError & { cause?: unknown };
58
59
  error.cause = cause;
59
60
  return error;
@@ -61,6 +62,7 @@ export function errorWithCause(message: string, cause: unknown): Errors.OpenAIEr
61
62
 
62
63
  /** Trims a configuration string, treating missing and whitespace-only values as absent. */
63
64
  export function normalizeOptionalString(value: string | null | undefined): string | undefined {
65
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
64
66
  const normalized = typeof value === 'string' ? value.trim() : undefined;
65
67
  return normalized || undefined;
66
68
  }
@@ -207,6 +209,7 @@ export function resolveBedrockEndpoint(options: BedrockEndpointOptions): {
207
209
  const endpoint =
208
210
  options.endpoint ?? parseBedrockEndpointHostname(new URL(baseURL).hostname)?.endpoint ?? 'mantle';
209
211
  validateCanonicalBedrockEndpoint(baseURL, endpoint, region);
212
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Preserve the declared endpoint resolver contract across configured URLs and inferred regions.
210
213
  return { endpoint, region, baseURL };
211
214
  }
212
215
  const endpoint = options.endpoint ?? 'mantle';
@@ -220,6 +223,7 @@ export function resolveBedrockEndpoint(options: BedrockEndpointOptions): {
220
223
  endpoint === 'runtime'
221
224
  ? `bedrock-runtime.${region}.${resolveRuntimeDnsSuffixes(region)[0]}`
222
225
  : `bedrock-mantle.${region}.api.aws`;
226
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The resolver intentionally returns its declared endpoint contract across all configuration paths.
223
227
  return { endpoint, region, baseURL: `https://${hostname}/openai/v1` };
224
228
  }
225
229
 
@@ -245,7 +249,9 @@ export function assertBedrockRequestOrigin(baseURL: string, requestURL: string):
245
249
  }
246
250
 
247
251
  /** Validates a final WebSocket URL before a legacy Bedrock client resolves or attaches credentials. */
252
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- The WebSocket authentication boundary verifies the caller client at runtime before trusting provider metadata.
248
253
  export function assertBedrockWebSocketOrigin(client: unknown, requestURL: URL): void {
254
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
249
255
  if (typeof client !== 'object' || client === null || !(brand_privateBedrockClient in client)) {
250
256
  return;
251
257
  }
@@ -257,7 +263,9 @@ export function assertBedrockWebSocketOrigin(client: unknown, requestURL: URL):
257
263
  normalizedRequestURL.protocol = 'http:';
258
264
  }
259
265
 
266
+ // SAFETY: The private Bedrock brand checked above identifies the client whose baseURL is validated against the finalized request origin.
260
267
  assertBedrockRequestOrigin(
268
+ // oxlint-disable-next-line anti-slop/no-chained-type-assertions -- The private Bedrock client brand checked above identifies the client baseURL contract.
261
269
  (client as unknown as { baseURL: string }).baseURL,
262
270
  normalizedRequestURL.toString(),
263
271
  );
@@ -346,6 +354,7 @@ function resolveAbortableBedrockAuth<T>(
346
354
  }
347
355
  };
348
356
 
357
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Failures and rejection reasons can be arbitrary JavaScript values; preserve them until inspection or forwarding.
349
358
  const rejectSignalFailure = (error: unknown) => {
350
359
  if (failure.error) {
351
360
  return;
@@ -483,6 +492,7 @@ class BedrockBearerAuth implements BedrockRequestAuth {
483
492
  resolve: () => this.tokenProvider(),
484
493
  failureMessage: 'Failed to resolve a bearer credential for Bedrock.',
485
494
  apply: (token) => {
495
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
486
496
  if (typeof token !== 'string' || !token.trim()) {
487
497
  throw new Errors.OpenAIError(
488
498
  'The Bedrock bearer credential provider must return a non-empty string.',
@@ -533,6 +543,7 @@ export function resolveBedrockBearerAuth(
533
543
  if (
534
544
  options.apiKey !== undefined &&
535
545
  options.apiKey !== null &&
546
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Bedrock credential and origin checks validate JavaScript configuration before any credential is sent.
536
547
  (typeof options.apiKey !== 'string' || !options.apiKey.trim())
537
548
  ) {
538
549
  throw new Errors.OpenAIError('The Bedrock bearer credential must not be empty.');
@@ -545,13 +556,16 @@ export function resolveBedrockBearerAuth(
545
556
 
546
557
  if (options.tokenProvider) {
547
558
  const tokenProvider = options.tokenProvider;
559
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared bearer-auth contract hides concrete authenticator implementations behind their factory.
548
560
  return { factory: () => new BedrockBearerAuth(tokenProvider), explicit: true };
549
561
  }
550
562
  if (options.apiKey != null) {
551
563
  const apiKey = options.apiKey;
564
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Explicit API keys use the same declared auth-factory contract as token providers.
552
565
  return { factory: () => new BedrockBearerAuth(async () => apiKey), explicit: true };
553
566
  }
554
567
  if (allowEnvironment && options.apiKey !== null && readEnv('AWS_BEARER_TOKEN_BEDROCK')) {
568
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Environment credentials must preserve the same declared auth-factory contract as explicit options.
555
569
  return {
556
570
  explicit: false,
557
571
  factory: () =>
@@ -567,5 +581,6 @@ export function resolveBedrockBearerAuth(
567
581
  };
568
582
  }
569
583
 
584
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The declared optional factory contract also represents the absence of bearer credentials.
570
585
  return { factory: undefined, explicit: false };
571
586
  }
@@ -55,6 +55,7 @@ export class LineDecoder {
55
55
  let binaryChunk: Uint8Array;
56
56
  if (chunk instanceof ArrayBuffer) {
57
57
  binaryChunk = new Uint8Array(chunk);
58
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The line decoder accepts both text and binary chunks and must select the matching decoding path.
58
59
  } else if (typeof chunk === 'string') {
59
60
  binaryChunk = encodeUTF8(chunk);
60
61
  } else {
@@ -9,6 +9,7 @@ export type APIResponseProps = {
9
9
  response: Response;
10
10
  options: FinalRequestOptions;
11
11
  controller: AbortController;
12
+ requestSignal?: AbortSignal | null | undefined;
12
13
  requestLogID: string;
13
14
  retryOfRequestLogID: string | undefined;
14
15
  startTime: number;
@@ -54,7 +54,9 @@ export interface ProviderDefinition {
54
54
  * provider configurations.
55
55
  */
56
56
  const providerDefinitionsKey = Symbol.for('openai.node.providerDefinitions.v1');
57
+ // SAFETY: This versioned global symbol is the SDK-owned cross-copy WeakMap registry; no provider object fields are trusted through it.
57
58
  const providerGlobal = globalThis as any;
59
+ // SAFETY: This versioned global symbol is the SDK-owned cross-copy WeakMap registry; no provider object fields are trusted through it.
58
60
  const existingProviderDefinitions = providerGlobal[providerDefinitionsKey] as
59
61
  | WeakMap<Provider, ProviderDefinition>
60
62
  | undefined;
@@ -70,6 +72,7 @@ if (!existingProviderDefinitions) {
70
72
  * installed copy of the SDK in the same JavaScript realm.
71
73
  */
72
74
  export function createProvider(definition: ProviderDefinition): Provider {
75
+ // SAFETY: This function creates the opaque handle and immediately registers its identity in the private WeakMap, which is the runtime brand check.
73
76
  const provider = Object.freeze({}) as Provider;
74
77
  providerDefinitions.set(provider, definition);
75
78
  return provider;
@@ -22,6 +22,7 @@ const push_to_array = function push_to_array(arr: any[], value_or_array: any) {
22
22
 
23
23
  let toISOString;
24
24
 
25
+ // SAFETY: The defaults object supplies the serializer's established non-null option values and RFC formatter; callers still merge their overrides separately.
25
26
  const defaults = {
26
27
  addQueryPrefix: false,
27
28
  allowDots: false,
@@ -172,6 +173,7 @@ function inner_stringify(
172
173
  }
173
174
 
174
175
  for (const key of obj_keys) {
176
+ // SAFETY: The serializer supports its existing encoded-key wrapper or property key; the branch selects the wrapper value before indexing the object.
175
177
  const value =
176
178
  // @ts-ignore
177
179
  typeof key === 'object' && key.value !== undefined ? key.value : obj[key as any];
@@ -180,6 +182,7 @@ function inner_stringify(
180
182
  continue;
181
183
  }
182
184
 
185
+ // SAFETY: Dot encoding applies the serializer's existing string-key protocol; this cast preserves its legacy mixed key representation.
183
186
  // @ts-ignore
184
187
  const encoded_key = allowDots && encodeDotInKeys ? (key as any).replace(/\./g, '%2E') : key;
185
188
  let key_prefix: string;
@@ -2,16 +2,20 @@ import { RFC1738 } from './formats';
2
2
  import type { DefaultEncoder, Format } from './types';
3
3
  import { isArray } from '../utils/values';
4
4
 
5
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The cached own-property predicate accepts arrays, callable objects, and records.
5
6
  let cachedHas: ((obj: object, key: PropertyKey) => boolean) | undefined;
6
7
 
8
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Own-property lookup is a generic object primitive and must preserve array and callable inputs.
7
9
  export const has = (obj: object, key: PropertyKey): boolean => {
10
+ // SAFETY: Object.hasOwn is an optional native capability; older runtimes use the bound hasOwnProperty fallback with the same own-key semantics.
11
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- The native or compatibility own-property predicate has the same generic object contract.
8
12
  const resolvedHas: (obj: object, key: PropertyKey) => boolean =
9
13
  cachedHas ?? (Object as any).hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty);
10
14
  cachedHas = resolvedHas;
11
15
  return resolvedHas(obj, key);
12
16
  };
13
17
 
14
- function isUnsafePropertyKey(key: unknown): boolean {
18
+ function isUnsafePropertyKey(key: PropertyKey): boolean {
15
19
  return key === '__proto__' || key === 'constructor' || key === 'prototype';
16
20
  }
17
21
 
@@ -39,6 +43,7 @@ interface MergeState {
39
43
  const maxAdoptedRecords = 10_000;
40
44
 
41
45
  function isIntrinsicFunctionPrototype(
46
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Prototype descriptors are inspected before deciding whether an arbitrary adopted value is callable.
42
47
  value: object,
43
48
  key: PropertyKey,
44
49
  descriptor: PropertyDescriptor,
@@ -52,6 +57,7 @@ function isObjectLike(value: unknown): value is object {
52
57
  return value !== null && (typeof value === 'object' || typeof value === 'function');
53
58
  }
54
59
 
60
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Adoption records retain arbitrary merge-target identities for later descriptor validation.
55
61
  function rememberAdoption(state: MergeState, target: object, key: PropertyKey, value: any): void {
56
62
  if (!isObjectLike(value)) {
57
63
  return;
@@ -77,6 +83,7 @@ function sanitizeAdoptions(state: MergeState): void {
77
83
  }[] = [];
78
84
  let inspectedProperties = 0;
79
85
 
86
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Adoption validation inspects arbitrary objects, including arrays and functions, before trusting their structure.
80
87
  function inspect(value: object): AdoptedRecord {
81
88
  const known = records.get(value);
82
89
  if (known) {
@@ -131,7 +138,7 @@ function sanitizeAdoptions(state: MergeState): void {
131
138
  const detached: AdoptedRecord[] = [];
132
139
  for (const record of visited) {
133
140
  for (const key of record.keys) {
134
- const descriptor = Reflect.get(record.descriptors, key) as PropertyDescriptor | undefined;
141
+ const descriptor = record.descriptors[key];
135
142
  if (!descriptor) {
136
143
  continue;
137
144
  }
@@ -204,7 +211,7 @@ function sanitizeAdoptions(state: MergeState): void {
204
211
  if (isUnsafePropertyKey(key)) {
205
212
  continue;
206
213
  }
207
- const descriptor = Reflect.get(record.descriptors, key) as PropertyDescriptor | undefined;
214
+ const descriptor = record.descriptors[key];
208
215
  if (!descriptor) {
209
216
  continue;
210
217
  }
@@ -239,12 +246,14 @@ function readPreparedTarget(state: MergeState, target: any, key: PropertyKey): a
239
246
  return target[key];
240
247
  }
241
248
 
249
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Merge targets may contain accessors or custom prototypes, so the preview preserves the generic object boundary.
242
250
  function previewTarget(state: MergeState, target: object, key: PropertyKey): any {
243
251
  const descriptor = Object.getOwnPropertyDescriptor(target, key);
244
252
  if (descriptor && 'value' in descriptor) {
245
253
  return descriptor.value;
246
254
  }
247
255
 
256
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Generic query merging snapshots arbitrary inherited/accessor keys before mutation.
248
257
  const value = Reflect.get(target, key, target);
249
258
  let prepared = state.preparedTargets.get(target);
250
259
  if (!prepared) {
@@ -280,11 +289,13 @@ function prepareMergeSource(target: any, source: any, state: MergeState, assign
280
289
  }
281
290
  state.inspectedSourceProperties += sourceKeys.length;
282
291
  const sourceIsArray = isArray(source);
292
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- The query merge graph preserves heterogeneous scalar, array, and object values under its existing merge contract.
283
293
  const prepared: Record<string, any> = sourceIsArray ? [] : Object.create(null);
284
294
  preparedTargets.set(target, prepared);
285
295
 
286
296
  if (isArray(target) && sourceIsArray && !assign) {
287
297
  const sourceLength = source.length;
298
+ // SAFETY: prepared was constructed as an array when sourceIsArray is true, which this branch requires.
288
299
  (prepared as any[]).length = sourceLength;
289
300
  for (let index = 0; index < sourceLength; index += 1) {
290
301
  if (!(index in source)) {
@@ -128,6 +128,7 @@ type ResponseIgnoredEvent = Extract<
128
128
  | 'response.audio.done'
129
129
  | 'response.audio.transcript.delta'
130
130
  | 'response.audio.transcript.done'
131
+ | 'response.compaction.compacting'
131
132
  | 'response.image_generation_call.partial_image'
132
133
  | 'response.mcp_list_tools.in_progress'
133
134
  | 'response.mcp_list_tools.completed'
@@ -198,6 +199,7 @@ function hasRoutedOutputCallIdentity(
198
199
  }
199
200
 
200
201
  function getOutputItemIdentityKeys(output: Response['output'][number], eventType: string): string[] {
202
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate untrusted streamed item identifiers and discriminators before mutating the response snapshot.
201
203
  if (!hasOwn(output, 'type') || typeof output.type !== 'string') {
202
204
  throw new OpenAIError(`expected an own output item type for ${eventType}`);
203
205
  }
@@ -206,6 +208,7 @@ function getOutputItemIdentityKeys(output: Response['output'][number], eventType
206
208
  const identities: string[] = [];
207
209
 
208
210
  if (hasOwn(output, 'id')) {
211
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate untrusted streamed item identifiers and discriminators before mutating the response snapshot.
209
212
  if (typeof output.id !== 'string' || output.id.length === 0) {
210
213
  throw new OpenAIError(`expected a non-empty output item id for ${eventType}`);
211
214
  }
@@ -215,6 +218,7 @@ function getOutputItemIdentityKeys(output: Response['output'][number], eventType
215
218
  }
216
219
 
217
220
  if (hasRoutedOutputCallIdentity(output)) {
221
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate untrusted streamed item identifiers and discriminators before mutating the response snapshot.
218
222
  if (!hasOwn(output, 'call_id') || typeof output.call_id !== 'string' || output.call_id.length === 0) {
219
223
  throw new OpenAIError(`expected a non-empty output item call_id for ${eventType}`);
220
224
  }
@@ -328,6 +332,7 @@ const expectedOutputItemTypes = {
328
332
  'response.mcp_list_tools.in_progress': 'mcp_list_tools',
329
333
  'response.mcp_list_tools.completed': 'mcp_list_tools',
330
334
  'response.mcp_list_tools.failed': 'mcp_list_tools',
335
+ 'response.compaction.compacting': 'compaction',
331
336
  } satisfies Record<
332
337
  Exclude<ResponseItemScopedEvent['type'], 'response.content_part.added' | 'response.content_part.done'>,
333
338
  Response['output'][number]['type']
@@ -400,7 +405,9 @@ function validateOutputItemIdentity(
400
405
  return;
401
406
  }
402
407
 
408
+ // SAFETY: The event type was classified as item-scoped; the following checks validate its own item_id before use.
403
409
  const itemEvent = event as ResponseItemScopedEvent;
410
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate untrusted streamed item identifiers and discriminators before mutating the response snapshot.
404
411
  if (!hasOwn(event, 'item_id') || typeof itemEvent.item_id !== 'string' || itemEvent.item_id.length === 0) {
405
412
  throw new OpenAIError(`expected a non-empty item_id for ${event.type}`);
406
413
  }
@@ -514,6 +521,7 @@ const supportedResponseEventTypes = createSupportedResponseEventTypes([
514
521
  'response.audio.done',
515
522
  'response.audio.transcript.delta',
516
523
  'response.audio.transcript.done',
524
+ 'response.compaction.compacting',
517
525
  'response.image_generation_call.partial_image',
518
526
  'response.mcp_list_tools.in_progress',
519
527
  'response.mcp_list_tools.completed',
@@ -535,19 +543,37 @@ const responseEventRoutingFields = [
535
543
  'summary_index',
536
544
  ] as const;
537
545
 
538
- function sanitizeResponseEvent(event: ResponseAccumulatorEvent): ResponseAccumulatorEvent {
546
+ // These fields are snapshotted before the event-specific validators inspect them.
547
+ interface ResponseEventPayload {
548
+ item_id?: unknown;
549
+ output_index?: unknown;
550
+ content_index?: unknown;
551
+ annotation_index?: unknown;
552
+ command_index?: unknown;
553
+ summary_index?: unknown;
554
+ item?: unknown;
555
+ part?: unknown;
556
+ }
557
+
558
+ function sanitizeResponseEvent(
559
+ event: ResponseAccumulatorEvent & ResponseEventPayload,
560
+ ): ResponseAccumulatorEvent {
539
561
  let descriptor: PropertyDescriptor | undefined;
540
562
  try {
541
563
  descriptor = Object.getOwnPropertyDescriptor(event, 'type');
542
564
  } catch {
565
+ // SAFETY: assertNever always throws; the cast routes invalid runtime events through the existing unsupported-event error path.
543
566
  return assertNever(event as never);
544
567
  }
545
568
 
546
569
  const type: unknown = descriptor?.value;
570
+ // SAFETY: The string is used only as a Set lookup key; membership performs the supported-event check.
547
571
  if (
572
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Validate untrusted streamed item identifiers and discriminators before mutating the response snapshot.
548
573
  typeof type !== 'string' ||
549
574
  !supportedResponseEventTypes.has(type as ResponseAccumulatorEvent['type'])
550
575
  ) {
576
+ // SAFETY: assertNever always throws; the cast routes invalid runtime events through the existing unsupported-event error path.
551
577
  return assertNever(event as never);
552
578
  }
553
579
 
@@ -566,21 +592,23 @@ function sanitizeResponseEvent(event: ResponseAccumulatorEvent): ResponseAccumul
566
592
  try {
567
593
  for (const field of responseEventRoutingFields) {
568
594
  const routingDescriptor = Object.getOwnPropertyDescriptor(event, field);
569
- stableValues.set(field, routingDescriptor ? Reflect.get(event, field, event) : undefined);
595
+ stableValues.set(field, routingDescriptor ? event[field] : undefined);
570
596
  }
571
597
 
572
598
  if (type === 'response.output_item.done') {
573
- stableValues.set('item', structuredClone(Reflect.get(event, 'item', event)));
599
+ stableValues.set('item', structuredClone(event.item));
574
600
  } else if (type === 'response.content_part.added' || type === 'response.content_part.done') {
575
- stableValues.set('part', structuredClone(Reflect.get(event, 'part', event)));
601
+ stableValues.set('part', structuredClone(event.part));
576
602
  }
577
603
  } catch {
604
+ // SAFETY: assertNever always throws; the cast routes invalid runtime events through the existing unsupported-event error path.
578
605
  return assertNever(event as never);
579
606
  }
580
607
  }
581
608
 
582
609
  return new Proxy(event, {
583
610
  get(target, property) {
611
+ // oxlint-disable-next-line anti-slop/no-reflect-get -- Proxy forwarding must preserve arbitrary keys with the original target as accessor receiver.
584
612
  return stableValues.has(property) ? stableValues.get(property) : Reflect.get(target, property, target);
585
613
  },
586
614
  });
@@ -772,6 +800,7 @@ function accumulateOutputTextEvent(
772
800
  throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);
773
801
  }
774
802
  validateArrayIndex(content.annotations, event.annotation_index, 'annotation', true);
803
+ // SAFETY: The output_text discriminator and annotation index were checked; the annotation is cloned from the corresponding API event contract.
775
804
  content.annotations[event.annotation_index] = structuredClone(
776
805
  event.annotation,
777
806
  ) as ResponseOutputText['annotations'][number];
@@ -1151,6 +1180,7 @@ function isIgnoredResponseEvent(event: ResponseAccumulatorEvent): event is Respo
1151
1180
  case 'response.audio.done':
1152
1181
  case 'response.audio.transcript.delta':
1153
1182
  case 'response.audio.transcript.done':
1183
+ case 'response.compaction.compacting':
1154
1184
  case 'response.image_generation_call.partial_image':
1155
1185
  case 'response.mcp_list_tools.in_progress':
1156
1186
  case 'response.mcp_list_tools.completed':
@@ -186,7 +186,7 @@ async function getBytes(value: BlobLikePart | AsyncIterable<BlobLikePart>): Prom
186
186
  isAsyncIterable(value) // includes Readable, ReadableStream, etc.
187
187
  ) {
188
188
  for await (const chunk of value) {
189
- parts.push(...(await getBytes(chunk as BlobLikePart)));
189
+ parts.push(...(await getBytes(chunk)));
190
190
  }
191
191
  } else {
192
192
  const constructor = value?.constructor?.name;
@@ -105,6 +105,7 @@ type NamedBlob = Blob & {
105
105
  */
106
106
  export const checkFileSupport = () => {
107
107
  if (typeof File === 'undefined') {
108
+ // SAFETY: This optional Node global is inspected only to improve the missing-File diagnostic in runtimes without process.
108
109
  const { process } = globalThis as any;
109
110
  const isOldNode =
110
111
  typeof process?.versions?.node === 'string' &&
@@ -148,6 +149,7 @@ export function makeFile(
148
149
  options?: FilePropertyBag,
149
150
  ): File {
150
151
  checkFileSupport();
152
+ // SAFETY: The SDK BlobPart union supports Node and web binary inputs; the native File constructor handles those parts across their differing ambient types.
151
153
  return new File(fileBits as any, fileName ?? 'unknown_file', options);
152
154
  }
153
155
 
@@ -268,6 +270,7 @@ const supportsFormDataMap = /* @__PURE__ */ new WeakMap<Fetch, Promise<boolean>>
268
270
  * confusing error messages later on.
269
271
  */
270
272
  function supportsFormData(fetchObject: OpenAI | Fetch): Promise<boolean> {
273
+ // SAFETY: The union has already excluded callable fetch values; the remaining OpenAI client owns the fetch implementation used by this probe.
271
274
  const fetch: Fetch = typeof fetchObject === 'function' ? fetchObject : (fetchObject as any).fetch;
272
275
  const cached = supportsFormDataMap.get(fetch);
273
276
  if (cached) {
@@ -277,10 +280,12 @@ function supportsFormData(fetchObject: OpenAI | Fetch): Promise<boolean> {
277
280
  try {
278
281
  let FetchResponse: typeof Response;
279
282
  if ('Response' in fetch) {
283
+ // SAFETY: Custom fetch implementations may expose their matching Response constructor; the enclosing probe catches incompatible constructors.
280
284
  FetchResponse = fetch.Response as typeof Response;
281
285
  } else {
282
286
  const response = await fetch('data:,');
283
287
  await response.arrayBuffer();
288
+ // SAFETY: The successful fetch response supplies the constructor used to test its own FormData support; failures remain inside the probe's catch.
284
289
  FetchResponse = response.constructor as typeof Response;
285
290
  }
286
291
  const data = new FormData();
@@ -351,6 +356,7 @@ const isUploadable = (value: unknown): value is Uploadable =>
351
356
  isStreamingFile(value) ||
352
357
  isBlob(value));
353
358
 
359
+ // SAFETY: The enclosing object guard and own-key enumeration allow reading these property values without assigning them a trusted value type.
354
360
  const hasStreamingUploadableValue = (value: unknown): boolean => {
355
361
  if (isStreamingFile(value) || isAsyncIterable(value) || isReadableStream(value)) {
356
362
  return true;
@@ -369,6 +375,7 @@ const hasStreamingUploadableValue = (value: unknown): boolean => {
369
375
  return false;
370
376
  };
371
377
 
378
+ // SAFETY: The enclosing object guard and own-key enumeration allow reading these property values without assigning them a trusted value type.
372
379
  const hasUploadableValue = (value: unknown): boolean => {
373
380
  if (isUploadable(value)) {
374
381
  return true;
@@ -496,6 +503,7 @@ function* iterateFormValue(key: string, value: unknown): Generator<FormEntry> {
496
503
  }
497
504
 
498
505
  function getStreamingFileName(value: Uploadable, options: CreateFormOptions): string {
506
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The runtime guard validates JavaScript and custom upload values before trusting the StreamingFile brand.
499
507
  if (isStreamingFile(value)) {
500
508
  const { name } = value;
501
509
  if (typeof name !== 'string' || !name) {
@@ -513,6 +521,7 @@ function getStreamingFileName(value: Uploadable, options: CreateFormOptions): st
513
521
  function getStreamingFileType(value: Uploadable): string {
514
522
  let type: string | undefined;
515
523
 
524
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- Runtime upload-brand checks intentionally accept unknown inputs despite the static Uploadable annotation.
516
525
  if (isStreamingFile(value) || isBlob(value)) {
517
526
  ({ type } = value);
518
527
  } else if (value instanceof Response) {
@@ -537,7 +546,8 @@ function validateStreamingFileType(type: string): string {
537
546
  return type;
538
547
  }
539
548
 
540
- function getStreamingFileData(value: Uploadable): unknown {
549
+ function getStreamingFileData(value: Uploadable): Exclude<Uploadable, StreamingFile> {
550
+ // oxlint-disable-next-line anti-slop/no-known-value-widening -- The runtime guard validates the streaming wrapper before accessing its potentially custom data.
541
551
  if (isStreamingFile(value)) {
542
552
  return value.data;
543
553
  }
@@ -4,16 +4,18 @@ interface WeakReference<T> {
4
4
  }
5
5
  type WeakAbortCallback = WeakReference<AbortCallback>;
6
6
  interface AbortFinalizer {
7
- register: (target: AbortCallback, cleanup: AbortCallback, token: object) => void;
8
- unregister: (token: object) => boolean;
7
+ register: (target: AbortCallback, cleanup: AbortCallback, token: WeakAbortCallback) => void;
8
+ unregister: (token: WeakAbortCallback) => boolean;
9
9
  }
10
10
 
11
11
  // Keep these optional runtime features out of the SDK's ES2020 type requirements.
12
+ // SAFETY: These host features are optional and checked before use; the structural view avoids requiring newer ambient library declarations.
12
13
  const weakGlobals = globalThis as typeof globalThis & {
13
14
  WeakRef?: new <T extends object>(target: T) => WeakReference<T>;
14
15
  FinalizationRegistry?: new (cleanup: (value: AbortCallback) => void) => AbortFinalizer;
15
16
  };
16
17
  const finalizer =
18
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Weak references and finalizers are optional host capabilities, so probe them before constructing either.
17
19
  typeof weakGlobals.FinalizationRegistry === 'function'
18
20
  ? new weakGlobals.FinalizationRegistry((cleanup) => {
19
21
  try {
@@ -68,10 +70,12 @@ function releaseOnAbort(
68
70
 
69
71
  /** Keep cancellation alive until abort or collection of the response body or bodyless custom response. */
70
72
  export function retainRequestAbortCallback(
73
+ // oxlint-disable-next-line anti-slop/no-object-parameters -- Abort callbacks are retained by any response-body or custom-response owner identity.
71
74
  owner: object,
72
75
  abort: AbortCallback,
73
76
  requestSignal: AbortSignal,
74
77
  ): void {
78
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Weak references and finalizers are optional host capabilities, so probe them before constructing either.
75
79
  if (typeof weakGlobals.WeakRef === 'function' && finalizer && !requestSignal.aborted) {
76
80
  let callbacks = callbackOwners.get(owner);
77
81
  if (!callbacks) {
@@ -99,6 +103,7 @@ export function addRequestAbortListener(
99
103
  // No listener was installed for an already aborted signal.
100
104
  };
101
105
  }
106
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Weak references and finalizers are optional host capabilities, so probe them before constructing either.
102
107
  if (typeof weakGlobals.WeakRef !== 'function' || !finalizer) {
103
108
  signal.addEventListener('abort', abort, { once: true });
104
109
  return () => signal.removeEventListener('abort', abort);
@@ -19,6 +19,7 @@ let encodeUTF8_: (str: string) => Uint8Array;
19
19
  /** Encodes text as UTF-8 bytes, reusing the platform encoder after its first call. */
20
20
  export function encodeUTF8(str: string) {
21
21
  let encoder;
22
+ // SAFETY: Supported runtimes provide the standard TextEncoder/TextDecoder globals; the cast keeps their ambient DOM declarations optional.
22
23
  return (
23
24
  encodeUTF8_ ??
24
25
  ((encoder = new (globalThis as any).TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder)))
@@ -30,6 +31,7 @@ let decodeUTF8_: (bytes: Uint8Array) => string;
30
31
  /** Decodes UTF-8 bytes as text, reusing the platform decoder after its first call. */
31
32
  export function decodeUTF8(bytes: Uint8Array) {
32
33
  let decoder;
34
+ // SAFETY: Supported runtimes provide the standard TextEncoder/TextDecoder globals; the cast keeps their ambient DOM declarations optional.
33
35
  return (
34
36
  decodeUTF8_ ??
35
37
  ((decoder = new (globalThis as any).TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder)))
@@ -24,6 +24,7 @@ const EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null))
24
24
  * `encodeURIComponent`. Nullish values, ordinary objects, and literal or
25
25
  * percent-encoded `.`/`..` path segments are rejected with an SDK error.
26
26
  */
27
+ // SAFETY: This branch compares prototype methods to recognize cross-realm plain values; it does not call the optional hasOwnProperty member.
27
28
  export const createPathTagFunction = (pathEncoder = encodeURIPath) =>
28
29
  function path(statics: readonly string[], ...params: readonly unknown[]): string {
29
30
  // If there are no params, no processing is needed.
@@ -45,6 +46,7 @@ export const createPathTagFunction = (pathEncoder = encodeURIPath) =>
45
46
  if (
46
47
  index !== params.length &&
47
48
  (value == null ||
49
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Path parameters may arrive from JavaScript callers and require runtime validation before URL encoding.
48
50
  (typeof value === 'object' &&
49
51
  // handle values from other realms
50
52
  value.toString ===
@@ -1 +1,52 @@
1
- export const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
1
+ export const sleep = (ms: number, ...signals: (AbortSignal | null | undefined)[]): Promise<void> =>
2
+ new Promise((resolve, reject) => {
3
+ const activeSignals = [...new Set(signals.filter((signal): signal is AbortSignal => signal != null))];
4
+ let timeout: ReturnType<typeof setTimeout> | undefined;
5
+ let settled = false;
6
+ const cleanup = () => {
7
+ for (const signal of activeSignals) {
8
+ try {
9
+ signal.removeEventListener('abort', abort);
10
+ } catch {
11
+ // Structural signal cleanup must not prevent the promise from settling.
12
+ }
13
+ }
14
+ };
15
+ const settle = (callback: () => void) => {
16
+ if (settled) {
17
+ return;
18
+ }
19
+ settled = true;
20
+ if (timeout !== undefined) {
21
+ clearTimeout(timeout);
22
+ timeout = undefined;
23
+ }
24
+ cleanup();
25
+ callback();
26
+ };
27
+ const abort = () => {
28
+ settle(() => reject());
29
+ };
30
+
31
+ if (activeSignals.some((signal) => signal.aborted)) {
32
+ abort();
33
+ return;
34
+ }
35
+
36
+ timeout = setTimeout(() => {
37
+ settle(resolve);
38
+ }, ms);
39
+ for (const signal of activeSignals) {
40
+ if (settled) {
41
+ break;
42
+ }
43
+ try {
44
+ signal.addEventListener('abort', abort, { once: true });
45
+ } catch (error) {
46
+ settle(() => reject(error));
47
+ }
48
+ }
49
+ if (activeSignals.some((signal) => signal.aborted)) {
50
+ abort();
51
+ }
52
+ });
@@ -166,6 +166,7 @@ export class BrowserWebSocket implements WebSocketLike {
166
166
  const message = ev?.message || ev?.error?.message || 'WebSocket error';
167
167
  const err = new Error(message);
168
168
  if (ev?.error) {
169
+ // SAFETY: The locally created Error receives the browser error event's cause; the cast avoids requiring newer Error ambient declarations.
169
170
  (err as any).cause = ev.error;
170
171
  }
171
172
  listener(err);
@@ -173,6 +174,7 @@ export class BrowserWebSocket implements WebSocketLike {
173
174
  }
174
175
 
175
176
  default: {
177
+ // SAFETY: Non-special events use the native DOM handler contract directly; the adapter only wraps message, close, and error variants above.
176
178
  return listener as DOMEventHandler;
177
179
  }
178
180
  }