openai 7.5.0 → 7.6.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 (597) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +46 -2
  3. package/auth/index.d.mts +1 -1
  4. package/auth/index.d.mts.map +1 -1
  5. package/auth/index.d.ts +1 -1
  6. package/auth/index.d.ts.map +1 -1
  7. package/auth/index.js.map +1 -1
  8. package/auth/index.mjs.map +1 -1
  9. package/auth/subject-token-providers.d.mts.map +1 -1
  10. package/auth/subject-token-providers.d.ts.map +1 -1
  11. package/auth/subject-token-providers.js +176 -4
  12. package/auth/subject-token-providers.js.map +1 -1
  13. package/auth/subject-token-providers.mjs +176 -4
  14. package/auth/subject-token-providers.mjs.map +1 -1
  15. package/auth/types.d.mts +17 -0
  16. package/auth/types.d.mts.map +1 -1
  17. package/auth/types.d.ts +17 -0
  18. package/auth/types.d.ts.map +1 -1
  19. package/auth/workload-identity-auth.d.mts.map +1 -1
  20. package/auth/workload-identity-auth.d.ts.map +1 -1
  21. package/auth/workload-identity-auth.js +80 -7
  22. package/auth/workload-identity-auth.js.map +1 -1
  23. package/auth/workload-identity-auth.mjs +80 -7
  24. package/auth/workload-identity-auth.mjs.map +1 -1
  25. package/auth/x509-transport.d.mts +5 -0
  26. package/auth/x509-transport.d.mts.map +1 -0
  27. package/auth/x509-transport.d.ts +5 -0
  28. package/auth/x509-transport.d.ts.map +1 -0
  29. package/auth/x509-transport.js +39 -0
  30. package/auth/x509-transport.js.map +1 -0
  31. package/auth/x509-transport.mjs +36 -0
  32. package/auth/x509-transport.mjs.map +1 -0
  33. package/azure.d.mts +11 -2
  34. package/azure.d.mts.map +1 -1
  35. package/azure.d.ts +11 -2
  36. package/azure.d.ts.map +1 -1
  37. package/azure.js +7 -1
  38. package/azure.js.map +1 -1
  39. package/azure.mjs +7 -1
  40. package/azure.mjs.map +1 -1
  41. package/bedrock.d.mts +6 -2
  42. package/bedrock.d.mts.map +1 -1
  43. package/bedrock.d.ts +6 -2
  44. package/bedrock.d.ts.map +1 -1
  45. package/bedrock.js +34 -4
  46. package/bedrock.js.map +1 -1
  47. package/bedrock.mjs +35 -5
  48. package/bedrock.mjs.map +1 -1
  49. package/beta/realtime/internal-base.d.mts +2 -0
  50. package/beta/realtime/internal-base.d.mts.map +1 -1
  51. package/beta/realtime/internal-base.d.ts +2 -0
  52. package/beta/realtime/internal-base.d.ts.map +1 -1
  53. package/beta/realtime/internal-base.js +15 -0
  54. package/beta/realtime/internal-base.js.map +1 -1
  55. package/beta/realtime/internal-base.mjs +14 -0
  56. package/beta/realtime/internal-base.mjs.map +1 -1
  57. package/beta/realtime/websocket.d.mts +11 -5
  58. package/beta/realtime/websocket.d.mts.map +1 -1
  59. package/beta/realtime/websocket.d.ts +11 -5
  60. package/beta/realtime/websocket.d.ts.map +1 -1
  61. package/beta/realtime/websocket.js +106 -31
  62. package/beta/realtime/websocket.js.map +1 -1
  63. package/beta/realtime/websocket.mjs +107 -32
  64. package/beta/realtime/websocket.mjs.map +1 -1
  65. package/beta/realtime/ws.d.mts +0 -2
  66. package/beta/realtime/ws.d.mts.map +1 -1
  67. package/beta/realtime/ws.d.ts +0 -2
  68. package/beta/realtime/ws.d.ts.map +1 -1
  69. package/beta/realtime/ws.js +24 -5
  70. package/beta/realtime/ws.js.map +1 -1
  71. package/beta/realtime/ws.mjs +25 -6
  72. package/beta/realtime/ws.mjs.map +1 -1
  73. package/client.d.mts +17 -2
  74. package/client.d.mts.map +1 -1
  75. package/client.d.ts +17 -2
  76. package/client.d.ts.map +1 -1
  77. package/client.js +422 -70
  78. package/client.js.map +1 -1
  79. package/client.mjs +423 -71
  80. package/client.mjs.map +1 -1
  81. package/core/EventEmitter.d.mts.map +1 -1
  82. package/core/EventEmitter.d.ts.map +1 -1
  83. package/core/EventEmitter.js +67 -9
  84. package/core/EventEmitter.js.map +1 -1
  85. package/core/EventEmitter.mjs +68 -10
  86. package/core/EventEmitter.mjs.map +1 -1
  87. package/core/streaming.d.mts +1 -0
  88. package/core/streaming.d.mts.map +1 -1
  89. package/core/streaming.d.ts +1 -0
  90. package/core/streaming.d.ts.map +1 -1
  91. package/core/streaming.js +58 -19
  92. package/core/streaming.js.map +1 -1
  93. package/core/streaming.mjs +58 -19
  94. package/core/streaming.mjs.map +1 -1
  95. package/helpers/audio.d.mts +5 -5
  96. package/helpers/audio.d.mts.map +1 -1
  97. package/helpers/audio.d.ts +5 -5
  98. package/helpers/audio.d.ts.map +1 -1
  99. package/helpers/audio.js +93 -22
  100. package/helpers/audio.js.map +1 -1
  101. package/helpers/audio.mjs +93 -22
  102. package/helpers/audio.mjs.map +1 -1
  103. package/helpers/standard-schema.d.mts.map +1 -1
  104. package/helpers/standard-schema.d.ts.map +1 -1
  105. package/helpers/standard-schema.js +34 -14
  106. package/helpers/standard-schema.js.map +1 -1
  107. package/helpers/standard-schema.mjs +35 -15
  108. package/helpers/standard-schema.mjs.map +1 -1
  109. package/helpers/zod-v3-strict-schema.d.mts +7 -0
  110. package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
  111. package/helpers/zod-v3-strict-schema.d.ts +7 -0
  112. package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
  113. package/helpers/zod-v3-strict-schema.js +403 -0
  114. package/helpers/zod-v3-strict-schema.js.map +1 -0
  115. package/helpers/zod-v3-strict-schema.mjs +399 -0
  116. package/helpers/zod-v3-strict-schema.mjs.map +1 -0
  117. package/helpers/zod.d.mts.map +1 -1
  118. package/helpers/zod.d.ts.map +1 -1
  119. package/helpers/zod.js +11 -3
  120. package/helpers/zod.js.map +1 -1
  121. package/helpers/zod.mjs +12 -4
  122. package/helpers/zod.mjs.map +1 -1
  123. package/index.d.mts +1 -1
  124. package/index.d.mts.map +1 -1
  125. package/index.d.ts +1 -1
  126. package/index.d.ts.map +1 -1
  127. package/index.js.map +1 -1
  128. package/index.mjs.map +1 -1
  129. package/internal/assistant-stream-delta.d.mts.map +1 -1
  130. package/internal/assistant-stream-delta.d.ts.map +1 -1
  131. package/internal/assistant-stream-delta.js +28 -8
  132. package/internal/assistant-stream-delta.js.map +1 -1
  133. package/internal/assistant-stream-delta.mjs +28 -8
  134. package/internal/assistant-stream-delta.mjs.map +1 -1
  135. package/internal/auth/x509-token-exchange.d.mts +16 -0
  136. package/internal/auth/x509-token-exchange.d.mts.map +1 -0
  137. package/internal/auth/x509-token-exchange.d.ts +16 -0
  138. package/internal/auth/x509-token-exchange.d.ts.map +1 -0
  139. package/internal/auth/x509-token-exchange.js +246 -0
  140. package/internal/auth/x509-token-exchange.js.map +1 -0
  141. package/internal/auth/x509-token-exchange.mjs +243 -0
  142. package/internal/auth/x509-token-exchange.mjs.map +1 -0
  143. package/internal/auth/x509-transport-capability.d.mts +37 -0
  144. package/internal/auth/x509-transport-capability.d.mts.map +1 -0
  145. package/internal/auth/x509-transport-capability.d.ts +37 -0
  146. package/internal/auth/x509-transport-capability.d.ts.map +1 -0
  147. package/internal/auth/x509-transport-capability.js +169 -0
  148. package/internal/auth/x509-transport-capability.js.map +1 -0
  149. package/internal/auth/x509-transport-capability.mjs +164 -0
  150. package/internal/auth/x509-transport-capability.mjs.map +1 -0
  151. package/internal/auth/x509-transport-registry.d.mts +63 -0
  152. package/internal/auth/x509-transport-registry.d.mts.map +1 -0
  153. package/internal/auth/x509-transport-registry.d.ts +63 -0
  154. package/internal/auth/x509-transport-registry.d.ts.map +1 -0
  155. package/internal/auth/x509-transport-registry.js +53 -0
  156. package/internal/auth/x509-transport-registry.js.map +1 -0
  157. package/internal/auth/x509-transport-registry.mjs +48 -0
  158. package/internal/auth/x509-transport-registry.mjs.map +1 -0
  159. package/internal/auth/x509-transport-state-browser.d.mts +21 -0
  160. package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
  161. package/internal/auth/x509-transport-state-browser.d.ts +21 -0
  162. package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
  163. package/internal/auth/x509-transport-state-browser.js +30 -0
  164. package/internal/auth/x509-transport-state-browser.js.map +1 -0
  165. package/internal/auth/x509-transport-state-browser.mjs +27 -0
  166. package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
  167. package/internal/auth/x509-transport-state.cjs +30 -0
  168. package/internal/auth/x509-transport-state.cjs.map +1 -0
  169. package/internal/auth/x509-transport-state.d.cts +21 -0
  170. package/internal/auth/x509-transport-state.d.cts.map +1 -0
  171. package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
  172. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
  173. package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
  174. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
  175. package/internal/auth/x509-workload-identity-auth.js +767 -0
  176. package/internal/auth/x509-workload-identity-auth.js.map +1 -0
  177. package/internal/auth/x509-workload-identity-auth.mjs +757 -0
  178. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
  179. package/internal/bedrock.d.mts +2 -0
  180. package/internal/bedrock.d.mts.map +1 -1
  181. package/internal/bedrock.d.ts +2 -0
  182. package/internal/bedrock.d.ts.map +1 -1
  183. package/internal/bedrock.js +169 -5
  184. package/internal/bedrock.js.map +1 -1
  185. package/internal/bedrock.mjs +168 -5
  186. package/internal/bedrock.mjs.map +1 -1
  187. package/internal/data-residency.d.mts +12 -0
  188. package/internal/data-residency.d.mts.map +1 -0
  189. package/internal/data-residency.d.ts +12 -0
  190. package/internal/data-residency.d.ts.map +1 -0
  191. package/internal/data-residency.js +34 -0
  192. package/internal/data-residency.js.map +1 -0
  193. package/internal/data-residency.mjs +30 -0
  194. package/internal/data-residency.mjs.map +1 -0
  195. package/internal/multipart-encoding.d.mts +8 -0
  196. package/internal/multipart-encoding.d.mts.map +1 -0
  197. package/internal/multipart-encoding.d.ts +8 -0
  198. package/internal/multipart-encoding.d.ts.map +1 -0
  199. package/internal/multipart-encoding.js +51 -0
  200. package/internal/multipart-encoding.js.map +1 -0
  201. package/internal/multipart-encoding.mjs +48 -0
  202. package/internal/multipart-encoding.mjs.map +1 -0
  203. package/internal/qs/utils.d.mts.map +1 -1
  204. package/internal/qs/utils.d.ts.map +1 -1
  205. package/internal/qs/utils.js +307 -10
  206. package/internal/qs/utils.js.map +1 -1
  207. package/internal/qs/utils.mjs +307 -10
  208. package/internal/qs/utils.mjs.map +1 -1
  209. package/internal/request-options.d.mts +7 -0
  210. package/internal/request-options.d.mts.map +1 -1
  211. package/internal/request-options.d.ts +7 -0
  212. package/internal/request-options.d.ts.map +1 -1
  213. package/internal/request-options.js +43 -1
  214. package/internal/request-options.js.map +1 -1
  215. package/internal/request-options.mjs +42 -1
  216. package/internal/request-options.mjs.map +1 -1
  217. package/internal/responses/canonical-output-text.js +3 -3
  218. package/internal/responses/canonical-output-text.js.map +1 -1
  219. package/internal/responses/canonical-output-text.mjs +3 -3
  220. package/internal/responses/canonical-output-text.mjs.map +1 -1
  221. package/internal/responses/response-accumulator.d.mts +1 -1
  222. package/internal/responses/response-accumulator.d.mts.map +1 -1
  223. package/internal/responses/response-accumulator.d.ts +1 -1
  224. package/internal/responses/response-accumulator.d.ts.map +1 -1
  225. package/internal/responses/response-accumulator.js +331 -25
  226. package/internal/responses/response-accumulator.js.map +1 -1
  227. package/internal/responses/response-accumulator.mjs +331 -25
  228. package/internal/responses/response-accumulator.mjs.map +1 -1
  229. package/internal/tslib.js +6 -0
  230. package/internal/tslib.mjs +6 -1
  231. package/internal/uploads.d.mts +10 -6
  232. package/internal/uploads.d.mts.map +1 -1
  233. package/internal/uploads.d.ts +10 -6
  234. package/internal/uploads.d.ts.map +1 -1
  235. package/internal/uploads.js +65 -24
  236. package/internal/uploads.js.map +1 -1
  237. package/internal/uploads.mjs +65 -24
  238. package/internal/uploads.mjs.map +1 -1
  239. package/internal/utils/env.d.mts.map +1 -1
  240. package/internal/utils/env.d.ts.map +1 -1
  241. package/internal/utils/env.js +9 -4
  242. package/internal/utils/env.js.map +1 -1
  243. package/internal/utils/env.mjs +9 -4
  244. package/internal/utils/env.mjs.map +1 -1
  245. package/internal/ws.d.mts.map +1 -1
  246. package/internal/ws.d.ts.map +1 -1
  247. package/internal/ws.js +23 -1
  248. package/internal/ws.js.map +1 -1
  249. package/internal/ws.mjs +23 -1
  250. package/internal/ws.mjs.map +1 -1
  251. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  252. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  253. package/lib/AbstractChatCompletionRunner.js +32 -7
  254. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  255. package/lib/AbstractChatCompletionRunner.mjs +34 -9
  256. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  257. package/lib/AssistantStream.d.mts.map +1 -1
  258. package/lib/AssistantStream.d.ts.map +1 -1
  259. package/lib/AssistantStream.js +211 -23
  260. package/lib/AssistantStream.js.map +1 -1
  261. package/lib/AssistantStream.mjs +211 -23
  262. package/lib/AssistantStream.mjs.map +1 -1
  263. package/lib/ChatCompletionStream.d.mts +1 -1
  264. package/lib/ChatCompletionStream.d.mts.map +1 -1
  265. package/lib/ChatCompletionStream.d.ts +1 -1
  266. package/lib/ChatCompletionStream.d.ts.map +1 -1
  267. package/lib/ChatCompletionStream.js +1118 -67
  268. package/lib/ChatCompletionStream.js.map +1 -1
  269. package/lib/ChatCompletionStream.mjs +1119 -68
  270. package/lib/ChatCompletionStream.mjs.map +1 -1
  271. package/lib/EventEmitter.d.mts.map +1 -1
  272. package/lib/EventEmitter.d.ts.map +1 -1
  273. package/lib/EventEmitter.js +67 -9
  274. package/lib/EventEmitter.js.map +1 -1
  275. package/lib/EventEmitter.mjs +68 -10
  276. package/lib/EventEmitter.mjs.map +1 -1
  277. package/lib/EventStream.d.mts +4 -0
  278. package/lib/EventStream.d.mts.map +1 -1
  279. package/lib/EventStream.d.ts +4 -0
  280. package/lib/EventStream.d.ts.map +1 -1
  281. package/lib/EventStream.js +1096 -11
  282. package/lib/EventStream.js.map +1 -1
  283. package/lib/EventStream.mjs +1097 -12
  284. package/lib/EventStream.mjs.map +1 -1
  285. package/lib/ResponsesParser.d.mts.map +1 -1
  286. package/lib/ResponsesParser.d.ts.map +1 -1
  287. package/lib/ResponsesParser.js +1 -1
  288. package/lib/ResponsesParser.js.map +1 -1
  289. package/lib/ResponsesParser.mjs +1 -1
  290. package/lib/ResponsesParser.mjs.map +1 -1
  291. package/lib/Util.d.mts +2 -0
  292. package/lib/Util.d.mts.map +1 -1
  293. package/lib/Util.d.ts +2 -0
  294. package/lib/Util.d.ts.map +1 -1
  295. package/lib/Util.js +7 -4
  296. package/lib/Util.js.map +1 -1
  297. package/lib/Util.mjs +7 -4
  298. package/lib/Util.mjs.map +1 -1
  299. package/lib/assistant-run-polling.d.mts +12 -0
  300. package/lib/assistant-run-polling.d.mts.map +1 -0
  301. package/lib/assistant-run-polling.d.ts +12 -0
  302. package/lib/assistant-run-polling.d.ts.map +1 -0
  303. package/lib/assistant-run-polling.js +17 -0
  304. package/lib/assistant-run-polling.js.map +1 -0
  305. package/lib/assistant-run-polling.mjs +14 -0
  306. package/lib/assistant-run-polling.mjs.map +1 -0
  307. package/lib/embeddings.d.mts +18 -0
  308. package/lib/embeddings.d.mts.map +1 -0
  309. package/lib/embeddings.d.ts +18 -0
  310. package/lib/embeddings.d.ts.map +1 -0
  311. package/lib/embeddings.js +50 -0
  312. package/lib/embeddings.js.map +1 -0
  313. package/lib/embeddings.mjs +47 -0
  314. package/lib/embeddings.mjs.map +1 -0
  315. package/lib/file-processing.d.mts +10 -0
  316. package/lib/file-processing.d.mts.map +1 -0
  317. package/lib/file-processing.d.ts +10 -0
  318. package/lib/file-processing.d.ts.map +1 -0
  319. package/lib/file-processing.js +30 -0
  320. package/lib/file-processing.js.map +1 -0
  321. package/lib/file-processing.mjs +27 -0
  322. package/lib/file-processing.mjs.map +1 -0
  323. package/lib/parser.d.mts.map +1 -1
  324. package/lib/parser.d.ts.map +1 -1
  325. package/lib/parser.js +16 -4
  326. package/lib/parser.js.map +1 -1
  327. package/lib/parser.mjs +16 -4
  328. package/lib/parser.mjs.map +1 -1
  329. package/lib/polling.d.mts +20 -0
  330. package/lib/polling.d.mts.map +1 -0
  331. package/lib/polling.d.ts +20 -0
  332. package/lib/polling.d.ts.map +1 -0
  333. package/lib/polling.js +130 -0
  334. package/lib/polling.js.map +1 -0
  335. package/lib/polling.mjs +127 -0
  336. package/lib/polling.mjs.map +1 -0
  337. package/lib/responses/ResponseStream.d.mts.map +1 -1
  338. package/lib/responses/ResponseStream.d.ts.map +1 -1
  339. package/lib/responses/ResponseStream.js +21 -11
  340. package/lib/responses/ResponseStream.js.map +1 -1
  341. package/lib/responses/ResponseStream.mjs +21 -11
  342. package/lib/responses/ResponseStream.mjs.map +1 -1
  343. package/lib/vector-store-polling.d.mts +22 -0
  344. package/lib/vector-store-polling.d.mts.map +1 -0
  345. package/lib/vector-store-polling.d.ts +22 -0
  346. package/lib/vector-store-polling.d.ts.map +1 -0
  347. package/lib/vector-store-polling.js +24 -0
  348. package/lib/vector-store-polling.js.map +1 -0
  349. package/lib/vector-store-polling.mjs +20 -0
  350. package/lib/vector-store-polling.mjs.map +1 -0
  351. package/lib/vector-store-upload.d.mts +17 -0
  352. package/lib/vector-store-upload.d.mts.map +1 -0
  353. package/lib/vector-store-upload.d.ts +17 -0
  354. package/lib/vector-store-upload.d.ts.map +1 -0
  355. package/lib/vector-store-upload.js +37 -0
  356. package/lib/vector-store-upload.js.map +1 -0
  357. package/lib/vector-store-upload.mjs +34 -0
  358. package/lib/vector-store-upload.mjs.map +1 -0
  359. package/lib/webhook-signature.d.mts +15 -0
  360. package/lib/webhook-signature.d.mts.map +1 -0
  361. package/lib/webhook-signature.d.ts +15 -0
  362. package/lib/webhook-signature.d.ts.map +1 -0
  363. package/lib/webhook-signature.js +125 -0
  364. package/lib/webhook-signature.js.map +1 -0
  365. package/lib/webhook-signature.mjs +121 -0
  366. package/lib/webhook-signature.mjs.map +1 -0
  367. package/package.json +14 -1
  368. package/realtime/internal-base.d.mts +2 -0
  369. package/realtime/internal-base.d.mts.map +1 -1
  370. package/realtime/internal-base.d.ts +2 -0
  371. package/realtime/internal-base.d.ts.map +1 -1
  372. package/realtime/internal-base.js +15 -0
  373. package/realtime/internal-base.js.map +1 -1
  374. package/realtime/internal-base.mjs +14 -0
  375. package/realtime/internal-base.mjs.map +1 -1
  376. package/realtime/websocket.d.mts +3 -2
  377. package/realtime/websocket.d.mts.map +1 -1
  378. package/realtime/websocket.d.ts +3 -2
  379. package/realtime/websocket.d.ts.map +1 -1
  380. package/realtime/websocket.js +90 -26
  381. package/realtime/websocket.js.map +1 -1
  382. package/realtime/websocket.mjs +91 -27
  383. package/realtime/websocket.mjs.map +1 -1
  384. package/realtime/ws.d.mts.map +1 -1
  385. package/realtime/ws.d.ts.map +1 -1
  386. package/realtime/ws.js +9 -1
  387. package/realtime/ws.js.map +1 -1
  388. package/realtime/ws.mjs +10 -2
  389. package/realtime/ws.mjs.map +1 -1
  390. package/resources/admin/organization/index.d.mts +2 -2
  391. package/resources/admin/organization/index.d.mts.map +1 -1
  392. package/resources/admin/organization/index.d.ts +2 -2
  393. package/resources/admin/organization/index.d.ts.map +1 -1
  394. package/resources/admin/organization/index.js.map +1 -1
  395. package/resources/admin/organization/index.mjs.map +1 -1
  396. package/resources/admin/organization/organization.d.mts +4 -4
  397. package/resources/admin/organization/organization.d.mts.map +1 -1
  398. package/resources/admin/organization/organization.d.ts +4 -4
  399. package/resources/admin/organization/organization.d.ts.map +1 -1
  400. package/resources/admin/organization/organization.js.map +1 -1
  401. package/resources/admin/organization/organization.mjs.map +1 -1
  402. package/resources/admin/organization/projects/index.d.mts +1 -1
  403. package/resources/admin/organization/projects/index.d.mts.map +1 -1
  404. package/resources/admin/organization/projects/index.d.ts +1 -1
  405. package/resources/admin/organization/projects/index.d.ts.map +1 -1
  406. package/resources/admin/organization/projects/index.js.map +1 -1
  407. package/resources/admin/organization/projects/index.mjs.map +1 -1
  408. package/resources/admin/organization/projects/projects.d.mts +22 -5
  409. package/resources/admin/organization/projects/projects.d.mts.map +1 -1
  410. package/resources/admin/organization/projects/projects.d.ts +22 -5
  411. package/resources/admin/organization/projects/projects.d.ts.map +1 -1
  412. package/resources/admin/organization/projects/projects.js.map +1 -1
  413. package/resources/admin/organization/projects/projects.mjs.map +1 -1
  414. package/resources/admin/organization/usage.d.mts +62 -1
  415. package/resources/admin/organization/usage.d.mts.map +1 -1
  416. package/resources/admin/organization/usage.d.ts +62 -1
  417. package/resources/admin/organization/usage.d.ts.map +1 -1
  418. package/resources/admin/organization/usage.js.map +1 -1
  419. package/resources/admin/organization/usage.mjs.map +1 -1
  420. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  421. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  422. package/resources/beta/responses/internal-base.js +2 -0
  423. package/resources/beta/responses/internal-base.js.map +1 -1
  424. package/resources/beta/responses/internal-base.mjs +2 -0
  425. package/resources/beta/responses/internal-base.mjs.map +1 -1
  426. package/resources/beta/responses/responses.d.mts +9 -12
  427. package/resources/beta/responses/responses.d.mts.map +1 -1
  428. package/resources/beta/responses/responses.d.ts +9 -12
  429. package/resources/beta/responses/responses.d.ts.map +1 -1
  430. package/resources/beta/responses/responses.js.map +1 -1
  431. package/resources/beta/responses/responses.mjs.map +1 -1
  432. package/resources/beta/threads/runs/index.d.mts +1 -1
  433. package/resources/beta/threads/runs/index.d.mts.map +1 -1
  434. package/resources/beta/threads/runs/index.d.ts +1 -1
  435. package/resources/beta/threads/runs/index.d.ts.map +1 -1
  436. package/resources/beta/threads/runs/runs.d.mts.map +1 -1
  437. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  438. package/resources/beta/threads/runs/runs.js +2 -43
  439. package/resources/beta/threads/runs/runs.js.map +1 -1
  440. package/resources/beta/threads/runs/runs.mjs +2 -43
  441. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  442. package/resources/chat/completions/completions.d.mts +6 -0
  443. package/resources/chat/completions/completions.d.mts.map +1 -1
  444. package/resources/chat/completions/completions.d.ts +6 -0
  445. package/resources/chat/completions/completions.d.ts.map +1 -1
  446. package/resources/chat/completions/completions.js.map +1 -1
  447. package/resources/chat/completions/completions.mjs.map +1 -1
  448. package/resources/embeddings.d.mts.map +1 -1
  449. package/resources/embeddings.d.ts.map +1 -1
  450. package/resources/embeddings.js +2 -36
  451. package/resources/embeddings.js.map +1 -1
  452. package/resources/embeddings.mjs +2 -36
  453. package/resources/embeddings.mjs.map +1 -1
  454. package/resources/files.d.mts.map +1 -1
  455. package/resources/files.d.ts.map +1 -1
  456. package/resources/files.js +2 -15
  457. package/resources/files.js.map +1 -1
  458. package/resources/files.mjs +2 -15
  459. package/resources/files.mjs.map +1 -1
  460. package/resources/images.d.mts +12 -22
  461. package/resources/images.d.mts.map +1 -1
  462. package/resources/images.d.ts +12 -22
  463. package/resources/images.d.ts.map +1 -1
  464. package/resources/realtime/calls.d.mts +23 -1
  465. package/resources/realtime/calls.d.mts.map +1 -1
  466. package/resources/realtime/calls.d.ts +23 -1
  467. package/resources/realtime/calls.d.ts.map +1 -1
  468. package/resources/realtime/calls.js +24 -0
  469. package/resources/realtime/calls.js.map +1 -1
  470. package/resources/realtime/calls.mjs +24 -0
  471. package/resources/realtime/calls.mjs.map +1 -1
  472. package/resources/realtime/index.d.mts +1 -1
  473. package/resources/realtime/index.d.mts.map +1 -1
  474. package/resources/realtime/index.d.ts +1 -1
  475. package/resources/realtime/index.d.ts.map +1 -1
  476. package/resources/realtime/index.js.map +1 -1
  477. package/resources/realtime/index.mjs +1 -1
  478. package/resources/realtime/index.mjs.map +1 -1
  479. package/resources/realtime/realtime.d.mts +5 -4
  480. package/resources/realtime/realtime.d.mts.map +1 -1
  481. package/resources/realtime/realtime.d.ts +5 -4
  482. package/resources/realtime/realtime.d.ts.map +1 -1
  483. package/resources/realtime/realtime.js.map +1 -1
  484. package/resources/realtime/realtime.mjs.map +1 -1
  485. package/resources/responses/internal-base.d.mts.map +1 -1
  486. package/resources/responses/internal-base.d.ts.map +1 -1
  487. package/resources/responses/internal-base.js +2 -0
  488. package/resources/responses/internal-base.js.map +1 -1
  489. package/resources/responses/internal-base.mjs +2 -0
  490. package/resources/responses/internal-base.mjs.map +1 -1
  491. package/resources/responses/responses.d.mts +9 -12
  492. package/resources/responses/responses.d.mts.map +1 -1
  493. package/resources/responses/responses.d.ts +9 -12
  494. package/resources/responses/responses.d.ts.map +1 -1
  495. package/resources/responses/responses.js.map +1 -1
  496. package/resources/responses/responses.mjs.map +1 -1
  497. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  498. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  499. package/resources/vector-stores/file-batches.js +4 -61
  500. package/resources/vector-stores/file-batches.js.map +1 -1
  501. package/resources/vector-stores/file-batches.mjs +4 -61
  502. package/resources/vector-stores/file-batches.mjs.map +1 -1
  503. package/resources/vector-stores/files.d.mts +1 -1
  504. package/resources/vector-stores/files.d.mts.map +1 -1
  505. package/resources/vector-stores/files.d.ts +1 -1
  506. package/resources/vector-stores/files.d.ts.map +1 -1
  507. package/resources/vector-stores/files.js +2 -35
  508. package/resources/vector-stores/files.js.map +1 -1
  509. package/resources/vector-stores/files.mjs +2 -35
  510. package/resources/vector-stores/files.mjs.map +1 -1
  511. package/resources/webhooks/webhooks.d.mts.map +1 -1
  512. package/resources/webhooks/webhooks.d.ts.map +1 -1
  513. package/resources/webhooks/webhooks.js +5 -43
  514. package/resources/webhooks/webhooks.js.map +1 -1
  515. package/resources/webhooks/webhooks.mjs +5 -43
  516. package/resources/webhooks/webhooks.mjs.map +1 -1
  517. package/src/auth/index.ts +6 -1
  518. package/src/auth/subject-token-providers.ts +196 -4
  519. package/src/auth/types.ts +24 -0
  520. package/src/auth/workload-identity-auth.ts +104 -7
  521. package/src/auth/x509-transport.ts +49 -0
  522. package/src/azure.ts +22 -1
  523. package/src/bedrock.ts +49 -5
  524. package/src/beta/realtime/internal-base.ts +15 -0
  525. package/src/beta/realtime/websocket.ts +148 -40
  526. package/src/beta/realtime/ws.ts +31 -13
  527. package/src/client.ts +536 -92
  528. package/src/core/EventEmitter.ts +91 -7
  529. package/src/core/streaming.ts +71 -20
  530. package/src/helpers/audio.ts +93 -22
  531. package/src/helpers/standard-schema.ts +50 -16
  532. package/src/helpers/zod-v3-strict-schema.ts +514 -0
  533. package/src/helpers/zod.ts +17 -4
  534. package/src/index.ts +1 -1
  535. package/src/internal/assistant-stream-delta.ts +33 -10
  536. package/src/internal/auth/x509-token-exchange.ts +310 -0
  537. package/src/internal/auth/x509-transport-capability.ts +219 -0
  538. package/src/internal/auth/x509-transport-registry.ts +118 -0
  539. package/src/internal/auth/x509-transport-state-browser.ts +36 -0
  540. package/src/internal/auth/x509-transport-state.cts +36 -0
  541. package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
  542. package/src/internal/bedrock.ts +182 -5
  543. package/src/internal/data-residency.ts +44 -0
  544. package/src/internal/multipart-encoding.ts +53 -0
  545. package/src/internal/qs/utils.ts +375 -13
  546. package/src/internal/request-options.ts +52 -1
  547. package/src/internal/responses/canonical-output-text.ts +3 -3
  548. package/src/internal/responses/response-accumulator.ts +411 -24
  549. package/src/internal/uploads.ts +81 -26
  550. package/src/internal/utils/env.ts +9 -5
  551. package/src/internal/ws.ts +24 -3
  552. package/src/lib/AbstractChatCompletionRunner.ts +33 -6
  553. package/src/lib/AssistantStream.ts +262 -22
  554. package/src/lib/ChatCompletionStream.ts +1467 -103
  555. package/src/lib/EventEmitter.ts +91 -7
  556. package/src/lib/EventStream.ts +1483 -10
  557. package/src/lib/ResponsesParser.ts +4 -1
  558. package/src/lib/Util.ts +7 -5
  559. package/src/lib/assistant-run-polling.ts +27 -0
  560. package/src/lib/embeddings.ts +65 -0
  561. package/src/lib/file-processing.ts +36 -0
  562. package/src/lib/parser.ts +19 -4
  563. package/src/lib/polling.ts +144 -0
  564. package/src/lib/responses/ResponseStream.ts +22 -10
  565. package/src/lib/vector-store-polling.ts +46 -0
  566. package/src/lib/vector-store-upload.ts +53 -0
  567. package/src/lib/webhook-signature.ts +164 -0
  568. package/src/realtime/internal-base.ts +15 -0
  569. package/src/realtime/websocket.ts +130 -27
  570. package/src/realtime/ws.ts +15 -2
  571. package/src/resources/admin/organization/index.ts +2 -0
  572. package/src/resources/admin/organization/organization.ts +4 -0
  573. package/src/resources/admin/organization/projects/index.ts +1 -0
  574. package/src/resources/admin/organization/projects/projects.ts +37 -4
  575. package/src/resources/admin/organization/usage.ts +83 -0
  576. package/src/resources/beta/responses/internal-base.ts +2 -0
  577. package/src/resources/beta/responses/responses.ts +9 -12
  578. package/src/resources/beta/threads/runs/index.ts +1 -1
  579. package/src/resources/beta/threads/runs/runs.ts +2 -45
  580. package/src/resources/chat/completions/completions.ts +7 -0
  581. package/src/resources/embeddings.ts +2 -42
  582. package/src/resources/files.ts +2 -19
  583. package/src/resources/images.ts +12 -22
  584. package/src/resources/realtime/api.md +1 -0
  585. package/src/resources/realtime/calls.ts +46 -0
  586. package/src/resources/realtime/index.ts +7 -1
  587. package/src/resources/realtime/realtime.ts +5 -3
  588. package/src/resources/responses/internal-base.ts +2 -0
  589. package/src/resources/responses/responses.ts +9 -12
  590. package/src/resources/vector-stores/file-batches.ts +8 -77
  591. package/src/resources/vector-stores/files.ts +3 -43
  592. package/src/resources/webhooks/webhooks.ts +5 -61
  593. package/src/version.ts +1 -1
  594. package/version.d.mts +1 -1
  595. package/version.d.ts +1 -1
  596. package/version.js +1 -1
  597. package/version.mjs +1 -1
@@ -1,6 +1,340 @@
1
- var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_abortListeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_removeAbortListeners, _EventStream_handleError;
1
+ var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_abortListeners, _EventStream_emittedListenerRegistrations, _EventStream_pendingListenerCleanup, _EventStream_pendingBufferedEventChecks, _EventStream_listenerDispatchDepth, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_removeAbortListeners, _EventStream_onceForEmitted, _EventStream_removeEmittedListener, _EventStream_cleanupEmittedListeners, _EventStream_handleError;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "../internal/tslib.mjs";
3
- import { APIUserAbortError, OpenAIError } from "../error.mjs";
3
+ import { APIConnectionError, APIConnectionTimeoutError, APIError, APIUserAbortError, AuthenticationError, BadRequestError, ConflictError, ContentFilterFinishReasonError, InternalServerError, InvalidWebhookSignatureError, LengthFinishReasonError, NotFoundError, OAuthError, OpenAIError, PermissionDeniedError, RateLimitError, SubjectTokenProviderError, UnprocessableEntityError, } from "../error.mjs";
4
+ const MAX_BUFFERED_ITERATOR_EVENTS = 4096;
5
+ const MAX_BUFFERED_ITERATOR_BYTES = 8 * 1024 * 1024;
6
+ // Typed-array own-key enumeration materializes every dense index before custom keys.
7
+ const MAX_INSPECTABLE_TYPED_ARRAY_ELEMENTS = 4096;
8
+ // Structured JSON may nest 128 levels before stream-event wrappers are added.
9
+ const MAX_BUFFERED_EVENT_DEPTH = 256;
10
+ const bufferedJSONStringify = JSON.stringify;
11
+ const bufferedJSONParse = JSON.parse;
12
+ const sdkOwnedBufferedEventArguments = new WeakSet();
13
+ const typedArrayBufferGetter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'buffer')?.get;
14
+ const typedArrayLengthGetter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'length')?.get;
15
+ const dataViewBufferGetter = Object.getOwnPropertyDescriptor(DataView.prototype, 'buffer')?.get;
16
+ const symbolDescriptionGetter = Object.getOwnPropertyDescriptor(Symbol.prototype, 'description')?.get;
17
+ const dateTimestampGetter = Date.prototype.getTime;
18
+ const arrayBufferByteLengthGetter = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength')?.get;
19
+ const sharedArrayBufferByteLengthGetter = typeof SharedArrayBuffer === 'function'
20
+ ? Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, 'byteLength')?.get
21
+ : undefined;
22
+ // V8 uses the same trusted lazy-stack accessor pair for native Error instances.
23
+ const errorStackDescriptor = Object.getOwnPropertyDescriptor(new Error('native stack descriptor'), 'stack');
24
+ const functionToString = Function.prototype.toString;
25
+ const objectToString = Object.prototype.toString;
26
+ const errorBrandDescriptor = Object.getOwnPropertyDescriptor(Error, 'isError');
27
+ const nativeErrorBrand = errorBrandDescriptor && 'value' in errorBrandDescriptor && typeof errorBrandDescriptor.value === 'function'
28
+ ? errorBrandDescriptor.value
29
+ : undefined;
30
+ const nativeErrorConstructorSource = functionToString.call(Error);
31
+ const nativeDateConstructorSource = functionToString.call(Date);
32
+ const nativeFunctionConstructorSource = functionToString.call(Function);
33
+ const trustedIntrinsicPrototypes = new Set([
34
+ APIConnectionError.prototype,
35
+ APIConnectionTimeoutError.prototype,
36
+ APIError.prototype,
37
+ OpenAIError.prototype,
38
+ APIUserAbortError.prototype,
39
+ AuthenticationError.prototype,
40
+ BadRequestError.prototype,
41
+ ConflictError.prototype,
42
+ ContentFilterFinishReasonError.prototype,
43
+ InternalServerError.prototype,
44
+ InvalidWebhookSignatureError.prototype,
45
+ LengthFinishReasonError.prototype,
46
+ NotFoundError.prototype,
47
+ OAuthError.prototype,
48
+ PermissionDeniedError.prototype,
49
+ RateLimitError.prototype,
50
+ SubjectTokenProviderError.prototype,
51
+ UnprocessableEntityError.prototype,
52
+ ]);
53
+ const trustedNativeConstructorSources = new Set();
54
+ const canonicalIntrinsicDescriptors = new Map();
55
+ const foreignErrorStackDescriptors = new WeakMap();
56
+ function captureNativeProxyDetector() {
57
+ if (typeof process === 'undefined') {
58
+ return undefined;
59
+ }
60
+ try {
61
+ const loader = Object.getOwnPropertyDescriptor(process, 'getBuiltinModule');
62
+ if (!loader || !('value' in loader) || typeof loader.value !== 'function') {
63
+ return undefined;
64
+ }
65
+ const util = Reflect.apply(loader.value, process, ['node:util']);
66
+ if (typeof util !== 'object' || util === null) {
67
+ return undefined;
68
+ }
69
+ const types = Object.getOwnPropertyDescriptor(util, 'types');
70
+ if (!types || !('value' in types) || typeof types.value !== 'object' || types.value === null) {
71
+ return undefined;
72
+ }
73
+ const detector = Object.getOwnPropertyDescriptor(types.value, 'isProxy');
74
+ if (!detector || !('value' in detector) || typeof detector.value !== 'function') {
75
+ return undefined;
76
+ }
77
+ return detector.value;
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ // Transparent proxies have no portable ECMAScript brand. Newer Node runtimes
84
+ // expose one without adding a Node-only import to browser-compatible bundles.
85
+ const nativeProxyDetector = captureNativeProxyDetector();
86
+ function rememberTrustedIntrinsic(constructor) {
87
+ if (typeof constructor !== 'function') {
88
+ return;
89
+ }
90
+ const prototypeDescriptor = Object.getOwnPropertyDescriptor(constructor, 'prototype');
91
+ if (!prototypeDescriptor ||
92
+ !('value' in prototypeDescriptor) ||
93
+ (typeof prototypeDescriptor.value !== 'object' && typeof prototypeDescriptor.value !== 'function')) {
94
+ return;
95
+ }
96
+ trustedIntrinsicPrototypes.add(prototypeDescriptor.value);
97
+ const source = functionToString.call(constructor);
98
+ if (/^function [A-Za-z_$][\w$]*\(\) \{ \[native code\] \}$/u.test(source) &&
99
+ prototypeDescriptor.configurable === false &&
100
+ prototypeDescriptor.writable === false) {
101
+ trustedNativeConstructorSources.add(source);
102
+ const descriptors = new Map();
103
+ for (const key of Reflect.ownKeys(prototypeDescriptor.value)) {
104
+ const descriptor = Object.getOwnPropertyDescriptor(prototypeDescriptor.value, key);
105
+ if (descriptor) {
106
+ descriptors.set(key, descriptor);
107
+ }
108
+ }
109
+ canonicalIntrinsicDescriptors.set(source, descriptors);
110
+ }
111
+ }
112
+ for (const constructor of [
113
+ Object,
114
+ Function,
115
+ Array,
116
+ Date,
117
+ Map,
118
+ Set,
119
+ ArrayBuffer,
120
+ DataView,
121
+ Error,
122
+ EvalError,
123
+ RangeError,
124
+ ReferenceError,
125
+ SyntaxError,
126
+ TypeError,
127
+ URIError,
128
+ Uint8Array,
129
+ Uint8ClampedArray,
130
+ Uint16Array,
131
+ Uint32Array,
132
+ Int8Array,
133
+ Int16Array,
134
+ Int32Array,
135
+ Float32Array,
136
+ Float64Array,
137
+ ]) {
138
+ rememberTrustedIntrinsic(constructor);
139
+ }
140
+ for (const name of [
141
+ 'SharedArrayBuffer',
142
+ 'AggregateError',
143
+ 'Float16Array',
144
+ 'BigInt64Array',
145
+ 'BigUint64Array',
146
+ 'Blob',
147
+ 'File',
148
+ 'Headers',
149
+ ]) {
150
+ const descriptor = Object.getOwnPropertyDescriptor(globalThis, name);
151
+ if (descriptor && 'value' in descriptor) {
152
+ rememberTrustedIntrinsic(descriptor.value);
153
+ }
154
+ }
155
+ const typedArrayConstructorDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Uint8Array.prototype), 'constructor');
156
+ if (typedArrayConstructorDescriptor && 'value' in typedArrayConstructorDescriptor) {
157
+ rememberTrustedIntrinsic(typedArrayConstructorDescriptor.value);
158
+ }
159
+ if (typeof Buffer === 'function') {
160
+ rememberTrustedIntrinsic(Buffer);
161
+ }
162
+ const blobInternalHandlePrototype = (() => {
163
+ if (typeof Blob !== 'function') {
164
+ return undefined;
165
+ }
166
+ try {
167
+ const blob = new Blob([]);
168
+ for (const key of Object.getOwnPropertySymbols(blob)) {
169
+ const descriptor = Object.getOwnPropertyDescriptor(blob, key);
170
+ if (descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value) {
171
+ return Object.getPrototypeOf(descriptor.value);
172
+ }
173
+ }
174
+ }
175
+ catch {
176
+ return undefined;
177
+ }
178
+ return undefined;
179
+ })();
180
+ const mapEntries = Map.prototype.entries;
181
+ const setValues = Set.prototype.values;
182
+ const headersEntriesDescriptor = typeof Headers === 'function' ? Object.getOwnPropertyDescriptor(Headers.prototype, 'entries') : undefined;
183
+ const headersEntries = headersEntriesDescriptor &&
184
+ 'value' in headersEntriesDescriptor &&
185
+ typeof headersEntriesDescriptor.value === 'function'
186
+ ? headersEntriesDescriptor.value
187
+ : undefined;
188
+ const retainedStorageBrands = new Set([
189
+ 'ArrayBuffer',
190
+ 'SharedArrayBuffer',
191
+ 'Blob',
192
+ 'File',
193
+ 'Map',
194
+ 'Date',
195
+ 'Set',
196
+ 'Headers',
197
+ ]);
198
+ function getTrustedForeignIntrinsic(prototype) {
199
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
200
+ if (!descriptor || !('value' in descriptor) || typeof descriptor.value !== 'function') {
201
+ return undefined;
202
+ }
203
+ const constructor = descriptor.value;
204
+ const source = functionToString.call(constructor);
205
+ const descriptors = canonicalIntrinsicDescriptors.get(source);
206
+ if (!trustedNativeConstructorSources.has(source) || !descriptors) {
207
+ return undefined;
208
+ }
209
+ const constructorPrototype = Object.getOwnPropertyDescriptor(constructor, 'prototype');
210
+ if (!constructorPrototype ||
211
+ !('value' in constructorPrototype) ||
212
+ constructorPrototype.value !== prototype ||
213
+ constructorPrototype.configurable !== false ||
214
+ constructorPrototype.writable !== false) {
215
+ return undefined;
216
+ }
217
+ return { constructor, descriptors, functionPrototype: Object.getPrototypeOf(constructor) };
218
+ }
219
+ function isTrustedIntrinsicPrototype(prototype) {
220
+ return trustedIntrinsicPrototypes.has(prototype) || getTrustedForeignIntrinsic(prototype) !== undefined;
221
+ }
222
+ function isCanonicalIntrinsicFunction(value, canonical, functionPrototype) {
223
+ if (canonical === undefined) {
224
+ return value === undefined;
225
+ }
226
+ if (typeof value !== 'function' || typeof canonical !== 'function') {
227
+ return false;
228
+ }
229
+ const source = functionToString.call(canonical);
230
+ if (functionToString.call(value) !== source) {
231
+ return false;
232
+ }
233
+ const actualFunctionPrototype = Object.getPrototypeOf(value);
234
+ if (actualFunctionPrototype === functionPrototype) {
235
+ return true;
236
+ }
237
+ if (!/^function [A-Za-z_$][\w$]*\(\) \{ \[native code\] \}$/u.test(source)) {
238
+ return false;
239
+ }
240
+ const intrinsic = getTrustedForeignIntrinsic(actualFunctionPrototype);
241
+ return (intrinsic !== undefined &&
242
+ functionToString.call(intrinsic.constructor) === nativeFunctionConstructorSource);
243
+ }
244
+ function isCanonicalIntrinsicDescriptor(descriptor, canonical, functionPrototype) {
245
+ if (!canonical ||
246
+ descriptor.configurable !== canonical.configurable ||
247
+ descriptor.enumerable !== canonical.enumerable ||
248
+ 'value' in descriptor !== 'value' in canonical) {
249
+ return false;
250
+ }
251
+ if ('value' in descriptor && 'value' in canonical) {
252
+ if (descriptor.writable !== canonical.writable) {
253
+ return false;
254
+ }
255
+ if (typeof canonical.value === 'function') {
256
+ return isCanonicalIntrinsicFunction(descriptor.value, canonical.value, functionPrototype);
257
+ }
258
+ if (canonical.value !== null && typeof canonical.value === 'object') {
259
+ return false;
260
+ }
261
+ return Object.is(descriptor.value, canonical.value);
262
+ }
263
+ return (isCanonicalIntrinsicFunction(descriptor.get, canonical.get, functionPrototype) &&
264
+ isCanonicalIntrinsicFunction(descriptor.set, canonical.set, functionPrototype));
265
+ }
266
+ function hasNativeErrorBrand(current) {
267
+ if (nativeErrorBrand) {
268
+ return nativeErrorBrand.call(Error, current);
269
+ }
270
+ let prototype = current;
271
+ for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
272
+ if (Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag)) {
273
+ return false;
274
+ }
275
+ prototype = Object.getPrototypeOf(prototype);
276
+ }
277
+ return prototype === null && objectToString.call(current) === '[object Error]';
278
+ }
279
+ function getVerifiedForeignErrorConstructor(current, stackDescriptor) {
280
+ if (typeof stackDescriptor.get !== 'function' || typeof stackDescriptor.set !== 'function') {
281
+ return undefined;
282
+ }
283
+ let prototype = Object.getPrototypeOf(current);
284
+ for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
285
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
286
+ if (descriptor && 'value' in descriptor && typeof descriptor.value === 'function') {
287
+ const constructor = descriptor.value;
288
+ if (functionToString.call(constructor) === nativeErrorConstructorSource &&
289
+ isTrustedIntrinsicPrototype(prototype)) {
290
+ const functionPrototype = Object.getPrototypeOf(constructor);
291
+ if (Object.getPrototypeOf(stackDescriptor.get) === functionPrototype &&
292
+ Object.getPrototypeOf(stackDescriptor.set) === functionPrototype) {
293
+ return { constructor, prototype };
294
+ }
295
+ return undefined;
296
+ }
297
+ }
298
+ prototype = Object.getPrototypeOf(prototype);
299
+ }
300
+ return undefined;
301
+ }
302
+ function isTrustedNativeErrorStack(current, descriptor) {
303
+ if (!hasNativeErrorBrand(current)) {
304
+ return false;
305
+ }
306
+ if (errorStackDescriptor &&
307
+ !('value' in errorStackDescriptor) &&
308
+ typeof errorStackDescriptor.get === 'function' &&
309
+ Object.prototype.isPrototypeOf.call(Error.prototype, current) &&
310
+ descriptor.get === errorStackDescriptor.get &&
311
+ descriptor.set === errorStackDescriptor.set) {
312
+ return true;
313
+ }
314
+ const verified = getVerifiedForeignErrorConstructor(current, descriptor);
315
+ if (!verified) {
316
+ return false;
317
+ }
318
+ let canonicalDescriptor = foreignErrorStackDescriptors.get(verified.prototype);
319
+ if (!canonicalDescriptor) {
320
+ const canonical = Reflect.construct(verified.constructor, []);
321
+ if (typeof canonical !== 'object' ||
322
+ canonical === null ||
323
+ !hasNativeErrorBrand(canonical) ||
324
+ Object.getPrototypeOf(canonical) !== verified.prototype) {
325
+ return false;
326
+ }
327
+ canonicalDescriptor = Object.getOwnPropertyDescriptor(canonical, 'stack');
328
+ if (!canonicalDescriptor ||
329
+ 'value' in canonicalDescriptor ||
330
+ typeof canonicalDescriptor.get !== 'function' ||
331
+ typeof canonicalDescriptor.set !== 'function') {
332
+ return false;
333
+ }
334
+ foreignErrorStackDescriptors.set(verified.prototype, canonicalDescriptor);
335
+ }
336
+ return descriptor.get === canonicalDescriptor.get && descriptor.set === canonicalDescriptor.set;
337
+ }
4
338
  function createEventQueue() {
5
339
  let entries = [];
6
340
  let head = 0;
@@ -34,6 +368,605 @@ function createEventQueue() {
34
368
  },
35
369
  };
36
370
  }
371
+ function getRetainedStorageBrand(current) {
372
+ let prototype = Object.getPrototypeOf(current);
373
+ for (let depth = 0; prototype !== null && depth < MAX_BUFFERED_EVENT_DEPTH; depth += 1) {
374
+ if (prototype === Date.prototype) {
375
+ return 'Date';
376
+ }
377
+ if (!trustedIntrinsicPrototypes.has(prototype)) {
378
+ const constructor = Object.getOwnPropertyDescriptor(prototype, 'constructor');
379
+ if (constructor &&
380
+ 'value' in constructor &&
381
+ typeof constructor.value === 'function' &&
382
+ functionToString.call(constructor.value) === nativeDateConstructorSource &&
383
+ getTrustedForeignIntrinsic(prototype)) {
384
+ return 'Date';
385
+ }
386
+ }
387
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, Symbol.toStringTag);
388
+ if (descriptor &&
389
+ 'value' in descriptor &&
390
+ typeof descriptor.value === 'string' &&
391
+ retainedStorageBrands.has(descriptor.value)) {
392
+ return descriptor.value;
393
+ }
394
+ prototype = Object.getPrototypeOf(prototype);
395
+ }
396
+ return undefined;
397
+ }
398
+ function estimateRetainedBufferBytes(current, visit, depth) {
399
+ if (ArrayBuffer.isView(current)) {
400
+ let buffer;
401
+ let kind = 'typed-array';
402
+ try {
403
+ buffer = typedArrayBufferGetter?.call(current);
404
+ }
405
+ catch {
406
+ kind = 'data-view';
407
+ buffer = dataViewBufferGetter?.call(current);
408
+ }
409
+ if (typeof buffer !== 'object' || buffer === null) {
410
+ return { bytes: Number.POSITIVE_INFINITY, kind };
411
+ }
412
+ // Even a one-byte cross-realm view retains its complete backing allocation.
413
+ visit(buffer, depth + 1);
414
+ return { bytes: 0, kind };
415
+ }
416
+ const brand = getRetainedStorageBrand(current);
417
+ if (!brand) {
418
+ return undefined;
419
+ }
420
+ let getter;
421
+ const kind = 'buffer';
422
+ switch (brand) {
423
+ case 'ArrayBuffer': {
424
+ getter = arrayBufferByteLengthGetter;
425
+ break;
426
+ }
427
+ case 'SharedArrayBuffer': {
428
+ getter = sharedArrayBufferByteLengthGetter;
429
+ break;
430
+ }
431
+ case 'Blob':
432
+ case 'File': {
433
+ // Blob slices can retain an arbitrarily larger native backing allocation,
434
+ // and neither browser nor Node exposes its extent or ownership. Detached
435
+ // queues must fail closed; waiting readers bypass retained-size inspection.
436
+ return { bytes: Number.POSITIVE_INFINITY, kind: 'blob' };
437
+ }
438
+ case 'Map': {
439
+ return { bytes: 0, kind: 'map' };
440
+ }
441
+ case 'Date': {
442
+ Reflect.apply(dateTimestampGetter, current, []);
443
+ return { bytes: 8, kind: 'date' };
444
+ }
445
+ case 'Set': {
446
+ return { bytes: 0, kind: 'set' };
447
+ }
448
+ case 'Headers': {
449
+ return { bytes: 0, kind: 'headers' };
450
+ }
451
+ default: {
452
+ return undefined;
453
+ }
454
+ }
455
+ const bytes = getter?.call(current);
456
+ return {
457
+ bytes: typeof bytes === 'number' && Number.isSafeInteger(bytes) && bytes >= 0
458
+ ? bytes
459
+ : Number.POSITIVE_INFINITY,
460
+ kind,
461
+ };
462
+ }
463
+ function visitHiddenEventValues(current, kind, visit) {
464
+ if (kind === 'map') {
465
+ for (const [key, entry] of mapEntries.call(current)) {
466
+ if (!visit(key, 8) || !visit(entry, 8)) {
467
+ return false;
468
+ }
469
+ }
470
+ }
471
+ if (kind === 'set') {
472
+ for (const entry of setValues.call(current)) {
473
+ if (!visit(entry, 8)) {
474
+ return false;
475
+ }
476
+ }
477
+ }
478
+ if (kind === 'headers') {
479
+ if (!headersEntries) {
480
+ return false;
481
+ }
482
+ for (const [name, value] of headersEntries.call(current)) {
483
+ if (!visit(name, 8) || !visit(value, 8)) {
484
+ return false;
485
+ }
486
+ }
487
+ }
488
+ return true;
489
+ }
490
+ function getInspectableEventKeys(current, kind, availableBytes) {
491
+ if (Array.isArray(current)) {
492
+ const descriptor = Object.getOwnPropertyDescriptor(current, 'length');
493
+ const length = descriptor && 'value' in descriptor ? descriptor.value : undefined;
494
+ if (typeof length !== 'number' ||
495
+ !Number.isSafeInteger(length) ||
496
+ length < 0 ||
497
+ length > Math.floor(availableBytes / 16)) {
498
+ return undefined;
499
+ }
500
+ }
501
+ if (kind !== 'typed-array') {
502
+ return Reflect.ownKeys(current);
503
+ }
504
+ const length = typedArrayLengthGetter?.call(current);
505
+ if (typeof length !== 'number' ||
506
+ !Number.isSafeInteger(length) ||
507
+ length < 0 ||
508
+ length > MAX_INSPECTABLE_TYPED_ARRAY_ELEMENTS) {
509
+ return undefined;
510
+ }
511
+ return Reflect.ownKeys(current).filter((key) => {
512
+ if (typeof key !== 'string') {
513
+ return true;
514
+ }
515
+ const index = Number(key);
516
+ return !Number.isInteger(index) || index < 0 || index >= length || String(index) !== key;
517
+ });
518
+ }
519
+ function visitInspectableEventProperties(current, kind, depth, availableBytes, charge, visit) {
520
+ const keys = getInspectableEventKeys(current, kind, availableBytes());
521
+ if (keys === undefined) {
522
+ return false;
523
+ }
524
+ for (const key of keys) {
525
+ if (!charge(typeof key === 'string' ? key.length * 2 + 8 : 8)) {
526
+ return false;
527
+ }
528
+ if (typeof key === 'symbol') {
529
+ visit(key, depth + 1);
530
+ }
531
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
532
+ if (!descriptor) {
533
+ return false;
534
+ }
535
+ if (!('value' in descriptor)) {
536
+ if (key === 'stack' && isTrustedNativeErrorStack(current, descriptor)) {
537
+ continue;
538
+ }
539
+ return false;
540
+ }
541
+ visit(descriptor.value, depth + 1, kind === 'blob');
542
+ }
543
+ return true;
544
+ }
545
+ function visitRetainedEventPrototypes(current, depth, isBlobInternalHandle, visited, availableBytes, charge, visit, retainPrototype) {
546
+ let prototype = Object.getPrototypeOf(current);
547
+ for (let prototypeDepth = depth + 1; prototype !== null; prototypeDepth += 1) {
548
+ if (prototypeDepth >= MAX_BUFFERED_EVENT_DEPTH) {
549
+ return false;
550
+ }
551
+ if (trustedIntrinsicPrototypes.has(prototype) ||
552
+ (isBlobInternalHandle && prototype === blobInternalHandlePrototype)) {
553
+ return true;
554
+ }
555
+ if (visited.has(prototype)) {
556
+ visit(prototype, prototypeDepth);
557
+ return availableBytes() >= 0;
558
+ }
559
+ visited.add(prototype);
560
+ const retainedPrototype = prototype;
561
+ const retained = retainPrototype(retainedPrototype, () => {
562
+ if (!charge(16)) {
563
+ return false;
564
+ }
565
+ const intrinsic = getTrustedForeignIntrinsic(retainedPrototype);
566
+ if (!intrinsic) {
567
+ return visitInspectableEventProperties(retainedPrototype, undefined, prototypeDepth, availableBytes, charge, visit);
568
+ }
569
+ for (const key of Reflect.ownKeys(retainedPrototype)) {
570
+ const descriptor = Object.getOwnPropertyDescriptor(retainedPrototype, key);
571
+ if (!descriptor) {
572
+ return false;
573
+ }
574
+ if (isCanonicalIntrinsicDescriptor(descriptor, intrinsic.descriptors.get(key), intrinsic.functionPrototype)) {
575
+ continue;
576
+ }
577
+ if (!charge(typeof key === 'string' ? key.length * 2 + 8 : 8) || !('value' in descriptor)) {
578
+ return false;
579
+ }
580
+ if (typeof key === 'symbol') {
581
+ visit(key, prototypeDepth + 1);
582
+ }
583
+ visit(descriptor.value, prototypeDepth + 1);
584
+ }
585
+ return availableBytes() >= 0;
586
+ });
587
+ if (!retained) {
588
+ return false;
589
+ }
590
+ prototype = Object.getPrototypeOf(retainedPrototype);
591
+ }
592
+ return true;
593
+ }
594
+ const BUFFERED_LEDGER_ENTRY_BYTES = 32;
595
+ const BUFFERED_LEDGER_NODE_BYTES = 32;
596
+ const BUFFERED_LEDGER_EDGE_BYTES = 8;
597
+ const BUFFERED_LEDGER_OWNER_BYTES = 16;
598
+ const MAX_BUFFERED_LEDGER_RECONCILIATION_WORK = 128 * 1024;
599
+ function inspectBufferedEventGraph(value, remainingBytes) {
600
+ let bytes = 0;
601
+ let scalarBytes = 0;
602
+ const visited = new WeakSet();
603
+ const visitedSymbols = new Set();
604
+ const roots = new Set();
605
+ const nodes = new Map();
606
+ let activeNode;
607
+ const availableBytes = () => remainingBytes - bytes;
608
+ const charge = (amount) => {
609
+ if (!Number.isSafeInteger(amount) || amount < 0) {
610
+ bytes = remainingBytes + 1;
611
+ return false;
612
+ }
613
+ bytes += amount;
614
+ if (activeNode) {
615
+ activeNode.bytes += amount;
616
+ }
617
+ else {
618
+ scalarBytes += amount;
619
+ }
620
+ return bytes <= remainingBytes;
621
+ };
622
+ const addIdentity = (identity) => {
623
+ if (activeNode) {
624
+ activeNode.edges.add(identity);
625
+ }
626
+ else {
627
+ roots.add(identity);
628
+ }
629
+ };
630
+ const retainIdentity = (identity, inspect) => {
631
+ addIdentity(identity);
632
+ const node = { bytes: 0, edges: new Set() };
633
+ nodes.set(identity, node);
634
+ const previous = activeNode;
635
+ activeNode = node;
636
+ try {
637
+ return inspect();
638
+ }
639
+ finally {
640
+ activeNode = previous;
641
+ }
642
+ };
643
+ const visitSymbol = (current) => {
644
+ if (visitedSymbols.has(current)) {
645
+ addIdentity(current);
646
+ charge(8);
647
+ return;
648
+ }
649
+ visitedSymbols.add(current);
650
+ if (!retainIdentity(current, () => {
651
+ if (!symbolDescriptionGetter) {
652
+ return false;
653
+ }
654
+ const description = Reflect.apply(symbolDescriptionGetter, current, []);
655
+ return charge(8 + (description?.length ?? 0) * 2);
656
+ })) {
657
+ bytes = remainingBytes + 1;
658
+ }
659
+ };
660
+ const visit = (current, depth, isBlobInternalHandle = false) => {
661
+ if (bytes > remainingBytes) {
662
+ return;
663
+ }
664
+ if (typeof current === 'string') {
665
+ charge(current.length * 2);
666
+ return;
667
+ }
668
+ if (typeof current === 'symbol') {
669
+ visitSymbol(current);
670
+ return;
671
+ }
672
+ if (typeof current === 'function') {
673
+ bytes = remainingBytes + 1;
674
+ return;
675
+ }
676
+ if (current === null || typeof current !== 'object') {
677
+ charge(8);
678
+ return;
679
+ }
680
+ if (nativeProxyDetector?.(current)) {
681
+ bytes = remainingBytes + 1;
682
+ return;
683
+ }
684
+ if (depth >= MAX_BUFFERED_EVENT_DEPTH) {
685
+ bytes = remainingBytes + 1;
686
+ return;
687
+ }
688
+ if (visited.has(current)) {
689
+ addIdentity(current);
690
+ charge(8);
691
+ return;
692
+ }
693
+ visited.add(current);
694
+ if (!retainIdentity(current, () => {
695
+ if (!charge(16)) {
696
+ return false;
697
+ }
698
+ const retainedStorage = estimateRetainedBufferBytes(current, visit, depth);
699
+ if (!visitRetainedEventPrototypes(current, depth, isBlobInternalHandle, visited, availableBytes, charge, visit, retainIdentity)) {
700
+ return false;
701
+ }
702
+ if (retainedStorage !== undefined && !charge(retainedStorage.bytes)) {
703
+ return false;
704
+ }
705
+ if (!visitHiddenEventValues(current, retainedStorage?.kind, (hiddenValue, overhead) => {
706
+ if (!charge(overhead)) {
707
+ return false;
708
+ }
709
+ visit(hiddenValue, depth + 1);
710
+ return bytes <= remainingBytes;
711
+ })) {
712
+ return false;
713
+ }
714
+ return visitInspectableEventProperties(current, retainedStorage?.kind, depth, availableBytes, charge, visit);
715
+ })) {
716
+ bytes = remainingBytes + 1;
717
+ }
718
+ };
719
+ try {
720
+ visit(value, 0);
721
+ }
722
+ catch {
723
+ return undefined;
724
+ }
725
+ return bytes <= remainingBytes ? { scalarBytes, roots, nodes } : undefined;
726
+ }
727
+ function areBufferedRetainedEdgesEqual(first, second) {
728
+ if (first.size !== second.size) {
729
+ return false;
730
+ }
731
+ for (const identity of first) {
732
+ if (!second.has(identity)) {
733
+ return false;
734
+ }
735
+ }
736
+ return true;
737
+ }
738
+ function getBufferedLedgerNodeBytes(node, owners) {
739
+ return (node.bytes +
740
+ BUFFERED_LEDGER_NODE_BYTES +
741
+ node.edges.size * BUFFERED_LEDGER_EDGE_BYTES +
742
+ owners * BUFFERED_LEDGER_OWNER_BYTES);
743
+ }
744
+ function getBufferedLedgerEntryBytes(entry) {
745
+ return BUFFERED_LEDGER_ENTRY_BYTES + entry.scalarBytes + entry.roots.size * BUFFERED_LEDGER_EDGE_BYTES;
746
+ }
747
+ function collectBufferedLedgerIdentities(roots, candidate, records, work) {
748
+ const identities = new Set();
749
+ const pending = [...roots];
750
+ while (pending.length) {
751
+ work.remaining -= 1;
752
+ if (work.remaining < 0) {
753
+ return undefined;
754
+ }
755
+ const identity = pending.pop();
756
+ if (identities.has(identity)) {
757
+ continue;
758
+ }
759
+ const node = candidate.get(identity) ?? records.get(identity);
760
+ if (!node) {
761
+ return undefined;
762
+ }
763
+ identities.add(identity);
764
+ for (const edge of node.edges) {
765
+ pending.push(edge);
766
+ }
767
+ }
768
+ return identities;
769
+ }
770
+ function getBufferedLedgerChange(identity, graph, records, changes, node) {
771
+ const existing = changes.get(identity);
772
+ if (existing) {
773
+ if (node) {
774
+ existing.node = node;
775
+ }
776
+ return existing;
777
+ }
778
+ const current = node ?? graph.nodes.get(identity) ?? records.get(identity);
779
+ if (!current) {
780
+ return undefined;
781
+ }
782
+ const update = { node: current, ownerDelta: 0 };
783
+ changes.set(identity, update);
784
+ return update;
785
+ }
786
+ function findBufferedLedgerAffectedOwners(entry, graph, records, changes, work) {
787
+ const affected = new Set([entry]);
788
+ for (const [identity, node] of graph.nodes) {
789
+ work.remaining -= 1;
790
+ if (work.remaining < 0) {
791
+ return undefined;
792
+ }
793
+ const previous = records.get(identity);
794
+ if (!previous) {
795
+ continue;
796
+ }
797
+ const changedEdges = !areBufferedRetainedEdgesEqual(previous.edges, node.edges);
798
+ if (previous.bytes !== node.bytes || changedEdges) {
799
+ getBufferedLedgerChange(identity, graph, records, changes, node);
800
+ }
801
+ if (!changedEdges) {
802
+ continue;
803
+ }
804
+ for (const owner of previous.owners) {
805
+ work.remaining -= 1;
806
+ if (work.remaining < 0) {
807
+ return undefined;
808
+ }
809
+ affected.add(owner);
810
+ }
811
+ }
812
+ return affected;
813
+ }
814
+ function updateBufferedLedgerMembershipChanges(owner, next, graph, records, changes, work) {
815
+ for (const identity of owner.identities) {
816
+ work.remaining -= 1;
817
+ if (work.remaining < 0) {
818
+ return false;
819
+ }
820
+ if (!next.has(identity)) {
821
+ const update = getBufferedLedgerChange(identity, graph, records, changes);
822
+ if (!update) {
823
+ return false;
824
+ }
825
+ update.ownerDelta -= 1;
826
+ }
827
+ }
828
+ for (const identity of next) {
829
+ work.remaining -= 1;
830
+ if (work.remaining < 0) {
831
+ return false;
832
+ }
833
+ if (!owner.identities.has(identity)) {
834
+ const update = getBufferedLedgerChange(identity, graph, records, changes);
835
+ if (!update) {
836
+ return false;
837
+ }
838
+ update.ownerDelta += 1;
839
+ }
840
+ }
841
+ return true;
842
+ }
843
+ function collectBufferedLedgerMemberships(entry, graph, affected, records, changes, work) {
844
+ const memberships = new Map();
845
+ for (const owner of affected) {
846
+ const roots = owner === entry ? graph.roots : owner.roots;
847
+ const next = collectBufferedLedgerIdentities(roots, graph.nodes, records, work);
848
+ if (!next || !updateBufferedLedgerMembershipChanges(owner, next, graph, records, changes, work)) {
849
+ return undefined;
850
+ }
851
+ memberships.set(owner, next);
852
+ }
853
+ return memberships;
854
+ }
855
+ function projectBufferedLedgerBytes(currentBytes, entry, graph, isNew, changes, records) {
856
+ let projected = currentBytes - (isNew ? 0 : getBufferedLedgerEntryBytes(entry)) + getBufferedLedgerEntryBytes(graph);
857
+ for (const [identity, update] of changes) {
858
+ const previous = records.get(identity);
859
+ const owners = (previous?.owners.size ?? 0) + update.ownerDelta;
860
+ if (owners < 0) {
861
+ return undefined;
862
+ }
863
+ if (previous) {
864
+ projected -= getBufferedLedgerNodeBytes(previous, previous.owners.size);
865
+ }
866
+ if (owners) {
867
+ projected += getBufferedLedgerNodeBytes(update.node, owners);
868
+ }
869
+ }
870
+ return Number.isSafeInteger(projected) && projected >= 0 && projected <= MAX_BUFFERED_ITERATOR_BYTES
871
+ ? projected
872
+ : undefined;
873
+ }
874
+ function applyBufferedLedgerChanges(records, changes, memberships) {
875
+ for (const [identity, update] of changes) {
876
+ const previous = records.get(identity);
877
+ const owners = (previous?.owners.size ?? 0) + update.ownerDelta;
878
+ if (!owners) {
879
+ continue;
880
+ }
881
+ if (previous) {
882
+ previous.bytes = update.node.bytes;
883
+ previous.edges = update.node.edges;
884
+ }
885
+ else {
886
+ records.set(identity, {
887
+ bytes: update.node.bytes,
888
+ edges: update.node.edges,
889
+ owners: new Set(),
890
+ });
891
+ }
892
+ }
893
+ for (const [owner, next] of memberships) {
894
+ for (const identity of owner.identities) {
895
+ if (!next.has(identity)) {
896
+ records.get(identity)?.owners.delete(owner);
897
+ }
898
+ }
899
+ for (const identity of next) {
900
+ if (!owner.identities.has(identity)) {
901
+ records.get(identity).owners.add(owner);
902
+ }
903
+ }
904
+ owner.identities = next;
905
+ }
906
+ for (const identity of changes.keys()) {
907
+ if (records.get(identity)?.owners.size === 0) {
908
+ records.delete(identity);
909
+ }
910
+ }
911
+ }
912
+ /**
913
+ * Account for queue-owned identities once while charging bounded ownership and
914
+ * edge metadata. Shared topology changes are reconciled for every queued owner.
915
+ */
916
+ function createBufferedEventLedger() {
917
+ const records = new Map();
918
+ let bytes = 0;
919
+ const reconcile = (entry, graph, isNew) => {
920
+ const work = { remaining: MAX_BUFFERED_LEDGER_RECONCILIATION_WORK };
921
+ const changes = new Map();
922
+ const affected = findBufferedLedgerAffectedOwners(entry, graph, records, changes, work);
923
+ if (!affected) {
924
+ return false;
925
+ }
926
+ const memberships = collectBufferedLedgerMemberships(entry, graph, affected, records, changes, work);
927
+ if (!memberships) {
928
+ return false;
929
+ }
930
+ const projectedBytes = projectBufferedLedgerBytes(bytes, entry, graph, isNew, changes, records);
931
+ if (projectedBytes === undefined) {
932
+ return false;
933
+ }
934
+ applyBufferedLedgerChanges(records, changes, memberships);
935
+ entry.scalarBytes = graph.scalarBytes;
936
+ entry.roots = graph.roots;
937
+ bytes = projectedBytes;
938
+ return true;
939
+ };
940
+ const release = (entry) => {
941
+ bytes -= getBufferedLedgerEntryBytes(entry);
942
+ for (const identity of entry.identities) {
943
+ const record = records.get(identity);
944
+ if (!record?.owners.delete(entry)) {
945
+ continue;
946
+ }
947
+ bytes -= BUFFERED_LEDGER_OWNER_BYTES;
948
+ if (record.owners.size === 0) {
949
+ bytes -= getBufferedLedgerNodeBytes(record, 0);
950
+ records.delete(identity);
951
+ }
952
+ }
953
+ entry.identities.clear();
954
+ };
955
+ return {
956
+ retain(graph) {
957
+ const entry = { scalarBytes: 0, roots: new Set(), identities: new Set() };
958
+ return reconcile(entry, graph, true) ? entry : undefined;
959
+ },
960
+ refresh(entry, graph) {
961
+ return reconcile(entry, graph, false);
962
+ },
963
+ release,
964
+ clear() {
965
+ records.clear();
966
+ bytes = 0;
967
+ },
968
+ };
969
+ }
37
970
  /** An abortable event stream with typed listeners, asynchronous iteration, and lifecycle state. */
38
971
  export class EventStream {
39
972
  /** Creates an unstarted stream with independent connection and completion lifecycle promises. */
@@ -51,6 +984,10 @@ export class EventStream {
51
984
  // oxlint-enable class-methods-use-this
52
985
  _EventStream_listeners.set(this, Object.create(null));
53
986
  _EventStream_abortListeners.set(this, []);
987
+ _EventStream_emittedListenerRegistrations.set(this, new WeakMap());
988
+ _EventStream_pendingListenerCleanup.set(this, new Set());
989
+ _EventStream_pendingBufferedEventChecks.set(this, new Set());
990
+ _EventStream_listenerDispatchDepth.set(this, 0);
54
991
  _EventStream_ended.set(this, false);
55
992
  _EventStream_errored.set(this, false);
56
993
  _EventStream_aborted.set(this, false);
@@ -159,7 +1096,14 @@ export class EventStream {
159
1096
  if (!listeners) {
160
1097
  return this;
161
1098
  }
162
- const index = listeners.findIndex((l) => l.listener === listener);
1099
+ const emittedRegistration = __classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").get(listener);
1100
+ if (emittedRegistration?.event === event &&
1101
+ !emittedRegistration.registration.removed &&
1102
+ !emittedRegistration.registration.detached) {
1103
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_removeEmittedListener).call(this, event, emittedRegistration.registration);
1104
+ return this;
1105
+ }
1106
+ const index = listeners.findIndex((l) => !l.removed && l.listener === listener);
163
1107
  if (index !== -1) {
164
1108
  listeners.splice(index, 1);
165
1109
  }
@@ -203,9 +1147,9 @@ export class EventStream {
203
1147
  resolve((values.length > 1 ? values : values[0]));
204
1148
  };
205
1149
  if (event !== 'error') {
206
- this.once('error', onError);
1150
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_onceForEmitted).call(this, 'error', onError);
207
1151
  }
208
- this.once(event, onEvent);
1152
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_onceForEmitted).call(this, event, onEvent);
209
1153
  });
210
1154
  }
211
1155
  /**
@@ -222,7 +1166,15 @@ export class EventStream {
222
1166
  */
223
1167
  events(event) {
224
1168
  return this._createIterator((push) => {
225
- const onEvent = (...args) => push(args);
1169
+ const onEvent = (...args) => {
1170
+ sdkOwnedBufferedEventArguments.add(args);
1171
+ try {
1172
+ push(args);
1173
+ }
1174
+ finally {
1175
+ sdkOwnedBufferedEventArguments.delete(args);
1176
+ }
1177
+ };
226
1178
  this.on(event, onEvent);
227
1179
  return () => this.off(event, onEvent);
228
1180
  }, {
@@ -240,10 +1192,16 @@ export class EventStream {
240
1192
  * here: the iterator ends when the stream ends, listeners are removed on
241
1193
  * end/return, and a terminal error is retained until buffered values have
242
1194
  * drained so it is surfaced even when no reader was waiting when it fired.
1195
+ * Detached consumers have bounded event and byte queues; exceeding either
1196
+ * limit fails the stream and aborts its underlying request. Detached queues
1197
+ * also reject accessor-backed payloads because getter closures cannot be
1198
+ * safely sized without executing untrusted code.
243
1199
  */
244
1200
  _createIterator(attach, { rejectOnError = true, rejectOnAbort = true, onReturn, } = {}) {
245
1201
  const pushQueue = createEventQueue();
1202
+ const bufferedEventSizes = createEventQueue();
246
1203
  const readQueue = createEventQueue();
1204
+ const bufferedLedger = createBufferedEventLedger();
247
1205
  let ended = this.ended;
248
1206
  let failure;
249
1207
  let failureDelivered = false;
@@ -271,6 +1229,39 @@ export class EventStream {
271
1229
  this.off('abort', onFailure);
272
1230
  }
273
1231
  };
1232
+ const deactivateBufferedEvent = (entry) => {
1233
+ entry.active = false;
1234
+ if (entry.check) {
1235
+ __classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").delete(entry.check);
1236
+ entry.check = undefined;
1237
+ }
1238
+ };
1239
+ const failBufferedEvents = (discardRetained = false) => {
1240
+ if (discardRetained) {
1241
+ while (bufferedEventSizes.length) {
1242
+ deactivateBufferedEvent(bufferedEventSizes.dequeue());
1243
+ }
1244
+ pushQueue.clear();
1245
+ bufferedLedger.clear();
1246
+ }
1247
+ const error = new OpenAIError(`Event stream iterator buffer limit exceeded (${MAX_BUFFERED_ITERATOR_EVENTS} events or ${MAX_BUFFERED_ITERATOR_BYTES} bytes); consume events as they arrive.`);
1248
+ try {
1249
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_handleError).call(this, error);
1250
+ }
1251
+ finally {
1252
+ this.controller.abort();
1253
+ }
1254
+ return error;
1255
+ };
1256
+ const revalidateBufferedEvent = (value, entry) => {
1257
+ if (!entry.active || __classPrivateFieldGet(this, _EventStream_ended, "f")) {
1258
+ return;
1259
+ }
1260
+ const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
1261
+ if (!graph || !bufferedLedger.refresh(entry.retention, graph)) {
1262
+ failBufferedEvents(true);
1263
+ }
1264
+ };
274
1265
  const push = (value) => {
275
1266
  if (ended) {
276
1267
  return;
@@ -280,7 +1271,34 @@ export class EventStream {
280
1271
  reader.resolve({ value, done: false });
281
1272
  }
282
1273
  else {
1274
+ if (pushQueue.length >= MAX_BUFFERED_ITERATOR_EVENTS) {
1275
+ failBufferedEvents();
1276
+ return;
1277
+ }
1278
+ const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
1279
+ const retention = graph && bufferedLedger.retain(graph);
1280
+ if (!retention) {
1281
+ failBufferedEvents();
1282
+ return;
1283
+ }
1284
+ if (typeof value === 'object' && value !== null && sdkOwnedBufferedEventArguments.has(value)) {
1285
+ const argumentsTuple = value;
1286
+ for (let index = 0; index < argumentsTuple.length; index += 1) {
1287
+ const argument = argumentsTuple[index];
1288
+ if (typeof argument === 'string') {
1289
+ argumentsTuple[index] = bufferedJSONParse(bufferedJSONStringify(argument));
1290
+ }
1291
+ }
1292
+ }
1293
+ const entry = { retention, active: true, check: undefined };
283
1294
  pushQueue.enqueue(value);
1295
+ bufferedEventSizes.enqueue(entry);
1296
+ const check = () => {
1297
+ entry.check = undefined;
1298
+ revalidateBufferedEvent(value, entry);
1299
+ };
1300
+ entry.check = check;
1301
+ __classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").add(check);
284
1302
  }
285
1303
  };
286
1304
  const onFailure = (error) => {
@@ -310,7 +1328,17 @@ export class EventStream {
310
1328
  return {
311
1329
  next: () => {
312
1330
  if (pushQueue.length) {
313
- return Promise.resolve({ value: pushQueue.dequeue(), done: false });
1331
+ const value = pushQueue.dequeue();
1332
+ const entry = bufferedEventSizes.dequeue();
1333
+ deactivateBufferedEvent(entry);
1334
+ const graph = inspectBufferedEventGraph(value, MAX_BUFFERED_ITERATOR_BYTES);
1335
+ if (!graph || !bufferedLedger.refresh(entry.retention, graph)) {
1336
+ const error = failBufferedEvents(true);
1337
+ failureDelivered = true;
1338
+ return Promise.reject(error);
1339
+ }
1340
+ bufferedLedger.release(entry.retention);
1341
+ return Promise.resolve({ value, done: false });
314
1342
  }
315
1343
  if (failure && !failureDelivered) {
316
1344
  failureDelivered = true;
@@ -325,7 +1353,11 @@ export class EventStream {
325
1353
  },
326
1354
  return: () => {
327
1355
  ended = true;
1356
+ while (bufferedEventSizes.length) {
1357
+ deactivateBufferedEvent(bufferedEventSizes.dequeue());
1358
+ }
328
1359
  pushQueue.clear();
1360
+ bufferedLedger.clear();
329
1361
  cleanup();
330
1362
  finishReaders();
331
1363
  if (onReturn) {
@@ -350,7 +1382,7 @@ export class EventStream {
350
1382
  }
351
1383
  /** Returns whether an event currently has one or more registered listeners. */
352
1384
  _hasListeners(event) {
353
- return Boolean(__classPrivateFieldGet(this, _EventStream_listeners, "f")[event]?.length);
1385
+ return Boolean(__classPrivateFieldGet(this, _EventStream_listeners, "f")[event]?.some((listener) => !listener.removed));
354
1386
  }
355
1387
  /** Dispatches a stream event and performs the associated lifecycle transitions. */
356
1388
  _emit(event, ...args) {
@@ -365,9 +1397,31 @@ export class EventStream {
365
1397
  }
366
1398
  const listeners = __classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
367
1399
  if (listeners) {
368
- __classPrivateFieldGet(this, _EventStream_listeners, "f")[event] = listeners.filter((l) => !l.once);
369
- for (const { listener } of listeners) {
370
- listener(...args);
1400
+ __classPrivateFieldGet(this, _EventStream_listeners, "f")[event] = listeners.filter((listener) => {
1401
+ if (listener.once) {
1402
+ listener.detached = true;
1403
+ }
1404
+ return !listener.once && !listener.removed;
1405
+ });
1406
+ __classPrivateFieldSet(this, _EventStream_listenerDispatchDepth, __classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") + 1, "f");
1407
+ try {
1408
+ for (const registration of listeners) {
1409
+ if (!registration.removed) {
1410
+ registration.listener(...args);
1411
+ }
1412
+ }
1413
+ }
1414
+ finally {
1415
+ __classPrivateFieldSet(this, _EventStream_listenerDispatchDepth, __classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") - 1, "f");
1416
+ if (__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") === 0) {
1417
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_cleanupEmittedListeners).call(this);
1418
+ for (const check of __classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f")) {
1419
+ __classPrivateFieldGet(this, _EventStream_pendingBufferedEventChecks, "f").delete(check);
1420
+ if (!__classPrivateFieldGet(this, _EventStream_ended, "f")) {
1421
+ check();
1422
+ }
1423
+ }
1424
+ }
371
1425
  }
372
1426
  }
373
1427
  if (event === 'abort') {
@@ -402,10 +1456,41 @@ export class EventStream {
402
1456
  // Hook for subclasses.
403
1457
  }
404
1458
  }
405
- _EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_abortListeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_removeAbortListeners = function _EventStream_removeAbortListeners() {
1459
+ _EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_abortListeners = new WeakMap(), _EventStream_emittedListenerRegistrations = new WeakMap(), _EventStream_pendingListenerCleanup = new WeakMap(), _EventStream_pendingBufferedEventChecks = new WeakMap(), _EventStream_listenerDispatchDepth = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_removeAbortListeners = function _EventStream_removeAbortListeners() {
406
1460
  for (const { signal, listener } of __classPrivateFieldGet(this, _EventStream_abortListeners, "f").splice(0)) {
407
1461
  signal.removeEventListener('abort', listener);
408
1462
  }
1463
+ }, _EventStream_onceForEmitted = function _EventStream_onceForEmitted(event, listener) {
1464
+ const previousListeners = __classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
1465
+ const previousLength = previousListeners?.length ?? 0;
1466
+ this.once(event, listener);
1467
+ const listeners = __classPrivateFieldGet(this, _EventStream_listeners, "f")[event];
1468
+ const [registration] = listeners?.slice(-1) ?? [];
1469
+ if ((previousListeners === undefined || listeners === previousListeners) &&
1470
+ listeners?.length === previousLength + 1 &&
1471
+ registration?.listener === listener &&
1472
+ registration.once) {
1473
+ __classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").set(listener, { event, registration });
1474
+ }
1475
+ }, _EventStream_removeEmittedListener = function _EventStream_removeEmittedListener(event, registration) {
1476
+ if (registration.removed) {
1477
+ return;
1478
+ }
1479
+ registration.removed = true;
1480
+ __classPrivateFieldGet(this, _EventStream_emittedListenerRegistrations, "f").delete(registration.listener);
1481
+ __classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f").add(event);
1482
+ if (__classPrivateFieldGet(this, _EventStream_listenerDispatchDepth, "f") === 0) {
1483
+ __classPrivateFieldGet(this, _EventStream_instances, "m", _EventStream_cleanupEmittedListeners).call(this);
1484
+ }
1485
+ }, _EventStream_cleanupEmittedListeners = function _EventStream_cleanupEmittedListeners() {
1486
+ for (const event of __classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f")) {
1487
+ const eventType = event;
1488
+ const listeners = __classPrivateFieldGet(this, _EventStream_listeners, "f")[eventType];
1489
+ if (listeners) {
1490
+ __classPrivateFieldGet(this, _EventStream_listeners, "f")[eventType] = listeners.filter((listener) => !listener.removed);
1491
+ }
1492
+ }
1493
+ __classPrivateFieldGet(this, _EventStream_pendingListenerCleanup, "f").clear();
409
1494
  }, _EventStream_handleError = function _EventStream_handleError(error) {
410
1495
  __classPrivateFieldSet(this, _EventStream_errored, true, "f");
411
1496
  if (error instanceof Error && error.name === 'AbortError') {