openai 7.5.0 → 7.7.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 +117 -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 +216 -26
  92. package/core/streaming.js.map +1 -1
  93. package/core/streaming.mjs +216 -26
  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 +17 -20
  427. package/resources/beta/responses/responses.d.mts.map +1 -1
  428. package/resources/beta/responses/responses.d.ts +17 -20
  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 +17 -20
  492. package/resources/responses/responses.d.mts.map +1 -1
  493. package/resources/responses/responses.d.ts +17 -20
  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 +226 -30
  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 +19 -22
  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 +19 -22
  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
@@ -11,6 +11,325 @@ export const has = (obj: object, key: PropertyKey): boolean => {
11
11
  return resolvedHas(obj, key);
12
12
  };
13
13
 
14
+ function isUnsafePropertyKey(key: unknown): boolean {
15
+ return key === '__proto__' || key === 'constructor' || key === 'prototype';
16
+ }
17
+
18
+ interface AdoptedRecord {
19
+ value: object;
20
+ descriptors: PropertyDescriptorMap;
21
+ keys: PropertyKey[];
22
+ prototype: object | null;
23
+ parents: Set<AdoptedRecord>;
24
+ ordinary: boolean;
25
+ array: boolean;
26
+ detached: boolean;
27
+ unsafe: boolean;
28
+ extensible: boolean;
29
+ }
30
+
31
+ interface MergeState {
32
+ adopted: { target: object; key: PropertyKey }[];
33
+ preparedTargets: WeakMap<object, Map<PropertyKey, any>>;
34
+ preparedSources: WeakMap<object, WeakMap<object, object>>;
35
+ inspectedSources: number;
36
+ inspectedSourceProperties: number;
37
+ }
38
+
39
+ const maxAdoptedRecords = 10_000;
40
+
41
+ function isIntrinsicFunctionPrototype(
42
+ value: object,
43
+ key: PropertyKey,
44
+ descriptor: PropertyDescriptor,
45
+ ): boolean {
46
+ return (
47
+ typeof value === 'function' && key === 'prototype' && !descriptor.enumerable && !descriptor.configurable
48
+ );
49
+ }
50
+
51
+ function isObjectLike(value: unknown): value is object {
52
+ return value !== null && (typeof value === 'object' || typeof value === 'function');
53
+ }
54
+
55
+ function rememberAdoption(state: MergeState, target: object, key: PropertyKey, value: any): void {
56
+ if (!isObjectLike(value)) {
57
+ return;
58
+ }
59
+ if (state.adopted.length >= maxAdoptedRecords) {
60
+ throw new Error('Adopted record traversal exceeds the supported safety limit.');
61
+ }
62
+ state.adopted.push({ target, key });
63
+ }
64
+
65
+ function sanitizeAdoptions(state: MergeState): void {
66
+ if (state.adopted.length === 0) {
67
+ return;
68
+ }
69
+
70
+ const records = new WeakMap<object, AdoptedRecord>();
71
+ const visited: AdoptedRecord[] = [];
72
+ const locations: {
73
+ target: object;
74
+ key: PropertyKey;
75
+ descriptor: PropertyDescriptor;
76
+ record: AdoptedRecord;
77
+ }[] = [];
78
+ let inspectedProperties = 0;
79
+
80
+ function inspect(value: object): AdoptedRecord {
81
+ const known = records.get(value);
82
+ if (known) {
83
+ return known;
84
+ }
85
+ if (visited.length >= maxAdoptedRecords) {
86
+ throw new Error('Adopted record traversal exceeds the supported safety limit.');
87
+ }
88
+
89
+ const keys = Reflect.ownKeys(value);
90
+ if (keys.length > maxAdoptedRecords - inspectedProperties) {
91
+ throw new Error('Adopted record traversal exceeds the supported safety limit.');
92
+ }
93
+ inspectedProperties += keys.length;
94
+ const descriptors: PropertyDescriptorMap = Object.create(null);
95
+ for (const key of keys) {
96
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
97
+ if (descriptor) {
98
+ Reflect.set(descriptors, key, descriptor);
99
+ }
100
+ }
101
+ const prototype = Object.getPrototypeOf(value);
102
+ const array = isArray(value);
103
+ const extensible = Object.isExtensible(value);
104
+ const ordinary =
105
+ typeof value !== 'function' &&
106
+ (array ? prototype === Array.prototype : prototype === Object.prototype || prototype === null);
107
+ const record: AdoptedRecord = {
108
+ value,
109
+ descriptors,
110
+ keys,
111
+ prototype,
112
+ parents: new Set(),
113
+ ordinary,
114
+ array,
115
+ detached: ordinary && (extensible || !Object.isFrozen(value)),
116
+ unsafe: false,
117
+ extensible,
118
+ };
119
+ records.set(value, record);
120
+ visited.push(record);
121
+ return record;
122
+ }
123
+
124
+ for (const { target, key } of state.adopted) {
125
+ const descriptor = Object.getOwnPropertyDescriptor(target, key);
126
+ if (descriptor && 'value' in descriptor && isObjectLike(descriptor.value)) {
127
+ locations.push({ target, key, descriptor, record: inspect(descriptor.value) });
128
+ }
129
+ }
130
+
131
+ const detached: AdoptedRecord[] = [];
132
+ for (const record of visited) {
133
+ for (const key of record.keys) {
134
+ const descriptor = Reflect.get(record.descriptors, key) as PropertyDescriptor | undefined;
135
+ if (!descriptor) {
136
+ continue;
137
+ }
138
+ if (isUnsafePropertyKey(key)) {
139
+ if (record.ordinary) {
140
+ record.detached = true;
141
+ record.unsafe = true;
142
+ } else if (!isIntrinsicFunctionPrototype(record.value, key, descriptor)) {
143
+ throw new TypeError('Cannot safely sanitize an adopted callable or unsupported prototype.');
144
+ }
145
+ continue;
146
+ }
147
+ if (!record.ordinary && !descriptor.enumerable) {
148
+ continue;
149
+ }
150
+ if ('value' in descriptor && isObjectLike(descriptor.value)) {
151
+ inspect(descriptor.value).parents.add(record);
152
+ }
153
+ }
154
+ if (record.detached) {
155
+ detached.push(record);
156
+ }
157
+ }
158
+
159
+ for (let index = visited.length - 1; index >= 0; index -= 1) {
160
+ const record = visited[index]!;
161
+ if (record.ordinary) {
162
+ continue;
163
+ }
164
+ for (const key of ['__proto__', 'constructor', 'prototype'] as const) {
165
+ const descriptor = Object.getOwnPropertyDescriptor(record.value, key);
166
+ if (descriptor && !isIntrinsicFunctionPrototype(record.value, key, descriptor)) {
167
+ throw new TypeError('Cannot safely sanitize an adopted callable or unsupported prototype.');
168
+ }
169
+ }
170
+ }
171
+
172
+ const unsafe = visited.filter((record) => record.unsafe);
173
+ for (const record of unsafe) {
174
+ for (const parent of record.parents) {
175
+ if (!parent.ordinary) {
176
+ throw new TypeError('Cannot safely sanitize an adopted callable or unsupported prototype.');
177
+ }
178
+ if (!parent.unsafe) {
179
+ parent.unsafe = true;
180
+ unsafe.push(parent);
181
+ }
182
+ }
183
+ }
184
+
185
+ for (const record of detached) {
186
+ for (const parent of record.parents) {
187
+ if (!parent.ordinary) {
188
+ continue;
189
+ }
190
+ if (!parent.detached) {
191
+ parent.detached = true;
192
+ detached.push(parent);
193
+ }
194
+ }
195
+ }
196
+
197
+ const copies = new WeakMap<object, any>();
198
+ for (const record of detached) {
199
+ copies.set(record.value, record.array ? [] : Object.create(record.prototype));
200
+ }
201
+ for (const record of detached) {
202
+ const copy = copies.get(record.value);
203
+ for (const key of record.keys) {
204
+ if (isUnsafePropertyKey(key)) {
205
+ continue;
206
+ }
207
+ const descriptor = Reflect.get(record.descriptors, key) as PropertyDescriptor | undefined;
208
+ if (!descriptor) {
209
+ continue;
210
+ }
211
+ if ('value' in descriptor && isObjectLike(descriptor.value) && copies.has(descriptor.value)) {
212
+ descriptor.value = copies.get(descriptor.value);
213
+ }
214
+ Object.defineProperty(copy, key, descriptor);
215
+ }
216
+ }
217
+
218
+ for (const { target, key, descriptor, record } of locations) {
219
+ const value = copies.get(record.value) ?? record.value;
220
+ if (value !== descriptor.value) {
221
+ Object.defineProperty(copies.get(target) ?? target, key, { ...descriptor, value });
222
+ }
223
+ }
224
+
225
+ for (const record of detached) {
226
+ if (!record.extensible) {
227
+ Object.preventExtensions(copies.get(record.value));
228
+ }
229
+ }
230
+ }
231
+
232
+ function readPreparedTarget(state: MergeState, target: any, key: PropertyKey): any {
233
+ const prepared = state.preparedTargets.get(target);
234
+ if (prepared?.has(key)) {
235
+ const value = prepared.get(key);
236
+ prepared.delete(key);
237
+ return value;
238
+ }
239
+ return target[key];
240
+ }
241
+
242
+ function previewTarget(state: MergeState, target: object, key: PropertyKey): any {
243
+ const descriptor = Object.getOwnPropertyDescriptor(target, key);
244
+ if (descriptor && 'value' in descriptor) {
245
+ return descriptor.value;
246
+ }
247
+
248
+ const value = Reflect.get(target, key, target);
249
+ let prepared = state.preparedTargets.get(target);
250
+ if (!prepared) {
251
+ prepared = new Map();
252
+ state.preparedTargets.set(target, prepared);
253
+ }
254
+ prepared.set(key, value);
255
+ return value;
256
+ }
257
+
258
+ function prepareMergeSource(target: any, source: any, state: MergeState, assign = false): any {
259
+ if (!source || typeof source !== 'object' || !target || typeof target !== 'object') {
260
+ return source;
261
+ }
262
+
263
+ let preparedTargets = state.preparedSources.get(source);
264
+ if (!preparedTargets) {
265
+ preparedTargets = new WeakMap();
266
+ state.preparedSources.set(source, preparedTargets);
267
+ }
268
+ const existing = preparedTargets.get(target);
269
+ if (existing) {
270
+ return existing;
271
+ }
272
+ state.inspectedSources += 1;
273
+ if (state.inspectedSources > maxAdoptedRecords) {
274
+ throw new Error('Adopted record traversal exceeds the supported safety limit.');
275
+ }
276
+
277
+ const sourceKeys = Reflect.ownKeys(source);
278
+ if (sourceKeys.length > maxAdoptedRecords - state.inspectedSourceProperties) {
279
+ throw new Error('Adopted record traversal exceeds the supported safety limit.');
280
+ }
281
+ state.inspectedSourceProperties += sourceKeys.length;
282
+ const sourceIsArray = isArray(source);
283
+ const prepared: Record<string, any> = sourceIsArray ? [] : Object.create(null);
284
+ preparedTargets.set(target, prepared);
285
+
286
+ if (isArray(target) && sourceIsArray && !assign) {
287
+ const sourceLength = source.length;
288
+ (prepared as any[]).length = sourceLength;
289
+ for (let index = 0; index < sourceLength; index += 1) {
290
+ if (!(index in source)) {
291
+ continue;
292
+ }
293
+ const value = source[index];
294
+ if (has(target, index)) {
295
+ const targetValue = previewTarget(state, target, index);
296
+ prepared[index] =
297
+ targetValue && typeof targetValue === 'object' && value && typeof value === 'object'
298
+ ? prepareMergeSource(targetValue, value, state)
299
+ : value;
300
+ } else {
301
+ prepared[index] = value;
302
+ }
303
+ }
304
+ return prepared;
305
+ }
306
+
307
+ const enumerableKeys: string[] = [];
308
+ for (const key of sourceKeys) {
309
+ if (typeof key === 'string' && Object.getOwnPropertyDescriptor(source, key)?.enumerable) {
310
+ enumerableKeys.push(key);
311
+ }
312
+ }
313
+ for (const key of enumerableKeys) {
314
+ if (isUnsafePropertyKey(key)) {
315
+ continue;
316
+ }
317
+ const value = source[key];
318
+ prepared[key] =
319
+ !assign && has(target, key) && value && typeof value === 'object'
320
+ ? prepareMergeSource(previewTarget(state, target, key), value, state)
321
+ : value;
322
+ }
323
+ return prepared;
324
+ }
325
+
326
+ function prepareSource(target: any, source: any, state: MergeState, assign = false): any {
327
+ const holder = { value: prepareMergeSource(target, source, state, assign) };
328
+ rememberAdoption(state, holder, 'value', holder.value);
329
+ sanitizeAdoptions(state);
330
+ return holder.value;
331
+ }
332
+
14
333
  const hex_table = /* @__PURE__ */ (() => {
15
334
  const array = [];
16
335
  for (let i = 0; i < 256; ++i) {
@@ -55,11 +374,12 @@ function array_to_object(source: any[], options: { plainObjects: boolean }) {
55
374
  return obj;
56
375
  }
57
376
 
58
- export function merge(
377
+ function mergeWithState(
59
378
  target: any,
60
379
  source: any,
61
- options: { plainObjects?: boolean; allowPrototypes?: boolean } = {},
62
- ) {
380
+ options: { plainObjects?: boolean; allowPrototypes?: boolean },
381
+ state: MergeState,
382
+ ): any {
63
383
  if (!source) {
64
384
  return target;
65
385
  }
@@ -68,8 +388,16 @@ export function merge(
68
388
  if (isArray(target)) {
69
389
  target.push(source);
70
390
  } else if (target && typeof target === 'object') {
71
- if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {
72
- target[source] = true;
391
+ const propertyKey =
392
+ typeof source === 'string' || typeof source === 'symbol'
393
+ ? source
394
+ : Reflect.ownKeys({ [source]: true })[0]!;
395
+ if (
396
+ !isUnsafePropertyKey(propertyKey) &&
397
+ ((options && (options.plainObjects || options.allowPrototypes)) ||
398
+ !has(Object.prototype, propertyKey))
399
+ ) {
400
+ target[propertyKey] = true;
73
401
  }
74
402
  } else {
75
403
  return [target, source];
@@ -95,14 +423,17 @@ export function merge(
95
423
  if (i in source) {
96
424
  const item = source[i];
97
425
  if (has(target, i)) {
98
- const targetItem = target[i];
426
+ const targetItem = readPreparedTarget(state, target, i);
99
427
  if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
100
- target[i] = merge(targetItem, item, options);
428
+ const merged = mergeWithState(targetItem, item, options, state);
429
+ target[i] = merged;
101
430
  } else {
102
- target.push(item);
431
+ const adopted = item;
432
+ target.push(adopted);
103
433
  }
104
434
  } else {
105
- target[i] = item;
435
+ const adopted = item;
436
+ target[i] = adopted;
106
437
  }
107
438
  }
108
439
  }
@@ -110,16 +441,47 @@ export function merge(
110
441
  }
111
442
 
112
443
  for (const key of Object.keys(source)) {
444
+ if (isUnsafePropertyKey(key)) {
445
+ continue;
446
+ }
113
447
  const value = source[key];
114
-
115
- mergeTarget[key] = has(mergeTarget, key) ? merge(mergeTarget[key], value, options) : value;
448
+ const adopted = has(mergeTarget, key)
449
+ ? mergeWithState(readPreparedTarget(state, mergeTarget, key), value, options, state)
450
+ : value;
451
+ mergeTarget[key] = adopted;
116
452
  }
117
453
  return mergeTarget;
118
454
  }
119
455
 
456
+ export function merge(
457
+ target: any,
458
+ source: any,
459
+ options: { plainObjects?: boolean; allowPrototypes?: boolean } = {},
460
+ ) {
461
+ const state: MergeState = {
462
+ adopted: [],
463
+ preparedTargets: new WeakMap(),
464
+ preparedSources: new WeakMap(),
465
+ inspectedSources: 0,
466
+ inspectedSourceProperties: 0,
467
+ };
468
+ return mergeWithState(target, prepareSource(target, source, state), options, state);
469
+ }
470
+
120
471
  export function assign_single_source(target: any, source: any) {
121
- for (const key of Object.keys(source)) {
122
- target[key] = source[key];
472
+ const state: MergeState = {
473
+ adopted: [],
474
+ preparedTargets: new WeakMap(),
475
+ preparedSources: new WeakMap(),
476
+ inspectedSources: 0,
477
+ inspectedSourceProperties: 0,
478
+ };
479
+ const prepared = prepareSource(target, source, state, true);
480
+ for (const key of Object.keys(prepared)) {
481
+ if (isUnsafePropertyKey(key)) {
482
+ continue;
483
+ }
484
+ target[key] = prepared[key];
123
485
  }
124
486
  return target;
125
487
  }
@@ -84,11 +84,62 @@ export type RequestOptions = {
84
84
  export type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };
85
85
  export type RequestEncoder = (request: { headers: NullableHeaders; body: unknown }) => EncodedContent;
86
86
 
87
+ interface JSONRequestBodyObserver {
88
+ value(holder: object, key: string, value: unknown): unknown;
89
+ complete(): void;
90
+ }
91
+
92
+ const jsonRequestBodyObservers = new WeakMap<object, Set<JSONRequestBodyObserver>>();
93
+
94
+ /** Observes values produced by the actual JSON request serializer without changing them. */
95
+ export function observeJSONRequestBody(body: object, observer: JSONRequestBodyObserver): () => void {
96
+ let observers = jsonRequestBodyObservers.get(body);
97
+ if (!observers) {
98
+ observers = new Set();
99
+ jsonRequestBodyObservers.set(body, observers);
100
+ }
101
+ observers.add(observer);
102
+
103
+ return () => {
104
+ const active = jsonRequestBodyObservers.get(body);
105
+ if (!active) {
106
+ return;
107
+ }
108
+ active.delete(observer);
109
+ if (active.size === 0) {
110
+ jsonRequestBodyObservers.delete(body);
111
+ }
112
+ };
113
+ }
114
+
87
115
  export const FallbackEncoder: RequestEncoder = ({ headers, body }) => {
116
+ const observers =
117
+ typeof body === 'object' && body !== null ? jsonRequestBodyObservers.get(body) : undefined;
118
+ let encoded: string;
119
+
120
+ if (!observers || observers.size === 0) {
121
+ encoded = JSON.stringify(body);
122
+ } else {
123
+ const active = [...observers];
124
+ encoded = JSON.stringify(body, function (this: object, key: string, value: unknown): unknown {
125
+ let observed = value;
126
+ for (const observer of active) {
127
+ const replacement = observer.value(this, key, observed);
128
+ if (replacement !== undefined) {
129
+ observed = replacement;
130
+ }
131
+ }
132
+ return observed;
133
+ });
134
+ for (const observer of active) {
135
+ observer.complete();
136
+ }
137
+ }
138
+
88
139
  return {
89
140
  bodyHeaders: {
90
141
  'content-type': 'application/json',
91
142
  },
92
- body: JSON.stringify(body),
143
+ body: encoded,
93
144
  };
94
145
  };
@@ -44,9 +44,9 @@ export function ensureCanonicalOutputText(context: ResponseAccumulatorContext, s
44
44
  text += outputText;
45
45
  outputTextIndex.append(outputText.length);
46
46
  }
47
- if (snapshot.output_text !== text) {
48
- snapshot.output_text = text;
49
- }
47
+ // Comparing independently accumulated strings can scan all preceding text on
48
+ // every delta. The recount is authoritative, so assign it without comparing.
49
+ snapshot.output_text = text;
50
50
  context.outputTextIndex = outputTextIndex;
51
51
  context.canonicalSnapshot = snapshot;
52
52
  }