openai 7.4.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 (2108) hide show
  1. package/CHANGELOG.md +424 -0
  2. package/README.md +59 -12
  3. package/_vendor/partial-json-parser/parser.d.mts.map +1 -1
  4. package/_vendor/partial-json-parser/parser.d.ts.map +1 -1
  5. package/_vendor/partial-json-parser/parser.js +52 -36
  6. package/_vendor/partial-json-parser/parser.js.map +1 -1
  7. package/_vendor/partial-json-parser/parser.mjs +52 -36
  8. package/_vendor/partial-json-parser/parser.mjs.map +1 -1
  9. package/_vendor/zod-to-json-schema/Options.d.mts +3 -3
  10. package/_vendor/zod-to-json-schema/Options.d.mts.map +1 -1
  11. package/_vendor/zod-to-json-schema/Options.d.ts +3 -3
  12. package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -1
  13. package/_vendor/zod-to-json-schema/Options.js +9 -2
  14. package/_vendor/zod-to-json-schema/Options.js.map +1 -1
  15. package/_vendor/zod-to-json-schema/Options.mjs +9 -2
  16. package/_vendor/zod-to-json-schema/Options.mjs.map +1 -1
  17. package/_vendor/zod-to-json-schema/Refs.d.mts +2 -2
  18. package/_vendor/zod-to-json-schema/Refs.d.mts.map +1 -1
  19. package/_vendor/zod-to-json-schema/Refs.d.ts +2 -2
  20. package/_vendor/zod-to-json-schema/Refs.d.ts.map +1 -1
  21. package/_vendor/zod-to-json-schema/Refs.js +4 -4
  22. package/_vendor/zod-to-json-schema/Refs.js.map +1 -1
  23. package/_vendor/zod-to-json-schema/Refs.mjs +4 -4
  24. package/_vendor/zod-to-json-schema/Refs.mjs.map +1 -1
  25. package/_vendor/zod-to-json-schema/errorMessages.d.mts +2 -2
  26. package/_vendor/zod-to-json-schema/errorMessages.d.mts.map +1 -1
  27. package/_vendor/zod-to-json-schema/errorMessages.d.ts +2 -2
  28. package/_vendor/zod-to-json-schema/errorMessages.d.ts.map +1 -1
  29. package/_vendor/zod-to-json-schema/errorMessages.js +2 -1
  30. package/_vendor/zod-to-json-schema/errorMessages.js.map +1 -1
  31. package/_vendor/zod-to-json-schema/errorMessages.mjs +2 -1
  32. package/_vendor/zod-to-json-schema/errorMessages.mjs.map +1 -1
  33. package/_vendor/zod-to-json-schema/index.d.mts +1 -1
  34. package/_vendor/zod-to-json-schema/index.d.mts.map +1 -1
  35. package/_vendor/zod-to-json-schema/index.d.ts +1 -1
  36. package/_vendor/zod-to-json-schema/index.d.ts.map +1 -1
  37. package/_vendor/zod-to-json-schema/index.js +1 -1
  38. package/_vendor/zod-to-json-schema/index.js.map +1 -1
  39. package/_vendor/zod-to-json-schema/index.mjs +1 -1
  40. package/_vendor/zod-to-json-schema/index.mjs.map +1 -1
  41. package/_vendor/zod-to-json-schema/parseDef.d.mts +24 -24
  42. package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
  43. package/_vendor/zod-to-json-schema/parseDef.d.ts +24 -24
  44. package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
  45. package/_vendor/zod-to-json-schema/parseDef.js +98 -40
  46. package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
  47. package/_vendor/zod-to-json-schema/parseDef.mjs +98 -40
  48. package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
  49. package/_vendor/zod-to-json-schema/parsers/array.d.mts +4 -4
  50. package/_vendor/zod-to-json-schema/parsers/array.d.mts.map +1 -1
  51. package/_vendor/zod-to-json-schema/parsers/array.d.ts +4 -4
  52. package/_vendor/zod-to-json-schema/parsers/array.d.ts.map +1 -1
  53. package/_vendor/zod-to-json-schema/parsers/array.js +1 -1
  54. package/_vendor/zod-to-json-schema/parsers/array.js.map +1 -1
  55. package/_vendor/zod-to-json-schema/parsers/array.mjs +1 -1
  56. package/_vendor/zod-to-json-schema/parsers/array.mjs.map +1 -1
  57. package/_vendor/zod-to-json-schema/parsers/bigint.d.mts +8 -8
  58. package/_vendor/zod-to-json-schema/parsers/bigint.d.mts.map +1 -1
  59. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts +8 -8
  60. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -1
  61. package/_vendor/zod-to-json-schema/parsers/bigint.js +8 -4
  62. package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -1
  63. package/_vendor/zod-to-json-schema/parsers/bigint.mjs +8 -4
  64. package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -1
  65. package/_vendor/zod-to-json-schema/parsers/branded.d.mts +3 -3
  66. package/_vendor/zod-to-json-schema/parsers/branded.d.mts.map +1 -1
  67. package/_vendor/zod-to-json-schema/parsers/branded.d.ts +3 -3
  68. package/_vendor/zod-to-json-schema/parsers/branded.d.ts.map +1 -1
  69. package/_vendor/zod-to-json-schema/parsers/catch.d.mts +3 -3
  70. package/_vendor/zod-to-json-schema/parsers/catch.d.mts.map +1 -1
  71. package/_vendor/zod-to-json-schema/parsers/catch.d.ts +3 -3
  72. package/_vendor/zod-to-json-schema/parsers/catch.d.ts.map +1 -1
  73. package/_vendor/zod-to-json-schema/parsers/catch.js +1 -3
  74. package/_vendor/zod-to-json-schema/parsers/catch.js.map +1 -1
  75. package/_vendor/zod-to-json-schema/parsers/catch.mjs +1 -3
  76. package/_vendor/zod-to-json-schema/parsers/catch.mjs.map +1 -1
  77. package/_vendor/zod-to-json-schema/parsers/date.d.mts +5 -5
  78. package/_vendor/zod-to-json-schema/parsers/date.d.mts.map +1 -1
  79. package/_vendor/zod-to-json-schema/parsers/date.d.ts +5 -5
  80. package/_vendor/zod-to-json-schema/parsers/date.d.ts.map +1 -1
  81. package/_vendor/zod-to-json-schema/parsers/date.js +10 -5
  82. package/_vendor/zod-to-json-schema/parsers/date.js.map +1 -1
  83. package/_vendor/zod-to-json-schema/parsers/date.mjs +10 -5
  84. package/_vendor/zod-to-json-schema/parsers/date.mjs.map +1 -1
  85. package/_vendor/zod-to-json-schema/parsers/default.d.mts +3 -3
  86. package/_vendor/zod-to-json-schema/parsers/default.d.mts.map +1 -1
  87. package/_vendor/zod-to-json-schema/parsers/default.d.ts +3 -3
  88. package/_vendor/zod-to-json-schema/parsers/default.d.ts.map +1 -1
  89. package/_vendor/zod-to-json-schema/parsers/default.js.map +1 -1
  90. package/_vendor/zod-to-json-schema/parsers/default.mjs.map +1 -1
  91. package/_vendor/zod-to-json-schema/parsers/effects.d.mts +3 -3
  92. package/_vendor/zod-to-json-schema/parsers/effects.d.mts.map +1 -1
  93. package/_vendor/zod-to-json-schema/parsers/effects.d.ts +3 -3
  94. package/_vendor/zod-to-json-schema/parsers/effects.d.ts.map +1 -1
  95. package/_vendor/zod-to-json-schema/parsers/effects.js.map +1 -1
  96. package/_vendor/zod-to-json-schema/parsers/effects.mjs.map +1 -1
  97. package/_vendor/zod-to-json-schema/parsers/enum.d.mts +1 -1
  98. package/_vendor/zod-to-json-schema/parsers/enum.d.mts.map +1 -1
  99. package/_vendor/zod-to-json-schema/parsers/enum.d.ts +1 -1
  100. package/_vendor/zod-to-json-schema/parsers/enum.d.ts.map +1 -1
  101. package/_vendor/zod-to-json-schema/parsers/intersection.d.mts +3 -3
  102. package/_vendor/zod-to-json-schema/parsers/intersection.d.mts.map +1 -1
  103. package/_vendor/zod-to-json-schema/parsers/intersection.d.ts +3 -3
  104. package/_vendor/zod-to-json-schema/parsers/intersection.d.ts.map +1 -1
  105. package/_vendor/zod-to-json-schema/parsers/intersection.js +6 -5
  106. package/_vendor/zod-to-json-schema/parsers/intersection.js.map +1 -1
  107. package/_vendor/zod-to-json-schema/parsers/intersection.mjs +6 -5
  108. package/_vendor/zod-to-json-schema/parsers/intersection.mjs.map +1 -1
  109. package/_vendor/zod-to-json-schema/parsers/literal.d.mts +5 -2
  110. package/_vendor/zod-to-json-schema/parsers/literal.d.mts.map +1 -1
  111. package/_vendor/zod-to-json-schema/parsers/literal.d.ts +5 -2
  112. package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -1
  113. package/_vendor/zod-to-json-schema/parsers/literal.js +4 -0
  114. package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -1
  115. package/_vendor/zod-to-json-schema/parsers/literal.mjs +4 -0
  116. package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -1
  117. package/_vendor/zod-to-json-schema/parsers/map.d.mts +4 -4
  118. package/_vendor/zod-to-json-schema/parsers/map.d.mts.map +1 -1
  119. package/_vendor/zod-to-json-schema/parsers/map.d.ts +4 -4
  120. package/_vendor/zod-to-json-schema/parsers/map.d.ts.map +1 -1
  121. package/_vendor/zod-to-json-schema/parsers/map.js.map +1 -1
  122. package/_vendor/zod-to-json-schema/parsers/map.mjs.map +1 -1
  123. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.mts +1 -1
  124. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.mts.map +1 -1
  125. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.ts +1 -1
  126. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -1
  127. package/_vendor/zod-to-json-schema/parsers/nativeEnum.js +7 -9
  128. package/_vendor/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  129. package/_vendor/zod-to-json-schema/parsers/nativeEnum.mjs +7 -9
  130. package/_vendor/zod-to-json-schema/parsers/nativeEnum.mjs.map +1 -1
  131. package/_vendor/zod-to-json-schema/parsers/null.d.mts +1 -1
  132. package/_vendor/zod-to-json-schema/parsers/null.d.mts.map +1 -1
  133. package/_vendor/zod-to-json-schema/parsers/null.d.ts +1 -1
  134. package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -1
  135. package/_vendor/zod-to-json-schema/parsers/null.js +2 -2
  136. package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -1
  137. package/_vendor/zod-to-json-schema/parsers/null.mjs +2 -2
  138. package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -1
  139. package/_vendor/zod-to-json-schema/parsers/nullable.d.mts +4 -4
  140. package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
  141. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts +4 -4
  142. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
  143. package/_vendor/zod-to-json-schema/parsers/nullable.js +2 -1
  144. package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
  145. package/_vendor/zod-to-json-schema/parsers/nullable.mjs +2 -1
  146. package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
  147. package/_vendor/zod-to-json-schema/parsers/number.d.mts +3 -3
  148. package/_vendor/zod-to-json-schema/parsers/number.d.mts.map +1 -1
  149. package/_vendor/zod-to-json-schema/parsers/number.d.ts +3 -3
  150. package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -1
  151. package/_vendor/zod-to-json-schema/parsers/number.js +10 -5
  152. package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -1
  153. package/_vendor/zod-to-json-schema/parsers/number.mjs +10 -5
  154. package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -1
  155. package/_vendor/zod-to-json-schema/parsers/object.d.mts +3 -3
  156. package/_vendor/zod-to-json-schema/parsers/object.d.mts.map +1 -1
  157. package/_vendor/zod-to-json-schema/parsers/object.d.ts +3 -3
  158. package/_vendor/zod-to-json-schema/parsers/object.d.ts.map +1 -1
  159. package/_vendor/zod-to-json-schema/parsers/object.js +43 -38
  160. package/_vendor/zod-to-json-schema/parsers/object.js.map +1 -1
  161. package/_vendor/zod-to-json-schema/parsers/object.mjs +43 -38
  162. package/_vendor/zod-to-json-schema/parsers/object.mjs.map +1 -1
  163. package/_vendor/zod-to-json-schema/parsers/optional.d.mts +3 -3
  164. package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
  165. package/_vendor/zod-to-json-schema/parsers/optional.d.ts +3 -3
  166. package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
  167. package/_vendor/zod-to-json-schema/parsers/optional.js +2 -2
  168. package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
  169. package/_vendor/zod-to-json-schema/parsers/optional.mjs +2 -2
  170. package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
  171. package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts +4 -4
  172. package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts.map +1 -1
  173. package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts +4 -4
  174. package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts.map +1 -1
  175. package/_vendor/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  176. package/_vendor/zod-to-json-schema/parsers/pipeline.mjs.map +1 -1
  177. package/_vendor/zod-to-json-schema/parsers/promise.d.mts +3 -3
  178. package/_vendor/zod-to-json-schema/parsers/promise.d.mts.map +1 -1
  179. package/_vendor/zod-to-json-schema/parsers/promise.d.ts +3 -3
  180. package/_vendor/zod-to-json-schema/parsers/promise.d.ts.map +1 -1
  181. package/_vendor/zod-to-json-schema/parsers/promise.js.map +1 -1
  182. package/_vendor/zod-to-json-schema/parsers/promise.mjs.map +1 -1
  183. package/_vendor/zod-to-json-schema/parsers/readonly.d.mts +3 -3
  184. package/_vendor/zod-to-json-schema/parsers/readonly.d.mts.map +1 -1
  185. package/_vendor/zod-to-json-schema/parsers/readonly.d.ts +3 -3
  186. package/_vendor/zod-to-json-schema/parsers/readonly.d.ts.map +1 -1
  187. package/_vendor/zod-to-json-schema/parsers/readonly.js +1 -3
  188. package/_vendor/zod-to-json-schema/parsers/readonly.js.map +1 -1
  189. package/_vendor/zod-to-json-schema/parsers/readonly.mjs +1 -3
  190. package/_vendor/zod-to-json-schema/parsers/readonly.mjs.map +1 -1
  191. package/_vendor/zod-to-json-schema/parsers/record.d.mts +5 -5
  192. package/_vendor/zod-to-json-schema/parsers/record.d.mts.map +1 -1
  193. package/_vendor/zod-to-json-schema/parsers/record.d.ts +5 -5
  194. package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -1
  195. package/_vendor/zod-to-json-schema/parsers/record.js +5 -5
  196. package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -1
  197. package/_vendor/zod-to-json-schema/parsers/record.mjs +5 -5
  198. package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -1
  199. package/_vendor/zod-to-json-schema/parsers/set.d.mts +4 -4
  200. package/_vendor/zod-to-json-schema/parsers/set.d.mts.map +1 -1
  201. package/_vendor/zod-to-json-schema/parsers/set.d.ts +4 -4
  202. package/_vendor/zod-to-json-schema/parsers/set.d.ts.map +1 -1
  203. package/_vendor/zod-to-json-schema/parsers/set.js.map +1 -1
  204. package/_vendor/zod-to-json-schema/parsers/set.mjs.map +1 -1
  205. package/_vendor/zod-to-json-schema/parsers/string.d.mts +3 -3
  206. package/_vendor/zod-to-json-schema/parsers/string.d.mts.map +1 -1
  207. package/_vendor/zod-to-json-schema/parsers/string.d.ts +3 -3
  208. package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -1
  209. package/_vendor/zod-to-json-schema/parsers/string.js +55 -33
  210. package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -1
  211. package/_vendor/zod-to-json-schema/parsers/string.mjs +55 -33
  212. package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -1
  213. package/_vendor/zod-to-json-schema/parsers/tuple.d.mts +3 -3
  214. package/_vendor/zod-to-json-schema/parsers/tuple.d.mts.map +1 -1
  215. package/_vendor/zod-to-json-schema/parsers/tuple.d.ts +3 -3
  216. package/_vendor/zod-to-json-schema/parsers/tuple.d.ts.map +1 -1
  217. package/_vendor/zod-to-json-schema/parsers/tuple.js +12 -14
  218. package/_vendor/zod-to-json-schema/parsers/tuple.js.map +1 -1
  219. package/_vendor/zod-to-json-schema/parsers/tuple.mjs +12 -14
  220. package/_vendor/zod-to-json-schema/parsers/tuple.mjs.map +1 -1
  221. package/_vendor/zod-to-json-schema/parsers/union.d.mts +3 -3
  222. package/_vendor/zod-to-json-schema/parsers/union.d.mts.map +1 -1
  223. package/_vendor/zod-to-json-schema/parsers/union.d.ts +3 -3
  224. package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -1
  225. package/_vendor/zod-to-json-schema/parsers/union.js +43 -24
  226. package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -1
  227. package/_vendor/zod-to-json-schema/parsers/union.mjs +43 -24
  228. package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -1
  229. package/_vendor/zod-to-json-schema/util.d.mts +1 -1
  230. package/_vendor/zod-to-json-schema/util.d.mts.map +1 -1
  231. package/_vendor/zod-to-json-schema/util.d.ts +1 -1
  232. package/_vendor/zod-to-json-schema/util.d.ts.map +1 -1
  233. package/_vendor/zod-to-json-schema/util.js +6 -5
  234. package/_vendor/zod-to-json-schema/util.js.map +1 -1
  235. package/_vendor/zod-to-json-schema/util.mjs +6 -5
  236. package/_vendor/zod-to-json-schema/util.mjs.map +1 -1
  237. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts +4 -6
  238. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.mts.map +1 -1
  239. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts +4 -6
  240. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -1
  241. package/_vendor/zod-to-json-schema/zodToJsonSchema.js +102 -36
  242. package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -1
  243. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +102 -36
  244. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -1
  245. package/auth/index.d.mts +1 -1
  246. package/auth/index.d.mts.map +1 -1
  247. package/auth/index.d.ts +1 -1
  248. package/auth/index.d.ts.map +1 -1
  249. package/auth/index.js.map +1 -1
  250. package/auth/index.mjs.map +1 -1
  251. package/auth/subject-token-providers.d.mts +52 -0
  252. package/auth/subject-token-providers.d.mts.map +1 -1
  253. package/auth/subject-token-providers.d.ts +52 -0
  254. package/auth/subject-token-providers.d.ts.map +1 -1
  255. package/auth/subject-token-providers.js +222 -7
  256. package/auth/subject-token-providers.js.map +1 -1
  257. package/auth/subject-token-providers.mjs +222 -7
  258. package/auth/subject-token-providers.mjs.map +1 -1
  259. package/auth/types.d.mts +31 -5
  260. package/auth/types.d.mts.map +1 -1
  261. package/auth/types.d.ts +31 -5
  262. package/auth/types.d.ts.map +1 -1
  263. package/auth/workload-identity-auth.d.mts +26 -1
  264. package/auth/workload-identity-auth.d.mts.map +1 -1
  265. package/auth/workload-identity-auth.d.ts +26 -1
  266. package/auth/workload-identity-auth.d.ts.map +1 -1
  267. package/auth/workload-identity-auth.js +139 -22
  268. package/auth/workload-identity-auth.js.map +1 -1
  269. package/auth/workload-identity-auth.mjs +139 -22
  270. package/auth/workload-identity-auth.mjs.map +1 -1
  271. package/auth/x509-transport.d.mts +5 -0
  272. package/auth/x509-transport.d.mts.map +1 -0
  273. package/auth/x509-transport.d.ts +5 -0
  274. package/auth/x509-transport.d.ts.map +1 -0
  275. package/auth/x509-transport.js +39 -0
  276. package/auth/x509-transport.js.map +1 -0
  277. package/auth/x509-transport.mjs +36 -0
  278. package/auth/x509-transport.mjs.map +1 -0
  279. package/azure.d.mts +38 -16
  280. package/azure.d.mts.map +1 -1
  281. package/azure.d.ts +38 -16
  282. package/azure.d.ts.map +1 -1
  283. package/azure.js +36 -19
  284. package/azure.js.map +1 -1
  285. package/azure.mjs +36 -19
  286. package/azure.mjs.map +1 -1
  287. package/bedrock.d.mts +23 -5
  288. package/bedrock.d.mts.map +1 -1
  289. package/bedrock.d.ts +23 -5
  290. package/bedrock.d.ts.map +1 -1
  291. package/bedrock.js +69 -8
  292. package/bedrock.js.map +1 -1
  293. package/bedrock.mjs +69 -8
  294. package/bedrock.mjs.map +1 -1
  295. package/beta/realtime/internal-base.d.mts +47 -4
  296. package/beta/realtime/internal-base.d.mts.map +1 -1
  297. package/beta/realtime/internal-base.d.ts +47 -4
  298. package/beta/realtime/internal-base.d.ts.map +1 -1
  299. package/beta/realtime/internal-base.js +53 -10
  300. package/beta/realtime/internal-base.js.map +1 -1
  301. package/beta/realtime/internal-base.mjs +52 -10
  302. package/beta/realtime/internal-base.mjs.map +1 -1
  303. package/beta/realtime/websocket.d.mts +63 -4
  304. package/beta/realtime/websocket.d.mts.map +1 -1
  305. package/beta/realtime/websocket.d.ts +63 -4
  306. package/beta/realtime/websocket.d.ts.map +1 -1
  307. package/beta/realtime/websocket.js +161 -26
  308. package/beta/realtime/websocket.js.map +1 -1
  309. package/beta/realtime/websocket.mjs +162 -27
  310. package/beta/realtime/websocket.mjs.map +1 -1
  311. package/beta/realtime/ws.d.mts +51 -3
  312. package/beta/realtime/ws.d.mts.map +1 -1
  313. package/beta/realtime/ws.d.ts +51 -3
  314. package/beta/realtime/ws.d.ts.map +1 -1
  315. package/beta/realtime/ws.js +82 -9
  316. package/beta/realtime/ws.js.map +1 -1
  317. package/beta/realtime/ws.mjs +83 -10
  318. package/beta/realtime/ws.mjs.map +1 -1
  319. package/client.d.mts +40 -2
  320. package/client.d.mts.map +1 -1
  321. package/client.d.ts +40 -2
  322. package/client.d.ts.map +1 -1
  323. package/client.js +597 -75
  324. package/client.js.map +1 -1
  325. package/client.mjs +598 -76
  326. package/client.mjs.map +1 -1
  327. package/core/EventEmitter.d.mts +10 -6
  328. package/core/EventEmitter.d.mts.map +1 -1
  329. package/core/EventEmitter.d.ts +10 -6
  330. package/core/EventEmitter.d.ts.map +1 -1
  331. package/core/EventEmitter.js +98 -16
  332. package/core/EventEmitter.js.map +1 -1
  333. package/core/EventEmitter.mjs +99 -17
  334. package/core/EventEmitter.mjs.map +1 -1
  335. package/core/api-promise.d.mts.map +1 -1
  336. package/core/api-promise.d.ts.map +1 -1
  337. package/core/api-promise.js +0 -1
  338. package/core/api-promise.js.map +1 -1
  339. package/core/api-promise.mjs +0 -1
  340. package/core/api-promise.mjs.map +1 -1
  341. package/core/error.d.mts.map +1 -1
  342. package/core/error.d.ts.map +1 -1
  343. package/core/error.js +5 -5
  344. package/core/error.js.map +1 -1
  345. package/core/error.mjs +5 -5
  346. package/core/error.mjs.map +1 -1
  347. package/core/pagination.d.mts.map +1 -1
  348. package/core/pagination.d.ts.map +1 -1
  349. package/core/pagination.js +0 -1
  350. package/core/pagination.js.map +1 -1
  351. package/core/pagination.mjs +0 -1
  352. package/core/pagination.mjs.map +1 -1
  353. package/core/resource.d.mts.map +1 -1
  354. package/core/resource.d.ts.map +1 -1
  355. package/core/resource.js +0 -1
  356. package/core/resource.js.map +1 -1
  357. package/core/resource.mjs +0 -1
  358. package/core/resource.mjs.map +1 -1
  359. package/core/streaming.d.mts +29 -2
  360. package/core/streaming.d.mts.map +1 -1
  361. package/core/streaming.d.ts +29 -2
  362. package/core/streaming.d.ts.map +1 -1
  363. package/core/streaming.js +177 -75
  364. package/core/streaming.js.map +1 -1
  365. package/core/streaming.mjs +177 -75
  366. package/core/streaming.mjs.map +1 -1
  367. package/helpers/audio.d.mts +29 -0
  368. package/helpers/audio.d.mts.map +1 -1
  369. package/helpers/audio.d.ts +29 -0
  370. package/helpers/audio.d.ts.map +1 -1
  371. package/helpers/audio.js +163 -28
  372. package/helpers/audio.js.map +1 -1
  373. package/helpers/audio.mjs +163 -28
  374. package/helpers/audio.mjs.map +1 -1
  375. package/helpers/standard-schema.d.mts +154 -18
  376. package/helpers/standard-schema.d.mts.map +1 -1
  377. package/helpers/standard-schema.d.ts +154 -18
  378. package/helpers/standard-schema.d.ts.map +1 -1
  379. package/helpers/standard-schema.js +92 -29
  380. package/helpers/standard-schema.js.map +1 -1
  381. package/helpers/standard-schema.mjs +93 -30
  382. package/helpers/standard-schema.mjs.map +1 -1
  383. package/helpers/zod-v3-strict-schema.d.mts +7 -0
  384. package/helpers/zod-v3-strict-schema.d.mts.map +1 -0
  385. package/helpers/zod-v3-strict-schema.d.ts +7 -0
  386. package/helpers/zod-v3-strict-schema.d.ts.map +1 -0
  387. package/helpers/zod-v3-strict-schema.js +403 -0
  388. package/helpers/zod-v3-strict-schema.js.map +1 -0
  389. package/helpers/zod-v3-strict-schema.mjs +399 -0
  390. package/helpers/zod-v3-strict-schema.mjs.map +1 -0
  391. package/helpers/zod.d.mts +79 -5
  392. package/helpers/zod.d.mts.map +1 -1
  393. package/helpers/zod.d.ts +79 -5
  394. package/helpers/zod.d.ts.map +1 -1
  395. package/helpers/zod.js +84 -23
  396. package/helpers/zod.js.map +1 -1
  397. package/helpers/zod.mjs +86 -25
  398. package/helpers/zod.mjs.map +1 -1
  399. package/index.d.mts +2 -2
  400. package/index.d.mts.map +1 -1
  401. package/index.d.ts +2 -2
  402. package/index.d.ts.map +1 -1
  403. package/index.js +0 -1
  404. package/index.js.map +1 -1
  405. package/index.mjs +0 -1
  406. package/index.mjs.map +1 -1
  407. package/internal/assistant-stream-delta.d.mts +7 -0
  408. package/internal/assistant-stream-delta.d.mts.map +1 -0
  409. package/internal/assistant-stream-delta.d.ts +7 -0
  410. package/internal/assistant-stream-delta.d.ts.map +1 -0
  411. package/internal/assistant-stream-delta.js +309 -0
  412. package/internal/assistant-stream-delta.js.map +1 -0
  413. package/internal/assistant-stream-delta.mjs +301 -0
  414. package/internal/assistant-stream-delta.mjs.map +1 -0
  415. package/internal/auth/x509-token-exchange.d.mts +16 -0
  416. package/internal/auth/x509-token-exchange.d.mts.map +1 -0
  417. package/internal/auth/x509-token-exchange.d.ts +16 -0
  418. package/internal/auth/x509-token-exchange.d.ts.map +1 -0
  419. package/internal/auth/x509-token-exchange.js +246 -0
  420. package/internal/auth/x509-token-exchange.js.map +1 -0
  421. package/internal/auth/x509-token-exchange.mjs +243 -0
  422. package/internal/auth/x509-token-exchange.mjs.map +1 -0
  423. package/internal/auth/x509-transport-capability.d.mts +37 -0
  424. package/internal/auth/x509-transport-capability.d.mts.map +1 -0
  425. package/internal/auth/x509-transport-capability.d.ts +37 -0
  426. package/internal/auth/x509-transport-capability.d.ts.map +1 -0
  427. package/internal/auth/x509-transport-capability.js +169 -0
  428. package/internal/auth/x509-transport-capability.js.map +1 -0
  429. package/internal/auth/x509-transport-capability.mjs +164 -0
  430. package/internal/auth/x509-transport-capability.mjs.map +1 -0
  431. package/internal/auth/x509-transport-registry.d.mts +63 -0
  432. package/internal/auth/x509-transport-registry.d.mts.map +1 -0
  433. package/internal/auth/x509-transport-registry.d.ts +63 -0
  434. package/internal/auth/x509-transport-registry.d.ts.map +1 -0
  435. package/internal/auth/x509-transport-registry.js +53 -0
  436. package/internal/auth/x509-transport-registry.js.map +1 -0
  437. package/internal/auth/x509-transport-registry.mjs +48 -0
  438. package/internal/auth/x509-transport-registry.mjs.map +1 -0
  439. package/internal/auth/x509-transport-state-browser.d.mts +21 -0
  440. package/internal/auth/x509-transport-state-browser.d.mts.map +1 -0
  441. package/internal/auth/x509-transport-state-browser.d.ts +21 -0
  442. package/internal/auth/x509-transport-state-browser.d.ts.map +1 -0
  443. package/internal/auth/x509-transport-state-browser.js +30 -0
  444. package/internal/auth/x509-transport-state-browser.js.map +1 -0
  445. package/internal/auth/x509-transport-state-browser.mjs +27 -0
  446. package/internal/auth/x509-transport-state-browser.mjs.map +1 -0
  447. package/internal/auth/x509-transport-state.cjs +30 -0
  448. package/internal/auth/x509-transport-state.cjs.map +1 -0
  449. package/internal/auth/x509-transport-state.d.cts +21 -0
  450. package/internal/auth/x509-transport-state.d.cts.map +1 -0
  451. package/internal/auth/x509-workload-identity-auth.d.mts +128 -0
  452. package/internal/auth/x509-workload-identity-auth.d.mts.map +1 -0
  453. package/internal/auth/x509-workload-identity-auth.d.ts +128 -0
  454. package/internal/auth/x509-workload-identity-auth.d.ts.map +1 -0
  455. package/internal/auth/x509-workload-identity-auth.js +767 -0
  456. package/internal/auth/x509-workload-identity-auth.js.map +1 -0
  457. package/internal/auth/x509-workload-identity-auth.mjs +757 -0
  458. package/internal/auth/x509-workload-identity-auth.mjs.map +1 -0
  459. package/internal/bedrock.d.mts +82 -5
  460. package/internal/bedrock.d.mts.map +1 -1
  461. package/internal/bedrock.d.ts +82 -5
  462. package/internal/bedrock.d.ts.map +1 -1
  463. package/internal/bedrock.js +312 -13
  464. package/internal/bedrock.js.map +1 -1
  465. package/internal/bedrock.mjs +307 -13
  466. package/internal/bedrock.mjs.map +1 -1
  467. package/internal/builtin-types.d.mts.map +1 -1
  468. package/internal/builtin-types.d.ts.map +1 -1
  469. package/internal/builtin-types.js +0 -1
  470. package/internal/builtin-types.js.map +1 -1
  471. package/internal/builtin-types.mjs +0 -1
  472. package/internal/builtin-types.mjs.map +1 -1
  473. package/internal/data-residency.d.mts +12 -0
  474. package/internal/data-residency.d.mts.map +1 -0
  475. package/internal/data-residency.d.ts +12 -0
  476. package/internal/data-residency.d.ts.map +1 -0
  477. package/internal/data-residency.js +34 -0
  478. package/internal/data-residency.js.map +1 -0
  479. package/internal/data-residency.mjs +30 -0
  480. package/internal/data-residency.mjs.map +1 -0
  481. package/internal/decoders/line.d.mts +25 -2
  482. package/internal/decoders/line.d.mts.map +1 -1
  483. package/internal/decoders/line.d.ts +25 -2
  484. package/internal/decoders/line.d.ts.map +1 -1
  485. package/internal/decoders/line.js +139 -54
  486. package/internal/decoders/line.js.map +1 -1
  487. package/internal/decoders/line.mjs +140 -55
  488. package/internal/decoders/line.mjs.map +1 -1
  489. package/internal/detect-platform.d.mts.map +1 -1
  490. package/internal/detect-platform.d.ts.map +1 -1
  491. package/internal/detect-platform.js +1 -2
  492. package/internal/detect-platform.js.map +1 -1
  493. package/internal/detect-platform.mjs +1 -2
  494. package/internal/detect-platform.mjs.map +1 -1
  495. package/internal/errors.d.mts.map +1 -1
  496. package/internal/errors.d.ts.map +1 -1
  497. package/internal/errors.js +0 -1
  498. package/internal/errors.js.map +1 -1
  499. package/internal/errors.mjs +0 -1
  500. package/internal/errors.mjs.map +1 -1
  501. package/internal/headers.d.mts.map +1 -1
  502. package/internal/headers.d.ts.map +1 -1
  503. package/internal/headers.js +0 -1
  504. package/internal/headers.js.map +1 -1
  505. package/internal/headers.mjs +0 -1
  506. package/internal/headers.mjs.map +1 -1
  507. package/internal/multipart-encoding.d.mts +8 -0
  508. package/internal/multipart-encoding.d.mts.map +1 -0
  509. package/internal/multipart-encoding.d.ts +8 -0
  510. package/internal/multipart-encoding.d.ts.map +1 -0
  511. package/internal/multipart-encoding.js +51 -0
  512. package/internal/multipart-encoding.js.map +1 -0
  513. package/internal/multipart-encoding.mjs +48 -0
  514. package/internal/multipart-encoding.mjs.map +1 -0
  515. package/internal/parse.d.mts.map +1 -1
  516. package/internal/parse.d.ts.map +1 -1
  517. package/internal/parse.js +23 -3
  518. package/internal/parse.js.map +1 -1
  519. package/internal/parse.mjs +23 -3
  520. package/internal/parse.mjs.map +1 -1
  521. package/internal/provider.d.mts +26 -0
  522. package/internal/provider.d.mts.map +1 -1
  523. package/internal/provider.d.ts +26 -0
  524. package/internal/provider.d.ts.map +1 -1
  525. package/internal/provider.js +11 -0
  526. package/internal/provider.js.map +1 -1
  527. package/internal/provider.mjs +11 -0
  528. package/internal/provider.mjs.map +1 -1
  529. package/internal/qs/formats.d.mts +1 -1
  530. package/internal/qs/formats.d.mts.map +1 -1
  531. package/internal/qs/formats.d.ts +1 -1
  532. package/internal/qs/formats.d.ts.map +1 -1
  533. package/internal/qs/formats.js +1 -2
  534. package/internal/qs/formats.js.map +1 -1
  535. package/internal/qs/formats.mjs +1 -1
  536. package/internal/qs/formats.mjs.map +1 -1
  537. package/internal/qs/stringify.d.mts.map +1 -1
  538. package/internal/qs/stringify.d.ts.map +1 -1
  539. package/internal/qs/stringify.js +57 -51
  540. package/internal/qs/stringify.js.map +1 -1
  541. package/internal/qs/stringify.mjs +57 -51
  542. package/internal/qs/stringify.mjs.map +1 -1
  543. package/internal/qs/types.d.mts +1 -1
  544. package/internal/qs/types.d.mts.map +1 -1
  545. package/internal/qs/types.d.ts +1 -1
  546. package/internal/qs/types.d.ts.map +1 -1
  547. package/internal/qs/utils.d.mts +1 -1
  548. package/internal/qs/utils.d.mts.map +1 -1
  549. package/internal/qs/utils.d.ts +1 -1
  550. package/internal/qs/utils.d.ts.map +1 -1
  551. package/internal/qs/utils.js +356 -50
  552. package/internal/qs/utils.js.map +1 -1
  553. package/internal/qs/utils.mjs +356 -50
  554. package/internal/qs/utils.mjs.map +1 -1
  555. package/internal/request-options.d.mts +7 -0
  556. package/internal/request-options.d.mts.map +1 -1
  557. package/internal/request-options.d.ts +7 -0
  558. package/internal/request-options.d.ts.map +1 -1
  559. package/internal/request-options.js +43 -2
  560. package/internal/request-options.js.map +1 -1
  561. package/internal/request-options.mjs +42 -2
  562. package/internal/request-options.mjs.map +1 -1
  563. package/internal/responses/canonical-output-text.d.mts +16 -0
  564. package/internal/responses/canonical-output-text.d.mts.map +1 -0
  565. package/internal/responses/canonical-output-text.d.ts +16 -0
  566. package/internal/responses/canonical-output-text.d.ts.map +1 -0
  567. package/internal/responses/canonical-output-text.js +123 -0
  568. package/internal/responses/canonical-output-text.js.map +1 -0
  569. package/internal/responses/canonical-output-text.mjs +115 -0
  570. package/internal/responses/canonical-output-text.mjs.map +1 -0
  571. package/internal/responses/output-text-index.d.mts +18 -0
  572. package/internal/responses/output-text-index.d.mts.map +1 -0
  573. package/internal/responses/output-text-index.d.ts +18 -0
  574. package/internal/responses/output-text-index.d.ts.map +1 -0
  575. package/internal/responses/output-text-index.js +77 -0
  576. package/internal/responses/output-text-index.js.map +1 -0
  577. package/internal/responses/output-text-index.mjs +73 -0
  578. package/internal/responses/output-text-index.mjs.map +1 -0
  579. package/internal/responses/response-accumulator.d.mts +11 -0
  580. package/internal/responses/response-accumulator.d.mts.map +1 -0
  581. package/internal/responses/response-accumulator.d.ts +11 -0
  582. package/internal/responses/response-accumulator.d.ts.map +1 -0
  583. package/internal/responses/response-accumulator.js +925 -0
  584. package/internal/responses/response-accumulator.js.map +1 -0
  585. package/internal/responses/response-accumulator.mjs +921 -0
  586. package/internal/responses/response-accumulator.mjs.map +1 -0
  587. package/internal/shim-types.d.mts.map +1 -1
  588. package/internal/shim-types.d.ts.map +1 -1
  589. package/internal/shim-types.js +6 -1
  590. package/internal/shim-types.js.map +1 -1
  591. package/internal/shim-types.mjs +6 -1
  592. package/internal/shim-types.mjs.map +1 -1
  593. package/internal/shims.d.mts.map +1 -1
  594. package/internal/shims.d.ts.map +1 -1
  595. package/internal/shims.js +6 -1
  596. package/internal/shims.js.map +1 -1
  597. package/internal/shims.mjs +6 -1
  598. package/internal/shims.mjs.map +1 -1
  599. package/internal/stream-utils.d.mts +10 -3
  600. package/internal/stream-utils.d.mts.map +1 -1
  601. package/internal/stream-utils.d.ts +10 -3
  602. package/internal/stream-utils.d.ts.map +1 -1
  603. package/internal/stream-utils.js +35 -7
  604. package/internal/stream-utils.js.map +1 -1
  605. package/internal/stream-utils.mjs +35 -7
  606. package/internal/stream-utils.mjs.map +1 -1
  607. package/internal/to-file.d.mts +39 -17
  608. package/internal/to-file.d.mts.map +1 -1
  609. package/internal/to-file.d.ts +39 -17
  610. package/internal/to-file.d.ts.map +1 -1
  611. package/internal/to-file.js +44 -22
  612. package/internal/to-file.js.map +1 -1
  613. package/internal/to-file.mjs +44 -22
  614. package/internal/to-file.mjs.map +1 -1
  615. package/internal/tslib.js +6 -0
  616. package/internal/tslib.mjs +6 -1
  617. package/internal/types.d.mts +4 -4
  618. package/internal/types.d.mts.map +1 -1
  619. package/internal/types.d.ts +4 -4
  620. package/internal/types.d.ts.map +1 -1
  621. package/internal/types.js +0 -1
  622. package/internal/types.js.map +1 -1
  623. package/internal/types.mjs +0 -1
  624. package/internal/types.mjs.map +1 -1
  625. package/internal/uploads.d.mts +84 -14
  626. package/internal/uploads.d.mts.map +1 -1
  627. package/internal/uploads.d.ts +84 -14
  628. package/internal/uploads.d.ts.map +1 -1
  629. package/internal/uploads.js +212 -75
  630. package/internal/uploads.js.map +1 -1
  631. package/internal/uploads.mjs +212 -75
  632. package/internal/uploads.mjs.map +1 -1
  633. package/internal/utils/base64.d.mts.map +1 -1
  634. package/internal/utils/base64.d.ts.map +1 -1
  635. package/internal/utils/base64.js +0 -1
  636. package/internal/utils/base64.js.map +1 -1
  637. package/internal/utils/base64.mjs +0 -1
  638. package/internal/utils/base64.mjs.map +1 -1
  639. package/internal/utils/bytes.d.mts +3 -0
  640. package/internal/utils/bytes.d.mts.map +1 -1
  641. package/internal/utils/bytes.d.ts +3 -0
  642. package/internal/utils/bytes.d.ts.map +1 -1
  643. package/internal/utils/bytes.js +3 -0
  644. package/internal/utils/bytes.js.map +1 -1
  645. package/internal/utils/bytes.mjs +3 -0
  646. package/internal/utils/bytes.mjs.map +1 -1
  647. package/internal/utils/env.d.mts.map +1 -1
  648. package/internal/utils/env.d.ts.map +1 -1
  649. package/internal/utils/env.js +9 -5
  650. package/internal/utils/env.js.map +1 -1
  651. package/internal/utils/env.mjs +9 -5
  652. package/internal/utils/env.mjs.map +1 -1
  653. package/internal/utils/log.d.mts.map +1 -1
  654. package/internal/utils/log.d.ts.map +1 -1
  655. package/internal/utils/log.js +3 -4
  656. package/internal/utils/log.js.map +1 -1
  657. package/internal/utils/log.mjs +3 -4
  658. package/internal/utils/log.mjs.map +1 -1
  659. package/internal/utils/path.d.mts +14 -2
  660. package/internal/utils/path.d.mts.map +1 -1
  661. package/internal/utils/path.d.ts +14 -2
  662. package/internal/utils/path.d.ts.map +1 -1
  663. package/internal/utils/path.js +48 -30
  664. package/internal/utils/path.js.map +1 -1
  665. package/internal/utils/path.mjs +48 -30
  666. package/internal/utils/path.mjs.map +1 -1
  667. package/internal/utils/query.d.mts.map +1 -1
  668. package/internal/utils/query.d.ts.map +1 -1
  669. package/internal/utils/query.js +0 -1
  670. package/internal/utils/query.js.map +1 -1
  671. package/internal/utils/query.mjs +0 -1
  672. package/internal/utils/query.mjs.map +1 -1
  673. package/internal/utils/sleep.d.mts.map +1 -1
  674. package/internal/utils/sleep.d.ts.map +1 -1
  675. package/internal/utils/sleep.js +0 -1
  676. package/internal/utils/sleep.js.map +1 -1
  677. package/internal/utils/sleep.mjs +0 -1
  678. package/internal/utils/sleep.mjs.map +1 -1
  679. package/internal/utils/uuid.d.mts.map +1 -1
  680. package/internal/utils/uuid.d.ts.map +1 -1
  681. package/internal/utils/uuid.js +0 -1
  682. package/internal/utils/uuid.js.map +1 -1
  683. package/internal/utils/uuid.mjs +0 -1
  684. package/internal/utils/uuid.mjs.map +1 -1
  685. package/internal/utils/values.d.mts.map +1 -1
  686. package/internal/utils/values.d.ts.map +1 -1
  687. package/internal/utils/values.js +0 -1
  688. package/internal/utils/values.js.map +1 -1
  689. package/internal/utils/values.mjs +0 -1
  690. package/internal/utils/values.mjs.map +1 -1
  691. package/internal/utils.d.mts.map +1 -1
  692. package/internal/utils.d.ts.map +1 -1
  693. package/internal/utils.js +0 -1
  694. package/internal/utils.js.map +1 -1
  695. package/internal/utils.mjs +0 -1
  696. package/internal/utils.mjs.map +1 -1
  697. package/internal/ws-adapter-browser.d.mts +26 -3
  698. package/internal/ws-adapter-browser.d.mts.map +1 -1
  699. package/internal/ws-adapter-browser.d.ts +26 -3
  700. package/internal/ws-adapter-browser.d.ts.map +1 -1
  701. package/internal/ws-adapter-browser.js +64 -21
  702. package/internal/ws-adapter-browser.js.map +1 -1
  703. package/internal/ws-adapter-browser.mjs +64 -21
  704. package/internal/ws-adapter-browser.mjs.map +1 -1
  705. package/internal/ws-adapter-node.d.mts +18 -3
  706. package/internal/ws-adapter-node.d.mts.map +1 -1
  707. package/internal/ws-adapter-node.d.ts +18 -3
  708. package/internal/ws-adapter-node.d.ts.map +1 -1
  709. package/internal/ws-adapter-node.js +90 -24
  710. package/internal/ws-adapter-node.js.map +1 -1
  711. package/internal/ws-adapter-node.mjs +90 -24
  712. package/internal/ws-adapter-node.mjs.map +1 -1
  713. package/internal/ws-adapter.d.mts +14 -0
  714. package/internal/ws-adapter.d.mts.map +1 -1
  715. package/internal/ws-adapter.d.ts +14 -0
  716. package/internal/ws-adapter.d.ts.map +1 -1
  717. package/internal/ws-adapter.js +4 -0
  718. package/internal/ws-adapter.js.map +1 -1
  719. package/internal/ws-adapter.mjs +4 -0
  720. package/internal/ws-adapter.mjs.map +1 -1
  721. package/internal/ws.d.mts +36 -8
  722. package/internal/ws.d.mts.map +1 -1
  723. package/internal/ws.d.ts +36 -8
  724. package/internal/ws.d.ts.map +1 -1
  725. package/internal/ws.js +116 -47
  726. package/internal/ws.js.map +1 -1
  727. package/internal/ws.mjs +115 -47
  728. package/internal/ws.mjs.map +1 -1
  729. package/lib/AbstractChatCompletionRunner.d.mts +26 -5
  730. package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
  731. package/lib/AbstractChatCompletionRunner.d.ts +26 -5
  732. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  733. package/lib/AbstractChatCompletionRunner.js +89 -39
  734. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  735. package/lib/AbstractChatCompletionRunner.mjs +92 -42
  736. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  737. package/lib/AssistantStream.d.mts +49 -8
  738. package/lib/AssistantStream.d.mts.map +1 -1
  739. package/lib/AssistantStream.d.ts +49 -8
  740. package/lib/AssistantStream.d.ts.map +1 -1
  741. package/lib/AssistantStream.js +388 -227
  742. package/lib/AssistantStream.js.map +1 -1
  743. package/lib/AssistantStream.mjs +389 -228
  744. package/lib/AssistantStream.mjs.map +1 -1
  745. package/lib/ChatCompletionRunner.d.mts +16 -5
  746. package/lib/ChatCompletionRunner.d.mts.map +1 -1
  747. package/lib/ChatCompletionRunner.d.ts +16 -5
  748. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  749. package/lib/ChatCompletionRunner.js +4 -1
  750. package/lib/ChatCompletionRunner.js.map +1 -1
  751. package/lib/ChatCompletionRunner.mjs +5 -2
  752. package/lib/ChatCompletionRunner.mjs.map +1 -1
  753. package/lib/ChatCompletionStream.d.mts +137 -35
  754. package/lib/ChatCompletionStream.d.mts.map +1 -1
  755. package/lib/ChatCompletionStream.d.ts +137 -35
  756. package/lib/ChatCompletionStream.d.ts.map +1 -1
  757. package/lib/ChatCompletionStream.js +1252 -162
  758. package/lib/ChatCompletionStream.js.map +1 -1
  759. package/lib/ChatCompletionStream.mjs +1255 -165
  760. package/lib/ChatCompletionStream.mjs.map +1 -1
  761. package/lib/ChatCompletionStreamingRunner.d.mts +20 -7
  762. package/lib/ChatCompletionStreamingRunner.d.mts.map +1 -1
  763. package/lib/ChatCompletionStreamingRunner.d.ts +20 -7
  764. package/lib/ChatCompletionStreamingRunner.d.ts.map +1 -1
  765. package/lib/ChatCompletionStreamingRunner.js +27 -67
  766. package/lib/ChatCompletionStreamingRunner.js.map +1 -1
  767. package/lib/ChatCompletionStreamingRunner.mjs +28 -68
  768. package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
  769. package/lib/EventEmitter.d.mts +9 -6
  770. package/lib/EventEmitter.d.mts.map +1 -1
  771. package/lib/EventEmitter.d.ts +9 -6
  772. package/lib/EventEmitter.d.ts.map +1 -1
  773. package/lib/EventEmitter.js +89 -20
  774. package/lib/EventEmitter.js.map +1 -1
  775. package/lib/EventEmitter.mjs +90 -21
  776. package/lib/EventEmitter.mjs.map +1 -1
  777. package/lib/EventStream.d.mts +49 -9
  778. package/lib/EventStream.d.mts.map +1 -1
  779. package/lib/EventStream.d.ts +49 -9
  780. package/lib/EventStream.d.ts.map +1 -1
  781. package/lib/EventStream.js +1257 -51
  782. package/lib/EventStream.js.map +1 -1
  783. package/lib/EventStream.mjs +1258 -52
  784. package/lib/EventStream.mjs.map +1 -1
  785. package/lib/ResponsesParser.d.mts +52 -5
  786. package/lib/ResponsesParser.d.mts.map +1 -1
  787. package/lib/ResponsesParser.d.ts +52 -5
  788. package/lib/ResponsesParser.d.ts.map +1 -1
  789. package/lib/ResponsesParser.js +32 -17
  790. package/lib/ResponsesParser.js.map +1 -1
  791. package/lib/ResponsesParser.mjs +33 -18
  792. package/lib/ResponsesParser.mjs.map +1 -1
  793. package/lib/RunnableFunction.d.mts +38 -10
  794. package/lib/RunnableFunction.d.mts.map +1 -1
  795. package/lib/RunnableFunction.d.ts +38 -10
  796. package/lib/RunnableFunction.d.ts.map +1 -1
  797. package/lib/RunnableFunction.js +3 -0
  798. package/lib/RunnableFunction.js.map +1 -1
  799. package/lib/RunnableFunction.mjs +3 -0
  800. package/lib/RunnableFunction.mjs.map +1 -1
  801. package/lib/Util.d.mts +2 -0
  802. package/lib/Util.d.mts.map +1 -1
  803. package/lib/Util.d.ts +2 -0
  804. package/lib/Util.d.ts.map +1 -1
  805. package/lib/Util.js +7 -4
  806. package/lib/Util.js.map +1 -1
  807. package/lib/Util.mjs +7 -4
  808. package/lib/Util.mjs.map +1 -1
  809. package/lib/assistant-run-polling.d.mts +12 -0
  810. package/lib/assistant-run-polling.d.mts.map +1 -0
  811. package/lib/assistant-run-polling.d.ts +12 -0
  812. package/lib/assistant-run-polling.d.ts.map +1 -0
  813. package/lib/assistant-run-polling.js +17 -0
  814. package/lib/assistant-run-polling.js.map +1 -0
  815. package/lib/assistant-run-polling.mjs +14 -0
  816. package/lib/assistant-run-polling.mjs.map +1 -0
  817. package/lib/chatCompletionUtils.d.mts +4 -1
  818. package/lib/chatCompletionUtils.d.mts.map +1 -1
  819. package/lib/chatCompletionUtils.d.ts +4 -1
  820. package/lib/chatCompletionUtils.d.ts.map +1 -1
  821. package/lib/chatCompletionUtils.js +5 -6
  822. package/lib/chatCompletionUtils.js.map +1 -1
  823. package/lib/chatCompletionUtils.mjs +5 -6
  824. package/lib/chatCompletionUtils.mjs.map +1 -1
  825. package/lib/embeddings.d.mts +18 -0
  826. package/lib/embeddings.d.mts.map +1 -0
  827. package/lib/embeddings.d.ts +18 -0
  828. package/lib/embeddings.d.ts.map +1 -0
  829. package/lib/embeddings.js +50 -0
  830. package/lib/embeddings.js.map +1 -0
  831. package/lib/embeddings.mjs +47 -0
  832. package/lib/embeddings.mjs.map +1 -0
  833. package/lib/file-processing.d.mts +10 -0
  834. package/lib/file-processing.d.mts.map +1 -0
  835. package/lib/file-processing.d.ts +10 -0
  836. package/lib/file-processing.d.ts.map +1 -0
  837. package/lib/file-processing.js +30 -0
  838. package/lib/file-processing.js.map +1 -0
  839. package/lib/file-processing.mjs +27 -0
  840. package/lib/file-processing.mjs.map +1 -0
  841. package/lib/jsonschema.d.mts +70 -14
  842. package/lib/jsonschema.d.mts.map +1 -1
  843. package/lib/jsonschema.d.ts +70 -14
  844. package/lib/jsonschema.d.ts.map +1 -1
  845. package/lib/parser.d.mts +97 -6
  846. package/lib/parser.d.mts.map +1 -1
  847. package/lib/parser.d.ts +97 -6
  848. package/lib/parser.d.ts.map +1 -1
  849. package/lib/parser.js +128 -41
  850. package/lib/parser.js.map +1 -1
  851. package/lib/parser.mjs +126 -41
  852. package/lib/parser.mjs.map +1 -1
  853. package/lib/polling.d.mts +20 -0
  854. package/lib/polling.d.mts.map +1 -0
  855. package/lib/polling.d.ts +20 -0
  856. package/lib/polling.d.ts.map +1 -0
  857. package/lib/polling.js +130 -0
  858. package/lib/polling.js.map +1 -0
  859. package/lib/polling.mjs +127 -0
  860. package/lib/polling.mjs.map +1 -0
  861. package/lib/responses/EventTypes.d.mts +7 -2
  862. package/lib/responses/EventTypes.d.mts.map +1 -1
  863. package/lib/responses/EventTypes.d.ts +7 -2
  864. package/lib/responses/EventTypes.d.ts.map +1 -1
  865. package/lib/responses/ResponseAccumulator.d.mts +4 -1
  866. package/lib/responses/ResponseAccumulator.d.mts.map +1 -1
  867. package/lib/responses/ResponseAccumulator.d.ts +4 -1
  868. package/lib/responses/ResponseAccumulator.d.ts.map +1 -1
  869. package/lib/responses/ResponseAccumulator.js +2 -390
  870. package/lib/responses/ResponseAccumulator.js.map +1 -1
  871. package/lib/responses/ResponseAccumulator.mjs +2 -390
  872. package/lib/responses/ResponseAccumulator.mjs.map +1 -1
  873. package/lib/responses/ResponseInputItems.d.mts +1 -0
  874. package/lib/responses/ResponseInputItems.d.mts.map +1 -1
  875. package/lib/responses/ResponseInputItems.d.ts +1 -0
  876. package/lib/responses/ResponseInputItems.d.ts.map +1 -1
  877. package/lib/responses/ResponseInputItems.js.map +1 -1
  878. package/lib/responses/ResponseInputItems.mjs.map +1 -1
  879. package/lib/responses/ResponseStream.d.mts +29 -10
  880. package/lib/responses/ResponseStream.d.mts.map +1 -1
  881. package/lib/responses/ResponseStream.d.ts +29 -10
  882. package/lib/responses/ResponseStream.d.ts.map +1 -1
  883. package/lib/responses/ResponseStream.js +57 -71
  884. package/lib/responses/ResponseStream.js.map +1 -1
  885. package/lib/responses/ResponseStream.mjs +58 -72
  886. package/lib/responses/ResponseStream.mjs.map +1 -1
  887. package/lib/transform.d.mts +21 -0
  888. package/lib/transform.d.mts.map +1 -1
  889. package/lib/transform.d.ts +21 -0
  890. package/lib/transform.d.ts.map +1 -1
  891. package/lib/transform.js +126 -76
  892. package/lib/transform.js.map +1 -1
  893. package/lib/transform.mjs +126 -76
  894. package/lib/transform.mjs.map +1 -1
  895. package/lib/vector-store-polling.d.mts +22 -0
  896. package/lib/vector-store-polling.d.mts.map +1 -0
  897. package/lib/vector-store-polling.d.ts +22 -0
  898. package/lib/vector-store-polling.d.ts.map +1 -0
  899. package/lib/vector-store-polling.js +24 -0
  900. package/lib/vector-store-polling.js.map +1 -0
  901. package/lib/vector-store-polling.mjs +20 -0
  902. package/lib/vector-store-polling.mjs.map +1 -0
  903. package/lib/vector-store-upload.d.mts +17 -0
  904. package/lib/vector-store-upload.d.mts.map +1 -0
  905. package/lib/vector-store-upload.d.ts +17 -0
  906. package/lib/vector-store-upload.d.ts.map +1 -0
  907. package/lib/vector-store-upload.js +37 -0
  908. package/lib/vector-store-upload.js.map +1 -0
  909. package/lib/vector-store-upload.mjs +34 -0
  910. package/lib/vector-store-upload.mjs.map +1 -0
  911. package/lib/webhook-signature.d.mts +15 -0
  912. package/lib/webhook-signature.d.mts.map +1 -0
  913. package/lib/webhook-signature.d.ts +15 -0
  914. package/lib/webhook-signature.d.ts.map +1 -0
  915. package/lib/webhook-signature.js +125 -0
  916. package/lib/webhook-signature.js.map +1 -0
  917. package/lib/webhook-signature.mjs +121 -0
  918. package/lib/webhook-signature.mjs.map +1 -0
  919. package/package.json +23 -3
  920. package/providers/bedrock/aws.d.mts +35 -8
  921. package/providers/bedrock/aws.d.mts.map +1 -1
  922. package/providers/bedrock/aws.d.ts +35 -8
  923. package/providers/bedrock/aws.d.ts.map +1 -1
  924. package/providers/bedrock/aws.js +60 -21
  925. package/providers/bedrock/aws.js.map +1 -1
  926. package/providers/bedrock/aws.mjs +61 -22
  927. package/providers/bedrock/aws.mjs.map +1 -1
  928. package/providers/bedrock.d.mts +17 -2
  929. package/providers/bedrock.d.mts.map +1 -1
  930. package/providers/bedrock.d.ts +17 -2
  931. package/providers/bedrock.d.ts.map +1 -1
  932. package/providers/bedrock.js +19 -2
  933. package/providers/bedrock.js.map +1 -1
  934. package/providers/bedrock.mjs +20 -3
  935. package/providers/bedrock.mjs.map +1 -1
  936. package/realtime/internal-base.d.mts +99 -10
  937. package/realtime/internal-base.d.mts.map +1 -1
  938. package/realtime/internal-base.d.ts +99 -10
  939. package/realtime/internal-base.d.ts.map +1 -1
  940. package/realtime/internal-base.js +94 -29
  941. package/realtime/internal-base.js.map +1 -1
  942. package/realtime/internal-base.mjs +93 -29
  943. package/realtime/internal-base.mjs.map +1 -1
  944. package/realtime/websocket.d.mts +63 -4
  945. package/realtime/websocket.d.mts.map +1 -1
  946. package/realtime/websocket.d.ts +63 -4
  947. package/realtime/websocket.d.ts.map +1 -1
  948. package/realtime/websocket.js +152 -27
  949. package/realtime/websocket.js.map +1 -1
  950. package/realtime/websocket.mjs +153 -28
  951. package/realtime/websocket.mjs.map +1 -1
  952. package/realtime/ws.d.mts +58 -3
  953. package/realtime/ws.d.mts.map +1 -1
  954. package/realtime/ws.d.ts +58 -3
  955. package/realtime/ws.d.ts.map +1 -1
  956. package/realtime/ws.js +72 -8
  957. package/realtime/ws.js.map +1 -1
  958. package/realtime/ws.mjs +73 -9
  959. package/realtime/ws.mjs.map +1 -1
  960. package/resources/admin/admin.js +1 -1
  961. package/resources/admin/admin.js.map +1 -1
  962. package/resources/admin/admin.mjs +1 -1
  963. package/resources/admin/admin.mjs.map +1 -1
  964. package/resources/admin/index.js +1 -1
  965. package/resources/admin/index.js.map +1 -1
  966. package/resources/admin/index.mjs +1 -1
  967. package/resources/admin/index.mjs.map +1 -1
  968. package/resources/admin/organization/admin-api-keys.js +1 -1
  969. package/resources/admin/organization/admin-api-keys.js.map +1 -1
  970. package/resources/admin/organization/admin-api-keys.mjs +1 -1
  971. package/resources/admin/organization/admin-api-keys.mjs.map +1 -1
  972. package/resources/admin/organization/audit-logs.d.mts +2 -2
  973. package/resources/admin/organization/audit-logs.d.mts.map +1 -1
  974. package/resources/admin/organization/audit-logs.d.ts +2 -2
  975. package/resources/admin/organization/audit-logs.d.ts.map +1 -1
  976. package/resources/admin/organization/audit-logs.js +1 -1
  977. package/resources/admin/organization/audit-logs.js.map +1 -1
  978. package/resources/admin/organization/audit-logs.mjs +1 -1
  979. package/resources/admin/organization/audit-logs.mjs.map +1 -1
  980. package/resources/admin/organization/certificates.js +1 -1
  981. package/resources/admin/organization/certificates.js.map +1 -1
  982. package/resources/admin/organization/certificates.mjs +1 -1
  983. package/resources/admin/organization/certificates.mjs.map +1 -1
  984. package/resources/admin/organization/data-retention.js +1 -1
  985. package/resources/admin/organization/data-retention.js.map +1 -1
  986. package/resources/admin/organization/data-retention.mjs +1 -1
  987. package/resources/admin/organization/data-retention.mjs.map +1 -1
  988. package/resources/admin/organization/groups/groups.js +1 -1
  989. package/resources/admin/organization/groups/groups.js.map +1 -1
  990. package/resources/admin/organization/groups/groups.mjs +1 -1
  991. package/resources/admin/organization/groups/groups.mjs.map +1 -1
  992. package/resources/admin/organization/groups/index.js +1 -1
  993. package/resources/admin/organization/groups/index.js.map +1 -1
  994. package/resources/admin/organization/groups/index.mjs +1 -1
  995. package/resources/admin/organization/groups/index.mjs.map +1 -1
  996. package/resources/admin/organization/groups/roles.js +1 -1
  997. package/resources/admin/organization/groups/roles.js.map +1 -1
  998. package/resources/admin/organization/groups/roles.mjs +1 -1
  999. package/resources/admin/organization/groups/roles.mjs.map +1 -1
  1000. package/resources/admin/organization/groups/users.js +1 -1
  1001. package/resources/admin/organization/groups/users.js.map +1 -1
  1002. package/resources/admin/organization/groups/users.mjs +1 -1
  1003. package/resources/admin/organization/groups/users.mjs.map +1 -1
  1004. package/resources/admin/organization/groups.js +1 -1
  1005. package/resources/admin/organization/groups.js.map +1 -1
  1006. package/resources/admin/organization/groups.mjs +1 -1
  1007. package/resources/admin/organization/groups.mjs.map +1 -1
  1008. package/resources/admin/organization/index.d.mts +2 -2
  1009. package/resources/admin/organization/index.d.mts.map +1 -1
  1010. package/resources/admin/organization/index.d.ts +2 -2
  1011. package/resources/admin/organization/index.d.ts.map +1 -1
  1012. package/resources/admin/organization/index.js +1 -1
  1013. package/resources/admin/organization/index.js.map +1 -1
  1014. package/resources/admin/organization/index.mjs +1 -1
  1015. package/resources/admin/organization/index.mjs.map +1 -1
  1016. package/resources/admin/organization/invites.js +1 -1
  1017. package/resources/admin/organization/invites.js.map +1 -1
  1018. package/resources/admin/organization/invites.mjs +1 -1
  1019. package/resources/admin/organization/invites.mjs.map +1 -1
  1020. package/resources/admin/organization/organization.d.mts +4 -4
  1021. package/resources/admin/organization/organization.d.mts.map +1 -1
  1022. package/resources/admin/organization/organization.d.ts +4 -4
  1023. package/resources/admin/organization/organization.d.ts.map +1 -1
  1024. package/resources/admin/organization/organization.js +1 -1
  1025. package/resources/admin/organization/organization.js.map +1 -1
  1026. package/resources/admin/organization/organization.mjs +1 -1
  1027. package/resources/admin/organization/organization.mjs.map +1 -1
  1028. package/resources/admin/organization/projects/api-keys.js +1 -1
  1029. package/resources/admin/organization/projects/api-keys.js.map +1 -1
  1030. package/resources/admin/organization/projects/api-keys.mjs +1 -1
  1031. package/resources/admin/organization/projects/api-keys.mjs.map +1 -1
  1032. package/resources/admin/organization/projects/certificates.js +1 -1
  1033. package/resources/admin/organization/projects/certificates.js.map +1 -1
  1034. package/resources/admin/organization/projects/certificates.mjs +1 -1
  1035. package/resources/admin/organization/projects/certificates.mjs.map +1 -1
  1036. package/resources/admin/organization/projects/data-retention.js +1 -1
  1037. package/resources/admin/organization/projects/data-retention.js.map +1 -1
  1038. package/resources/admin/organization/projects/data-retention.mjs +1 -1
  1039. package/resources/admin/organization/projects/data-retention.mjs.map +1 -1
  1040. package/resources/admin/organization/projects/groups/groups.js +1 -1
  1041. package/resources/admin/organization/projects/groups/groups.js.map +1 -1
  1042. package/resources/admin/organization/projects/groups/groups.mjs +1 -1
  1043. package/resources/admin/organization/projects/groups/groups.mjs.map +1 -1
  1044. package/resources/admin/organization/projects/groups/index.js +1 -1
  1045. package/resources/admin/organization/projects/groups/index.js.map +1 -1
  1046. package/resources/admin/organization/projects/groups/index.mjs +1 -1
  1047. package/resources/admin/organization/projects/groups/index.mjs.map +1 -1
  1048. package/resources/admin/organization/projects/groups/roles.js +1 -1
  1049. package/resources/admin/organization/projects/groups/roles.js.map +1 -1
  1050. package/resources/admin/organization/projects/groups/roles.mjs +1 -1
  1051. package/resources/admin/organization/projects/groups/roles.mjs.map +1 -1
  1052. package/resources/admin/organization/projects/groups.js +1 -1
  1053. package/resources/admin/organization/projects/groups.js.map +1 -1
  1054. package/resources/admin/organization/projects/groups.mjs +1 -1
  1055. package/resources/admin/organization/projects/groups.mjs.map +1 -1
  1056. package/resources/admin/organization/projects/hosted-tool-permissions.js +1 -1
  1057. package/resources/admin/organization/projects/hosted-tool-permissions.js.map +1 -1
  1058. package/resources/admin/organization/projects/hosted-tool-permissions.mjs +1 -1
  1059. package/resources/admin/organization/projects/hosted-tool-permissions.mjs.map +1 -1
  1060. package/resources/admin/organization/projects/index.d.mts +1 -1
  1061. package/resources/admin/organization/projects/index.d.mts.map +1 -1
  1062. package/resources/admin/organization/projects/index.d.ts +1 -1
  1063. package/resources/admin/organization/projects/index.d.ts.map +1 -1
  1064. package/resources/admin/organization/projects/index.js +1 -1
  1065. package/resources/admin/organization/projects/index.js.map +1 -1
  1066. package/resources/admin/organization/projects/index.mjs +1 -1
  1067. package/resources/admin/organization/projects/index.mjs.map +1 -1
  1068. package/resources/admin/organization/projects/model-permissions.js +1 -1
  1069. package/resources/admin/organization/projects/model-permissions.js.map +1 -1
  1070. package/resources/admin/organization/projects/model-permissions.mjs +1 -1
  1071. package/resources/admin/organization/projects/model-permissions.mjs.map +1 -1
  1072. package/resources/admin/organization/projects/projects.d.mts +22 -5
  1073. package/resources/admin/organization/projects/projects.d.mts.map +1 -1
  1074. package/resources/admin/organization/projects/projects.d.ts +22 -5
  1075. package/resources/admin/organization/projects/projects.d.ts.map +1 -1
  1076. package/resources/admin/organization/projects/projects.js +1 -1
  1077. package/resources/admin/organization/projects/projects.js.map +1 -1
  1078. package/resources/admin/organization/projects/projects.mjs +1 -1
  1079. package/resources/admin/organization/projects/projects.mjs.map +1 -1
  1080. package/resources/admin/organization/projects/rate-limits.js +1 -1
  1081. package/resources/admin/organization/projects/rate-limits.js.map +1 -1
  1082. package/resources/admin/organization/projects/rate-limits.mjs +1 -1
  1083. package/resources/admin/organization/projects/rate-limits.mjs.map +1 -1
  1084. package/resources/admin/organization/projects/roles.js +1 -1
  1085. package/resources/admin/organization/projects/roles.js.map +1 -1
  1086. package/resources/admin/organization/projects/roles.mjs +1 -1
  1087. package/resources/admin/organization/projects/roles.mjs.map +1 -1
  1088. package/resources/admin/organization/projects/service-accounts/api-keys.js +1 -1
  1089. package/resources/admin/organization/projects/service-accounts/api-keys.js.map +1 -1
  1090. package/resources/admin/organization/projects/service-accounts/api-keys.mjs +1 -1
  1091. package/resources/admin/organization/projects/service-accounts/api-keys.mjs.map +1 -1
  1092. package/resources/admin/organization/projects/service-accounts/index.js +1 -1
  1093. package/resources/admin/organization/projects/service-accounts/index.js.map +1 -1
  1094. package/resources/admin/organization/projects/service-accounts/index.mjs +1 -1
  1095. package/resources/admin/organization/projects/service-accounts/index.mjs.map +1 -1
  1096. package/resources/admin/organization/projects/service-accounts/service-accounts.js +1 -1
  1097. package/resources/admin/organization/projects/service-accounts/service-accounts.js.map +1 -1
  1098. package/resources/admin/organization/projects/service-accounts/service-accounts.mjs +1 -1
  1099. package/resources/admin/organization/projects/service-accounts/service-accounts.mjs.map +1 -1
  1100. package/resources/admin/organization/projects/service-accounts.js +1 -1
  1101. package/resources/admin/organization/projects/service-accounts.js.map +1 -1
  1102. package/resources/admin/organization/projects/service-accounts.mjs +1 -1
  1103. package/resources/admin/organization/projects/service-accounts.mjs.map +1 -1
  1104. package/resources/admin/organization/projects/spend-alerts.js +1 -1
  1105. package/resources/admin/organization/projects/spend-alerts.js.map +1 -1
  1106. package/resources/admin/organization/projects/spend-alerts.mjs +1 -1
  1107. package/resources/admin/organization/projects/spend-alerts.mjs.map +1 -1
  1108. package/resources/admin/organization/projects/spend-limit.js +1 -1
  1109. package/resources/admin/organization/projects/spend-limit.js.map +1 -1
  1110. package/resources/admin/organization/projects/spend-limit.mjs +1 -1
  1111. package/resources/admin/organization/projects/spend-limit.mjs.map +1 -1
  1112. package/resources/admin/organization/projects/users/index.js +1 -1
  1113. package/resources/admin/organization/projects/users/index.js.map +1 -1
  1114. package/resources/admin/organization/projects/users/index.mjs +1 -1
  1115. package/resources/admin/organization/projects/users/index.mjs.map +1 -1
  1116. package/resources/admin/organization/projects/users/roles.js +1 -1
  1117. package/resources/admin/organization/projects/users/roles.js.map +1 -1
  1118. package/resources/admin/organization/projects/users/roles.mjs +1 -1
  1119. package/resources/admin/organization/projects/users/roles.mjs.map +1 -1
  1120. package/resources/admin/organization/projects/users/users.js +1 -1
  1121. package/resources/admin/organization/projects/users/users.js.map +1 -1
  1122. package/resources/admin/organization/projects/users/users.mjs +1 -1
  1123. package/resources/admin/organization/projects/users/users.mjs.map +1 -1
  1124. package/resources/admin/organization/projects/users.js +1 -1
  1125. package/resources/admin/organization/projects/users.js.map +1 -1
  1126. package/resources/admin/organization/projects/users.mjs +1 -1
  1127. package/resources/admin/organization/projects/users.mjs.map +1 -1
  1128. package/resources/admin/organization/projects.js +1 -1
  1129. package/resources/admin/organization/projects.js.map +1 -1
  1130. package/resources/admin/organization/projects.mjs +1 -1
  1131. package/resources/admin/organization/projects.mjs.map +1 -1
  1132. package/resources/admin/organization/roles.js +1 -1
  1133. package/resources/admin/organization/roles.js.map +1 -1
  1134. package/resources/admin/organization/roles.mjs +1 -1
  1135. package/resources/admin/organization/roles.mjs.map +1 -1
  1136. package/resources/admin/organization/spend-alerts.js +1 -1
  1137. package/resources/admin/organization/spend-alerts.js.map +1 -1
  1138. package/resources/admin/organization/spend-alerts.mjs +1 -1
  1139. package/resources/admin/organization/spend-alerts.mjs.map +1 -1
  1140. package/resources/admin/organization/spend-limit.js +1 -1
  1141. package/resources/admin/organization/spend-limit.js.map +1 -1
  1142. package/resources/admin/organization/spend-limit.mjs +1 -1
  1143. package/resources/admin/organization/spend-limit.mjs.map +1 -1
  1144. package/resources/admin/organization/usage.d.mts +62 -1
  1145. package/resources/admin/organization/usage.d.mts.map +1 -1
  1146. package/resources/admin/organization/usage.d.ts +62 -1
  1147. package/resources/admin/organization/usage.d.ts.map +1 -1
  1148. package/resources/admin/organization/usage.js +1 -1
  1149. package/resources/admin/organization/usage.js.map +1 -1
  1150. package/resources/admin/organization/usage.mjs +1 -1
  1151. package/resources/admin/organization/usage.mjs.map +1 -1
  1152. package/resources/admin/organization/users/index.js +1 -1
  1153. package/resources/admin/organization/users/index.js.map +1 -1
  1154. package/resources/admin/organization/users/index.mjs +1 -1
  1155. package/resources/admin/organization/users/index.mjs.map +1 -1
  1156. package/resources/admin/organization/users/roles.js +1 -1
  1157. package/resources/admin/organization/users/roles.js.map +1 -1
  1158. package/resources/admin/organization/users/roles.mjs +1 -1
  1159. package/resources/admin/organization/users/roles.mjs.map +1 -1
  1160. package/resources/admin/organization/users/users.js +1 -1
  1161. package/resources/admin/organization/users/users.js.map +1 -1
  1162. package/resources/admin/organization/users/users.mjs +1 -1
  1163. package/resources/admin/organization/users/users.mjs.map +1 -1
  1164. package/resources/admin/organization/users.js +1 -1
  1165. package/resources/admin/organization/users.js.map +1 -1
  1166. package/resources/admin/organization/users.mjs +1 -1
  1167. package/resources/admin/organization/users.mjs.map +1 -1
  1168. package/resources/admin/organization.js +1 -1
  1169. package/resources/admin/organization.js.map +1 -1
  1170. package/resources/admin/organization.mjs +1 -1
  1171. package/resources/admin/organization.mjs.map +1 -1
  1172. package/resources/admin.js +1 -1
  1173. package/resources/admin.js.map +1 -1
  1174. package/resources/admin.mjs +1 -1
  1175. package/resources/admin.mjs.map +1 -1
  1176. package/resources/audio/audio.js +1 -1
  1177. package/resources/audio/audio.js.map +1 -1
  1178. package/resources/audio/audio.mjs +1 -1
  1179. package/resources/audio/audio.mjs.map +1 -1
  1180. package/resources/audio/index.js +1 -1
  1181. package/resources/audio/index.js.map +1 -1
  1182. package/resources/audio/index.mjs +1 -1
  1183. package/resources/audio/index.mjs.map +1 -1
  1184. package/resources/audio/speech.js +1 -1
  1185. package/resources/audio/speech.js.map +1 -1
  1186. package/resources/audio/speech.mjs +1 -1
  1187. package/resources/audio/speech.mjs.map +1 -1
  1188. package/resources/audio/transcriptions.d.mts +3 -1
  1189. package/resources/audio/transcriptions.d.mts.map +1 -1
  1190. package/resources/audio/transcriptions.d.ts +3 -1
  1191. package/resources/audio/transcriptions.d.ts.map +1 -1
  1192. package/resources/audio/transcriptions.js +1 -1
  1193. package/resources/audio/transcriptions.js.map +1 -1
  1194. package/resources/audio/transcriptions.mjs +1 -1
  1195. package/resources/audio/transcriptions.mjs.map +1 -1
  1196. package/resources/audio/translations.d.mts +3 -1
  1197. package/resources/audio/translations.d.mts.map +1 -1
  1198. package/resources/audio/translations.d.ts +3 -1
  1199. package/resources/audio/translations.d.ts.map +1 -1
  1200. package/resources/audio/translations.js +1 -1
  1201. package/resources/audio/translations.js.map +1 -1
  1202. package/resources/audio/translations.mjs +1 -1
  1203. package/resources/audio/translations.mjs.map +1 -1
  1204. package/resources/audio.js +1 -1
  1205. package/resources/audio.js.map +1 -1
  1206. package/resources/audio.mjs +1 -1
  1207. package/resources/audio.mjs.map +1 -1
  1208. package/resources/batches.js +1 -1
  1209. package/resources/batches.js.map +1 -1
  1210. package/resources/batches.mjs +1 -1
  1211. package/resources/batches.mjs.map +1 -1
  1212. package/resources/beta/assistants.js +1 -1
  1213. package/resources/beta/assistants.js.map +1 -1
  1214. package/resources/beta/assistants.mjs +1 -1
  1215. package/resources/beta/assistants.mjs.map +1 -1
  1216. package/resources/beta/beta.d.mts +2 -2
  1217. package/resources/beta/beta.d.mts.map +1 -1
  1218. package/resources/beta/beta.d.ts +2 -2
  1219. package/resources/beta/beta.d.ts.map +1 -1
  1220. package/resources/beta/beta.js +1 -1
  1221. package/resources/beta/beta.js.map +1 -1
  1222. package/resources/beta/beta.mjs +1 -1
  1223. package/resources/beta/beta.mjs.map +1 -1
  1224. package/resources/beta/chatkit/chatkit.js +1 -1
  1225. package/resources/beta/chatkit/chatkit.js.map +1 -1
  1226. package/resources/beta/chatkit/chatkit.mjs +1 -1
  1227. package/resources/beta/chatkit/chatkit.mjs.map +1 -1
  1228. package/resources/beta/chatkit/index.js +1 -1
  1229. package/resources/beta/chatkit/index.js.map +1 -1
  1230. package/resources/beta/chatkit/index.mjs +1 -1
  1231. package/resources/beta/chatkit/index.mjs.map +1 -1
  1232. package/resources/beta/chatkit/sessions.js +1 -1
  1233. package/resources/beta/chatkit/sessions.js.map +1 -1
  1234. package/resources/beta/chatkit/sessions.mjs +1 -1
  1235. package/resources/beta/chatkit/sessions.mjs.map +1 -1
  1236. package/resources/beta/chatkit/threads.js +1 -1
  1237. package/resources/beta/chatkit/threads.js.map +1 -1
  1238. package/resources/beta/chatkit/threads.mjs +1 -1
  1239. package/resources/beta/chatkit/threads.mjs.map +1 -1
  1240. package/resources/beta/chatkit.js +1 -1
  1241. package/resources/beta/chatkit.js.map +1 -1
  1242. package/resources/beta/chatkit.mjs +1 -1
  1243. package/resources/beta/chatkit.mjs.map +1 -1
  1244. package/resources/beta/index.d.mts +1 -1
  1245. package/resources/beta/index.d.mts.map +1 -1
  1246. package/resources/beta/index.d.ts +1 -1
  1247. package/resources/beta/index.d.ts.map +1 -1
  1248. package/resources/beta/index.js +1 -1
  1249. package/resources/beta/index.js.map +1 -1
  1250. package/resources/beta/index.mjs +1 -1
  1251. package/resources/beta/index.mjs.map +1 -1
  1252. package/resources/beta/realtime/index.d.mts.map +1 -1
  1253. package/resources/beta/realtime/index.d.ts.map +1 -1
  1254. package/resources/beta/realtime/index.js +0 -1
  1255. package/resources/beta/realtime/index.js.map +1 -1
  1256. package/resources/beta/realtime/index.mjs +0 -1
  1257. package/resources/beta/realtime/index.mjs.map +1 -1
  1258. package/resources/beta/realtime/realtime.d.mts.map +1 -1
  1259. package/resources/beta/realtime/realtime.d.ts.map +1 -1
  1260. package/resources/beta/realtime/realtime.js +0 -1
  1261. package/resources/beta/realtime/realtime.js.map +1 -1
  1262. package/resources/beta/realtime/realtime.mjs +0 -1
  1263. package/resources/beta/realtime/realtime.mjs.map +1 -1
  1264. package/resources/beta/realtime/sessions.d.mts.map +1 -1
  1265. package/resources/beta/realtime/sessions.d.ts.map +1 -1
  1266. package/resources/beta/realtime/sessions.js +0 -1
  1267. package/resources/beta/realtime/sessions.js.map +1 -1
  1268. package/resources/beta/realtime/sessions.mjs +0 -1
  1269. package/resources/beta/realtime/sessions.mjs.map +1 -1
  1270. package/resources/beta/realtime/transcription-sessions.d.mts.map +1 -1
  1271. package/resources/beta/realtime/transcription-sessions.d.ts.map +1 -1
  1272. package/resources/beta/realtime/transcription-sessions.js +0 -1
  1273. package/resources/beta/realtime/transcription-sessions.js.map +1 -1
  1274. package/resources/beta/realtime/transcription-sessions.mjs +0 -1
  1275. package/resources/beta/realtime/transcription-sessions.mjs.map +1 -1
  1276. package/resources/beta/realtime.d.mts.map +1 -1
  1277. package/resources/beta/realtime.d.ts.map +1 -1
  1278. package/resources/beta/realtime.js +0 -1
  1279. package/resources/beta/realtime.js.map +1 -1
  1280. package/resources/beta/realtime.mjs +0 -1
  1281. package/resources/beta/realtime.mjs.map +1 -1
  1282. package/resources/beta/responses/index.d.mts +1 -1
  1283. package/resources/beta/responses/index.d.mts.map +1 -1
  1284. package/resources/beta/responses/index.d.ts +1 -1
  1285. package/resources/beta/responses/index.d.ts.map +1 -1
  1286. package/resources/beta/responses/index.js +1 -1
  1287. package/resources/beta/responses/index.js.map +1 -1
  1288. package/resources/beta/responses/index.mjs +1 -1
  1289. package/resources/beta/responses/index.mjs.map +1 -1
  1290. package/resources/beta/responses/input-items.js +1 -1
  1291. package/resources/beta/responses/input-items.js.map +1 -1
  1292. package/resources/beta/responses/input-items.mjs +1 -1
  1293. package/resources/beta/responses/input-items.mjs.map +1 -1
  1294. package/resources/beta/responses/input-tokens.js +1 -1
  1295. package/resources/beta/responses/input-tokens.js.map +1 -1
  1296. package/resources/beta/responses/input-tokens.mjs +1 -1
  1297. package/resources/beta/responses/input-tokens.mjs.map +1 -1
  1298. package/resources/beta/responses/internal-base.d.mts +6 -3
  1299. package/resources/beta/responses/internal-base.d.mts.map +1 -1
  1300. package/resources/beta/responses/internal-base.d.ts +6 -3
  1301. package/resources/beta/responses/internal-base.d.ts.map +1 -1
  1302. package/resources/beta/responses/internal-base.js +5 -2
  1303. package/resources/beta/responses/internal-base.js.map +1 -1
  1304. package/resources/beta/responses/internal-base.mjs +5 -2
  1305. package/resources/beta/responses/internal-base.mjs.map +1 -1
  1306. package/resources/beta/responses/responses.d.mts +1243 -132
  1307. package/resources/beta/responses/responses.d.mts.map +1 -1
  1308. package/resources/beta/responses/responses.d.ts +1243 -132
  1309. package/resources/beta/responses/responses.d.ts.map +1 -1
  1310. package/resources/beta/responses/responses.js +1 -1
  1311. package/resources/beta/responses/responses.js.map +1 -1
  1312. package/resources/beta/responses/responses.mjs +1 -1
  1313. package/resources/beta/responses/responses.mjs.map +1 -1
  1314. package/resources/beta/responses/ws-base.js +1 -1
  1315. package/resources/beta/responses/ws-base.js.map +1 -1
  1316. package/resources/beta/responses/ws-base.mjs +1 -1
  1317. package/resources/beta/responses/ws-base.mjs.map +1 -1
  1318. package/resources/beta/responses/ws.js +1 -1
  1319. package/resources/beta/responses/ws.js.map +1 -1
  1320. package/resources/beta/responses/ws.mjs +1 -1
  1321. package/resources/beta/responses/ws.mjs.map +1 -1
  1322. package/resources/beta/responses.js +1 -1
  1323. package/resources/beta/responses.js.map +1 -1
  1324. package/resources/beta/responses.mjs +1 -1
  1325. package/resources/beta/responses.mjs.map +1 -1
  1326. package/resources/beta/threads/index.js +1 -1
  1327. package/resources/beta/threads/index.js.map +1 -1
  1328. package/resources/beta/threads/index.mjs +1 -1
  1329. package/resources/beta/threads/index.mjs.map +1 -1
  1330. package/resources/beta/threads/messages.js +1 -1
  1331. package/resources/beta/threads/messages.js.map +1 -1
  1332. package/resources/beta/threads/messages.mjs +1 -1
  1333. package/resources/beta/threads/messages.mjs.map +1 -1
  1334. package/resources/beta/threads/runs/index.d.mts +1 -1
  1335. package/resources/beta/threads/runs/index.d.mts.map +1 -1
  1336. package/resources/beta/threads/runs/index.d.ts +1 -1
  1337. package/resources/beta/threads/runs/index.d.ts.map +1 -1
  1338. package/resources/beta/threads/runs/index.js +1 -1
  1339. package/resources/beta/threads/runs/index.js.map +1 -1
  1340. package/resources/beta/threads/runs/index.mjs +1 -1
  1341. package/resources/beta/threads/runs/index.mjs.map +1 -1
  1342. package/resources/beta/threads/runs/runs.d.mts.map +1 -1
  1343. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  1344. package/resources/beta/threads/runs/runs.js +3 -44
  1345. package/resources/beta/threads/runs/runs.js.map +1 -1
  1346. package/resources/beta/threads/runs/runs.mjs +3 -44
  1347. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  1348. package/resources/beta/threads/runs/steps.js +1 -1
  1349. package/resources/beta/threads/runs/steps.js.map +1 -1
  1350. package/resources/beta/threads/runs/steps.mjs +1 -1
  1351. package/resources/beta/threads/runs/steps.mjs.map +1 -1
  1352. package/resources/beta/threads/runs.js +1 -1
  1353. package/resources/beta/threads/runs.js.map +1 -1
  1354. package/resources/beta/threads/runs.mjs +1 -1
  1355. package/resources/beta/threads/runs.mjs.map +1 -1
  1356. package/resources/beta/threads/threads.js +1 -1
  1357. package/resources/beta/threads/threads.js.map +1 -1
  1358. package/resources/beta/threads/threads.mjs +1 -1
  1359. package/resources/beta/threads/threads.mjs.map +1 -1
  1360. package/resources/beta/threads.js +1 -1
  1361. package/resources/beta/threads.js.map +1 -1
  1362. package/resources/beta/threads.mjs +1 -1
  1363. package/resources/beta/threads.mjs.map +1 -1
  1364. package/resources/beta.js +1 -1
  1365. package/resources/beta.js.map +1 -1
  1366. package/resources/beta.mjs +1 -1
  1367. package/resources/beta.mjs.map +1 -1
  1368. package/resources/chat/chat.js +1 -1
  1369. package/resources/chat/chat.js.map +1 -1
  1370. package/resources/chat/chat.mjs +1 -1
  1371. package/resources/chat/chat.mjs.map +1 -1
  1372. package/resources/chat/completions/completions.d.mts +36 -3
  1373. package/resources/chat/completions/completions.d.mts.map +1 -1
  1374. package/resources/chat/completions/completions.d.ts +36 -3
  1375. package/resources/chat/completions/completions.d.ts.map +1 -1
  1376. package/resources/chat/completions/completions.js +2 -5
  1377. package/resources/chat/completions/completions.js.map +1 -1
  1378. package/resources/chat/completions/completions.mjs +2 -5
  1379. package/resources/chat/completions/completions.mjs.map +1 -1
  1380. package/resources/chat/completions/index.js +1 -1
  1381. package/resources/chat/completions/index.js.map +1 -1
  1382. package/resources/chat/completions/index.mjs +1 -1
  1383. package/resources/chat/completions/index.mjs.map +1 -1
  1384. package/resources/chat/completions/messages.js +1 -1
  1385. package/resources/chat/completions/messages.js.map +1 -1
  1386. package/resources/chat/completions/messages.mjs +1 -1
  1387. package/resources/chat/completions/messages.mjs.map +1 -1
  1388. package/resources/chat/completions.js +1 -1
  1389. package/resources/chat/completions.js.map +1 -1
  1390. package/resources/chat/completions.mjs +1 -1
  1391. package/resources/chat/completions.mjs.map +1 -1
  1392. package/resources/chat/index.js +1 -1
  1393. package/resources/chat/index.js.map +1 -1
  1394. package/resources/chat/index.mjs +1 -1
  1395. package/resources/chat/index.mjs.map +1 -1
  1396. package/resources/chat.js +1 -1
  1397. package/resources/chat.js.map +1 -1
  1398. package/resources/chat.mjs +1 -1
  1399. package/resources/chat.mjs.map +1 -1
  1400. package/resources/completions.d.mts +12 -0
  1401. package/resources/completions.d.mts.map +1 -1
  1402. package/resources/completions.d.ts +12 -0
  1403. package/resources/completions.d.ts.map +1 -1
  1404. package/resources/completions.js +1 -1
  1405. package/resources/completions.js.map +1 -1
  1406. package/resources/completions.mjs +1 -1
  1407. package/resources/completions.mjs.map +1 -1
  1408. package/resources/containers/containers.js +1 -1
  1409. package/resources/containers/containers.js.map +1 -1
  1410. package/resources/containers/containers.mjs +1 -1
  1411. package/resources/containers/containers.mjs.map +1 -1
  1412. package/resources/containers/files/content.js +1 -1
  1413. package/resources/containers/files/content.js.map +1 -1
  1414. package/resources/containers/files/content.mjs +1 -1
  1415. package/resources/containers/files/content.mjs.map +1 -1
  1416. package/resources/containers/files/files.js +1 -1
  1417. package/resources/containers/files/files.js.map +1 -1
  1418. package/resources/containers/files/files.mjs +1 -1
  1419. package/resources/containers/files/files.mjs.map +1 -1
  1420. package/resources/containers/files/index.js +1 -1
  1421. package/resources/containers/files/index.js.map +1 -1
  1422. package/resources/containers/files/index.mjs +1 -1
  1423. package/resources/containers/files/index.mjs.map +1 -1
  1424. package/resources/containers/files.js +1 -1
  1425. package/resources/containers/files.js.map +1 -1
  1426. package/resources/containers/files.mjs +1 -1
  1427. package/resources/containers/files.mjs.map +1 -1
  1428. package/resources/containers/index.js +1 -1
  1429. package/resources/containers/index.js.map +1 -1
  1430. package/resources/containers/index.mjs +1 -1
  1431. package/resources/containers/index.mjs.map +1 -1
  1432. package/resources/containers.js +1 -1
  1433. package/resources/containers.js.map +1 -1
  1434. package/resources/containers.mjs +1 -1
  1435. package/resources/containers.mjs.map +1 -1
  1436. package/resources/content-provenance-checks.js +1 -1
  1437. package/resources/content-provenance-checks.js.map +1 -1
  1438. package/resources/content-provenance-checks.mjs +1 -1
  1439. package/resources/content-provenance-checks.mjs.map +1 -1
  1440. package/resources/conversations/conversations.d.mts +1 -1
  1441. package/resources/conversations/conversations.d.mts.map +1 -1
  1442. package/resources/conversations/conversations.d.ts +1 -1
  1443. package/resources/conversations/conversations.d.ts.map +1 -1
  1444. package/resources/conversations/conversations.js +1 -1
  1445. package/resources/conversations/conversations.js.map +1 -1
  1446. package/resources/conversations/conversations.mjs +1 -1
  1447. package/resources/conversations/conversations.mjs.map +1 -1
  1448. package/resources/conversations/index.js +1 -1
  1449. package/resources/conversations/index.js.map +1 -1
  1450. package/resources/conversations/index.mjs +1 -1
  1451. package/resources/conversations/index.mjs.map +1 -1
  1452. package/resources/conversations/items.d.mts +1 -1
  1453. package/resources/conversations/items.d.mts.map +1 -1
  1454. package/resources/conversations/items.d.ts +1 -1
  1455. package/resources/conversations/items.d.ts.map +1 -1
  1456. package/resources/conversations/items.js +1 -1
  1457. package/resources/conversations/items.js.map +1 -1
  1458. package/resources/conversations/items.mjs +1 -1
  1459. package/resources/conversations/items.mjs.map +1 -1
  1460. package/resources/conversations.js +1 -1
  1461. package/resources/conversations.js.map +1 -1
  1462. package/resources/conversations.mjs +1 -1
  1463. package/resources/conversations.mjs.map +1 -1
  1464. package/resources/embeddings.d.mts +9 -0
  1465. package/resources/embeddings.d.mts.map +1 -1
  1466. package/resources/embeddings.d.ts +9 -0
  1467. package/resources/embeddings.d.ts.map +1 -1
  1468. package/resources/embeddings.js +3 -47
  1469. package/resources/embeddings.js.map +1 -1
  1470. package/resources/embeddings.mjs +3 -47
  1471. package/resources/embeddings.mjs.map +1 -1
  1472. package/resources/evals/evals.js +1 -1
  1473. package/resources/evals/evals.js.map +1 -1
  1474. package/resources/evals/evals.mjs +1 -1
  1475. package/resources/evals/evals.mjs.map +1 -1
  1476. package/resources/evals/index.js +1 -1
  1477. package/resources/evals/index.js.map +1 -1
  1478. package/resources/evals/index.mjs +1 -1
  1479. package/resources/evals/index.mjs.map +1 -1
  1480. package/resources/evals/runs/index.js +1 -1
  1481. package/resources/evals/runs/index.js.map +1 -1
  1482. package/resources/evals/runs/index.mjs +1 -1
  1483. package/resources/evals/runs/index.mjs.map +1 -1
  1484. package/resources/evals/runs/output-items.js +1 -1
  1485. package/resources/evals/runs/output-items.js.map +1 -1
  1486. package/resources/evals/runs/output-items.mjs +1 -1
  1487. package/resources/evals/runs/output-items.mjs.map +1 -1
  1488. package/resources/evals/runs/runs.js +1 -1
  1489. package/resources/evals/runs/runs.js.map +1 -1
  1490. package/resources/evals/runs/runs.mjs +1 -1
  1491. package/resources/evals/runs/runs.mjs.map +1 -1
  1492. package/resources/evals/runs.js +1 -1
  1493. package/resources/evals/runs.js.map +1 -1
  1494. package/resources/evals/runs.mjs +1 -1
  1495. package/resources/evals/runs.mjs.map +1 -1
  1496. package/resources/evals.js +1 -1
  1497. package/resources/evals.js.map +1 -1
  1498. package/resources/evals.mjs +1 -1
  1499. package/resources/evals.mjs.map +1 -1
  1500. package/resources/files.d.mts +1 -1
  1501. package/resources/files.d.mts.map +1 -1
  1502. package/resources/files.d.ts +1 -1
  1503. package/resources/files.d.ts.map +1 -1
  1504. package/resources/files.js +4 -17
  1505. package/resources/files.js.map +1 -1
  1506. package/resources/files.mjs +4 -17
  1507. package/resources/files.mjs.map +1 -1
  1508. package/resources/fine-tuning/alpha/alpha.js +1 -1
  1509. package/resources/fine-tuning/alpha/alpha.js.map +1 -1
  1510. package/resources/fine-tuning/alpha/alpha.mjs +1 -1
  1511. package/resources/fine-tuning/alpha/alpha.mjs.map +1 -1
  1512. package/resources/fine-tuning/alpha/graders.js +1 -1
  1513. package/resources/fine-tuning/alpha/graders.js.map +1 -1
  1514. package/resources/fine-tuning/alpha/graders.mjs +1 -1
  1515. package/resources/fine-tuning/alpha/graders.mjs.map +1 -1
  1516. package/resources/fine-tuning/alpha/index.js +1 -1
  1517. package/resources/fine-tuning/alpha/index.js.map +1 -1
  1518. package/resources/fine-tuning/alpha/index.mjs +1 -1
  1519. package/resources/fine-tuning/alpha/index.mjs.map +1 -1
  1520. package/resources/fine-tuning/alpha.js +1 -1
  1521. package/resources/fine-tuning/alpha.js.map +1 -1
  1522. package/resources/fine-tuning/alpha.mjs +1 -1
  1523. package/resources/fine-tuning/alpha.mjs.map +1 -1
  1524. package/resources/fine-tuning/checkpoints/checkpoints.js +1 -1
  1525. package/resources/fine-tuning/checkpoints/checkpoints.js.map +1 -1
  1526. package/resources/fine-tuning/checkpoints/checkpoints.mjs +1 -1
  1527. package/resources/fine-tuning/checkpoints/checkpoints.mjs.map +1 -1
  1528. package/resources/fine-tuning/checkpoints/index.js +1 -1
  1529. package/resources/fine-tuning/checkpoints/index.js.map +1 -1
  1530. package/resources/fine-tuning/checkpoints/index.mjs +1 -1
  1531. package/resources/fine-tuning/checkpoints/index.mjs.map +1 -1
  1532. package/resources/fine-tuning/checkpoints/permissions.js +1 -1
  1533. package/resources/fine-tuning/checkpoints/permissions.js.map +1 -1
  1534. package/resources/fine-tuning/checkpoints/permissions.mjs +1 -1
  1535. package/resources/fine-tuning/checkpoints/permissions.mjs.map +1 -1
  1536. package/resources/fine-tuning/checkpoints.js +1 -1
  1537. package/resources/fine-tuning/checkpoints.js.map +1 -1
  1538. package/resources/fine-tuning/checkpoints.mjs +1 -1
  1539. package/resources/fine-tuning/checkpoints.mjs.map +1 -1
  1540. package/resources/fine-tuning/fine-tuning.js +1 -1
  1541. package/resources/fine-tuning/fine-tuning.js.map +1 -1
  1542. package/resources/fine-tuning/fine-tuning.mjs +1 -1
  1543. package/resources/fine-tuning/fine-tuning.mjs.map +1 -1
  1544. package/resources/fine-tuning/index.js +1 -1
  1545. package/resources/fine-tuning/index.js.map +1 -1
  1546. package/resources/fine-tuning/index.mjs +1 -1
  1547. package/resources/fine-tuning/index.mjs.map +1 -1
  1548. package/resources/fine-tuning/jobs/checkpoints.js +1 -1
  1549. package/resources/fine-tuning/jobs/checkpoints.js.map +1 -1
  1550. package/resources/fine-tuning/jobs/checkpoints.mjs +1 -1
  1551. package/resources/fine-tuning/jobs/checkpoints.mjs.map +1 -1
  1552. package/resources/fine-tuning/jobs/index.js +1 -1
  1553. package/resources/fine-tuning/jobs/index.js.map +1 -1
  1554. package/resources/fine-tuning/jobs/index.mjs +1 -1
  1555. package/resources/fine-tuning/jobs/index.mjs.map +1 -1
  1556. package/resources/fine-tuning/jobs/jobs.js +1 -1
  1557. package/resources/fine-tuning/jobs/jobs.js.map +1 -1
  1558. package/resources/fine-tuning/jobs/jobs.mjs +1 -1
  1559. package/resources/fine-tuning/jobs/jobs.mjs.map +1 -1
  1560. package/resources/fine-tuning/jobs.js +1 -1
  1561. package/resources/fine-tuning/jobs.js.map +1 -1
  1562. package/resources/fine-tuning/jobs.mjs +1 -1
  1563. package/resources/fine-tuning/jobs.mjs.map +1 -1
  1564. package/resources/fine-tuning/methods.js +1 -1
  1565. package/resources/fine-tuning/methods.js.map +1 -1
  1566. package/resources/fine-tuning/methods.mjs +1 -1
  1567. package/resources/fine-tuning/methods.mjs.map +1 -1
  1568. package/resources/fine-tuning.js +1 -1
  1569. package/resources/fine-tuning.js.map +1 -1
  1570. package/resources/fine-tuning.mjs +1 -1
  1571. package/resources/fine-tuning.mjs.map +1 -1
  1572. package/resources/graders/grader-models.js +1 -1
  1573. package/resources/graders/grader-models.js.map +1 -1
  1574. package/resources/graders/grader-models.mjs +1 -1
  1575. package/resources/graders/grader-models.mjs.map +1 -1
  1576. package/resources/graders/graders.js +1 -1
  1577. package/resources/graders/graders.js.map +1 -1
  1578. package/resources/graders/graders.mjs +1 -1
  1579. package/resources/graders/graders.mjs.map +1 -1
  1580. package/resources/graders/index.js +1 -1
  1581. package/resources/graders/index.js.map +1 -1
  1582. package/resources/graders/index.mjs +1 -1
  1583. package/resources/graders/index.mjs.map +1 -1
  1584. package/resources/graders.js +1 -1
  1585. package/resources/graders.js.map +1 -1
  1586. package/resources/graders.mjs +1 -1
  1587. package/resources/graders.mjs.map +1 -1
  1588. package/resources/images.d.mts +12 -22
  1589. package/resources/images.d.mts.map +1 -1
  1590. package/resources/images.d.ts +12 -22
  1591. package/resources/images.d.ts.map +1 -1
  1592. package/resources/images.js +8 -2
  1593. package/resources/images.js.map +1 -1
  1594. package/resources/images.mjs +8 -2
  1595. package/resources/images.mjs.map +1 -1
  1596. package/resources/index.js +1 -1
  1597. package/resources/index.js.map +1 -1
  1598. package/resources/index.mjs +1 -1
  1599. package/resources/index.mjs.map +1 -1
  1600. package/resources/models.d.mts +4 -0
  1601. package/resources/models.d.mts.map +1 -1
  1602. package/resources/models.d.ts +4 -0
  1603. package/resources/models.d.ts.map +1 -1
  1604. package/resources/models.js +1 -1
  1605. package/resources/models.js.map +1 -1
  1606. package/resources/models.mjs +1 -1
  1607. package/resources/models.mjs.map +1 -1
  1608. package/resources/moderations.js +1 -1
  1609. package/resources/moderations.js.map +1 -1
  1610. package/resources/moderations.mjs +1 -1
  1611. package/resources/moderations.mjs.map +1 -1
  1612. package/resources/realtime/calls.d.mts +23 -1
  1613. package/resources/realtime/calls.d.mts.map +1 -1
  1614. package/resources/realtime/calls.d.ts +23 -1
  1615. package/resources/realtime/calls.d.ts.map +1 -1
  1616. package/resources/realtime/calls.js +25 -1
  1617. package/resources/realtime/calls.js.map +1 -1
  1618. package/resources/realtime/calls.mjs +25 -1
  1619. package/resources/realtime/calls.mjs.map +1 -1
  1620. package/resources/realtime/client-secrets.js +1 -1
  1621. package/resources/realtime/client-secrets.js.map +1 -1
  1622. package/resources/realtime/client-secrets.mjs +1 -1
  1623. package/resources/realtime/client-secrets.mjs.map +1 -1
  1624. package/resources/realtime/index.d.mts +1 -1
  1625. package/resources/realtime/index.d.mts.map +1 -1
  1626. package/resources/realtime/index.d.ts +1 -1
  1627. package/resources/realtime/index.d.ts.map +1 -1
  1628. package/resources/realtime/index.js +1 -1
  1629. package/resources/realtime/index.js.map +1 -1
  1630. package/resources/realtime/index.mjs +2 -2
  1631. package/resources/realtime/index.mjs.map +1 -1
  1632. package/resources/realtime/realtime.d.mts +5 -4
  1633. package/resources/realtime/realtime.d.mts.map +1 -1
  1634. package/resources/realtime/realtime.d.ts +5 -4
  1635. package/resources/realtime/realtime.d.ts.map +1 -1
  1636. package/resources/realtime/realtime.js +1 -1
  1637. package/resources/realtime/realtime.js.map +1 -1
  1638. package/resources/realtime/realtime.mjs +1 -1
  1639. package/resources/realtime/realtime.mjs.map +1 -1
  1640. package/resources/realtime.js +1 -1
  1641. package/resources/realtime.js.map +1 -1
  1642. package/resources/realtime.mjs +1 -1
  1643. package/resources/realtime.mjs.map +1 -1
  1644. package/resources/responses/index.js +1 -1
  1645. package/resources/responses/index.js.map +1 -1
  1646. package/resources/responses/index.mjs +1 -1
  1647. package/resources/responses/index.mjs.map +1 -1
  1648. package/resources/responses/input-items.js +1 -1
  1649. package/resources/responses/input-items.js.map +1 -1
  1650. package/resources/responses/input-items.mjs +1 -1
  1651. package/resources/responses/input-items.mjs.map +1 -1
  1652. package/resources/responses/input-tokens.js +1 -1
  1653. package/resources/responses/input-tokens.js.map +1 -1
  1654. package/resources/responses/input-tokens.mjs +1 -1
  1655. package/resources/responses/input-tokens.mjs.map +1 -1
  1656. package/resources/responses/internal-base.d.mts +6 -3
  1657. package/resources/responses/internal-base.d.mts.map +1 -1
  1658. package/resources/responses/internal-base.d.ts +6 -3
  1659. package/resources/responses/internal-base.d.ts.map +1 -1
  1660. package/resources/responses/internal-base.js +5 -2
  1661. package/resources/responses/internal-base.js.map +1 -1
  1662. package/resources/responses/internal-base.mjs +5 -2
  1663. package/resources/responses/internal-base.mjs.map +1 -1
  1664. package/resources/responses/responses.d.mts +1059 -32
  1665. package/resources/responses/responses.d.mts.map +1 -1
  1666. package/resources/responses/responses.d.ts +1059 -32
  1667. package/resources/responses/responses.d.ts.map +1 -1
  1668. package/resources/responses/responses.js +1 -1
  1669. package/resources/responses/responses.js.map +1 -1
  1670. package/resources/responses/responses.mjs +1 -1
  1671. package/resources/responses/responses.mjs.map +1 -1
  1672. package/resources/responses/ws-base.js +1 -1
  1673. package/resources/responses/ws-base.js.map +1 -1
  1674. package/resources/responses/ws-base.mjs +1 -1
  1675. package/resources/responses/ws-base.mjs.map +1 -1
  1676. package/resources/responses/ws.js +1 -1
  1677. package/resources/responses/ws.js.map +1 -1
  1678. package/resources/responses/ws.mjs +1 -1
  1679. package/resources/responses/ws.mjs.map +1 -1
  1680. package/resources/responses.js +1 -1
  1681. package/resources/responses.js.map +1 -1
  1682. package/resources/responses.mjs +1 -1
  1683. package/resources/responses.mjs.map +1 -1
  1684. package/resources/shared.d.mts +3 -3
  1685. package/resources/shared.d.mts.map +1 -1
  1686. package/resources/shared.d.ts +3 -3
  1687. package/resources/shared.d.ts.map +1 -1
  1688. package/resources/shared.js +1 -1
  1689. package/resources/shared.js.map +1 -1
  1690. package/resources/shared.mjs +1 -1
  1691. package/resources/shared.mjs.map +1 -1
  1692. package/resources/skills/content.js +1 -1
  1693. package/resources/skills/content.js.map +1 -1
  1694. package/resources/skills/content.mjs +1 -1
  1695. package/resources/skills/content.mjs.map +1 -1
  1696. package/resources/skills/index.js +1 -1
  1697. package/resources/skills/index.js.map +1 -1
  1698. package/resources/skills/index.mjs +1 -1
  1699. package/resources/skills/index.mjs.map +1 -1
  1700. package/resources/skills/skills.d.mts.map +1 -1
  1701. package/resources/skills/skills.d.ts.map +1 -1
  1702. package/resources/skills/skills.js +4 -2
  1703. package/resources/skills/skills.js.map +1 -1
  1704. package/resources/skills/skills.mjs +4 -2
  1705. package/resources/skills/skills.mjs.map +1 -1
  1706. package/resources/skills/versions/content.js +1 -1
  1707. package/resources/skills/versions/content.js.map +1 -1
  1708. package/resources/skills/versions/content.mjs +1 -1
  1709. package/resources/skills/versions/content.mjs.map +1 -1
  1710. package/resources/skills/versions/index.js +1 -1
  1711. package/resources/skills/versions/index.js.map +1 -1
  1712. package/resources/skills/versions/index.mjs +1 -1
  1713. package/resources/skills/versions/index.mjs.map +1 -1
  1714. package/resources/skills/versions/versions.d.mts.map +1 -1
  1715. package/resources/skills/versions/versions.d.ts.map +1 -1
  1716. package/resources/skills/versions/versions.js +4 -2
  1717. package/resources/skills/versions/versions.js.map +1 -1
  1718. package/resources/skills/versions/versions.mjs +4 -2
  1719. package/resources/skills/versions/versions.mjs.map +1 -1
  1720. package/resources/skills/versions.js +1 -1
  1721. package/resources/skills/versions.js.map +1 -1
  1722. package/resources/skills/versions.mjs +1 -1
  1723. package/resources/skills/versions.mjs.map +1 -1
  1724. package/resources/skills.js +1 -1
  1725. package/resources/skills.js.map +1 -1
  1726. package/resources/skills.mjs +1 -1
  1727. package/resources/skills.mjs.map +1 -1
  1728. package/resources/uploads/index.js +1 -1
  1729. package/resources/uploads/index.js.map +1 -1
  1730. package/resources/uploads/index.mjs +1 -1
  1731. package/resources/uploads/index.mjs.map +1 -1
  1732. package/resources/uploads/parts.js +1 -1
  1733. package/resources/uploads/parts.js.map +1 -1
  1734. package/resources/uploads/parts.mjs +1 -1
  1735. package/resources/uploads/parts.mjs.map +1 -1
  1736. package/resources/uploads/uploads.js +1 -1
  1737. package/resources/uploads/uploads.js.map +1 -1
  1738. package/resources/uploads/uploads.mjs +1 -1
  1739. package/resources/uploads/uploads.mjs.map +1 -1
  1740. package/resources/uploads.js +1 -1
  1741. package/resources/uploads.js.map +1 -1
  1742. package/resources/uploads.mjs +1 -1
  1743. package/resources/uploads.mjs.map +1 -1
  1744. package/resources/vector-stores/file-batches.d.mts.map +1 -1
  1745. package/resources/vector-stores/file-batches.d.ts.map +1 -1
  1746. package/resources/vector-stores/file-batches.js +6 -63
  1747. package/resources/vector-stores/file-batches.js.map +1 -1
  1748. package/resources/vector-stores/file-batches.mjs +6 -63
  1749. package/resources/vector-stores/file-batches.mjs.map +1 -1
  1750. package/resources/vector-stores/files.d.mts +1 -1
  1751. package/resources/vector-stores/files.d.mts.map +1 -1
  1752. package/resources/vector-stores/files.d.ts +1 -1
  1753. package/resources/vector-stores/files.d.ts.map +1 -1
  1754. package/resources/vector-stores/files.js +3 -36
  1755. package/resources/vector-stores/files.js.map +1 -1
  1756. package/resources/vector-stores/files.mjs +3 -36
  1757. package/resources/vector-stores/files.mjs.map +1 -1
  1758. package/resources/vector-stores/index.js +1 -1
  1759. package/resources/vector-stores/index.js.map +1 -1
  1760. package/resources/vector-stores/index.mjs +1 -1
  1761. package/resources/vector-stores/index.mjs.map +1 -1
  1762. package/resources/vector-stores/vector-stores.js +1 -1
  1763. package/resources/vector-stores/vector-stores.js.map +1 -1
  1764. package/resources/vector-stores/vector-stores.mjs +1 -1
  1765. package/resources/vector-stores/vector-stores.mjs.map +1 -1
  1766. package/resources/vector-stores.js +1 -1
  1767. package/resources/vector-stores.js.map +1 -1
  1768. package/resources/vector-stores.mjs +1 -1
  1769. package/resources/vector-stores.mjs.map +1 -1
  1770. package/resources/videos.d.mts +23 -0
  1771. package/resources/videos.d.mts.map +1 -1
  1772. package/resources/videos.d.ts +23 -0
  1773. package/resources/videos.d.ts.map +1 -1
  1774. package/resources/videos.js +24 -1
  1775. package/resources/videos.js.map +1 -1
  1776. package/resources/videos.mjs +24 -1
  1777. package/resources/videos.mjs.map +1 -1
  1778. package/resources/webhooks/index.js +1 -1
  1779. package/resources/webhooks/index.js.map +1 -1
  1780. package/resources/webhooks/index.mjs +1 -1
  1781. package/resources/webhooks/index.mjs.map +1 -1
  1782. package/resources/webhooks/webhooks.d.mts.map +1 -1
  1783. package/resources/webhooks/webhooks.d.ts.map +1 -1
  1784. package/resources/webhooks/webhooks.js +6 -43
  1785. package/resources/webhooks/webhooks.js.map +1 -1
  1786. package/resources/webhooks/webhooks.mjs +6 -43
  1787. package/resources/webhooks/webhooks.mjs.map +1 -1
  1788. package/resources/webhooks.js +1 -1
  1789. package/resources/webhooks.js.map +1 -1
  1790. package/resources/webhooks.mjs +1 -1
  1791. package/resources/webhooks.mjs.map +1 -1
  1792. package/src/_vendor/partial-json-parser/parser.ts +63 -33
  1793. package/src/_vendor/zod-to-json-schema/Options.ts +30 -18
  1794. package/src/_vendor/zod-to-json-schema/Refs.ts +7 -6
  1795. package/src/_vendor/zod-to-json-schema/errorMessages.ts +5 -3
  1796. package/src/_vendor/zod-to-json-schema/index.ts +3 -1
  1797. package/src/_vendor/zod-to-json-schema/parseDef.ts +150 -64
  1798. package/src/_vendor/zod-to-json-schema/parsers/array.ts +8 -5
  1799. package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +18 -12
  1800. package/src/_vendor/zod-to-json-schema/parsers/branded.ts +2 -2
  1801. package/src/_vendor/zod-to-json-schema/parsers/catch.ts +4 -5
  1802. package/src/_vendor/zod-to-json-schema/parsers/date.ts +16 -10
  1803. package/src/_vendor/zod-to-json-schema/parsers/default.ts +4 -3
  1804. package/src/_vendor/zod-to-json-schema/parsers/effects.ts +4 -3
  1805. package/src/_vendor/zod-to-json-schema/parsers/enum.ts +1 -1
  1806. package/src/_vendor/zod-to-json-schema/parsers/intersection.ts +12 -9
  1807. package/src/_vendor/zod-to-json-schema/parsers/literal.ts +11 -2
  1808. package/src/_vendor/zod-to-json-schema/parsers/map.ts +6 -4
  1809. package/src/_vendor/zod-to-json-schema/parsers/nativeEnum.ts +10 -11
  1810. package/src/_vendor/zod-to-json-schema/parsers/null.ts +3 -3
  1811. package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +8 -5
  1812. package/src/_vendor/zod-to-json-schema/parsers/number.ts +15 -8
  1813. package/src/_vendor/zod-to-json-schema/parsers/object.ts +57 -54
  1814. package/src/_vendor/zod-to-json-schema/parsers/optional.ts +6 -5
  1815. package/src/_vendor/zod-to-json-schema/parsers/pipeline.ts +5 -4
  1816. package/src/_vendor/zod-to-json-schema/parsers/promise.ts +4 -3
  1817. package/src/_vendor/zod-to-json-schema/parsers/readonly.ts +4 -5
  1818. package/src/_vendor/zod-to-json-schema/parsers/record.ts +20 -19
  1819. package/src/_vendor/zod-to-json-schema/parsers/set.ts +6 -4
  1820. package/src/_vendor/zod-to-json-schema/parsers/string.ts +60 -36
  1821. package/src/_vendor/zod-to-json-schema/parsers/tuple.ts +18 -18
  1822. package/src/_vendor/zod-to-json-schema/parsers/union.ts +48 -33
  1823. package/src/_vendor/zod-to-json-schema/util.ts +10 -6
  1824. package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +119 -45
  1825. package/src/auth/index.ts +6 -1
  1826. package/src/auth/subject-token-providers.ts +267 -12
  1827. package/src/auth/types.ts +42 -5
  1828. package/src/auth/workload-identity-auth.ts +164 -22
  1829. package/src/auth/x509-transport.ts +49 -0
  1830. package/src/azure.ts +81 -26
  1831. package/src/bedrock.ts +93 -9
  1832. package/src/beta/realtime/internal-base.ts +94 -15
  1833. package/src/beta/realtime/websocket.ts +237 -44
  1834. package/src/beta/realtime/ws.ts +124 -23
  1835. package/src/client.ts +760 -104
  1836. package/src/core/EventEmitter.ts +136 -24
  1837. package/src/core/api-promise.ts +0 -2
  1838. package/src/core/error.ts +6 -8
  1839. package/src/core/pagination.ts +3 -5
  1840. package/src/core/resource.ts +0 -2
  1841. package/src/core/streaming.ts +216 -83
  1842. package/src/helpers/audio.ts +177 -31
  1843. package/src/helpers/standard-schema.ts +294 -57
  1844. package/src/helpers/zod-v3-strict-schema.ts +514 -0
  1845. package/src/helpers/zod.ts +151 -41
  1846. package/src/index.ts +2 -4
  1847. package/src/internal/assistant-stream-delta.ts +434 -0
  1848. package/src/internal/auth/x509-token-exchange.ts +310 -0
  1849. package/src/internal/auth/x509-transport-capability.ts +219 -0
  1850. package/src/internal/auth/x509-transport-registry.ts +118 -0
  1851. package/src/internal/auth/x509-transport-state-browser.ts +36 -0
  1852. package/src/internal/auth/x509-transport-state.cts +36 -0
  1853. package/src/internal/auth/x509-workload-identity-auth.ts +958 -0
  1854. package/src/internal/bedrock.ts +410 -18
  1855. package/src/internal/builtin-types.ts +0 -2
  1856. package/src/internal/data-residency.ts +44 -0
  1857. package/src/internal/decoders/line.ts +144 -61
  1858. package/src/internal/detect-platform.ts +1 -3
  1859. package/src/internal/errors.ts +0 -2
  1860. package/src/internal/headers.ts +0 -2
  1861. package/src/internal/multipart-encoding.ts +53 -0
  1862. package/src/internal/parse.ts +31 -8
  1863. package/src/internal/provider.ts +29 -0
  1864. package/src/internal/qs/formats.ts +1 -1
  1865. package/src/internal/qs/stringify.ts +54 -53
  1866. package/src/internal/qs/types.ts +1 -1
  1867. package/src/internal/qs/utils.ts +432 -54
  1868. package/src/internal/request-options.ts +52 -3
  1869. package/src/internal/responses/canonical-output-text.ts +160 -0
  1870. package/src/internal/responses/output-text-index.ts +84 -0
  1871. package/src/internal/responses/response-accumulator.ts +1232 -0
  1872. package/src/internal/shim-types.ts +3 -4
  1873. package/src/internal/shims.ts +0 -2
  1874. package/src/internal/stream-utils.ts +37 -5
  1875. package/src/internal/to-file.ts +87 -33
  1876. package/src/internal/types.ts +21 -29
  1877. package/src/internal/uploads.ts +323 -86
  1878. package/src/internal/utils/base64.ts +0 -2
  1879. package/src/internal/utils/bytes.ts +5 -0
  1880. package/src/internal/utils/env.ts +9 -7
  1881. package/src/internal/utils/log.ts +8 -12
  1882. package/src/internal/utils/path.ts +51 -32
  1883. package/src/internal/utils/query.ts +0 -2
  1884. package/src/internal/utils/sleep.ts +0 -2
  1885. package/src/internal/utils/uuid.ts +0 -2
  1886. package/src/internal/utils/values.ts +0 -2
  1887. package/src/internal/utils.ts +0 -2
  1888. package/src/internal/ws-adapter-browser.ts +81 -24
  1889. package/src/internal/ws-adapter-node.ts +105 -26
  1890. package/src/internal/ws-adapter.ts +23 -0
  1891. package/src/internal/ws.ts +153 -50
  1892. package/src/lib/.keep +2 -2
  1893. package/src/lib/AbstractChatCompletionRunner.ts +140 -62
  1894. package/src/lib/AssistantStream.ts +498 -239
  1895. package/src/lib/ChatCompletionRunner.ts +24 -16
  1896. package/src/lib/ChatCompletionStream.ts +1783 -249
  1897. package/src/lib/ChatCompletionStreamingRunner.ts +54 -94
  1898. package/src/lib/EventEmitter.ts +127 -27
  1899. package/src/lib/EventStream.ts +1704 -62
  1900. package/src/lib/ResponsesParser.ts +95 -40
  1901. package/src/lib/RunnableFunction.ts +62 -32
  1902. package/src/lib/Util.ts +7 -5
  1903. package/src/lib/assistant-run-polling.ts +27 -0
  1904. package/src/lib/chatCompletionUtils.ts +9 -10
  1905. package/src/lib/embeddings.ts +65 -0
  1906. package/src/lib/file-processing.ts +36 -0
  1907. package/src/lib/jsonschema.ts +74 -34
  1908. package/src/lib/parser.ts +197 -61
  1909. package/src/lib/polling.ts +144 -0
  1910. package/src/lib/responses/EventTypes.ts +16 -1
  1911. package/src/lib/responses/ResponseAccumulator.ts +8 -402
  1912. package/src/lib/responses/ResponseInputItems.ts +1 -0
  1913. package/src/lib/responses/ResponseStream.ts +105 -91
  1914. package/src/lib/transform.ts +160 -108
  1915. package/src/lib/vector-store-polling.ts +46 -0
  1916. package/src/lib/vector-store-upload.ts +53 -0
  1917. package/src/lib/webhook-signature.ts +164 -0
  1918. package/src/providers/bedrock/aws.ts +114 -41
  1919. package/src/providers/bedrock.ts +22 -4
  1920. package/src/realtime/internal-base.ts +206 -41
  1921. package/src/realtime/websocket.ts +226 -41
  1922. package/src/realtime/ws.ts +112 -18
  1923. package/src/resources/admin/admin.ts +1 -1
  1924. package/src/resources/admin/index.ts +1 -1
  1925. package/src/resources/admin/organization/admin-api-keys.ts +1 -1
  1926. package/src/resources/admin/organization/audit-logs.ts +5 -1
  1927. package/src/resources/admin/organization/certificates.ts +1 -1
  1928. package/src/resources/admin/organization/data-retention.ts +1 -1
  1929. package/src/resources/admin/organization/groups/groups.ts +1 -1
  1930. package/src/resources/admin/organization/groups/index.ts +1 -1
  1931. package/src/resources/admin/organization/groups/roles.ts +1 -1
  1932. package/src/resources/admin/organization/groups/users.ts +1 -1
  1933. package/src/resources/admin/organization/groups.ts +1 -1
  1934. package/src/resources/admin/organization/index.ts +3 -1
  1935. package/src/resources/admin/organization/invites.ts +1 -1
  1936. package/src/resources/admin/organization/organization.ts +5 -1
  1937. package/src/resources/admin/organization/projects/api-keys.ts +1 -1
  1938. package/src/resources/admin/organization/projects/certificates.ts +1 -1
  1939. package/src/resources/admin/organization/projects/data-retention.ts +1 -1
  1940. package/src/resources/admin/organization/projects/groups/groups.ts +1 -1
  1941. package/src/resources/admin/organization/projects/groups/index.ts +1 -1
  1942. package/src/resources/admin/organization/projects/groups/roles.ts +1 -1
  1943. package/src/resources/admin/organization/projects/groups.ts +1 -1
  1944. package/src/resources/admin/organization/projects/hosted-tool-permissions.ts +1 -1
  1945. package/src/resources/admin/organization/projects/index.ts +2 -1
  1946. package/src/resources/admin/organization/projects/model-permissions.ts +1 -1
  1947. package/src/resources/admin/organization/projects/projects.ts +38 -5
  1948. package/src/resources/admin/organization/projects/rate-limits.ts +1 -1
  1949. package/src/resources/admin/organization/projects/roles.ts +1 -1
  1950. package/src/resources/admin/organization/projects/service-accounts/api-keys.ts +1 -1
  1951. package/src/resources/admin/organization/projects/service-accounts/index.ts +1 -1
  1952. package/src/resources/admin/organization/projects/service-accounts/service-accounts.ts +1 -1
  1953. package/src/resources/admin/organization/projects/service-accounts.ts +1 -1
  1954. package/src/resources/admin/organization/projects/spend-alerts.ts +1 -1
  1955. package/src/resources/admin/organization/projects/spend-limit.ts +1 -1
  1956. package/src/resources/admin/organization/projects/users/index.ts +1 -1
  1957. package/src/resources/admin/organization/projects/users/roles.ts +1 -1
  1958. package/src/resources/admin/organization/projects/users/users.ts +1 -1
  1959. package/src/resources/admin/organization/projects/users.ts +1 -1
  1960. package/src/resources/admin/organization/projects.ts +1 -1
  1961. package/src/resources/admin/organization/roles.ts +1 -1
  1962. package/src/resources/admin/organization/spend-alerts.ts +1 -1
  1963. package/src/resources/admin/organization/spend-limit.ts +1 -1
  1964. package/src/resources/admin/organization/usage.ts +84 -1
  1965. package/src/resources/admin/organization/users/index.ts +1 -1
  1966. package/src/resources/admin/organization/users/roles.ts +1 -1
  1967. package/src/resources/admin/organization/users/users.ts +1 -1
  1968. package/src/resources/admin/organization/users.ts +1 -1
  1969. package/src/resources/admin/organization.ts +1 -1
  1970. package/src/resources/admin.ts +1 -1
  1971. package/src/resources/audio/audio.ts +1 -1
  1972. package/src/resources/audio/index.ts +1 -1
  1973. package/src/resources/audio/speech.ts +1 -1
  1974. package/src/resources/audio/transcriptions.ts +4 -2
  1975. package/src/resources/audio/translations.ts +4 -2
  1976. package/src/resources/audio.ts +1 -1
  1977. package/src/resources/batches.ts +1 -1
  1978. package/src/resources/beta/assistants.ts +1 -1
  1979. package/src/resources/beta/beta.ts +17 -1
  1980. package/src/resources/beta/chatkit/chatkit.ts +1 -1
  1981. package/src/resources/beta/chatkit/index.ts +1 -1
  1982. package/src/resources/beta/chatkit/sessions.ts +1 -1
  1983. package/src/resources/beta/chatkit/threads.ts +1 -1
  1984. package/src/resources/beta/chatkit.ts +1 -1
  1985. package/src/resources/beta/index.ts +9 -1
  1986. package/src/resources/beta/realtime/index.ts +0 -2
  1987. package/src/resources/beta/realtime/realtime.ts +0 -2
  1988. package/src/resources/beta/realtime/sessions.ts +0 -2
  1989. package/src/resources/beta/realtime/transcription-sessions.ts +0 -2
  1990. package/src/resources/beta/realtime.ts +0 -2
  1991. package/src/resources/beta/responses/index.ts +9 -1
  1992. package/src/resources/beta/responses/input-items.ts +1 -1
  1993. package/src/resources/beta/responses/input-tokens.ts +1 -1
  1994. package/src/resources/beta/responses/internal-base.ts +11 -10
  1995. package/src/resources/beta/responses/responses.ts +2276 -956
  1996. package/src/resources/beta/responses/ws-base.ts +1 -1
  1997. package/src/resources/beta/responses/ws.ts +1 -1
  1998. package/src/resources/beta/responses.ts +1 -1
  1999. package/src/resources/beta/threads/index.ts +1 -1
  2000. package/src/resources/beta/threads/messages.ts +1 -1
  2001. package/src/resources/beta/threads/runs/index.ts +2 -2
  2002. package/src/resources/beta/threads/runs/runs.ts +3 -46
  2003. package/src/resources/beta/threads/runs/steps.ts +1 -1
  2004. package/src/resources/beta/threads/runs.ts +1 -1
  2005. package/src/resources/beta/threads/threads.ts +1 -1
  2006. package/src/resources/beta/threads.ts +1 -1
  2007. package/src/resources/beta.ts +1 -1
  2008. package/src/resources/chat/chat.ts +1 -1
  2009. package/src/resources/chat/completions/completions.ts +46 -8
  2010. package/src/resources/chat/completions/index.ts +1 -1
  2011. package/src/resources/chat/completions/messages.ts +1 -1
  2012. package/src/resources/chat/completions.ts +1 -1
  2013. package/src/resources/chat/index.ts +1 -1
  2014. package/src/resources/chat.ts +1 -1
  2015. package/src/resources/completions.ts +16 -1
  2016. package/src/resources/containers/containers.ts +1 -1
  2017. package/src/resources/containers/files/content.ts +1 -1
  2018. package/src/resources/containers/files/files.ts +1 -1
  2019. package/src/resources/containers/files/index.ts +1 -1
  2020. package/src/resources/containers/files.ts +1 -1
  2021. package/src/resources/containers/index.ts +1 -1
  2022. package/src/resources/containers.ts +1 -1
  2023. package/src/resources/content-provenance-checks.ts +1 -1
  2024. package/src/resources/conversations/conversations.ts +2 -2
  2025. package/src/resources/conversations/index.ts +1 -1
  2026. package/src/resources/conversations/items.ts +2 -2
  2027. package/src/resources/conversations.ts +1 -1
  2028. package/src/resources/embeddings.ts +16 -43
  2029. package/src/resources/evals/evals.ts +1 -1
  2030. package/src/resources/evals/index.ts +1 -1
  2031. package/src/resources/evals/runs/index.ts +1 -1
  2032. package/src/resources/evals/runs/output-items.ts +1 -1
  2033. package/src/resources/evals/runs/runs.ts +1 -1
  2034. package/src/resources/evals/runs.ts +1 -1
  2035. package/src/resources/evals.ts +1 -1
  2036. package/src/resources/files.ts +4 -21
  2037. package/src/resources/fine-tuning/alpha/alpha.ts +1 -1
  2038. package/src/resources/fine-tuning/alpha/graders.ts +1 -1
  2039. package/src/resources/fine-tuning/alpha/index.ts +1 -1
  2040. package/src/resources/fine-tuning/alpha.ts +1 -1
  2041. package/src/resources/fine-tuning/checkpoints/checkpoints.ts +1 -1
  2042. package/src/resources/fine-tuning/checkpoints/index.ts +1 -1
  2043. package/src/resources/fine-tuning/checkpoints/permissions.ts +1 -1
  2044. package/src/resources/fine-tuning/checkpoints.ts +1 -1
  2045. package/src/resources/fine-tuning/fine-tuning.ts +1 -1
  2046. package/src/resources/fine-tuning/index.ts +1 -1
  2047. package/src/resources/fine-tuning/jobs/checkpoints.ts +1 -1
  2048. package/src/resources/fine-tuning/jobs/index.ts +1 -1
  2049. package/src/resources/fine-tuning/jobs/jobs.ts +1 -1
  2050. package/src/resources/fine-tuning/jobs.ts +1 -1
  2051. package/src/resources/fine-tuning/methods.ts +1 -1
  2052. package/src/resources/fine-tuning.ts +1 -1
  2053. package/src/resources/graders/grader-models.ts +1 -1
  2054. package/src/resources/graders/graders.ts +1 -1
  2055. package/src/resources/graders/index.ts +1 -1
  2056. package/src/resources/graders.ts +1 -1
  2057. package/src/resources/images.ts +20 -24
  2058. package/src/resources/index.ts +1 -1
  2059. package/src/resources/models.ts +6 -1
  2060. package/src/resources/moderations.ts +1 -1
  2061. package/src/resources/realtime/api.md +1 -0
  2062. package/src/resources/realtime/calls.ts +47 -1
  2063. package/src/resources/realtime/client-secrets.ts +1 -1
  2064. package/src/resources/realtime/index.ts +8 -2
  2065. package/src/resources/realtime/realtime.ts +6 -4
  2066. package/src/resources/realtime.ts +1 -1
  2067. package/src/resources/responses/api.md +8 -0
  2068. package/src/resources/responses/index.ts +1 -1
  2069. package/src/resources/responses/input-items.ts +1 -1
  2070. package/src/resources/responses/input-tokens.ts +1 -1
  2071. package/src/resources/responses/internal-base.ts +11 -10
  2072. package/src/resources/responses/responses.ts +1530 -332
  2073. package/src/resources/responses/ws-base.ts +1 -1
  2074. package/src/resources/responses/ws.ts +1 -1
  2075. package/src/resources/responses.ts +1 -1
  2076. package/src/resources/shared.ts +14 -3
  2077. package/src/resources/skills/content.ts +1 -1
  2078. package/src/resources/skills/index.ts +1 -1
  2079. package/src/resources/skills/skills.ts +4 -2
  2080. package/src/resources/skills/versions/content.ts +1 -1
  2081. package/src/resources/skills/versions/index.ts +1 -1
  2082. package/src/resources/skills/versions/versions.ts +4 -2
  2083. package/src/resources/skills/versions.ts +1 -1
  2084. package/src/resources/skills.ts +1 -1
  2085. package/src/resources/uploads/index.ts +1 -1
  2086. package/src/resources/uploads/parts.ts +1 -1
  2087. package/src/resources/uploads/uploads.ts +1 -1
  2088. package/src/resources/uploads.ts +1 -1
  2089. package/src/resources/vector-stores/file-batches.ts +13 -78
  2090. package/src/resources/vector-stores/files.ts +4 -44
  2091. package/src/resources/vector-stores/index.ts +1 -1
  2092. package/src/resources/vector-stores/vector-stores.ts +1 -1
  2093. package/src/resources/vector-stores.ts +1 -1
  2094. package/src/resources/videos.ts +24 -1
  2095. package/src/resources/webhooks/index.ts +1 -1
  2096. package/src/resources/webhooks/webhooks.ts +6 -65
  2097. package/src/resources/webhooks.ts +1 -1
  2098. package/src/tsconfig.dist-src.d.ts +29 -0
  2099. package/src/tsconfig.json +6 -3
  2100. package/src/version.ts +2 -1
  2101. package/version.d.mts +2 -1
  2102. package/version.d.mts.map +1 -1
  2103. package/version.d.ts +2 -1
  2104. package/version.d.ts.map +1 -1
  2105. package/version.js +2 -1
  2106. package/version.js.map +1 -1
  2107. package/version.mjs +2 -1
  2108. package/version.mjs.map +1 -1
@@ -1,128 +1,192 @@
1
- import { partialParse } from '../_vendor/partial-json-parser/parser';
1
+ import { MalformedJSON, partialParse } from '../_vendor/partial-json-parser/parser';
2
2
  import {
3
3
  APIUserAbortError,
4
4
  ContentFilterFinishReasonError,
5
5
  LengthFinishReasonError,
6
6
  OpenAIError,
7
7
  } from '../error';
8
- import OpenAI from '../index';
9
- import { RequestOptions } from '../internal/request-options';
10
- import { type ReadableStream } from '../internal/shim-types';
8
+ import type OpenAI from '../index';
9
+ import { observeJSONRequestBody, type RequestOptions } from '../internal/request-options';
10
+ import type { ReadableStream } from '../internal/shim-types';
11
11
  import { uuid4 } from '../internal/utils/uuid';
12
+ import { hasOwn } from '../internal/utils/values';
12
13
  import {
13
- AutoParseableResponseFormat,
14
14
  hasAutoParseableInput,
15
- isAutoParsableResponseFormat,
16
15
  isAutoParsableTool,
17
16
  isChatCompletionFunctionTool,
17
+ isParseableResponseFormat,
18
18
  maybeParseChatCompletion,
19
+ parseResponseFormatContent,
19
20
  shouldParseToolCall,
20
21
  } from '../lib/parser';
21
- import { ChatCompletionFunctionTool, ParsedChatCompletion } from '../resources/chat/completions';
22
- import {
23
- type ChatCompletionAudio,
22
+ import type { ChatCompletionFunctionTool, ParsedChatCompletion } from '../resources/chat/completions';
23
+ import type {
24
+ ChatCompletionAudio,
25
+ ChatCompletion,
26
+ ChatCompletionChunk,
27
+ ChatCompletionCreateParams,
28
+ ChatCompletionCreateParamsBase,
29
+ ChatCompletionCreateParamsStreaming,
30
+ ChatCompletionMessageParam,
31
+ ChatCompletionMessageToolCall,
32
+ ChatCompletionRole,
24
33
  ChatCompletionTokenLogprob,
25
- type ChatCompletion,
26
- type ChatCompletionChunk,
27
- type ChatCompletionCreateParams,
28
- type ChatCompletionCreateParamsBase,
29
- type ChatCompletionCreateParamsStreaming,
30
- type ChatCompletionMessageParam,
31
- type ChatCompletionRole,
32
34
  } from '../resources/chat/completions/completions';
33
35
  import { Stream } from '../streaming';
34
- import {
35
- AbstractChatCompletionRunner,
36
- type AbstractChatCompletionRunnerEvents,
37
- } from './AbstractChatCompletionRunner';
36
+ import { AbstractChatCompletionRunner } from './AbstractChatCompletionRunner';
37
+ import type { AbstractChatCompletionRunnerEvents } from './AbstractChatCompletionRunner';
38
+
39
+ function parseStructuredStreamingJSON(content: string): unknown {
40
+ try {
41
+ return partialParse(content);
42
+ } catch (error) {
43
+ if (error instanceof MalformedJSON || error instanceof SyntaxError) {
44
+ return parseResponseFormatContent({ type: 'json_schema', $parseRaw: undefined }, content);
45
+ }
38
46
 
47
+ throw error;
48
+ }
49
+ }
50
+
51
+ /** An incremental assistant-text event and its accumulated state. */
39
52
  export interface ContentDeltaEvent {
53
+ /** The new text received in this chunk. */
40
54
  delta: string;
55
+ /** All assistant text received for this choice, including `delta`. */
41
56
  snapshot: string;
57
+ /** The partially parsed structured output when an auto-parseable response format is supplied. */
42
58
  parsed: unknown | null;
43
59
  }
44
60
 
61
+ /** The completed assistant-text content and its fully parsed structured value. */
45
62
  export interface ContentDoneEvent<ParsedT = null> {
63
+ /** The complete assistant text for the finished choice. */
46
64
  content: string;
65
+ /** The fully parsed structured output, or `null` when no parser was supplied. */
47
66
  parsed: ParsedT | null;
48
67
  }
49
68
 
69
+ /** An incremental refusal-text event and its accumulated state. */
50
70
  export interface RefusalDeltaEvent {
71
+ /** The new refusal text received in this chunk. */
51
72
  delta: string;
73
+ /** All refusal text received for this choice, including `delta`. */
52
74
  snapshot: string;
53
75
  }
54
76
 
77
+ /** The complete refusal text emitted when the refusal finishes. */
55
78
  export interface RefusalDoneEvent {
79
+ /** The model's complete refusal message. */
56
80
  refusal: string;
57
81
  }
58
82
 
83
+ /** An incremental function-tool argument event and its accumulated JSON state. */
59
84
  export interface FunctionToolCallArgumentsDeltaEvent {
85
+ /** The name of the function being called. */
60
86
  name: string;
61
87
 
88
+ /** The position of this tool call within the assistant message. */
62
89
  index: number;
63
90
 
91
+ /** The complete argument JSON received so far, including `arguments_delta`. */
64
92
  arguments: string;
65
93
 
94
+ /** The partially parsed arguments when the matching tool supports parsing. */
66
95
  parsed_arguments: unknown;
67
96
 
97
+ /** The new argument JSON fragment received in this chunk. */
68
98
  arguments_delta: string;
69
99
  }
70
100
 
101
+ /** The final raw and parsed arguments for a completed function-tool call. */
71
102
  export interface FunctionToolCallArgumentsDoneEvent {
103
+ /** The name of the function being called. */
72
104
  name: string;
73
105
 
106
+ /** The position of this tool call within the assistant message. */
74
107
  index: number;
75
108
 
109
+ /** The complete JSON argument string produced for the tool call. */
76
110
  arguments: string;
77
111
 
112
+ /** The fully parsed arguments when the matching tool supports parsing. */
78
113
  parsed_arguments: unknown;
79
114
  }
80
115
 
116
+ /** Newly received assistant-content token probabilities and their accumulated snapshot. */
81
117
  export interface LogProbsContentDeltaEvent {
82
- content: Array<ChatCompletionTokenLogprob>;
83
- snapshot: Array<ChatCompletionTokenLogprob>;
118
+ /** Token probabilities received in the current chunk. */
119
+ content: ChatCompletionTokenLogprob[];
120
+ /** All assistant-content token probabilities received for this choice. */
121
+ snapshot: ChatCompletionTokenLogprob[];
84
122
  }
85
123
 
124
+ /** The complete assistant-content token probabilities for a finished choice. */
86
125
  export interface LogProbsContentDoneEvent {
87
- content: Array<ChatCompletionTokenLogprob>;
126
+ /** Every assistant-content token probability produced for this choice. */
127
+ content: ChatCompletionTokenLogprob[];
88
128
  }
89
129
 
130
+ /** Newly received refusal-token probabilities and their accumulated snapshot. */
90
131
  export interface LogProbsRefusalDeltaEvent {
91
- refusal: Array<ChatCompletionTokenLogprob>;
92
- snapshot: Array<ChatCompletionTokenLogprob>;
132
+ /** Refusal-token probabilities received in the current chunk. */
133
+ refusal: ChatCompletionTokenLogprob[];
134
+ /** All refusal-token probabilities received for this choice. */
135
+ snapshot: ChatCompletionTokenLogprob[];
93
136
  }
94
137
 
138
+ /** The complete refusal-token probabilities for a finished choice. */
95
139
  export interface LogProbsRefusalDoneEvent {
96
- refusal: Array<ChatCompletionTokenLogprob>;
140
+ /** Every refusal-token probability produced for this choice. */
141
+ refusal: ChatCompletionTokenLogprob[];
97
142
  }
98
143
 
144
+ /** Event listeners supported by a streamed Chat Completions helper. */
99
145
  export interface ChatCompletionStreamEvents<ParsedT = null> extends AbstractChatCompletionRunnerEvents {
146
+ /** Called with each new text fragment and the complete text accumulated so far. */
100
147
  content: (contentDelta: string, contentSnapshot: string) => void;
148
+ /** Called with each raw API chunk and its accumulated chat-completion snapshot. */
101
149
  chunk: (chunk: ChatCompletionChunk, snapshot: ChatCompletionSnapshot) => void;
102
150
 
151
+ /** Called when assistant text arrives, including any partially parsed output. */
103
152
  'content.delta': (props: ContentDeltaEvent) => void;
153
+ /** Called once the assistant text is complete and can be fully parsed. */
104
154
  'content.done': (props: ContentDoneEvent<ParsedT>) => void;
105
155
 
156
+ /** Called when another fragment of a model refusal arrives. */
106
157
  'refusal.delta': (props: RefusalDeltaEvent) => void;
158
+ /** Called once the model's complete refusal is available. */
107
159
  'refusal.done': (props: RefusalDoneEvent) => void;
108
160
 
161
+ /** Called when another JSON argument fragment arrives for a function tool. */
109
162
  'tool_calls.function.arguments.delta': (props: FunctionToolCallArgumentsDeltaEvent) => void;
163
+ /** Called once a function tool's complete arguments are available. */
110
164
  'tool_calls.function.arguments.done': (props: FunctionToolCallArgumentsDoneEvent) => void;
111
165
 
166
+ /** Called when assistant-content token probabilities arrive. */
112
167
  'logprobs.content.delta': (props: LogProbsContentDeltaEvent) => void;
168
+ /** Called once all assistant-content token probabilities are available. */
113
169
  'logprobs.content.done': (props: LogProbsContentDoneEvent) => void;
114
170
 
171
+ /** Called when refusal-token probabilities arrive. */
115
172
  'logprobs.refusal.delta': (props: LogProbsRefusalDeltaEvent) => void;
173
+ /** Called once all refusal-token probabilities are available. */
116
174
  'logprobs.refusal.done': (props: LogProbsRefusalDoneEvent) => void;
117
175
  }
118
176
 
177
+ /** Chat completion request parameters accepted by the streaming convenience helper. */
119
178
  export type ChatCompletionStreamParams = Omit<ChatCompletionCreateParamsBase, 'stream'> & {
179
+ /** Streaming is always enabled by the helper and may be specified explicitly. */
120
180
  stream?: true;
121
181
  };
122
182
 
183
+ /** A conversation message embedded in a serialized chat completion stream. */
123
184
  type ChatCompletionReadableStreamMessage = {
185
+ /** Identifies this readable-stream item as a serialized conversation message. */
124
186
  type: 'message';
187
+ /** The conversation message to restore while replaying the serialized stream. */
125
188
  message: ChatCompletionMessageParam;
189
+ /** Tool-call identifiers to restore on the preceding assistant completion. */
126
190
  tool_call_ids?: string[];
127
191
  };
128
192
 
@@ -130,16 +194,21 @@ type ChatCompletionReadableStreamMessage = {
130
194
  // overwrites `object`, so the encoded payload does not leak into completions.
131
195
  const CHAT_COMPLETION_READABLE_STREAM_MESSAGE_PREFIX = 'chat.completion.chunk.message:';
132
196
 
197
+ /** A serialized conversation message disguised as a backwards-compatible empty completion chunk. */
133
198
  type ChatCompletionReadableStreamMessageChunk = Pick<ChatCompletionChunk, 'id' | 'created' | 'model'> & {
199
+ /** Empty choices keep the encoded message compatible with older completion-stream readers. */
134
200
  choices: [];
201
+ /** Reserved object prefix followed by the JSON-encoded conversation-message payload. */
135
202
  object: `${typeof CHAT_COMPLETION_READABLE_STREAM_MESSAGE_PREFIX}${string}`;
136
203
  };
137
204
 
205
+ /** A raw completion chunk or serialized message preserved in a transportable stream. */
138
206
  export type ChatCompletionReadableStreamItem =
139
207
  | ChatCompletionChunk
140
208
  | ChatCompletionReadableStreamMessage
141
209
  | ChatCompletionReadableStreamMessageChunk;
142
210
 
211
+ /** Encodes a tool-result message as a backwards-compatible, empty completion chunk. */
143
212
  export function makeChatCompletionReadableStreamMessageChunk(
144
213
  chunk: ChatCompletionChunk,
145
214
  message: ChatCompletionMessageParam,
@@ -183,15 +252,1002 @@ function getChatCompletionReadableStreamMessage(
183
252
  ) as ChatCompletionReadableStreamMessage;
184
253
  }
185
254
 
255
+ /**
256
+ * A tool call snapshot while it is still being accumulated from stream chunks.
257
+ *
258
+ * Every property is optional because the deltas that make up a tool call arrive
259
+ * across chunks; once they have all been accumulated the entry satisfies
260
+ * {@link ChatCompletionSnapshot.Choice.Message.ToolCall}.
261
+ */
262
+ type PartialToolCallSnapshot = {
263
+ id?: string;
264
+ type?: ChatCompletionSnapshot.Choice.Message.ToolCall['type'];
265
+ function?: ChatCompletionSnapshot.Choice.Message.ToolCall.Function;
266
+ custom?: ChatCompletionSnapshot.Choice.Message.ToolCall.CustomToolCall.Custom;
267
+ };
268
+
186
269
  interface ChoiceEventState {
187
270
  content_done: boolean;
271
+ content_parse_state: PartialJSONParseState | undefined;
188
272
  refusal_done: boolean;
189
273
  logprobs_content_done: boolean;
190
274
  logprobs_refusal_done: boolean;
191
275
  current_tool_call_index: number | null;
192
276
  done_tool_calls: Set<number>;
277
+ tool_call_parse_states: Map<number, PartialJSONParseState>;
278
+ tool_call_identities: Map<number, ToolCallIdentity>;
279
+ }
280
+
281
+ interface CapturedToolCallDeltaFrame {
282
+ readonly index: number;
283
+ readonly arguments_delta: string;
284
+ }
285
+
286
+ interface CapturedChoiceToolCallFrames {
287
+ readonly index: number;
288
+ readonly tool_calls: readonly CapturedToolCallDeltaFrame[];
193
289
  }
194
290
 
291
+ interface ValidatedChoiceSnapshot {
292
+ message: ChatCompletionSnapshot.Choice.Message;
293
+ content: string | null | undefined;
294
+ refusal: string | null | undefined;
295
+ toolCallCollection: ChatCompletionSnapshot.Choice.Message.ToolCall[] | undefined;
296
+ toolCalls: ReadonlyMap<number, ValidatedToolCallSnapshot>;
297
+ }
298
+
299
+ interface ValidatedToolCallSnapshot {
300
+ tool: ChatCompletionSnapshot.Choice.Message.ToolCall;
301
+ function: ChatCompletionSnapshot.Choice.Message.ToolCall.Function;
302
+ type: 'function';
303
+ name: string;
304
+ arguments: string;
305
+ }
306
+
307
+ interface ToolCallIdentity {
308
+ type: 'function';
309
+ name: string;
310
+ parseable: boolean;
311
+ }
312
+
313
+ interface PartialJSONParseState {
314
+ bytes: number;
315
+ depth: number;
316
+ fragments: number;
317
+ work: number;
318
+ escaped: boolean;
319
+ has_non_whitespace: boolean;
320
+ in_string: boolean;
321
+ last_parsed_bytes: number;
322
+ pending_high_surrogate: boolean;
323
+ }
324
+
325
+ interface PartialJSONParseBudget {
326
+ bytes: number;
327
+ fragments: number;
328
+ work: number;
329
+ }
330
+
331
+ // The Chat Completions schema limits n to 128. Replayed streams do not retain
332
+ // request parameters, so apply that choice limit independently and use the same
333
+ // conservative ceiling to prevent sparse tool-call arrays from growing unbounded.
334
+ const MAX_STREAM_CHOICES = 128;
335
+ const MAX_STREAM_TOOL_CALLS = 128;
336
+ const MAX_PARTIAL_JSON_BYTES = 16 * 1024 * 1024;
337
+ const MAX_PARTIAL_JSON_FRAGMENTS = 65_536;
338
+ const MAX_PARTIAL_JSON_DEPTH = 128;
339
+ const MAX_PARTIAL_JSON_PARSE_WORK = 64 * 1024 * 1024;
340
+ const EAGER_PARTIAL_JSON_BYTES = 1024;
341
+
342
+ function createPartialJSONParseState(): PartialJSONParseState {
343
+ return {
344
+ bytes: 0,
345
+ depth: 0,
346
+ fragments: 0,
347
+ work: 0,
348
+ escaped: false,
349
+ has_non_whitespace: false,
350
+ in_string: false,
351
+ last_parsed_bytes: 0,
352
+ pending_high_surrogate: false,
353
+ };
354
+ }
355
+
356
+ function recordPartialJSONFragment(
357
+ state: PartialJSONParseState,
358
+ budget: PartialJSONParseBudget,
359
+ fragment: string,
360
+ validationWorkBudget?: PartialJSONParseBudget,
361
+ ): boolean {
362
+ if (budget.fragments >= MAX_PARTIAL_JSON_FRAGMENTS) {
363
+ throw new OpenAIError('Chat completion stream exceeded its structured JSON fragment limit');
364
+ }
365
+
366
+ let bytes = 0;
367
+ let { depth, escaped, has_non_whitespace: hasNonWhitespace, in_string: inString } = state;
368
+ let completed = false;
369
+ let firstCharacter = true;
370
+
371
+ for (const character of fragment) {
372
+ const previousBytes = bytes;
373
+ const codePoint = character.codePointAt(0)!;
374
+ if (firstCharacter && state.pending_high_surrogate && codePoint >= 0xdc_00 && codePoint <= 0xdf_ff) {
375
+ bytes += 1;
376
+ } else if (codePoint <= 0x7f) {
377
+ bytes += 1;
378
+ } else if (codePoint <= 0x7_ff) {
379
+ bytes += 2;
380
+ } else if (codePoint <= 0xff_ff) {
381
+ bytes += 3;
382
+ } else {
383
+ bytes += 4;
384
+ }
385
+ firstCharacter = false;
386
+ if (budget.bytes + bytes > MAX_PARTIAL_JSON_BYTES) {
387
+ throw new OpenAIError('Chat completion stream exceeded its structured JSON byte limit');
388
+ }
389
+ if (validationWorkBudget && validationWorkBudget.work + bytes > MAX_PARTIAL_JSON_PARSE_WORK) {
390
+ validationWorkBudget.work += previousBytes;
391
+ throw new OpenAIError('Chat completion stream exceeded its structured JSON parse-work limit');
392
+ }
393
+
394
+ if (character !== ' ' && character !== '\n' && character !== '\r' && character !== '\t') {
395
+ hasNonWhitespace = true;
396
+ }
397
+
398
+ if (inString) {
399
+ if (escaped) {
400
+ escaped = false;
401
+ } else if (character === '\\') {
402
+ escaped = true;
403
+ } else if (character === '"') {
404
+ inString = false;
405
+ completed ||= depth === 0;
406
+ }
407
+ continue;
408
+ }
409
+
410
+ if (character === '"') {
411
+ inString = true;
412
+ } else if (character === '{' || character === '[') {
413
+ depth += 1;
414
+ if (depth > MAX_PARTIAL_JSON_DEPTH) {
415
+ throw new OpenAIError('Chat completion stream exceeded its structured JSON nesting depth limit');
416
+ }
417
+ } else if ((character === '}' || character === ']') && depth > 0) {
418
+ depth -= 1;
419
+ completed ||= depth === 0;
420
+ }
421
+ }
422
+
423
+ state.bytes += bytes;
424
+ state.fragments += 1;
425
+ state.depth = depth;
426
+ state.escaped = escaped;
427
+ state.has_non_whitespace = hasNonWhitespace;
428
+ state.in_string = inString;
429
+ if (fragment.length > 0) {
430
+ const finalCodeUnit = fragment.codePointAt(fragment.length - 1) ?? 0;
431
+ state.pending_high_surrogate = finalCodeUnit >= 0xd8_00 && finalCodeUnit <= 0xdb_ff;
432
+ }
433
+ budget.bytes += bytes;
434
+ budget.fragments += 1;
435
+ if (validationWorkBudget) {
436
+ validationWorkBudget.work += bytes;
437
+ }
438
+
439
+ if (!hasNonWhitespace || bytes === 0) {
440
+ return false;
441
+ }
442
+
443
+ const minimumGrowth = Math.max(EAGER_PARTIAL_JSON_BYTES, Math.floor(state.last_parsed_bytes / 2));
444
+ if (
445
+ state.bytes > EAGER_PARTIAL_JSON_BYTES &&
446
+ !completed &&
447
+ state.bytes - state.last_parsed_bytes < minimumGrowth
448
+ ) {
449
+ return false;
450
+ }
451
+
452
+ return true;
453
+ }
454
+
455
+ function reservePartialJSONParse(state: PartialJSONParseState, budget: PartialJSONParseBudget): boolean {
456
+ if (budget.work + state.bytes > MAX_PARTIAL_JSON_PARSE_WORK) {
457
+ return false;
458
+ }
459
+
460
+ budget.work += state.bytes;
461
+ state.work += state.bytes;
462
+ state.last_parsed_bytes = state.bytes;
463
+ return true;
464
+ }
465
+
466
+ function captureStructuredJSONSnapshot(
467
+ snapshot: object,
468
+ property: 'content' | 'arguments' | 'refusal',
469
+ ): string | null | undefined {
470
+ const descriptor = Object.getOwnPropertyDescriptor(snapshot, property);
471
+ if (!descriptor) {
472
+ let prototype = Object.getPrototypeOf(snapshot) as object | null;
473
+ for (let depth = 0; prototype !== null; depth += 1) {
474
+ if (depth >= MAX_PARTIAL_JSON_DEPTH || Object.getOwnPropertyDescriptor(prototype, property)) {
475
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
476
+ }
477
+ prototype = Object.getPrototypeOf(prototype) as object | null;
478
+ }
479
+ return undefined;
480
+ }
481
+ if (
482
+ !('value' in descriptor) ||
483
+ (typeof descriptor.value !== 'string' && descriptor.value !== null && descriptor.value !== undefined)
484
+ ) {
485
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
486
+ }
487
+
488
+ return descriptor.value as string | null | undefined;
489
+ }
490
+
491
+ function captureStructuredMessageSnapshot(
492
+ choice: ChatCompletionSnapshot.Choice,
493
+ ): ChatCompletionSnapshot.Choice.Message {
494
+ const descriptor = Object.getOwnPropertyDescriptor(choice, 'message');
495
+ if (
496
+ !descriptor ||
497
+ !('value' in descriptor) ||
498
+ typeof descriptor.value !== 'object' ||
499
+ descriptor.value === null
500
+ ) {
501
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
502
+ }
503
+
504
+ return descriptor.value as ChatCompletionSnapshot.Choice.Message;
505
+ }
506
+
507
+ function captureSnapshotArray<Item>(
508
+ snapshot: object,
509
+ property: 'choices' | 'tool_calls',
510
+ maximum: number,
511
+ kind: 'choice' | 'tool-call',
512
+ ): Item[] | undefined {
513
+ const descriptor = Object.getOwnPropertyDescriptor(snapshot, property);
514
+ if (!descriptor) {
515
+ let prototype = Object.getPrototypeOf(snapshot) as object | null;
516
+ for (let depth = 0; prototype !== null; depth += 1) {
517
+ if (depth >= MAX_PARTIAL_JSON_DEPTH || Object.getOwnPropertyDescriptor(prototype, property)) {
518
+ throw new OpenAIError(`Chat completion stream contains an unsafe snapshot ${kind} collection`);
519
+ }
520
+ prototype = Object.getPrototypeOf(prototype) as object | null;
521
+ }
522
+ return undefined;
523
+ }
524
+ if (!('value' in descriptor) || !Array.isArray(descriptor.value)) {
525
+ throw new OpenAIError(`Chat completion stream contains an unsafe snapshot ${kind} collection`);
526
+ }
527
+
528
+ const length = Object.getOwnPropertyDescriptor(descriptor.value, 'length');
529
+ if (!length || !('value' in length) || !Number.isSafeInteger(length.value) || length.value > maximum) {
530
+ throw new OpenAIError(`Chat completion stream exceeded its snapshot ${kind} limit`);
531
+ }
532
+
533
+ return descriptor.value as Item[];
534
+ }
535
+
536
+ function captureSnapshotArrayItem<Item>(array: Item[], index: number): Item | undefined {
537
+ const descriptor = Object.getOwnPropertyDescriptor(array, index);
538
+ if (!descriptor) {
539
+ return undefined;
540
+ }
541
+ if (!('value' in descriptor)) {
542
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
543
+ }
544
+
545
+ return descriptor.value as Item;
546
+ }
547
+
548
+ function mapCapturedSnapshotArray<Item, Mapped>(
549
+ array: Item[],
550
+ maximum: number,
551
+ kind: 'choice' | 'tool-call',
552
+ map: (item: Item, index: number) => Mapped,
553
+ ): Mapped[] {
554
+ const descriptor = Object.getOwnPropertyDescriptor(array, 'length');
555
+ const length: unknown = descriptor && 'value' in descriptor ? descriptor.value : undefined;
556
+ if (typeof length !== 'number' || !Number.isSafeInteger(length) || length < 0 || length > maximum) {
557
+ throw new OpenAIError(`Chat completion stream exceeded its snapshot ${kind} limit`);
558
+ }
559
+
560
+ const mapped: Mapped[] = [];
561
+ mapped.length = length;
562
+ for (let index = 0; index < length; index += 1) {
563
+ const item = Object.getOwnPropertyDescriptor(array, index);
564
+ if (!item) {
565
+ continue;
566
+ }
567
+ if (!('value' in item)) {
568
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
569
+ }
570
+ mapped[index] = map(item.value as Item, index);
571
+ }
572
+
573
+ return mapped;
574
+ }
575
+
576
+ function validateStructuredJSONSnapshot(
577
+ value: string,
578
+ budget?: PartialJSONParseBudget,
579
+ validationWorkBudget?: PartialJSONParseBudget,
580
+ ): string {
581
+ const state = createPartialJSONParseState();
582
+ const parseBudget = budget ?? { bytes: 0, fragments: 0, work: 0 };
583
+ recordPartialJSONFragment(state, parseBudget, value, validationWorkBudget);
584
+ if (!reservePartialJSONParse(state, parseBudget)) {
585
+ throw new OpenAIError('Chat completion stream exceeded its structured JSON parse-work limit');
586
+ }
587
+
588
+ return value;
589
+ }
590
+
591
+ function ownFunctionToolIdentity(
592
+ toolCall: PartialToolCallSnapshot,
593
+ ): Pick<ToolCallIdentity, 'type' | 'name'> | undefined {
594
+ const type = Object.getOwnPropertyDescriptor(toolCall, 'type');
595
+ const fn = Object.getOwnPropertyDescriptor(toolCall, 'function');
596
+ if (!type || !('value' in type) || type.value !== 'function' || !fn || !('value' in fn)) {
597
+ return undefined;
598
+ }
599
+ if (typeof fn.value !== 'object' || fn.value === null) {
600
+ return undefined;
601
+ }
602
+
603
+ const name = Object.getOwnPropertyDescriptor(fn.value, 'name');
604
+ if (!name || !('value' in name) || typeof name.value !== 'string' || name.value.length === 0) {
605
+ return undefined;
606
+ }
607
+
608
+ return { type: 'function', name: name.value };
609
+ }
610
+
611
+ function assertBoundToolCallIdentity(toolCall: PartialToolCallSnapshot, identity: ToolCallIdentity): void {
612
+ const current = ownFunctionToolIdentity(toolCall);
613
+ if (!current || current.name !== identity.name || current.type !== identity.type) {
614
+ throw new OpenAIError('Chat completion stream contains a changed tool call identity');
615
+ }
616
+ }
617
+
618
+ function assignOwnProperties<T extends object>(target: T, source: object): T {
619
+ if (Object.prototype.propertyIsEnumerable.call(source, '__proto__') && !hasOwn(target, '__proto__')) {
620
+ Object.defineProperty(target, '__proto__', {
621
+ value: undefined,
622
+ writable: true,
623
+ enumerable: true,
624
+ configurable: true,
625
+ });
626
+ }
627
+
628
+ return Object.assign(target, source);
629
+ }
630
+
631
+ function cloneParserConfigObject<Value extends object>(
632
+ value: Value,
633
+ stableFields: readonly PropertyKey[] = [],
634
+ ): Value {
635
+ const descriptors: PropertyDescriptorMap = Object.getOwnPropertyDescriptors(value);
636
+ for (const field of stableFields) {
637
+ const descriptor = descriptors[field];
638
+ if (!descriptor && !(field in value)) {
639
+ continue;
640
+ }
641
+
642
+ descriptors[field] = {
643
+ value: descriptor && 'value' in descriptor ? descriptor.value : Reflect.get(value, field, value),
644
+ enumerable: descriptor?.enumerable ?? false,
645
+ configurable: descriptor?.configurable ?? true,
646
+ writable: descriptor && 'writable' in descriptor ? descriptor.writable : false,
647
+ };
648
+ }
649
+
650
+ return Object.create(Object.getPrototypeOf(value), descriptors) as Value;
651
+ }
652
+
653
+ function snapshotChatCompletionParserParams(params: ChatCompletionCreateParams): ChatCompletionCreateParams {
654
+ const snapshot = cloneParserConfigObject(params);
655
+
656
+ if (params.tools) {
657
+ const stableTools: NonNullable<ChatCompletionCreateParams['tools']> = [];
658
+ const lengthDescriptor = Object.getOwnPropertyDescriptor(params.tools, 'length');
659
+ const length = lengthDescriptor && 'value' in lengthDescriptor ? lengthDescriptor.value : undefined;
660
+ const toolCount =
661
+ typeof length === 'number' && Number.isSafeInteger(length) && length >= 0
662
+ ? Math.min(length, MAX_STREAM_TOOL_CALLS)
663
+ : 0;
664
+
665
+ for (let index = 0; index < toolCount; index += 1) {
666
+ const item = Object.getOwnPropertyDescriptor(params.tools, String(index));
667
+ if (!item || !('value' in item)) {
668
+ stableTools.length = index + 1;
669
+ continue;
670
+ }
671
+
672
+ const tool = item.value as NonNullable<ChatCompletionCreateParams['tools']>[number];
673
+ const stableTool = cloneParserConfigObject(tool, [
674
+ 'type',
675
+ '$brand',
676
+ '$parseRaw',
677
+ '$callback',
678
+ 'function',
679
+ ]);
680
+ const descriptors = Object.getOwnPropertyDescriptors(stableTool);
681
+
682
+ if (isChatCompletionFunctionTool(stableTool)) {
683
+ const descriptor = descriptors.function;
684
+ descriptors.function = {
685
+ ...(descriptor && 'value' in descriptor
686
+ ? descriptor
687
+ : { configurable: true, enumerable: true, writable: true }),
688
+ value: cloneParserConfigObject(stableTool.function, ['name', 'strict']),
689
+ };
690
+ }
691
+
692
+ stableTools[index] = Object.create(Object.getPrototypeOf(tool), descriptors) as typeof tool;
693
+ }
694
+ snapshot.tools = stableTools;
695
+ }
696
+
697
+ if (params.response_format) {
698
+ snapshot.response_format = cloneParserConfigObject(params.response_format, [
699
+ 'type',
700
+ '$brand',
701
+ '$parseRaw',
702
+ ]);
703
+ }
704
+
705
+ return snapshot;
706
+ }
707
+
708
+ type ChatCompletionInputTool = NonNullable<ChatCompletionCreateParams['tools']>[number];
709
+ type ChatCompletionResponseFormat = NonNullable<ChatCompletionCreateParams['response_format']>;
710
+
711
+ interface SerializedFunctionParserConfig {
712
+ source: ChatCompletionInputTool | undefined;
713
+ schemaMatches: boolean;
714
+ name?: string;
715
+ strict?: boolean;
716
+ }
717
+
718
+ interface SerializedToolParserConfig {
719
+ source: ChatCompletionInputTool | undefined;
720
+ type?: string;
721
+ function?: SerializedFunctionParserConfig;
722
+ }
723
+
724
+ interface SerializedResponseParserConfig {
725
+ source: ChatCompletionResponseFormat | undefined;
726
+ schemaMatches: boolean;
727
+ type?: string;
728
+ }
729
+
730
+ interface SerializedParserSchemaBudget {
731
+ nodes: number;
732
+ bytes: number;
733
+ }
734
+
735
+ const MAX_SERIALIZED_PARSER_SCHEMA_NODES = 4096;
736
+ const stringifyParserSchemaValue = JSON.stringify;
737
+ const MAX_SERIALIZED_PARSER_SCHEMA_BYTES = 1024 * 1024;
738
+ const MAX_SERIALIZED_PARSER_SCHEMA_DEPTH = 64;
739
+ const OMITTED_SERIALIZED_PARSER_VALUE = Symbol('omitted serialized parser value');
740
+ const UNSAFE_SERIALIZED_PARSER_VALUE = Symbol('unsafe serialized parser value');
741
+
742
+ type CanonicalSerializedParserValue =
743
+ | string
744
+ | typeof OMITTED_SERIALIZED_PARSER_VALUE
745
+ | typeof UNSAFE_SERIALIZED_PARSER_VALUE;
746
+
747
+ function canonicalSerializedParserSchema(
748
+ value: unknown,
749
+ budget: SerializedParserSchemaBudget,
750
+ ): string | undefined {
751
+ const ancestors = new WeakSet<object>();
752
+
753
+ const charge = (bytes: number): boolean => {
754
+ if (
755
+ !Number.isSafeInteger(bytes) ||
756
+ bytes < 0 ||
757
+ budget.bytes + bytes > MAX_SERIALIZED_PARSER_SCHEMA_BYTES
758
+ ) {
759
+ return false;
760
+ }
761
+ budget.bytes += bytes;
762
+ return true;
763
+ };
764
+
765
+ const visit = (current: unknown, depth: number): CanonicalSerializedParserValue => {
766
+ if (depth > MAX_SERIALIZED_PARSER_SCHEMA_DEPTH || budget.nodes >= MAX_SERIALIZED_PARSER_SCHEMA_NODES) {
767
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
768
+ }
769
+ budget.nodes += 1;
770
+
771
+ if (current === undefined || typeof current === 'function' || typeof current === 'symbol') {
772
+ return OMITTED_SERIALIZED_PARSER_VALUE;
773
+ }
774
+ if (typeof current === 'bigint') {
775
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
776
+ }
777
+ if (current === null || typeof current === 'boolean' || typeof current === 'number') {
778
+ const serialized = stringifyParserSchemaValue(current);
779
+ return typeof serialized === 'string' && charge(serialized.length)
780
+ ? serialized
781
+ : UNSAFE_SERIALIZED_PARSER_VALUE;
782
+ }
783
+ if (typeof current === 'string') {
784
+ if (!charge(current.length * 6 + 2)) {
785
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
786
+ }
787
+ return stringifyParserSchemaValue(current);
788
+ }
789
+ if (typeof current !== 'object' || ancestors.has(current)) {
790
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
791
+ }
792
+
793
+ const array = Array.isArray(current);
794
+ const prototype = Object.getPrototypeOf(current) as object | null;
795
+ if (
796
+ (array && prototype !== Array.prototype) ||
797
+ (!array && prototype !== null && prototype !== Object.prototype)
798
+ ) {
799
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
800
+ }
801
+
802
+ for (
803
+ let owner: object | null = current;
804
+ owner !== null;
805
+ owner = Object.getPrototypeOf(owner) as object | null
806
+ ) {
807
+ const serializer = Object.getOwnPropertyDescriptor(owner, 'toJSON');
808
+ if (!serializer) {
809
+ continue;
810
+ }
811
+ if (!('value' in serializer) || typeof serializer.value === 'function') {
812
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
813
+ }
814
+ break;
815
+ }
816
+
817
+ ancestors.add(current);
818
+ try {
819
+ if (!charge(2)) {
820
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
821
+ }
822
+
823
+ if (array) {
824
+ const lengthDescriptor = Object.getOwnPropertyDescriptor(current, 'length');
825
+ const length = lengthDescriptor && 'value' in lengthDescriptor ? lengthDescriptor.value : undefined;
826
+ if (
827
+ typeof length !== 'number' ||
828
+ !Number.isSafeInteger(length) ||
829
+ length < 0 ||
830
+ length > MAX_SERIALIZED_PARSER_SCHEMA_NODES - budget.nodes
831
+ ) {
832
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
833
+ }
834
+
835
+ const items: string[] = [];
836
+ for (let index = 0; index < length; index += 1) {
837
+ const key = String(index);
838
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
839
+ if (!descriptor) {
840
+ if (
841
+ Object.getOwnPropertyDescriptor(Array.prototype, key) ||
842
+ Object.getOwnPropertyDescriptor(Object.prototype, key)
843
+ ) {
844
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
845
+ }
846
+ budget.nodes += 1;
847
+ if (!charge(4)) {
848
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
849
+ }
850
+ items.push('null');
851
+ continue;
852
+ }
853
+ if (!('value' in descriptor)) {
854
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
855
+ }
856
+
857
+ const item = visit(descriptor.value, depth + 1);
858
+ if (item === UNSAFE_SERIALIZED_PARSER_VALUE) {
859
+ return item;
860
+ }
861
+ items.push(item === OMITTED_SERIALIZED_PARSER_VALUE ? 'null' : item);
862
+ }
863
+ return `[${items.join(',')}]`;
864
+ }
865
+
866
+ const keys = Reflect.ownKeys(current);
867
+ if (keys.length > MAX_SERIALIZED_PARSER_SCHEMA_NODES - budget.nodes) {
868
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
869
+ }
870
+
871
+ const entries: [string, unknown][] = [];
872
+ for (const key of keys) {
873
+ if (typeof key !== 'string') {
874
+ continue;
875
+ }
876
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
877
+ if (!descriptor) {
878
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
879
+ }
880
+ if (!descriptor.enumerable) {
881
+ continue;
882
+ }
883
+ if (!('value' in descriptor)) {
884
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
885
+ }
886
+ entries.push([key, descriptor.value]);
887
+ }
888
+ entries.sort(([left], [right]) => {
889
+ if (left === right) {
890
+ return 0;
891
+ }
892
+ return left < right ? -1 : 1;
893
+ });
894
+
895
+ const fields: string[] = [];
896
+ for (const [key, entry] of entries) {
897
+ const normalized = visit(entry, depth + 1);
898
+ if (normalized === UNSAFE_SERIALIZED_PARSER_VALUE) {
899
+ return normalized;
900
+ }
901
+ if (normalized === OMITTED_SERIALIZED_PARSER_VALUE) {
902
+ continue;
903
+ }
904
+ if (!charge(key.length * 6 + 3)) {
905
+ return UNSAFE_SERIALIZED_PARSER_VALUE;
906
+ }
907
+ fields.push(`${stringifyParserSchemaValue(key)}:${normalized}`);
908
+ }
909
+ return `{${fields.join(',')}}`;
910
+ } finally {
911
+ ancestors.delete(current);
912
+ }
913
+ };
914
+
915
+ try {
916
+ const normalized = visit(value, 0);
917
+ return typeof normalized === 'string' ? normalized : undefined;
918
+ } catch {
919
+ return undefined;
920
+ }
921
+ }
922
+
923
+ function rememberSerializedParserSchema(
924
+ signatures: WeakMap<object, string>,
925
+ source: object,
926
+ holder: object,
927
+ key: string,
928
+ ): void {
929
+ const parser = Object.getOwnPropertyDescriptor(source, '$parseRaw');
930
+ const schema = Object.getOwnPropertyDescriptor(holder, key);
931
+ if (
932
+ !parser ||
933
+ !('value' in parser) ||
934
+ typeof parser.value !== 'function' ||
935
+ !schema ||
936
+ !('value' in schema)
937
+ ) {
938
+ return;
939
+ }
940
+
941
+ const normalized = canonicalSerializedParserSchema(schema.value, { nodes: 0, bytes: 0 });
942
+ if (normalized !== undefined) {
943
+ signatures.set(source, normalized);
944
+ }
945
+ }
946
+
947
+ function hasMatchingSerializedParserSchema(
948
+ signatures: WeakMap<object, string>,
949
+ source: object | undefined,
950
+ holder: object,
951
+ key: string,
952
+ value: unknown,
953
+ ): boolean {
954
+ const expected = source && signatures.get(source);
955
+ const descriptor = Object.getOwnPropertyDescriptor(holder, key);
956
+ return (
957
+ expected !== undefined &&
958
+ descriptor !== undefined &&
959
+ 'value' in descriptor &&
960
+ canonicalSerializedParserSchema(value, { nodes: 0, bytes: 0 }) === expected
961
+ );
962
+ }
963
+
964
+ function serializedParserDescriptor(
965
+ descriptor: PropertyDescriptor | undefined,
966
+ value: unknown,
967
+ ): PropertyDescriptor {
968
+ return descriptor && 'value' in descriptor
969
+ ? { ...descriptor, value }
970
+ : { configurable: true, enumerable: true, writable: true, value };
971
+ }
972
+
973
+ function shadowSerializedParserMetadata(
974
+ descriptors: PropertyDescriptorMap,
975
+ source: object,
976
+ fields: readonly string[],
977
+ ): void {
978
+ for (const field of fields) {
979
+ const descriptor = descriptors[field];
980
+ if (!descriptor && !(field in source)) {
981
+ continue;
982
+ }
983
+ descriptors[field] =
984
+ descriptor && 'value' in descriptor
985
+ ? { ...descriptor, value: undefined }
986
+ : {
987
+ configurable: descriptor?.configurable ?? true,
988
+ enumerable: descriptor?.enumerable ?? false,
989
+ writable: false,
990
+ value: undefined,
991
+ };
992
+ }
993
+ }
994
+
995
+ function snapshotSerializedParserTool(serialized: SerializedToolParserConfig): ChatCompletionInputTool {
996
+ const source =
997
+ serialized.source ??
998
+ ({
999
+ type: serialized.type,
1000
+ ...(serialized.type === 'function' ? { function: {} } : {}),
1001
+ } as ChatCompletionInputTool);
1002
+ const descriptors = Object.getOwnPropertyDescriptors(source);
1003
+ descriptors.type = serializedParserDescriptor(descriptors.type, serialized.type);
1004
+
1005
+ if (serialized.type !== 'function' || !serialized.function) {
1006
+ if (descriptors.function) {
1007
+ descriptors.function = serializedParserDescriptor(descriptors.function, undefined);
1008
+ }
1009
+ shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw', '$callback']);
1010
+ return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionInputTool;
1011
+ }
1012
+
1013
+ const descriptor = descriptors.function;
1014
+ const original =
1015
+ descriptor && 'value' in descriptor && typeof descriptor.value === 'object' && descriptor.value !== null
1016
+ ? (descriptor.value as object)
1017
+ : {};
1018
+ const functionDescriptors = Object.getOwnPropertyDescriptors(original);
1019
+ functionDescriptors['name'] = serializedParserDescriptor(
1020
+ functionDescriptors['name'],
1021
+ serialized.function.name,
1022
+ );
1023
+ functionDescriptors['strict'] = serializedParserDescriptor(
1024
+ functionDescriptors['strict'],
1025
+ serialized.function.strict,
1026
+ );
1027
+ descriptors.function = serializedParserDescriptor(
1028
+ descriptor,
1029
+ Object.create(Object.getPrototypeOf(original), functionDescriptors),
1030
+ );
1031
+ if (!serialized.function.schemaMatches) {
1032
+ shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw', '$callback']);
1033
+ }
1034
+
1035
+ return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionInputTool;
1036
+ }
1037
+
1038
+ function snapshotSerializedResponseFormat(
1039
+ serialized: SerializedResponseParserConfig,
1040
+ ): ChatCompletionResponseFormat {
1041
+ const source = serialized.source ?? ({ type: serialized.type } as ChatCompletionResponseFormat);
1042
+ const descriptors = Object.getOwnPropertyDescriptors(source);
1043
+ descriptors.type = serializedParserDescriptor(descriptors.type, serialized.type);
1044
+ if (serialized.type !== 'json_schema' || !serialized.source || !serialized.schemaMatches) {
1045
+ shadowSerializedParserMetadata(descriptors, source, ['$brand', '$parseRaw']);
1046
+ }
1047
+ return Object.create(Object.getPrototypeOf(source), descriptors) as ChatCompletionResponseFormat;
1048
+ }
1049
+
1050
+ function ownSerializedParserObject(holder: object, key: string): object | undefined {
1051
+ const descriptor = Object.getOwnPropertyDescriptor(holder, key);
1052
+ if (!descriptor || !('value' in descriptor)) {
1053
+ return undefined;
1054
+ }
1055
+ const { value } = descriptor;
1056
+ return typeof value === 'object' && value !== null ? value : undefined;
1057
+ }
1058
+
1059
+ function observeSerializedChatCompletionParserParams(
1060
+ body: ChatCompletionCreateParams,
1061
+ initial: ChatCompletionCreateParams,
1062
+ update: (params: ChatCompletionCreateParams) => void,
1063
+ ): () => void {
1064
+ const originalToolOwners = new WeakMap<object, ChatCompletionInputTool>();
1065
+ const originalSchemaSignatures = new WeakMap<object, string>();
1066
+ // At most 128 tools plus one response format each receive an independent
1067
+ // 4,096-node/1 MiB source and wire allowance (129 MiB maximum per pass).
1068
+ if (body.tools) {
1069
+ for (let index = 0; index < body.tools.length && index < MAX_STREAM_TOOL_CALLS; index += 1) {
1070
+ const owner = ownSerializedParserObject(body.tools, String(index));
1071
+ const source = initial.tools?.[index];
1072
+ if (owner && source) {
1073
+ originalToolOwners.set(owner, source);
1074
+ const originalFunction = ownSerializedParserObject(source, 'function');
1075
+ if (originalFunction) {
1076
+ rememberSerializedParserSchema(originalSchemaSignatures, source, originalFunction, 'parameters');
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+ if (initial.response_format) {
1082
+ rememberSerializedParserSchema(
1083
+ originalSchemaSignatures,
1084
+ initial.response_format,
1085
+ initial.response_format,
1086
+ 'json_schema',
1087
+ );
1088
+ }
1089
+ let root: object | undefined;
1090
+ let tools: object | undefined;
1091
+ let responseFormat: object | undefined;
1092
+ let responseFrame: SerializedResponseParserConfig | undefined;
1093
+ let frames: (SerializedToolParserConfig | undefined)[] = [];
1094
+ let toolFrames = new WeakMap<object, SerializedToolParserConfig>();
1095
+ let actualToolOwners = new Map<number, object | undefined>();
1096
+ let functionFrames = new WeakMap<object, SerializedFunctionParserConfig>();
1097
+
1098
+ return observeJSONRequestBody(body, {
1099
+ value(holder, key, value) {
1100
+ if (!root && key === '' && typeof value === 'object' && value !== null) {
1101
+ root = value;
1102
+ tools = undefined;
1103
+ responseFormat = undefined;
1104
+ responseFrame = undefined;
1105
+ frames = [];
1106
+ toolFrames = new WeakMap();
1107
+ actualToolOwners = new Map();
1108
+ functionFrames = new WeakMap();
1109
+ return;
1110
+ }
1111
+
1112
+ if (holder === root && key === 'response_format') {
1113
+ if (typeof value === 'object' && value !== null) {
1114
+ responseFormat = value;
1115
+ const owner = ownSerializedParserObject(holder, key);
1116
+ responseFrame = {
1117
+ source: owner === body.response_format ? initial.response_format : undefined,
1118
+ schemaMatches: false,
1119
+ };
1120
+ }
1121
+ return;
1122
+ }
1123
+
1124
+ if (holder === root && key === 'tools') {
1125
+ if (Array.isArray(value)) {
1126
+ tools = new Proxy(value, {
1127
+ get(target, property) {
1128
+ const actual = Reflect.get(target, property, target) as unknown;
1129
+ if (typeof property === 'string') {
1130
+ const index = Number(property);
1131
+ if (
1132
+ Number.isSafeInteger(index) &&
1133
+ index >= 0 &&
1134
+ index < MAX_STREAM_TOOL_CALLS &&
1135
+ String(index) === property
1136
+ ) {
1137
+ actualToolOwners.set(
1138
+ index,
1139
+ typeof actual === 'object' && actual !== null ? actual : undefined,
1140
+ );
1141
+ }
1142
+ }
1143
+ return actual;
1144
+ },
1145
+ });
1146
+ return tools;
1147
+ }
1148
+ return;
1149
+ }
1150
+
1151
+ if (holder === tools) {
1152
+ const index = Number(key);
1153
+ if (
1154
+ !Number.isSafeInteger(index) ||
1155
+ index < 0 ||
1156
+ index >= MAX_STREAM_TOOL_CALLS ||
1157
+ typeof value !== 'object' ||
1158
+ value === null
1159
+ ) {
1160
+ return;
1161
+ }
1162
+ const owner = actualToolOwners.get(index);
1163
+ const source = owner ? originalToolOwners.get(owner) : undefined;
1164
+ const frame: SerializedToolParserConfig = { source };
1165
+ frames[index] = frame;
1166
+ toolFrames.set(value, frame);
1167
+ return;
1168
+ }
1169
+
1170
+ const tool = toolFrames.get(holder);
1171
+ if (tool) {
1172
+ if (key === 'type' && typeof value === 'string') {
1173
+ tool.type = value;
1174
+ } else if (key === 'function' && typeof value === 'object' && value !== null) {
1175
+ const fn: SerializedFunctionParserConfig = { source: tool.source, schemaMatches: false };
1176
+ tool.function = fn;
1177
+ functionFrames.set(value, fn);
1178
+ }
1179
+ return;
1180
+ }
1181
+
1182
+ if (holder === responseFormat && responseFrame) {
1183
+ if (key === 'type' && typeof value === 'string') {
1184
+ responseFrame.type = value;
1185
+ } else if (key === 'json_schema') {
1186
+ responseFrame.schemaMatches = hasMatchingSerializedParserSchema(
1187
+ originalSchemaSignatures,
1188
+ responseFrame.source,
1189
+ holder,
1190
+ key,
1191
+ value,
1192
+ );
1193
+ }
1194
+ return;
1195
+ }
1196
+
1197
+ const fn = functionFrames.get(holder);
1198
+ if (fn) {
1199
+ if (key === 'name' && typeof value === 'string') {
1200
+ fn.name = value;
1201
+ } else if (key === 'strict' && typeof value === 'boolean') {
1202
+ fn.strict = value;
1203
+ } else if (key === 'parameters') {
1204
+ fn.schemaMatches = hasMatchingSerializedParserSchema(
1205
+ originalSchemaSignatures,
1206
+ fn.source,
1207
+ holder,
1208
+ key,
1209
+ value,
1210
+ );
1211
+ }
1212
+ }
1213
+ return undefined;
1214
+ },
1215
+ complete() {
1216
+ if (!root) {
1217
+ return;
1218
+ }
1219
+ const snapshot = cloneParserConfigObject(initial);
1220
+ if (tools) {
1221
+ const serializedTools: ChatCompletionInputTool[] = [];
1222
+ for (let index = 0; index < frames.length; index += 1) {
1223
+ const frame = frames[index];
1224
+ if (frame) {
1225
+ serializedTools[index] = snapshotSerializedParserTool(frame);
1226
+ }
1227
+ }
1228
+ snapshot.tools = serializedTools;
1229
+ } else {
1230
+ delete snapshot.tools;
1231
+ }
1232
+ if (responseFrame) {
1233
+ snapshot.response_format = snapshotSerializedResponseFormat(responseFrame);
1234
+ } else {
1235
+ delete snapshot.response_format;
1236
+ }
1237
+ update(snapshot);
1238
+ root = undefined;
1239
+ tools = undefined;
1240
+ responseFormat = undefined;
1241
+ responseFrame = undefined;
1242
+ frames = [];
1243
+ toolFrames = new WeakMap();
1244
+ actualToolOwners = new Map();
1245
+ functionFrames = new WeakMap();
1246
+ },
1247
+ });
1248
+ }
1249
+
1250
+ /** Streams chat completion chunks while accumulating snapshots, parsed output, and events. */
195
1251
  export class ChatCompletionStream<ParsedT = null>
196
1252
  extends AbstractChatCompletionRunner<ChatCompletionStreamEvents<ParsedT>, ParsedT>
197
1253
  implements AsyncIterable<ChatCompletionChunk>
@@ -200,14 +1256,39 @@ export class ChatCompletionStream<ParsedT = null>
200
1256
  #audioDoneChoiceIndexes: Set<number>;
201
1257
  #choiceEventStates: ChoiceEventState[];
202
1258
  #currentChatCompletionSnapshot: ChatCompletionSnapshot | undefined;
1259
+ #hasAutoParseableTool: boolean;
1260
+ #partialJSONParseBudget: PartialJSONParseBudget;
203
1261
 
1262
+ /** Creates an unstarted stream, retaining request parameters for structured-output parsing. */
204
1263
  constructor(params: ChatCompletionCreateParams | null) {
205
1264
  super();
206
1265
  this.#params = params;
207
1266
  this.#audioDoneChoiceIndexes = new Set();
208
1267
  this.#choiceEventStates = [];
1268
+ this.#hasAutoParseableTool = false;
1269
+ const tools = params?.tools;
1270
+ const lengthDescriptor = tools && Object.getOwnPropertyDescriptor(tools, 'length');
1271
+ const length = lengthDescriptor && 'value' in lengthDescriptor ? lengthDescriptor.value : undefined;
1272
+ if (tools && typeof length === 'number' && Number.isSafeInteger(length) && length >= 0) {
1273
+ for (let index = 0; index < Math.min(length, MAX_STREAM_TOOL_CALLS); index += 1) {
1274
+ const descriptor = Object.getOwnPropertyDescriptor(tools, String(index));
1275
+ if (!descriptor || !('value' in descriptor)) {
1276
+ continue;
1277
+ }
1278
+ const tool = descriptor.value as ChatCompletionInputTool;
1279
+ if (
1280
+ isChatCompletionFunctionTool(tool) &&
1281
+ (isAutoParsableTool(tool) || tool.function.strict === true)
1282
+ ) {
1283
+ this.#hasAutoParseableTool = true;
1284
+ break;
1285
+ }
1286
+ }
1287
+ }
1288
+ this.#partialJSONParseBudget = { bytes: 0, fragments: 0, work: 0 };
209
1289
  }
210
1290
 
1291
+ /** The latest accumulated completion, or `undefined` before a chunk arrives or after finalization. */
211
1292
  get currentChatCompletionSnapshot(): ChatCompletionSnapshot | undefined {
212
1293
  return this.#currentChatCompletionSnapshot;
213
1294
  }
@@ -216,8 +1297,8 @@ export class ChatCompletionStream<ParsedT = null>
216
1297
  * Intended for use on the frontend, consuming a stream produced with
217
1298
  * `.toReadableStream()` on the backend.
218
1299
  *
219
- * Note that messages sent to the model do not appear in `.on('message')`
220
- * in this context.
1300
+ * Original input messages are not included in the serialized stream. Tool-result
1301
+ * messages explicitly serialized by a streaming tool runner are replayed.
221
1302
  */
222
1303
  static fromReadableStream(stream: ReadableStream): ChatCompletionStream<null> {
223
1304
  const runner = new ChatCompletionStream(null);
@@ -225,6 +1306,7 @@ export class ChatCompletionStream<ParsedT = null>
225
1306
  return runner;
226
1307
  }
227
1308
 
1309
+ /** Starts a streaming chat completion request and returns its event-driven helper. */
228
1310
  static createChatCompletion<ParsedT>(
229
1311
  client: OpenAI,
230
1312
  params: ChatCompletionStreamParams,
@@ -235,16 +1317,19 @@ export class ChatCompletionStream<ParsedT = null>
235
1317
  runner._runChatCompletion(
236
1318
  client,
237
1319
  { ...params, stream: true },
238
- { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },
1320
+ { ...options, __metadata: { ...options?.__metadata, helperMethod: 'stream' } },
239
1321
  ),
240
1322
  );
241
1323
  return runner;
242
1324
  }
243
1325
 
244
1326
  #beginRequest() {
245
- if (this.ended) return;
1327
+ if (this.ended) {
1328
+ return;
1329
+ }
246
1330
  this.#audioDoneChoiceIndexes = new Set();
247
1331
  this.#currentChatCompletionSnapshot = undefined;
1332
+ this.#partialJSONParseBudget = { bytes: 0, fragments: 0, work: 0 };
248
1333
  }
249
1334
 
250
1335
  #getChoiceEventState(choice: ChatCompletionSnapshot.Choice): ChoiceEventState {
@@ -255,58 +1340,70 @@ export class ChatCompletionStream<ParsedT = null>
255
1340
 
256
1341
  state = {
257
1342
  content_done: false,
1343
+ content_parse_state: undefined,
258
1344
  refusal_done: false,
259
1345
  logprobs_content_done: false,
260
1346
  logprobs_refusal_done: false,
261
1347
  done_tool_calls: new Set(),
262
1348
  current_tool_call_index: null,
1349
+ tool_call_parse_states: new Map(),
1350
+ tool_call_identities: new Map(),
263
1351
  };
264
1352
  this.#choiceEventStates[choice.index] = state;
265
1353
  return state;
266
1354
  }
267
1355
 
268
1356
  #addChunk(this: ChatCompletionStream<ParsedT>, chunk: ChatCompletionChunk) {
269
- if (this.ended) return;
1357
+ if (this.ended) {
1358
+ return;
1359
+ }
270
1360
 
271
- const completion = this.#accumulateChatCompletion(chunk);
1361
+ const capturedChoiceFrames = new WeakMap<object, CapturedChoiceToolCallFrames>();
1362
+ const completion = this.#accumulateChatCompletion(chunk, capturedChoiceFrames);
272
1363
  this._emit('chunk', chunk, completion);
273
1364
 
274
1365
  for (const choice of chunk.choices) {
275
- const choiceSnapshot = completion.choices[choice.index]!;
1366
+ const capturedChoice = capturedChoiceFrames.get(choice);
1367
+ const choiceSnapshot = completion.choices[capturedChoice?.index ?? choice.index]!;
1368
+ const capturedToolCalls = capturedChoice?.tool_calls ?? [];
276
1369
  const { delta } = choice;
277
-
278
- if (
279
- delta?.content != null &&
280
- choiceSnapshot.message?.role === 'assistant' &&
281
- choiceSnapshot.message?.content
282
- ) {
283
- this._emit('content', delta.content, choiceSnapshot.message.content);
1370
+ const structuredResponse = isParseableResponseFormat(this.#params?.response_format);
1371
+ const boundedSnapshot = structuredResponse || this.#hasAutoParseableTool;
1372
+ const messageSnapshot = boundedSnapshot
1373
+ ? captureStructuredMessageSnapshot(choiceSnapshot)
1374
+ : choiceSnapshot.message;
1375
+ const refusal = boundedSnapshot
1376
+ ? captureStructuredJSONSnapshot(messageSnapshot, 'refusal')
1377
+ : messageSnapshot.refusal;
1378
+ const parseableContent = !refusal && structuredResponse;
1379
+ const messageContent = parseableContent
1380
+ ? captureStructuredJSONSnapshot(messageSnapshot, 'content')
1381
+ : messageSnapshot.content;
1382
+
1383
+ if (delta?.content != null && messageSnapshot.role === 'assistant' && messageContent) {
1384
+ this._emit('content', delta.content, messageContent);
284
1385
  this._emit('content.delta', {
285
1386
  delta: delta.content,
286
- snapshot: choiceSnapshot.message.content,
287
- parsed: choiceSnapshot.message.parsed,
1387
+ snapshot: messageContent,
1388
+ parsed: messageSnapshot.parsed,
288
1389
  });
289
1390
  }
290
1391
 
291
- if (
292
- delta?.refusal != null &&
293
- choiceSnapshot.message?.role === 'assistant' &&
294
- choiceSnapshot.message?.refusal
295
- ) {
1392
+ if (delta?.refusal != null && messageSnapshot.role === 'assistant' && refusal) {
296
1393
  this._emit('refusal.delta', {
297
1394
  delta: delta.refusal,
298
- snapshot: choiceSnapshot.message.refusal,
1395
+ snapshot: refusal,
299
1396
  });
300
1397
  }
301
1398
 
302
- if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {
1399
+ if (choice.logprobs?.content != null && messageSnapshot.role === 'assistant') {
303
1400
  this._emit('logprobs.content.delta', {
304
1401
  content: choice.logprobs?.content,
305
1402
  snapshot: choiceSnapshot.logprobs?.content ?? [],
306
1403
  });
307
1404
  }
308
1405
 
309
- if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {
1406
+ if (choice.logprobs?.refusal != null && messageSnapshot.role === 'assistant') {
310
1407
  this._emit('logprobs.refusal.delta', {
311
1408
  refusal: choice.logprobs?.refusal,
312
1409
  snapshot: choiceSnapshot.logprobs?.refusal ?? [],
@@ -323,7 +1420,7 @@ export class ChatCompletionStream<ParsedT = null>
323
1420
  }
324
1421
  }
325
1422
 
326
- for (const toolCall of delta?.tool_calls ?? []) {
1423
+ for (const toolCall of capturedToolCalls) {
327
1424
  if (state.current_tool_call_index !== toolCall.index) {
328
1425
  this.#emitContentDoneEvents(choiceSnapshot);
329
1426
 
@@ -336,22 +1433,33 @@ export class ChatCompletionStream<ParsedT = null>
336
1433
  state.current_tool_call_index = toolCall.index;
337
1434
  }
338
1435
 
339
- for (const toolCallDelta of delta?.tool_calls ?? []) {
340
- const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];
1436
+ for (const toolCallDelta of capturedToolCalls) {
1437
+ const toolCallSnapshot = messageSnapshot.tool_calls?.[toolCallDelta.index];
341
1438
  if (!toolCallSnapshot?.type) {
342
1439
  continue;
343
1440
  }
344
1441
 
345
- if (toolCallSnapshot?.type === 'function') {
1442
+ if (toolCallSnapshot.type === 'function') {
1443
+ const boundIdentity = state.tool_call_identities.get(toolCallDelta.index);
1444
+ let argumentsSnapshot: string;
1445
+ if (boundIdentity?.parseable) {
1446
+ const capturedArguments = captureStructuredJSONSnapshot(toolCallSnapshot.function, 'arguments');
1447
+ if (typeof capturedArguments !== 'string') {
1448
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1449
+ }
1450
+ argumentsSnapshot = capturedArguments;
1451
+ } else {
1452
+ argumentsSnapshot = toolCallSnapshot.function.arguments;
1453
+ }
346
1454
  this._emit('tool_calls.function.arguments.delta', {
347
- name: toolCallSnapshot.function?.name,
1455
+ name: toolCallSnapshot.function.name,
348
1456
  index: toolCallDelta.index,
349
- arguments: toolCallSnapshot.function.arguments,
1457
+ arguments: argumentsSnapshot,
350
1458
  parsed_arguments: toolCallSnapshot.function.parsed_arguments,
351
- arguments_delta: toolCallDelta.function?.arguments ?? '',
1459
+ arguments_delta: toolCallDelta.arguments_delta,
352
1460
  });
353
- } else {
354
- assertNever(toolCallSnapshot?.type);
1461
+ } else if (toolCallSnapshot.type !== 'custom') {
1462
+ assertNever(toolCallSnapshot);
355
1463
  }
356
1464
  }
357
1465
  }
@@ -364,10 +1472,18 @@ export class ChatCompletionStream<ParsedT = null>
364
1472
  return;
365
1473
  }
366
1474
 
367
- const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];
1475
+ const messageSnapshot = this.#hasAutoParseableTool
1476
+ ? captureStructuredMessageSnapshot(choiceSnapshot)
1477
+ : choiceSnapshot.message;
1478
+ const toolCallSnapshot = messageSnapshot.tool_calls?.[toolCallIndex];
368
1479
  if (!toolCallSnapshot) {
369
1480
  throw new Error('no tool call snapshot');
370
1481
  }
1482
+ const boundIdentity = state.tool_call_identities.get(toolCallIndex);
1483
+ if (boundIdentity) {
1484
+ assertBoundToolCallIdentity(toolCallSnapshot, boundIdentity);
1485
+ }
1486
+
371
1487
  if (!toolCallSnapshot.type) {
372
1488
  throw new Error('tool call snapshot missing `type`');
373
1489
  }
@@ -377,38 +1493,82 @@ export class ChatCompletionStream<ParsedT = null>
377
1493
  (tool) => isChatCompletionFunctionTool(tool) && tool.function.name === toolCallSnapshot.function.name,
378
1494
  ) as ChatCompletionFunctionTool | undefined; // TS doesn't narrow based on isChatCompletionTool
379
1495
 
1496
+ let parsedArguments: unknown = null;
1497
+ const parseable = isAutoParsableTool(inputTool) || inputTool?.function.strict === true;
1498
+ let argumentsSnapshot: string;
1499
+ if (parseable) {
1500
+ if (this.#currentChatCompletionSnapshot) {
1501
+ this.#validateStructuredSnapshots(this.#currentChatCompletionSnapshot);
1502
+ }
1503
+ const capturedArguments = captureStructuredJSONSnapshot(toolCallSnapshot.function, 'arguments');
1504
+ if (typeof capturedArguments !== 'string') {
1505
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1506
+ }
1507
+ argumentsSnapshot = capturedArguments;
1508
+ } else {
1509
+ argumentsSnapshot = toolCallSnapshot.function.arguments;
1510
+ }
1511
+ if (isAutoParsableTool(inputTool)) {
1512
+ parsedArguments = inputTool.$parseRaw(validateStructuredJSONSnapshot(argumentsSnapshot));
1513
+ } else if (inputTool?.function.strict) {
1514
+ parsedArguments = parseResponseFormatContent(
1515
+ { type: 'json_schema', $parseRaw: undefined },
1516
+ validateStructuredJSONSnapshot(argumentsSnapshot),
1517
+ );
1518
+ }
1519
+
380
1520
  this._emit('tool_calls.function.arguments.done', {
381
1521
  name: toolCallSnapshot.function.name,
382
1522
  index: toolCallIndex,
383
- arguments: toolCallSnapshot.function.arguments,
384
- parsed_arguments:
385
- isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)
386
- : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)
387
- : null,
1523
+ arguments: argumentsSnapshot,
1524
+ parsed_arguments: parsedArguments,
388
1525
  });
389
- } else {
390
- assertNever(toolCallSnapshot.type);
1526
+ } else if (toolCallSnapshot.type !== 'custom') {
1527
+ assertNever(toolCallSnapshot);
391
1528
  }
392
1529
  }
393
1530
 
394
1531
  #emitContentDoneEvents(choiceSnapshot: ChatCompletionSnapshot.Choice) {
395
1532
  const state = this.#getChoiceEventState(choiceSnapshot);
396
-
397
- if (choiceSnapshot.message.content && !state.content_done) {
1533
+ const structuredResponse = isParseableResponseFormat(this.#params?.response_format);
1534
+ const boundedSnapshot = structuredResponse || this.#hasAutoParseableTool;
1535
+ const messageSnapshot = boundedSnapshot
1536
+ ? captureStructuredMessageSnapshot(choiceSnapshot)
1537
+ : choiceSnapshot.message;
1538
+ const refusal = boundedSnapshot
1539
+ ? captureStructuredJSONSnapshot(messageSnapshot, 'refusal')
1540
+ : messageSnapshot.refusal;
1541
+ const parseableContent = !refusal && structuredResponse;
1542
+ const content = parseableContent
1543
+ ? captureStructuredJSONSnapshot(messageSnapshot, 'content')
1544
+ : messageSnapshot.content;
1545
+
1546
+ if (
1547
+ content != null &&
1548
+ (content !== '' ||
1549
+ (!refusal && !messageSnapshot.tool_calls?.length && !messageSnapshot.function_call)) &&
1550
+ !state.content_done
1551
+ ) {
1552
+ if (parseableContent && this.#currentChatCompletionSnapshot) {
1553
+ this.#validateStructuredSnapshots(this.#currentChatCompletionSnapshot);
1554
+ }
398
1555
  state.content_done = true;
399
1556
 
400
- const responseFormat = this.#getAutoParseableResponseFormat();
401
-
402
1557
  this._emit('content.done', {
403
- content: choiceSnapshot.message.content,
404
- parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : (null as any),
1558
+ content,
1559
+ parsed: refusal
1560
+ ? null
1561
+ : parseResponseFormatContent<ParsedT>(
1562
+ this.#params?.response_format,
1563
+ parseableContent ? validateStructuredJSONSnapshot(content) : content,
1564
+ ),
405
1565
  });
406
1566
  }
407
1567
 
408
- if (choiceSnapshot.message.refusal && !state.refusal_done) {
1568
+ if (refusal && !state.refusal_done) {
409
1569
  state.refusal_done = true;
410
1570
 
411
- this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });
1571
+ this._emit('refusal.done', { refusal });
412
1572
  }
413
1573
 
414
1574
  if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {
@@ -424,6 +1584,119 @@ export class ChatCompletionStream<ParsedT = null>
424
1584
  }
425
1585
  }
426
1586
 
1587
+ #validateStructuredSnapshots(
1588
+ snapshot: ChatCompletionSnapshot,
1589
+ ): WeakMap<ChatCompletionSnapshot.Choice, ValidatedChoiceSnapshot> {
1590
+ const finalJSONBudget: PartialJSONParseBudget = { bytes: 0, fragments: 0, work: 0 };
1591
+ const parseableContent = isParseableResponseFormat(this.#params?.response_format);
1592
+ const validatedMessages = new WeakMap<ChatCompletionSnapshot.Choice, ValidatedChoiceSnapshot>();
1593
+ const choices = captureSnapshotArray<ChatCompletionSnapshot.Choice>(
1594
+ snapshot,
1595
+ 'choices',
1596
+ MAX_STREAM_CHOICES,
1597
+ 'choice',
1598
+ );
1599
+ if (!choices) {
1600
+ throw new OpenAIError('Chat completion stream contains an unsafe snapshot choice collection');
1601
+ }
1602
+ for (let choiceIndex = 0; choiceIndex < choices.length; choiceIndex += 1) {
1603
+ const choice = captureSnapshotArrayItem(choices, choiceIndex);
1604
+ if (!choice) {
1605
+ continue;
1606
+ }
1607
+ const message = captureStructuredMessageSnapshot(choice);
1608
+ const refusal = captureStructuredJSONSnapshot(message, 'refusal');
1609
+ const content = captureStructuredJSONSnapshot(message, 'content');
1610
+ const validatedTools = new Map<number, ValidatedToolCallSnapshot>();
1611
+ const toolCalls = captureSnapshotArray<ChatCompletionSnapshot.Choice.Message.ToolCall>(
1612
+ message,
1613
+ 'tool_calls',
1614
+ MAX_STREAM_TOOL_CALLS,
1615
+ 'tool-call',
1616
+ );
1617
+ validatedMessages.set(
1618
+ choice,
1619
+ Object.freeze({
1620
+ message,
1621
+ content,
1622
+ refusal,
1623
+ toolCallCollection: toolCalls,
1624
+ toolCalls: validatedTools,
1625
+ }),
1626
+ );
1627
+ const state = this.#choiceEventStates[choice.index];
1628
+ if (parseableContent && !refusal && typeof content === 'string') {
1629
+ validateStructuredJSONSnapshot(content, finalJSONBudget, this.#partialJSONParseBudget);
1630
+ }
1631
+ for (const [index, identity] of state?.tool_call_identities ?? []) {
1632
+ const toolCall = toolCalls && captureSnapshotArrayItem(toolCalls, index);
1633
+ if (!toolCall) {
1634
+ throw new OpenAIError('Chat completion stream contains a changed tool call identity');
1635
+ }
1636
+ assertBoundToolCallIdentity(toolCall, identity);
1637
+ }
1638
+ if (!this.#hasAutoParseableTool) {
1639
+ continue;
1640
+ }
1641
+ for (let toolCallIndex = 0; toolCallIndex < (toolCalls?.length ?? 0); toolCallIndex += 1) {
1642
+ const toolCall = captureSnapshotArrayItem(toolCalls!, toolCallIndex);
1643
+ if (!toolCall) {
1644
+ continue;
1645
+ }
1646
+ const identity = ownFunctionToolIdentity(toolCall);
1647
+ if (!identity) {
1648
+ const type = Object.getOwnPropertyDescriptor(toolCall, 'type');
1649
+ if (type && !('value' in type)) {
1650
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1651
+ }
1652
+ if (type?.value !== 'function') {
1653
+ continue;
1654
+ }
1655
+ const fn = Object.getOwnPropertyDescriptor(toolCall, 'function');
1656
+ if (fn && !('value' in fn)) {
1657
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1658
+ }
1659
+ if (fn && typeof fn.value === 'object' && fn.value !== null) {
1660
+ const name = Object.getOwnPropertyDescriptor(fn.value, 'name');
1661
+ if (name && !('value' in name)) {
1662
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1663
+ }
1664
+ }
1665
+ continue;
1666
+ }
1667
+ if (
1668
+ !shouldParseToolCall(this.#params, {
1669
+ type: identity.type,
1670
+ function: { name: identity.name },
1671
+ })
1672
+ ) {
1673
+ continue;
1674
+ }
1675
+ const descriptor = Object.getOwnPropertyDescriptor(toolCall, 'function');
1676
+ if (!descriptor || !('value' in descriptor)) {
1677
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1678
+ }
1679
+ const fn = descriptor.value as ChatCompletionSnapshot.Choice.Message.ToolCall.Function;
1680
+ const argumentsSnapshot = captureStructuredJSONSnapshot(fn, 'arguments');
1681
+ if (typeof argumentsSnapshot !== 'string') {
1682
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
1683
+ }
1684
+ validateStructuredJSONSnapshot(argumentsSnapshot, finalJSONBudget, this.#partialJSONParseBudget);
1685
+ validatedTools.set(
1686
+ toolCallIndex,
1687
+ Object.freeze({
1688
+ tool: toolCall,
1689
+ function: fn,
1690
+ type: identity.type,
1691
+ name: identity.name,
1692
+ arguments: argumentsSnapshot,
1693
+ }),
1694
+ );
1695
+ }
1696
+ }
1697
+ return validatedMessages;
1698
+ }
1699
+
427
1700
  #endRequest(): ParsedChatCompletion<ParsedT> {
428
1701
  if (this.ended) {
429
1702
  throw new OpenAIError(`stream has ended, this shouldn't happen`);
@@ -432,11 +1705,12 @@ export class ChatCompletionStream<ParsedT = null>
432
1705
  if (!snapshot) {
433
1706
  throw new OpenAIError(`request ended without sending any chunks`);
434
1707
  }
1708
+ const validatedMessages = this.#validateStructuredSnapshots(snapshot);
435
1709
  const audioDoneChoiceIndexes = this.#audioDoneChoiceIndexes;
436
1710
  this.#audioDoneChoiceIndexes = new Set();
437
1711
  this.#currentChatCompletionSnapshot = undefined;
438
1712
  this.#choiceEventStates = [];
439
- return finalizeChatCompletion(snapshot, this.#params, audioDoneChoiceIndexes);
1713
+ return finalizeChatCompletion(snapshot, this.#params, audioDoneChoiceIndexes, validatedMessages);
440
1714
  }
441
1715
 
442
1716
  protected override async _createChatCompletion(
@@ -444,14 +1718,36 @@ export class ChatCompletionStream<ParsedT = null>
444
1718
  params: ChatCompletionCreateParams,
445
1719
  options?: RequestOptions,
446
1720
  ): Promise<ParsedChatCompletion<ParsedT>> {
447
- super._createChatCompletion;
448
1721
  this._listenForAbort(options?.signal);
1722
+ const requestParams = { ...params, stream: true as const };
1723
+ this.#params = requestParams;
449
1724
  this.#beginRequest();
450
1725
 
451
- const stream = await client.chat.completions.create(
452
- { ...params, stream: true },
453
- { ...options, signal: this.controller.signal },
454
- );
1726
+ const parserParams = snapshotChatCompletionParserParams(requestParams);
1727
+ this.#params = parserParams;
1728
+ this.#hasAutoParseableTool =
1729
+ parserParams.tools?.some(
1730
+ (tool) =>
1731
+ isChatCompletionFunctionTool(tool) && (isAutoParsableTool(tool) || tool.function.strict === true),
1732
+ ) ?? false;
1733
+ const stopObserving =
1734
+ requestParams.tools || requestParams.response_format
1735
+ ? observeSerializedChatCompletionParserParams(requestParams, parserParams, (serialized) => {
1736
+ this.#params = serialized;
1737
+ this.#hasAutoParseableTool =
1738
+ serialized.tools?.some(
1739
+ (tool) =>
1740
+ isChatCompletionFunctionTool(tool) &&
1741
+ (isAutoParsableTool(tool) || tool.function.strict === true),
1742
+ ) ?? false;
1743
+ })
1744
+ : undefined;
1745
+ const stream = await client.chat.completions
1746
+ .create(requestParams, {
1747
+ ...options,
1748
+ signal: this.controller.signal,
1749
+ })
1750
+ .finally(stopObserving);
455
1751
  this._connected();
456
1752
  for await (const chunk of stream) {
457
1753
  this.#addChunk(chunk);
@@ -501,7 +1797,9 @@ export class ChatCompletionStream<ParsedT = null>
501
1797
  }
502
1798
 
503
1799
  this.#addChunk(chunk);
504
- if (chunk.id) chatId = chunk.id;
1800
+ if (chunk.id) {
1801
+ chatId = chunk.id;
1802
+ }
505
1803
  }
506
1804
  if (stream.controller.signal?.aborted) {
507
1805
  throw new APIUserAbortError();
@@ -516,40 +1814,54 @@ export class ChatCompletionStream<ParsedT = null>
516
1814
  throw new OpenAIError(`request ended without sending any chunks`);
517
1815
  }
518
1816
 
519
- #getAutoParseableResponseFormat(): AutoParseableResponseFormat<ParsedT> | null {
520
- const responseFormat = this.#params?.response_format;
521
- if (isAutoParsableResponseFormat<ParsedT>(responseFormat)) {
522
- return responseFormat;
523
- }
524
-
525
- return null;
526
- }
527
-
528
- #accumulateChatCompletion(chunk: ChatCompletionChunk): ChatCompletionSnapshot {
1817
+ #accumulateChatCompletion(
1818
+ chunk: ChatCompletionChunk,
1819
+ capturedChoiceFrames: WeakMap<object, CapturedChoiceToolCallFrames>,
1820
+ ): ChatCompletionSnapshot {
529
1821
  let snapshot = this.#currentChatCompletionSnapshot;
530
- const { choices, ...rest } = chunk;
1822
+ const { choices, obfuscation: _obfuscation, ...rest } = chunk;
531
1823
  if (!snapshot) {
532
- snapshot = this.#currentChatCompletionSnapshot = {
1824
+ const newSnapshot: ChatCompletionSnapshot = {
533
1825
  ...rest,
534
1826
  choices: [],
535
1827
  };
1828
+ this.#currentChatCompletionSnapshot = newSnapshot;
1829
+ snapshot = newSnapshot;
536
1830
  } else if (chunk.id) {
537
- Object.assign(snapshot, rest);
1831
+ assignOwnProperties(snapshot, rest);
538
1832
  }
539
1833
 
540
- for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {
1834
+ const requestedChoiceCount = this.#params?.n;
1835
+ const maxChoices =
1836
+ typeof requestedChoiceCount === 'number' &&
1837
+ Number.isSafeInteger(requestedChoiceCount) &&
1838
+ requestedChoiceCount > 0
1839
+ ? Math.min(requestedChoiceCount, MAX_STREAM_CHOICES)
1840
+ : MAX_STREAM_CHOICES;
1841
+
1842
+ for (const chunkChoice of chunk.choices) {
1843
+ const { delta, finish_reason, index, logprobs = null, ...other } = chunkChoice;
1844
+ const capturedToolCalls: CapturedToolCallDeltaFrame[] = [];
1845
+ capturedChoiceFrames.set(chunkChoice, Object.freeze({ index, tool_calls: capturedToolCalls }));
1846
+ if (!Number.isSafeInteger(index) || index < 0 || index >= maxChoices) {
1847
+ throw new OpenAIError(`Chat completion stream contains an invalid choice index: ${index}`);
1848
+ }
1849
+
541
1850
  let choice = snapshot.choices[index];
542
1851
  if (!choice) {
543
- choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };
1852
+ const newChoice = { finish_reason, index, message: {}, logprobs: null, ...other };
1853
+ snapshot.choices[index] = newChoice;
1854
+ choice = newChoice;
1855
+ }
1856
+ if (isParseableResponseFormat(this.#params?.response_format) || this.#hasAutoParseableTool) {
1857
+ captureStructuredJSONSnapshot(captureStructuredMessageSnapshot(choice), 'refusal');
544
1858
  }
545
1859
 
546
1860
  if (logprobs) {
547
- if (!choice.logprobs) {
548
- choice.logprobs = Object.assign({}, logprobs);
549
- } else {
1861
+ if (choice.logprobs) {
550
1862
  const { content, refusal, ...rest } = logprobs;
551
1863
  assertIsEmpty(rest);
552
- Object.assign(choice.logprobs, rest);
1864
+ assignOwnProperties(choice.logprobs, rest);
553
1865
 
554
1866
  if (content) {
555
1867
  choice.logprobs.content ??= [];
@@ -560,6 +1872,16 @@ export class ChatCompletionStream<ParsedT = null>
560
1872
  choice.logprobs.refusal ??= [];
561
1873
  choice.logprobs.refusal.push(...refusal);
562
1874
  }
1875
+ } else {
1876
+ choice.logprobs = { ...logprobs };
1877
+
1878
+ if (logprobs.content) {
1879
+ choice.logprobs.content = [...logprobs.content];
1880
+ }
1881
+
1882
+ if (logprobs.refusal) {
1883
+ choice.logprobs.refusal = [...logprobs.refusal];
1884
+ }
563
1885
  }
564
1886
  }
565
1887
 
@@ -577,16 +1899,22 @@ export class ChatCompletionStream<ParsedT = null>
577
1899
  }
578
1900
  }
579
1901
 
580
- Object.assign(choice, other);
1902
+ assignOwnProperties(choice, other);
581
1903
 
582
- if (!delta) continue; // Shouldn't happen; just in case.
1904
+ if (!delta) {
1905
+ Object.freeze(capturedToolCalls);
1906
+ continue;
1907
+ } // Shouldn't happen; just in case.
583
1908
 
584
1909
  this.#audioDoneChoiceIndexes.delete(index);
585
- const { audio, content, refusal, function_call, role, tool_calls, ...rest } = delta as typeof delta & {
586
- audio?: Partial<ChatCompletionAudio> | null;
587
- };
1910
+ const { audio, content, refusal, function_call, role, ...capturedDeltaFields } =
1911
+ delta as typeof delta & {
1912
+ audio?: Partial<ChatCompletionAudio> | null;
1913
+ };
1914
+ const { tool_calls: capturedToolCallDelta, ...rest } = capturedDeltaFields;
1915
+ const tool_calls = hasOwn(capturedDeltaFields, 'tool_calls') ? capturedToolCallDelta : delta.tool_calls;
588
1916
  assertIsEmpty(rest);
589
- Object.assign(choice.message, rest);
1917
+ assignOwnProperties(choice.message, rest);
590
1918
  if (
591
1919
  audio?.expires_at != null &&
592
1920
  audio.id == null &&
@@ -606,121 +1934,196 @@ export class ChatCompletionStream<ParsedT = null>
606
1934
  choice.message.refusal = (choice.message.refusal || '') + refusal;
607
1935
  }
608
1936
 
609
- if (role) choice.message.role = role;
1937
+ if (role) {
1938
+ choice.message.role = role;
1939
+ }
610
1940
  if (audio) {
611
1941
  const audioSnapshot = (choice.message.audio ??= {});
612
- if (audio.id != null) audioSnapshot.id = audio.id;
613
- if (audio.data != null) audioSnapshot.data = (audioSnapshot.data ?? '') + audio.data;
1942
+ if (audio.id != null) {
1943
+ audioSnapshot.id = audio.id;
1944
+ }
1945
+ if (audio.data != null) {
1946
+ audioSnapshot.data = (audioSnapshot.data ?? '') + audio.data;
1947
+ }
614
1948
  if (audio.transcript != null) {
615
1949
  audioSnapshot.transcript = (audioSnapshot.transcript ?? '') + audio.transcript;
616
1950
  }
617
- if (audio.expires_at != null) audioSnapshot.expires_at = audio.expires_at;
1951
+ if (audio.expires_at != null) {
1952
+ audioSnapshot.expires_at = audio.expires_at;
1953
+ }
618
1954
  }
619
1955
  if (function_call) {
620
- if (!choice.message.function_call) {
621
- choice.message.function_call = function_call;
622
- } else {
623
- if (function_call.name) choice.message.function_call.name = function_call.name;
1956
+ if (choice.message.function_call) {
1957
+ if (function_call.name) {
1958
+ choice.message.function_call.name = function_call.name;
1959
+ }
624
1960
  if (function_call.arguments) {
625
1961
  choice.message.function_call.arguments ??= '';
626
1962
  choice.message.function_call.arguments += function_call.arguments;
627
1963
  }
1964
+ } else {
1965
+ choice.message.function_call = function_call;
628
1966
  }
629
1967
  }
630
- if (content) {
631
- choice.message.content = (choice.message.content || '') + content;
632
-
633
- if (!choice.message.refusal && this.#getAutoParseableResponseFormat()) {
634
- // The partial parser does not accept whitespace-only input.
635
- choice.message.parsed = choice.message.content.trim() ? partialParse(choice.message.content) : null;
1968
+ if (content != null) {
1969
+ if (!choice.message.refusal && isParseableResponseFormat(this.#params?.response_format)) {
1970
+ const eventState = this.#getChoiceEventState(choice);
1971
+ const parseState = (eventState.content_parse_state ??= createPartialJSONParseState());
1972
+ const shouldParse = recordPartialJSONFragment(parseState, this.#partialJSONParseBudget, content);
1973
+ choice.message.content = (captureStructuredJSONSnapshot(choice.message, 'content') || '') + content;
1974
+
1975
+ // The partial parser does not accept whitespace-only input. Once output
1976
+ // grows, coalesce prefix reparses while preserving every raw snapshot.
1977
+ if (!parseState.has_non_whitespace) {
1978
+ choice.message.parsed = null;
1979
+ } else if (shouldParse && reservePartialJSONParse(parseState, this.#partialJSONParseBudget)) {
1980
+ this.#validateStructuredSnapshots(snapshot);
1981
+ choice.message.parsed = parseStructuredStreamingJSON(
1982
+ validateStructuredJSONSnapshot(choice.message.content),
1983
+ );
1984
+ } else if (content.length > 0) {
1985
+ choice.message.parsed = null;
1986
+ }
1987
+ } else {
1988
+ choice.message.content = (choice.message.content || '') + content;
636
1989
  }
637
1990
  }
638
1991
 
639
1992
  if (tool_calls) {
640
- if (!choice.message.tool_calls) choice.message.tool_calls = [];
641
-
642
- for (const { index, id, type, function: fn, ...rest } of tool_calls) {
643
- const tool_call = (choice.message.tool_calls[index] ??=
644
- {} as ChatCompletionSnapshot.Choice.Message.ToolCall);
645
- Object.assign(tool_call, rest);
646
- if (id) tool_call.id = id;
647
- if (type) tool_call.type = type;
648
- if (fn) tool_call.function ??= { name: fn.name ?? '', arguments: '' };
649
- if (fn?.name) tool_call.function!.name = fn.name;
650
- if (fn?.arguments) {
651
- tool_call.function!.arguments += fn.arguments;
652
-
653
- if (shouldParseToolCall(this.#params, tool_call)) {
654
- tool_call.function!.parsed_arguments = partialParse(tool_call.function!.arguments);
1993
+ // Tool calls are built up across chunks, so while the stream is in progress the
1994
+ // entries are only partially filled in; they match `ChatCompletionSnapshot.Choice.Message.ToolCall`
1995
+ // once every delta for them has been accumulated.
1996
+ const toolCallSnapshots = (choice.message.tool_calls ??= []) as PartialToolCallSnapshot[];
1997
+
1998
+ for (const toolCallDelta of tool_calls) {
1999
+ const { index, id, type, function: fn, custom, ...rest } = toolCallDelta;
2000
+ if (!Number.isSafeInteger(index) || index < 0 || index >= MAX_STREAM_TOOL_CALLS) {
2001
+ throw new OpenAIError(`Chat completion stream contains an invalid tool call index: ${index}`);
2002
+ }
2003
+ let argumentsDelta = '';
2004
+
2005
+ const tool_call = (toolCallSnapshots[index] ??= {});
2006
+ const functionName = fn?.name;
2007
+ const eventState = this.#hasAutoParseableTool ? this.#getChoiceEventState(choice) : undefined;
2008
+ let boundIdentity = eventState?.tool_call_identities.get(index);
2009
+ if (boundIdentity) {
2010
+ assertBoundToolCallIdentity(tool_call, boundIdentity);
2011
+ if (
2012
+ (type !== undefined && type !== boundIdentity.type) ||
2013
+ (functionName !== undefined && functionName !== boundIdentity.name)
2014
+ ) {
2015
+ throw new OpenAIError('Chat completion stream contains a changed tool call identity');
2016
+ }
2017
+ }
2018
+
2019
+ assignOwnProperties(tool_call, rest);
2020
+ if (id) {
2021
+ tool_call.id = id;
2022
+ }
2023
+ if (type) {
2024
+ tool_call.type = type;
2025
+ }
2026
+ if (custom) {
2027
+ const customSnapshot = (tool_call.custom ??= { name: custom.name ?? '', input: '' });
2028
+ if (custom.name) {
2029
+ customSnapshot.name = custom.name;
2030
+ }
2031
+ if (custom.input) {
2032
+ customSnapshot.input += custom.input;
655
2033
  }
656
2034
  }
2035
+ if (fn) {
2036
+ const functionSnapshot = (tool_call.function ??= { name: functionName ?? '', arguments: '' });
2037
+ if (functionName) {
2038
+ functionSnapshot.name = functionName;
2039
+ }
2040
+ if (eventState && !boundIdentity) {
2041
+ const identity = ownFunctionToolIdentity(tool_call);
2042
+ const configuredTool =
2043
+ identity &&
2044
+ this.#params?.tools?.find(
2045
+ (tool) => isChatCompletionFunctionTool(tool) && tool.function.name === identity.name,
2046
+ );
2047
+ if (identity) {
2048
+ boundIdentity = {
2049
+ ...identity,
2050
+ parseable:
2051
+ configuredTool !== undefined &&
2052
+ shouldParseToolCall(this.#params, {
2053
+ type: identity.type,
2054
+ function: { name: identity.name },
2055
+ }),
2056
+ };
2057
+ eventState.tool_call_identities.set(index, boundIdentity);
2058
+ if (!boundIdentity.parseable) {
2059
+ const provisionalState = eventState.tool_call_parse_states.get(index);
2060
+ if (provisionalState) {
2061
+ this.#partialJSONParseBudget.bytes -= provisionalState.bytes;
2062
+ this.#partialJSONParseBudget.fragments -= provisionalState.fragments;
2063
+ this.#partialJSONParseBudget.work -= provisionalState.work;
2064
+ eventState.tool_call_parse_states.delete(index);
2065
+ }
2066
+ }
2067
+ }
2068
+ }
2069
+ const argumentFragment = fn.arguments;
2070
+ if (argumentFragment != null) {
2071
+ argumentsDelta = argumentFragment;
2072
+ if (eventState && boundIdentity?.parseable !== false) {
2073
+ let parseState = eventState.tool_call_parse_states.get(index);
2074
+ if (!parseState) {
2075
+ parseState = createPartialJSONParseState();
2076
+ eventState.tool_call_parse_states.set(index, parseState);
2077
+ }
2078
+
2079
+ const shouldParse = recordPartialJSONFragment(
2080
+ parseState,
2081
+ this.#partialJSONParseBudget,
2082
+ argumentFragment,
2083
+ );
2084
+ const previousArguments = captureStructuredJSONSnapshot(functionSnapshot, 'arguments');
2085
+ if (typeof previousArguments !== 'string') {
2086
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
2087
+ }
2088
+ functionSnapshot.arguments = previousArguments + argumentFragment;
2089
+ if (
2090
+ shouldParse &&
2091
+ boundIdentity?.parseable === true &&
2092
+ reservePartialJSONParse(parseState, this.#partialJSONParseBudget)
2093
+ ) {
2094
+ this.#validateStructuredSnapshots(snapshot);
2095
+ functionSnapshot.parsed_arguments = parseStructuredStreamingJSON(
2096
+ validateStructuredJSONSnapshot(functionSnapshot.arguments),
2097
+ );
2098
+ } else if (argumentFragment.length > 0 && hasOwn(functionSnapshot, 'parsed_arguments')) {
2099
+ functionSnapshot.parsed_arguments = undefined;
2100
+ }
2101
+ } else {
2102
+ functionSnapshot.arguments += argumentFragment;
2103
+ }
2104
+ }
2105
+ }
2106
+ capturedToolCalls.push(Object.freeze({ index, arguments_delta: argumentsDelta }));
657
2107
  }
658
2108
  }
2109
+ Object.freeze(capturedToolCalls);
659
2110
  }
660
2111
  return snapshot;
661
2112
  }
662
2113
 
2114
+ /** Iterates over raw API chunks; stopping iteration early aborts the underlying request. */
663
2115
  [Symbol.asyncIterator](this: ChatCompletionStream<ParsedT>): AsyncIterator<ChatCompletionChunk> {
664
- const pushQueue: ChatCompletionChunk[] = [];
665
- const readQueue: {
666
- resolve: (chunk: ChatCompletionChunk | undefined) => void;
667
- reject: (err: unknown) => void;
668
- }[] = [];
669
- let done = false;
670
-
671
- this.on('chunk', (chunk) => {
672
- const reader = readQueue.shift();
673
- if (reader) {
674
- reader.resolve(chunk);
675
- } else {
676
- pushQueue.push(chunk);
677
- }
678
- });
679
-
680
- this.on('end', () => {
681
- done = true;
682
- for (const reader of readQueue) {
683
- reader.resolve(undefined);
684
- }
685
- readQueue.length = 0;
686
- });
687
-
688
- this.on('abort', (err) => {
689
- done = true;
690
- for (const reader of readQueue) {
691
- reader.reject(err);
692
- }
693
- readQueue.length = 0;
694
- });
695
-
696
- this.on('error', (err) => {
697
- done = true;
698
- for (const reader of readQueue) {
699
- reader.reject(err);
700
- }
701
- readQueue.length = 0;
702
- });
703
-
704
- return {
705
- next: async (): Promise<IteratorResult<ChatCompletionChunk>> => {
706
- if (!pushQueue.length) {
707
- if (done) {
708
- return { value: undefined, done: true };
709
- }
710
- return new Promise<ChatCompletionChunk | undefined>((resolve, reject) =>
711
- readQueue.push({ resolve, reject }),
712
- ).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));
713
- }
714
- const chunk = pushQueue.shift()!;
715
- return { value: chunk, done: false };
716
- },
717
- return: async () => {
718
- this.abort();
719
- return { value: undefined, done: true };
2116
+ return this._createIterator<ChatCompletionChunk>(
2117
+ (push) => {
2118
+ const onChunk = (chunk: ChatCompletionChunk) => push(chunk);
2119
+ this.on('chunk', onChunk);
2120
+ return () => this.off('chunk', onChunk);
720
2121
  },
721
- };
2122
+ { onReturn: () => this.abort() },
2123
+ );
722
2124
  }
723
2125
 
2126
+ /** Serializes raw completion chunks into a readable stream for transfer to another runtime. */
724
2127
  toReadableStream(): ReadableStream {
725
2128
  const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);
726
2129
  return stream.toReadableStream();
@@ -731,13 +2134,41 @@ function finalizeChatCompletion<ParsedT>(
731
2134
  snapshot: ChatCompletionSnapshot,
732
2135
  params: ChatCompletionCreateParams | null,
733
2136
  audioDoneChoiceIndexes: ReadonlySet<number>,
2137
+ validatedMessages: WeakMap<ChatCompletionSnapshot.Choice, ValidatedChoiceSnapshot>,
734
2138
  ): ParsedChatCompletion<ParsedT> {
735
2139
  const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;
736
2140
  const completion: ChatCompletion = {
737
2141
  ...rest,
738
2142
  id,
739
- choices: choices.map(
740
- ({ message, finish_reason, index, logprobs, ...choiceRest }): ChatCompletion.Choice => {
2143
+ choices: mapCapturedSnapshotArray(
2144
+ choices,
2145
+ MAX_STREAM_CHOICES,
2146
+ 'choice',
2147
+ (choice): ChatCompletion.Choice => {
2148
+ const validated = validatedMessages.get(choice);
2149
+ if (!validated) {
2150
+ throw new OpenAIError('Chat completion stream contains an unsafe structured JSON snapshot');
2151
+ }
2152
+ const stableChoice = new Proxy(choice, {
2153
+ get(target, property, receiver) {
2154
+ return property === 'message' ? validated.message : Reflect.get(target, property, receiver);
2155
+ },
2156
+ });
2157
+ const { message: sourceMessage, finish_reason, index, logprobs, ...choiceRest } = stableChoice;
2158
+ const message = new Proxy(sourceMessage, {
2159
+ get(target, property, receiver) {
2160
+ if (property === 'content') {
2161
+ return validated.content;
2162
+ }
2163
+ if (property === 'refusal') {
2164
+ return validated.refusal;
2165
+ }
2166
+ if (property === 'tool_calls') {
2167
+ return validated.toolCallCollection;
2168
+ }
2169
+ return Reflect.get(target, property, receiver);
2170
+ },
2171
+ });
741
2172
  const { content = null, function_call, tool_calls, audio, ...messageRest } = message;
742
2173
  // Audio streams can end with an expires_at-only chunk after the
743
2174
  // generated audio, without a separate finish_reason.
@@ -790,30 +2221,91 @@ function finalizeChatCompletion<ParsedT>(
790
2221
  role,
791
2222
  content,
792
2223
  refusal: message.refusal ?? null,
793
- tool_calls: tool_calls.map((tool_call, i) => {
794
- const { function: fn, type, id, ...toolRest } = tool_call;
795
- const { arguments: args, name, ...fnRest } = fn || {};
796
- if (type == null) {
797
- throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\n${str(snapshot)}`);
798
- }
799
- if (name == null) {
800
- throw new OpenAIError(
801
- `missing choices[${index}].tool_calls[${i}].function.name\n${str(snapshot)}`,
802
- );
803
- }
804
- if (args == null) {
805
- throw new OpenAIError(
806
- `missing choices[${index}].tool_calls[${i}].function.arguments\n${str(snapshot)}`,
807
- );
808
- }
809
-
810
- return {
811
- ...toolRest,
812
- id: id || `call_${uuid4()}`,
813
- type,
814
- function: { ...fnRest, name, arguments: args },
815
- };
816
- }),
2224
+ tool_calls: mapCapturedSnapshotArray(
2225
+ tool_calls,
2226
+ MAX_STREAM_TOOL_CALLS,
2227
+ 'tool-call',
2228
+ (tool_call, i): ChatCompletionMessageToolCall => {
2229
+ const captured = validated.toolCalls.get(i);
2230
+ if (!captured) {
2231
+ const identity = ownFunctionToolIdentity(tool_call);
2232
+ if (
2233
+ identity &&
2234
+ shouldParseToolCall(params, {
2235
+ type: identity.type,
2236
+ function: { name: identity.name },
2237
+ })
2238
+ ) {
2239
+ throw new OpenAIError(
2240
+ 'Chat completion stream contains an unsafe structured JSON snapshot',
2241
+ );
2242
+ }
2243
+ }
2244
+ if (captured && captured.tool !== tool_call) {
2245
+ throw new OpenAIError('Chat completion stream contains a changed tool call identity');
2246
+ }
2247
+ const stableFunction =
2248
+ captured &&
2249
+ new Proxy(captured.function, {
2250
+ get(target, property, receiver) {
2251
+ if (property === 'arguments') {
2252
+ return captured.arguments;
2253
+ }
2254
+ if (property === 'name') {
2255
+ return captured.name;
2256
+ }
2257
+ return Reflect.get(target, property, receiver);
2258
+ },
2259
+ });
2260
+ const stableTool =
2261
+ captured && stableFunction
2262
+ ? new Proxy(tool_call, {
2263
+ get(target, property, receiver) {
2264
+ if (property === 'type') {
2265
+ return captured.type;
2266
+ }
2267
+ if (property === 'function') {
2268
+ return stableFunction;
2269
+ }
2270
+ return Reflect.get(target, property, receiver);
2271
+ },
2272
+ })
2273
+ : tool_call;
2274
+ if (stableTool.type == null) {
2275
+ throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type`);
2276
+ }
2277
+
2278
+ if (stableTool.type === 'custom') {
2279
+ const { custom, type, id, ...toolRest } = stableTool;
2280
+ const { input = '', name, ...customRest } = custom || {};
2281
+ if (name == null) {
2282
+ throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].custom.name`);
2283
+ }
2284
+ return {
2285
+ ...toolRest,
2286
+ id: id || `call_${uuid4()}`,
2287
+ type,
2288
+ custom: { ...customRest, name, input },
2289
+ };
2290
+ }
2291
+
2292
+ const { function: fn, type, id, ...toolRest } = stableTool;
2293
+ const { arguments: args, name, ...fnRest } = fn || {};
2294
+ if (name == null) {
2295
+ throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name`);
2296
+ }
2297
+ if (args == null) {
2298
+ throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments`);
2299
+ }
2300
+
2301
+ return {
2302
+ ...toolRest,
2303
+ id: id || `call_${uuid4()}`,
2304
+ type,
2305
+ function: { ...fnRest, name, arguments: args },
2306
+ };
2307
+ },
2308
+ ),
817
2309
  },
818
2310
  };
819
2311
  }
@@ -841,13 +2333,9 @@ function isCompleteAudio(
841
2333
  return audio?.id != null && audio.data != null && audio.transcript != null && audio.expires_at != null;
842
2334
  }
843
2335
 
844
- function str(x: unknown) {
845
- return JSON.stringify(x);
846
- }
847
-
848
2336
  /**
849
- * Represents a streamed chunk of a chat completion response returned by model,
850
- * based on the provided input.
2337
+ * The chat completion accumulated from every streamed chunk received so far.
2338
+ * Fields within each choice can remain incomplete until generation finishes.
851
2339
  */
852
2340
  export interface ChatCompletionSnapshot {
853
2341
  /**
@@ -859,7 +2347,7 @@ export interface ChatCompletionSnapshot {
859
2347
  * A list of chat completion choices. Can be more than one if `n` is greater
860
2348
  * than 1.
861
2349
  */
862
- choices: Array<ChatCompletionSnapshot.Choice>;
2350
+ choices: ChatCompletionSnapshot.Choice[];
863
2351
 
864
2352
  /**
865
2353
  * The Unix timestamp (in seconds) of when the chat completion was created.
@@ -867,7 +2355,7 @@ export interface ChatCompletionSnapshot {
867
2355
  created: number;
868
2356
 
869
2357
  /**
870
- * The model to generate the completion.
2358
+ * The model generating the completion.
871
2359
  */
872
2360
  model: string;
873
2361
 
@@ -884,10 +2372,12 @@ export interface ChatCompletionSnapshot {
884
2372
  system_fingerprint?: string;
885
2373
  }
886
2374
 
2375
+ /** Nested shapes used by an in-progress chat completion snapshot. */
887
2376
  export namespace ChatCompletionSnapshot {
2377
+ /** One in-progress assistant choice and the metadata accumulated for it. */
888
2378
  export interface Choice {
889
2379
  /**
890
- * A chat completion delta generated by streamed model responses.
2380
+ * The assistant message accumulated from streamed model response deltas.
891
2381
  */
892
2382
  message: Choice.Message;
893
2383
 
@@ -895,8 +2385,8 @@ export namespace ChatCompletionSnapshot {
895
2385
  * The reason the model stopped generating tokens. This will be `stop` if the model
896
2386
  * hit a natural stop point or a provided stop sequence, `length` if the maximum
897
2387
  * number of tokens specified in the request was reached, `content_filter` if
898
- * content was omitted due to a flag from our content filters, or `function_call`
899
- * if the model called a function.
2388
+ * content was omitted due to a flag from our content filters, `tool_calls` if
2389
+ * the model called a tool, or the deprecated `function_call` value.
900
2390
  */
901
2391
  finish_reason: ChatCompletion.Choice['finish_reason'] | null;
902
2392
 
@@ -911,20 +2401,24 @@ export namespace ChatCompletionSnapshot {
911
2401
  index: number;
912
2402
  }
913
2403
 
2404
+ /** Nested message shapes belonging to an in-progress completion choice. */
914
2405
  export namespace Choice {
915
2406
  /**
916
- * A chat completion delta generated by streamed model responses.
2407
+ * The assistant message accumulated from streamed response deltas.
917
2408
  */
918
2409
  export interface Message {
919
2410
  /**
920
- * The contents of the chunk message.
2411
+ * The assistant text accumulated for this message so far.
921
2412
  */
922
2413
  content?: string | null;
923
2414
 
2415
+ /** Audio fields received so far; individual fields can remain absent until generation finishes. */
924
2416
  audio?: Partial<ChatCompletionAudio> | null;
925
2417
 
2418
+ /** The model's refusal text accumulated so far, when the request is refused. */
926
2419
  refusal?: string | null;
927
2420
 
2421
+ /** A best-effort partial parse of structured assistant content. */
928
2422
  parsed?: unknown | null;
929
2423
 
930
2424
  /**
@@ -933,7 +2427,8 @@ export namespace ChatCompletionSnapshot {
933
2427
  */
934
2428
  function_call?: Message.FunctionCall;
935
2429
 
936
- tool_calls?: Array<Message.ToolCall>;
2430
+ /** Function and custom tool calls accumulated so far; inputs may still be incomplete. */
2431
+ tool_calls?: Message.ToolCall[];
937
2432
 
938
2433
  /**
939
2434
  * The role of the author of this message.
@@ -941,22 +2436,30 @@ export namespace ChatCompletionSnapshot {
941
2436
  role?: ChatCompletionRole;
942
2437
  }
943
2438
 
2439
+ /** Nested tool-call shapes belonging to an in-progress assistant message. */
944
2440
  export namespace Message {
945
- export interface ToolCall {
946
- /**
947
- * The ID of the tool call.
948
- */
949
- id: string;
2441
+ /** A function or custom tool call accumulated incrementally from streamed chunks. */
2442
+ export type ToolCall = ToolCall.FunctionToolCall | ToolCall.CustomToolCall;
950
2443
 
951
- function: ToolCall.Function;
2444
+ /** Function and custom details nested under an in-progress tool call. */
2445
+ export namespace ToolCall {
2446
+ /** A function-tool call whose name, identifier, and arguments are streamed incrementally. */
2447
+ export interface FunctionToolCall {
2448
+ /**
2449
+ * The ID of the tool call.
2450
+ */
2451
+ id: string;
952
2452
 
953
- /**
954
- * The type of the tool.
955
- */
956
- type: 'function';
957
- }
2453
+ /** The function name and the complete or partial JSON arguments received so far. */
2454
+ function: ToolCall.Function;
958
2455
 
959
- export namespace ToolCall {
2456
+ /**
2457
+ * The type of the tool.
2458
+ */
2459
+ type: 'function';
2460
+ }
2461
+
2462
+ /** The name and incrementally accumulated arguments of a function-tool call. */
960
2463
  export interface Function {
961
2464
  /**
962
2465
  * The arguments to call the function with, as generated by the model in JSON
@@ -966,6 +2469,7 @@ export namespace ChatCompletionSnapshot {
966
2469
  */
967
2470
  arguments: string;
968
2471
 
2472
+ /** A best-effort partial parse of `arguments` for strict or auto-parseable tools. */
969
2473
  parsed_arguments?: unknown;
970
2474
 
971
2475
  /**
@@ -973,6 +2477,34 @@ export namespace ChatCompletionSnapshot {
973
2477
  */
974
2478
  name: string;
975
2479
  }
2480
+
2481
+ /** A custom-tool call whose name, identifier, and input are streamed incrementally. */
2482
+ export interface CustomToolCall {
2483
+ /**
2484
+ * The ID of the tool call.
2485
+ */
2486
+ id: string;
2487
+
2488
+ /** The custom-tool name and complete or partial input received so far. */
2489
+ custom: CustomToolCall.Custom;
2490
+
2491
+ /**
2492
+ * The type of the tool.
2493
+ */
2494
+ type: 'custom';
2495
+ }
2496
+
2497
+ /** Custom-tool details nested under an in-progress tool call. */
2498
+ export namespace CustomToolCall {
2499
+ /** The name and incrementally accumulated input of a custom-tool call. */
2500
+ export interface Custom {
2501
+ /** The name of the custom tool to call. */
2502
+ name: string;
2503
+
2504
+ /** The custom tool's complete or partial free-form input. */
2505
+ input: string;
2506
+ }
2507
+ }
976
2508
  }
977
2509
 
978
2510
  /**
@@ -997,15 +2529,17 @@ export namespace ChatCompletionSnapshot {
997
2529
  }
998
2530
  }
999
2531
 
1000
- type AssertIsEmpty<T extends {}> = keyof T extends never ? T : never;
2532
+ type AssertIsEmpty<T extends object> = keyof T extends never ? T : never;
1001
2533
 
1002
2534
  /**
1003
2535
  * Ensures the given argument is an empty object, useful for
1004
2536
  * asserting that all known properties on an object have been
1005
2537
  * destructured.
1006
2538
  */
1007
- function assertIsEmpty<T extends {}>(obj: AssertIsEmpty<T>): asserts obj is AssertIsEmpty<T> {
1008
- return;
2539
+ function assertIsEmpty<T extends object>(obj: AssertIsEmpty<T>): asserts obj is AssertIsEmpty<T> {
2540
+ void obj;
1009
2541
  }
1010
2542
 
1011
- function assertNever(_x: never) {}
2543
+ function assertNever(_x: never) {
2544
+ return _x;
2545
+ }