@mastra/core 1.0.0-beta.13 → 1.0.0-beta.15

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 (442) hide show
  1. package/CHANGELOG.md +477 -0
  2. package/dist/agent/agent-legacy.d.ts.map +1 -1
  3. package/dist/agent/agent.d.ts +2 -2
  4. package/dist/agent/agent.d.ts.map +1 -1
  5. package/dist/agent/agent.types.d.ts +6 -7
  6. package/dist/agent/agent.types.d.ts.map +1 -1
  7. package/dist/agent/index.cjs +17 -9
  8. package/dist/agent/index.d.ts +1 -1
  9. package/dist/agent/index.d.ts.map +1 -1
  10. package/dist/agent/index.js +2 -2
  11. package/dist/agent/message-list/index.cjs +3 -3
  12. package/dist/agent/message-list/index.d.ts +1 -1
  13. package/dist/agent/message-list/index.d.ts.map +1 -1
  14. package/dist/agent/message-list/index.js +1 -1
  15. package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
  16. package/dist/agent/trip-wire.d.ts +2 -2
  17. package/dist/agent/trip-wire.d.ts.map +1 -1
  18. package/dist/agent/utils.d.ts +4 -1
  19. package/dist/agent/utils.d.ts.map +1 -1
  20. package/dist/agent/workflows/prepare-stream/index.d.ts +3 -3
  21. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  22. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +3 -3
  23. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  24. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +3 -3
  25. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  26. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +3 -3
  27. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  28. package/dist/bundler/types.d.ts +1 -0
  29. package/dist/bundler/types.d.ts.map +1 -1
  30. package/dist/chunk-2AU5ZHBL.js +79 -0
  31. package/dist/chunk-2AU5ZHBL.js.map +1 -0
  32. package/dist/{chunk-7HEAVZRS.cjs → chunk-2OOMJRXZ.cjs} +15 -15
  33. package/dist/{chunk-7HEAVZRS.cjs.map → chunk-2OOMJRXZ.cjs.map} +1 -1
  34. package/dist/chunk-37YWZMBX.js +27 -0
  35. package/dist/chunk-37YWZMBX.js.map +1 -0
  36. package/dist/{chunk-VETAQUW3.js → chunk-3HDRO3GG.js} +790 -1206
  37. package/dist/chunk-3HDRO3GG.js.map +1 -0
  38. package/dist/{chunk-MRRFTNF4.js → chunk-4DFWV4IR.js} +3 -4
  39. package/dist/chunk-4DFWV4IR.js.map +1 -0
  40. package/dist/{chunk-373OC54J.js → chunk-4HP7CS6L.js} +7 -6
  41. package/dist/chunk-4HP7CS6L.js.map +1 -0
  42. package/dist/{chunk-62Q7K656.js → chunk-4J4M2Q5R.js} +125 -121
  43. package/dist/chunk-4J4M2Q5R.js.map +1 -0
  44. package/dist/{chunk-HWMMIRIF.cjs → chunk-4U7ZLI36.cjs} +3 -2
  45. package/dist/chunk-4U7ZLI36.cjs.map +1 -0
  46. package/dist/{chunk-Z55SJVEC.cjs → chunk-6HJFCSJ4.cjs} +7 -6
  47. package/dist/chunk-6HJFCSJ4.cjs.map +1 -0
  48. package/dist/{chunk-Y7MZ5LJT.cjs → chunk-AAX7ZOM7.cjs} +101 -102
  49. package/dist/chunk-AAX7ZOM7.cjs.map +1 -0
  50. package/dist/{chunk-WPTTKULS.js → chunk-AR5CF3IN.js} +4 -4
  51. package/dist/{chunk-WPTTKULS.js.map → chunk-AR5CF3IN.js.map} +1 -1
  52. package/dist/{chunk-5VZGJTPR.js → chunk-BAZHNX5P.js} +57 -11
  53. package/dist/chunk-BAZHNX5P.js.map +1 -0
  54. package/dist/{chunk-MLKE7HRS.cjs → chunk-BC2VKOH4.cjs} +43 -21
  55. package/dist/chunk-BC2VKOH4.cjs.map +1 -0
  56. package/dist/{chunk-2IU4RGU5.js → chunk-BCUKD2XG.js} +59 -19
  57. package/dist/chunk-BCUKD2XG.js.map +1 -0
  58. package/dist/{chunk-WYGUWVTF.js → chunk-CBQ6WDUJ.js} +9 -9
  59. package/dist/chunk-CBQ6WDUJ.js.map +1 -0
  60. package/dist/chunk-CBVHOGXX.cjs +674 -0
  61. package/dist/chunk-CBVHOGXX.cjs.map +1 -0
  62. package/dist/{chunk-PJAK4U6R.cjs → chunk-CBY37FTP.cjs} +28 -28
  63. package/dist/chunk-CBY37FTP.cjs.map +1 -0
  64. package/dist/{chunk-BQDZIQ3G.js → chunk-D2IFWD7A.js} +365 -137
  65. package/dist/chunk-D2IFWD7A.js.map +1 -0
  66. package/dist/{chunk-R5AJGM55.cjs → chunk-DDK3URK2.cjs} +987 -519
  67. package/dist/chunk-DDK3URK2.cjs.map +1 -0
  68. package/dist/chunk-DRJTNGI4.cjs +263 -0
  69. package/dist/chunk-DRJTNGI4.cjs.map +1 -0
  70. package/dist/{chunk-X6IBA7FP.cjs → chunk-EMLEZXTQ.cjs} +22 -120
  71. package/dist/chunk-EMLEZXTQ.cjs.map +1 -0
  72. package/dist/{chunk-OWIEOL55.cjs → chunk-F75EQ574.cjs} +695 -254
  73. package/dist/chunk-F75EQ574.cjs.map +1 -0
  74. package/dist/{chunk-YPLZDWG7.js → chunk-FJEVLHJT.js} +3 -2
  75. package/dist/chunk-FJEVLHJT.js.map +1 -0
  76. package/dist/chunk-GVAPYQRO.cjs +252 -0
  77. package/dist/chunk-GVAPYQRO.cjs.map +1 -0
  78. package/dist/{chunk-MXBVP7HX.cjs → chunk-GXMJ5URG.cjs} +227 -181
  79. package/dist/chunk-GXMJ5URG.cjs.map +1 -0
  80. package/dist/chunk-H2NHG7QL.cjs +32 -0
  81. package/dist/chunk-H2NHG7QL.cjs.map +1 -0
  82. package/dist/chunk-HAYBGFPA.js +259 -0
  83. package/dist/chunk-HAYBGFPA.js.map +1 -0
  84. package/dist/{chunk-GIWC35YQ.js → chunk-IHISDRFV.js} +299 -49
  85. package/dist/chunk-IHISDRFV.js.map +1 -0
  86. package/dist/{chunk-VEPP75C4.cjs → chunk-IRTICXRZ.cjs} +101 -61
  87. package/dist/chunk-IRTICXRZ.cjs.map +1 -0
  88. package/dist/{chunk-ARAQIW6E.js → chunk-K66U47VL.js} +617 -188
  89. package/dist/chunk-K66U47VL.js.map +1 -0
  90. package/dist/{chunk-LGB4VNZI.cjs → chunk-LOV5NNGK.cjs} +811 -1235
  91. package/dist/chunk-LOV5NNGK.cjs.map +1 -0
  92. package/dist/{chunk-E5BQRAJK.js → chunk-NGWTSHNA.js} +823 -362
  93. package/dist/chunk-NGWTSHNA.js.map +1 -0
  94. package/dist/{chunk-72YCRTEX.cjs → chunk-O2CAMK4A.cjs} +13 -2
  95. package/dist/chunk-O2CAMK4A.cjs.map +1 -0
  96. package/dist/{chunk-4BC5FUAO.js → chunk-O7M7DR4E.js} +6 -5
  97. package/dist/chunk-O7M7DR4E.js.map +1 -0
  98. package/dist/chunk-OTIGV7CL.js +10215 -0
  99. package/dist/chunk-OTIGV7CL.js.map +1 -0
  100. package/dist/{chunk-WYWRMIQC.js → chunk-QXL3F3T2.js} +9 -105
  101. package/dist/chunk-QXL3F3T2.js.map +1 -0
  102. package/dist/{chunk-U4CSOY6T.cjs → chunk-RA2CHJCY.cjs} +399 -171
  103. package/dist/chunk-RA2CHJCY.cjs.map +1 -0
  104. package/dist/chunk-RMV5HJM7.cjs +10237 -0
  105. package/dist/chunk-RMV5HJM7.cjs.map +1 -0
  106. package/dist/{chunk-AGHLXC4I.cjs → chunk-S23TNDXG.cjs} +300 -50
  107. package/dist/chunk-S23TNDXG.cjs.map +1 -0
  108. package/dist/{chunk-H4VUIOWU.cjs → chunk-SSB4AVHU.cjs} +20 -19
  109. package/dist/chunk-SSB4AVHU.cjs.map +1 -0
  110. package/dist/chunk-ST7NBF4H.cjs +84 -0
  111. package/dist/chunk-ST7NBF4H.cjs.map +1 -0
  112. package/dist/{chunk-SZYSDJTN.cjs → chunk-T2LVULCK.cjs} +142 -137
  113. package/dist/chunk-T2LVULCK.cjs.map +1 -0
  114. package/dist/chunk-VE6HQ7H6.js +250 -0
  115. package/dist/chunk-VE6HQ7H6.js.map +1 -0
  116. package/dist/{chunk-RCJLMMTO.js → chunk-XJB7J4UT.js} +30 -8
  117. package/dist/chunk-XJB7J4UT.js.map +1 -0
  118. package/dist/chunk-YV43YEZ6.js +598 -0
  119. package/dist/chunk-YV43YEZ6.js.map +1 -0
  120. package/dist/{chunk-Y36Y5MTD.js → chunk-ZGIVAQRI.js} +13 -3
  121. package/dist/chunk-ZGIVAQRI.js.map +1 -0
  122. package/dist/error/index.cjs +6 -6
  123. package/dist/error/index.d.ts +1 -0
  124. package/dist/error/index.d.ts.map +1 -1
  125. package/dist/error/index.js +1 -1
  126. package/dist/evals/index.cjs +49 -9
  127. package/dist/evals/index.js +2 -2
  128. package/dist/evals/run/index.d.ts.map +1 -1
  129. package/dist/evals/scoreTraces/index.cjs +70 -22
  130. package/dist/evals/scoreTraces/index.cjs.map +1 -1
  131. package/dist/evals/scoreTraces/index.js +63 -15
  132. package/dist/evals/scoreTraces/index.js.map +1 -1
  133. package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
  134. package/dist/evals/scoreTraces/utils.d.ts.map +1 -1
  135. package/dist/evals/types.d.ts +568 -116
  136. package/dist/evals/types.d.ts.map +1 -1
  137. package/dist/index.cjs +2 -2
  138. package/dist/index.js +1 -1
  139. package/dist/integration/index.cjs +2 -2
  140. package/dist/integration/index.js +1 -1
  141. package/dist/llm/index.cjs +21 -21
  142. package/dist/llm/index.js +5 -5
  143. package/dist/llm/model/aisdk/generate-to-stream.d.ts +20 -0
  144. package/dist/llm/model/aisdk/generate-to-stream.d.ts.map +1 -0
  145. package/dist/llm/model/aisdk/v5/model.d.ts +4 -0
  146. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
  147. package/dist/llm/model/aisdk/v6/model.d.ts +43 -0
  148. package/dist/llm/model/aisdk/v6/model.d.ts.map +1 -0
  149. package/dist/llm/model/embedding-router.d.ts +1 -1
  150. package/dist/llm/model/model.d.ts.map +1 -1
  151. package/dist/llm/model/model.loop.d.ts +1 -1
  152. package/dist/llm/model/model.loop.d.ts.map +1 -1
  153. package/dist/llm/model/provider-options.d.ts +2 -1
  154. package/dist/llm/model/provider-options.d.ts.map +1 -1
  155. package/dist/llm/model/provider-types.generated.d.ts +126 -17
  156. package/dist/llm/model/resolve-model.d.ts +2 -2
  157. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  158. package/dist/llm/model/shared.types.d.ts +18 -7
  159. package/dist/llm/model/shared.types.d.ts.map +1 -1
  160. package/dist/loop/index.cjs +2 -2
  161. package/dist/loop/index.js +1 -1
  162. package/dist/loop/network/index.d.ts +8 -8
  163. package/dist/loop/network/index.d.ts.map +1 -1
  164. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts +1 -1
  165. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts.map +1 -1
  166. package/dist/loop/test-utils/MastraLanguageModelV3Mock.d.ts +29 -0
  167. package/dist/loop/test-utils/MastraLanguageModelV3Mock.d.ts.map +1 -0
  168. package/dist/loop/test-utils/fullStream.d.ts +2 -1
  169. package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
  170. package/dist/loop/test-utils/resultObject.d.ts +2 -1
  171. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  172. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  173. package/dist/loop/test-utils/utils-v3.d.ts +55 -0
  174. package/dist/loop/test-utils/utils-v3.d.ts.map +1 -0
  175. package/dist/loop/types.d.ts +10 -8
  176. package/dist/loop/types.d.ts.map +1 -1
  177. package/dist/loop/workflows/agentic-execution/index.d.ts +36 -36
  178. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +25 -25
  179. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  180. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +12 -12
  181. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  182. package/dist/loop/workflows/agentic-loop/index.d.ts +36 -36
  183. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  184. package/dist/loop/workflows/run-state.d.ts +2 -2
  185. package/dist/loop/workflows/run-state.d.ts.map +1 -1
  186. package/dist/loop/workflows/schema.d.ts +12 -12
  187. package/dist/mastra/hooks.d.ts.map +1 -1
  188. package/dist/mastra/index.cjs +2 -2
  189. package/dist/mastra/index.d.ts +7 -2
  190. package/dist/mastra/index.d.ts.map +1 -1
  191. package/dist/mastra/index.js +1 -1
  192. package/dist/mcp/index.cjs +4 -4
  193. package/dist/mcp/index.js +1 -1
  194. package/dist/memory/index.cjs +26 -6
  195. package/dist/memory/index.d.ts +1 -0
  196. package/dist/memory/index.d.ts.map +1 -1
  197. package/dist/memory/index.js +1 -1
  198. package/dist/memory/memory.d.ts +9 -8
  199. package/dist/memory/memory.d.ts.map +1 -1
  200. package/dist/memory/mock.d.ts +2 -1
  201. package/dist/memory/mock.d.ts.map +1 -1
  202. package/dist/memory/types.d.ts +3 -4
  203. package/dist/memory/types.d.ts.map +1 -1
  204. package/dist/memory/working-memory-utils.d.ts +20 -0
  205. package/dist/memory/working-memory-utils.d.ts.map +1 -0
  206. package/dist/models-dev-26XLUKVK.cjs +12 -0
  207. package/dist/{models-dev-D3EKFGAO.cjs.map → models-dev-26XLUKVK.cjs.map} +1 -1
  208. package/dist/models-dev-HUFLQFPB.js +3 -0
  209. package/dist/{models-dev-EO22XOXQ.js.map → models-dev-HUFLQFPB.js.map} +1 -1
  210. package/dist/netlify-CUYK2MZ2.cjs +12 -0
  211. package/dist/{netlify-WE42TZIT.cjs.map → netlify-CUYK2MZ2.cjs.map} +1 -1
  212. package/dist/netlify-J4QPOROO.js +3 -0
  213. package/dist/{netlify-AE4LNCAI.js.map → netlify-J4QPOROO.js.map} +1 -1
  214. package/dist/observability/index.cjs +14 -10
  215. package/dist/observability/index.js +1 -1
  216. package/dist/observability/types/tracing.d.ts +32 -19
  217. package/dist/observability/types/tracing.d.ts.map +1 -1
  218. package/dist/processors/index.cjs +37 -37
  219. package/dist/processors/index.d.ts +9 -7
  220. package/dist/processors/index.d.ts.map +1 -1
  221. package/dist/processors/index.js +1 -1
  222. package/dist/processors/memory/message-history.d.ts +7 -1
  223. package/dist/processors/memory/message-history.d.ts.map +1 -1
  224. package/dist/processors/processors/language-detector.d.ts.map +1 -1
  225. package/dist/processors/processors/moderation.d.ts.map +1 -1
  226. package/dist/processors/processors/pii-detector.d.ts.map +1 -1
  227. package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
  228. package/dist/processors/processors/token-limiter.d.ts +5 -2
  229. package/dist/processors/processors/token-limiter.d.ts.map +1 -1
  230. package/dist/processors/runner.d.ts +2 -0
  231. package/dist/processors/runner.d.ts.map +1 -1
  232. package/dist/processors/step-schema.d.ts +26 -26
  233. package/dist/processors/step-schema.d.ts.map +1 -1
  234. package/dist/provider-registry-6CIGRQVZ.js +3 -0
  235. package/dist/{provider-registry-6LF3NGC5.js.map → provider-registry-6CIGRQVZ.js.map} +1 -1
  236. package/dist/provider-registry-7O7FJ4BS.cjs +40 -0
  237. package/dist/{provider-registry-73FKMXJV.cjs.map → provider-registry-7O7FJ4BS.cjs.map} +1 -1
  238. package/dist/provider-registry.json +295 -45
  239. package/dist/relevance/index.cjs +3 -3
  240. package/dist/relevance/index.cjs.map +1 -1
  241. package/dist/relevance/index.js +2 -2
  242. package/dist/relevance/index.js.map +1 -1
  243. package/dist/server/index.cjs +5 -5
  244. package/dist/server/index.js +1 -1
  245. package/dist/storage/base.d.ts +40 -292
  246. package/dist/storage/base.d.ts.map +1 -1
  247. package/dist/storage/constants.cjs +60 -0
  248. package/dist/storage/constants.cjs.map +1 -0
  249. package/dist/storage/constants.d.ts +6 -1
  250. package/dist/storage/constants.d.ts.map +1 -1
  251. package/dist/storage/constants.js +3 -0
  252. package/dist/storage/constants.js.map +1 -0
  253. package/dist/storage/domains/agents/base.d.ts +2 -2
  254. package/dist/storage/domains/agents/base.d.ts.map +1 -1
  255. package/dist/storage/domains/agents/inmemory.d.ts +5 -4
  256. package/dist/storage/domains/agents/inmemory.d.ts.map +1 -1
  257. package/dist/storage/domains/base.d.ts +20 -0
  258. package/dist/storage/domains/base.d.ts.map +1 -0
  259. package/dist/storage/domains/index.d.ts +3 -0
  260. package/dist/storage/domains/index.d.ts.map +1 -1
  261. package/dist/storage/domains/inmemory-db.d.ts +57 -0
  262. package/dist/storage/domains/inmemory-db.d.ts.map +1 -0
  263. package/dist/storage/domains/memory/base.d.ts +2 -2
  264. package/dist/storage/domains/memory/base.d.ts.map +1 -1
  265. package/dist/storage/domains/memory/inmemory.d.ts +5 -13
  266. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  267. package/dist/storage/domains/observability/base.d.ts +24 -29
  268. package/dist/storage/domains/observability/base.d.ts.map +1 -1
  269. package/dist/storage/domains/observability/index.d.ts +1 -0
  270. package/dist/storage/domains/observability/index.d.ts.map +1 -1
  271. package/dist/storage/domains/observability/inmemory.d.ts +46 -35
  272. package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
  273. package/dist/storage/domains/observability/types.d.ts +2365 -0
  274. package/dist/storage/domains/observability/types.d.ts.map +1 -0
  275. package/dist/storage/domains/scores/base.d.ts +9 -20
  276. package/dist/storage/domains/scores/base.d.ts.map +1 -1
  277. package/dist/storage/domains/scores/inmemory.d.ts +11 -22
  278. package/dist/storage/domains/scores/inmemory.d.ts.map +1 -1
  279. package/dist/storage/domains/shared.d.ts +76 -0
  280. package/dist/storage/domains/shared.d.ts.map +1 -0
  281. package/dist/storage/domains/workflows/base.d.ts +4 -2
  282. package/dist/storage/domains/workflows/base.d.ts.map +1 -1
  283. package/dist/storage/domains/workflows/inmemory.d.ts +10 -9
  284. package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
  285. package/dist/storage/index.cjs +272 -59
  286. package/dist/storage/index.js +2 -1
  287. package/dist/storage/mock.d.ts +28 -174
  288. package/dist/storage/mock.d.ts.map +1 -1
  289. package/dist/storage/types.d.ts +39 -44
  290. package/dist/storage/types.d.ts.map +1 -1
  291. package/dist/storage/utils.d.ts +5 -0
  292. package/dist/storage/utils.d.ts.map +1 -1
  293. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  294. package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
  295. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  296. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  297. package/dist/stream/RunOutput.d.ts.map +1 -1
  298. package/dist/stream/aisdk/v5/execute.d.ts +4 -4
  299. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  300. package/dist/stream/aisdk/v5/output.d.ts +2 -2
  301. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  302. package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
  303. package/dist/stream/base/output.d.ts +7 -5
  304. package/dist/stream/base/output.d.ts.map +1 -1
  305. package/dist/stream/index.cjs +12 -12
  306. package/dist/stream/index.js +2 -2
  307. package/dist/stream/types.d.ts +32 -21
  308. package/dist/stream/types.d.ts.map +1 -1
  309. package/dist/test-utils/llm-mock.cjs +4 -4
  310. package/dist/test-utils/llm-mock.cjs.map +1 -1
  311. package/dist/test-utils/llm-mock.js +1 -1
  312. package/dist/test-utils/llm-mock.js.map +1 -1
  313. package/dist/token-6GSAFR2W-LTZ7QQUP.js +61 -0
  314. package/dist/token-6GSAFR2W-LTZ7QQUP.js.map +1 -0
  315. package/dist/token-6GSAFR2W-UEEINYAN.cjs +63 -0
  316. package/dist/token-6GSAFR2W-UEEINYAN.cjs.map +1 -0
  317. package/dist/token-util-NEHG7TUY-QTFZ26EN.js +8 -0
  318. package/dist/token-util-NEHG7TUY-QTFZ26EN.js.map +1 -0
  319. package/dist/token-util-NEHG7TUY-WZL2DNCG.cjs +10 -0
  320. package/dist/token-util-NEHG7TUY-WZL2DNCG.cjs.map +1 -0
  321. package/dist/tool-loop-agent/index.cjs +20 -0
  322. package/dist/tool-loop-agent/index.cjs.map +1 -0
  323. package/dist/tool-loop-agent/index.d.ts +36 -0
  324. package/dist/tool-loop-agent/index.d.ts.map +1 -0
  325. package/dist/tool-loop-agent/index.js +3 -0
  326. package/dist/tool-loop-agent/index.js.map +1 -0
  327. package/dist/tool-loop-agent/tool-loop-processor.d.ts +30 -0
  328. package/dist/tool-loop-agent/tool-loop-processor.d.ts.map +1 -0
  329. package/dist/tool-loop-agent/utils.d.ts +17 -0
  330. package/dist/tool-loop-agent/utils.d.ts.map +1 -0
  331. package/dist/tools/index.cjs +4 -4
  332. package/dist/tools/index.js +1 -1
  333. package/dist/tools/is-vercel-tool.cjs +2 -2
  334. package/dist/tools/is-vercel-tool.js +1 -1
  335. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  336. package/dist/tools/toolchecks.d.ts +1 -1
  337. package/dist/tools/toolchecks.d.ts.map +1 -1
  338. package/dist/tools/validation.d.ts +1 -1
  339. package/dist/tools/validation.d.ts.map +1 -1
  340. package/dist/utils/zod-utils.d.ts +34 -0
  341. package/dist/utils/zod-utils.d.ts.map +1 -0
  342. package/dist/utils.cjs +39 -22
  343. package/dist/utils.d.ts +3 -3
  344. package/dist/utils.d.ts.map +1 -1
  345. package/dist/utils.js +2 -1
  346. package/dist/vector/embed.d.ts +1 -0
  347. package/dist/vector/embed.d.ts.map +1 -1
  348. package/dist/vector/index.cjs +18 -5
  349. package/dist/vector/index.cjs.map +1 -1
  350. package/dist/vector/index.js +9 -2
  351. package/dist/vector/index.js.map +1 -1
  352. package/dist/vector/vector.d.ts +26 -3
  353. package/dist/vector/vector.d.ts.map +1 -1
  354. package/dist/voice/composite-voice.d.ts.map +1 -1
  355. package/dist/voice/index.cjs +6 -6
  356. package/dist/voice/index.js +1 -1
  357. package/dist/workflows/default.d.ts +2 -0
  358. package/dist/workflows/default.d.ts.map +1 -1
  359. package/dist/workflows/evented/execution-engine.d.ts +1 -0
  360. package/dist/workflows/evented/execution-engine.d.ts.map +1 -1
  361. package/dist/workflows/evented/index.cjs +10 -10
  362. package/dist/workflows/evented/index.js +1 -1
  363. package/dist/workflows/evented/step-executor.d.ts +5 -0
  364. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  365. package/dist/workflows/evented/workflow-event-processor/index.d.ts +20 -4
  366. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  367. package/dist/workflows/evented/workflow-event-processor/loop.d.ts +2 -2
  368. package/dist/workflows/evented/workflow-event-processor/loop.d.ts.map +1 -1
  369. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts +2 -2
  370. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts.map +1 -1
  371. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts +2 -2
  372. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts.map +1 -1
  373. package/dist/workflows/evented/workflow.d.ts +10 -2
  374. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  375. package/dist/workflows/execution-engine.d.ts +1 -0
  376. package/dist/workflows/execution-engine.d.ts.map +1 -1
  377. package/dist/workflows/handlers/control-flow.d.ts +4 -0
  378. package/dist/workflows/handlers/control-flow.d.ts.map +1 -1
  379. package/dist/workflows/handlers/entry.d.ts +3 -2
  380. package/dist/workflows/handlers/entry.d.ts.map +1 -1
  381. package/dist/workflows/handlers/step.d.ts +1 -0
  382. package/dist/workflows/handlers/step.d.ts.map +1 -1
  383. package/dist/workflows/index.cjs +23 -23
  384. package/dist/workflows/index.js +1 -1
  385. package/dist/workflows/types.d.ts +23 -3
  386. package/dist/workflows/types.d.ts.map +1 -1
  387. package/dist/workflows/utils.d.ts +1 -0
  388. package/dist/workflows/utils.d.ts.map +1 -1
  389. package/dist/workflows/workflow.d.ts +26 -9
  390. package/dist/workflows/workflow.d.ts.map +1 -1
  391. package/package.json +20 -12
  392. package/src/llm/model/provider-types.generated.d.ts +126 -17
  393. package/storage/constants.d.ts +1 -0
  394. package/tool-loop-agent.d.ts +1 -0
  395. package/dist/chunk-2IU4RGU5.js.map +0 -1
  396. package/dist/chunk-373OC54J.js.map +0 -1
  397. package/dist/chunk-4BC5FUAO.js.map +0 -1
  398. package/dist/chunk-5VZGJTPR.js.map +0 -1
  399. package/dist/chunk-62Q7K656.js.map +0 -1
  400. package/dist/chunk-72YCRTEX.cjs.map +0 -1
  401. package/dist/chunk-ADADLFDR.js +0 -42
  402. package/dist/chunk-ADADLFDR.js.map +0 -1
  403. package/dist/chunk-AGHLXC4I.cjs.map +0 -1
  404. package/dist/chunk-ARAQIW6E.js.map +0 -1
  405. package/dist/chunk-BQDZIQ3G.js.map +0 -1
  406. package/dist/chunk-E5BQRAJK.js.map +0 -1
  407. package/dist/chunk-GIWC35YQ.js.map +0 -1
  408. package/dist/chunk-H4VUIOWU.cjs.map +0 -1
  409. package/dist/chunk-HWMMIRIF.cjs.map +0 -1
  410. package/dist/chunk-IXZ2T2QX.cjs +0 -448
  411. package/dist/chunk-IXZ2T2QX.cjs.map +0 -1
  412. package/dist/chunk-LGB4VNZI.cjs.map +0 -1
  413. package/dist/chunk-MLKE7HRS.cjs.map +0 -1
  414. package/dist/chunk-MRRFTNF4.js.map +0 -1
  415. package/dist/chunk-MXBVP7HX.cjs.map +0 -1
  416. package/dist/chunk-OWIEOL55.cjs.map +0 -1
  417. package/dist/chunk-PJAK4U6R.cjs.map +0 -1
  418. package/dist/chunk-R5AJGM55.cjs.map +0 -1
  419. package/dist/chunk-RCJLMMTO.js.map +0 -1
  420. package/dist/chunk-SZYSDJTN.cjs.map +0 -1
  421. package/dist/chunk-T2VLUFGG.cjs +0 -47
  422. package/dist/chunk-T2VLUFGG.cjs.map +0 -1
  423. package/dist/chunk-U4CSOY6T.cjs.map +0 -1
  424. package/dist/chunk-UBSPZTQX.js +0 -434
  425. package/dist/chunk-UBSPZTQX.js.map +0 -1
  426. package/dist/chunk-VEPP75C4.cjs.map +0 -1
  427. package/dist/chunk-VETAQUW3.js.map +0 -1
  428. package/dist/chunk-WYGUWVTF.js.map +0 -1
  429. package/dist/chunk-WYWRMIQC.js.map +0 -1
  430. package/dist/chunk-X6IBA7FP.cjs.map +0 -1
  431. package/dist/chunk-Y36Y5MTD.js.map +0 -1
  432. package/dist/chunk-Y7MZ5LJT.cjs.map +0 -1
  433. package/dist/chunk-YPLZDWG7.js.map +0 -1
  434. package/dist/chunk-Z55SJVEC.cjs.map +0 -1
  435. package/dist/llm/model/is-v2-model.d.ts +0 -3
  436. package/dist/llm/model/is-v2-model.d.ts.map +0 -1
  437. package/dist/models-dev-D3EKFGAO.cjs +0 -12
  438. package/dist/models-dev-EO22XOXQ.js +0 -3
  439. package/dist/netlify-AE4LNCAI.js +0 -3
  440. package/dist/netlify-WE42TZIT.cjs +0 -12
  441. package/dist/provider-registry-6LF3NGC5.js +0 -3
  442. package/dist/provider-registry-73FKMXJV.cjs +0 -40
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/delay.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/download-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/resolve.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts","../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/get-context.js","../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/get-vercel-oidc-token.js","../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/index.js","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/vercel-environment.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-authentication-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-invalid-request-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-rate-limit-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-model-not-found-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-internal-server-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/gateway-response-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/create-gateway-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/as-gateway-error.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/extract-api-call-response.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/errors/parse-auth-method.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/gateway-fetch-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/gateway-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/gateway-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/gateway-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+gateway@3.0.0_zod@3.25.76/node_modules/@ai-sdk/gateway/src/gateway-provider.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/platform/node/globalThis.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/version.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/internal/semver.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/internal/global-utils.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/diag/ComponentLogger.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/diag/types.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/diag/internal/logLevelLogger.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/api/diag.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/context/context.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/context/NoopContextManager.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/api/context.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/trace_flags.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/invalid-span-constants.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/NonRecordingSpan.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/context-utils.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/spancontext-utils.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/NoopTracer.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/ProxyTracer.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/NoopTracerProvider.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/ProxyTracerProvider.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace/status.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/api/trace.ts","../../../node_modules/.pnpm/@opentelemetry+api@1.9.0/node_modules/@opentelemetry/api/src/trace-api.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/invalid-argument-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/invalid-tool-input-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/no-object-generated-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/no-output-generated-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/no-such-tool-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/tool-call-repair-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/error/unsupported-model-version-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/invalid-message-role-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/retry-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/logger/log-warnings.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/log-v2-compatibility-warning.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/model/as-embedding-model-v3.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/model/as-language-model-v3.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/model/resolve-model.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/detect-media-type.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/version.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/download/download.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/download/download-function.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/split-data-url.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/data-content.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/as-array.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/convert-to-language-model-prompt.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/create-tool-model-output.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/prepare-call-settings.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/is-non-empty-object.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/prepare-tools-and-tool-choice.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/types/json-value.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/types/provider-metadata.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/content-part.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/message.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/standardize-prompt.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/prompt/wrap-gateway-error.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/assemble-operation-name.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/get-base-telemetry-attributes.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/noop-tracer.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/get-tracer.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/record-span.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/select-telemetry-attributes.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/telemetry/stringify-for-telemetry.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/types/usage.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/merge-objects.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/retry-with-exponential-backoff.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/prepare-retries.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/collect-tool-approvals.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/execute-tool-call.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/extract-text-content.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/generated-file.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/is-approval-needed.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/output.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/fix-json.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/parse-partial-json.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/parse-tool-call.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/step-result.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/stop-condition.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/to-response-messages.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/generate-text.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/prepare-headers.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/text-stream/create-text-stream-response.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/write-to-server-response.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/text-stream/pipe-text-stream-to-response.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/json-to-sse-transform-stream.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/ui-message-stream-headers.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/create-ui-message-stream-response.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/get-response-ui-message-id.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/ui-message-chunks.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui/ui-messages.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui/process-ui-message-stream.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/handle-ui-message-stream-finish.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/ui-message-stream/pipe-ui-message-stream-to-response.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/async-iterable-stream.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/consume-stream.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/create-resolvable-promise.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/create-stitchable-stream.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/util/now.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/run-tools-transformation.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-text/stream-text.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/agent/tool-loop-agent.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/embed/embed.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-object/generate-object.ts","../../../node_modules/.pnpm/ai@6.0.1_zod@3.25.76/node_modules/ai/src/generate-object/stream-object.ts"],"names":["name","marker","symbol","_a","_b","text","resolve","array","getErrorMessage","fetch","APICallError","mediaType","jsonSchema","ZodFirstPartyTypeKind","object","types","x","schema","standardSchema","zodSchema","TypeValidationError","getOriginalFetch","__defProp","__export","getContext","getVercelOidcToken","getVercelOidcTokenSync","import_oidc","lazySchema","z","safeValidateTypes","createJsonResponseHandler","createJsonErrorResponseHandler","postJsonToApi","combineHeaders","VERSION","now","isCompatible","DiagComponentLogger","DiagLogLevel","DiagAPI","__spreadArray","__read","BaseContext","NoopContextManager","API_NAME","ContextAPI","TraceFlags","NonRecordingSpan","NoopTracer","ProxyTracer","NoopTracerProvider","ProxyTracerProvider","SpanStatusCode","TraceAPI","InvalidArgumentError","AISDKError","DownloadError","download","tool","InvalidPromptError","content","convertUint8ArrayToBase64","convertBase64ToUint8Array","asSchema","safeParseJSON","generateId","withUserAgentSuffix","output","callSettings","span","_c","_d","_e","_f","_g","_h","totalUsage","toolCall","part","originalGenerateId","createIdGenerator","isAbortError","result","includeRawChunks","stream","doStreamSpan","embedding","usage"],"mappings":"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","file":"chunk-OTIGV7CL.js","sourcesContent":["/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n // so we shouldn't treat it as a line terminator (yet)\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: ('terminate' | ((error: Error) => void)) | undefined\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: ((retry: number) => void) | undefined\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: ((comment: string) => void) | undefined\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n","export function combineHeaders(\n ...headers: Array<Record<string, string | undefined> | undefined>\n): Record<string, string | undefined> {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...(currentHeaders ?? {}),\n }),\n {},\n ) as Record<string, string | undefined>;\n}\n","/**\n * Creates a Promise that resolves after a specified delay\n * @param delayInMs - The delay duration in milliseconds. If null or undefined, resolves immediately.\n * @param signal - Optional AbortSignal to cancel the delay\n * @returns A Promise that resolves after the specified delay\n * @throws {DOMException} When the signal is aborted\n */\nexport async function delay(\n delayInMs?: number | null,\n options?: {\n abortSignal?: AbortSignal;\n },\n): Promise<void> {\n if (delayInMs == null) {\n return Promise.resolve();\n }\n\n const signal = options?.abortSignal;\n\n return new Promise<void>((resolve, reject) => {\n if (signal?.aborted) {\n reject(createAbortError());\n return;\n }\n\n const timeoutId = setTimeout(() => {\n cleanup();\n resolve();\n }, delayInMs);\n\n const cleanup = () => {\n clearTimeout(timeoutId);\n signal?.removeEventListener('abort', onAbort);\n };\n\n const onAbort = () => {\n cleanup();\n reject(createAbortError());\n };\n\n signal?.addEventListener('abort', onAbort);\n });\n}\n\nfunction createAbortError(): DOMException {\n return new DOMException('Delay was aborted', 'AbortError');\n}\n","/**\n * Delayed promise. It is only constructed once the value is accessed.\n * This is useful to avoid unhandled promise rejections when the promise is created\n * but not accessed.\n */\nexport class DelayedPromise<T> {\n private status:\n | { type: 'pending' }\n | { type: 'resolved'; value: T }\n | { type: 'rejected'; error: unknown } = { type: 'pending' };\n private _promise: Promise<T> | undefined;\n private _resolve: undefined | ((value: T) => void) = undefined;\n private _reject: undefined | ((error: unknown) => void) = undefined;\n\n get promise(): Promise<T> {\n if (this._promise) {\n return this._promise;\n }\n\n this._promise = new Promise<T>((resolve, reject) => {\n if (this.status.type === 'resolved') {\n resolve(this.status.value);\n } else if (this.status.type === 'rejected') {\n reject(this.status.error);\n }\n\n this._resolve = resolve;\n this._reject = reject;\n });\n\n return this._promise;\n }\n\n resolve(value: T): void {\n this.status = { type: 'resolved', value };\n\n if (this._promise) {\n this._resolve?.(value);\n }\n }\n\n reject(error: unknown): void {\n this.status = { type: 'rejected', error };\n\n if (this._promise) {\n this._reject?.(error);\n }\n }\n\n isResolved(): boolean {\n return this.status.type === 'resolved';\n }\n\n isRejected(): boolean {\n return this.status.type === 'rejected';\n }\n\n isPending(): boolean {\n return this.status.type === 'pending';\n }\n}\n","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_DownloadError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class DownloadError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly statusCode?: number;\n readonly statusText?: string;\n\n constructor({\n url,\n statusCode,\n statusText,\n cause,\n message = cause == null\n ? `Failed to download ${url}: ${statusCode} ${statusText}`\n : `Failed to download ${url}: ${cause}`,\n }: {\n url: string;\n statusCode?: number;\n statusText?: string;\n message?: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.statusCode = statusCode;\n this.statusText = statusText;\n }\n\n static isInstance(error: unknown): error is DownloadError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","export function getRuntimeEnvironmentUserAgent(\n globalThisAny: any = globalThis as any,\n): string {\n // Browsers\n if (globalThisAny.window) {\n return `runtime/browser`;\n }\n\n // Cloudflare Workers / Deno / Bun / Node.js >= 21.1\n if (globalThisAny.navigator?.userAgent) {\n return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n }\n\n // Nodes.js < 21.1\n if (globalThisAny.process?.versions?.node) {\n return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n }\n\n if (globalThisAny.EdgeRuntime) {\n return `runtime/vercel-edge`;\n }\n\n return 'runtime/unknown';\n}\n","/**\n * Normalizes different header inputs into a plain record with lower-case keys.\n * Entries with `undefined` or `null` values are removed.\n *\n * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize.\n * @returns A record containing the normalized header entries.\n */\nexport function normalizeHeaders(\n headers:\n | HeadersInit\n | Record<string, string | undefined>\n | Array<[string, string | undefined]>\n | undefined,\n): Record<string, string> {\n if (headers == null) {\n return {};\n }\n\n const normalized: Record<string, string> = {};\n\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n normalized[key.toLowerCase()] = value;\n });\n } else {\n if (!Array.isArray(headers)) {\n headers = Object.entries(headers);\n }\n\n for (const [key, value] of headers) {\n if (value != null) {\n normalized[key.toLowerCase()] = value;\n }\n }\n }\n\n return normalized;\n}\n","import { normalizeHeaders } from './normalize-headers';\n\n/**\n * Appends suffix parts to the `user-agent` header.\n * If a `user-agent` header already exists, the suffix parts are appended to it.\n * If no `user-agent` header exists, a new one is created with the suffix parts.\n * Automatically removes undefined entries from the headers.\n *\n * @param headers - The original headers.\n * @param userAgentSuffixParts - The parts to append to the `user-agent` header.\n * @returns The new headers with the `user-agent` header set or updated.\n */\nexport function withUserAgentSuffix(\n headers: HeadersInit | Record<string, string | undefined> | undefined,\n ...userAgentSuffixParts: string[]\n): Record<string, string> {\n const normalizedHeaders = new Headers(normalizeHeaders(headers));\n\n const currentUserAgentHeader = normalizedHeaders.get('user-agent') || '';\n\n normalizedHeaders.set(\n 'user-agent',\n [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '),\n );\n\n return Object.fromEntries(normalizedHeaders.entries());\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const getFromApi = async <T>({\n url,\n headers = {},\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: {},\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {},\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: {},\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {},\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: {} });\n }\n};\n","/**\n * Checks if the given URL is supported natively by the model.\n *\n * @param mediaType - The media type of the URL. Case-sensitive.\n * @param url - The URL to check.\n * @param supportedUrls - A record where keys are case-sensitive media types (or '*')\n * and values are arrays of RegExp patterns for URLs.\n *\n * @returns `true` if the URL matches a pattern under the specific media type\n * or the wildcard '*', `false` otherwise.\n */\nexport function isUrlSupported({\n mediaType,\n url,\n supportedUrls,\n}: {\n mediaType: string;\n url: string;\n supportedUrls: Record<string, RegExp[]>;\n}): boolean {\n // standardize media type and url to lower case\n url = url.toLowerCase();\n mediaType = mediaType.toLowerCase();\n\n return (\n Object.entries(supportedUrls)\n // standardize supported url map into lowercase prefixes:\n .map(([key, value]) => {\n const mediaType = key.toLowerCase();\n return mediaType === '*' || mediaType === '*/*'\n ? { mediaTypePrefix: '', regexes: value }\n : { mediaTypePrefix: mediaType.replace(/\\*/, ''), regexes: value };\n })\n // gather all regexp pattern from matched media type prefixes:\n .filter(({ mediaTypePrefix }) => mediaType.startsWith(mediaTypePrefix))\n .flatMap(({ regexes }) => regexes)\n // check if any pattern matches the url:\n .some(pattern => pattern.test(url))\n );\n}\n","/**\n * Loads an optional `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @returns The setting value.\n */\nexport function loadOptionalSetting({\n settingValue,\n environmentVariableName,\n}: {\n settingValue: string | undefined;\n environmentVariableName: string;\n}): string | undefined {\n if (typeof settingValue === 'string') {\n return settingValue;\n }\n\n if (settingValue != null || typeof process === 'undefined') {\n return undefined;\n }\n\n settingValue = process.env[environmentVariableName];\n\n if (settingValue == null || typeof settingValue !== 'string') {\n return undefined;\n }\n\n return settingValue;\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n const { stackTraceLimit } = Error;\n try {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n Error.stackTraceLimit = 0;\n } catch (e) {\n // Fallback in case Error is immutable (v8 readonly)\n return _parse(text);\n }\n\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\n\n/**\n * Recursively adds additionalProperties: false to the JSON schema. This is necessary because some providers (e.g. OpenAI) do not support additionalProperties: true.\n */\nexport function addAdditionalPropertiesToJsonSchema(\n jsonSchema: JSONSchema7,\n): JSONSchema7 {\n if (jsonSchema.type === 'object') {\n jsonSchema.additionalProperties = false;\n const properties = jsonSchema.properties;\n if (properties != null) {\n for (const property in properties) {\n properties[property] = addAdditionalPropertiesToJsonSchema(\n properties[property] as JSONSchema7,\n );\n }\n }\n }\n if (jsonSchema.type === 'array' && jsonSchema.items != null) {\n if (Array.isArray(jsonSchema.items)) {\n jsonSchema.items = jsonSchema.items.map(item =>\n addAdditionalPropertiesToJsonSchema(item as JSONSchema7),\n );\n } else {\n jsonSchema.items = addAdditionalPropertiesToJsonSchema(\n jsonSchema.items as JSONSchema7,\n );\n }\n }\n return jsonSchema;\n}\n","import { ZodSchema, ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type DateStrategy =\n | 'format:date-time'\n | 'format:date'\n | 'string'\n | 'integer';\n\nexport const ignoreOverride = Symbol(\n 'Let zodToJsonSchema decide on which parser to use',\n);\n\nexport type OverrideCallback = (\n def: ZodTypeDef,\n refs: Refs,\n seen: Seen | undefined,\n forceResolution?: boolean,\n) => JsonSchema7Type | undefined | typeof ignoreOverride;\n\nexport type PostProcessCallback = (\n jsonSchema: JsonSchema7Type | undefined,\n def: ZodTypeDef,\n refs: Refs,\n) => JsonSchema7Type | undefined;\n\nexport const jsonDescription: PostProcessCallback = (jsonSchema, def) => {\n if (def.description) {\n try {\n return {\n ...jsonSchema,\n ...JSON.parse(def.description),\n };\n } catch {}\n }\n\n return jsonSchema;\n};\n\nexport type Options = {\n name: string | undefined;\n $refStrategy: 'root' | 'relative' | 'none' | 'seen';\n basePath: string[];\n effectStrategy: 'input' | 'any';\n pipeStrategy: 'input' | 'output' | 'all';\n dateStrategy: DateStrategy | DateStrategy[];\n mapStrategy: 'entries' | 'record';\n removeAdditionalStrategy: 'passthrough' | 'strict';\n allowedAdditionalProperties: true | undefined;\n rejectedAdditionalProperties: false | undefined;\n strictUnions: boolean;\n definitionPath: string;\n definitions: Record<string, ZodSchema>;\n errorMessages: boolean;\n patternStrategy: 'escape' | 'preserve';\n applyRegexFlags: boolean;\n emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod';\n base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod';\n nameStrategy: 'ref' | 'title';\n override?: OverrideCallback;\n postProcess?: PostProcessCallback;\n};\n\nexport const defaultOptions: Options = {\n name: undefined,\n $refStrategy: 'root',\n basePath: ['#'],\n effectStrategy: 'input',\n pipeStrategy: 'all',\n dateStrategy: 'format:date-time',\n mapStrategy: 'entries',\n removeAdditionalStrategy: 'passthrough',\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: 'definitions',\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n patternStrategy: 'escape',\n applyRegexFlags: false,\n emailStrategy: 'format:email',\n base64Strategy: 'contentEncoding:base64',\n nameStrategy: 'ref',\n};\n\nexport const getDefaultOptions = (\n options: Partial<Options> | string | undefined,\n) =>\n (typeof options === 'string'\n ? {\n ...defaultOptions,\n name: options,\n }\n : {\n ...defaultOptions,\n ...options,\n }) as Options;\n","export type JsonSchema7AnyType = { $ref?: string };\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n return {};\n}\n","import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ArrayType = {\n type: 'array';\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n const res: JsonSchema7ArrayType = {\n type: 'array',\n };\n if (\n def.type?._def &&\n def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny\n ) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n }\n\n if (def.minLength) {\n res.minItems = def.minLength.value;\n }\n if (def.maxLength) {\n res.maxItems = def.maxLength.value;\n }\n if (def.exactLength) {\n res.minItems = def.exactLength.value;\n res.maxItems = def.exactLength.value;\n }\n return res;\n}\n","import { ZodBigIntDef } from 'zod/v3';\n\nexport type JsonSchema7BigintType = {\n type: 'integer';\n format: 'int64';\n minimum?: BigInt;\n exclusiveMinimum?: BigInt;\n maximum?: BigInt;\n exclusiveMaximum?: BigInt;\n multipleOf?: BigInt;\n};\n\nexport function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType {\n const res: JsonSchema7BigintType = {\n type: 'integer',\n format: 'int64',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","export type JsonSchema7BooleanType = {\n type: 'boolean';\n};\n\nexport function parseBooleanDef(): JsonSchema7BooleanType {\n return { type: 'boolean' };\n}\n","import { ZodBrandedDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n return parseDef(_def.type._def, refs);\n}\n","import { ZodCatchDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodDateDef } from 'zod/v3';\nimport { Refs } from '../refs';\nimport { DateStrategy } from '../options';\n\nexport type JsonSchema7DateType =\n | {\n type: 'integer' | 'string';\n format: 'unix-time' | 'date-time' | 'date';\n minimum?: number;\n maximum?: number;\n }\n | {\n anyOf: JsonSchema7DateType[];\n };\n\nexport function parseDateDef(\n def: ZodDateDef,\n refs: Refs,\n overrideDateStrategy?: DateStrategy,\n): JsonSchema7DateType {\n const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n };\n }\n\n switch (strategy) {\n case 'string':\n case 'format:date-time':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'format:date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'integer':\n return integerDateParser(def);\n }\n}\n\nconst integerDateParser = (def: ZodDateDef) => {\n const res: JsonSchema7DateType = {\n type: 'integer',\n format: 'unix-time',\n };\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minimum = check.value;\n break;\n case 'max':\n res.maximum = check.value;\n break;\n }\n }\n\n return res;\n};\n","import { ZodDefaultDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parseDefaultDef(\n _def: ZodDefaultDef,\n refs: Refs,\n): JsonSchema7Type & { default: any } {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue(),\n };\n}\n","import { ZodEffectsDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport function parseEffectsDef(\n _def: ZodEffectsDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return refs.effectStrategy === 'input'\n ? parseDef(_def.schema._def, refs)\n : parseAnyDef();\n}\n","import { ZodEnumDef } from 'zod/v3';\n\nexport type JsonSchema7EnumType = {\n type: 'string';\n enum: string[];\n};\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n return {\n type: 'string',\n enum: Array.from(def.values),\n };\n}\n","import { ZodIntersectionDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7StringType } from './string';\n\nexport type JsonSchema7AllOfType = {\n allOf: JsonSchema7Type[];\n unevaluatedProperties?: boolean;\n};\n\nconst isJsonSchema7AllOfType = (\n type: JsonSchema7Type | JsonSchema7StringType,\n): type is JsonSchema7AllOfType => {\n if ('type' in type && type.type === 'string') return false;\n return 'allOf' in type;\n};\n\nexport function parseIntersectionDef(\n def: ZodIntersectionDef,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '1'],\n }),\n ].filter((x): x is JsonSchema7Type => !!x);\n\n const mergedAllOf: JsonSchema7Type[] = [];\n // If either of the schemas is an allOf, merge them into a single allOf\n allOf.forEach(schema => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n } else {\n let nestedSchema: JsonSchema7Type = schema;\n if (\n 'additionalProperties' in schema &&\n schema.additionalProperties === false\n ) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ? { allOf: mergedAllOf } : undefined;\n}\n","import { ZodLiteralDef } from 'zod/v3';\n\nexport type JsonSchema7LiteralType =\n | {\n type: 'string' | 'number' | 'integer' | 'boolean';\n const: string | number | boolean;\n }\n | {\n type: 'object' | 'array';\n };\n\nexport function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType {\n const parsedType = typeof def.value;\n if (\n parsedType !== 'bigint' &&\n parsedType !== 'number' &&\n parsedType !== 'boolean' &&\n parsedType !== 'string'\n ) {\n return {\n type: Array.isArray(def.value) ? 'array' : 'object',\n };\n }\n\n return {\n type: parsedType === 'bigint' ? 'integer' : parsedType,\n const: def.value,\n };\n}\n","import { ZodStringDef } from 'zod/v3';\nimport { Refs } from '../refs';\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email:\n /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\n '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n 'u',\n );\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n ipv4Cidr:\n /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n /**\n * Unused\n */\n ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n ipv6Cidr:\n /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url:\n /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n type: 'string';\n minLength?: number;\n maxLength?: number;\n format?:\n | 'email'\n | 'idn-email'\n | 'uri'\n | 'uuid'\n | 'date-time'\n | 'ipv4'\n | 'ipv6'\n | 'date'\n | 'time'\n | 'duration';\n pattern?: string;\n allOf?: {\n pattern: string;\n }[];\n anyOf?: {\n format: string;\n }[];\n contentEncoding?: string;\n};\n\nexport function parseStringDef(\n def: ZodStringDef,\n refs: Refs,\n): JsonSchema7StringType {\n const res: JsonSchema7StringType = {\n type: 'string',\n };\n\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case 'min':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n break;\n case 'max':\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n\n break;\n case 'email':\n switch (refs.emailStrategy) {\n case 'format:email':\n addFormat(res, 'email', check.message, refs);\n break;\n case 'format:idn-email':\n addFormat(res, 'idn-email', check.message, refs);\n break;\n case 'pattern:zod':\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n\n break;\n case 'url':\n addFormat(res, 'uri', check.message, refs);\n break;\n case 'uuid':\n addFormat(res, 'uuid', check.message, refs);\n break;\n case 'regex':\n addPattern(res, check.regex, check.message, refs);\n break;\n case 'cuid':\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case 'cuid2':\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case 'startsWith':\n addPattern(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs,\n );\n break;\n case 'endsWith':\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs,\n );\n break;\n case 'datetime':\n addFormat(res, 'date-time', check.message, refs);\n break;\n case 'date':\n addFormat(res, 'date', check.message, refs);\n break;\n case 'time':\n addFormat(res, 'time', check.message, refs);\n break;\n case 'duration':\n addFormat(res, 'duration', check.message, refs);\n break;\n case 'length':\n res.minLength =\n typeof res.minLength === 'number'\n ? Math.max(res.minLength, check.value)\n : check.value;\n res.maxLength =\n typeof res.maxLength === 'number'\n ? Math.min(res.maxLength, check.value)\n : check.value;\n break;\n case 'includes': {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs,\n );\n break;\n }\n case 'ip': {\n if (check.version !== 'v6') {\n addFormat(res, 'ipv4', check.message, refs);\n }\n if (check.version !== 'v4') {\n addFormat(res, 'ipv6', check.message, refs);\n }\n break;\n }\n case 'base64url':\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case 'jwt':\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case 'cidr': {\n if (check.version !== 'v6') {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== 'v4') {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case 'emoji':\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case 'ulid': {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case 'base64': {\n switch (refs.base64Strategy) {\n case 'format:binary': {\n addFormat(res, 'binary' as any, check.message, refs);\n break;\n }\n\n case 'contentEncoding:base64': {\n res.contentEncoding = 'base64';\n break;\n }\n\n case 'pattern:zod': {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case 'nanoid': {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case 'toLowerCase':\n case 'toUpperCase':\n case 'trim':\n break;\n default:\n /* c8 ignore next */\n ((_: never) => {})(check);\n }\n }\n }\n\n return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n return refs.patternStrategy === 'escape'\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n 'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789',\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n let result = '';\n\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += '\\\\';\n }\n\n result += source[i];\n }\n\n return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n schema: JsonSchema7StringType,\n value: Required<JsonSchema7StringType>['format'],\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.format || schema.anyOf?.some(x => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n\n if (schema.format) {\n schema.anyOf!.push({\n format: schema.format,\n });\n delete schema.format;\n }\n\n schema.anyOf!.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n } else {\n schema.format = value;\n }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n schema: JsonSchema7StringType,\n regex: RegExp,\n message: string | undefined,\n refs: Refs,\n) {\n if (schema.pattern || schema.allOf?.some(x => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n\n if (schema.pattern) {\n schema.allOf!.push({\n pattern: schema.pattern,\n });\n delete schema.pattern;\n }\n\n schema.allOf!.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n } else {\n schema.pattern = stringifyRegExpWithFlags(regex, refs);\n }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n\n // Currently handled flags\n const flags = {\n i: regex.flags.includes('i'), // Case-insensitive\n m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes('s'), // `.` matches newlines\n };\n\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = '';\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n } else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n\n if (flags.m) {\n if (source[i] === '^') {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n } else if (source[i] === '$') {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n\n if (flags.s && source[i] === '.') {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n\n pattern += source[i];\n if (source[i] === '\\\\') {\n isEscaped = true;\n } else if (inCharGroup && source[i] === ']') {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === '[') {\n inCharGroup = true;\n }\n }\n\n try {\n new RegExp(pattern);\n } catch {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n '/',\n )} to a flag-independent form! Falling back to the flag-ignorant source`,\n );\n return regex.source;\n }\n\n return pattern;\n}\n","import {\n ZodFirstPartyTypeKind,\n ZodMapDef,\n ZodRecordDef,\n ZodTypeAny,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseBrandedDef } from './branded';\nimport { JsonSchema7EnumType } from './enum';\nimport { JsonSchema7StringType, parseStringDef } from './string';\n\ntype JsonSchema7RecordPropertyNamesType =\n | Omit<JsonSchema7StringType, 'type'>\n | Omit<JsonSchema7EnumType, 'type'>;\n\nexport type JsonSchema7RecordType = {\n type: 'object';\n additionalProperties?: JsonSchema7Type | true;\n propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n refs: Refs,\n): JsonSchema7RecordType {\n const schema: JsonSchema7RecordType = {\n type: 'object',\n additionalProperties:\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n }) ?? refs.allowedAdditionalProperties,\n };\n\n if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.checks?.length\n ) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values,\n },\n };\n } else if (\n def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n def.keyType._def.type._def.checks?.length\n ) {\n const { type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs,\n ) as JsonSchema7StringType;\n\n return {\n ...schema,\n propertyNames: keyType,\n };\n }\n\n return schema;\n}\n","import { ZodMapDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\nimport { JsonSchema7RecordType, parseRecordDef } from './record';\n\nexport type JsonSchema7MapType = {\n type: 'array';\n maxItems: 125;\n items: {\n type: 'array';\n items: [JsonSchema7Type, JsonSchema7Type];\n minItems: 2;\n maxItems: 2;\n };\n};\n\nexport function parseMapDef(\n def: ZodMapDef,\n refs: Refs,\n): JsonSchema7MapType | JsonSchema7RecordType {\n if (refs.mapStrategy === 'record') {\n return parseRecordDef(def, refs);\n }\n\n const keys =\n parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '0'],\n }) || parseAnyDef();\n const values =\n parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', 'items', '1'],\n }) || parseAnyDef();\n return {\n type: 'array',\n maxItems: 125,\n items: {\n type: 'array',\n items: [keys, values],\n minItems: 2,\n maxItems: 2,\n },\n };\n}\n","import { ZodNativeEnumDef } from 'zod/v3';\n\nexport type JsonSchema7NativeEnumType = {\n type: 'string' | 'number' | ['string', 'number'];\n enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n def: ZodNativeEnumDef,\n): JsonSchema7NativeEnumType {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key: string) => {\n return typeof object[object[key]] !== 'number';\n });\n\n const actualValues = actualKeys.map((key: string) => object[key]);\n\n const parsedTypes = Array.from(\n new Set(actualValues.map((values: string | number) => typeof values)),\n );\n\n return {\n type:\n parsedTypes.length === 1\n ? parsedTypes[0] === 'string'\n ? 'string'\n : 'number'\n : ['string', 'number'],\n enum: actualValues,\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7NeverType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseNeverDef(): JsonSchema7NeverType | undefined {\n return { not: parseAnyDef() };\n}\n","export type JsonSchema7NullType = {\n type: 'null';\n};\n\nexport function parseNullDef(): JsonSchema7NullType {\n return {\n type: 'null',\n };\n}\n","import {\n ZodDiscriminatedUnionDef,\n ZodLiteralDef,\n ZodTypeAny,\n ZodUnionDef,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport const primitiveMappings = {\n ZodString: 'string',\n ZodNumber: 'number',\n ZodBigInt: 'integer',\n ZodBoolean: 'boolean',\n ZodNull: 'null',\n} as const;\ntype ZodPrimitive = keyof typeof primitiveMappings;\ntype JsonSchema7Primitive =\n (typeof primitiveMappings)[keyof typeof primitiveMappings];\n\nexport type JsonSchema7UnionType =\n | JsonSchema7PrimitiveUnionType\n | JsonSchema7AnyOfType;\n\ntype JsonSchema7PrimitiveUnionType =\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n }\n | {\n type: JsonSchema7Primitive | JsonSchema7Primitive[];\n enum: (string | number | bigint | boolean | null)[];\n };\n\ntype JsonSchema7AnyOfType = {\n anyOf: JsonSchema7Type[];\n};\n\nexport function parseUnionDef(\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined {\n const options: readonly ZodTypeAny[] =\n def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\n // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n if (\n options.every(\n x =>\n x._def.typeName in primitiveMappings &&\n (!x._def.checks || !x._def.checks.length),\n )\n ) {\n // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43\n return type && !types.includes(type) ? [...types, type] : types;\n }, []);\n\n return {\n type: types.length > 1 ? types : types[0],\n };\n } else if (\n options.every(x => x._def.typeName === 'ZodLiteral' && !x.description)\n ) {\n // all options literals\n\n const types = options.reduce(\n (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n const type = typeof x._def.value;\n switch (type) {\n case 'string':\n case 'number':\n case 'boolean':\n return [...acc, type];\n case 'bigint':\n return [...acc, 'integer' as const];\n case 'object':\n if (x._def.value === null) return [...acc, 'null' as const];\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return acc;\n }\n },\n [],\n );\n\n if (types.length === options.length) {\n // all the literals are primitive, as far as null can be considered primitive\n\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n },\n [] as (string | number | bigint | boolean | null)[],\n ),\n };\n }\n } else if (options.every(x => x._def.typeName === 'ZodEnum')) {\n return {\n type: 'string',\n enum: options.reduce(\n (acc: string[], x) => [\n ...acc,\n ...x._def.values.filter((x: string) => !acc.includes(x)),\n ],\n [],\n ),\n };\n }\n\n return asAnyOf(def, refs);\n}\n\nconst asAnyOf = (\n def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {\n const anyOf = (\n (def.options instanceof Map\n ? Array.from(def.options.values())\n : def.options) as any[]\n )\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n }),\n )\n .filter(\n (x): x is JsonSchema7Type =>\n !!x &&\n (!refs.strictUnions ||\n (typeof x === 'object' && Object.keys(x).length > 0)),\n );\n\n return anyOf.length ? { anyOf } : undefined;\n};\n","import { ZodNullableDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7NullType } from './null';\nimport { primitiveMappings } from './union';\n\nexport type JsonSchema7NullableType =\n | {\n anyOf: [JsonSchema7Type, JsonSchema7NullType];\n }\n | {\n type: [string, 'null'];\n };\n\nexport function parseNullableDef(\n def: ZodNullableDef,\n refs: Refs,\n): JsonSchema7NullableType | undefined {\n if (\n ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(\n def.innerType._def.typeName,\n ) &&\n (!def.innerType._def.checks || !def.innerType._def.checks.length)\n ) {\n return {\n type: [\n primitiveMappings[\n def.innerType._def.typeName as keyof typeof primitiveMappings\n ],\n 'null',\n ],\n };\n }\n\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '0'],\n });\n\n return base && { anyOf: [base, { type: 'null' }] };\n}\n","import { ZodNumberDef } from 'zod/v3';\n\nexport type JsonSchema7NumberType = {\n type: 'number' | 'integer';\n minimum?: number;\n exclusiveMinimum?: number;\n maximum?: number;\n exclusiveMaximum?: number;\n multipleOf?: number;\n};\n\nexport function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {\n const res: JsonSchema7NumberType = {\n type: 'number',\n };\n\n if (!def.checks) return res;\n\n for (const check of def.checks) {\n switch (check.kind) {\n case 'int':\n res.type = 'integer';\n break;\n case 'min':\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case 'max':\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case 'multipleOf':\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n","import { ZodObjectDef, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ObjectType = {\n type: 'object';\n properties: Record<string, JsonSchema7Type>;\n additionalProperties?: boolean | JsonSchema7Type;\n required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n const result: JsonSchema7ObjectType = {\n type: 'object',\n properties: {},\n };\n\n const required: string[] = [];\n\n const shape = def.shape();\n\n for (const propName in shape) {\n let propDef = shape[propName];\n\n if (propDef === undefined || propDef._def === undefined) {\n continue;\n }\n\n const propOptional = safeIsOptional(propDef);\n\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'properties', propName],\n propertyPath: [...refs.currentPath, 'properties', propName],\n });\n\n if (parsedDef === undefined) {\n continue;\n }\n\n result.properties[propName] = parsedDef;\n\n if (!propOptional) {\n required.push(propName);\n }\n }\n\n if (required.length) {\n result.required = required;\n }\n\n const additionalProperties = decideAdditionalProperties(def, refs);\n\n if (additionalProperties !== undefined) {\n result.additionalProperties = additionalProperties;\n }\n\n return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n if (def.catchall._def.typeName !== 'ZodNever') {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalProperties'],\n });\n }\n\n switch (def.unknownKeys) {\n case 'passthrough':\n return refs.allowedAdditionalProperties;\n case 'strict':\n return refs.rejectedAdditionalProperties;\n case 'strip':\n return refs.removeAdditionalStrategy === 'strict'\n ? refs.allowedAdditionalProperties\n : refs.rejectedAdditionalProperties;\n }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n try {\n return schema.isOptional();\n } catch {\n return true;\n }\n}\n","import { ZodOptionalDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport const parseOptionalDef = (\n def: ZodOptionalDef,\n refs: Refs,\n): JsonSchema7Type | undefined => {\n if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n return parseDef(def.innerType._def, refs);\n }\n\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'anyOf', '1'],\n });\n\n return innerSchema\n ? { anyOf: [{ not: parseAnyDef() }, innerSchema] }\n : parseAnyDef();\n};\n","import { ZodPipelineDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7AllOfType } from './intersection';\n\nexport const parsePipelineDef = (\n def: ZodPipelineDef<any, any>,\n refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n if (refs.pipeStrategy === 'input') {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === 'output') {\n return parseDef(def.out._def, refs);\n }\n\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', '0'],\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n });\n\n return {\n allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n };\n};\n","import { ZodPromiseDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parsePromiseDef(\n def: ZodPromiseDef,\n refs: Refs,\n): JsonSchema7Type | undefined {\n return parseDef(def.type._def, refs);\n}\n","import { ZodSetDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7SetType = {\n type: 'array';\n uniqueItems: true;\n items?: JsonSchema7Type;\n minItems?: number;\n maxItems?: number;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items'],\n });\n\n const schema: JsonSchema7SetType = {\n type: 'array',\n uniqueItems: true,\n items,\n };\n\n if (def.minSize) {\n schema.minItems = def.minSize.value;\n }\n\n if (def.maxSize) {\n schema.maxItems = def.maxSize.value;\n }\n\n return schema;\n}\n","import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7TupleType = {\n type: 'array';\n minItems: number;\n items: JsonSchema7Type[];\n} & (\n | {\n maxItems: number;\n }\n | {\n additionalItems?: JsonSchema7Type;\n }\n);\n\nexport function parseTupleDef(\n def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n refs: Refs,\n): JsonSchema7TupleType {\n if (def.rest) {\n return {\n type: 'array',\n minItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'additionalItems'],\n }),\n };\n } else {\n return {\n type: 'array',\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items\n .map((x, i) =>\n parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, 'items', `${i}`],\n }),\n )\n .reduce(\n (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n [],\n ),\n };\n }\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UndefinedType = {\n not: JsonSchema7AnyType;\n};\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n return {\n not: parseAnyDef(),\n };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UnknownType = JsonSchema7AnyType;\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n return parseAnyDef();\n}\n","import { ZodReadonlyDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from './parsers/any';\nimport { parseArrayDef } from './parsers/array';\nimport { parseBigintDef } from './parsers/bigint';\nimport { parseBooleanDef } from './parsers/boolean';\nimport { parseBrandedDef } from './parsers/branded';\nimport { parseCatchDef } from './parsers/catch';\nimport { parseDateDef } from './parsers/date';\nimport { parseDefaultDef } from './parsers/default';\nimport { parseEffectsDef } from './parsers/effects';\nimport { parseEnumDef } from './parsers/enum';\nimport { parseIntersectionDef } from './parsers/intersection';\nimport { parseLiteralDef } from './parsers/literal';\nimport { parseMapDef } from './parsers/map';\nimport { parseNativeEnumDef } from './parsers/native-enum';\nimport { parseNeverDef } from './parsers/never';\nimport { parseNullDef } from './parsers/null';\nimport { parseNullableDef } from './parsers/nullable';\nimport { parseNumberDef } from './parsers/number';\nimport { parseObjectDef } from './parsers/object';\nimport { parseOptionalDef } from './parsers/optional';\nimport { parsePipelineDef } from './parsers/pipeline';\nimport { parsePromiseDef } from './parsers/promise';\nimport { parseRecordDef } from './parsers/record';\nimport { parseSetDef } from './parsers/set';\nimport { parseStringDef } from './parsers/string';\nimport { parseTupleDef } from './parsers/tuple';\nimport { parseUndefinedDef } from './parsers/undefined';\nimport { parseUnionDef } from './parsers/union';\nimport { parseUnknownDef } from './parsers/unknown';\nimport { Refs } from './refs';\nimport { parseReadonlyDef } from './parsers/readonly';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type InnerDefGetter = () => any;\n\nexport const selectParser = (\n def: any,\n typeName: ZodFirstPartyTypeKind,\n refs: Refs,\n): JsonSchema7Type | undefined | InnerDefGetter => {\n switch (typeName) {\n case ZodFirstPartyTypeKind.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNumber:\n return parseNumberDef(def);\n case ZodFirstPartyTypeKind.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBigInt:\n return parseBigintDef(def);\n case ZodFirstPartyTypeKind.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind.ZodNull:\n return parseNullDef();\n case ZodFirstPartyTypeKind.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind.ZodUnion:\n case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLiteral:\n return parseLiteralDef(def);\n case ZodFirstPartyTypeKind.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind.ZodLazy:\n return () => (def as any).getter()._def;\n case ZodFirstPartyTypeKind.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind.ZodNaN:\n case ZodFirstPartyTypeKind.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind.ZodFunction:\n case ZodFirstPartyTypeKind.ZodVoid:\n case ZodFirstPartyTypeKind.ZodSymbol:\n return undefined;\n default:\n /* c8 ignore next */\n return ((_: never) => undefined)(typeName);\n }\n};\n","export const getRelativePath = (pathA: string[], pathB: string[]) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i]) break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { ignoreOverride } from './options';\nimport { JsonSchema7Type } from './parse-types';\nimport { selectParser } from './select-parser';\nimport { getRelativePath } from './get-relative-path';\nimport { parseAnyDef } from './parsers/any';\n\nexport function parseDef(\n def: ZodTypeDef,\n refs: Refs,\n forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n const seenItem = refs.seen.get(def);\n\n if (refs.override) {\n const overrideResult = refs.override?.(\n def,\n refs,\n seenItem,\n forceResolution,\n );\n\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n\n if (seenSchema !== undefined) {\n return seenSchema;\n }\n }\n\n const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined };\n\n refs.seen.set(def, newItem);\n\n const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs);\n\n // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n const jsonSchema =\n typeof jsonSchemaOrGetter === 'function'\n ? parseDef(jsonSchemaOrGetter(), refs)\n : jsonSchemaOrGetter;\n\n if (jsonSchema) {\n addMeta(def, refs, jsonSchema);\n }\n\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\n newItem.jsonSchema = jsonSchema;\n\n return postProcessResult;\n }\n\n newItem.jsonSchema = jsonSchema;\n\n return jsonSchema;\n}\n\nconst get$ref = (\n item: Seen,\n refs: Refs,\n):\n | {\n $ref: string;\n }\n | {}\n | undefined => {\n switch (refs.$refStrategy) {\n case 'root':\n return { $ref: item.path.join('/') };\n case 'relative':\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case 'none':\n case 'seen': {\n if (\n item.path.length < refs.currentPath.length &&\n item.path.every((value, index) => refs.currentPath[index] === value)\n ) {\n console.warn(\n `Recursive reference detected at ${refs.currentPath.join(\n '/',\n )}! Defaulting to any`,\n );\n\n return parseAnyDef();\n }\n\n return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined;\n }\n }\n};\n\nconst addMeta = (\n def: ZodTypeDef,\n refs: Refs,\n jsonSchema: JsonSchema7Type,\n): JsonSchema7Type => {\n if (def.description) {\n jsonSchema.description = def.description;\n }\n return jsonSchema;\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { getDefaultOptions, Options } from './options';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type Refs = {\n seen: Map<ZodTypeDef, Seen>;\n currentPath: string[];\n propertyPath: string[] | undefined;\n} & Options;\n\nexport type Seen = {\n def: ZodTypeDef;\n path: string[];\n jsonSchema: JsonSchema7Type | undefined;\n};\n\nexport const getRefs = (options?: string | Partial<Options>): Refs => {\n const _options = getDefaultOptions(options);\n const currentPath =\n _options.name !== undefined\n ? [..._options.basePath, _options.definitionPath, _options.name]\n : _options.basePath;\n return {\n ..._options,\n currentPath: currentPath,\n propertyPath: undefined,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: undefined,\n },\n ]),\n ),\n };\n};\n","import { ZodSchema } from 'zod/v3';\nimport { Options } from './options';\nimport { parseDef } from './parse-def';\nimport { JsonSchema7Type } from './parse-types';\nimport { getRefs } from './refs';\nimport { parseAnyDef } from './parsers/any';\n\nconst zod3ToJsonSchema = (\n schema: ZodSchema<any>,\n options?: Partial<Options> | string,\n): JsonSchema7Type & {\n $schema?: string;\n definitions?: {\n [key: string]: JsonSchema7Type;\n };\n} => {\n const refs = getRefs(options);\n\n let definitions =\n typeof options === 'object' && options.definitions\n ? Object.entries(options.definitions).reduce(\n (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({\n ...acc,\n [name]:\n parseDef(\n schema._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n true,\n ) ?? parseAnyDef(),\n }),\n {},\n )\n : undefined;\n\n const name =\n typeof options === 'string'\n ? options\n : options?.nameStrategy === 'title'\n ? undefined\n : options?.name;\n\n const main =\n parseDef(\n schema._def,\n name === undefined\n ? refs\n : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name],\n },\n false,\n ) ?? (parseAnyDef() as JsonSchema7Type);\n\n const title =\n typeof options === 'object' &&\n options.name !== undefined &&\n options.nameStrategy === 'title'\n ? options.name\n : undefined;\n\n if (title !== undefined) {\n main.title = title;\n }\n\n const combined: ReturnType<typeof zod3ToJsonSchema> =\n name === undefined\n ? definitions\n ? {\n ...main,\n [refs.definitionPath]: definitions,\n }\n : main\n : {\n $ref: [\n ...(refs.$refStrategy === 'relative' ? [] : refs.basePath),\n refs.definitionPath,\n name,\n ].join('/'),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main,\n },\n };\n\n combined.$schema = 'http://json-schema.org/draft-07/schema#';\n\n return combined;\n};\n\nexport { zod3ToJsonSchema };\n","import { JSONSchema7, TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1, StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { addAdditionalPropertiesToJsonSchema } from './add-additional-properties-to-json-schema';\nimport { zod3ToJsonSchema } from './to-json-schema/zod3-to-json-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Schema<OBJECT = unknown> = {\n /**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\n [schemaSymbol]: true;\n\n /**\n * Schema type for inference.\n */\n _type: OBJECT;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n\n /**\n * The JSON Schema for the schema. It is passed to the providers.\n */\n readonly jsonSchema: JSONSchema7 | PromiseLike<JSONSchema7>;\n};\n\n/**\n * Creates a schema with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a schema.\n * @returns A function that returns a schema.\n */\nexport function lazySchema<SCHEMA>(\n createSchema: () => Schema<SCHEMA>,\n): LazySchema<SCHEMA> {\n // cache the validator to avoid initializing it multiple times\n let schema: Schema<SCHEMA> | undefined;\n return () => {\n if (schema == null) {\n schema = createSchema();\n }\n return schema;\n };\n}\n\nexport type LazySchema<SCHEMA> = () => Schema<SCHEMA>;\n\nexport type ZodSchema<SCHEMA = any> =\n | z3.Schema<SCHEMA, z3.ZodTypeDef, any>\n | z4.core.$ZodType<SCHEMA, any>;\n\nexport type StandardSchema<SCHEMA = any> = StandardSchemaV1<unknown, SCHEMA> &\n StandardJSONSchemaV1<unknown, SCHEMA>;\n\nexport type FlexibleSchema<SCHEMA = any> =\n | Schema<SCHEMA>\n | LazySchema<SCHEMA>\n | ZodSchema<SCHEMA>\n | StandardSchema<SCHEMA>;\n\nexport type InferSchema<SCHEMA> =\n SCHEMA extends ZodSchema<infer T>\n ? T\n : SCHEMA extends StandardSchema<infer T>\n ? T\n : SCHEMA extends LazySchema<infer T>\n ? T\n : SCHEMA extends Schema<infer T>\n ? T\n : never;\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n jsonSchema:\n | JSONSchema7\n | PromiseLike<JSONSchema7>\n | (() => JSONSchema7 | PromiseLike<JSONSchema7>),\n {\n validate,\n }: {\n validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n } = {},\n): Schema<OBJECT> {\n return {\n [schemaSymbol]: true,\n _type: undefined as OBJECT, // should never be used directly\n get jsonSchema() {\n if (typeof jsonSchema === 'function') {\n jsonSchema = jsonSchema(); // cache the function results\n }\n return jsonSchema;\n },\n validate,\n };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n return (\n typeof value === 'object' &&\n value !== null &&\n schemaSymbol in value &&\n value[schemaSymbol] === true &&\n 'jsonSchema' in value &&\n 'validate' in value\n );\n}\n\nexport function asSchema<OBJECT>(\n schema: FlexibleSchema<OBJECT> | undefined,\n): Schema<OBJECT> {\n return schema == null\n ? jsonSchema({ properties: {}, additionalProperties: false })\n : isSchema(schema)\n ? schema\n : '~standard' in schema\n ? schema['~standard'].vendor === 'zod'\n ? zodSchema(schema as ZodSchema<OBJECT>)\n : standardSchema(schema as StandardSchema<OBJECT>)\n : schema();\n}\n\nfunction standardSchema<OBJECT>(\n standardSchema: StandardSchema<OBJECT>,\n): Schema<OBJECT> {\n return jsonSchema(\n () =>\n standardSchema['~standard'].jsonSchema.input({\n target: 'draft-07',\n }),\n {\n validate: async value => {\n const result = await standardSchema['~standard'].validate(value);\n return 'value' in result\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n },\n },\n );\n}\n\nexport function zod3Schema<OBJECT>(\n zodSchema: z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n zod3ToJsonSchema(zodSchema, {\n $refStrategy: useReferences ? 'root' : 'none',\n }) as JSONSchema7,\n {\n validate: async value => {\n const result = await zodSchema.safeParseAsync(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function zod4Schema<OBJECT>(\n zodSchema: z4.core.$ZodType<OBJECT, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n // default to no references (to support openapi conversion for google)\n const useReferences = options?.useReferences ?? false;\n\n return jsonSchema(\n // defer json schema creation to avoid unnecessary computation when only validation is needed\n () =>\n addAdditionalPropertiesToJsonSchema(\n z4.toJSONSchema(zodSchema, {\n target: 'draft-7',\n io: 'input',\n reused: useReferences ? 'ref' : 'inline',\n }) as JSONSchema7,\n ),\n {\n validate: async value => {\n const result = await z4.safeParseAsync(zodSchema, value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n },\n },\n );\n}\n\nexport function isZod4Schema(\n zodSchema: z4.core.$ZodType<any, any> | z3.Schema<any, z3.ZodTypeDef, any>,\n): zodSchema is z4.core.$ZodType<any, any> {\n // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously\n return '_zod' in zodSchema;\n}\n\nexport function zodSchema<OBJECT>(\n zodSchema:\n | z4.core.$ZodType<OBJECT, any>\n | z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n options?: {\n /**\n * Enables support for references in the schema.\n * This is required for recursive schemas, e.g. with `z.lazy`.\n * However, not all language models and providers support such references.\n * Defaults to `false`.\n */\n useReferences?: boolean;\n },\n): Schema<OBJECT> {\n if (isZod4Schema(zodSchema)) {\n return zod4Schema(zodSchema, options);\n } else {\n return zod3Schema(zodSchema, options);\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { FlexibleSchema, asSchema } from './schema';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleSchema<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: FlexibleSchema<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const actualSchema = asSchema(schema);\n\n try {\n if (actualSchema.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await actualSchema.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { FlexibleSchema } from './schema';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: FlexibleSchema<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleSchema<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: FlexibleSchema<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: FlexibleSchema<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ParseResult, safeParseJSON } from './parse-json';\nimport { FlexibleSchema } from './schema';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: FlexibleSchema<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { MaybePromiseLike } from './maybe-promise-like';\n\nexport type Resolvable<T> = MaybePromiseLike<T> | (() => MaybePromiseLike<T>);\n\n/**\n * Resolves a value that could be a raw value, a Promise, a function returning a value,\n * or a function returning a Promise.\n */\nexport async function resolve<T>(value: Resolvable<T>): Promise<T> {\n // If it's a function, call it to get the value/promise\n if (typeof value === 'function') {\n value = (value as Function)();\n }\n\n // Otherwise just resolve whatever we got (value or promise)\n return Promise.resolve(value as T);\n}\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\nimport { FlexibleSchema } from './schema';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: FlexibleSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: FlexibleSchema<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: FlexibleSchema<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","export function withoutTrailingSlash(url: string | undefined) {\n return url?.replace(/\\/$/, '');\n}\n","export function isAsyncIterable<T = any>(obj: any): obj is AsyncIterable<T> {\n return obj != null && typeof obj[Symbol.asyncIterator] === 'function';\n}\n","import { isAsyncIterable } from '../is-async-iterable';\nimport { ToolExecutionOptions, ToolExecuteFunction } from './tool';\n\nexport async function* executeTool<INPUT, OUTPUT>({\n execute,\n input,\n options,\n}: {\n execute: ToolExecuteFunction<INPUT, OUTPUT>;\n input: INPUT;\n options: ToolExecutionOptions;\n}): AsyncGenerator<\n { type: 'preliminary'; output: OUTPUT } | { type: 'final'; output: OUTPUT }\n> {\n const result = execute(input, options);\n\n if (isAsyncIterable(result)) {\n let lastOutput: OUTPUT | undefined;\n for await (const output of result) {\n lastOutput = output;\n yield { type: 'preliminary', output };\n }\n yield { type: 'final', output: lastOutput! };\n } else {\n yield { type: 'final', output: await result };\n }\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_context_exports = {};\n__export(get_context_exports, {\n SYMBOL_FOR_REQ_CONTEXT: () => SYMBOL_FOR_REQ_CONTEXT,\n getContext: () => getContext\n});\nmodule.exports = __toCommonJS(get_context_exports);\nconst SYMBOL_FOR_REQ_CONTEXT = Symbol.for(\"@vercel/request-context\");\nfunction getContext() {\n const fromSymbol = globalThis;\n return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n SYMBOL_FOR_REQ_CONTEXT,\n getContext\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar get_vercel_oidc_token_exports = {};\n__export(get_vercel_oidc_token_exports, {\n getVercelOidcToken: () => getVercelOidcToken,\n getVercelOidcTokenSync: () => getVercelOidcTokenSync\n});\nmodule.exports = __toCommonJS(get_vercel_oidc_token_exports);\nvar import_get_context = require(\"./get-context\");\nvar import_token_error = require(\"./token-error\");\nasync function getVercelOidcToken() {\n let token = \"\";\n let err;\n try {\n token = getVercelOidcTokenSync();\n } catch (error) {\n err = error;\n }\n try {\n const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([\n await import(\"./token-util.js\"),\n await import(\"./token.js\")\n ]);\n if (!token || isExpired(getTokenPayload(token))) {\n await refreshToken();\n token = getVercelOidcTokenSync();\n }\n } catch (error) {\n if (err?.message && error instanceof Error) {\n error.message = `${err.message}\n${error.message}`;\n }\n throw new import_token_error.VercelOidcTokenError(`Failed to refresh OIDC token`, error);\n }\n return token;\n}\nfunction getVercelOidcTokenSync() {\n const token = (0, import_get_context.getContext)().headers?.[\"x-vercel-oidc-token\"] ?? process.env.VERCEL_OIDC_TOKEN;\n if (!token) {\n throw new Error(\n `The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?`\n );\n }\n return token;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n getVercelOidcToken,\n getVercelOidcTokenSync\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar src_exports = {};\n__export(src_exports, {\n getContext: () => import_get_context.getContext,\n getVercelOidcToken: () => import_get_vercel_oidc_token.getVercelOidcToken,\n getVercelOidcTokenSync: () => import_get_vercel_oidc_token.getVercelOidcTokenSync\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_get_vercel_oidc_token = require(\"./get-vercel-oidc-token\");\nvar import_get_context = require(\"./get-context\");\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n getContext,\n getVercelOidcToken,\n getVercelOidcTokenSync\n});\n","import { getContext } from '@vercel/oidc';\nexport { getVercelOidcToken } from '@vercel/oidc';\n\nexport async function getVercelRequestId(): Promise<string | undefined> {\n return getContext().headers?.['x-vercel-id'];\n}\n","const marker = 'vercel.ai.gateway.error';\nconst symbol = Symbol.for(marker);\n\nexport abstract class GatewayError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n abstract readonly name: string;\n abstract readonly type: string;\n readonly statusCode: number;\n readonly cause?: unknown;\n\n constructor({\n message,\n statusCode = 500,\n cause,\n }: {\n message: string;\n statusCode?: number;\n cause?: unknown;\n }) {\n super(message);\n this.statusCode = statusCode;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is a Gateway Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is a Gateway Error, false otherwise.\n */\n static isInstance(error: unknown): error is GatewayError {\n return GatewayError.hasMarker(error);\n }\n\n static hasMarker(error: unknown): error is GatewayError {\n return (\n typeof error === 'object' &&\n error !== null &&\n symbol in error &&\n (error as any)[symbol] === true\n );\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayAuthenticationError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Authentication failed - invalid API key or OIDC token\n */\nexport class GatewayAuthenticationError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'authentication_error';\n\n constructor({\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayAuthenticationError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n\n /**\n * Creates a contextual error message when authentication fails\n */\n static createContextualError({\n apiKeyProvided,\n oidcTokenProvided,\n message = 'Authentication failed',\n statusCode = 401,\n cause,\n }: {\n apiKeyProvided: boolean;\n oidcTokenProvided: boolean;\n message?: string;\n statusCode?: number;\n cause?: unknown;\n }): GatewayAuthenticationError {\n let contextualMessage: string;\n\n if (apiKeyProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid API key.\n\nCreate a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\n\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.`;\n } else if (oidcTokenProvided) {\n contextualMessage = `AI Gateway authentication failed: Invalid OIDC token.\n\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.\n\nAlternatively, use an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys`;\n } else {\n contextualMessage = `AI Gateway authentication failed: No authentication provided.\n\nOption 1 - API key:\nCreate an API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys\nProvide via 'apiKey' option or 'AI_GATEWAY_API_KEY' environment variable.\n\nOption 2 - OIDC token:\nRun 'npx vercel link' to link your project, then 'vc env pull' to fetch the token.`;\n }\n\n return new GatewayAuthenticationError({\n message: contextualMessage,\n statusCode,\n cause,\n });\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInvalidRequestError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Invalid request - missing headers, malformed data, etc.\n */\nexport class GatewayInvalidRequestError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'invalid_request_error';\n\n constructor({\n message = 'Invalid request',\n statusCode = 400,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInvalidRequestError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayRateLimitError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Rate limit exceeded.\n */\nexport class GatewayRateLimitError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'rate_limit_exceeded';\n\n constructor({\n message = 'Rate limit exceeded',\n statusCode = 429,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayRateLimitError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { z } from 'zod/v4';\nimport { GatewayError } from './gateway-error';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\n\nconst name = 'GatewayModelNotFoundError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport const modelNotFoundParamSchema = lazySchema(() =>\n zodSchema(\n z.object({\n modelId: z.string(),\n }),\n ),\n);\n\n/**\n * Model not found or not available\n */\nexport class GatewayModelNotFoundError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'model_not_found';\n readonly modelId?: string;\n\n constructor({\n message = 'Model not found',\n statusCode = 404,\n modelId,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n modelId?: string;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.modelId = modelId;\n }\n\n static isInstance(error: unknown): error is GatewayModelNotFoundError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { GatewayError } from './gateway-error';\n\nconst name = 'GatewayInternalServerError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Internal server error from the Gateway\n */\nexport class GatewayInternalServerError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'internal_server_error';\n\n constructor({\n message = 'Internal server error',\n statusCode = 500,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n }\n\n static isInstance(error: unknown): error is GatewayInternalServerError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { GatewayError } from './gateway-error';\n\nconst name = 'GatewayResponseError';\nconst marker = `vercel.ai.gateway.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Gateway response parsing error\n */\nexport class GatewayResponseError extends GatewayError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly name = name;\n readonly type = 'response_error';\n readonly response?: unknown;\n readonly validationError?: TypeValidationError;\n\n constructor({\n message = 'Invalid response from Gateway',\n statusCode = 502,\n response,\n validationError,\n cause,\n }: {\n message?: string;\n statusCode?: number;\n response?: unknown;\n validationError?: TypeValidationError;\n cause?: unknown;\n } = {}) {\n super({ message, statusCode, cause });\n this.response = response;\n this.validationError = validationError;\n }\n\n static isInstance(error: unknown): error is GatewayResponseError {\n return GatewayError.hasMarker(error) && symbol in error;\n }\n}\n","import { z } from 'zod/v4';\nimport type { GatewayError } from './gateway-error';\nimport { GatewayAuthenticationError } from './gateway-authentication-error';\nimport { GatewayInvalidRequestError } from './gateway-invalid-request-error';\nimport { GatewayRateLimitError } from './gateway-rate-limit-error';\nimport {\n GatewayModelNotFoundError,\n modelNotFoundParamSchema,\n} from './gateway-model-not-found-error';\nimport { GatewayInternalServerError } from './gateway-internal-server-error';\nimport { GatewayResponseError } from './gateway-response-error';\nimport {\n InferSchema,\n lazySchema,\n safeValidateTypes,\n validateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport async function createGatewayErrorFromResponse({\n response,\n statusCode,\n defaultMessage = 'Gateway request failed',\n cause,\n authMethod,\n}: {\n response: unknown;\n statusCode: number;\n defaultMessage?: string;\n cause?: unknown;\n authMethod?: 'api-key' | 'oidc';\n}): Promise<GatewayError> {\n const parseResult = await safeValidateTypes({\n value: response,\n schema: gatewayErrorResponseSchema,\n });\n\n if (!parseResult.success) {\n return new GatewayResponseError({\n message: `Invalid error response format: ${defaultMessage}`,\n statusCode,\n response,\n validationError: parseResult.error,\n cause,\n });\n }\n\n const validatedResponse: GatewayErrorResponse = parseResult.value;\n const errorType = validatedResponse.error.type;\n const message = validatedResponse.error.message;\n\n switch (errorType) {\n case 'authentication_error':\n return GatewayAuthenticationError.createContextualError({\n apiKeyProvided: authMethod === 'api-key',\n oidcTokenProvided: authMethod === 'oidc',\n statusCode,\n cause,\n });\n case 'invalid_request_error':\n return new GatewayInvalidRequestError({ message, statusCode, cause });\n case 'rate_limit_exceeded':\n return new GatewayRateLimitError({ message, statusCode, cause });\n case 'model_not_found': {\n const modelResult = await safeValidateTypes({\n value: validatedResponse.error.param,\n schema: modelNotFoundParamSchema,\n });\n\n return new GatewayModelNotFoundError({\n message,\n statusCode,\n modelId: modelResult.success ? modelResult.value.modelId : undefined,\n cause,\n });\n }\n case 'internal_server_error':\n return new GatewayInternalServerError({ message, statusCode, cause });\n default:\n return new GatewayInternalServerError({ message, statusCode, cause });\n }\n}\n\nconst gatewayErrorResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.unknown().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n }),\n ),\n);\n\nexport type GatewayErrorResponse = InferSchema<\n typeof gatewayErrorResponseSchema\n>;\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractApiCallResponse, GatewayError } from '.';\nimport { createGatewayErrorFromResponse } from './create-gateway-error';\n\nexport function asGatewayError(\n error: unknown,\n authMethod?: 'api-key' | 'oidc',\n) {\n if (GatewayError.isInstance(error)) {\n return error;\n }\n\n if (APICallError.isInstance(error)) {\n return createGatewayErrorFromResponse({\n response: extractApiCallResponse(error),\n statusCode: error.statusCode ?? 500,\n defaultMessage: 'Gateway request failed',\n cause: error,\n authMethod,\n });\n }\n\n return createGatewayErrorFromResponse({\n response: {},\n statusCode: 500,\n defaultMessage:\n error instanceof Error\n ? `Gateway request failed: ${error.message}`\n : 'Unknown Gateway error',\n cause: error,\n authMethod,\n });\n}\n","import type { APICallError } from '@ai-sdk/provider';\n\nexport function extractApiCallResponse(error: APICallError): unknown {\n if (error.data !== undefined) {\n return error.data;\n }\n if (error.responseBody != null) {\n try {\n return JSON.parse(error.responseBody);\n } catch {\n return error.responseBody;\n }\n }\n return {};\n}\n","import { z } from 'zod/v4';\nimport {\n lazySchema,\n safeValidateTypes,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\nexport const GATEWAY_AUTH_METHOD_HEADER = 'ai-gateway-auth-method' as const;\n\nexport async function parseAuthMethod(\n headers: Record<string, string | undefined>,\n) {\n const result = await safeValidateTypes({\n value: headers[GATEWAY_AUTH_METHOD_HEADER],\n schema: gatewayAuthMethodSchema,\n });\n\n return result.success ? result.value : undefined;\n}\n\nconst gatewayAuthMethodSchema = lazySchema(() =>\n zodSchema(z.union([z.literal('api-key'), z.literal('oidc')])),\n);\n","import {\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n lazySchema,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayLanguageModelEntry } from './gateway-model-entry';\n\ntype GatewayFetchMetadataConfig = GatewayConfig;\n\nexport interface GatewayFetchMetadataResponse {\n models: GatewayLanguageModelEntry[];\n}\n\nexport interface GatewayCreditsResponse {\n /** The remaining gateway credit balance available for API usage */\n balance: string;\n /** The total amount of gateway credits that have been consumed */\n totalUsed: string;\n}\n\nexport class GatewayFetchMetadata {\n constructor(private readonly config: GatewayFetchMetadataConfig) {}\n\n async getAvailableModels(): Promise<GatewayFetchMetadataResponse> {\n try {\n const { value } = await getFromApi({\n url: `${this.config.baseURL}/config`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayAvailableModelsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n\n async getCredits(): Promise<GatewayCreditsResponse> {\n try {\n const baseUrl = new URL(this.config.baseURL);\n\n const { value } = await getFromApi({\n url: `${baseUrl.origin}/v1/credits`,\n headers: await resolve(this.config.headers()),\n successfulResponseHandler: createJsonResponseHandler(\n gatewayCreditsResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n fetch: this.config.fetch,\n });\n\n return value;\n } catch (error) {\n throw await asGatewayError(error);\n }\n }\n}\n\nconst gatewayAvailableModelsResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n models: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullish(),\n pricing: z\n .object({\n input: z.string(),\n output: z.string(),\n input_cache_read: z.string().nullish(),\n input_cache_write: z.string().nullish(),\n })\n .transform(\n ({ input, output, input_cache_read, input_cache_write }) => ({\n input,\n output,\n ...(input_cache_read\n ? { cachedInputTokens: input_cache_read }\n : {}),\n ...(input_cache_write\n ? { cacheCreationInputTokens: input_cache_write }\n : {}),\n }),\n )\n .nullish(),\n specification: z.object({\n specificationVersion: z.literal('v3'),\n provider: z.string(),\n modelId: z.string(),\n }),\n modelType: z.enum(['language', 'embedding', 'image']).nullish(),\n }),\n ),\n }),\n ),\n);\n\nconst gatewayCreditsResponseSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n balance: z.string(),\n total_used: z.string(),\n })\n .transform(({ balance, total_used }) => ({\n balance,\n totalUsed: total_used,\n })),\n ),\n);\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n SharedV3Warning,\n LanguageModelV3FilePart,\n LanguageModelV3StreamPart,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n type ParseResult,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\ntype GatewayChatConfig = GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n};\n\nexport class GatewayLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n readonly supportedUrls = { '*/*': [/.*/] };\n\n constructor(\n readonly modelId: GatewayModelId,\n private readonly config: GatewayChatConfig,\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs(options: LanguageModelV3CallOptions) {\n const { abortSignal: _abortSignal, ...optionsWithoutSignal } = options;\n\n return {\n args: this.maybeEncodeFileParts(optionsWithoutSignal),\n warnings: [],\n };\n }\n\n async doGenerate(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, false),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createJsonResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n ...responseBody,\n request: { body: args },\n response: { headers: responseHeaders, body: rawResponse },\n warnings,\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n async doStream(\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options);\n const { abortSignal } = options;\n\n const resolvedHeaders = await resolve(this.config.headers());\n\n try {\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n options.headers,\n this.getModelConfigHeaders(this.modelId, true),\n await resolve(this.config.o11yHeaders),\n ),\n body: args,\n successfulResponseHandler: createEventSourceResponseHandler(z.any()),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<LanguageModelV3StreamPart>,\n LanguageModelV3StreamPart\n >({\n start(controller) {\n if (warnings.length > 0) {\n controller.enqueue({ type: 'stream-start', warnings });\n }\n },\n transform(chunk, controller) {\n if (chunk.success) {\n const streamPart = chunk.value;\n\n // Handle raw chunks: if this is a raw chunk from the gateway API,\n // only emit it if includeRawChunks is true\n if (streamPart.type === 'raw' && !options.includeRawChunks) {\n return; // Skip raw chunks if not requested\n }\n\n if (\n streamPart.type === 'response-metadata' &&\n streamPart.timestamp &&\n typeof streamPart.timestamp === 'string'\n ) {\n streamPart.timestamp = new Date(streamPart.timestamp);\n }\n\n controller.enqueue(streamPart);\n } else {\n controller.error(\n (chunk as { success: false; error: unknown }).error,\n );\n }\n },\n }),\n ),\n request: { body: args },\n response: { headers: responseHeaders },\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private isFilePart(part: unknown) {\n return (\n part && typeof part === 'object' && 'type' in part && part.type === 'file'\n );\n }\n\n /**\n * Encodes file parts in the prompt to base64. Mutates the passed options\n * instance directly to avoid copying the file data.\n * @param options - The options to encode.\n * @returns The options with the file parts encoded.\n */\n private maybeEncodeFileParts(options: LanguageModelV3CallOptions) {\n for (const message of options.prompt) {\n for (const part of message.content) {\n if (this.isFilePart(part)) {\n const filePart = part as LanguageModelV3FilePart;\n // If the file part is a URL it will get cleanly converted to a string.\n // If it's a binary file attachment we convert it to a data url.\n // In either case, server-side we should only ever see URLs as strings.\n if (filePart.data instanceof Uint8Array) {\n const buffer = Uint8Array.from(filePart.data);\n const base64Data = Buffer.from(buffer).toString('base64');\n filePart.data = new URL(\n `data:${filePart.mediaType || 'application/octet-stream'};base64,${base64Data}`,\n );\n }\n }\n }\n }\n return options;\n }\n\n private getUrl() {\n return `${this.config.baseURL}/language-model`;\n }\n\n private getModelConfigHeaders(modelId: string, streaming: boolean) {\n return {\n 'ai-language-model-specification-version': '2',\n 'ai-language-model-id': modelId,\n 'ai-language-model-streaming': String(streaming),\n };\n }\n}\n","import type {\n EmbeddingModelV3,\n SharedV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n lazySchema,\n postJsonToApi,\n resolve,\n zodSchema,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\nimport type { GatewayConfig } from './gateway-config';\n\nexport class GatewayEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n values,\n ...(providerOptions ? { providerOptions } : {}),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayEmbeddingResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: responseBody.embeddings,\n usage: responseBody.usage ?? undefined,\n providerMetadata:\n responseBody.providerMetadata as unknown as SharedV3ProviderMetadata,\n response: { headers: responseHeaders, body: rawValue },\n warnings: [],\n };\n } catch (error) {\n throw await asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/embedding-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-embedding-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst gatewayEmbeddingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n embeddings: z.array(z.array(z.number())),\n usage: z.object({ tokens: z.number() }).nullish(),\n providerMetadata: z\n .record(z.string(), z.record(z.string(), z.unknown()))\n .optional(),\n }),\n ),\n);\n","import type {\n ImageModelV3,\n ImageModelV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n postJsonToApi,\n resolve,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { GatewayConfig } from './gateway-config';\nimport { asGatewayError } from './errors';\nimport { parseAuthMethod } from './errors/parse-auth-method';\n\nexport class GatewayImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3' as const;\n // Set a very large number to prevent client-side splitting of requests\n readonly maxImagesPerCall = Number.MAX_SAFE_INTEGER;\n\n constructor(\n readonly modelId: string,\n private readonly config: GatewayConfig & {\n provider: string;\n o11yHeaders: Resolvable<Record<string, string>>;\n },\n ) {}\n\n get provider(): string {\n return this.config.provider;\n }\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const resolvedHeaders = await resolve(this.config.headers());\n try {\n const {\n responseHeaders,\n value: responseBody,\n rawValue,\n } = await postJsonToApi({\n url: this.getUrl(),\n headers: combineHeaders(\n resolvedHeaders,\n headers ?? {},\n this.getModelConfigHeaders(),\n await resolve(this.config.o11yHeaders),\n ),\n body: {\n prompt,\n n,\n ...(size && { size }),\n ...(aspectRatio && { aspectRatio }),\n ...(seed && { seed }),\n ...(providerOptions && { providerOptions }),\n },\n successfulResponseHandler: createJsonResponseHandler(\n gatewayImageResponseSchema,\n ),\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.any(),\n errorToMessage: data => data,\n }),\n ...(abortSignal && { abortSignal }),\n fetch: this.config.fetch,\n });\n\n return {\n images: responseBody.images, // Always base64 strings from server\n warnings: responseBody.warnings ?? [],\n providerMetadata:\n responseBody.providerMetadata as ImageModelV3ProviderMetadata,\n response: {\n timestamp: new Date(),\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n } catch (error) {\n throw asGatewayError(error, await parseAuthMethod(resolvedHeaders));\n }\n }\n\n private getUrl() {\n return `${this.config.baseURL}/image-model`;\n }\n\n private getModelConfigHeaders() {\n return {\n 'ai-image-model-specification-version': '2',\n 'ai-model-id': this.modelId,\n };\n }\n}\n\nconst providerMetadataEntrySchema = z\n .object({\n images: z.array(z.unknown()).optional(),\n })\n .catchall(z.unknown());\n\nconst gatewayImageResponseSchema = z.object({\n images: z.array(z.string()), // Always base64 strings over the wire\n warnings: z\n .array(\n z.object({\n type: z.literal('other'),\n message: z.string(),\n }),\n )\n .optional(),\n providerMetadata: z\n .record(z.string(), providerMetadataEntrySchema)\n .optional(),\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n loadOptionalSetting,\n withoutTrailingSlash,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { asGatewayError, GatewayAuthenticationError } from './errors';\nimport {\n GATEWAY_AUTH_METHOD_HEADER,\n parseAuthMethod,\n} from './errors/parse-auth-method';\nimport {\n GatewayFetchMetadata,\n type GatewayFetchMetadataResponse,\n type GatewayCreditsResponse,\n} from './gateway-fetch-metadata';\nimport { GatewayLanguageModel } from './gateway-language-model';\nimport { GatewayEmbeddingModel } from './gateway-embedding-model';\nimport { GatewayImageModel } from './gateway-image-model';\nimport type { GatewayEmbeddingModelId } from './gateway-embedding-model-settings';\nimport type { GatewayImageModelId } from './gateway-image-model-settings';\nimport { getVercelOidcToken, getVercelRequestId } from './vercel-environment';\nimport type { GatewayModelId } from './gateway-language-model-settings';\nimport type {\n LanguageModelV3,\n EmbeddingModelV3,\n ImageModelV3,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport { withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\n\nexport interface GatewayProvider extends ProviderV3 {\n (modelId: GatewayModelId): LanguageModelV3;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: GatewayModelId): LanguageModelV3;\n\n /**\nReturns available providers and models for use with the remote provider.\n */\n getAvailableModels(): Promise<GatewayFetchMetadataResponse>;\n\n /**\nReturns credit information for the authenticated user.\n */\n getCredits(): Promise<GatewayCreditsResponse>;\n\n /**\nCreates a model for generating text embeddings.\n*/\n embeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: GatewayEmbeddingModelId): EmbeddingModelV3;\n\n /**\nCreates a model for generating images.\n*/\n imageModel(modelId: GatewayImageModelId): ImageModelV3;\n}\n\nexport interface GatewayProviderSettings {\n /**\nThe base URL prefix for API calls. Defaults to `https://ai-gateway.vercel.sh/v1/ai`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being sent using the `Authorization` header.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nHow frequently to refresh the metadata cache in milliseconds.\n */\n metadataCacheRefreshMillis?: number;\n\n /**\n * @internal For testing purposes only\n */\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nconst AI_GATEWAY_PROTOCOL_VERSION = '0.0.1';\n\n/**\nCreate a remote provider instance.\n */\nexport function createGatewayProvider(\n options: GatewayProviderSettings = {},\n): GatewayProvider {\n let pendingMetadata: Promise<GatewayFetchMetadataResponse> | null = null;\n let metadataCache: GatewayFetchMetadataResponse | null = null;\n const cacheRefreshMillis =\n options.metadataCacheRefreshMillis ?? 1000 * 60 * 5;\n let lastFetchTime = 0;\n\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n 'https://ai-gateway.vercel.sh/v3/ai';\n\n const getHeaders = async () => {\n const auth = await getGatewayAuthToken(options);\n if (auth) {\n return withUserAgentSuffix(\n {\n Authorization: `Bearer ${auth.token}`,\n 'ai-gateway-protocol-version': AI_GATEWAY_PROTOCOL_VERSION,\n [GATEWAY_AUTH_METHOD_HEADER]: auth.authMethod,\n ...options.headers,\n },\n `ai-sdk/gateway/${VERSION}`,\n );\n }\n\n throw GatewayAuthenticationError.createContextualError({\n apiKeyProvided: false,\n oidcTokenProvided: false,\n statusCode: 401,\n });\n };\n\n const createO11yHeaders = () => {\n const deploymentId = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_DEPLOYMENT_ID',\n });\n const environment = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_ENV',\n });\n const region = loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'VERCEL_REGION',\n });\n\n return async () => {\n const requestId = await getVercelRequestId();\n return {\n ...(deploymentId && { 'ai-o11y-deployment-id': deploymentId }),\n ...(environment && { 'ai-o11y-environment': environment }),\n ...(region && { 'ai-o11y-region': region }),\n ...(requestId && { 'ai-o11y-request-id': requestId }),\n };\n };\n };\n\n const createLanguageModel = (modelId: GatewayModelId) => {\n return new GatewayLanguageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n\n const getAvailableModels = async () => {\n const now = options._internal?.currentDate?.().getTime() ?? Date.now();\n if (!pendingMetadata || now - lastFetchTime > cacheRefreshMillis) {\n lastFetchTime = now;\n\n pendingMetadata = new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getAvailableModels()\n .then(metadata => {\n metadataCache = metadata;\n return metadata;\n })\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n }\n\n return metadataCache ? Promise.resolve(metadataCache) : pendingMetadata;\n };\n\n const getCredits = async () => {\n return new GatewayFetchMetadata({\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n })\n .getCredits()\n .catch(async (error: unknown) => {\n throw await asGatewayError(\n error,\n await parseAuthMethod(await getHeaders()),\n );\n });\n };\n\n const provider = function (modelId: GatewayModelId) {\n if (new.target) {\n throw new Error(\n 'The Gateway Provider model function cannot be called with the new keyword.',\n );\n }\n\n return createLanguageModel(modelId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.getAvailableModels = getAvailableModels;\n provider.getCredits = getCredits;\n provider.imageModel = (modelId: GatewayImageModelId) => {\n return new GatewayImageModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n provider.languageModel = createLanguageModel;\n const createEmbeddingModel = (modelId: GatewayEmbeddingModelId) => {\n return new GatewayEmbeddingModel(modelId, {\n provider: 'gateway',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n o11yHeaders: createO11yHeaders(),\n });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider;\n}\n\nexport const gateway = createGatewayProvider();\n\nexport async function getGatewayAuthToken(\n options: GatewayProviderSettings,\n): Promise<{\n token: string;\n authMethod: 'api-key' | 'oidc';\n} | null> {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'AI_GATEWAY_API_KEY',\n });\n\n if (apiKey) {\n return {\n token: apiKey,\n authMethod: 'api-key',\n };\n }\n\n try {\n const oidcToken = await getVercelOidcToken();\n return {\n token: oidcToken,\n authMethod: 'oidc',\n };\n } catch {\n return null;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(\n ownVersion: string\n): (globalVersion: string) => boolean {\n const acceptedVersions = new Set<string>([ownVersion]);\n const rejectedVersions = new Set<string>();\n\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion: string): boolean {\n return globalVersion === ownVersion;\n };\n }\n\n function _reject(v: string) {\n rejectedVersions.add(v);\n return false;\n }\n\n function _accept(v: string) {\n acceptedVersions.add(v);\n return true;\n }\n\n return function isCompatible(globalVersion: string): boolean {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.major === 0) {\n if (\n ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch\n ) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n }\n\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n\n return _reject(globalVersion);\n };\n}\n\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type,\n instance: OTelGlobalAPI[Type],\n diag: DiagLogger,\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n GLOBAL_OPENTELEMETRY_API_KEY\n ] ?? {\n version: VERSION,\n });\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(\n `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(\n `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n );\n diag.error(err.stack || err.message);\n return false;\n }\n\n api[type] = instance;\n diag.debug(\n `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n );\n\n return true;\n}\n\nexport function getGlobal<Type extends keyof OTelGlobalAPI>(\n type: Type\n): OTelGlobalAPI[Type] | undefined {\n const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n diag.debug(\n `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n );\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype OTelGlobal = {\n [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n version: string;\n\n diag?: DiagLogger;\n trace?: TracerProvider;\n context?: ContextManager;\n metrics?: MeterProvider;\n propagation?: TextMapPropagator;\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nexport class DiagComponentLogger implements DiagLogger {\n private _namespace: string;\n\n constructor(props: ComponentLoggerOptions) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n\n public debug(...args: any[]): void {\n return logProxy('debug', this._namespace, args);\n }\n\n public error(...args: any[]): void {\n return logProxy('error', this._namespace, args);\n }\n\n public info(...args: any[]): void {\n return logProxy('info', this._namespace, args);\n }\n\n public warn(...args: any[]): void {\n return logProxy('warn', this._namespace, args);\n }\n\n public verbose(...args: any[]): void {\n return logProxy('verbose', this._namespace, args);\n }\n}\n\nfunction logProxy(\n funcName: keyof DiagLogger,\n namespace: string,\n args: any\n): void {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n\n args.unshift(namespace);\n return logger[funcName](...(args as Parameters<DiagLogFunction>));\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n /** Log an error scenario that was not expected and caused the requested operation to fail. */\n error: DiagLogFunction;\n\n /**\n * Log a warning scenario to inform the developer of an issues that should be investigated.\n * The requested operation may or may not have succeeded or completed.\n */\n warn: DiagLogFunction;\n\n /**\n * Log a general informational message, this should not affect functionality.\n * This is also the default logging level so this should NOT be used for logging\n * debugging level information.\n */\n info: DiagLogFunction;\n\n /**\n * Log a general debug message that can be useful for identifying a failure.\n * Information logged at this level may include diagnostic details that would\n * help identify a failure scenario.\n * For example: Logging the order of execution of async operations.\n */\n debug: DiagLogFunction;\n\n /**\n * Log a detailed (verbose) trace level logging that can be used to identify failures\n * where debug level logging would be insufficient, this level of tracing can include\n * input and output parameters and as such may include PII information passing through\n * the API. As such it is recommended that this level of tracing should not be enabled\n * in a production environment.\n */\n verbose: DiagLogFunction;\n}\n\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport enum DiagLogLevel {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n NONE = 0,\n\n /** Identifies an error scenario */\n ERROR = 30,\n\n /** Identifies a warning scenario */\n WARN = 50,\n\n /** General informational log message */\n INFO = 60,\n\n /** General debug log message */\n DEBUG = 70,\n\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n VERBOSE = 80,\n\n /** Used to set the logging level to include all logging */\n ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n /**\n * The {@link DiagLogLevel} used to filter logs sent to the logger.\n *\n * @defaultValue DiagLogLevel.INFO\n */\n logLevel?: DiagLogLevel;\n\n /**\n * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n */\n suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n /**\n * Set the global DiagLogger and DiagLogLevel.\n * If a global diag logger is already set, this will override it.\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n /**\n *\n * @param logger - The {@link DiagLogger} instance to set as the default logger.\n * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n * @returns `true` if the logger was successfully registered, else `false`\n */\n setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n maxLevel: DiagLogLevel,\n logger: DiagLogger\n): DiagLogger {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n } else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n\n // In case the logger is null or undefined\n logger = logger || {};\n\n function _filterFunc(\n funcName: keyof DiagLogger,\n theLevel: DiagLogLevel\n ): DiagLogFunction {\n const theFunc = logger[funcName];\n\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () {};\n }\n\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n ComponentLoggerOptions,\n DiagLogFunction,\n DiagLogger,\n DiagLoggerApi,\n DiagLogLevel,\n} from '../diag/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n private static _instance?: DiagAPI;\n\n /** Get the singleton instance of the DiagAPI API */\n public static instance(): DiagAPI {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Private internal constructor\n * @private\n */\n private constructor() {\n function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n return function (...args) {\n const logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) return;\n return logger[funcName](...args);\n };\n }\n\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n\n // DiagAPI specific functions\n\n const setLogger: DiagLoggerApi['setLogger'] = (\n logger,\n optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n ) => {\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error(\n 'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n );\n self.error(err.stack ?? err.message);\n return false;\n }\n\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n\n const oldLogger = getGlobal('diag');\n const newLogger = createLogLevelDiagLogger(\n optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n logger\n );\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = new Error().stack ?? '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(\n `Current logger will overwrite one already registered from ${stack}`\n );\n }\n\n return registerGlobal('diag', newLogger, self, true);\n };\n\n self.setLogger = setLogger;\n\n self.disable = () => {\n unregisterGlobal(API_NAME, self);\n };\n\n self.createComponentLogger = (options: ComponentLoggerOptions) => {\n return new DiagComponentLogger(options);\n };\n\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n\n public setLogger!: DiagLoggerApi['setLogger'];\n /**\n *\n */\n public createComponentLogger!: (\n options: ComponentLoggerOptions\n ) => DiagLogger;\n\n // DiagLogger implementation\n public verbose!: DiagLogFunction;\n public debug!: DiagLogFunction;\n public info!: DiagLogFunction;\n public warn!: DiagLogFunction;\n public error!: DiagLogFunction;\n\n /**\n * Unregister the global logger and return to Noop\n */\n public disable!: () => void;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n private _currentContext!: Map<symbol, unknown>;\n\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext?: Map<symbol, unknown>) {\n // for minification\n const self = this;\n\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n self.getValue = (key: symbol) => self._currentContext.get(key);\n\n self.setValue = (key: symbol, value: unknown): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n\n self.deleteValue = (key: symbol): Context => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n\n /**\n * Get a value from the context.\n *\n * @param key key which identifies a context value\n */\n public getValue!: (key: symbol) => unknown;\n\n /**\n * Create a new context which inherits from this context and has\n * the given key set to the given value.\n *\n * @param key context key for which to set the value\n * @param value value to set for the given key\n */\n public setValue!: (key: symbol, value: unknown) => Context;\n\n /**\n * Return a new context which inherits from this context but does\n * not contain a value for the given key.\n *\n * @param key context key for which to clear a value\n */\n public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n active(): types.Context {\n return ROOT_CONTEXT;\n }\n\n with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n _context: types.Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return fn.call(thisArg, ...args);\n }\n\n bind<T>(_context: types.Context, target: T): T {\n return target;\n }\n\n enable(): this {\n return this;\n }\n\n disable(): this {\n return this;\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n private static _instance?: ContextAPI;\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Context API */\n public static getInstance(): ContextAPI {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n public setGlobalContextManager(contextManager: ContextManager): boolean {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n }\n\n /**\n * Get the currently active context\n */\n public active(): Context {\n return this._getContextManager().active();\n }\n\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n public with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n context: Context,\n fn: F,\n thisArg?: ThisParameterType<F>,\n ...args: A\n ): ReturnType<F> {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n public bind<T>(context: Context, target: T): T {\n return this._getContextManager().bind(context, target);\n }\n\n private _getContextManager(): ContextManager {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n\n /** Disable and remove the global context manager */\n public disable() {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n /** Represents no flag set. */\n NONE = 0x0,\n /** Bit to represent whether trace is sampled in trace flags. */\n SAMPLED = 0x1 << 0,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n constructor(\n private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n ) {}\n\n // Returns a SpanContext.\n spanContext(): SpanContext {\n return this._spanContext;\n }\n\n // By default does nothing\n setAttribute(_key: string, _value: unknown): this {\n return this;\n }\n\n // By default does nothing\n setAttributes(_attributes: SpanAttributes): this {\n return this;\n }\n\n // By default does nothing\n addEvent(_name: string, _attributes?: SpanAttributes): this {\n return this;\n }\n\n addLink(_link: Link): this {\n return this;\n }\n\n addLinks(_links: Link[]): this {\n return this;\n }\n\n // By default does nothing\n setStatus(_status: SpanStatus): this {\n return this;\n }\n\n // By default does nothing\n updateName(_name: string): this {\n return this;\n }\n\n // By default does nothing\n end(_endTime?: TimeInput): void {}\n\n // isRecording always returns false for NonRecordingSpan.\n isRecording(): boolean {\n return false;\n }\n\n // By default does nothing\n recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n context: Context,\n spanContext: SpanContext\n): Context {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n return getSpan(context)?.spanContext();\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n return (\n isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n return new NonRecordingSpan(spanContext);\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n // startSpan starts a noop span.\n startSpan(\n name: string,\n options?: SpanOptions,\n context = contextApi.active()\n ): Span {\n const root = Boolean(options?.root);\n if (root) {\n return new NonRecordingSpan();\n }\n\n const parentFromContext = context && getSpanContext(context);\n\n if (\n isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)\n ) {\n return new NonRecordingSpan(parentFromContext);\n } else {\n return new NonRecordingSpan();\n }\n }\n\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions | undefined,\n ctx: Context | undefined,\n fn: F\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F\n ): ReturnType<F> | undefined {\n let opts: SpanOptions | undefined;\n let ctx: Context | undefined;\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n opts = arg2 as SpanOptions | undefined;\n fn = arg3 as F;\n } else {\n opts = arg2 as SpanOptions | undefined;\n ctx = arg3 as Context | undefined;\n fn = arg4 as F;\n }\n\n const parentContext = ctx ?? contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = setSpan(parentContext, span);\n\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n return (\n typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number'\n );\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n // When a real implementation is provided, this will be it\n private _delegate?: Tracer;\n\n constructor(\n private _provider: TracerDelegator,\n public readonly name: string,\n public readonly version?: string,\n public readonly options?: TracerOptions\n ) {}\n\n startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n return this._getTracer().startSpan(name, options, context);\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(\n _name: string,\n _options: F | SpanOptions,\n _context?: F | Context,\n _fn?: F\n ): ReturnType<F> {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n private _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n\n const tracer = this._provider.getDelegateTracer(\n this.name,\n this.version,\n this.options\n );\n\n if (!tracer) {\n return NOOP_TRACER;\n }\n\n this._delegate = tracer;\n return this._delegate;\n }\n}\n\nexport interface TracerDelegator {\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n getTracer(\n _name?: string,\n _version?: string,\n _options?: TracerOptions\n ): Tracer {\n return new NoopTracer();\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nexport class ProxyTracerProvider implements TracerProvider {\n private _delegate?: TracerProvider;\n\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n return (\n this.getDelegateTracer(name, version, options) ??\n new ProxyTracer(this, name, version, options)\n );\n }\n\n getDelegate(): TracerProvider {\n return this._delegate ?? NOOP_TRACER_PROVIDER;\n }\n\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate: TracerProvider) {\n this._delegate = delegate;\n }\n\n getDelegateTracer(\n name: string,\n version?: string,\n options?: TracerOptions\n ): Tracer | undefined {\n return this._delegate?.getTracer(name, version, options);\n }\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n /** The status code of this message. */\n code: SpanStatusCode;\n /** A developer-facing error message. */\n message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n /**\n * The default status.\n */\n UNSET = 0,\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n OK = 1,\n /**\n * The operation contains an error.\n */\n ERROR = 2,\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getGlobal,\n registerGlobal,\n unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n isSpanContextValid,\n wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n deleteSpan,\n getActiveSpan,\n getSpan,\n getSpanContext,\n setSpan,\n setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n private static _instance?: TraceAPI;\n\n private _proxyTracerProvider = new ProxyTracerProvider();\n\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n private constructor() {}\n\n /** Get the singleton instance of the Trace API */\n public static getInstance(): TraceAPI {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n\n return this._instance;\n }\n\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n public setGlobalTracerProvider(provider: TracerProvider): boolean {\n const success = registerGlobal(\n API_NAME,\n this._proxyTracerProvider,\n DiagAPI.instance()\n );\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n\n /**\n * Returns the global tracer provider.\n */\n public getTracerProvider(): TracerProvider {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n }\n\n /**\n * Returns a tracer from the global tracer provider.\n */\n public getTracer(name: string, version?: string): Tracer {\n return this.getTracerProvider().getTracer(name, version);\n }\n\n /** Remove the global tracer provider */\n public disable() {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n }\n\n public wrapSpanContext = wrapSpanContext;\n\n public isSpanContextValid = isSpanContextValid;\n\n public deleteSpan = deleteSpan;\n\n public getSpan = getSpan;\n\n public getActiveSpan = getActiveSpan;\n\n public getSpanContext = getSpanContext;\n\n public setSpan = setSpan;\n\n public setSpanContext = setSpanContext;\n}\n","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly parameter: string;\n readonly value: unknown;\n\n constructor({\n parameter,\n value,\n message,\n }: {\n parameter: string;\n value: unknown;\n message: string;\n }) {\n super({\n name,\n message: `Invalid argument for parameter ${parameter}: ${message}`,\n });\n\n this.parameter = parameter;\n this.value = value;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError, getErrorMessage } from '@ai-sdk/provider';\n\nconst name = 'AI_InvalidToolInputError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class InvalidToolInputError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly toolName: string;\n readonly toolInput: string;\n\n constructor({\n toolInput,\n toolName,\n cause,\n message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`,\n }: {\n message?: string;\n toolInput: string;\n toolName: string;\n cause: unknown;\n }) {\n super({ name, message, cause });\n\n this.toolInput = toolInput;\n this.toolName = toolName;\n }\n\n static isInstance(error: unknown): error is InvalidToolInputError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\nimport { FinishReason } from '../types/language-model';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { LanguageModelUsage } from '../types/usage';\n\nconst name = 'AI_NoObjectGeneratedError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\nThrown when no object could be generated. This can have several causes:\n\n- The model failed to generate a response.\n- The model generated a response that could not be parsed.\n- The model generated a response that could not be validated against the schema.\n\nThe error contains the following properties:\n\n- `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.\n */\nexport class NoObjectGeneratedError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.\n */\n readonly text: string | undefined;\n\n /**\n The response metadata.\n */\n readonly response: LanguageModelResponseMetadata | undefined;\n\n /**\n The usage of the model.\n */\n readonly usage: LanguageModelUsage | undefined;\n\n /**\n Reason why the model finished generating a response.\n */\n readonly finishReason: FinishReason | undefined;\n\n constructor({\n message = 'No object generated.',\n cause,\n text,\n response,\n usage,\n finishReason,\n }: {\n message?: string;\n cause?: Error;\n text?: string;\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n }) {\n super({ name, message, cause });\n\n this.text = text;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n\n static isInstance(error: unknown): error is NoObjectGeneratedError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_NoOutputGeneratedError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\nThrown when no LLM output was generated, e.g. because of errors.\n */\nexport class NoOutputGeneratedError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({\n message = 'No output generated.',\n cause,\n }: {\n message?: string;\n cause?: Error;\n } = {}) {\n super({ name, message, cause });\n }\n\n static isInstance(error: unknown): error is NoOutputGeneratedError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_NoSuchToolError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class NoSuchToolError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly toolName: string;\n readonly availableTools: string[] | undefined;\n\n constructor({\n toolName,\n availableTools = undefined,\n message = `Model tried to call unavailable tool '${toolName}'. ${\n availableTools === undefined\n ? 'No tools are available.'\n : `Available tools: ${availableTools.join(', ')}.`\n }`,\n }: {\n toolName: string;\n availableTools?: string[] | undefined;\n message?: string;\n }) {\n super({ name, message });\n\n this.toolName = toolName;\n this.availableTools = availableTools;\n }\n\n static isInstance(error: unknown): error is NoSuchToolError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError, getErrorMessage } from '@ai-sdk/provider';\nimport { InvalidToolInputError } from './invalid-tool-input-error';\nimport { NoSuchToolError } from './no-such-tool-error';\n\nconst name = 'AI_ToolCallRepairError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class ToolCallRepairError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly originalError: NoSuchToolError | InvalidToolInputError;\n\n constructor({\n cause,\n originalError,\n message = `Error repairing tool call: ${getErrorMessage(cause)}`,\n }: {\n message?: string;\n cause: unknown;\n originalError: NoSuchToolError | InvalidToolInputError;\n }) {\n super({ name, message, cause });\n this.originalError = originalError;\n }\n\n static isInstance(error: unknown): error is ToolCallRepairError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\n/**\nError that is thrown when a model with an unsupported version is used.\n */\nexport class UnsupportedModelVersionError extends AISDKError {\n readonly version: string;\n readonly provider: string;\n readonly modelId: string;\n\n constructor(options: { version: string; provider: string; modelId: string }) {\n super({\n name: 'AI_UnsupportedModelVersionError',\n message:\n `Unsupported model version ${options.version} for provider \"${options.provider}\" and model \"${options.modelId}\". ` +\n `AI SDK 5 only supports models that implement specification version \"v2\".`,\n });\n\n this.version = options.version;\n this.provider = options.provider;\n this.modelId = options.modelId;\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_InvalidMessageRoleError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class InvalidMessageRoleError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly role: string;\n\n constructor({\n role,\n message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".`,\n }: {\n role: string;\n message?: string;\n }) {\n super({ name, message });\n\n this.role = role;\n }\n\n static isInstance(error: unknown): error is InvalidMessageRoleError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_RetryError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport type RetryErrorReason =\n | 'maxRetriesExceeded'\n | 'errorNotRetryable'\n | 'abort';\n\nexport class RetryError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n // note: property order determines debugging output\n readonly reason: RetryErrorReason;\n readonly lastError: unknown;\n readonly errors: Array<unknown>;\n\n constructor({\n message,\n reason,\n errors,\n }: {\n message: string;\n reason: RetryErrorReason;\n errors: Array<unknown>;\n }) {\n super({ name, message });\n\n this.reason = reason;\n this.errors = errors;\n\n // separate our last error to make debugging via log easier:\n this.lastError = errors[errors.length - 1];\n }\n\n static isInstance(error: unknown): error is RetryError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { Warning } from '../types';\n\n/**\n * A function for logging warnings.\n *\n * You can assign it to the `AI_SDK_LOG_WARNINGS` global variable to use it as the default warning logger.\n *\n * @example\n * ```ts\n * globalThis.AI_SDK_LOG_WARNINGS = (options) => {\n * console.log('WARNINGS:', options.warnings, options.provider, options.model);\n * };\n * ```\n */\nexport type LogWarningsFunction = (options: {\n /**\n * The warnings returned by the model provider.\n */\n warnings: Warning[];\n\n /**\n * The provider id used for the call.\n */\n provider: string;\n\n /**\n * The model id used for the call.\n */\n model: string;\n}) => void;\n\n/**\n * Formats a warning object into a human-readable string with clear AI SDK branding\n */\nfunction formatWarning({\n warning,\n provider,\n model,\n}: {\n warning: Warning;\n provider: string;\n model: string;\n}): string {\n const prefix = `AI SDK Warning (${provider} / ${model}):`;\n\n switch (warning.type) {\n case 'unsupported': {\n let message = `${prefix} The feature \"${warning.feature}\" is not supported.`;\n if (warning.details) {\n message += ` ${warning.details}`;\n }\n return message;\n }\n\n case 'compatibility': {\n let message = `${prefix} The feature \"${warning.feature}\" is used in a compatibility mode.`;\n if (warning.details) {\n message += ` ${warning.details}`;\n }\n return message;\n }\n\n case 'other': {\n return `${prefix} ${warning.message}`;\n }\n\n default: {\n // Fallback for any unknown warning types\n return `${prefix} ${JSON.stringify(warning, null, 2)}`;\n }\n }\n}\n\nexport const FIRST_WARNING_INFO_MESSAGE =\n 'AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.';\n\nlet hasLoggedBefore = false;\n\nexport const logWarnings: LogWarningsFunction = options => {\n // if the warnings array is empty, do nothing\n if (options.warnings.length === 0) {\n return;\n }\n\n const logger = globalThis.AI_SDK_LOG_WARNINGS;\n\n // if the logger is set to false, do nothing\n if (logger === false) {\n return;\n }\n\n // use the provided logger if it is a function\n if (typeof logger === 'function') {\n logger(options);\n return;\n }\n\n // display information note on first call\n if (!hasLoggedBefore) {\n hasLoggedBefore = true;\n console.info(FIRST_WARNING_INFO_MESSAGE);\n }\n\n // default behavior: log warnings to the console\n for (const warning of options.warnings) {\n console.warn(\n formatWarning({\n warning,\n provider: options.provider,\n model: options.model,\n }),\n );\n }\n};\n\n// Reset function for testing purposes\nexport const resetLogWarningsState = () => {\n hasLoggedBefore = false;\n};\n","import { logWarnings } from '../logger/log-warnings';\n\nexport function logV2CompatibilityWarning({\n provider,\n modelId,\n}: {\n provider: string;\n modelId: string;\n}): void {\n logWarnings({\n warnings: [\n {\n type: 'compatibility',\n feature: 'specificationVersion',\n details: `Using v2 specification compatibility mode. Some features may not be available.`,\n },\n ],\n provider,\n model: modelId,\n });\n}\n","import { EmbeddingModelV2, EmbeddingModelV3 } from '@ai-sdk/provider';\nimport { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning';\n\nexport function asEmbeddingModelV3(\n model: EmbeddingModelV2<string> | EmbeddingModelV3,\n): EmbeddingModelV3 {\n if (model.specificationVersion === 'v3') {\n return model;\n }\n\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId,\n });\n\n // TODO this could break, we need to properly map v2 to v3\n // and support all relevant v3 properties:\n return new Proxy(model, {\n get(target, prop: keyof EmbeddingModelV2<string>) {\n if (prop === 'specificationVersion') return 'v3';\n return target[prop];\n },\n }) as unknown as EmbeddingModelV3;\n}\n","import {\n LanguageModelV2,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n LanguageModelV3,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\nimport { logV2CompatibilityWarning } from '../util/log-v2-compatibility-warning';\n\nexport function asLanguageModelV3(\n model: LanguageModelV2 | LanguageModelV3,\n): LanguageModelV3 {\n if (model.specificationVersion === 'v3') {\n return model;\n }\n\n logV2CompatibilityWarning({\n provider: model.provider,\n modelId: model.modelId,\n });\n\n // TODO this could break, we need to properly map v2 to v3\n // and support all relevant v3 properties:\n return new Proxy(model, {\n get(target, prop: keyof LanguageModelV2) {\n switch (prop) {\n case 'specificationVersion':\n return 'v3';\n case 'doGenerate':\n return async (...args: Parameters<LanguageModelV2['doGenerate']>) => {\n const result = await target.doGenerate(...args);\n return {\n ...result,\n finishReason: convertV2FinishReasonToV3(result.finishReason),\n usage: convertV2UsageToV3(result.usage),\n };\n };\n case 'doStream':\n return async (...args: Parameters<LanguageModelV2['doStream']>) => {\n const result = await target.doStream(...args);\n return {\n ...result,\n stream: convertV2StreamToV3(result.stream),\n };\n };\n default:\n return target[prop];\n }\n },\n }) as unknown as LanguageModelV3;\n}\n\nfunction convertV2StreamToV3(\n stream: ReadableStream<LanguageModelV2StreamPart>,\n): ReadableStream<LanguageModelV3StreamPart> {\n return stream.pipeThrough(\n new TransformStream<LanguageModelV2StreamPart, LanguageModelV3StreamPart>({\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'finish':\n controller.enqueue({\n ...chunk,\n finishReason: convertV2FinishReasonToV3(chunk.finishReason),\n usage: convertV2UsageToV3(chunk.usage),\n });\n break;\n default:\n // TODO: AI SDK 6 - no casting (stream parts need to be mapped)\n controller.enqueue(chunk as LanguageModelV3StreamPart);\n break;\n }\n },\n }),\n );\n}\n\nfunction convertV2FinishReasonToV3(\n finishReason: LanguageModelV2FinishReason,\n): LanguageModelV3FinishReason {\n return {\n unified: finishReason === 'unknown' ? 'other' : finishReason,\n raw: undefined,\n };\n}\n\nfunction convertV2UsageToV3(usage: LanguageModelV2Usage): LanguageModelV3Usage {\n return {\n inputTokens: {\n total: usage.inputTokens,\n noCache: undefined,\n cacheRead: usage.cachedInputTokens,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: usage.outputTokens,\n text: undefined,\n reasoning: usage.reasoningTokens,\n },\n };\n}\n","import { gateway } from '@ai-sdk/gateway';\nimport {\n EmbeddingModelV3,\n ImageModelV3,\n LanguageModelV3,\n ProviderV3,\n SpeechModelV3,\n TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport { UnsupportedModelVersionError } from '../error';\nimport { EmbeddingModel } from '../types/embedding-model';\nimport { LanguageModel } from '../types/language-model';\nimport { SpeechModel } from '../types/speech-model';\nimport { TranscriptionModel } from '../types/transcription-model';\nimport { asEmbeddingModelV3 } from './as-embedding-model-v3';\nimport { asImageModelV3 } from './as-image-model-v3';\nimport { asLanguageModelV3 } from './as-language-model-v3';\nimport { asSpeechModelV3 } from './as-speech-model-v3';\nimport { asTranscriptionModelV3 } from './as-transcription-model-v3';\nimport { ImageModel } from '../types/image-model';\n\nexport function resolveLanguageModel(model: LanguageModel): LanguageModelV3 {\n if (typeof model !== 'string') {\n if (\n model.specificationVersion !== 'v3' &&\n model.specificationVersion !== 'v2'\n ) {\n const unsupportedModel: any = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId,\n });\n }\n\n return asLanguageModelV3(model);\n }\n\n return getGlobalProvider().languageModel(model);\n}\n\nexport function resolveEmbeddingModel(model: EmbeddingModel): EmbeddingModelV3 {\n if (typeof model !== 'string') {\n if (\n model.specificationVersion !== 'v3' &&\n model.specificationVersion !== 'v2'\n ) {\n const unsupportedModel: any = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId,\n });\n }\n\n return asEmbeddingModelV3(model);\n }\n\n return getGlobalProvider().embeddingModel(model);\n}\n\nexport function resolveTranscriptionModel(\n model: TranscriptionModel,\n): TranscriptionModelV3 | undefined {\n if (typeof model !== 'string') {\n if (\n model.specificationVersion !== 'v3' &&\n model.specificationVersion !== 'v2'\n ) {\n const unsupportedModel: any = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId,\n });\n }\n return asTranscriptionModelV3(model);\n }\n\n return getGlobalProvider().transcriptionModel?.(model);\n}\n\nexport function resolveSpeechModel(\n model: SpeechModel,\n): SpeechModelV3 | undefined {\n if (typeof model !== 'string') {\n if (\n model.specificationVersion !== 'v3' &&\n model.specificationVersion !== 'v2'\n ) {\n const unsupportedModel: any = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId,\n });\n }\n return asSpeechModelV3(model);\n }\n\n return getGlobalProvider().speechModel?.(model);\n}\n\nexport function resolveImageModel(model: ImageModel): ImageModelV3 {\n if (typeof model !== 'string') {\n if (\n model.specificationVersion !== 'v3' &&\n model.specificationVersion !== 'v2'\n ) {\n const unsupportedModel: any = model;\n throw new UnsupportedModelVersionError({\n version: unsupportedModel.specificationVersion,\n provider: unsupportedModel.provider,\n modelId: unsupportedModel.modelId,\n });\n }\n\n return asImageModelV3(model);\n }\n\n return getGlobalProvider().imageModel(model);\n}\n\nfunction getGlobalProvider(): ProviderV3 {\n return globalThis.AI_SDK_DEFAULT_PROVIDER ?? gateway;\n}\n","import { convertBase64ToUint8Array } from '@ai-sdk/provider-utils';\n\nexport const imageMediaTypeSignatures = [\n {\n mediaType: 'image/gif' as const,\n bytesPrefix: [0x47, 0x49, 0x46], // GIF\n },\n {\n mediaType: 'image/png' as const,\n bytesPrefix: [0x89, 0x50, 0x4e, 0x47], // PNG\n },\n {\n mediaType: 'image/jpeg' as const,\n bytesPrefix: [0xff, 0xd8], // JPEG\n },\n {\n mediaType: 'image/webp' as const,\n bytesPrefix: [\n 0x52,\n 0x49,\n 0x46,\n 0x46, // \"RIFF\"\n null,\n null,\n null,\n null, // file size (variable)\n 0x57,\n 0x45,\n 0x42,\n 0x50, // \"WEBP\"\n ],\n },\n {\n mediaType: 'image/bmp' as const,\n bytesPrefix: [0x42, 0x4d],\n },\n {\n mediaType: 'image/tiff' as const,\n bytesPrefix: [0x49, 0x49, 0x2a, 0x00],\n },\n {\n mediaType: 'image/tiff' as const,\n bytesPrefix: [0x4d, 0x4d, 0x00, 0x2a],\n },\n {\n mediaType: 'image/avif' as const,\n bytesPrefix: [\n 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66,\n ],\n },\n {\n mediaType: 'image/heic' as const,\n bytesPrefix: [\n 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63,\n ],\n },\n] as const;\n\nexport const audioMediaTypeSignatures = [\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xfb],\n },\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xfa],\n },\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xf3],\n },\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xf2],\n },\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xe3],\n },\n {\n mediaType: 'audio/mpeg' as const,\n bytesPrefix: [0xff, 0xe2],\n },\n {\n mediaType: 'audio/wav' as const,\n bytesPrefix: [\n 0x52, // R\n 0x49, // I\n 0x46, // F\n 0x46, // F\n null,\n null,\n null,\n null,\n 0x57, // W\n 0x41, // A\n 0x56, // V\n 0x45, // E\n ],\n },\n {\n mediaType: 'audio/ogg' as const,\n bytesPrefix: [0x4f, 0x67, 0x67, 0x53],\n },\n {\n mediaType: 'audio/flac' as const,\n bytesPrefix: [0x66, 0x4c, 0x61, 0x43],\n },\n {\n mediaType: 'audio/aac' as const,\n bytesPrefix: [0x40, 0x15, 0x00, 0x00],\n },\n {\n mediaType: 'audio/mp4' as const,\n bytesPrefix: [0x66, 0x74, 0x79, 0x70],\n },\n {\n mediaType: 'audio/webm',\n bytesPrefix: [0x1a, 0x45, 0xdf, 0xa3],\n },\n] as const;\n\nconst stripID3 = (data: Uint8Array | string) => {\n const bytes =\n typeof data === 'string' ? convertBase64ToUint8Array(data) : data;\n const id3Size =\n ((bytes[6] & 0x7f) << 21) |\n ((bytes[7] & 0x7f) << 14) |\n ((bytes[8] & 0x7f) << 7) |\n (bytes[9] & 0x7f);\n\n // The raw MP3 starts here\n return bytes.slice(id3Size + 10);\n};\n\nfunction stripID3TagsIfPresent(data: Uint8Array | string): Uint8Array | string {\n const hasId3 =\n (typeof data === 'string' && data.startsWith('SUQz')) ||\n (typeof data !== 'string' &&\n data.length > 10 &&\n data[0] === 0x49 && // 'I'\n data[1] === 0x44 && // 'D'\n data[2] === 0x33); // '3'\n\n return hasId3 ? stripID3(data) : data;\n}\n\n/**\n * Detect the media IANA media type of a file using a list of signatures.\n *\n * @param data - The file data.\n * @param signatures - The signatures to use for detection.\n * @returns The media type of the file.\n */\nexport function detectMediaType({\n data,\n signatures,\n}: {\n data: Uint8Array | string;\n signatures: typeof audioMediaTypeSignatures | typeof imageMediaTypeSignatures;\n}): (typeof signatures)[number]['mediaType'] | undefined {\n const processedData = stripID3TagsIfPresent(data);\n\n // Convert the first ~18 bytes (24 base64 chars) for consistent detection logic:\n const bytes =\n typeof processedData === 'string'\n ? convertBase64ToUint8Array(\n processedData.substring(0, Math.min(processedData.length, 24)),\n )\n : processedData;\n\n for (const signature of signatures) {\n if (\n bytes.length >= signature.bytesPrefix.length &&\n signature.bytesPrefix.every(\n (byte, index) => byte === null || bytes[index] === byte,\n )\n ) {\n return signature.mediaType;\n }\n }\n\n return undefined;\n}\n","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import { DownloadError } from '@ai-sdk/provider-utils';\nimport {\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from '../../version';\n\n/**\n * Download a file from a URL.\n *\n * @param url - The URL to download from.\n * @returns The downloaded data and media type.\n *\n * @throws DownloadError if the download fails.\n */\nexport const download = async ({ url }: { url: URL }) => {\n const urlText = url.toString();\n try {\n const response = await fetch(urlText, {\n headers: withUserAgentSuffix(\n {},\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n });\n\n if (!response.ok) {\n throw new DownloadError({\n url: urlText,\n statusCode: response.status,\n statusText: response.statusText,\n });\n }\n\n return {\n data: new Uint8Array(await response.arrayBuffer()),\n mediaType: response.headers.get('content-type') ?? undefined,\n };\n } catch (error) {\n if (DownloadError.isInstance(error)) {\n throw error;\n }\n\n throw new DownloadError({ url: urlText, cause: error });\n }\n};\n","import { download as originalDownload } from './download';\n\n/**\n * Experimental. Can change in patch versions without warning.\n *\n * Download function. Called with the array of URLs and a boolean indicating\n * whether the URL is supported by the model.\n *\n * The download function can decide for each URL:\n * - to return null (which means that the URL should be passed to the model)\n * - to download the asset and return the data (incl. retries, authentication, etc.)\n *\n * Should throw DownloadError if the download fails.\n *\n * Should return an array of objects sorted by the order of the requested downloads.\n * For each object, the data should be a Uint8Array if the URL was downloaded.\n * For each object, the mediaType should be the media type of the downloaded asset.\n * For each object, the data should be null if the URL should be passed through as is.\n */\nexport type DownloadFunction = (\n options: Array<{\n url: URL;\n isUrlSupportedByModel: boolean;\n }>,\n) => PromiseLike<\n Array<{\n data: Uint8Array;\n mediaType: string | undefined;\n } | null>\n>;\n\n/**\n * Default download function.\n * Downloads the file if it is not supported by the model.\n */\nexport const createDefaultDownloadFunction =\n (download: typeof originalDownload = originalDownload): DownloadFunction =>\n requestedDownloads =>\n Promise.all(\n requestedDownloads.map(async requestedDownload =>\n requestedDownload.isUrlSupportedByModel\n ? null\n : download(requestedDownload),\n ),\n );\n","export function splitDataUrl(dataUrl: string): {\n mediaType: string | undefined;\n base64Content: string | undefined;\n} {\n try {\n const [header, base64Content] = dataUrl.split(',');\n return {\n mediaType: header.split(';')[0].split(':')[1],\n base64Content,\n };\n } catch (error) {\n return {\n mediaType: undefined,\n base64Content: undefined,\n };\n }\n}\n","import { AISDKError, LanguageModelV3DataContent } from '@ai-sdk/provider';\nimport {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n DataContent,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { InvalidDataContentError } from './invalid-data-content-error';\nimport { splitDataUrl } from './split-data-url';\n\n/**\n@internal\n */\nexport const dataContentSchema: z.ZodType<DataContent> = z.union([\n z.string(),\n z.instanceof(Uint8Array),\n z.instanceof(ArrayBuffer),\n z.custom<Buffer>(\n // Buffer might not be available in some environments such as CloudFlare:\n (value: unknown): value is Buffer =>\n globalThis.Buffer?.isBuffer(value) ?? false,\n { message: 'Must be a Buffer' },\n ),\n]);\n\nexport function convertToLanguageModelV3DataContent(\n content: DataContent | URL,\n): {\n data: LanguageModelV3DataContent;\n mediaType: string | undefined;\n} {\n // Buffer & Uint8Array:\n if (content instanceof Uint8Array) {\n return { data: content, mediaType: undefined };\n }\n\n // ArrayBuffer needs conversion to Uint8Array (lightweight):\n if (content instanceof ArrayBuffer) {\n return { data: new Uint8Array(content), mediaType: undefined };\n }\n\n // Attempt to create a URL from the data. If it fails, we can assume the data\n // is not a URL and likely some other sort of data.\n if (typeof content === 'string') {\n try {\n content = new URL(content);\n } catch (error) {\n // ignored\n }\n }\n\n // Extract data from data URL:\n if (content instanceof URL && content.protocol === 'data:') {\n const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(\n content.toString(),\n );\n\n if (dataUrlMediaType == null || base64Content == null) {\n throw new AISDKError({\n name: 'InvalidDataContentError',\n message: `Invalid data URL format in content ${content.toString()}`,\n });\n }\n\n return { data: base64Content, mediaType: dataUrlMediaType };\n }\n\n return { data: content, mediaType: undefined };\n}\n\n/**\nConverts data content to a base64-encoded string.\n\n@param content - Data content to convert.\n@returns Base64-encoded string.\n*/\nexport function convertDataContentToBase64String(content: DataContent): string {\n if (typeof content === 'string') {\n return content;\n }\n\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase64(new Uint8Array(content));\n }\n\n return convertUint8ArrayToBase64(content);\n}\n\n/**\nConverts data content to a Uint8Array.\n\n@param content - Data content to convert.\n@returns Uint8Array.\n */\nexport function convertDataContentToUint8Array(\n content: DataContent,\n): Uint8Array {\n if (content instanceof Uint8Array) {\n return content;\n }\n\n if (typeof content === 'string') {\n try {\n return convertBase64ToUint8Array(content);\n } catch (error) {\n throw new InvalidDataContentError({\n message:\n 'Invalid data content. Content string is not a base64-encoded media.',\n content,\n cause: error,\n });\n }\n }\n\n if (content instanceof ArrayBuffer) {\n return new Uint8Array(content);\n }\n\n throw new InvalidDataContentError({ content });\n}\n\n/**\n * Converts a Uint8Array to a string of text.\n *\n * @param uint8Array - The Uint8Array to convert.\n * @returns The converted string.\n */\nexport function convertUint8ArrayToText(uint8Array: Uint8Array): string {\n try {\n return new TextDecoder().decode(uint8Array);\n } catch (error) {\n throw new Error('Error decoding Uint8Array to text');\n }\n}\n","export function asArray<T>(value: T | T[] | undefined): T[] {\n return value === undefined ? [] : Array.isArray(value) ? value : [value];\n}\n","import {\n LanguageModelV3FilePart,\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n LanguageModelV3TextPart,\n LanguageModelV3ToolResultOutput,\n} from '@ai-sdk/provider';\nimport {\n DataContent,\n FilePart,\n ImagePart,\n isUrlSupported,\n ModelMessage,\n ReasoningPart,\n TextPart,\n ToolCallPart,\n ToolResultOutput,\n ToolResultPart,\n} from '@ai-sdk/provider-utils';\nimport {\n detectMediaType,\n imageMediaTypeSignatures,\n} from '../util/detect-media-type';\nimport {\n createDefaultDownloadFunction,\n DownloadFunction,\n} from '../util/download/download-function';\nimport { convertToLanguageModelV3DataContent } from './data-content';\nimport { InvalidMessageRoleError } from './invalid-message-role-error';\nimport { StandardizedPrompt } from './standardize-prompt';\nimport { asArray } from '../util/as-array';\n\nexport async function convertToLanguageModelPrompt({\n prompt,\n supportedUrls,\n download = createDefaultDownloadFunction(),\n}: {\n prompt: StandardizedPrompt;\n supportedUrls: Record<string, RegExp[]>;\n download: DownloadFunction | undefined;\n}): Promise<LanguageModelV3Prompt> {\n const downloadedAssets = await downloadAssets(\n prompt.messages,\n download,\n supportedUrls,\n );\n\n const messages = [\n ...(prompt.system != null\n ? typeof prompt.system === 'string'\n ? [{ role: 'system' as const, content: prompt.system }]\n : asArray(prompt.system).map(message => ({\n role: 'system' as const,\n content: message.content,\n providerOptions: message.providerOptions,\n }))\n : []),\n ...prompt.messages.map(message =>\n convertToLanguageModelMessage({ message, downloadedAssets }),\n ),\n ];\n\n // combine consecutive tool messages into a single tool message\n const combinedMessages = [];\n for (const message of messages) {\n if (message.role !== 'tool') {\n combinedMessages.push(message);\n continue;\n }\n\n const lastCombinedMessage = combinedMessages.at(-1);\n if (lastCombinedMessage?.role === 'tool') {\n lastCombinedMessage.content.push(...message.content);\n } else {\n combinedMessages.push(message);\n }\n }\n\n return combinedMessages;\n}\n\n/**\n * Convert a ModelMessage to a LanguageModelV3Message.\n *\n * @param message The ModelMessage to convert.\n * @param downloadedAssets A map of URLs to their downloaded data. Only\n * available if the model does not support URLs, null otherwise.\n */\nexport function convertToLanguageModelMessage({\n message,\n downloadedAssets,\n}: {\n message: ModelMessage;\n downloadedAssets: Record<\n string,\n { mediaType: string | undefined; data: Uint8Array }\n >;\n}): LanguageModelV3Message {\n const role = message.role;\n switch (role) {\n case 'system': {\n return {\n role: 'system',\n content: message.content,\n providerOptions: message.providerOptions,\n };\n }\n\n case 'user': {\n if (typeof message.content === 'string') {\n return {\n role: 'user',\n content: [{ type: 'text', text: message.content }],\n providerOptions: message.providerOptions,\n };\n }\n\n return {\n role: 'user',\n content: message.content\n .map(part => convertPartToLanguageModelPart(part, downloadedAssets))\n // remove empty text parts:\n .filter(part => part.type !== 'text' || part.text !== ''),\n providerOptions: message.providerOptions,\n };\n }\n\n case 'assistant': {\n if (typeof message.content === 'string') {\n return {\n role: 'assistant',\n content: [{ type: 'text', text: message.content }],\n providerOptions: message.providerOptions,\n };\n }\n\n return {\n role: 'assistant',\n content: message.content\n .filter(\n // remove empty text parts (no text, and no provider options):\n part =>\n part.type !== 'text' ||\n part.text !== '' ||\n part.providerOptions != null,\n )\n .filter(\n (\n part,\n ): part is\n | TextPart\n | FilePart\n | ReasoningPart\n | ToolCallPart\n | ToolResultPart => part.type !== 'tool-approval-request',\n )\n .map(part => {\n const providerOptions = part.providerOptions;\n\n switch (part.type) {\n case 'file': {\n const { data, mediaType } = convertToLanguageModelV3DataContent(\n part.data,\n );\n return {\n type: 'file',\n data,\n filename: part.filename,\n mediaType: mediaType ?? part.mediaType,\n providerOptions,\n };\n }\n case 'reasoning': {\n return {\n type: 'reasoning',\n text: part.text,\n providerOptions,\n };\n }\n case 'text': {\n return {\n type: 'text' as const,\n text: part.text,\n providerOptions,\n };\n }\n case 'tool-call': {\n return {\n type: 'tool-call' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions,\n };\n }\n case 'tool-result': {\n return {\n type: 'tool-result' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: mapToolResultOutput(part.output),\n providerOptions,\n };\n }\n }\n }),\n providerOptions: message.providerOptions,\n };\n }\n\n case 'tool': {\n return {\n role: 'tool',\n content: message.content\n .filter(part => part.type !== 'tool-approval-response')\n .map(part => ({\n type: 'tool-result' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: mapToolResultOutput(part.output),\n providerOptions: part.providerOptions,\n })),\n providerOptions: message.providerOptions,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new InvalidMessageRoleError({ role: _exhaustiveCheck });\n }\n }\n}\n\n/**\n * Downloads images and files from URLs in the messages.\n */\nasync function downloadAssets(\n messages: ModelMessage[],\n download: DownloadFunction,\n supportedUrls: Record<string, RegExp[]>,\n): Promise<\n Record<string, { mediaType: string | undefined; data: Uint8Array }>\n> {\n const plannedDownloads = messages\n .filter(message => message.role === 'user')\n .map(message => message.content)\n .filter((content): content is Array<TextPart | ImagePart | FilePart> =>\n Array.isArray(content),\n )\n .flat()\n .filter(\n (part): part is ImagePart | FilePart =>\n part.type === 'image' || part.type === 'file',\n )\n .map(part => {\n const mediaType =\n part.mediaType ?? (part.type === 'image' ? 'image/*' : undefined);\n\n let data = part.type === 'image' ? part.image : part.data;\n if (typeof data === 'string') {\n try {\n data = new URL(data);\n } catch (ignored) {}\n }\n\n return { mediaType, data };\n })\n\n .filter(\n (part): part is { mediaType: string | undefined; data: URL } =>\n part.data instanceof URL,\n )\n .map(part => ({\n url: part.data,\n isUrlSupportedByModel:\n part.mediaType != null &&\n isUrlSupported({\n url: part.data.toString(),\n mediaType: part.mediaType,\n supportedUrls,\n }),\n }));\n\n // download in parallel:\n const downloadedFiles = await download(plannedDownloads);\n\n return Object.fromEntries(\n downloadedFiles\n .map((file, index) =>\n file == null\n ? null\n : [\n plannedDownloads[index].url.toString(),\n { data: file.data, mediaType: file.mediaType },\n ],\n )\n .filter(file => file != null),\n );\n}\n\n/**\n * Convert part of a message to a LanguageModelV3Part.\n * @param part The part to convert.\n * @param downloadedAssets A map of URLs to their downloaded data. Only\n * available if the model does not support URLs, null otherwise.\n *\n * @returns The converted part.\n */\nfunction convertPartToLanguageModelPart(\n part: TextPart | ImagePart | FilePart,\n downloadedAssets: Record<\n string,\n { mediaType: string | undefined; data: Uint8Array }\n >,\n): LanguageModelV3TextPart | LanguageModelV3FilePart {\n if (part.type === 'text') {\n return {\n type: 'text',\n text: part.text,\n providerOptions: part.providerOptions,\n };\n }\n\n let originalData: DataContent | URL;\n const type = part.type;\n switch (type) {\n case 'image':\n originalData = part.image;\n break;\n case 'file':\n originalData = part.data;\n\n break;\n default:\n throw new Error(`Unsupported part type: ${type}`);\n }\n\n const { data: convertedData, mediaType: convertedMediaType } =\n convertToLanguageModelV3DataContent(originalData);\n\n let mediaType: string | undefined = convertedMediaType ?? part.mediaType;\n let data: Uint8Array | string | URL = convertedData; // binary | base64 | url\n\n // If the content is a URL, we check if it was downloaded:\n if (data instanceof URL) {\n const downloadedFile = downloadedAssets[data.toString()];\n if (downloadedFile) {\n data = downloadedFile.data;\n mediaType ??= downloadedFile.mediaType;\n }\n }\n\n // Now that we have the normalized data either as a URL or a Uint8Array,\n // we can create the LanguageModelV3Part.\n switch (type) {\n case 'image': {\n // When possible, try to detect the media type automatically\n // to deal with incorrect media type inputs.\n // When detection fails, use provided media type.\n if (data instanceof Uint8Array || typeof data === 'string') {\n mediaType =\n detectMediaType({ data, signatures: imageMediaTypeSignatures }) ??\n mediaType;\n }\n\n return {\n type: 'file',\n mediaType: mediaType ?? 'image/*', // any image\n filename: undefined,\n data,\n providerOptions: part.providerOptions,\n };\n }\n\n case 'file': {\n // We must have a mediaType for files, if not, throw an error.\n if (mediaType == null) {\n throw new Error(`Media type is missing for file part`);\n }\n\n return {\n type: 'file',\n mediaType,\n filename: part.filename,\n data,\n providerOptions: part.providerOptions,\n };\n }\n }\n}\n\nfunction mapToolResultOutput(\n output: ToolResultOutput,\n): LanguageModelV3ToolResultOutput {\n if (output.type !== 'content') {\n return output;\n }\n\n return {\n type: 'content',\n value: output.value.map(item => {\n if (item.type !== 'media') {\n return item;\n }\n\n // AI SDK 5 tool backwards compatibility:\n // map media type to image-data or file-data\n if (item.mediaType.startsWith('image/')) {\n return {\n type: 'image-data' as const,\n data: item.data,\n mediaType: item.mediaType,\n };\n }\n\n return {\n type: 'file-data' as const,\n data: item.data,\n mediaType: item.mediaType,\n };\n }),\n };\n}\n","import { getErrorMessage, JSONValue } from '@ai-sdk/provider';\nimport { Tool, ToolResultOutput } from '@ai-sdk/provider-utils';\n\nexport async function createToolModelOutput({\n toolCallId,\n input,\n output,\n tool,\n errorMode,\n}: {\n toolCallId: string;\n input: unknown;\n output: unknown;\n tool: Tool | undefined;\n errorMode: 'none' | 'text' | 'json';\n}): Promise<ToolResultOutput> {\n if (errorMode === 'text') {\n return { type: 'error-text', value: getErrorMessage(output) };\n } else if (errorMode === 'json') {\n return { type: 'error-json', value: toJSONValue(output) };\n }\n\n if (tool?.toModelOutput) {\n return await tool.toModelOutput({ toolCallId, input, output });\n }\n\n return typeof output === 'string'\n ? { type: 'text', value: output }\n : { type: 'json', value: toJSONValue(output) };\n}\n\nfunction toJSONValue(value: unknown): JSONValue {\n return value === undefined ? null : (value as JSONValue);\n}\n","import { InvalidArgumentError } from '../error/invalid-argument-error';\nimport { CallSettings } from './call-settings';\n\n/**\n * Validates call settings and returns a new object with limited values.\n */\nexport function prepareCallSettings({\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n stopSequences,\n}: Omit<CallSettings, 'abortSignal' | 'headers' | 'maxRetries'>): Omit<\n CallSettings,\n 'abortSignal' | 'headers' | 'maxRetries'\n> {\n if (maxOutputTokens != null) {\n if (!Number.isInteger(maxOutputTokens)) {\n throw new InvalidArgumentError({\n parameter: 'maxOutputTokens',\n value: maxOutputTokens,\n message: 'maxOutputTokens must be an integer',\n });\n }\n\n if (maxOutputTokens < 1) {\n throw new InvalidArgumentError({\n parameter: 'maxOutputTokens',\n value: maxOutputTokens,\n message: 'maxOutputTokens must be >= 1',\n });\n }\n }\n\n if (temperature != null) {\n if (typeof temperature !== 'number') {\n throw new InvalidArgumentError({\n parameter: 'temperature',\n value: temperature,\n message: 'temperature must be a number',\n });\n }\n }\n\n if (topP != null) {\n if (typeof topP !== 'number') {\n throw new InvalidArgumentError({\n parameter: 'topP',\n value: topP,\n message: 'topP must be a number',\n });\n }\n }\n\n if (topK != null) {\n if (typeof topK !== 'number') {\n throw new InvalidArgumentError({\n parameter: 'topK',\n value: topK,\n message: 'topK must be a number',\n });\n }\n }\n\n if (presencePenalty != null) {\n if (typeof presencePenalty !== 'number') {\n throw new InvalidArgumentError({\n parameter: 'presencePenalty',\n value: presencePenalty,\n message: 'presencePenalty must be a number',\n });\n }\n }\n\n if (frequencyPenalty != null) {\n if (typeof frequencyPenalty !== 'number') {\n throw new InvalidArgumentError({\n parameter: 'frequencyPenalty',\n value: frequencyPenalty,\n message: 'frequencyPenalty must be a number',\n });\n }\n }\n\n if (seed != null) {\n if (!Number.isInteger(seed)) {\n throw new InvalidArgumentError({\n parameter: 'seed',\n value: seed,\n message: 'seed must be an integer',\n });\n }\n }\n\n return {\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed,\n };\n}\n","export function isNonEmptyObject(\n object: Record<string, unknown> | undefined | null,\n): object is Record<string, unknown> {\n return object != null && Object.keys(object).length > 0;\n}\n","import {\n LanguageModelV3FunctionTool,\n LanguageModelV3ProviderTool,\n LanguageModelV3ToolChoice,\n} from '@ai-sdk/provider';\nimport { asSchema } from '@ai-sdk/provider-utils';\nimport { isNonEmptyObject } from '../util/is-non-empty-object';\nimport { ToolSet } from '../generate-text';\nimport { ToolChoice } from '../types/language-model';\n\nexport async function prepareToolsAndToolChoice<TOOLS extends ToolSet>({\n tools,\n toolChoice,\n activeTools,\n}: {\n tools: TOOLS | undefined;\n toolChoice: ToolChoice<TOOLS> | undefined;\n activeTools: Array<keyof TOOLS> | undefined;\n}): Promise<{\n tools:\n | Array<LanguageModelV3FunctionTool | LanguageModelV3ProviderTool>\n | undefined;\n toolChoice: LanguageModelV3ToolChoice | undefined;\n}> {\n if (!isNonEmptyObject(tools)) {\n return {\n tools: undefined,\n toolChoice: undefined,\n };\n }\n\n // when activeTools is provided, we only include the tools that are in the list:\n const filteredTools =\n activeTools != null\n ? Object.entries(tools).filter(([name]) =>\n activeTools.includes(name as keyof TOOLS),\n )\n : Object.entries(tools);\n\n const languageModelTools: Array<\n LanguageModelV3FunctionTool | LanguageModelV3ProviderTool\n > = [];\n for (const [name, tool] of filteredTools) {\n const toolType = tool.type;\n\n switch (toolType) {\n case undefined:\n case 'dynamic':\n case 'function':\n languageModelTools.push({\n type: 'function' as const,\n name,\n description: tool.description,\n inputSchema: await asSchema(tool.inputSchema).jsonSchema,\n ...(tool.inputExamples != null\n ? { inputExamples: tool.inputExamples }\n : {}),\n providerOptions: tool.providerOptions,\n ...(tool.strict != null ? { strict: tool.strict } : {}),\n });\n break;\n case 'provider':\n languageModelTools.push({\n type: 'provider' as const,\n name,\n id: tool.id,\n args: tool.args,\n });\n break;\n default: {\n const exhaustiveCheck: never = toolType as never;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }\n\n return {\n tools: languageModelTools,\n toolChoice:\n toolChoice == null\n ? { type: 'auto' }\n : typeof toolChoice === 'string'\n ? { type: toolChoice }\n : { type: 'tool' as const, toolName: toolChoice.toolName as string },\n };\n}\n","import { JSONValue as OriginalJSONValue } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nexport const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n z.union([\n z.null(),\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.string(), jsonValueSchema.optional()),\n z.array(jsonValueSchema),\n ]),\n);\n\nexport type JSONValue = OriginalJSONValue;\n","import { SharedV3ProviderMetadata } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\nimport { jsonValueSchema } from './json-value';\n\n/**\nAdditional provider-specific metadata that is returned from the provider.\n\nThis is needed to enable provider-specific functionality that can be\nfully encapsulated in the provider.\n */\nexport type ProviderMetadata = SharedV3ProviderMetadata;\n\nexport const providerMetadataSchema: z.ZodType<ProviderMetadata> = z.record(\n z.string(),\n z.record(z.string(), jsonValueSchema.optional()),\n);\n","import {\n FilePart,\n ImagePart,\n ProviderOptions,\n ReasoningPart,\n TextPart,\n ToolApprovalRequest,\n ToolApprovalResponse,\n ToolResultOutput,\n ToolResultPart,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { jsonValueSchema } from '../types/json-value';\nimport { providerMetadataSchema } from '../types/provider-metadata';\nimport { dataContentSchema } from './data-content';\n\n/**\n@internal\n */\nexport const textPartSchema: z.ZodType<TextPart> = z.object({\n type: z.literal('text'),\n text: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n});\n\n/**\n@internal\n */\nexport const imagePartSchema: z.ZodType<ImagePart> = z.object({\n type: z.literal('image'),\n image: z.union([dataContentSchema, z.instanceof(URL)]),\n mediaType: z.string().optional(),\n providerOptions: providerMetadataSchema.optional(),\n});\n\n/**\n@internal\n */\nexport const filePartSchema: z.ZodType<FilePart> = z.object({\n type: z.literal('file'),\n data: z.union([dataContentSchema, z.instanceof(URL)]),\n filename: z.string().optional(),\n mediaType: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n});\n\n/**\n@internal\n */\nexport const reasoningPartSchema: z.ZodType<ReasoningPart> = z.object({\n type: z.literal('reasoning'),\n text: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n});\n\n/**\nTool call content part of a prompt. It contains a tool call (usually generated by the AI model).\n */\nexport interface ToolCallPart {\n type: 'tool-call';\n\n /**\nID of the tool call. This ID is used to match the tool call with the tool result.\n */\n toolCallId: string;\n\n /**\nName of the tool that is being called.\n */\n toolName: string;\n\n /**\nArguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.\n */\n input: unknown;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n}\n\n/**\n@internal\n */\nexport const toolCallPartSchema: z.ZodType<ToolCallPart> = z.object({\n type: z.literal('tool-call'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n providerExecuted: z.boolean().optional(),\n}) as z.ZodType<ToolCallPart>; // necessary bc input is optional on Zod type\n\n/**\n@internal\n */\nexport const outputSchema: z.ZodType<ToolResultOutput> = z.discriminatedUnion(\n 'type',\n [\n z.object({\n type: z.literal('text'),\n value: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('json'),\n value: jsonValueSchema,\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('execution-denied'),\n reason: z.string().optional(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('error-text'),\n value: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('error-json'),\n value: jsonValueSchema,\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('content'),\n value: z.array(\n z.union([\n z.object({\n type: z.literal('text'),\n text: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('media'),\n data: z.string(),\n mediaType: z.string(),\n }),\n z.object({\n type: z.literal('file-data'),\n data: z.string(),\n mediaType: z.string(),\n filename: z.string().optional(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('file-url'),\n url: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('file-id'),\n fileId: z.union([z.string(), z.record(z.string(), z.string())]),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('image-data'),\n data: z.string(),\n mediaType: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('image-url'),\n url: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('image-file-id'),\n fileId: z.union([z.string(), z.record(z.string(), z.string())]),\n providerOptions: providerMetadataSchema.optional(),\n }),\n z.object({\n type: z.literal('custom'),\n providerOptions: providerMetadataSchema.optional(),\n }),\n ]),\n ),\n }),\n ],\n);\n\n/**\n@internal\n */\nexport const toolResultPartSchema: z.ZodType<ToolResultPart> = z.object({\n type: z.literal('tool-result'),\n toolCallId: z.string(),\n toolName: z.string(),\n output: outputSchema,\n providerOptions: providerMetadataSchema.optional(),\n}) as z.ZodType<ToolResultPart>; // necessary bc result is optional on Zod type\n\nexport const toolApprovalRequestSchema: z.ZodType<ToolApprovalRequest> =\n z.object({\n type: z.literal('tool-approval-request'),\n approvalId: z.string(),\n toolCallId: z.string(),\n });\n\nexport const toolApprovalResponseSchema: z.ZodType<ToolApprovalResponse> =\n z.object({\n type: z.literal('tool-approval-response'),\n approvalId: z.string(),\n approved: z.boolean(),\n reason: z.string().optional(),\n });\n","import {\n AssistantModelMessage,\n ModelMessage,\n SystemModelMessage,\n ToolModelMessage,\n UserModelMessage,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { providerMetadataSchema } from '../types/provider-metadata';\nimport {\n filePartSchema,\n imagePartSchema,\n reasoningPartSchema,\n textPartSchema,\n toolApprovalRequestSchema,\n toolCallPartSchema,\n toolApprovalResponseSchema,\n toolResultPartSchema,\n} from './content-part';\n\nexport const systemModelMessageSchema: z.ZodType<SystemModelMessage> = z.object(\n {\n role: z.literal('system'),\n content: z.string(),\n providerOptions: providerMetadataSchema.optional(),\n },\n);\n\nexport const userModelMessageSchema: z.ZodType<UserModelMessage> = z.object({\n role: z.literal('user'),\n content: z.union([\n z.string(),\n z.array(z.union([textPartSchema, imagePartSchema, filePartSchema])),\n ]),\n providerOptions: providerMetadataSchema.optional(),\n});\n\nexport const assistantModelMessageSchema: z.ZodType<AssistantModelMessage> =\n z.object({\n role: z.literal('assistant'),\n content: z.union([\n z.string(),\n z.array(\n z.union([\n textPartSchema,\n filePartSchema,\n reasoningPartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n toolApprovalRequestSchema,\n ]),\n ),\n ]),\n providerOptions: providerMetadataSchema.optional(),\n });\n\nexport const toolModelMessageSchema: z.ZodType<ToolModelMessage> = z.object({\n role: z.literal('tool'),\n content: z.array(z.union([toolResultPartSchema, toolApprovalResponseSchema])),\n providerOptions: providerMetadataSchema.optional(),\n});\n\nexport const modelMessageSchema: z.ZodType<ModelMessage> = z.union([\n systemModelMessageSchema,\n userModelMessageSchema,\n assistantModelMessageSchema,\n toolModelMessageSchema,\n]);\n","import { InvalidPromptError } from '@ai-sdk/provider';\nimport {\n ModelMessage,\n safeValidateTypes,\n SystemModelMessage,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { modelMessageSchema } from './message';\nimport { Prompt } from './prompt';\nimport { asArray } from '../util/as-array';\n\nexport type StandardizedPrompt = {\n /**\n * System message.\n */\n system?: string | SystemModelMessage | Array<SystemModelMessage>;\n\n /**\n * Messages.\n */\n messages: ModelMessage[];\n};\n\nexport async function standardizePrompt(\n prompt: Prompt,\n): Promise<StandardizedPrompt> {\n if (prompt.prompt == null && prompt.messages == null) {\n throw new InvalidPromptError({\n prompt,\n message: 'prompt or messages must be defined',\n });\n }\n\n if (prompt.prompt != null && prompt.messages != null) {\n throw new InvalidPromptError({\n prompt,\n message: 'prompt and messages cannot be defined at the same time',\n });\n }\n\n // validate that system is a string or a SystemModelMessage\n if (\n prompt.system != null &&\n typeof prompt.system !== 'string' &&\n !asArray(prompt.system).every(\n message =>\n typeof message === 'object' &&\n message !== null &&\n 'role' in message &&\n message.role === 'system',\n )\n ) {\n throw new InvalidPromptError({\n prompt,\n message:\n 'system must be a string, SystemModelMessage, or array of SystemModelMessage',\n });\n }\n\n let messages: ModelMessage[];\n\n if (prompt.prompt != null && typeof prompt.prompt === 'string') {\n messages = [{ role: 'user', content: prompt.prompt }];\n } else if (prompt.prompt != null && Array.isArray(prompt.prompt)) {\n messages = prompt.prompt;\n } else if (prompt.messages != null) {\n messages = prompt.messages;\n } else {\n throw new InvalidPromptError({\n prompt,\n message: 'prompt or messages must be defined',\n });\n }\n\n if (messages.length === 0) {\n throw new InvalidPromptError({\n prompt,\n message: 'messages must not be empty',\n });\n }\n\n const validationResult = await safeValidateTypes({\n value: messages,\n schema: z.array(modelMessageSchema),\n });\n\n if (!validationResult.success) {\n throw new InvalidPromptError({\n prompt,\n message: 'The messages do not match the ModelMessage[] schema.',\n cause: validationResult.error,\n });\n }\n\n return {\n messages,\n system: prompt.system,\n };\n}\n","import { GatewayAuthenticationError } from '@ai-sdk/gateway';\nimport { AISDKError } from '@ai-sdk/provider';\n\nexport function wrapGatewayError(error: unknown): unknown {\n if (!GatewayAuthenticationError.isInstance(error)) return error;\n\n const isProductionEnv = process?.env.NODE_ENV === 'production';\n const moreInfoURL = 'https://ai-sdk.dev/unauthenticated-ai-gateway';\n\n if (isProductionEnv) {\n return new AISDKError({\n name: 'GatewayError',\n message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`,\n });\n }\n\n return Object.assign(\n new Error(`\\u001b[1m\\u001b[31mUnauthenticated request to AI Gateway.\\u001b[0m\n\nTo authenticate, set the \\u001b[33mAI_GATEWAY_API_KEY\\u001b[0m environment variable with your API key.\n\nAlternatively, you can use a provider module instead of the AI Gateway.\n\nLearn more: \\u001b[34m${moreInfoURL}\\u001b[0m\n\n`),\n { name: 'GatewayAuthenticationError' },\n );\n}\n","import { TelemetrySettings } from './telemetry-settings';\n\nexport function assembleOperationName({\n operationId,\n telemetry,\n}: {\n operationId: string;\n telemetry?: TelemetrySettings;\n}) {\n return {\n // standardized operation and resource name:\n 'operation.name': `${operationId}${\n telemetry?.functionId != null ? ` ${telemetry.functionId}` : ''\n }`,\n 'resource.name': telemetry?.functionId,\n\n // detailed, AI SDK specific data:\n 'ai.operationId': operationId,\n 'ai.telemetry.functionId': telemetry?.functionId,\n };\n}\n","import { Attributes } from '@opentelemetry/api';\nimport { CallSettings } from '../prompt/call-settings';\nimport { TelemetrySettings } from './telemetry-settings';\n\nexport function getBaseTelemetryAttributes({\n model,\n settings,\n telemetry,\n headers,\n}: {\n model: { modelId: string; provider: string };\n settings: Omit<CallSettings, 'abortSignal' | 'headers' | 'temperature'>;\n telemetry: TelemetrySettings | undefined;\n headers: Record<string, string | undefined> | undefined;\n}): Attributes {\n return {\n 'ai.model.provider': model.provider,\n 'ai.model.id': model.modelId,\n\n // settings:\n ...Object.entries(settings).reduce((attributes, [key, value]) => {\n attributes[`ai.settings.${key}`] = value;\n return attributes;\n }, {} as Attributes),\n\n // add metadata as attributes:\n ...Object.entries(telemetry?.metadata ?? {}).reduce(\n (attributes, [key, value]) => {\n attributes[`ai.telemetry.metadata.${key}`] = value;\n return attributes;\n },\n {} as Attributes,\n ),\n\n // request headers\n ...Object.entries(headers ?? {}).reduce((attributes, [key, value]) => {\n if (value !== undefined) {\n attributes[`ai.request.headers.${key}`] = value;\n }\n return attributes;\n }, {} as Attributes),\n };\n}\n","import { Span, SpanContext, Tracer } from '@opentelemetry/api';\n\n/**\n * Tracer implementation that does nothing (null object).\n */\nexport const noopTracer: Tracer = {\n startSpan(): Span {\n return noopSpan;\n },\n\n startActiveSpan<F extends (span: Span) => unknown>(\n name: unknown,\n arg1: unknown,\n arg2?: unknown,\n arg3?: F,\n ): ReturnType<any> {\n if (typeof arg1 === 'function') {\n return arg1(noopSpan);\n }\n if (typeof arg2 === 'function') {\n return arg2(noopSpan);\n }\n if (typeof arg3 === 'function') {\n return arg3(noopSpan);\n }\n },\n};\n\nconst noopSpan: Span = {\n spanContext() {\n return noopSpanContext;\n },\n setAttribute() {\n return this;\n },\n setAttributes() {\n return this;\n },\n addEvent() {\n return this;\n },\n addLink() {\n return this;\n },\n addLinks() {\n return this;\n },\n setStatus() {\n return this;\n },\n updateName() {\n return this;\n },\n end() {\n return this;\n },\n isRecording() {\n return false;\n },\n recordException() {\n return this;\n },\n};\n\nconst noopSpanContext: SpanContext = {\n traceId: '',\n spanId: '',\n traceFlags: 0,\n};\n","import { Tracer, trace } from '@opentelemetry/api';\nimport { noopTracer } from './noop-tracer';\n\nexport function getTracer({\n isEnabled = false,\n tracer,\n}: {\n isEnabled?: boolean;\n tracer?: Tracer;\n} = {}): Tracer {\n if (!isEnabled) {\n return noopTracer;\n }\n\n if (tracer) {\n return tracer;\n }\n\n return trace.getTracer('ai');\n}\n","import { Attributes, Span, Tracer, SpanStatusCode } from '@opentelemetry/api';\n\nexport async function recordSpan<T>({\n name,\n tracer,\n attributes,\n fn,\n endWhenDone = true,\n}: {\n name: string;\n tracer: Tracer;\n attributes: Attributes | PromiseLike<Attributes>;\n fn: (span: Span) => Promise<T>;\n endWhenDone?: boolean;\n}) {\n return tracer.startActiveSpan(\n name,\n { attributes: await attributes },\n async span => {\n try {\n const result = await fn(span);\n\n if (endWhenDone) {\n span.end();\n }\n\n return result;\n } catch (error) {\n try {\n recordErrorOnSpan(span, error);\n } finally {\n // always stop the span when there is an error:\n span.end();\n }\n\n throw error;\n }\n },\n );\n}\n\n/**\n * Record an error on a span. If the error is an instance of Error, an exception event will be recorded on the span, otherwise\n * the span will be set to an error status.\n *\n * @param span - The span to record the error on.\n * @param error - The error to record on the span.\n */\nexport function recordErrorOnSpan(span: Span, error: unknown) {\n if (error instanceof Error) {\n span.recordException({\n name: error.name,\n message: error.message,\n stack: error.stack,\n });\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n } else {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n}\n","import type { Attributes, AttributeValue } from '@opentelemetry/api';\nimport type { TelemetrySettings } from './telemetry-settings';\n\ntype ResolvableAttributeValue = () =>\n | AttributeValue\n | PromiseLike<AttributeValue>\n | undefined;\n\nexport async function selectTelemetryAttributes({\n telemetry,\n attributes,\n}: {\n telemetry?: TelemetrySettings;\n attributes: {\n [attributeKey: string]:\n | AttributeValue\n | { input: ResolvableAttributeValue }\n | { output: ResolvableAttributeValue }\n | undefined;\n };\n}): Promise<Attributes> {\n // when telemetry is disabled, return an empty object to avoid serialization overhead:\n if (telemetry?.isEnabled !== true) {\n return {};\n }\n\n const resultAttributes: Attributes = {};\n\n for (const [key, value] of Object.entries(attributes)) {\n if (value == null) {\n continue;\n }\n\n // input value, check if it should be recorded:\n if (\n typeof value === 'object' &&\n 'input' in value &&\n typeof value.input === 'function'\n ) {\n // default to true:\n if (telemetry?.recordInputs === false) {\n continue;\n }\n\n const result = await value.input();\n\n if (result != null) {\n resultAttributes[key] = result;\n }\n\n continue;\n }\n\n // output value, check if it should be recorded:\n if (\n typeof value === 'object' &&\n 'output' in value &&\n typeof value.output === 'function'\n ) {\n // default to true:\n if (telemetry?.recordOutputs === false) {\n continue;\n }\n\n const result = await value.output();\n\n if (result != null) {\n resultAttributes[key] = result;\n }\n continue;\n }\n\n // value is an attribute value already:\n resultAttributes[key] = value as AttributeValue;\n }\n\n return resultAttributes;\n}\n","import {\n LanguageModelV3Message,\n LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\nimport { convertDataContentToBase64String } from '../prompt/data-content';\n\n/**\n * Helper utility to serialize prompt content for OpenTelemetry tracing.\n * It is initially created because normalized LanguageModelV1Prompt carries\n * images as Uint8Arrays, on which JSON.stringify acts weirdly, converting\n * them to objects with stringified indices as keys, e.g. {\"0\": 42, \"1\": 69 }.\n */\nexport function stringifyForTelemetry(prompt: LanguageModelV3Prompt): string {\n return JSON.stringify(\n prompt.map((message: LanguageModelV3Message) => ({\n ...message,\n content:\n typeof message.content === 'string'\n ? message.content\n : message.content.map(part =>\n part.type === 'file'\n ? {\n ...part,\n data:\n part.data instanceof Uint8Array\n ? convertDataContentToBase64String(part.data)\n : part.data,\n }\n : part,\n ),\n })),\n );\n}\n","import {\n ImageModelV3Usage,\n JSONObject,\n LanguageModelV3Usage,\n} from '@ai-sdk/provider';\n\n/**\n * Represents the number of tokens used in a prompt and completion.\n */\nexport type LanguageModelUsage = {\n /**\n * The total number of input (prompt) tokens used.\n */\n inputTokens: number | undefined;\n\n /**\n * Detailed information about the input tokens.\n */\n inputTokenDetails: {\n /**\n * The number of non-cached input (prompt) tokens used.\n */\n noCacheTokens: number | undefined;\n\n /**\n * The number of cached input (prompt) tokens read.\n */\n cacheReadTokens: number | undefined;\n\n /**\n * The number of cached input (prompt) tokens written.\n */\n cacheWriteTokens: number | undefined;\n };\n\n /**\n * The number of total output (completion) tokens used.\n */\n outputTokens: number | undefined;\n\n /**\n * Detailed information about the output tokens.\n */\n outputTokenDetails: {\n /**\n * The number of text tokens used.\n */\n textTokens: number | undefined;\n\n /**\n * The number of reasoning tokens used.\n */\n reasoningTokens: number | undefined;\n };\n\n /**\n * The total number of tokens used.\n */\n totalTokens: number | undefined;\n\n /**\n * @deprecated Use outputTokenDetails.reasoning instead.\n */\n reasoningTokens?: number | undefined;\n\n /**\n * @deprecated Use inputTokenDetails.cacheRead instead.\n */\n cachedInputTokens?: number | undefined;\n\n /**\n * Raw usage information from the provider.\n *\n * This is the usage information in the shape that the provider returns.\n * It can include additional information that is not part of the standard usage information.\n */\n raw?: JSONObject;\n};\n\n/**\nRepresents the number of tokens used in an embedding.\n */\n// TODO replace with EmbeddingModelV3Usage\nexport type EmbeddingModelUsage = {\n /**\nThe number of tokens used in the embedding.\n */\n tokens: number;\n};\n\nexport function asLanguageModelUsage(\n usage: LanguageModelV3Usage,\n): LanguageModelUsage {\n return {\n inputTokens: usage.inputTokens.total,\n inputTokenDetails: {\n noCacheTokens: usage.inputTokens.noCache,\n cacheReadTokens: usage.inputTokens.cacheRead,\n cacheWriteTokens: usage.inputTokens.cacheWrite,\n },\n outputTokens: usage.outputTokens.total,\n outputTokenDetails: {\n textTokens: usage.outputTokens.text,\n reasoningTokens: usage.outputTokens.reasoning,\n },\n totalTokens: addTokenCounts(\n usage.inputTokens.total,\n usage.outputTokens.total,\n ),\n raw: usage.raw,\n reasoningTokens: usage.outputTokens.reasoning,\n cachedInputTokens: usage.inputTokens.cacheRead,\n };\n}\n\nexport function createNullLanguageModelUsage(): LanguageModelUsage {\n return {\n inputTokens: undefined,\n inputTokenDetails: {\n noCacheTokens: undefined,\n cacheReadTokens: undefined,\n cacheWriteTokens: undefined,\n },\n outputTokens: undefined,\n outputTokenDetails: {\n textTokens: undefined,\n reasoningTokens: undefined,\n },\n totalTokens: undefined,\n raw: undefined,\n };\n}\n\nexport function addLanguageModelUsage(\n usage1: LanguageModelUsage,\n usage2: LanguageModelUsage,\n): LanguageModelUsage {\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n inputTokenDetails: {\n noCacheTokens: addTokenCounts(\n usage1.inputTokenDetails?.noCacheTokens,\n usage2.inputTokenDetails?.noCacheTokens,\n ),\n cacheReadTokens: addTokenCounts(\n usage1.inputTokenDetails?.cacheReadTokens,\n usage2.inputTokenDetails?.cacheReadTokens,\n ),\n cacheWriteTokens: addTokenCounts(\n usage1.inputTokenDetails?.cacheWriteTokens,\n usage2.inputTokenDetails?.cacheWriteTokens,\n ),\n },\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n outputTokenDetails: {\n textTokens: addTokenCounts(\n usage1.outputTokenDetails?.textTokens,\n usage2.outputTokenDetails?.textTokens,\n ),\n reasoningTokens: addTokenCounts(\n usage1.outputTokenDetails?.reasoningTokens,\n usage2.outputTokenDetails?.reasoningTokens,\n ),\n },\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),\n reasoningTokens: addTokenCounts(\n usage1.reasoningTokens,\n usage2.reasoningTokens,\n ),\n cachedInputTokens: addTokenCounts(\n usage1.cachedInputTokens,\n usage2.cachedInputTokens,\n ),\n };\n}\n\nfunction addTokenCounts(\n tokenCount1: number | undefined,\n tokenCount2: number | undefined,\n): number | undefined {\n return tokenCount1 == null && tokenCount2 == null\n ? undefined\n : (tokenCount1 ?? 0) + (tokenCount2 ?? 0);\n}\n\n/**\nUsage information for an image model call.\n */\nexport type ImageModelUsage = ImageModelV3Usage;\n\nexport function addImageModelUsage(\n usage1: ImageModelUsage,\n usage2: ImageModelUsage,\n): ImageModelUsage {\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),\n };\n}\n","/**\n * Deeply merges two objects together.\n * - Properties from the `overrides` object override those in the `base` object with the same key.\n * - For nested objects, the merge is performed recursively (deep merge).\n * - Arrays are replaced, not merged.\n * - Primitive values are replaced.\n * - If both `base` and `overrides` are undefined, returns undefined.\n * - If one of `base` or `overrides` is undefined, returns the other.\n *\n * @param base The target object to merge into\n * @param overrides The source object to merge from\n * @returns A new object with the merged properties, or undefined if both inputs are undefined\n */\nexport function mergeObjects<T extends object, U extends object>(\n base: T | undefined,\n overrides: U | undefined,\n): (T & U) | T | U | undefined {\n // If both inputs are undefined, return undefined\n if (base === undefined && overrides === undefined) {\n return undefined;\n }\n\n // If target is undefined, return source\n if (base === undefined) {\n return overrides;\n }\n\n // If source is undefined, return target\n if (overrides === undefined) {\n return base;\n }\n\n // Create a new object to avoid mutating the inputs\n const result = { ...base } as T & U;\n\n // Iterate through all keys in the source object\n for (const key in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, key)) {\n const overridesValue = overrides[key];\n\n // Skip if the overrides value is undefined\n if (overridesValue === undefined) continue;\n\n // Get the base value if it exists\n const baseValue =\n key in base ? base[key as unknown as keyof T] : undefined;\n\n // Check if both values are objects that can be deeply merged\n const isSourceObject =\n overridesValue !== null &&\n typeof overridesValue === 'object' &&\n !Array.isArray(overridesValue) &&\n !(overridesValue instanceof Date) &&\n !(overridesValue instanceof RegExp);\n\n const isTargetObject =\n baseValue !== null &&\n baseValue !== undefined &&\n typeof baseValue === 'object' &&\n !Array.isArray(baseValue) &&\n !(baseValue instanceof Date) &&\n !(baseValue instanceof RegExp);\n\n // If both values are mergeable objects, merge them recursively\n if (isSourceObject && isTargetObject) {\n result[key as keyof (T & U)] = mergeObjects(\n baseValue as object,\n overridesValue as object,\n ) as any;\n } else {\n // For primitives, arrays, or when one value is not a mergeable object,\n // simply override with the source value\n result[key as keyof (T & U)] = overridesValue as any;\n }\n }\n }\n\n return result;\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { delay, getErrorMessage, isAbortError } from '@ai-sdk/provider-utils';\nimport { RetryError } from './retry-error';\n\nexport type RetryFunction = <OUTPUT>(\n fn: () => PromiseLike<OUTPUT>,\n) => PromiseLike<OUTPUT>;\n\nfunction getRetryDelayInMs({\n error,\n exponentialBackoffDelay,\n}: {\n error: APICallError;\n exponentialBackoffDelay: number;\n}): number {\n const headers = error.responseHeaders;\n\n if (!headers) return exponentialBackoffDelay;\n\n let ms: number | undefined;\n\n // retry-ms is more precise than retry-after and used by e.g. OpenAI\n const retryAfterMs = headers['retry-after-ms'];\n if (retryAfterMs) {\n const timeoutMs = parseFloat(retryAfterMs);\n if (!Number.isNaN(timeoutMs)) {\n ms = timeoutMs;\n }\n }\n\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfter = headers['retry-after'];\n if (retryAfter && ms === undefined) {\n const timeoutSeconds = parseFloat(retryAfter);\n if (!Number.isNaN(timeoutSeconds)) {\n ms = timeoutSeconds * 1000;\n } else {\n ms = Date.parse(retryAfter) - Date.now();\n }\n }\n\n // check that the delay is reasonable:\n if (\n ms != null &&\n !Number.isNaN(ms) &&\n 0 <= ms &&\n (ms < 60 * 1000 || ms < exponentialBackoffDelay)\n ) {\n return ms;\n }\n\n return exponentialBackoffDelay;\n}\n\n/**\nThe `retryWithExponentialBackoffRespectingRetryHeaders` strategy retries a failed API call with an exponential backoff,\nwhile respecting rate limit headers (retry-after-ms and retry-after) if they are provided and reasonable (0-60 seconds).\nYou can configure the maximum number of retries, the initial delay, and the backoff factor.\n */\nexport const retryWithExponentialBackoffRespectingRetryHeaders =\n ({\n maxRetries = 2,\n initialDelayInMs = 2000,\n backoffFactor = 2,\n abortSignal,\n }: {\n maxRetries?: number;\n initialDelayInMs?: number;\n backoffFactor?: number;\n abortSignal?: AbortSignal;\n } = {}): RetryFunction =>\n async <OUTPUT>(f: () => PromiseLike<OUTPUT>) =>\n _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs: initialDelayInMs,\n backoffFactor,\n abortSignal,\n });\n\nasync function _retryWithExponentialBackoff<OUTPUT>(\n f: () => PromiseLike<OUTPUT>,\n {\n maxRetries,\n delayInMs,\n backoffFactor,\n abortSignal,\n }: {\n maxRetries: number;\n delayInMs: number;\n backoffFactor: number;\n abortSignal: AbortSignal | undefined;\n },\n errors: unknown[] = [],\n): Promise<OUTPUT> {\n try {\n return await f();\n } catch (error) {\n if (isAbortError(error)) {\n throw error; // don't retry when the request was aborted\n }\n\n if (maxRetries === 0) {\n throw error; // don't wrap the error when retries are disabled\n }\n\n const errorMessage = getErrorMessage(error);\n const newErrors = [...errors, error];\n const tryNumber = newErrors.length;\n\n if (tryNumber > maxRetries) {\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,\n reason: 'maxRetriesExceeded',\n errors: newErrors,\n });\n }\n\n if (\n error instanceof Error &&\n APICallError.isInstance(error) &&\n error.isRetryable === true &&\n tryNumber <= maxRetries\n ) {\n await delay(\n getRetryDelayInMs({\n error,\n exponentialBackoffDelay: delayInMs,\n }),\n { abortSignal },\n );\n\n return _retryWithExponentialBackoff(\n f,\n {\n maxRetries,\n delayInMs: backoffFactor * delayInMs,\n backoffFactor,\n abortSignal,\n },\n newErrors,\n );\n }\n\n if (tryNumber === 1) {\n throw error; // don't wrap the error when a non-retryable error occurs on the first try\n }\n\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,\n reason: 'errorNotRetryable',\n errors: newErrors,\n });\n }\n}\n","import { InvalidArgumentError } from '../error/invalid-argument-error';\nimport {\n RetryFunction,\n retryWithExponentialBackoffRespectingRetryHeaders,\n} from '../util/retry-with-exponential-backoff';\n\n/**\n * Validate and prepare retries.\n */\nexport function prepareRetries({\n maxRetries,\n abortSignal,\n}: {\n maxRetries: number | undefined;\n abortSignal: AbortSignal | undefined;\n}): {\n maxRetries: number;\n retry: RetryFunction;\n} {\n if (maxRetries != null) {\n if (!Number.isInteger(maxRetries)) {\n throw new InvalidArgumentError({\n parameter: 'maxRetries',\n value: maxRetries,\n message: 'maxRetries must be an integer',\n });\n }\n\n if (maxRetries < 0) {\n throw new InvalidArgumentError({\n parameter: 'maxRetries',\n value: maxRetries,\n message: 'maxRetries must be >= 0',\n });\n }\n }\n\n const maxRetriesResult = maxRetries ?? 2;\n\n return {\n maxRetries: maxRetriesResult,\n retry: retryWithExponentialBackoffRespectingRetryHeaders({\n maxRetries: maxRetriesResult,\n abortSignal,\n }),\n };\n}\n","import {\n ModelMessage,\n ToolApprovalRequest,\n ToolApprovalResponse,\n} from '@ai-sdk/provider-utils';\nimport { TypedToolCall } from './tool-call';\nimport { TypedToolResult } from './tool-result';\nimport { ToolSet } from './tool-set';\n\nexport type CollectedToolApprovals<TOOLS extends ToolSet> = {\n approvalRequest: ToolApprovalRequest;\n approvalResponse: ToolApprovalResponse;\n toolCall: TypedToolCall<TOOLS>;\n};\n\n/**\n * If the last message is a tool message, this function collects all tool approvals\n * from that message.\n */\nexport function collectToolApprovals<TOOLS extends ToolSet>({\n messages,\n}: {\n messages: ModelMessage[];\n}): {\n approvedToolApprovals: Array<CollectedToolApprovals<TOOLS>>;\n deniedToolApprovals: Array<CollectedToolApprovals<TOOLS>>;\n} {\n const lastMessage = messages.at(-1);\n\n if (lastMessage?.role != 'tool') {\n return {\n approvedToolApprovals: [],\n deniedToolApprovals: [],\n };\n }\n\n // gather tool calls and prepare lookup\n const toolCallsByToolCallId: Record<string, TypedToolCall<TOOLS>> = {};\n for (const message of messages) {\n if (message.role === 'assistant' && typeof message.content !== 'string') {\n const content = message.content;\n for (const part of content) {\n if (part.type === 'tool-call') {\n toolCallsByToolCallId[part.toolCallId] = part as TypedToolCall<TOOLS>;\n }\n }\n }\n }\n\n // gather approval responses and prepare lookup\n const toolApprovalRequestsByApprovalId: Record<string, ToolApprovalRequest> =\n {};\n for (const message of messages) {\n if (message.role === 'assistant' && typeof message.content !== 'string') {\n const content = message.content;\n for (const part of content) {\n if (part.type === 'tool-approval-request') {\n toolApprovalRequestsByApprovalId[part.approvalId] = part;\n }\n }\n }\n }\n\n // gather tool results from the last tool message\n const toolResults: Record<string, TypedToolResult<TOOLS>> = {};\n for (const part of lastMessage.content) {\n if (part.type === 'tool-result') {\n toolResults[part.toolCallId] = part as TypedToolResult<TOOLS>;\n }\n }\n\n const approvedToolApprovals: Array<CollectedToolApprovals<TOOLS>> = [];\n const deniedToolApprovals: Array<CollectedToolApprovals<TOOLS>> = [];\n\n const approvalResponses = lastMessage.content.filter(\n part => part.type === 'tool-approval-response',\n );\n for (const approvalResponse of approvalResponses) {\n const approvalRequest =\n toolApprovalRequestsByApprovalId[approvalResponse.approvalId];\n\n if (toolResults[approvalRequest!.toolCallId] != null) {\n continue;\n }\n\n const approval: CollectedToolApprovals<TOOLS> = {\n approvalRequest,\n approvalResponse,\n toolCall: toolCallsByToolCallId[approvalRequest!.toolCallId],\n };\n\n if (approvalResponse.approved) {\n approvedToolApprovals.push(approval);\n } else {\n deniedToolApprovals.push(approval);\n }\n }\n\n return { approvedToolApprovals, deniedToolApprovals };\n}\n","import { executeTool, ModelMessage } from '@ai-sdk/provider-utils';\nimport { Tracer } from '@opentelemetry/api';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { recordErrorOnSpan, recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { TypedToolCall } from './tool-call';\nimport { ToolOutput } from './tool-output';\nimport { ToolSet } from './tool-set';\nimport { TypedToolResult } from './tool-result';\nimport { TypedToolError } from './tool-error';\n\nexport async function executeToolCall<TOOLS extends ToolSet>({\n toolCall,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context,\n onPreliminaryToolResult,\n}: {\n toolCall: TypedToolCall<TOOLS>;\n tools: TOOLS | undefined;\n tracer: Tracer;\n telemetry: TelemetrySettings | undefined;\n messages: ModelMessage[];\n abortSignal: AbortSignal | undefined;\n experimental_context: unknown;\n onPreliminaryToolResult?: (result: TypedToolResult<TOOLS>) => void;\n}): Promise<ToolOutput<TOOLS> | undefined> {\n const { toolName, toolCallId, input } = toolCall;\n const tool = tools?.[toolName];\n\n if (tool?.execute == null) {\n return undefined;\n }\n\n return recordSpan({\n name: 'ai.toolCall',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.toolCall',\n telemetry,\n }),\n 'ai.toolCall.name': toolName,\n 'ai.toolCall.id': toolCallId,\n 'ai.toolCall.args': {\n output: () => JSON.stringify(input),\n },\n },\n }),\n tracer,\n fn: async span => {\n let output: unknown;\n\n try {\n const stream = executeTool({\n execute: tool.execute!.bind(tool),\n input,\n options: {\n toolCallId,\n messages,\n abortSignal,\n experimental_context,\n },\n });\n\n for await (const part of stream) {\n if (part.type === 'preliminary') {\n onPreliminaryToolResult?.({\n ...toolCall,\n type: 'tool-result',\n output: part.output,\n preliminary: true,\n });\n } else {\n output = part.output;\n }\n }\n } catch (error) {\n recordErrorOnSpan(span, error);\n return {\n type: 'tool-error',\n toolCallId,\n toolName,\n input,\n error,\n dynamic: tool.type === 'dynamic',\n ...(toolCall.providerMetadata != null\n ? { providerMetadata: toolCall.providerMetadata }\n : {}),\n } as TypedToolError<TOOLS>;\n }\n\n try {\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.toolCall.result': {\n output: () => JSON.stringify(output),\n },\n },\n }),\n );\n } catch (ignored) {\n // JSON stringify might fail if the result is not serializable,\n // in which case we just ignore it. In the future we might want to\n // add an optional serialize method to the tool interface and warn\n // if the result is not serializable.\n }\n\n return {\n type: 'tool-result',\n toolCallId,\n toolName,\n input,\n output,\n dynamic: tool.type === 'dynamic',\n ...(toolCall.providerMetadata != null\n ? { providerMetadata: toolCall.providerMetadata }\n : {}),\n } as TypedToolResult<TOOLS>;\n },\n });\n}\n","import { LanguageModelV3Content, LanguageModelV3Text } from '@ai-sdk/provider';\n\nexport function extractTextContent(\n content: LanguageModelV3Content[],\n): string | undefined {\n const parts = content.filter(\n (content): content is LanguageModelV3Text => content.type === 'text',\n );\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return parts.map(content => content.text).join('');\n}\n","import {\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n} from '@ai-sdk/provider-utils';\n\n/**\n * A generated file.\n */\nexport interface GeneratedFile {\n /**\nFile as a base64 encoded string.\n */\n readonly base64: string;\n\n /**\nFile as a Uint8Array.\n */\n readonly uint8Array: Uint8Array;\n\n /**\nThe IANA media type of the file.\n\n@see https://www.iana.org/assignments/media-types/media-types.xhtml\n */\n readonly mediaType: string;\n}\n\nexport class DefaultGeneratedFile implements GeneratedFile {\n private base64Data: string | undefined;\n private uint8ArrayData: Uint8Array | undefined;\n\n readonly mediaType: string;\n\n constructor({\n data,\n mediaType,\n }: {\n data: string | Uint8Array;\n mediaType: string;\n }) {\n const isUint8Array = data instanceof Uint8Array;\n this.base64Data = isUint8Array ? undefined : data;\n this.uint8ArrayData = isUint8Array ? data : undefined;\n this.mediaType = mediaType;\n }\n\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get base64() {\n if (this.base64Data == null) {\n this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData!);\n }\n return this.base64Data;\n }\n\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get uint8Array() {\n if (this.uint8ArrayData == null) {\n this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data!);\n }\n return this.uint8ArrayData;\n }\n}\n\nexport class DefaultGeneratedFileWithType extends DefaultGeneratedFile {\n readonly type = 'file';\n\n constructor(options: { data: string | Uint8Array; mediaType: string }) {\n super(options);\n }\n}\n","import { ModelMessage } from '@ai-sdk/provider-utils';\nimport { TypedToolCall } from './tool-call';\nimport { ToolSet } from './tool-set';\n\nexport async function isApprovalNeeded<TOOLS extends ToolSet>({\n tool,\n toolCall,\n messages,\n experimental_context,\n}: {\n tool: TOOLS[keyof TOOLS];\n toolCall: TypedToolCall<TOOLS>;\n messages: ModelMessage[];\n experimental_context: unknown;\n}) {\n if (tool.needsApproval == null) {\n return false;\n }\n\n if (typeof tool.needsApproval === 'boolean') {\n return tool.needsApproval;\n }\n\n return await tool.needsApproval(toolCall.input, {\n toolCallId: toolCall.toolCallId,\n messages,\n experimental_context,\n });\n}\n","import {\n JSONValue,\n LanguageModelV3CallOptions,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport {\n asSchema,\n FlexibleSchema,\n resolve,\n safeParseJSON,\n safeValidateTypes,\n} from '@ai-sdk/provider-utils';\nimport { NoObjectGeneratedError } from '../error/no-object-generated-error';\nimport { FinishReason } from '../types/language-model';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { LanguageModelUsage } from '../types/usage';\nimport { DeepPartial } from '../util/deep-partial';\nimport { parsePartialJson } from '../util/parse-partial-json';\n\nexport interface Output<OUTPUT = any, PARTIAL = any> {\n /**\n * The response format to use for the model.\n */\n responseFormat: PromiseLike<LanguageModelV3CallOptions['responseFormat']>;\n\n /**\n * Parses the complete output of the model.\n */\n parseCompleteOutput(\n options: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ): Promise<OUTPUT>;\n\n /**\n * Parses the partial output of the model.\n */\n parsePartialOutput(options: {\n text: string;\n }): Promise<{ partial: PARTIAL } | undefined>;\n}\n\n/**\n * Output specification for text generation.\n * This is the default output mode that generates plain text.\n *\n * @returns An output specification for generating text.\n */\nexport const text = (): Output<string, string> => ({\n responseFormat: Promise.resolve({ type: 'text' }),\n\n async parseCompleteOutput({ text }: { text: string }) {\n return text;\n },\n\n async parsePartialOutput({ text }: { text: string }) {\n return { partial: text };\n },\n});\n\n/**\n * Output specification for typed object generation using schemas.\n * When the model generates a text response, it will return an object that matches the schema.\n *\n * @param schema - The schema of the object to generate.\n * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n *\n * @returns An output specification for generating objects with the specified schema.\n */\nexport const object = <OBJECT>({\n schema: inputSchema,\n name,\n description,\n}: {\n schema: FlexibleSchema<OBJECT>;\n /**\n * Optional name of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n */\n name?: string;\n /**\n * Optional description of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n */\n description?: string;\n}): Output<OBJECT, DeepPartial<OBJECT>> => {\n const schema = asSchema(inputSchema);\n\n return {\n responseFormat: resolve(schema.jsonSchema).then(jsonSchema => ({\n type: 'json' as const,\n schema: jsonSchema,\n ...(name != null && { name }),\n ...(description != null && { description }),\n })),\n\n async parseCompleteOutput(\n { text }: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ) {\n const parseResult = await safeParseJSON({ text });\n\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: could not parse the response.',\n cause: parseResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n const validationResult = await safeValidateTypes({\n value: parseResult.value,\n schema,\n });\n\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: response did not match schema.',\n cause: validationResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n return validationResult.value;\n },\n\n async parsePartialOutput({ text }: { text: string }) {\n const result = await parsePartialJson(text);\n\n switch (result.state) {\n case 'failed-parse':\n case 'undefined-input': {\n return undefined;\n }\n\n case 'repaired-parse':\n case 'successful-parse': {\n return {\n // Note: currently no validation of partial results:\n partial: result.value as DeepPartial<OBJECT>,\n };\n }\n }\n },\n };\n};\n\n/**\n * Output specification for array generation.\n * When the model generates a text response, it will return an array of elements.\n *\n * @param element - The schema of the array elements to generate.\n * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n *\n * @returns An output specification for generating an array of elements.\n */\nexport const array = <ELEMENT>({\n element: inputElementSchema,\n name,\n description,\n}: {\n element: FlexibleSchema<ELEMENT>;\n /**\n * Optional name of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n */\n name?: string;\n /**\n * Optional description of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n */\n description?: string;\n}): Output<Array<ELEMENT>, Array<ELEMENT>> => {\n const elementSchema = asSchema(inputElementSchema);\n\n return {\n // JSON schema that describes an array of elements:\n responseFormat: resolve(elementSchema.jsonSchema).then(jsonSchema => {\n // remove $schema from schema.jsonSchema:\n const { $schema, ...itemSchema } = jsonSchema;\n\n return {\n type: 'json' as const,\n schema: {\n $schema: 'http://json-schema.org/draft-07/schema#',\n type: 'object',\n properties: {\n elements: { type: 'array', items: itemSchema },\n },\n required: ['elements'],\n additionalProperties: false,\n },\n ...(name != null && { name }),\n ...(description != null && { description }),\n };\n }),\n\n async parseCompleteOutput(\n { text }: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ) {\n const parseResult = await safeParseJSON({ text });\n\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: could not parse the response.',\n cause: parseResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n const outerValue = parseResult.value;\n\n if (\n outerValue == null ||\n typeof outerValue !== 'object' ||\n !('elements' in outerValue) ||\n !Array.isArray(outerValue.elements)\n ) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: response did not match schema.',\n cause: new TypeValidationError({\n value: outerValue,\n cause: 'response must be an object with an elements array',\n }),\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n for (const element of outerValue.elements) {\n const validationResult = await safeValidateTypes({\n value: element,\n schema: elementSchema,\n });\n\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: response did not match schema.',\n cause: validationResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n }\n\n return outerValue.elements as Array<ELEMENT>;\n },\n\n async parsePartialOutput({ text }: { text: string }) {\n const result = await parsePartialJson(text);\n\n switch (result.state) {\n case 'failed-parse':\n case 'undefined-input': {\n return undefined;\n }\n\n case 'repaired-parse':\n case 'successful-parse': {\n const outerValue = result.value;\n\n // no parsable elements array\n if (\n outerValue == null ||\n typeof outerValue !== 'object' ||\n !('elements' in outerValue) ||\n !Array.isArray(outerValue.elements)\n ) {\n return undefined;\n }\n\n const rawElements =\n result.state === 'repaired-parse' && outerValue.elements.length > 0\n ? outerValue.elements.slice(0, -1)\n : outerValue.elements;\n\n const parsedElements: Array<ELEMENT> = [];\n for (const rawElement of rawElements) {\n const validationResult = await safeValidateTypes({\n value: rawElement,\n schema: elementSchema,\n });\n\n if (validationResult.success) {\n parsedElements.push(validationResult.value);\n }\n }\n\n return { partial: parsedElements };\n }\n }\n },\n };\n};\n\n/**\n * Output specification for choice generation.\n * When the model generates a text response, it will return a one of the choice options.\n *\n * @param options - The available choices.\n * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n *\n * @returns An output specification for generating a choice.\n */\nexport const choice = <CHOICE extends string>({\n options: choiceOptions,\n name,\n description,\n}: {\n options: Array<CHOICE>;\n /**\n * Optional name of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n */\n name?: string;\n /**\n * Optional description of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n */\n description?: string;\n}): Output<CHOICE, CHOICE> => {\n return {\n // JSON schema that describes an enumeration:\n responseFormat: Promise.resolve({\n type: 'json',\n schema: {\n $schema: 'http://json-schema.org/draft-07/schema#',\n type: 'object',\n properties: {\n result: { type: 'string', enum: choiceOptions },\n },\n required: ['result'],\n additionalProperties: false,\n },\n ...(name != null && { name }),\n ...(description != null && { description }),\n } as const),\n\n async parseCompleteOutput(\n { text }: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ) {\n const parseResult = await safeParseJSON({ text });\n\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: could not parse the response.',\n cause: parseResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n const outerValue = parseResult.value;\n\n if (\n outerValue == null ||\n typeof outerValue !== 'object' ||\n !('result' in outerValue) ||\n typeof outerValue.result !== 'string' ||\n !choiceOptions.includes(outerValue.result as any)\n ) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: response did not match schema.',\n cause: new TypeValidationError({\n value: outerValue,\n cause: 'response must be an object that contains a choice value.',\n }),\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n return outerValue.result as CHOICE;\n },\n\n async parsePartialOutput({ text }: { text: string }) {\n const result = await parsePartialJson(text);\n\n switch (result.state) {\n case 'failed-parse':\n case 'undefined-input': {\n return undefined;\n }\n\n case 'repaired-parse':\n case 'successful-parse': {\n const outerValue = result.value;\n\n if (\n outerValue == null ||\n typeof outerValue !== 'object' ||\n !('result' in outerValue) ||\n typeof outerValue.result !== 'string'\n ) {\n return undefined;\n }\n\n // list of potential matches.\n const potentialMatches = choiceOptions.filter(choiceOption =>\n choiceOption.startsWith(outerValue.result as string),\n );\n\n if (result.state === 'successful-parse') {\n // successful parse: exact choice value\n return potentialMatches.includes(outerValue.result as any)\n ? { partial: outerValue.result as CHOICE }\n : undefined;\n } else {\n // repaired parse: only return if not ambiguous\n return potentialMatches.length === 1\n ? { partial: potentialMatches[0] as CHOICE }\n : undefined;\n }\n }\n }\n },\n };\n};\n\n/**\n * Output specification for unstructured JSON generation.\n * When the model generates a text response, it will return a JSON object.\n *\n * @param name - Optional name of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n * @param description - Optional description of the output that should be generated. Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n *\n * @returns An output specification for generating JSON.\n */\nexport const json = ({\n name,\n description,\n}: {\n /**\n * Optional name of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema name.\n */\n name?: string;\n /**\n * Optional description of the output that should be generated.\n * Used by some providers for additional LLM guidance, e.g. via tool or schema description.\n */\n description?: string;\n} = {}): Output<JSONValue, JSONValue> => {\n return {\n responseFormat: Promise.resolve({\n type: 'json' as const,\n ...(name != null && { name }),\n ...(description != null && { description }),\n }),\n\n async parseCompleteOutput(\n { text }: { text: string },\n context: {\n response: LanguageModelResponseMetadata;\n usage: LanguageModelUsage;\n finishReason: FinishReason;\n },\n ) {\n const parseResult = await safeParseJSON({ text });\n\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: 'No object generated: could not parse the response.',\n cause: parseResult.error,\n text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason,\n });\n }\n\n return parseResult.value;\n },\n\n async parsePartialOutput({ text }: { text: string }) {\n const result = await parsePartialJson(text);\n\n switch (result.state) {\n case 'failed-parse':\n case 'undefined-input': {\n return undefined;\n }\n\n case 'repaired-parse':\n case 'successful-parse': {\n return result.value === undefined\n ? undefined\n : { partial: result.value };\n }\n }\n },\n };\n};\n","type State =\n | 'ROOT'\n | 'FINISH'\n | 'INSIDE_STRING'\n | 'INSIDE_STRING_ESCAPE'\n | 'INSIDE_LITERAL'\n | 'INSIDE_NUMBER'\n | 'INSIDE_OBJECT_START'\n | 'INSIDE_OBJECT_KEY'\n | 'INSIDE_OBJECT_AFTER_KEY'\n | 'INSIDE_OBJECT_BEFORE_VALUE'\n | 'INSIDE_OBJECT_AFTER_VALUE'\n | 'INSIDE_OBJECT_AFTER_COMMA'\n | 'INSIDE_ARRAY_START'\n | 'INSIDE_ARRAY_AFTER_VALUE'\n | 'INSIDE_ARRAY_AFTER_COMMA';\n\n// Implemented as a scanner with additional fixing\n// that performs a single linear time scan pass over the partial JSON.\n//\n// The states should ideally match relevant states from the JSON spec:\n// https://www.json.org/json-en.html\n//\n// Please note that invalid JSON is not considered/covered, because it\n// is assumed that the resulting JSON will be processed by a standard\n// JSON parser that will detect any invalid JSON.\nexport function fixJson(input: string): string {\n const stack: State[] = ['ROOT'];\n let lastValidIndex = -1;\n let literalStart: number | null = null;\n\n function processValueStart(char: string, i: number, swapState: State) {\n {\n switch (char) {\n case '\"': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_STRING');\n break;\n }\n\n case 'f':\n case 't':\n case 'n': {\n lastValidIndex = i;\n literalStart = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_LITERAL');\n break;\n }\n\n case '-': {\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_NUMBER');\n break;\n }\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_NUMBER');\n break;\n }\n\n case '{': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_OBJECT_START');\n break;\n }\n\n case '[': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push('INSIDE_ARRAY_START');\n break;\n }\n }\n }\n }\n\n function processAfterObjectValue(char: string, i: number) {\n switch (char) {\n case ',': {\n stack.pop();\n stack.push('INSIDE_OBJECT_AFTER_COMMA');\n break;\n }\n case '}': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n\n function processAfterArrayValue(char: string, i: number) {\n switch (char) {\n case ',': {\n stack.pop();\n stack.push('INSIDE_ARRAY_AFTER_COMMA');\n break;\n }\n case ']': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const currentState = stack[stack.length - 1];\n\n switch (currentState) {\n case 'ROOT':\n processValueStart(char, i, 'FINISH');\n break;\n\n case 'INSIDE_OBJECT_START': {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push('INSIDE_OBJECT_KEY');\n break;\n }\n case '}': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_OBJECT_AFTER_COMMA': {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push('INSIDE_OBJECT_KEY');\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_OBJECT_KEY': {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push('INSIDE_OBJECT_AFTER_KEY');\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_OBJECT_AFTER_KEY': {\n switch (char) {\n case ':': {\n stack.pop();\n stack.push('INSIDE_OBJECT_BEFORE_VALUE');\n\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_OBJECT_BEFORE_VALUE': {\n processValueStart(char, i, 'INSIDE_OBJECT_AFTER_VALUE');\n break;\n }\n\n case 'INSIDE_OBJECT_AFTER_VALUE': {\n processAfterObjectValue(char, i);\n break;\n }\n\n case 'INSIDE_STRING': {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n\n case '\\\\': {\n stack.push('INSIDE_STRING_ESCAPE');\n break;\n }\n\n default: {\n lastValidIndex = i;\n }\n }\n\n break;\n }\n\n case 'INSIDE_ARRAY_START': {\n switch (char) {\n case ']': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE');\n break;\n }\n }\n break;\n }\n\n case 'INSIDE_ARRAY_AFTER_VALUE': {\n switch (char) {\n case ',': {\n stack.pop();\n stack.push('INSIDE_ARRAY_AFTER_COMMA');\n break;\n }\n\n case ']': {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n\n default: {\n lastValidIndex = i;\n break;\n }\n }\n\n break;\n }\n\n case 'INSIDE_ARRAY_AFTER_COMMA': {\n processValueStart(char, i, 'INSIDE_ARRAY_AFTER_VALUE');\n break;\n }\n\n case 'INSIDE_STRING_ESCAPE': {\n stack.pop();\n lastValidIndex = i;\n\n break;\n }\n\n case 'INSIDE_NUMBER': {\n switch (char) {\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9': {\n lastValidIndex = i;\n break;\n }\n\n case 'e':\n case 'E':\n case '-':\n case '.': {\n break;\n }\n\n case ',': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') {\n processAfterArrayValue(char, i);\n }\n\n if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case '}': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') {\n processAfterObjectValue(char, i);\n }\n\n break;\n }\n\n case ']': {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') {\n processAfterArrayValue(char, i);\n }\n\n break;\n }\n\n default: {\n stack.pop();\n break;\n }\n }\n\n break;\n }\n\n case 'INSIDE_LITERAL': {\n const partialLiteral = input.substring(literalStart!, i + 1);\n\n if (\n !'false'.startsWith(partialLiteral) &&\n !'true'.startsWith(partialLiteral) &&\n !'null'.startsWith(partialLiteral)\n ) {\n stack.pop();\n\n if (stack[stack.length - 1] === 'INSIDE_OBJECT_AFTER_VALUE') {\n processAfterObjectValue(char, i);\n } else if (stack[stack.length - 1] === 'INSIDE_ARRAY_AFTER_VALUE') {\n processAfterArrayValue(char, i);\n }\n } else {\n lastValidIndex = i;\n }\n\n break;\n }\n }\n }\n\n let result = input.slice(0, lastValidIndex + 1);\n\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n\n switch (state) {\n case 'INSIDE_STRING': {\n result += '\"';\n break;\n }\n\n case 'INSIDE_OBJECT_KEY':\n case 'INSIDE_OBJECT_AFTER_KEY':\n case 'INSIDE_OBJECT_AFTER_COMMA':\n case 'INSIDE_OBJECT_START':\n case 'INSIDE_OBJECT_BEFORE_VALUE':\n case 'INSIDE_OBJECT_AFTER_VALUE': {\n result += '}';\n break;\n }\n\n case 'INSIDE_ARRAY_START':\n case 'INSIDE_ARRAY_AFTER_COMMA':\n case 'INSIDE_ARRAY_AFTER_VALUE': {\n result += ']';\n break;\n }\n\n case 'INSIDE_LITERAL': {\n const partialLiteral = input.substring(literalStart!, input.length);\n\n if ('true'.startsWith(partialLiteral)) {\n result += 'true'.slice(partialLiteral.length);\n } else if ('false'.startsWith(partialLiteral)) {\n result += 'false'.slice(partialLiteral.length);\n } else if ('null'.startsWith(partialLiteral)) {\n result += 'null'.slice(partialLiteral.length);\n }\n }\n }\n }\n\n return result;\n}\n","import { JSONValue } from '@ai-sdk/provider';\nimport { safeParseJSON } from '@ai-sdk/provider-utils';\nimport { fixJson } from './fix-json';\n\nexport async function parsePartialJson(jsonText: string | undefined): Promise<{\n value: JSONValue | undefined;\n state:\n | 'undefined-input'\n | 'successful-parse'\n | 'repaired-parse'\n | 'failed-parse';\n}> {\n if (jsonText === undefined) {\n return { value: undefined, state: 'undefined-input' };\n }\n\n let result = await safeParseJSON({ text: jsonText });\n\n if (result.success) {\n return { value: result.value, state: 'successful-parse' };\n }\n\n result = await safeParseJSON({ text: fixJson(jsonText) });\n\n if (result.success) {\n return { value: result.value, state: 'repaired-parse' };\n }\n\n return { value: undefined, state: 'failed-parse' };\n}\n","import { LanguageModelV3ToolCall } from '@ai-sdk/provider';\nimport {\n asSchema,\n ModelMessage,\n safeParseJSON,\n safeValidateTypes,\n SystemModelMessage,\n} from '@ai-sdk/provider-utils';\nimport { InvalidToolInputError } from '../error/invalid-tool-input-error';\nimport { NoSuchToolError } from '../error/no-such-tool-error';\nimport { ToolCallRepairError } from '../error/tool-call-repair-error';\nimport { DynamicToolCall, TypedToolCall } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair-function';\nimport { ToolSet } from './tool-set';\n\nexport async function parseToolCall<TOOLS extends ToolSet>({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages,\n}: {\n toolCall: LanguageModelV3ToolCall;\n tools: TOOLS | undefined;\n repairToolCall: ToolCallRepairFunction<TOOLS> | undefined;\n system: string | SystemModelMessage | Array<SystemModelMessage> | undefined;\n messages: ModelMessage[];\n}): Promise<TypedToolCall<TOOLS>> {\n try {\n if (tools == null) {\n // provider-executed dynamic tools are not part of our list of tools:\n if (toolCall.providerExecuted && toolCall.dynamic) {\n return await parseProviderExecutedDynamicToolCall(toolCall);\n }\n\n throw new NoSuchToolError({ toolName: toolCall.toolName });\n }\n\n try {\n return await doParseToolCall({ toolCall, tools });\n } catch (error) {\n if (\n repairToolCall == null ||\n !(\n NoSuchToolError.isInstance(error) ||\n InvalidToolInputError.isInstance(error)\n )\n ) {\n throw error;\n }\n\n let repairedToolCall: LanguageModelV3ToolCall | null = null;\n\n try {\n repairedToolCall = await repairToolCall({\n toolCall,\n tools,\n inputSchema: async ({ toolName }) => {\n const { inputSchema } = tools[toolName];\n return await asSchema(inputSchema).jsonSchema;\n },\n system,\n messages,\n error,\n });\n } catch (repairError) {\n throw new ToolCallRepairError({\n cause: repairError,\n originalError: error,\n });\n }\n\n // no repaired tool call returned\n if (repairedToolCall == null) {\n throw error;\n }\n\n return await doParseToolCall({ toolCall: repairedToolCall, tools });\n }\n } catch (error) {\n // use parsed input when possible\n const parsedInput = await safeParseJSON({ text: toolCall.input });\n const input = parsedInput.success ? parsedInput.value : toolCall.input;\n\n // TODO AI SDK 6: special invalid tool call parts\n return {\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input,\n dynamic: true,\n invalid: true,\n error,\n title: tools?.[toolCall.toolName]?.title,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n };\n }\n}\n\nasync function parseProviderExecutedDynamicToolCall(\n toolCall: LanguageModelV3ToolCall,\n): Promise<DynamicToolCall> {\n const parseResult =\n toolCall.input.trim() === ''\n ? { success: true as const, value: {} }\n : await safeParseJSON({ text: toolCall.input });\n\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName: toolCall.toolName,\n toolInput: toolCall.input,\n cause: parseResult.error,\n });\n }\n\n return {\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: true,\n dynamic: true,\n providerMetadata: toolCall.providerMetadata,\n };\n}\n\nasync function doParseToolCall<TOOLS extends ToolSet>({\n toolCall,\n tools,\n}: {\n toolCall: LanguageModelV3ToolCall;\n tools: TOOLS;\n}): Promise<TypedToolCall<TOOLS>> {\n const toolName = toolCall.toolName as keyof TOOLS & string;\n\n const tool = tools[toolName];\n\n if (tool == null) {\n // provider-executed dynamic tools are not part of our list of tools:\n if (toolCall.providerExecuted && toolCall.dynamic) {\n return await parseProviderExecutedDynamicToolCall(toolCall);\n }\n\n throw new NoSuchToolError({\n toolName: toolCall.toolName,\n availableTools: Object.keys(tools),\n });\n }\n\n const schema = asSchema(tool.inputSchema);\n\n // when the tool call has no arguments, we try passing an empty object to the schema\n // (many LLMs generate empty strings for tool calls with no arguments)\n const parseResult =\n toolCall.input.trim() === ''\n ? await safeValidateTypes({ value: {}, schema })\n : await safeParseJSON({ text: toolCall.input, schema });\n\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName,\n toolInput: toolCall.input,\n cause: parseResult.error,\n });\n }\n\n return tool.type === 'dynamic'\n ? {\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n dynamic: true,\n title: tool.title,\n }\n : {\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n title: tool.title,\n };\n}\n","import { ReasoningPart } from '@ai-sdk/provider-utils';\nimport {\n CallWarning,\n FinishReason,\n LanguageModelRequestMetadata,\n LanguageModelResponseMetadata,\n ProviderMetadata,\n} from '../types';\nimport { Source } from '../types/language-model';\nimport { LanguageModelUsage } from '../types/usage';\nimport { ContentPart } from './content-part';\nimport { GeneratedFile } from './generated-file';\nimport { ResponseMessage } from './response-message';\nimport { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call';\nimport {\n DynamicToolResult,\n StaticToolResult,\n TypedToolResult,\n} from './tool-result';\nimport { ToolSet } from './tool-set';\n\n/**\n * The result of a single step in the generation process.\n */\nexport type StepResult<TOOLS extends ToolSet> = {\n /**\nThe content that was generated in the last step.\n */\n readonly content: Array<ContentPart<TOOLS>>;\n\n /**\nThe generated text.\n*/\n readonly text: string;\n\n /**\nThe reasoning that was generated during the generation.\n*/\n readonly reasoning: Array<ReasoningPart>;\n\n /**\nThe reasoning text that was generated during the generation.\n*/\n readonly reasoningText: string | undefined;\n\n /**\nThe files that were generated during the generation.\n*/\n readonly files: Array<GeneratedFile>;\n\n /**\nThe sources that were used to generate the text.\n*/\n readonly sources: Array<Source>;\n\n /**\nThe tool calls that were made during the generation.\n*/\n readonly toolCalls: Array<TypedToolCall<TOOLS>>;\n\n /**\nThe static tool calls that were made in the last step.\n*/\n readonly staticToolCalls: Array<StaticToolCall<TOOLS>>;\n\n /**\nThe dynamic tool calls that were made in the last step.\n*/\n readonly dynamicToolCalls: Array<DynamicToolCall>;\n\n /**\nThe results of the tool calls.\n*/\n readonly toolResults: Array<TypedToolResult<TOOLS>>;\n\n /**\nThe static tool results that were made in the last step.\n*/\n readonly staticToolResults: Array<StaticToolResult<TOOLS>>;\n\n /**\nThe dynamic tool results that were made in the last step.\n*/\n readonly dynamicToolResults: Array<DynamicToolResult>;\n\n /**\n * The unified reason why the generation finished.\n */\n readonly finishReason: FinishReason;\n\n /**\n * The raw reason why the generation finished (from the provider).\n */\n readonly rawFinishReason: string | undefined;\n\n /**\nThe token usage of the generated text.\n*/\n readonly usage: LanguageModelUsage;\n\n /**\nWarnings from the model provider (e.g. unsupported settings).\n*/\n readonly warnings: CallWarning[] | undefined;\n\n /**\nAdditional request information.\n */\n readonly request: LanguageModelRequestMetadata;\n\n /**\nAdditional response information.\n*/\n readonly response: LanguageModelResponseMetadata & {\n /**\nThe response messages that were generated during the call.\nResponse messages can be either assistant messages or tool messages.\nThey contain a generated id.\n*/\n readonly messages: Array<ResponseMessage>;\n\n /**\nResponse body (available only for providers that use HTTP requests).\n */\n body?: unknown;\n };\n\n /**\nAdditional provider-specific metadata. They are passed through\nfrom the provider to the AI SDK and enable provider-specific\nresults that can be fully encapsulated in the provider.\n */\n readonly providerMetadata: ProviderMetadata | undefined;\n};\n\nexport class DefaultStepResult<TOOLS extends ToolSet>\n implements StepResult<TOOLS>\n{\n readonly content: StepResult<TOOLS>['content'];\n readonly finishReason: StepResult<TOOLS>['finishReason'];\n readonly rawFinishReason: StepResult<TOOLS>['rawFinishReason'];\n readonly usage: StepResult<TOOLS>['usage'];\n readonly warnings: StepResult<TOOLS>['warnings'];\n readonly request: StepResult<TOOLS>['request'];\n readonly response: StepResult<TOOLS>['response'];\n readonly providerMetadata: StepResult<TOOLS>['providerMetadata'];\n\n constructor({\n content,\n finishReason,\n rawFinishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata,\n }: {\n content: StepResult<TOOLS>['content'];\n finishReason: StepResult<TOOLS>['finishReason'];\n rawFinishReason: StepResult<TOOLS>['rawFinishReason'];\n usage: StepResult<TOOLS>['usage'];\n warnings: StepResult<TOOLS>['warnings'];\n request: StepResult<TOOLS>['request'];\n response: StepResult<TOOLS>['response'];\n providerMetadata: StepResult<TOOLS>['providerMetadata'];\n }) {\n this.content = content;\n this.finishReason = finishReason;\n this.rawFinishReason = rawFinishReason;\n this.usage = usage;\n this.warnings = warnings;\n this.request = request;\n this.response = response;\n this.providerMetadata = providerMetadata;\n }\n\n get text() {\n return this.content\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join('');\n }\n\n get reasoning() {\n return this.content.filter(part => part.type === 'reasoning');\n }\n\n get reasoningText() {\n return this.reasoning.length === 0\n ? undefined\n : this.reasoning.map(part => part.text).join('');\n }\n\n get files() {\n return this.content\n .filter(part => part.type === 'file')\n .map(part => part.file);\n }\n\n get sources() {\n return this.content.filter(part => part.type === 'source');\n }\n\n get toolCalls() {\n return this.content.filter(part => part.type === 'tool-call');\n }\n\n get staticToolCalls() {\n return this.toolCalls.filter(\n (toolCall): toolCall is StaticToolCall<TOOLS> =>\n toolCall.dynamic !== true,\n );\n }\n\n get dynamicToolCalls() {\n return this.toolCalls.filter(\n (toolCall): toolCall is DynamicToolCall => toolCall.dynamic === true,\n );\n }\n\n get toolResults() {\n return this.content.filter(part => part.type === 'tool-result');\n }\n\n get staticToolResults() {\n return this.toolResults.filter(\n (toolResult): toolResult is StaticToolResult<TOOLS> =>\n toolResult.dynamic !== true,\n );\n }\n\n get dynamicToolResults() {\n return this.toolResults.filter(\n (toolResult): toolResult is DynamicToolResult =>\n toolResult.dynamic === true,\n );\n }\n}\n","import { StepResult } from './step-result';\nimport { ToolSet } from './tool-set';\n\nexport type StopCondition<TOOLS extends ToolSet> = (options: {\n steps: Array<StepResult<TOOLS>>;\n}) => PromiseLike<boolean> | boolean;\n\nexport function stepCountIs(stepCount: number): StopCondition<any> {\n return ({ steps }) => steps.length === stepCount;\n}\n\nexport function hasToolCall(toolName: string): StopCondition<any> {\n return ({ steps }) =>\n steps[steps.length - 1]?.toolCalls?.some(\n toolCall => toolCall.toolName === toolName,\n ) ?? false;\n}\n\nexport async function isStopConditionMet<TOOLS extends ToolSet>({\n stopConditions,\n steps,\n}: {\n stopConditions: Array<StopCondition<TOOLS>>;\n steps: Array<StepResult<TOOLS>>;\n}): Promise<boolean> {\n return (\n await Promise.all(stopConditions.map(condition => condition({ steps })))\n ).some(result => result);\n}\n","import {\n AssistantContent,\n AssistantModelMessage,\n ToolContent,\n ToolModelMessage,\n} from '../prompt';\nimport { createToolModelOutput } from '../prompt/create-tool-model-output';\nimport { ContentPart } from './content-part';\nimport { ToolSet } from './tool-set';\n\n/**\nConverts the result of a `generateText` or `streamText` call to a list of response messages.\n */\nexport async function toResponseMessages<TOOLS extends ToolSet>({\n content: inputContent,\n tools,\n}: {\n content: Array<ContentPart<TOOLS>>;\n tools: TOOLS | undefined;\n}): Promise<Array<AssistantModelMessage | ToolModelMessage>> {\n const responseMessages: Array<AssistantModelMessage | ToolModelMessage> = [];\n\n const content: AssistantContent = [];\n for (const part of inputContent) {\n if (\n part.type === 'source' ||\n ((part.type === 'tool-result' || part.type === 'tool-error') &&\n !part.providerExecuted) ||\n (part.type === 'text' && part.text.length === 0)\n ) {\n continue;\n }\n\n switch (part.type) {\n case 'text':\n content.push({\n type: 'text',\n text: part.text,\n providerOptions: part.providerMetadata,\n });\n break;\n case 'reasoning':\n content.push({\n type: 'reasoning',\n text: part.text,\n providerOptions: part.providerMetadata,\n });\n break;\n case 'file':\n content.push({\n type: 'file',\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata,\n });\n break;\n case 'tool-call':\n content.push({\n type: 'tool-call',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions: part.providerMetadata,\n });\n break;\n case 'tool-result': {\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools?.[part.toolName],\n output: part.output,\n errorMode: 'none',\n });\n content.push({\n type: 'tool-result',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n providerOptions: part.providerMetadata,\n });\n break;\n }\n case 'tool-error': {\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools?.[part.toolName],\n output: part.error,\n errorMode: 'json',\n });\n content.push({\n type: 'tool-result',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n providerOptions: part.providerMetadata,\n });\n break;\n }\n case 'tool-approval-request':\n content.push({\n type: 'tool-approval-request',\n approvalId: part.approvalId,\n toolCallId: part.toolCall.toolCallId,\n });\n break;\n }\n }\n\n if (content.length > 0) {\n responseMessages.push({\n role: 'assistant',\n content,\n });\n }\n\n const toolResultContent: ToolContent = [];\n for (const part of inputContent) {\n if (\n !(part.type === 'tool-result' || part.type === 'tool-error') ||\n part.providerExecuted\n ) {\n continue;\n }\n\n const output = await createToolModelOutput({\n toolCallId: part.toolCallId,\n input: part.input,\n tool: tools?.[part.toolName],\n output: part.type === 'tool-result' ? part.output : part.error,\n errorMode: part.type === 'tool-error' ? 'text' : 'none',\n });\n\n toolResultContent.push({\n type: 'tool-result',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output,\n ...(part.providerMetadata != null\n ? { providerOptions: part.providerMetadata }\n : {}),\n });\n }\n\n if (toolResultContent.length > 0) {\n responseMessages.push({\n role: 'tool',\n content: toolResultContent,\n });\n }\n\n return responseMessages;\n}\n","import {\n LanguageModelV3,\n LanguageModelV3Content,\n LanguageModelV3ToolCall,\n} from '@ai-sdk/provider';\nimport {\n createIdGenerator,\n getErrorMessage,\n IdGenerator,\n ProviderOptions,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { Tracer } from '@opentelemetry/api';\nimport { NoOutputGeneratedError } from '../error';\nimport { logWarnings } from '../logger/log-warnings';\nimport { resolveLanguageModel } from '../model/resolve-model';\nimport { ModelMessage } from '../prompt';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { createToolModelOutput } from '../prompt/create-tool-model-output';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { wrapGatewayError } from '../prompt/wrap-gateway-error';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { LanguageModel, ToolChoice } from '../types';\nimport {\n addLanguageModelUsage,\n asLanguageModelUsage,\n LanguageModelUsage,\n} from '../types/usage';\nimport { asArray } from '../util/as-array';\nimport { DownloadFunction } from '../util/download/download-function';\nimport { mergeObjects } from '../util/merge-objects';\nimport { prepareRetries } from '../util/prepare-retries';\nimport { VERSION } from '../version';\nimport { collectToolApprovals } from './collect-tool-approvals';\nimport { ContentPart } from './content-part';\nimport { executeToolCall } from './execute-tool-call';\nimport { extractTextContent } from './extract-text-content';\nimport { GenerateTextResult } from './generate-text-result';\nimport { DefaultGeneratedFile } from './generated-file';\nimport { isApprovalNeeded } from './is-approval-needed';\nimport { Output, text } from './output';\nimport { InferCompleteOutput } from './output-utils';\nimport { parseToolCall } from './parse-tool-call';\nimport { PrepareStepFunction } from './prepare-step';\nimport { ResponseMessage } from './response-message';\nimport { DefaultStepResult, StepResult } from './step-result';\nimport {\n isStopConditionMet,\n stepCountIs,\n StopCondition,\n} from './stop-condition';\nimport { toResponseMessages } from './to-response-messages';\nimport { ToolApprovalRequestOutput } from './tool-approval-request-output';\nimport { TypedToolCall } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair-function';\nimport { TypedToolError } from './tool-error';\nimport { ToolOutput } from './tool-output';\nimport { TypedToolResult } from './tool-result';\nimport { ToolSet } from './tool-set';\n\nconst originalGenerateId = createIdGenerator({\n prefix: 'aitxt',\n size: 24,\n});\n\n/**\nCallback that is set using the `onStepFinish` option.\n\n@param stepResult - The result of the step.\n */\nexport type GenerateTextOnStepFinishCallback<TOOLS extends ToolSet> = (\n stepResult: StepResult<TOOLS>,\n) => Promise<void> | void;\n\n/**\nCallback that is set using the `onFinish` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type GenerateTextOnFinishCallback<TOOLS extends ToolSet> = (\n event: StepResult<TOOLS> & {\n /**\n * Details for all steps.\n */\n readonly steps: StepResult<TOOLS>[];\n\n /**\n * Total usage for all steps. This is the sum of the usage of all steps.\n */\n readonly totalUsage: LanguageModelUsage;\n\n /**\n * Context that is passed into tool execution.\n *\n * Experimental (can break in patch releases).\n *\n * @default undefined\n */\n experimental_context: unknown;\n },\n) => PromiseLike<void> | void;\n\n/**\nGenerate a text and call tools for a given prompt using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamText` instead.\n\n@param model - The language model to use.\n\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n@param toolChoice - The tool choice strategy. Default: 'auto'.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxOutputTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param experimental_generateMessageId - Generate a unique ID for each message.\n\n@param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps.\n@param onFinish - Callback that is called when all steps are finished and the response is complete.\n\n@returns\nA result object that contains the generated text, the results of the tool calls, and additional information.\n */\nexport async function generateText<\n TOOLS extends ToolSet,\n OUTPUT extends Output = Output<string, string>,\n>({\n model: modelArg,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output,\n output = experimental_output,\n experimental_telemetry: telemetry,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_prepareStep,\n prepareStep = experimental_prepareStep,\n experimental_repairToolCall: repairToolCall,\n experimental_download: download,\n experimental_context,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n onStepFinish,\n onFinish,\n ...settings\n}: CallSettings &\n Prompt & {\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe tools that the model can call. The model needs to support calling tools.\n*/\n tools?: TOOLS;\n\n /**\nThe tool choice strategy. Default: 'auto'.\n */\n toolChoice?: ToolChoice<NoInfer<TOOLS>>;\n\n /**\nCondition for stopping the generation when there are tool results in the last step.\nWhen the condition is an array, any of the conditions can be met to stop the generation.\n\n@default stepCountIs(1)\n */\n stopWhen?:\n | StopCondition<NoInfer<TOOLS>>\n | Array<StopCondition<NoInfer<TOOLS>>>;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n * @deprecated Use `activeTools` instead.\n */\n experimental_activeTools?: Array<keyof NoInfer<TOOLS>>;\n\n /**\nLimits the tools that are available for the model to call without\nchanging the tool call and result types in the result.\n */\n activeTools?: Array<keyof NoInfer<TOOLS>>;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n */\n output?: OUTPUT;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n\n@deprecated Use `output` instead.\n */\n experimental_output?: OUTPUT;\n\n /**\nCustom download function to use for URLs.\n\nBy default, files are downloaded if the model does not support the URL for the given media type.\n */\n experimental_download?: DownloadFunction | undefined;\n\n /**\n * @deprecated Use `prepareStep` instead.\n */\n experimental_prepareStep?: PrepareStepFunction<NoInfer<TOOLS>>;\n\n /**\nOptional function that you can use to provide different settings for a step.\n */\n prepareStep?: PrepareStepFunction<NoInfer<TOOLS>>;\n\n /**\nA function that attempts to repair a tool call that failed to parse.\n */\n experimental_repairToolCall?: ToolCallRepairFunction<NoInfer<TOOLS>>;\n\n /**\n * Callback that is called when each step (LLM call) is finished, including intermediate steps.\n */\n onStepFinish?: GenerateTextOnStepFinishCallback<NoInfer<TOOLS>>;\n\n /**\n * Callback that is called when all steps are finished and the response is complete.\n */\n onFinish?: GenerateTextOnFinishCallback<NoInfer<TOOLS>>;\n\n /**\n * Context that is passed into tool execution.\n *\n * Experimental (can break in patch releases).\n *\n * @default undefined\n */\n experimental_context?: unknown;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: IdGenerator;\n currentDate?: () => Date;\n };\n }): Promise<GenerateTextResult<TOOLS, OUTPUT>> {\n const model = resolveLanguageModel(modelArg);\n const stopConditions = asArray(stopWhen);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal,\n });\n\n const callSettings = prepareCallSettings(settings);\n\n const headersWithUserAgent = withUserAgentSuffix(\n headers ?? {},\n `ai/${VERSION}`,\n );\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries },\n });\n\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages,\n } as Prompt);\n\n const tracer = getTracer(telemetry);\n\n try {\n return await recordSpan({\n name: 'ai.generateText',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateText',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // model:\n 'ai.model.provider': model.provider,\n 'ai.model.id': model.modelId,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n },\n }),\n tracer,\n fn: async span => {\n const initialMessages = initialPrompt.messages;\n const responseMessages: Array<ResponseMessage> = [];\n\n const { approvedToolApprovals, deniedToolApprovals } =\n collectToolApprovals<TOOLS>({ messages: initialMessages });\n\n if (\n deniedToolApprovals.length > 0 ||\n approvedToolApprovals.length > 0\n ) {\n const toolOutputs = await executeTools({\n toolCalls: approvedToolApprovals.map(\n toolApproval => toolApproval.toolCall,\n ),\n tools: tools as TOOLS,\n tracer,\n telemetry,\n messages: initialMessages,\n abortSignal,\n experimental_context,\n });\n\n const toolContent: Array<any> = [];\n\n // add regular tool results for approved tool calls:\n for (const output of toolOutputs) {\n const modelOutput = await createToolModelOutput({\n toolCallId: output.toolCallId,\n input: output.input,\n tool: tools?.[output.toolName],\n output:\n output.type === 'tool-result' ? output.output : output.error,\n errorMode: output.type === 'tool-error' ? 'json' : 'none',\n });\n\n toolContent.push({\n type: 'tool-result' as const,\n toolCallId: output.toolCallId,\n toolName: output.toolName,\n output: modelOutput,\n });\n }\n\n // add execution denied tool results for denied tool approvals:\n for (const toolApproval of deniedToolApprovals) {\n toolContent.push({\n type: 'tool-result' as const,\n toolCallId: toolApproval.toolCall.toolCallId,\n toolName: toolApproval.toolCall.toolName,\n output: {\n type: 'execution-denied' as const,\n reason: toolApproval.approvalResponse.reason,\n },\n });\n }\n\n responseMessages.push({\n role: 'tool',\n content: toolContent,\n });\n }\n\n const callSettings = prepareCallSettings(settings);\n\n let currentModelResponse: Awaited<\n ReturnType<LanguageModelV3['doGenerate']>\n > & { response: { id: string; timestamp: Date; modelId: string } };\n let clientToolCalls: Array<TypedToolCall<TOOLS>> = [];\n let clientToolOutputs: Array<ToolOutput<TOOLS>> = [];\n const steps: GenerateTextResult<TOOLS, OUTPUT>['steps'] = [];\n\n // Track provider-executed tool calls that support deferred results\n // (e.g., code_execution in programmatic tool calling scenarios).\n // These tools may not return their results in the same turn as their call.\n const pendingDeferredToolCalls = new Map<\n string,\n { toolName: string }\n >();\n\n do {\n const stepInputMessages = [...initialMessages, ...responseMessages];\n\n const prepareStepResult = await prepareStep?.({\n model,\n steps,\n stepNumber: steps.length,\n messages: stepInputMessages,\n experimental_context,\n });\n\n const stepModel = resolveLanguageModel(\n prepareStepResult?.model ?? model,\n );\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: prepareStepResult?.system ?? initialPrompt.system,\n messages: prepareStepResult?.messages ?? stepInputMessages,\n },\n supportedUrls: await stepModel.supportedUrls,\n download,\n });\n\n experimental_context =\n prepareStepResult?.experimental_context ?? experimental_context;\n\n const { toolChoice: stepToolChoice, tools: stepTools } =\n await prepareToolsAndToolChoice({\n tools,\n toolChoice: prepareStepResult?.toolChoice ?? toolChoice,\n activeTools: prepareStepResult?.activeTools ?? activeTools,\n });\n\n currentModelResponse = await retry(() =>\n recordSpan({\n name: 'ai.generateText.doGenerate',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateText.doGenerate',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // model:\n 'ai.model.provider': stepModel.provider,\n 'ai.model.id': stepModel.modelId,\n // prompt:\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n 'ai.prompt.tools': {\n // convert the language model level tools:\n input: () => stepTools?.map(tool => JSON.stringify(tool)),\n },\n 'ai.prompt.toolChoice': {\n input: () =>\n stepToolChoice != null\n ? JSON.stringify(stepToolChoice)\n : undefined,\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': stepModel.provider,\n 'gen_ai.request.model': stepModel.modelId,\n 'gen_ai.request.frequency_penalty': settings.frequencyPenalty,\n 'gen_ai.request.max_tokens': settings.maxOutputTokens,\n 'gen_ai.request.presence_penalty': settings.presencePenalty,\n 'gen_ai.request.stop_sequences': settings.stopSequences,\n 'gen_ai.request.temperature':\n settings.temperature ?? undefined,\n 'gen_ai.request.top_k': settings.topK,\n 'gen_ai.request.top_p': settings.topP,\n },\n }),\n tracer,\n fn: async span => {\n const stepProviderOptions = mergeObjects(\n providerOptions,\n prepareStepResult?.providerOptions,\n );\n\n const result = await stepModel.doGenerate({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: await output?.responseFormat,\n prompt: promptMessages,\n providerOptions: stepProviderOptions,\n abortSignal,\n headers: headersWithUserAgent,\n });\n\n // Fill in default values:\n const responseData = {\n id: result.response?.id ?? generateId(),\n timestamp: result.response?.timestamp ?? currentDate(),\n modelId: result.response?.modelId ?? stepModel.modelId,\n headers: result.response?.headers,\n body: result.response?.body,\n };\n\n // Add response information to the span:\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': result.finishReason.unified,\n 'ai.response.text': {\n output: () => extractTextContent(result.content),\n },\n 'ai.response.toolCalls': {\n output: () => {\n const toolCalls = asToolCalls(result.content);\n return toolCalls == null\n ? undefined\n : JSON.stringify(toolCalls);\n },\n },\n 'ai.response.id': responseData.id,\n 'ai.response.model': responseData.modelId,\n 'ai.response.timestamp':\n responseData.timestamp.toISOString(),\n 'ai.response.providerMetadata': JSON.stringify(\n result.providerMetadata,\n ),\n\n // TODO rename telemetry attributes to inputTokens and outputTokens\n 'ai.usage.promptTokens': result.usage.inputTokens.total,\n 'ai.usage.completionTokens':\n result.usage.outputTokens.total,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [\n result.finishReason.unified,\n ],\n 'gen_ai.response.id': responseData.id,\n 'gen_ai.response.model': responseData.modelId,\n 'gen_ai.usage.input_tokens':\n result.usage.inputTokens.total,\n 'gen_ai.usage.output_tokens':\n result.usage.outputTokens.total,\n },\n }),\n );\n\n return { ...result, response: responseData };\n },\n }),\n );\n\n // parse tool calls:\n const stepToolCalls: TypedToolCall<TOOLS>[] = await Promise.all(\n currentModelResponse.content\n .filter(\n (part): part is LanguageModelV3ToolCall =>\n part.type === 'tool-call',\n )\n .map(toolCall =>\n parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages: stepInputMessages,\n }),\n ),\n );\n const toolApprovalRequests: Record<\n string,\n ToolApprovalRequestOutput<TOOLS>\n > = {};\n\n // notify the tools that the tool calls are available:\n for (const toolCall of stepToolCalls) {\n if (toolCall.invalid) {\n continue; // ignore invalid tool calls\n }\n\n const tool = tools?.[toolCall.toolName];\n\n if (tool == null) {\n // ignore tool calls for tools that are not available,\n // e.g. provider-executed dynamic tools\n continue;\n }\n\n if (tool?.onInputAvailable != null) {\n await tool.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages: stepInputMessages,\n abortSignal,\n experimental_context,\n });\n }\n\n if (\n await isApprovalNeeded({\n tool,\n toolCall,\n messages: stepInputMessages,\n experimental_context,\n })\n ) {\n toolApprovalRequests[toolCall.toolCallId] = {\n type: 'tool-approval-request',\n approvalId: generateId(),\n toolCall,\n };\n }\n }\n\n // insert error tool outputs for invalid tool calls:\n // TODO AI SDK 6: invalid inputs should not require output parts\n const invalidToolCalls = stepToolCalls.filter(\n toolCall => toolCall.invalid && toolCall.dynamic,\n );\n\n clientToolOutputs = [];\n\n for (const toolCall of invalidToolCalls) {\n clientToolOutputs.push({\n type: 'tool-error',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage(toolCall.error!),\n dynamic: true,\n });\n }\n\n // execute client tool calls:\n clientToolCalls = stepToolCalls.filter(\n toolCall => !toolCall.providerExecuted,\n );\n\n if (tools != null) {\n clientToolOutputs.push(\n ...(await executeTools({\n toolCalls: clientToolCalls.filter(\n toolCall =>\n !toolCall.invalid &&\n toolApprovalRequests[toolCall.toolCallId] == null,\n ),\n tools,\n tracer,\n telemetry,\n messages: stepInputMessages,\n abortSignal,\n experimental_context,\n })),\n );\n }\n\n // Track provider-executed tool calls that support deferred results.\n // In programmatic tool calling, a server tool (e.g., code_execution) may\n // trigger a client tool, and the server tool's result is deferred until\n // the client tool's result is sent back.\n for (const toolCall of stepToolCalls) {\n if (!toolCall.providerExecuted) continue;\n const tool = tools?.[toolCall.toolName];\n if (tool?.type === 'provider' && tool.supportsDeferredResults) {\n // Check if this tool call already has a result in the current response\n const hasResultInResponse = currentModelResponse.content.some(\n part =>\n part.type === 'tool-result' &&\n part.toolCallId === toolCall.toolCallId,\n );\n if (!hasResultInResponse) {\n pendingDeferredToolCalls.set(toolCall.toolCallId, {\n toolName: toolCall.toolName,\n });\n }\n }\n }\n\n // Mark deferred tool calls as resolved when we receive their results\n for (const part of currentModelResponse.content) {\n if (part.type === 'tool-result') {\n pendingDeferredToolCalls.delete(part.toolCallId);\n }\n }\n\n // content:\n const stepContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: clientToolOutputs,\n toolApprovalRequests: Object.values(toolApprovalRequests),\n tools,\n });\n\n // append to messages for potential next step:\n responseMessages.push(\n ...(await toResponseMessages({\n content: stepContent,\n tools,\n })),\n );\n\n // Add step information (after response messages are updated):\n const currentStepResult: StepResult<TOOLS> = new DefaultStepResult({\n content: stepContent,\n finishReason: currentModelResponse.finishReason.unified,\n rawFinishReason: currentModelResponse.finishReason.raw,\n usage: asLanguageModelUsage(currentModelResponse.usage),\n warnings: currentModelResponse.warnings,\n providerMetadata: currentModelResponse.providerMetadata,\n request: currentModelResponse.request ?? {},\n response: {\n ...currentModelResponse.response,\n // deep clone msgs to avoid mutating past messages in multi-step:\n messages: structuredClone(responseMessages),\n },\n });\n\n logWarnings({\n warnings: currentModelResponse.warnings ?? [],\n provider: stepModel.provider,\n model: stepModel.modelId,\n });\n\n steps.push(currentStepResult);\n await onStepFinish?.(currentStepResult);\n } while (\n // Continue if:\n // 1. There are client tool calls that have all been executed, OR\n // 2. There are pending deferred results from provider-executed tools\n ((clientToolCalls.length > 0 &&\n clientToolOutputs.length === clientToolCalls.length) ||\n pendingDeferredToolCalls.size > 0) &&\n // continue until a stop condition is met:\n !(await isStopConditionMet({ stopConditions, steps }))\n );\n\n // Add response information to the span:\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason':\n currentModelResponse.finishReason.unified,\n 'ai.response.text': {\n output: () => extractTextContent(currentModelResponse.content),\n },\n 'ai.response.toolCalls': {\n output: () => {\n const toolCalls = asToolCalls(currentModelResponse.content);\n return toolCalls == null\n ? undefined\n : JSON.stringify(toolCalls);\n },\n },\n 'ai.response.providerMetadata': JSON.stringify(\n currentModelResponse.providerMetadata,\n ),\n\n // TODO rename telemetry attributes to inputTokens and outputTokens\n 'ai.usage.promptTokens':\n currentModelResponse.usage.inputTokens.total,\n 'ai.usage.completionTokens':\n currentModelResponse.usage.outputTokens.total,\n },\n }),\n );\n\n const lastStep = steps[steps.length - 1];\n\n const totalUsage = steps.reduce(\n (totalUsage, step) => {\n return addLanguageModelUsage(totalUsage, step.usage);\n },\n {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n reasoningTokens: undefined,\n cachedInputTokens: undefined,\n } as LanguageModelUsage,\n );\n\n await onFinish?.({\n finishReason: lastStep.finishReason,\n rawFinishReason: lastStep.rawFinishReason,\n usage: lastStep.usage,\n content: lastStep.content,\n text: lastStep.text,\n reasoningText: lastStep.reasoningText,\n reasoning: lastStep.reasoning,\n files: lastStep.files,\n sources: lastStep.sources,\n toolCalls: lastStep.toolCalls,\n staticToolCalls: lastStep.staticToolCalls,\n dynamicToolCalls: lastStep.dynamicToolCalls,\n toolResults: lastStep.toolResults,\n staticToolResults: lastStep.staticToolResults,\n dynamicToolResults: lastStep.dynamicToolResults,\n request: lastStep.request,\n response: lastStep.response,\n warnings: lastStep.warnings,\n providerMetadata: lastStep.providerMetadata,\n steps,\n totalUsage,\n experimental_context,\n });\n\n // parse output only if the last step was finished with \"stop\":\n let resolvedOutput;\n if (lastStep.finishReason === 'stop') {\n const outputSpecification = output ?? text();\n resolvedOutput = await outputSpecification.parseCompleteOutput(\n { text: lastStep.text },\n {\n response: lastStep.response,\n usage: lastStep.usage,\n finishReason: lastStep.finishReason,\n },\n );\n }\n\n return new DefaultGenerateTextResult({\n steps,\n totalUsage,\n output: resolvedOutput,\n });\n },\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\n\nasync function executeTools<TOOLS extends ToolSet>({\n toolCalls,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context,\n}: {\n toolCalls: Array<TypedToolCall<TOOLS>>;\n tools: TOOLS;\n tracer: Tracer;\n telemetry: TelemetrySettings | undefined;\n messages: ModelMessage[];\n abortSignal: AbortSignal | undefined;\n experimental_context: unknown;\n}): Promise<Array<ToolOutput<TOOLS>>> {\n const toolOutputs = await Promise.all(\n toolCalls.map(async toolCall =>\n executeToolCall({\n toolCall,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context,\n }),\n ),\n );\n\n return toolOutputs.filter(\n (output): output is NonNullable<typeof output> => output != null,\n );\n}\n\nclass DefaultGenerateTextResult<TOOLS extends ToolSet, OUTPUT extends Output>\n implements GenerateTextResult<TOOLS, OUTPUT>\n{\n readonly steps: GenerateTextResult<TOOLS, OUTPUT>['steps'];\n readonly totalUsage: LanguageModelUsage;\n private readonly _output: InferCompleteOutput<OUTPUT> | undefined;\n\n constructor(options: {\n steps: GenerateTextResult<TOOLS, OUTPUT>['steps'];\n output: InferCompleteOutput<OUTPUT> | undefined;\n totalUsage: LanguageModelUsage;\n }) {\n this.steps = options.steps;\n this._output = options.output;\n this.totalUsage = options.totalUsage;\n }\n\n private get finalStep() {\n return this.steps[this.steps.length - 1];\n }\n\n get content() {\n return this.finalStep.content;\n }\n\n get text() {\n return this.finalStep.text;\n }\n\n get files() {\n return this.finalStep.files;\n }\n\n get reasoningText() {\n return this.finalStep.reasoningText;\n }\n\n get reasoning() {\n return this.finalStep.reasoning;\n }\n\n get toolCalls() {\n return this.finalStep.toolCalls;\n }\n\n get staticToolCalls() {\n return this.finalStep.staticToolCalls;\n }\n\n get dynamicToolCalls() {\n return this.finalStep.dynamicToolCalls;\n }\n\n get toolResults() {\n return this.finalStep.toolResults;\n }\n\n get staticToolResults() {\n return this.finalStep.staticToolResults;\n }\n\n get dynamicToolResults() {\n return this.finalStep.dynamicToolResults;\n }\n\n get sources() {\n return this.finalStep.sources;\n }\n\n get finishReason() {\n return this.finalStep.finishReason;\n }\n\n get rawFinishReason() {\n return this.finalStep.rawFinishReason;\n }\n\n get warnings() {\n return this.finalStep.warnings;\n }\n\n get providerMetadata() {\n return this.finalStep.providerMetadata;\n }\n\n get response() {\n return this.finalStep.response;\n }\n\n get request() {\n return this.finalStep.request;\n }\n\n get usage() {\n return this.finalStep.usage;\n }\n\n get experimental_output() {\n return this.output;\n }\n\n get output() {\n if (this._output == null) {\n throw new NoOutputGeneratedError();\n }\n\n return this._output;\n }\n}\n\nfunction asToolCalls(content: Array<LanguageModelV3Content>) {\n const parts = content.filter(\n (part): part is LanguageModelV3ToolCall => part.type === 'tool-call',\n );\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return parts.map(toolCall => ({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n }));\n}\n\nfunction asContent<TOOLS extends ToolSet>({\n content,\n toolCalls,\n toolOutputs,\n toolApprovalRequests,\n tools,\n}: {\n content: Array<LanguageModelV3Content>;\n toolCalls: Array<TypedToolCall<TOOLS>>;\n toolOutputs: Array<ToolOutput<TOOLS>>;\n toolApprovalRequests: Array<ToolApprovalRequestOutput<TOOLS>>;\n tools: TOOLS | undefined;\n}): Array<ContentPart<TOOLS>> {\n const contentParts: Array<ContentPart<TOOLS>> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text':\n case 'reasoning':\n case 'source':\n contentParts.push(part);\n break;\n\n case 'file': {\n contentParts.push({\n type: 'file' as const,\n file: new DefaultGeneratedFile(part),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'tool-call': {\n contentParts.push(\n toolCalls.find(toolCall => toolCall.toolCallId === part.toolCallId)!,\n );\n break;\n }\n\n case 'tool-result': {\n const toolCall = toolCalls.find(\n toolCall => toolCall.toolCallId === part.toolCallId,\n );\n\n // Handle deferred results for provider-executed tools (e.g., programmatic tool calling).\n // When a server tool (like code_execution) triggers a client tool, the server tool's\n // result may be deferred to a later turn. In this case, there's no matching tool-call\n // in the current response.\n if (toolCall == null) {\n const tool = tools?.[part.toolName];\n const supportsDeferredResults =\n tool?.type === 'provider' && tool.supportsDeferredResults;\n\n if (!supportsDeferredResults) {\n throw new Error(`Tool call ${part.toolCallId} not found.`);\n }\n\n // Create tool result without tool call input (deferred result)\n if (part.isError) {\n contentParts.push({\n type: 'tool-error' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName as keyof TOOLS & string,\n input: undefined,\n error: part.result,\n providerExecuted: true,\n dynamic: part.dynamic,\n } as TypedToolError<TOOLS>);\n } else {\n contentParts.push({\n type: 'tool-result' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName as keyof TOOLS & string,\n input: undefined,\n output: part.result,\n providerExecuted: true,\n dynamic: part.dynamic,\n } as TypedToolResult<TOOLS>);\n }\n break;\n }\n\n if (part.isError) {\n contentParts.push({\n type: 'tool-error' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName as keyof TOOLS & string,\n input: toolCall.input,\n error: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic,\n } as TypedToolError<TOOLS>);\n } else {\n contentParts.push({\n type: 'tool-result' as const,\n toolCallId: part.toolCallId,\n toolName: part.toolName as keyof TOOLS & string,\n input: toolCall.input,\n output: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic,\n } as TypedToolResult<TOOLS>);\n }\n break;\n }\n\n case 'tool-approval-request': {\n // Skip tool-approval-request in content conversion\n break;\n }\n }\n }\n\n return [...contentParts, ...toolOutputs, ...toolApprovalRequests];\n}\n","export function prepareHeaders(\n headers: HeadersInit | undefined,\n defaultHeaders: Record<string, string>,\n): Headers {\n const responseHeaders = new Headers(headers ?? {});\n\n for (const [key, value] of Object.entries(defaultHeaders)) {\n if (!responseHeaders.has(key)) {\n responseHeaders.set(key, value);\n }\n }\n\n return responseHeaders;\n}\n","import { prepareHeaders } from '../util/prepare-headers';\n\nexport function createTextStreamResponse({\n status,\n statusText,\n headers,\n textStream,\n}: ResponseInit & {\n textStream: ReadableStream<string>;\n}): Response {\n return new Response(textStream.pipeThrough(new TextEncoderStream()), {\n status: status ?? 200,\n statusText,\n headers: prepareHeaders(headers, {\n 'content-type': 'text/plain; charset=utf-8',\n }),\n });\n}\n","import { ServerResponse } from 'node:http';\n\n/**\n * Writes the content of a stream to a server response.\n */\nexport function writeToServerResponse({\n response,\n status,\n statusText,\n headers,\n stream,\n}: {\n response: ServerResponse;\n status?: number;\n statusText?: string;\n headers?: Record<string, string | number | string[]>;\n stream: ReadableStream<Uint8Array>;\n}): void {\n const statusCode = status ?? 200;\n if (statusText !== undefined) {\n response.writeHead(statusCode, statusText, headers);\n } else {\n response.writeHead(statusCode, headers);\n }\n\n const reader = stream.getReader();\n const read = async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n // Respect backpressure: if write() returns false, wait for 'drain' event\n const canContinue = response.write(value);\n if (!canContinue) {\n await new Promise<void>(resolve => {\n response.once('drain', resolve);\n });\n }\n }\n } catch (error) {\n throw error;\n } finally {\n response.end();\n }\n };\n\n read();\n}\n","import { ServerResponse } from 'node:http';\nimport { prepareHeaders } from '../util/prepare-headers';\nimport { writeToServerResponse } from '../util/write-to-server-response';\n\nexport function pipeTextStreamToResponse({\n response,\n status,\n statusText,\n headers,\n textStream,\n}: {\n response: ServerResponse;\n textStream: ReadableStream<string>;\n} & ResponseInit): void {\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, {\n 'content-type': 'text/plain; charset=utf-8',\n }).entries(),\n ),\n stream: textStream.pipeThrough(new TextEncoderStream()),\n });\n}\n","export class JsonToSseTransformStream extends TransformStream<unknown, string> {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\\n\\n`);\n },\n flush(controller) {\n controller.enqueue('data: [DONE]\\n\\n');\n },\n });\n }\n}\n","export const UI_MESSAGE_STREAM_HEADERS = {\n 'content-type': 'text/event-stream',\n 'cache-control': 'no-cache',\n connection: 'keep-alive',\n 'x-vercel-ai-ui-message-stream': 'v1',\n 'x-accel-buffering': 'no', // disable nginx buffering\n};\n","import { prepareHeaders } from '../util/prepare-headers';\nimport { JsonToSseTransformStream } from './json-to-sse-transform-stream';\nimport { UI_MESSAGE_STREAM_HEADERS } from './ui-message-stream-headers';\nimport { UIMessageChunk } from './ui-message-chunks';\nimport { UIMessageStreamResponseInit } from './ui-message-stream-response-init';\n\nexport function createUIMessageStreamResponse({\n status,\n statusText,\n headers,\n stream,\n consumeSseStream,\n}: UIMessageStreamResponseInit & {\n stream: ReadableStream<UIMessageChunk>;\n}): Response {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n\n // when the consumeSseStream is provided, we need to tee the stream\n // and send the second part to the consumeSseStream function\n // so that it can be consumed by the client independently\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 }); // no await (do not block the response)\n }\n\n return new Response(sseStream.pipeThrough(new TextEncoderStream()), {\n status,\n statusText,\n headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS),\n });\n}\n","import { IdGenerator } from '@ai-sdk/provider-utils';\nimport { UIMessage } from '../ui/ui-messages';\n\nexport function getResponseUIMessageId({\n originalMessages,\n responseMessageId,\n}: {\n originalMessages: UIMessage[] | undefined;\n responseMessageId: string | IdGenerator;\n}) {\n // when there are no original messages (i.e. no persistence),\n // the assistant message id generation is handled on the client side.\n if (originalMessages == null) {\n return undefined;\n }\n\n const lastMessage = originalMessages[originalMessages.length - 1];\n\n return lastMessage?.role === 'assistant'\n ? lastMessage.id\n : typeof responseMessageId === 'function'\n ? responseMessageId()\n : responseMessageId;\n}\n","import { z } from 'zod/v4';\nimport {\n ProviderMetadata,\n providerMetadataSchema,\n} from '../types/provider-metadata';\nimport { FinishReason } from '../types/language-model';\nimport {\n InferUIMessageData,\n InferUIMessageMetadata,\n UIDataTypes,\n UIMessage,\n} from '../ui/ui-messages';\nimport { ValueOf } from '../util/value-of';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\n\nexport const uiMessageChunkSchema = lazySchema(() =>\n zodSchema(\n z.union([\n z.strictObject({\n type: z.literal('text-start'),\n id: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('text-delta'),\n id: z.string(),\n delta: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('text-end'),\n id: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('error'),\n errorText: z.string(),\n }),\n z.strictObject({\n type: z.literal('tool-input-start'),\n toolCallId: z.string(),\n toolName: z.string(),\n providerExecuted: z.boolean().optional(),\n dynamic: z.boolean().optional(),\n title: z.string().optional(),\n }),\n z.strictObject({\n type: z.literal('tool-input-delta'),\n toolCallId: z.string(),\n inputTextDelta: z.string(),\n }),\n z.strictObject({\n type: z.literal('tool-input-available'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n providerExecuted: z.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z.boolean().optional(),\n title: z.string().optional(),\n }),\n z.strictObject({\n type: z.literal('tool-input-error'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n providerExecuted: z.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z.boolean().optional(),\n errorText: z.string(),\n title: z.string().optional(),\n }),\n z.strictObject({\n type: z.literal('tool-approval-request'),\n approvalId: z.string(),\n toolCallId: z.string(),\n }),\n z.strictObject({\n type: z.literal('tool-output-available'),\n toolCallId: z.string(),\n output: z.unknown(),\n providerExecuted: z.boolean().optional(),\n dynamic: z.boolean().optional(),\n preliminary: z.boolean().optional(),\n }),\n z.strictObject({\n type: z.literal('tool-output-error'),\n toolCallId: z.string(),\n errorText: z.string(),\n providerExecuted: z.boolean().optional(),\n dynamic: z.boolean().optional(),\n }),\n z.strictObject({\n type: z.literal('tool-output-denied'),\n toolCallId: z.string(),\n }),\n z.strictObject({\n type: z.literal('reasoning-start'),\n id: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('reasoning-delta'),\n id: z.string(),\n delta: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('reasoning-end'),\n id: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('source-url'),\n sourceId: z.string(),\n url: z.string(),\n title: z.string().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('source-document'),\n sourceId: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.literal('file'),\n url: z.string(),\n mediaType: z.string(),\n providerMetadata: providerMetadataSchema.optional(),\n }),\n z.strictObject({\n type: z.custom<`data-${string}`>(\n (value): value is `data-${string}` =>\n typeof value === 'string' && value.startsWith('data-'),\n { message: 'Type must start with \"data-\"' },\n ),\n id: z.string().optional(),\n data: z.unknown(),\n transient: z.boolean().optional(),\n }),\n z.strictObject({\n type: z.literal('start-step'),\n }),\n z.strictObject({\n type: z.literal('finish-step'),\n }),\n z.strictObject({\n type: z.literal('start'),\n messageId: z.string().optional(),\n messageMetadata: z.unknown().optional(),\n }),\n z.strictObject({\n type: z.literal('finish'),\n finishReason: z\n .enum([\n 'stop',\n 'length',\n 'content-filter',\n 'tool-calls',\n 'error',\n 'other',\n ] as const satisfies readonly FinishReason[])\n .optional(),\n messageMetadata: z.unknown().optional(),\n }),\n z.strictObject({\n type: z.literal('abort'),\n }),\n z.strictObject({\n type: z.literal('message-metadata'),\n messageMetadata: z.unknown(),\n }),\n ]),\n ),\n);\n\nexport type DataUIMessageChunk<DATA_TYPES extends UIDataTypes> = ValueOf<{\n [NAME in keyof DATA_TYPES & string]: {\n type: `data-${NAME}`;\n id?: string;\n data: DATA_TYPES[NAME];\n transient?: boolean;\n };\n}>;\n\nexport type UIMessageChunk<\n METADATA = unknown,\n DATA_TYPES extends UIDataTypes = UIDataTypes,\n> =\n | {\n type: 'text-start';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'text-delta';\n delta: string;\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'text-end';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'reasoning-start';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'reasoning-delta';\n id: string;\n delta: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'reasoning-end';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'error';\n errorText: string;\n }\n | {\n type: 'tool-input-available';\n toolCallId: string;\n toolName: string;\n input: unknown;\n providerExecuted?: boolean;\n providerMetadata?: ProviderMetadata;\n dynamic?: boolean;\n title?: string;\n }\n | {\n type: 'tool-input-error';\n toolCallId: string;\n toolName: string;\n input: unknown;\n providerExecuted?: boolean;\n providerMetadata?: ProviderMetadata;\n dynamic?: boolean;\n errorText: string;\n title?: string;\n }\n | {\n type: 'tool-approval-request';\n approvalId: string;\n toolCallId: string;\n }\n | {\n type: 'tool-output-available';\n toolCallId: string;\n output: unknown;\n providerExecuted?: boolean;\n dynamic?: boolean;\n preliminary?: boolean;\n }\n | {\n type: 'tool-output-error';\n toolCallId: string;\n errorText: string;\n providerExecuted?: boolean;\n dynamic?: boolean;\n }\n | {\n type: 'tool-output-denied';\n toolCallId: string;\n }\n | {\n type: 'tool-input-start';\n toolCallId: string;\n toolName: string;\n providerExecuted?: boolean;\n dynamic?: boolean;\n title?: string;\n }\n | {\n type: 'tool-input-delta';\n toolCallId: string;\n inputTextDelta: string;\n }\n | {\n type: 'source-url';\n sourceId: string;\n url: string;\n title?: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'source-document';\n sourceId: string;\n mediaType: string;\n title: string;\n filename?: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'file';\n url: string;\n mediaType: string;\n providerMetadata?: ProviderMetadata;\n }\n | DataUIMessageChunk<DATA_TYPES>\n | {\n type: 'start-step';\n }\n | {\n type: 'finish-step';\n }\n | {\n type: 'start';\n messageId?: string;\n messageMetadata?: METADATA;\n }\n | {\n type: 'finish';\n finishReason?: FinishReason;\n messageMetadata?: METADATA;\n }\n | {\n type: 'abort';\n }\n | {\n type: 'message-metadata';\n messageMetadata: METADATA;\n };\n\nexport function isDataUIMessageChunk(\n chunk: UIMessageChunk,\n): chunk is DataUIMessageChunk<UIDataTypes> {\n return chunk.type.startsWith('data-');\n}\n\nexport type InferUIMessageChunk<T extends UIMessage> = UIMessageChunk<\n InferUIMessageMetadata<T>,\n InferUIMessageData<T>\n>;\n","import {\n InferToolInput,\n InferToolOutput,\n Tool,\n ToolCall,\n} from '@ai-sdk/provider-utils';\nimport { ToolSet } from '../generate-text';\nimport { ProviderMetadata } from '../types/provider-metadata';\nimport { DeepPartial } from '../util/deep-partial';\nimport { ValueOf } from '../util/value-of';\n\n/**\nThe data types that can be used in the UI message for the UI message data parts.\n */\nexport type UIDataTypes = Record<string, unknown>;\n\nexport type UITool = {\n input: unknown;\n output: unknown | undefined;\n};\n\n/**\n * Infer the input and output types of a tool so it can be used as a UI tool.\n */\nexport type InferUITool<TOOL extends Tool> = {\n input: InferToolInput<TOOL>;\n output: InferToolOutput<TOOL>;\n};\n\n/**\n * Infer the input and output types of a tool set so it can be used as a UI tool set.\n */\nexport type InferUITools<TOOLS extends ToolSet> = {\n [NAME in keyof TOOLS & string]: InferUITool<TOOLS[NAME]>;\n};\n\nexport type UITools = Record<string, UITool>;\n\n/**\nAI SDK UI Messages. They are used in the client and to communicate between the frontend and the API routes.\n */\nexport interface UIMessage<\n METADATA = unknown,\n DATA_PARTS extends UIDataTypes = UIDataTypes,\n TOOLS extends UITools = UITools,\n> {\n /**\nA unique identifier for the message.\n */\n id: string;\n\n /**\nThe role of the message.\n */\n role: 'system' | 'user' | 'assistant';\n\n /**\nThe metadata of the message.\n */\n metadata?: METADATA;\n\n /**\nThe parts of the message. Use this for rendering the message in the UI.\n\nSystem messages should be avoided (set the system prompt on the server instead).\nThey can have text parts.\n\nUser messages can have text parts and file parts.\n\nAssistant messages can have text, reasoning, tool invocation, and file parts.\n */\n parts: Array<UIMessagePart<DATA_PARTS, TOOLS>>;\n}\n\nexport type UIMessagePart<\n DATA_TYPES extends UIDataTypes,\n TOOLS extends UITools,\n> =\n | TextUIPart\n | ReasoningUIPart\n | ToolUIPart<TOOLS>\n | DynamicToolUIPart\n | SourceUrlUIPart\n | SourceDocumentUIPart\n | FileUIPart\n | DataUIPart<DATA_TYPES>\n | StepStartUIPart;\n\n/**\n * A text part of a message.\n */\nexport type TextUIPart = {\n type: 'text';\n\n /**\n * The text content.\n */\n text: string;\n\n /**\n * The state of the text part.\n */\n state?: 'streaming' | 'done';\n\n /**\n * The provider metadata.\n */\n providerMetadata?: ProviderMetadata;\n};\n\n/**\n * A reasoning part of a message.\n */\nexport type ReasoningUIPart = {\n type: 'reasoning';\n\n /**\n * The reasoning text.\n */\n text: string;\n\n /**\n * The state of the reasoning part.\n */\n state?: 'streaming' | 'done';\n\n /**\n * The provider metadata.\n */\n providerMetadata?: ProviderMetadata;\n};\n\n/**\n * A source part of a message.\n */\nexport type SourceUrlUIPart = {\n type: 'source-url';\n sourceId: string;\n url: string;\n title?: string;\n providerMetadata?: ProviderMetadata;\n};\n\n/**\n * A document source part of a message.\n */\nexport type SourceDocumentUIPart = {\n type: 'source-document';\n sourceId: string;\n mediaType: string;\n title: string;\n filename?: string;\n providerMetadata?: ProviderMetadata;\n};\n\n/**\n * A file part of a message.\n */\nexport type FileUIPart = {\n type: 'file';\n\n /**\n * IANA media type of the file.\n *\n * @see https://www.iana.org/assignments/media-types/media-types.xhtml\n */\n mediaType: string;\n\n /**\n * Optional filename of the file.\n */\n filename?: string;\n\n /**\n * The URL of the file.\n * It can either be a URL to a hosted file or a [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs).\n */\n url: string;\n\n /**\n * The provider metadata.\n */\n providerMetadata?: ProviderMetadata;\n};\n\n/**\n * A step boundary part of a message.\n */\nexport type StepStartUIPart = {\n type: 'step-start';\n};\n\nexport type DataUIPart<DATA_TYPES extends UIDataTypes> = ValueOf<{\n [NAME in keyof DATA_TYPES & string]: {\n type: `data-${NAME}`;\n id?: string;\n data: DATA_TYPES[NAME];\n };\n}>;\n\ntype asUITool<TOOL extends UITool | Tool> = TOOL extends Tool\n ? InferUITool<TOOL>\n : TOOL;\n\n/**\n * Check if a message part is a data part.\n */\nexport function isDataUIPart<DATA_TYPES extends UIDataTypes>(\n part: UIMessagePart<DATA_TYPES, UITools>,\n): part is DataUIPart<DATA_TYPES> {\n return part.type.startsWith('data-');\n}\n\n/**\n * A UI tool invocation contains all the information needed to render a tool invocation in the UI.\n * It can be derived from a tool without knowing the tool name, and can be used to define\n * UI components for the tool.\n */\nexport type UIToolInvocation<TOOL extends UITool | Tool> = {\n /**\n * ID of the tool call.\n */\n toolCallId: string;\n title?: string;\n\n /**\n * Whether the tool call was executed by the provider.\n */\n providerExecuted?: boolean;\n} & (\n | {\n state: 'input-streaming';\n input: DeepPartial<asUITool<TOOL>['input']> | undefined;\n output?: never;\n errorText?: never;\n approval?: never;\n }\n | {\n state: 'input-available';\n input: asUITool<TOOL>['input'];\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval?: never;\n }\n | {\n state: 'approval-requested';\n input: asUITool<TOOL>['input'];\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved?: never;\n reason?: never;\n };\n }\n | {\n state: 'approval-responded';\n input: asUITool<TOOL>['input'];\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved: boolean;\n reason?: string;\n };\n }\n | {\n state: 'output-available';\n input: asUITool<TOOL>['input'];\n output: asUITool<TOOL>['output'];\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n preliminary?: boolean;\n approval?: {\n id: string;\n approved: true;\n reason?: string;\n };\n }\n | {\n state: 'output-error'; // TODO AI SDK 6: change to 'error' state\n input: asUITool<TOOL>['input'] | undefined;\n rawInput?: unknown; // TODO AI SDK 6: remove this field, input should be unknown\n output?: never;\n errorText: string;\n callProviderMetadata?: ProviderMetadata;\n approval?: {\n id: string;\n approved: true;\n reason?: string;\n };\n }\n | {\n state: 'output-denied';\n input: asUITool<TOOL>['input'];\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved: false;\n reason?: string;\n };\n }\n);\n\nexport type ToolUIPart<TOOLS extends UITools = UITools> = ValueOf<{\n [NAME in keyof TOOLS & string]: {\n type: `tool-${NAME}`;\n } & UIToolInvocation<TOOLS[NAME]>;\n}>;\n\nexport type DynamicToolUIPart = {\n type: 'dynamic-tool';\n\n /**\n * Name of the tool that is being called.\n */\n toolName: string;\n\n /**\n * ID of the tool call.\n */\n toolCallId: string;\n title?: string;\n\n /**\n * Whether the tool call was executed by the provider.\n */\n providerExecuted?: boolean;\n} & (\n | {\n state: 'input-streaming';\n input: unknown | undefined;\n output?: never;\n errorText?: never;\n approval?: never;\n }\n | {\n state: 'input-available';\n input: unknown;\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval?: never;\n }\n | {\n state: 'approval-requested';\n input: unknown;\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved?: never;\n reason?: never;\n };\n }\n | {\n state: 'approval-responded';\n input: unknown;\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved: boolean;\n reason?: string;\n };\n }\n | {\n state: 'output-available';\n input: unknown;\n output: unknown;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n preliminary?: boolean;\n approval?: {\n id: string;\n approved: true;\n reason?: string;\n };\n }\n | {\n state: 'output-error'; // TODO AI SDK 6: change to 'error' state\n input: unknown;\n output?: never;\n errorText: string;\n callProviderMetadata?: ProviderMetadata;\n approval?: {\n id: string;\n approved: true;\n reason?: string;\n };\n }\n | {\n state: 'output-denied';\n input: unknown;\n output?: never;\n errorText?: never;\n callProviderMetadata?: ProviderMetadata;\n approval: {\n id: string;\n approved: false;\n reason?: string;\n };\n }\n);\n\n/**\n * Type guard to check if a message part is a text part.\n */\nexport function isTextUIPart(\n part: UIMessagePart<UIDataTypes, UITools>,\n): part is TextUIPart {\n return part.type === 'text';\n}\n\n/**\n * Type guard to check if a message part is a file part.\n */\nexport function isFileUIPart(\n part: UIMessagePart<UIDataTypes, UITools>,\n): part is FileUIPart {\n return part.type === 'file';\n}\n\n/**\n * Type guard to check if a message part is a reasoning part.\n */\nexport function isReasoningUIPart(\n part: UIMessagePart<UIDataTypes, UITools>,\n): part is ReasoningUIPart {\n return part.type === 'reasoning';\n}\n\n/**\n * Check if a message part is a static tool part.\n *\n * Static tools are tools for which the types are known at development time.\n */\nexport function isStaticToolUIPart<TOOLS extends UITools>(\n part: UIMessagePart<UIDataTypes, TOOLS>,\n): part is ToolUIPart<TOOLS> {\n return part.type.startsWith('tool-');\n}\n\n/**\n * Check if a message part is a dynamic tool part.\n *\n * Dynamic tools are tools for which the input and output types are unknown.\n */\nexport function isDynamicToolUIPart(\n part: UIMessagePart<UIDataTypes, UITools>,\n): part is DynamicToolUIPart {\n return part.type === 'dynamic-tool';\n}\n\n/**\n * Check if a message part is a tool part.\n *\n * Tool parts are either static or dynamic tools.\n *\n * Use `isStaticToolUIPart` or `isDynamicToolUIPart` to check the type of the tool.\n */\nexport function isToolUIPart<TOOLS extends UITools>(\n part: UIMessagePart<UIDataTypes, TOOLS>,\n): part is ToolUIPart<TOOLS> | DynamicToolUIPart {\n return isStaticToolUIPart(part) || isDynamicToolUIPart(part);\n}\n\n/**\n * @deprecated Use isToolUIPart instead.\n */\nexport const isToolOrDynamicToolUIPart = isToolUIPart;\n\n/**\n * Returns the name of the static tool.\n *\n * The possible values are the keys of the tool set.\n */\nexport function getStaticToolName<TOOLS extends UITools>(\n part: ToolUIPart<TOOLS>,\n): keyof TOOLS {\n return part.type.split('-').slice(1).join('-') as keyof TOOLS;\n}\n\n/**\n * Returns the name of the tool (static or dynamic).\n *\n * This function will not restrict the name to the keys of the tool set.\n * If you need to restrict the name to the keys of the tool set, use `getStaticToolName` instead.\n */\nexport function getToolName(\n part: ToolUIPart<UITools> | DynamicToolUIPart,\n): string {\n return isDynamicToolUIPart(part) ? part.toolName : getStaticToolName(part);\n}\n\n/**\n * @deprecated Use getToolName instead.\n */\nexport const getToolOrDynamicToolName = getToolName;\n\nexport type InferUIMessageMetadata<T extends UIMessage> =\n T extends UIMessage<infer METADATA> ? METADATA : unknown;\n\nexport type InferUIMessageData<T extends UIMessage> =\n T extends UIMessage<unknown, infer DATA_TYPES> ? DATA_TYPES : UIDataTypes;\n\nexport type InferUIMessageTools<T extends UIMessage> =\n T extends UIMessage<unknown, UIDataTypes, infer TOOLS> ? TOOLS : UITools;\n\nexport type InferUIMessageToolOutputs<UI_MESSAGE extends UIMessage> =\n InferUIMessageTools<UI_MESSAGE>[keyof InferUIMessageTools<UI_MESSAGE>]['output'];\n\nexport type InferUIMessageToolCall<UI_MESSAGE extends UIMessage> =\n | ValueOf<{\n [NAME in keyof InferUIMessageTools<UI_MESSAGE>]: ToolCall<\n NAME & string,\n InferUIMessageTools<UI_MESSAGE>[NAME] extends { input: infer INPUT }\n ? INPUT\n : never\n > & { dynamic?: false };\n }>\n | (ToolCall<string, unknown> & { dynamic: true });\n\nexport type InferUIMessagePart<UI_MESSAGE extends UIMessage> = UIMessagePart<\n InferUIMessageData<UI_MESSAGE>,\n InferUIMessageTools<UI_MESSAGE>\n>;\n","import { FlexibleSchema, validateTypes } from '@ai-sdk/provider-utils';\nimport { ProviderMetadata } from '../types';\nimport { FinishReason } from '../types/language-model';\nimport {\n DataUIMessageChunk,\n InferUIMessageChunk,\n isDataUIMessageChunk,\n UIMessageChunk,\n} from '../ui-message-stream/ui-message-chunks';\nimport { ErrorHandler } from '../util/error-handler';\nimport { mergeObjects } from '../util/merge-objects';\nimport { parsePartialJson } from '../util/parse-partial-json';\nimport { UIDataTypesToSchemas } from './chat';\nimport {\n DataUIPart,\n DynamicToolUIPart,\n getStaticToolName,\n InferUIMessageData,\n InferUIMessageMetadata,\n InferUIMessageToolCall,\n InferUIMessageTools,\n isStaticToolUIPart,\n isToolUIPart,\n ReasoningUIPart,\n TextUIPart,\n ToolUIPart,\n UIMessage,\n UIMessagePart,\n} from './ui-messages';\n\nexport type StreamingUIMessageState<UI_MESSAGE extends UIMessage> = {\n message: UI_MESSAGE;\n activeTextParts: Record<string, TextUIPart>;\n activeReasoningParts: Record<string, ReasoningUIPart>;\n partialToolCalls: Record<\n string,\n {\n text: string;\n index: number;\n toolName: string;\n dynamic?: boolean;\n title?: string;\n }\n >;\n finishReason?: FinishReason;\n};\n\nexport function createStreamingUIMessageState<UI_MESSAGE extends UIMessage>({\n lastMessage,\n messageId,\n}: {\n lastMessage: UI_MESSAGE | undefined;\n messageId: string;\n}): StreamingUIMessageState<UI_MESSAGE> {\n return {\n message:\n lastMessage?.role === 'assistant'\n ? lastMessage\n : ({\n id: messageId,\n metadata: undefined,\n role: 'assistant',\n parts: [] as UIMessagePart<\n InferUIMessageData<UI_MESSAGE>,\n InferUIMessageTools<UI_MESSAGE>\n >[],\n } as UI_MESSAGE),\n activeTextParts: {},\n activeReasoningParts: {},\n partialToolCalls: {},\n };\n}\n\nexport function processUIMessageStream<UI_MESSAGE extends UIMessage>({\n stream,\n messageMetadataSchema,\n dataPartSchemas,\n runUpdateMessageJob,\n onError,\n onToolCall,\n onData,\n}: {\n // input stream is not fully typed yet:\n stream: ReadableStream<UIMessageChunk>;\n messageMetadataSchema?: FlexibleSchema<InferUIMessageMetadata<UI_MESSAGE>>;\n dataPartSchemas?: UIDataTypesToSchemas<InferUIMessageData<UI_MESSAGE>>;\n onToolCall?: (options: {\n toolCall: InferUIMessageToolCall<UI_MESSAGE>;\n }) => void | PromiseLike<void>;\n onData?: (dataPart: DataUIPart<InferUIMessageData<UI_MESSAGE>>) => void;\n runUpdateMessageJob: (\n job: (options: {\n state: StreamingUIMessageState<UI_MESSAGE>;\n write: () => void;\n }) => Promise<void>,\n ) => Promise<void>;\n onError: ErrorHandler;\n}): ReadableStream<InferUIMessageChunk<UI_MESSAGE>> {\n return stream.pipeThrough(\n new TransformStream<UIMessageChunk, InferUIMessageChunk<UI_MESSAGE>>({\n async transform(chunk, controller) {\n await runUpdateMessageJob(async ({ state, write }) => {\n function getToolInvocation(toolCallId: string) {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n\n const toolInvocation = toolInvocations.find(\n invocation => invocation.toolCallId === toolCallId,\n );\n\n if (toolInvocation == null) {\n throw new Error(\n `no tool invocation found for tool call ${toolCallId}`,\n );\n }\n\n return toolInvocation;\n }\n\n function updateToolPart(\n options: {\n toolName: keyof InferUIMessageTools<UI_MESSAGE> & string;\n toolCallId: string;\n providerExecuted?: boolean;\n title?: string;\n } & (\n | {\n state: 'input-streaming';\n input: unknown;\n providerExecuted?: boolean;\n }\n | {\n state: 'input-available';\n input: unknown;\n providerExecuted?: boolean;\n providerMetadata?: ProviderMetadata;\n }\n | {\n state: 'output-available';\n input: unknown;\n output: unknown;\n providerExecuted?: boolean;\n preliminary?: boolean;\n }\n | {\n state: 'output-error';\n input: unknown;\n rawInput?: unknown;\n errorText: string;\n providerExecuted?: boolean;\n providerMetadata?: ProviderMetadata;\n }\n ),\n ) {\n const part = state.message.parts.find(\n part =>\n isStaticToolUIPart(part) &&\n part.toolCallId === options.toolCallId,\n ) as ToolUIPart<InferUIMessageTools<UI_MESSAGE>> | undefined;\n\n const anyOptions = options as any;\n const anyPart = part as any;\n\n if (part != null) {\n part.state = options.state;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = anyOptions.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n if (options.title !== undefined) {\n anyPart.title = options.title;\n }\n // once providerExecuted is set, it stays for streaming\n anyPart.providerExecuted =\n anyOptions.providerExecuted ?? part.providerExecuted;\n\n if (\n anyOptions.providerMetadata != null &&\n part.state === 'input-available'\n ) {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: `tool-${options.toolName}`,\n toolCallId: options.toolCallId,\n state: options.state,\n title: options.title,\n input: anyOptions.input,\n output: anyOptions.output,\n rawInput: anyOptions.rawInput,\n errorText: anyOptions.errorText,\n providerExecuted: anyOptions.providerExecuted,\n preliminary: anyOptions.preliminary,\n ...(anyOptions.providerMetadata != null\n ? { callProviderMetadata: anyOptions.providerMetadata }\n : {}),\n } as ToolUIPart<InferUIMessageTools<UI_MESSAGE>>);\n }\n }\n\n function updateDynamicToolPart(\n options: {\n toolName: keyof InferUIMessageTools<UI_MESSAGE> & string;\n toolCallId: string;\n providerExecuted?: boolean;\n title?: string;\n } & (\n | {\n state: 'input-streaming';\n input: unknown;\n }\n | {\n state: 'input-available';\n input: unknown;\n providerMetadata?: ProviderMetadata;\n }\n | {\n state: 'output-available';\n input: unknown;\n output: unknown;\n preliminary: boolean | undefined;\n }\n | {\n state: 'output-error';\n input: unknown;\n errorText: string;\n providerMetadata?: ProviderMetadata;\n }\n ),\n ) {\n const part = state.message.parts.find(\n part =>\n part.type === 'dynamic-tool' &&\n part.toolCallId === options.toolCallId,\n ) as DynamicToolUIPart | undefined;\n\n const anyOptions = options as any;\n const anyPart = part as any;\n\n if (part != null) {\n part.state = options.state;\n anyPart.toolName = options.toolName;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = anyOptions.rawInput ?? anyPart.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n if (options.title !== undefined) {\n anyPart.title = options.title;\n }\n // once providerExecuted is set, it stays for streaming\n anyPart.providerExecuted =\n anyOptions.providerExecuted ?? part.providerExecuted;\n\n if (\n anyOptions.providerMetadata != null &&\n part.state === 'input-available'\n ) {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: 'dynamic-tool',\n toolName: options.toolName,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n errorText: anyOptions.errorText,\n preliminary: anyOptions.preliminary,\n providerExecuted: anyOptions.providerExecuted,\n title: options.title,\n ...(anyOptions.providerMetadata != null\n ? { callProviderMetadata: anyOptions.providerMetadata }\n : {}),\n } as DynamicToolUIPart);\n }\n }\n\n async function updateMessageMetadata(metadata: unknown) {\n if (metadata != null) {\n const mergedMetadata =\n state.message.metadata != null\n ? mergeObjects(state.message.metadata, metadata)\n : metadata;\n\n if (messageMetadataSchema != null) {\n await validateTypes({\n value: mergedMetadata,\n schema: messageMetadataSchema,\n });\n }\n\n state.message.metadata =\n mergedMetadata as InferUIMessageMetadata<UI_MESSAGE>;\n }\n }\n\n switch (chunk.type) {\n case 'text-start': {\n const textPart: TextUIPart = {\n type: 'text',\n text: '',\n providerMetadata: chunk.providerMetadata,\n state: 'streaming',\n };\n state.activeTextParts[chunk.id] = textPart;\n state.message.parts.push(textPart);\n write();\n break;\n }\n\n case 'text-delta': {\n const textPart = state.activeTextParts[chunk.id];\n textPart.text += chunk.delta;\n textPart.providerMetadata =\n chunk.providerMetadata ?? textPart.providerMetadata;\n write();\n break;\n }\n\n case 'text-end': {\n const textPart = state.activeTextParts[chunk.id];\n textPart.state = 'done';\n textPart.providerMetadata =\n chunk.providerMetadata ?? textPart.providerMetadata;\n delete state.activeTextParts[chunk.id];\n write();\n break;\n }\n\n case 'reasoning-start': {\n const reasoningPart: ReasoningUIPart = {\n type: 'reasoning',\n text: '',\n providerMetadata: chunk.providerMetadata,\n state: 'streaming',\n };\n state.activeReasoningParts[chunk.id] = reasoningPart;\n state.message.parts.push(reasoningPart);\n write();\n break;\n }\n\n case 'reasoning-delta': {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.text += chunk.delta;\n reasoningPart.providerMetadata =\n chunk.providerMetadata ?? reasoningPart.providerMetadata;\n write();\n break;\n }\n\n case 'reasoning-end': {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.providerMetadata =\n chunk.providerMetadata ?? reasoningPart.providerMetadata;\n reasoningPart.state = 'done';\n delete state.activeReasoningParts[chunk.id];\n\n write();\n break;\n }\n\n case 'file': {\n state.message.parts.push({\n type: 'file',\n mediaType: chunk.mediaType,\n url: chunk.url,\n });\n\n write();\n break;\n }\n\n case 'source-url': {\n state.message.parts.push({\n type: 'source-url',\n sourceId: chunk.sourceId,\n url: chunk.url,\n title: chunk.title,\n providerMetadata: chunk.providerMetadata,\n });\n\n write();\n break;\n }\n\n case 'source-document': {\n state.message.parts.push({\n type: 'source-document',\n sourceId: chunk.sourceId,\n mediaType: chunk.mediaType,\n title: chunk.title,\n filename: chunk.filename,\n providerMetadata: chunk.providerMetadata,\n });\n\n write();\n break;\n }\n\n case 'tool-input-start': {\n const toolInvocations =\n state.message.parts.filter(isStaticToolUIPart);\n\n // add the partial tool call to the map\n state.partialToolCalls[chunk.toolCallId] = {\n text: '',\n toolName: chunk.toolName,\n index: toolInvocations.length,\n dynamic: chunk.dynamic,\n title: chunk.title,\n };\n\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'input-streaming',\n input: undefined,\n providerExecuted: chunk.providerExecuted,\n title: chunk.title,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'input-streaming',\n input: undefined,\n providerExecuted: chunk.providerExecuted,\n title: chunk.title,\n });\n }\n\n write();\n break;\n }\n\n case 'tool-input-delta': {\n const partialToolCall = state.partialToolCalls[chunk.toolCallId];\n\n partialToolCall.text += chunk.inputTextDelta;\n\n const { value: partialArgs } = await parsePartialJson(\n partialToolCall.text,\n );\n\n if (partialToolCall.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: 'input-streaming',\n input: partialArgs,\n title: partialToolCall.title,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: 'input-streaming',\n input: partialArgs,\n title: partialToolCall.title,\n });\n }\n\n write();\n break;\n }\n\n case 'tool-input-available': {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'input-available',\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n title: chunk.title,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'input-available',\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n title: chunk.title,\n });\n }\n\n write();\n\n // invoke the onToolCall callback if it exists. This is blocking.\n // In the future we should make this non-blocking, which\n // requires additional state management for error handling etc.\n // Skip calling onToolCall for provider-executed tools since they are already executed\n if (onToolCall && !chunk.providerExecuted) {\n await onToolCall({\n toolCall: chunk as InferUIMessageToolCall<UI_MESSAGE>,\n });\n }\n break;\n }\n\n case 'tool-input-error': {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'output-error',\n input: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: 'output-error',\n input: undefined,\n rawInput: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata,\n });\n }\n\n write();\n break;\n }\n\n case 'tool-approval-request': {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n toolInvocation.state = 'approval-requested';\n toolInvocation.approval = { id: chunk.approvalId };\n write();\n break;\n }\n\n case 'tool-output-denied': {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n toolInvocation.state = 'output-denied';\n write();\n break;\n }\n\n case 'tool-output-available': {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n\n if (toolInvocation.type === 'dynamic-tool') {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: 'output-available',\n input: (toolInvocation as any).input,\n output: chunk.output,\n preliminary: chunk.preliminary,\n providerExecuted: chunk.providerExecuted,\n title: toolInvocation.title,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getStaticToolName(toolInvocation),\n state: 'output-available',\n input: (toolInvocation as any).input,\n output: chunk.output,\n providerExecuted: chunk.providerExecuted,\n preliminary: chunk.preliminary,\n title: toolInvocation.title,\n });\n }\n\n write();\n break;\n }\n\n case 'tool-output-error': {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n\n if (toolInvocation.type === 'dynamic-tool') {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: 'output-error',\n input: (toolInvocation as any).input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n title: toolInvocation.title,\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getStaticToolName(toolInvocation),\n state: 'output-error',\n input: (toolInvocation as any).input,\n rawInput: (toolInvocation as any).rawInput,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n title: toolInvocation.title,\n });\n }\n\n write();\n break;\n }\n\n case 'start-step': {\n // add a step boundary part to the message\n state.message.parts.push({ type: 'step-start' });\n break;\n }\n\n case 'finish-step': {\n // reset the current text and reasoning parts\n state.activeTextParts = {};\n state.activeReasoningParts = {};\n break;\n }\n\n case 'start': {\n if (chunk.messageId != null) {\n state.message.id = chunk.messageId;\n }\n\n await updateMessageMetadata(chunk.messageMetadata);\n\n if (chunk.messageId != null || chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n\n case 'finish': {\n if (chunk.finishReason != null) {\n state.finishReason = chunk.finishReason;\n }\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n\n case 'message-metadata': {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n\n case 'error': {\n onError?.(new Error(chunk.errorText));\n break;\n }\n\n default: {\n if (isDataUIMessageChunk(chunk)) {\n // validate data chunk if dataPartSchemas is provided\n if (dataPartSchemas?.[chunk.type] != null) {\n await validateTypes({\n value: chunk.data,\n schema: dataPartSchemas[chunk.type],\n });\n }\n\n // cast, validation is done above\n const dataChunk = chunk as DataUIMessageChunk<\n InferUIMessageData<UI_MESSAGE>\n >;\n\n // transient parts are not added to the message state\n if (dataChunk.transient) {\n onData?.(dataChunk);\n break;\n }\n\n const existingUIPart =\n dataChunk.id != null\n ? (state.message.parts.find(\n chunkArg =>\n dataChunk.type === chunkArg.type &&\n dataChunk.id === chunkArg.id,\n ) as\n | DataUIPart<InferUIMessageData<UI_MESSAGE>>\n | undefined)\n : undefined;\n\n if (existingUIPart != null) {\n existingUIPart.data = dataChunk.data;\n } else {\n state.message.parts.push(dataChunk);\n }\n\n onData?.(dataChunk);\n\n write();\n }\n }\n }\n\n controller.enqueue(chunk as InferUIMessageChunk<UI_MESSAGE>);\n });\n },\n }),\n );\n}\n","import {\n createStreamingUIMessageState,\n processUIMessageStream,\n StreamingUIMessageState,\n} from '../ui/process-ui-message-stream';\nimport { UIMessage } from '../ui/ui-messages';\nimport { ErrorHandler } from '../util/error-handler';\nimport { InferUIMessageChunk, UIMessageChunk } from './ui-message-chunks';\nimport { UIMessageStreamOnFinishCallback } from './ui-message-stream-on-finish-callback';\n\nexport function handleUIMessageStreamFinish<UI_MESSAGE extends UIMessage>({\n messageId,\n originalMessages = [],\n onFinish,\n onError,\n stream,\n}: {\n stream: ReadableStream<InferUIMessageChunk<UI_MESSAGE>>;\n\n /**\n * The message ID to use for the response message.\n * If not provided, no id will be set for the response message.\n */\n messageId?: string;\n\n /**\n * The original messages.\n */\n originalMessages?: UI_MESSAGE[];\n\n onError: ErrorHandler;\n\n onFinish?: UIMessageStreamOnFinishCallback<UI_MESSAGE>;\n}): ReadableStream<InferUIMessageChunk<UI_MESSAGE>> {\n // last message is only relevant for assistant messages\n let lastMessage: UI_MESSAGE | undefined =\n originalMessages?.[originalMessages.length - 1];\n if (lastMessage?.role !== 'assistant') {\n lastMessage = undefined;\n } else {\n // appending to the last message, so we need to use the same id\n messageId = lastMessage.id;\n }\n\n let isAborted = false;\n\n const idInjectedStream = stream.pipeThrough(\n new TransformStream<\n InferUIMessageChunk<UI_MESSAGE>,\n InferUIMessageChunk<UI_MESSAGE>\n >({\n transform(chunk, controller) {\n // when there is no messageId in the start chunk,\n // but the user checked for persistence,\n // inject the messageId into the chunk\n if (chunk.type === 'start') {\n const startChunk = chunk as UIMessageChunk & { type: 'start' };\n if (startChunk.messageId == null && messageId != null) {\n startChunk.messageId = messageId;\n }\n }\n\n if (chunk.type === 'abort') {\n isAborted = true;\n }\n\n controller.enqueue(chunk);\n },\n }),\n );\n\n if (onFinish == null) {\n return idInjectedStream;\n }\n\n const state = createStreamingUIMessageState<UI_MESSAGE>({\n lastMessage: lastMessage\n ? (structuredClone(lastMessage) as UI_MESSAGE)\n : undefined,\n messageId: messageId ?? '', // will be overridden by the stream\n });\n\n const runUpdateMessageJob = async (\n job: (options: {\n state: StreamingUIMessageState<UI_MESSAGE>;\n write: () => void;\n }) => Promise<void>,\n ) => {\n await job({ state, write: () => {} });\n };\n\n let finishCalled = false;\n\n const callOnFinish = async () => {\n if (finishCalled || !onFinish) {\n return;\n }\n finishCalled = true;\n\n const isContinuation = state.message.id === lastMessage?.id;\n await onFinish({\n isAborted,\n isContinuation,\n responseMessage: state.message as UI_MESSAGE,\n messages: [\n ...(isContinuation ? originalMessages.slice(0, -1) : originalMessages),\n state.message,\n ] as UI_MESSAGE[],\n finishReason: state.finishReason,\n });\n };\n\n return processUIMessageStream<UI_MESSAGE>({\n stream: idInjectedStream,\n runUpdateMessageJob,\n onError,\n }).pipeThrough(\n new TransformStream<\n InferUIMessageChunk<UI_MESSAGE>,\n InferUIMessageChunk<UI_MESSAGE>\n >({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n },\n // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility\n async cancel() {\n await callOnFinish();\n },\n\n async flush() {\n await callOnFinish();\n },\n }),\n );\n}\n","import { ServerResponse } from 'node:http';\nimport { prepareHeaders } from '../util/prepare-headers';\nimport { writeToServerResponse } from '../util/write-to-server-response';\nimport { JsonToSseTransformStream } from './json-to-sse-transform-stream';\nimport { UI_MESSAGE_STREAM_HEADERS } from './ui-message-stream-headers';\nimport { UIMessageChunk } from './ui-message-chunks';\nimport { UIMessageStreamResponseInit } from './ui-message-stream-response-init';\n\nexport function pipeUIMessageStreamToResponse({\n response,\n status,\n statusText,\n headers,\n stream,\n consumeSseStream,\n}: {\n response: ServerResponse;\n stream: ReadableStream<UIMessageChunk>;\n} & UIMessageStreamResponseInit): void {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n\n // when the consumeSseStream is provided, we need to tee the stream\n // and send the second part to the consumeSseStream function\n // so that it can be consumed by the client independently\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 }); // no await (do not block the response)\n }\n\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS).entries(),\n ),\n stream: sseStream.pipeThrough(new TextEncoderStream()),\n });\n}\n","/**\n * A type that combines AsyncIterable and ReadableStream.\n * This allows a ReadableStream to be consumed using for-await-of syntax.\n */\nexport type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;\n\n/**\n * Wraps a ReadableStream and returns an object that is both a ReadableStream and an AsyncIterable.\n * This enables consumption of the stream using for-await-of, with proper resource cleanup on early exit or error.\n *\n * @template T The type of the stream's chunks.\n * @param source The source ReadableStream to wrap.\n * @returns An AsyncIterableStream that can be used as both a ReadableStream and an AsyncIterable.\n */\nexport function createAsyncIterableStream<T>(\n source: ReadableStream<T>,\n): AsyncIterableStream<T> {\n // Pipe through a TransformStream to ensure a fresh, unlocked stream.\n const stream = source.pipeThrough(new TransformStream<T, T>());\n\n /**\n * Implements the async iterator protocol for the stream.\n * Ensures proper cleanup (cancelling and releasing the reader) on completion, early exit, or error.\n */\n (stream as AsyncIterableStream<T>)[Symbol.asyncIterator] = function (\n this: ReadableStream<T>,\n ): AsyncIterator<T> {\n const reader = this.getReader();\n\n let finished = false;\n\n /**\n * Cleans up the reader by cancelling and releasing the lock.\n */\n async function cleanup(cancelStream: boolean) {\n finished = true;\n try {\n if (cancelStream) {\n await reader.cancel?.();\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {}\n }\n }\n\n return {\n /**\n * Reads the next chunk from the stream.\n * @returns A promise resolving to the next IteratorResult.\n */\n async next(): Promise<IteratorResult<T>> {\n if (finished) {\n return { done: true, value: undefined };\n }\n\n const { done, value } = await reader.read();\n\n if (done) {\n await cleanup(true);\n return { done: true, value: undefined };\n }\n\n return { done: false, value };\n },\n\n /**\n * Called on early exit (e.g., break from for-await).\n * Ensures the stream is cancelled and resources are released.\n * @returns A promise resolving to a completed IteratorResult.\n */\n async return(): Promise<IteratorResult<T>> {\n await cleanup(true);\n return { done: true, value: undefined };\n },\n\n /**\n * Called on early exit with error.\n * Ensures the stream is cancelled and resources are released, then rethrows the error.\n * @param err The error to throw.\n * @returns A promise that rejects with the provided error.\n */\n async throw(err: unknown): Promise<IteratorResult<T>> {\n await cleanup(true);\n throw err;\n },\n };\n };\n\n return stream as AsyncIterableStream<T>;\n}\n","/**\n * Consumes a ReadableStream until it's fully read.\n *\n * This function reads the stream chunk by chunk until the stream is exhausted.\n * It doesn't process or return the data from the stream; it simply ensures\n * that the entire stream is read.\n *\n * @param {ReadableStream} stream - The ReadableStream to be consumed.\n * @returns {Promise<void>} A promise that resolves when the stream is fully consumed.\n */\nexport async function consumeStream({\n stream,\n onError,\n}: {\n stream: ReadableStream;\n onError?: (error: unknown) => void;\n}): Promise<void> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done } = await reader.read();\n if (done) break;\n }\n } catch (error) {\n onError?.(error);\n } finally {\n reader.releaseLock();\n }\n}\n","import { ErrorHandler } from './error-handler';\n\n/**\n * Creates a Promise with externally accessible resolve and reject functions.\n *\n * @template T - The type of the value that the Promise will resolve to.\n * @returns An object containing:\n * - promise: A Promise that can be resolved or rejected externally.\n * - resolve: A function to resolve the Promise with a value of type T.\n * - reject: A function to reject the Promise with an error.\n */\nexport function createResolvablePromise<T = any>(): {\n promise: Promise<T>;\n resolve: (value: T) => void;\n reject: ErrorHandler;\n} {\n let resolve: (value: T) => void;\n let reject: ErrorHandler;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return {\n promise,\n resolve: resolve!,\n reject: reject!,\n };\n}\n","import { createResolvablePromise } from './create-resolvable-promise';\n\n/**\n * Creates a stitchable stream that can pipe one stream at a time.\n *\n * @template T - The type of values emitted by the streams.\n * @returns {Object} An object containing the stitchable stream and control methods.\n */\nexport function createStitchableStream<T>(): {\n stream: ReadableStream<T>;\n addStream: (innerStream: ReadableStream<T>) => void;\n close: () => void;\n terminate: () => void;\n} {\n let innerStreamReaders: ReadableStreamDefaultReader<T>[] = [];\n let controller: ReadableStreamDefaultController<T> | null = null;\n let isClosed = false;\n let waitForNewStream = createResolvablePromise<void>();\n\n const terminate = () => {\n isClosed = true;\n waitForNewStream.resolve();\n\n innerStreamReaders.forEach(reader => reader.cancel());\n innerStreamReaders = [];\n controller?.close();\n };\n\n const processPull = async () => {\n // Case 1: Outer stream is closed and no more inner streams\n if (isClosed && innerStreamReaders.length === 0) {\n controller?.close();\n return;\n }\n\n // Case 2: No inner streams available, but outer stream is open\n // wait for a new inner stream to be added or the outer stream to close\n if (innerStreamReaders.length === 0) {\n waitForNewStream = createResolvablePromise<void>();\n await waitForNewStream.promise;\n return processPull();\n }\n\n try {\n const { value, done } = await innerStreamReaders[0].read();\n\n if (done) {\n // Case 3: Current inner stream is done\n innerStreamReaders.shift(); // Remove the finished stream\n\n if (innerStreamReaders.length === 0 && isClosed) {\n // when closed and no more inner streams, stop pulling\n controller?.close();\n } else {\n // continue pulling from the next stream\n await processPull();\n }\n } else {\n // Case 4: Current inner stream returns an item\n controller?.enqueue(value);\n }\n } catch (error) {\n // Case 5: Current inner stream throws an error\n controller?.error(error);\n innerStreamReaders.shift(); // Remove the errored stream\n terminate(); // we have errored, terminate all streams\n }\n };\n\n return {\n stream: new ReadableStream<T>({\n start(controllerParam) {\n controller = controllerParam;\n },\n pull: processPull,\n async cancel() {\n for (const reader of innerStreamReaders) {\n await reader.cancel();\n }\n innerStreamReaders = [];\n isClosed = true;\n },\n }),\n addStream: (innerStream: ReadableStream<T>) => {\n if (isClosed) {\n throw new Error('Cannot add inner stream: outer stream is closed');\n }\n\n innerStreamReaders.push(innerStream.getReader());\n waitForNewStream.resolve();\n },\n\n /**\n * Gracefully close the outer stream. This will let the inner streams\n * finish processing and then close the outer stream.\n */\n close: () => {\n isClosed = true;\n waitForNewStream.resolve();\n\n if (innerStreamReaders.length === 0) {\n controller?.close();\n }\n },\n\n /**\n * Immediately close the outer stream. This will cancel all inner streams\n * and close the outer stream.\n */\n terminate,\n };\n}\n","// Shim for performance.now() to support environments that don't have it:\nexport function now(): number {\n return globalThis?.performance?.now() ?? Date.now();\n}\n","import { LanguageModelV3StreamPart, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n getErrorMessage,\n IdGenerator,\n ModelMessage,\n SystemModelMessage,\n} from '@ai-sdk/provider-utils';\nimport { Tracer } from '@opentelemetry/api';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { FinishReason, LanguageModelUsage, ProviderMetadata } from '../types';\nimport { Source } from '../types/language-model';\nimport { asLanguageModelUsage } from '../types/usage';\nimport { executeToolCall } from './execute-tool-call';\nimport { DefaultGeneratedFileWithType, GeneratedFile } from './generated-file';\nimport { isApprovalNeeded } from './is-approval-needed';\nimport { parseToolCall } from './parse-tool-call';\nimport { ToolApprovalRequestOutput } from './tool-approval-request-output';\nimport { TypedToolCall } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair-function';\nimport { TypedToolError } from './tool-error';\nimport { TypedToolResult } from './tool-result';\nimport { ToolSet } from './tool-set';\n\nexport type SingleRequestTextStreamPart<TOOLS extends ToolSet> =\n // Text blocks:\n | {\n type: 'text-start';\n providerMetadata?: ProviderMetadata;\n id: string;\n }\n | {\n type: 'text-delta';\n id: string;\n providerMetadata?: ProviderMetadata;\n delta: string;\n }\n | {\n type: 'text-end';\n providerMetadata?: ProviderMetadata;\n id: string;\n }\n\n // Reasoning blocks:\n | {\n type: 'reasoning-start';\n providerMetadata?: ProviderMetadata;\n id: string;\n }\n | {\n type: 'reasoning-delta';\n id: string;\n providerMetadata?: ProviderMetadata;\n delta: string;\n }\n | {\n type: 'reasoning-end';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n\n // Tool calls:\n | {\n type: 'tool-input-start';\n id: string;\n toolName: string;\n providerMetadata?: ProviderMetadata;\n dynamic?: boolean;\n title?: string;\n }\n | {\n type: 'tool-input-delta';\n id: string;\n delta: string;\n providerMetadata?: ProviderMetadata;\n }\n | {\n type: 'tool-input-end';\n id: string;\n providerMetadata?: ProviderMetadata;\n }\n | ToolApprovalRequestOutput<TOOLS>\n\n // Other types:\n | ({ type: 'source' } & Source)\n | { type: 'file'; file: GeneratedFile } // different because of GeneratedFile object\n | ({ type: 'tool-call' } & TypedToolCall<TOOLS>)\n | ({ type: 'tool-result' } & TypedToolResult<TOOLS>)\n | ({ type: 'tool-error' } & TypedToolError<TOOLS>)\n | { type: 'file'; file: GeneratedFile } // different because of GeneratedFile object\n | { type: 'stream-start'; warnings: SharedV3Warning[] }\n | {\n type: 'response-metadata';\n id?: string;\n timestamp?: Date;\n modelId?: string;\n }\n | {\n type: 'finish';\n finishReason: FinishReason;\n rawFinishReason: string | undefined;\n usage: LanguageModelUsage;\n providerMetadata?: ProviderMetadata;\n }\n | { type: 'error'; error: unknown }\n | { type: 'raw'; rawValue: unknown };\n\nexport function runToolsTransformation<TOOLS extends ToolSet>({\n tools,\n generatorStream,\n tracer,\n telemetry,\n system,\n messages,\n abortSignal,\n repairToolCall,\n experimental_context,\n generateId,\n}: {\n tools: TOOLS | undefined;\n generatorStream: ReadableStream<LanguageModelV3StreamPart>;\n tracer: Tracer;\n telemetry: TelemetrySettings | undefined;\n system: string | SystemModelMessage | Array<SystemModelMessage> | undefined;\n messages: ModelMessage[];\n abortSignal: AbortSignal | undefined;\n repairToolCall: ToolCallRepairFunction<TOOLS> | undefined;\n experimental_context: unknown;\n generateId: IdGenerator;\n}): ReadableStream<SingleRequestTextStreamPart<TOOLS>> {\n // tool results stream\n let toolResultsStreamController: ReadableStreamDefaultController<\n SingleRequestTextStreamPart<TOOLS>\n > | null = null;\n const toolResultsStream = new ReadableStream<\n SingleRequestTextStreamPart<TOOLS>\n >({\n start(controller) {\n toolResultsStreamController = controller;\n },\n });\n\n // keep track of outstanding tool results for stream closing:\n const outstandingToolResults = new Set<string>();\n\n // keep track of tool inputs for provider-side tool results\n const toolInputs = new Map<string, unknown>();\n\n let canClose = false;\n let finishChunk:\n | (SingleRequestTextStreamPart<TOOLS> & { type: 'finish' })\n | undefined = undefined;\n\n function attemptClose() {\n // close the tool results controller if no more outstanding tool calls\n if (canClose && outstandingToolResults.size === 0) {\n // we delay sending the finish chunk until all tool results (incl. delayed ones)\n // are received to ensure that the frontend receives tool results before a message\n // finish event arrives.\n if (finishChunk != null) {\n toolResultsStreamController!.enqueue(finishChunk);\n }\n\n toolResultsStreamController!.close();\n }\n }\n\n // forward stream\n const forwardStream = new TransformStream<\n LanguageModelV3StreamPart,\n SingleRequestTextStreamPart<TOOLS>\n >({\n async transform(\n chunk: LanguageModelV3StreamPart,\n controller: TransformStreamDefaultController<\n SingleRequestTextStreamPart<TOOLS>\n >,\n ) {\n const chunkType = chunk.type;\n\n switch (chunkType) {\n // forward:\n case 'stream-start':\n case 'text-start':\n case 'text-delta':\n case 'text-end':\n case 'reasoning-start':\n case 'reasoning-delta':\n case 'reasoning-end':\n case 'tool-input-start':\n case 'tool-input-delta':\n case 'tool-input-end':\n case 'source':\n case 'response-metadata':\n case 'error':\n case 'raw': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'file': {\n controller.enqueue({\n type: 'file',\n file: new DefaultGeneratedFileWithType({\n data: chunk.data,\n mediaType: chunk.mediaType,\n }),\n });\n break;\n }\n\n case 'finish': {\n finishChunk = {\n type: 'finish',\n finishReason: chunk.finishReason.unified,\n rawFinishReason: chunk.finishReason.raw,\n usage: asLanguageModelUsage(chunk.usage),\n providerMetadata: chunk.providerMetadata,\n };\n break;\n }\n\n // process tool call:\n case 'tool-call': {\n try {\n const toolCall = await parseToolCall({\n toolCall: chunk,\n tools,\n repairToolCall,\n system,\n messages,\n });\n\n controller.enqueue(toolCall);\n\n if (toolCall.invalid) {\n toolResultsStreamController!.enqueue({\n type: 'tool-error',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage(toolCall.error!),\n dynamic: true,\n title: toolCall.title,\n });\n break;\n }\n\n const tool = tools?.[toolCall.toolName];\n\n if (tool == null) {\n // ignore tool calls for tools that are not available,\n // e.g. provider-executed dynamic tools\n break;\n }\n\n if (tool.onInputAvailable != null) {\n await tool.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context,\n });\n }\n\n if (\n await isApprovalNeeded({\n tool,\n toolCall,\n messages,\n experimental_context,\n })\n ) {\n toolResultsStreamController!.enqueue({\n type: 'tool-approval-request',\n approvalId: generateId(),\n toolCall,\n });\n break;\n }\n\n toolInputs.set(toolCall.toolCallId, toolCall.input);\n\n // Only execute tools that are not provider-executed:\n if (tool.execute != null && toolCall.providerExecuted !== true) {\n const toolExecutionId = generateId(); // use our own id to guarantee uniqueness\n outstandingToolResults.add(toolExecutionId);\n\n // Note: we don't await the tool execution here (by leaving out 'await' on recordSpan),\n // because we want to process the next chunk as soon as possible.\n // This is important for the case where the tool execution takes a long time.\n executeToolCall({\n toolCall,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context,\n onPreliminaryToolResult: result => {\n toolResultsStreamController!.enqueue(result);\n },\n }).then(result => {\n toolResultsStreamController!.enqueue(result);\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n });\n }\n } catch (error) {\n toolResultsStreamController!.enqueue({ type: 'error', error });\n }\n\n break;\n }\n\n case 'tool-result': {\n const toolName = chunk.toolName as keyof TOOLS & string;\n\n if (chunk.isError) {\n toolResultsStreamController!.enqueue({\n type: 'tool-error',\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n providerExecuted: true,\n error: chunk.result,\n dynamic: chunk.dynamic,\n } as TypedToolError<TOOLS>);\n } else {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n output: chunk.result,\n providerExecuted: true,\n dynamic: chunk.dynamic,\n } as TypedToolResult<TOOLS>);\n }\n break;\n }\n\n case 'tool-approval-request': {\n // Skip tool-approval-request for now\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = chunkType;\n throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n\n flush() {\n canClose = true;\n attemptClose();\n },\n });\n\n // combine the generator stream and the tool results stream\n return new ReadableStream<SingleRequestTextStreamPart<TOOLS>>({\n async start(controller) {\n // need to wait for both pipes so there are no dangling promises that\n // can cause uncaught promise rejections when the stream is aborted\n return Promise.all([\n generatorStream.pipeThrough(forwardStream).pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n // the generator stream controller is automatically closed when it's consumed\n },\n }),\n ),\n toolResultsStream.pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n controller.close();\n },\n }),\n ),\n ]);\n },\n });\n}\n","import {\n getErrorMessage,\n LanguageModelV3,\n LanguageModelV3FinishReason,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n createIdGenerator,\n DelayedPromise,\n IdGenerator,\n isAbortError,\n ProviderOptions,\n ToolContent,\n} from '@ai-sdk/provider-utils';\nimport { Span } from '@opentelemetry/api';\nimport { ServerResponse } from 'node:http';\nimport { NoOutputGeneratedError } from '../error';\nimport { logWarnings } from '../logger/log-warnings';\nimport { resolveLanguageModel } from '../model/resolve-model';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { createToolModelOutput } from '../prompt/create-tool-model-output';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { prepareToolsAndToolChoice } from '../prompt/prepare-tools-and-tool-choice';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { wrapGatewayError } from '../prompt/wrap-gateway-error';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { createTextStreamResponse } from '../text-stream/create-text-stream-response';\nimport { pipeTextStreamToResponse } from '../text-stream/pipe-text-stream-to-response';\nimport { LanguageModelRequestMetadata } from '../types';\nimport {\n CallWarning,\n FinishReason,\n LanguageModel,\n ToolChoice,\n} from '../types/language-model';\nimport { ProviderMetadata } from '../types/provider-metadata';\nimport {\n addLanguageModelUsage,\n createNullLanguageModelUsage,\n LanguageModelUsage,\n} from '../types/usage';\nimport { UIMessage } from '../ui';\nimport { createUIMessageStreamResponse } from '../ui-message-stream/create-ui-message-stream-response';\nimport { getResponseUIMessageId } from '../ui-message-stream/get-response-ui-message-id';\nimport { handleUIMessageStreamFinish } from '../ui-message-stream/handle-ui-message-stream-finish';\nimport { pipeUIMessageStreamToResponse } from '../ui-message-stream/pipe-ui-message-stream-to-response';\nimport {\n InferUIMessageChunk,\n UIMessageChunk,\n} from '../ui-message-stream/ui-message-chunks';\nimport { UIMessageStreamResponseInit } from '../ui-message-stream/ui-message-stream-response-init';\nimport { InferUIMessageData, InferUIMessageMetadata } from '../ui/ui-messages';\nimport { asArray } from '../util/as-array';\nimport {\n AsyncIterableStream,\n createAsyncIterableStream,\n} from '../util/async-iterable-stream';\nimport { consumeStream } from '../util/consume-stream';\nimport { createStitchableStream } from '../util/create-stitchable-stream';\nimport { DownloadFunction } from '../util/download/download-function';\nimport { mergeObjects } from '../util/merge-objects';\nimport { now as originalNow } from '../util/now';\nimport { prepareRetries } from '../util/prepare-retries';\nimport { collectToolApprovals } from './collect-tool-approvals';\nimport { ContentPart } from './content-part';\nimport { executeToolCall } from './execute-tool-call';\nimport { Output, text } from './output';\nimport { InferCompleteOutput, InferPartialOutput } from './output-utils';\nimport { PrepareStepFunction } from './prepare-step';\nimport { ResponseMessage } from './response-message';\nimport {\n runToolsTransformation,\n SingleRequestTextStreamPart,\n} from './run-tools-transformation';\nimport { DefaultStepResult, StepResult } from './step-result';\nimport {\n isStopConditionMet,\n stepCountIs,\n StopCondition,\n} from './stop-condition';\nimport {\n ConsumeStreamOptions,\n StreamTextResult,\n TextStreamPart,\n UIMessageStreamOptions,\n} from './stream-text-result';\nimport { toResponseMessages } from './to-response-messages';\nimport { TypedToolCall } from './tool-call';\nimport { ToolCallRepairFunction } from './tool-call-repair-function';\nimport { ToolOutput } from './tool-output';\nimport { StaticToolOutputDenied } from './tool-output-denied';\nimport { ToolSet } from './tool-set';\n\nconst originalGenerateId = createIdGenerator({\n prefix: 'aitxt',\n size: 24,\n});\n\n/**\nA transformation that is applied to the stream.\n\n@param stopStream - A function that stops the source stream.\n@param tools - The tools that are accessible to and can be called by the model. The model needs to support calling tools.\n */\nexport type StreamTextTransform<TOOLS extends ToolSet> = (options: {\n tools: TOOLS; // for type inference\n stopStream: () => void;\n}) => TransformStream<TextStreamPart<TOOLS>, TextStreamPart<TOOLS>>;\n\n/**\nCallback that is set using the `onError` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnErrorCallback = (event: {\n error: unknown;\n}) => PromiseLike<void> | void;\n\n/**\nCallback that is set using the `onStepFinish` option.\n\n@param stepResult - The result of the step.\n */\nexport type StreamTextOnStepFinishCallback<TOOLS extends ToolSet> = (\n stepResult: StepResult<TOOLS>,\n) => PromiseLike<void> | void;\n\n/**\nCallback that is set using the `onChunk` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnChunkCallback<TOOLS extends ToolSet> = (event: {\n chunk: Extract<\n TextStreamPart<TOOLS>,\n {\n type:\n | 'text-delta'\n | 'reasoning-delta'\n | 'source'\n | 'tool-call'\n | 'tool-input-start'\n | 'tool-input-delta'\n | 'tool-result'\n | 'raw';\n }\n >;\n}) => PromiseLike<void> | void;\n\n/**\nCallback that is set using the `onFinish` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnFinishCallback<TOOLS extends ToolSet> = (\n event: StepResult<TOOLS> & {\n /**\n * Details for all steps.\n */\n readonly steps: StepResult<TOOLS>[];\n\n /**\n * Total usage for all steps. This is the sum of the usage of all steps.\n */\n readonly totalUsage: LanguageModelUsage;\n\n /**\n * Context that is passed into tool execution.\n *\n * Experimental (can break in patch releases).\n *\n * @default undefined\n */\n experimental_context: unknown;\n },\n) => PromiseLike<void> | void;\n\n/**\nCallback that is set using the `onAbort` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamTextOnAbortCallback<TOOLS extends ToolSet> = (event: {\n /**\nDetails for all previously finished steps.\n */\n readonly steps: StepResult<TOOLS>[];\n}) => PromiseLike<void> | void;\n\n/**\nGenerate a text and call tools for a given prompt using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateText` instead.\n\n@param model - The language model to use.\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxOutputTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param onChunk - Callback that is called for each chunk of the stream. The stream processing will pause until the callback promise is resolved.\n@param onError - Callback that is called when an error occurs during streaming. You can use it to log errors.\n@param onStepFinish - Callback that is called when each step (LLM call) is finished, including intermediate steps.\n@param onFinish - Callback that is called when all steps are finished and the response is complete.\n\n@return\nA result object for accessing different stream types and additional information.\n */\nexport function streamText<\n TOOLS extends ToolSet,\n OUTPUT extends Output = Output<string, string>,\n>({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output,\n output = experimental_output,\n experimental_telemetry: telemetry,\n prepareStep,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_repairToolCall: repairToolCall,\n experimental_transform: transform,\n experimental_download: download,\n includeRawChunks = false,\n onChunk,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n _internal: {\n now = originalNow,\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n ...settings\n}: CallSettings &\n Prompt & {\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nThe tools that the model can call. The model needs to support calling tools.\n */\n tools?: TOOLS;\n\n /**\nThe tool choice strategy. Default: 'auto'.\n */\n toolChoice?: ToolChoice<TOOLS>;\n\n /**\nCondition for stopping the generation when there are tool results in the last step.\nWhen the condition is an array, any of the conditions can be met to stop the generation.\n\n@default stepCountIs(1)\n */\n stopWhen?:\n | StopCondition<NoInfer<TOOLS>>\n | Array<StopCondition<NoInfer<TOOLS>>>;\n\n /**\nOptional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n * @deprecated Use `activeTools` instead.\n */\n experimental_activeTools?: Array<keyof NoInfer<TOOLS>>;\n\n /**\n Limits the tools that are available for the model to call without\n changing the tool call and result types in the result.\n */\n activeTools?: Array<keyof NoInfer<TOOLS>>;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n */\n output?: OUTPUT;\n\n /**\nOptional specification for parsing structured outputs from the LLM response.\n\n@deprecated Use `output` instead.\n */\n experimental_output?: OUTPUT;\n\n /**\nOptional function that you can use to provide different settings for a step.\n\n@param options - The options for the step.\n@param options.steps - The steps that have been executed so far.\n@param options.stepNumber - The number of the step that is being executed.\n@param options.model - The model that is being used.\n\n@returns An object that contains the settings for the step.\nIf you return undefined (or for undefined settings), the settings from the outer level will be used.\n */\n prepareStep?: PrepareStepFunction<NoInfer<TOOLS>>;\n\n /**\nA function that attempts to repair a tool call that failed to parse.\n */\n experimental_repairToolCall?: ToolCallRepairFunction<TOOLS>;\n\n /**\nOptional stream transformations.\nThey are applied in the order they are provided.\nThe stream transformations must maintain the stream structure for streamText to work correctly.\n */\n experimental_transform?:\n | StreamTextTransform<TOOLS>\n | Array<StreamTextTransform<TOOLS>>;\n\n /**\nCustom download function to use for URLs.\n\nBy default, files are downloaded if the model does not support the URL for the given media type.\n */\n experimental_download?: DownloadFunction | undefined;\n\n /**\nWhether to include raw chunks from the provider in the stream.\nWhen enabled, you will receive raw chunks with type 'raw' that contain the unprocessed data from the provider.\nThis allows access to cutting-edge provider features not yet wrapped by the AI SDK.\nDefaults to false.\n */\n includeRawChunks?: boolean;\n\n /**\nCallback that is called for each chunk of the stream.\nThe stream processing will pause until the callback promise is resolved.\n */\n onChunk?: StreamTextOnChunkCallback<TOOLS>;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamTextOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and all request tool executions\n(for tools that have an `execute` function) are finished.\n\nThe usage is the combined usage of all steps.\n */\n onFinish?: StreamTextOnFinishCallback<TOOLS>;\n\n onAbort?: StreamTextOnAbortCallback<TOOLS>;\n\n /**\nCallback that is called when each step (LLM call) is finished, including intermediate steps.\n */\n onStepFinish?: StreamTextOnStepFinishCallback<TOOLS>;\n\n /**\n * Context that is passed into tool execution.\n *\n * Experimental (can break in patch releases).\n *\n * @default undefined\n */\n experimental_context?: unknown;\n\n /**\nInternal. For test use only. May change without notice.\n */\n _internal?: {\n now?: () => number;\n generateId?: IdGenerator;\n currentDate?: () => Date;\n };\n }): StreamTextResult<TOOLS, OUTPUT> {\n return new DefaultStreamTextResult<TOOLS, OUTPUT>({\n model: resolveLanguageModel(model),\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms: asArray(transform),\n activeTools,\n repairToolCall,\n stopConditions: asArray(stopWhen),\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n now,\n currentDate,\n generateId,\n experimental_context,\n download,\n });\n}\n\ntype EnrichedStreamPart<TOOLS extends ToolSet, PARTIAL_OUTPUT> = {\n part: TextStreamPart<TOOLS>;\n partialOutput: PARTIAL_OUTPUT | undefined;\n};\n\nfunction createOutputTransformStream<\n TOOLS extends ToolSet,\n OUTPUT extends Output,\n>(\n output: OUTPUT,\n): TransformStream<\n TextStreamPart<TOOLS>,\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>\n> {\n let firstTextChunkId: string | undefined = undefined;\n let text = '';\n let textChunk = '';\n let textProviderMetadata: ProviderMetadata | undefined = undefined;\n let lastPublishedJson = '';\n\n function publishTextChunk({\n controller,\n partialOutput = undefined,\n }: {\n controller: TransformStreamDefaultController<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>\n >;\n partialOutput?: InferPartialOutput<OUTPUT>;\n }) {\n controller.enqueue({\n part: {\n type: 'text-delta',\n id: firstTextChunkId!,\n text: textChunk,\n providerMetadata: textProviderMetadata,\n },\n partialOutput,\n });\n textChunk = '';\n }\n\n return new TransformStream<\n TextStreamPart<TOOLS>,\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>\n >({\n async transform(chunk, controller) {\n // ensure that we publish the last text chunk before the step finish:\n if (chunk.type === 'finish-step' && textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n\n if (\n chunk.type !== 'text-delta' &&\n chunk.type !== 'text-start' &&\n chunk.type !== 'text-end'\n ) {\n controller.enqueue({ part: chunk, partialOutput: undefined });\n return;\n }\n\n // we have to pick a text chunk which contains the json text\n // since we are streaming, we have to pick the first text chunk\n if (firstTextChunkId == null) {\n firstTextChunkId = chunk.id;\n } else if (chunk.id !== firstTextChunkId) {\n controller.enqueue({ part: chunk, partialOutput: undefined });\n return;\n }\n\n if (chunk.type === 'text-start') {\n controller.enqueue({ part: chunk, partialOutput: undefined });\n return;\n }\n\n if (chunk.type === 'text-end') {\n if (textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n controller.enqueue({ part: chunk, partialOutput: undefined });\n return;\n }\n\n text += chunk.text;\n textChunk += chunk.text;\n textProviderMetadata = chunk.providerMetadata ?? textProviderMetadata;\n\n // only publish if partial json can be parsed:\n const result = await output.parsePartialOutput({ text });\n\n // null should be allowed (valid JSON value) but undefined should not:\n if (result !== undefined) {\n // only send new json if it has changed:\n const currentJson = JSON.stringify(result.partial);\n if (currentJson !== lastPublishedJson) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedJson = currentJson;\n }\n }\n },\n });\n}\n\nclass DefaultStreamTextResult<TOOLS extends ToolSet, OUTPUT extends Output>\n implements StreamTextResult<TOOLS, OUTPUT>\n{\n private readonly _totalUsage = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, OUTPUT>['usage']>\n >();\n private readonly _finishReason = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, OUTPUT>['finishReason']>\n >();\n private readonly _rawFinishReason = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, OUTPUT>['rawFinishReason']>\n >();\n private readonly _steps = new DelayedPromise<\n Awaited<StreamTextResult<TOOLS, OUTPUT>['steps']>\n >();\n\n private readonly addStream: (\n stream: ReadableStream<TextStreamPart<TOOLS>>,\n ) => void;\n\n private readonly closeStream: () => void;\n\n private baseStream: ReadableStream<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>\n >;\n\n private outputSpecification: OUTPUT | undefined;\n\n private includeRawChunks: boolean;\n\n private tools: TOOLS | undefined;\n\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms,\n activeTools,\n repairToolCall,\n stopConditions,\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n now,\n currentDate,\n generateId,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n download,\n }: {\n model: LanguageModelV3;\n telemetry: TelemetrySettings | undefined;\n headers: Record<string, string | undefined> | undefined;\n settings: Omit<CallSettings, 'abortSignal' | 'headers'>;\n maxRetries: number | undefined;\n abortSignal: AbortSignal | undefined;\n system: Prompt['system'];\n prompt: Prompt['prompt'];\n messages: Prompt['messages'];\n tools: TOOLS | undefined;\n toolChoice: ToolChoice<TOOLS> | undefined;\n transforms: Array<StreamTextTransform<TOOLS>>;\n activeTools: Array<keyof TOOLS> | undefined;\n repairToolCall: ToolCallRepairFunction<TOOLS> | undefined;\n stopConditions: Array<StopCondition<NoInfer<TOOLS>>>;\n output: OUTPUT | undefined;\n providerOptions: ProviderOptions | undefined;\n prepareStep: PrepareStepFunction<NoInfer<TOOLS>> | undefined;\n includeRawChunks: boolean;\n now: () => number;\n currentDate: () => Date;\n generateId: () => string;\n experimental_context: unknown;\n download: DownloadFunction | undefined;\n\n // callbacks:\n onChunk: undefined | StreamTextOnChunkCallback<TOOLS>;\n onError: StreamTextOnErrorCallback;\n onFinish: undefined | StreamTextOnFinishCallback<TOOLS>;\n onAbort: undefined | StreamTextOnAbortCallback<TOOLS>;\n onStepFinish: undefined | StreamTextOnStepFinishCallback<TOOLS>;\n }) {\n this.outputSpecification = output;\n this.includeRawChunks = includeRawChunks;\n this.tools = tools;\n\n // promise to ensure that the step has been fully processed by the event processor\n // before a new step is started. This is required because the continuation condition\n // needs the updated steps to determine if another step is needed.\n let stepFinish!: DelayedPromise<void>;\n\n let recordedContent: Array<ContentPart<TOOLS>> = [];\n const recordedResponseMessages: Array<ResponseMessage> = [];\n let recordedFinishReason: FinishReason | undefined = undefined;\n let recordedRawFinishReason: string | undefined = undefined;\n let recordedTotalUsage: LanguageModelUsage | undefined = undefined;\n let recordedRequest: LanguageModelRequestMetadata = {};\n let recordedWarnings: Array<CallWarning> = [];\n const recordedSteps: StepResult<TOOLS>[] = [];\n\n // Track provider-executed tool calls that support deferred results\n // (e.g., code_execution in programmatic tool calling scenarios).\n // These tools may not return their results in the same turn as their call.\n const pendingDeferredToolCalls = new Map<string, { toolName: string }>();\n\n let rootSpan!: Span;\n\n let activeTextContent: Record<\n string,\n {\n type: 'text';\n text: string;\n providerMetadata: ProviderMetadata | undefined;\n }\n > = {};\n\n let activeReasoningContent: Record<\n string,\n {\n type: 'reasoning';\n text: string;\n providerMetadata: ProviderMetadata | undefined;\n }\n > = {};\n\n const eventProcessor = new TransformStream<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>,\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>\n >({\n async transform(chunk, controller) {\n controller.enqueue(chunk); // forward the chunk to the next stream\n\n const { part } = chunk;\n\n if (\n part.type === 'text-delta' ||\n part.type === 'reasoning-delta' ||\n part.type === 'source' ||\n part.type === 'tool-call' ||\n part.type === 'tool-result' ||\n part.type === 'tool-input-start' ||\n part.type === 'tool-input-delta' ||\n part.type === 'raw'\n ) {\n await onChunk?.({ chunk: part });\n }\n\n if (part.type === 'error') {\n await onError({ error: wrapGatewayError(part.error) });\n }\n\n if (part.type === 'text-start') {\n activeTextContent[part.id] = {\n type: 'text',\n text: '',\n providerMetadata: part.providerMetadata,\n };\n\n recordedContent.push(activeTextContent[part.id]);\n }\n\n if (part.type === 'text-delta') {\n const activeText = activeTextContent[part.id];\n\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: 'error',\n error: `text part ${part.id} not found`,\n },\n partialOutput: undefined,\n });\n return;\n }\n\n activeText.text += part.text;\n activeText.providerMetadata =\n part.providerMetadata ?? activeText.providerMetadata;\n }\n\n if (part.type === 'text-end') {\n const activeText = activeTextContent[part.id];\n\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: 'error',\n error: `text part ${part.id} not found`,\n },\n partialOutput: undefined,\n });\n return;\n }\n\n activeText.providerMetadata =\n part.providerMetadata ?? activeText.providerMetadata;\n\n delete activeTextContent[part.id];\n }\n\n if (part.type === 'reasoning-start') {\n activeReasoningContent[part.id] = {\n type: 'reasoning',\n text: '',\n providerMetadata: part.providerMetadata,\n };\n\n recordedContent.push(activeReasoningContent[part.id]);\n }\n\n if (part.type === 'reasoning-delta') {\n const activeReasoning = activeReasoningContent[part.id];\n\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: 'error',\n error: `reasoning part ${part.id} not found`,\n },\n partialOutput: undefined,\n });\n return;\n }\n\n activeReasoning.text += part.text;\n activeReasoning.providerMetadata =\n part.providerMetadata ?? activeReasoning.providerMetadata;\n }\n\n if (part.type === 'reasoning-end') {\n const activeReasoning = activeReasoningContent[part.id];\n\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: 'error',\n error: `reasoning part ${part.id} not found`,\n },\n partialOutput: undefined,\n });\n return;\n }\n\n activeReasoning.providerMetadata =\n part.providerMetadata ?? activeReasoning.providerMetadata;\n\n delete activeReasoningContent[part.id];\n }\n\n if (part.type === 'file') {\n recordedContent.push({ type: 'file', file: part.file });\n }\n\n if (part.type === 'source') {\n recordedContent.push(part);\n }\n\n if (part.type === 'tool-call') {\n recordedContent.push(part);\n }\n\n if (part.type === 'tool-result' && !part.preliminary) {\n recordedContent.push(part);\n }\n\n if (part.type === 'tool-approval-request') {\n recordedContent.push(part);\n }\n\n if (part.type === 'tool-error') {\n recordedContent.push(part);\n }\n\n if (part.type === 'start-step') {\n // reset the recorded data when a new step starts:\n recordedContent = [];\n activeReasoningContent = {};\n activeTextContent = {};\n\n recordedRequest = part.request;\n recordedWarnings = part.warnings;\n }\n\n if (part.type === 'finish-step') {\n const stepMessages = await toResponseMessages({\n content: recordedContent,\n tools,\n });\n\n // Add step information (after response messages are updated):\n const currentStepResult: StepResult<TOOLS> = new DefaultStepResult({\n content: recordedContent,\n finishReason: part.finishReason,\n rawFinishReason: part.rawFinishReason,\n usage: part.usage,\n warnings: recordedWarnings,\n request: recordedRequest,\n response: {\n ...part.response,\n messages: [...recordedResponseMessages, ...stepMessages],\n },\n providerMetadata: part.providerMetadata,\n });\n\n await onStepFinish?.(currentStepResult);\n\n logWarnings({\n warnings: recordedWarnings,\n provider: model.provider,\n model: model.modelId,\n });\n\n recordedSteps.push(currentStepResult);\n\n recordedResponseMessages.push(...stepMessages);\n\n // resolve the promise to signal that the step has been fully processed\n // by the event processor:\n stepFinish.resolve();\n }\n\n if (part.type === 'finish') {\n recordedTotalUsage = part.totalUsage;\n recordedFinishReason = part.finishReason;\n recordedRawFinishReason = part.rawFinishReason;\n }\n },\n\n async flush(controller) {\n try {\n if (recordedSteps.length === 0) {\n const error = new NoOutputGeneratedError({\n message: 'No output generated. Check the stream for errors.',\n });\n\n self._finishReason.reject(error);\n self._rawFinishReason.reject(error);\n self._totalUsage.reject(error);\n self._steps.reject(error);\n\n return; // no steps recorded (e.g. in error scenario)\n }\n\n // derived:\n const finishReason = recordedFinishReason ?? 'other';\n const totalUsage =\n recordedTotalUsage ?? createNullLanguageModelUsage();\n\n // from finish:\n self._finishReason.resolve(finishReason);\n self._rawFinishReason.resolve(recordedRawFinishReason);\n self._totalUsage.resolve(totalUsage);\n\n // aggregate results:\n self._steps.resolve(recordedSteps);\n\n // call onFinish callback:\n const finalStep = recordedSteps[recordedSteps.length - 1];\n await onFinish?.({\n finishReason: finalStep.finishReason,\n rawFinishReason: finalStep.rawFinishReason,\n totalUsage,\n usage: finalStep.usage,\n content: finalStep.content,\n text: finalStep.text,\n reasoningText: finalStep.reasoningText,\n reasoning: finalStep.reasoning,\n files: finalStep.files,\n sources: finalStep.sources,\n toolCalls: finalStep.toolCalls,\n staticToolCalls: finalStep.staticToolCalls,\n dynamicToolCalls: finalStep.dynamicToolCalls,\n toolResults: finalStep.toolResults,\n staticToolResults: finalStep.staticToolResults,\n dynamicToolResults: finalStep.dynamicToolResults,\n request: finalStep.request,\n response: finalStep.response,\n warnings: finalStep.warnings,\n providerMetadata: finalStep.providerMetadata,\n steps: recordedSteps,\n experimental_context,\n });\n\n // Add response information to the root span:\n rootSpan.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.text': { output: () => finalStep.text },\n 'ai.response.toolCalls': {\n output: () =>\n finalStep.toolCalls?.length\n ? JSON.stringify(finalStep.toolCalls)\n : undefined,\n },\n 'ai.response.providerMetadata': JSON.stringify(\n finalStep.providerMetadata,\n ),\n\n 'ai.usage.inputTokens': totalUsage.inputTokens,\n 'ai.usage.outputTokens': totalUsage.outputTokens,\n 'ai.usage.totalTokens': totalUsage.totalTokens,\n 'ai.usage.reasoningTokens': totalUsage.reasoningTokens,\n 'ai.usage.cachedInputTokens': totalUsage.cachedInputTokens,\n },\n }),\n );\n } catch (error) {\n controller.error(error);\n } finally {\n rootSpan.end();\n }\n },\n });\n\n // initialize the stitchable stream and the transformed stream:\n const stitchableStream = createStitchableStream<TextStreamPart<TOOLS>>();\n this.addStream = stitchableStream.addStream;\n this.closeStream = stitchableStream.close;\n\n // resilient stream that handles abort signals and errors:\n const reader = stitchableStream.stream.getReader();\n let stream = new ReadableStream<TextStreamPart<TOOLS>>({\n async start(controller) {\n // send start event:\n controller.enqueue({ type: 'start' });\n },\n\n async pull(controller) {\n // abort handling:\n function abort() {\n onAbort?.({ steps: recordedSteps });\n controller.enqueue({ type: 'abort' });\n controller.close();\n }\n\n try {\n const { done, value } = await reader.read();\n\n if (done) {\n controller.close();\n return;\n }\n\n if (abortSignal?.aborted) {\n abort();\n return;\n }\n\n controller.enqueue(value);\n } catch (error) {\n if (isAbortError(error) && abortSignal?.aborted) {\n abort();\n } else {\n controller.error(error);\n }\n }\n },\n\n cancel(reason) {\n return stitchableStream.stream.cancel(reason);\n },\n });\n\n // transform the stream before output parsing\n // to enable replacement of stream segments:\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools: tools as TOOLS,\n stopStream() {\n stitchableStream.terminate();\n },\n }),\n );\n }\n\n this.baseStream = stream\n .pipeThrough(createOutputTransformStream(output ?? text()))\n .pipeThrough(eventProcessor);\n\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal,\n });\n\n const tracer = getTracer(telemetry);\n\n const callSettings = prepareCallSettings(settings);\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries },\n });\n\n const self = this;\n\n recordSpan({\n name: 'ai.streamText',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: 'ai.streamText', telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async rootSpanArg => {\n rootSpan = rootSpanArg;\n\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages,\n } as Prompt);\n\n const initialMessages = initialPrompt.messages;\n const initialResponseMessages: Array<ResponseMessage> = [];\n\n const { approvedToolApprovals, deniedToolApprovals } =\n collectToolApprovals<TOOLS>({ messages: initialMessages });\n\n // initial tool execution step stream\n if (\n deniedToolApprovals.length > 0 ||\n approvedToolApprovals.length > 0\n ) {\n let toolExecutionStepStreamController:\n | ReadableStreamDefaultController<TextStreamPart<TOOLS>>\n | undefined;\n const toolExecutionStepStream = new ReadableStream<\n TextStreamPart<TOOLS>\n >({\n start(controller) {\n toolExecutionStepStreamController = controller;\n },\n });\n\n self.addStream(toolExecutionStepStream);\n\n try {\n for (const toolApproval of deniedToolApprovals) {\n toolExecutionStepStreamController?.enqueue({\n type: 'tool-output-denied',\n toolCallId: toolApproval.toolCall.toolCallId,\n toolName: toolApproval.toolCall.toolName,\n } as StaticToolOutputDenied<TOOLS>);\n }\n\n const toolOutputs: Array<ToolOutput<TOOLS>> = [];\n\n await Promise.all(\n approvedToolApprovals.map(async toolApproval => {\n const result = await executeToolCall({\n toolCall: toolApproval.toolCall,\n tools,\n tracer,\n telemetry,\n messages: initialMessages,\n abortSignal,\n experimental_context,\n onPreliminaryToolResult: result => {\n toolExecutionStepStreamController?.enqueue(result);\n },\n });\n\n if (result != null) {\n toolExecutionStepStreamController?.enqueue(result);\n toolOutputs.push(result);\n }\n }),\n );\n\n const content: ToolContent = [];\n\n for (const output of toolOutputs) {\n content.push({\n type: 'tool-result' as const,\n toolCallId: output.toolCallId,\n toolName: output.toolName,\n output: await createToolModelOutput({\n toolCallId: output.toolCallId,\n input: output.input,\n tool: tools?.[output.toolName],\n output:\n output.type === 'tool-result'\n ? output.output\n : output.error,\n errorMode: output.type === 'tool-error' ? 'json' : 'none',\n }),\n });\n }\n\n for (const toolApproval of deniedToolApprovals) {\n content.push({\n type: 'tool-result' as const,\n toolCallId: toolApproval.toolCall.toolCallId,\n toolName: toolApproval.toolCall.toolName,\n output: {\n type: 'execution-denied' as const,\n reason: toolApproval.approvalResponse.reason,\n },\n });\n }\n\n initialResponseMessages.push({\n role: 'tool',\n content,\n });\n } finally {\n toolExecutionStepStreamController?.close();\n }\n }\n\n recordedResponseMessages.push(...initialResponseMessages);\n\n async function streamStep({\n currentStep,\n responseMessages,\n usage,\n }: {\n currentStep: number;\n responseMessages: Array<ResponseMessage>;\n usage: LanguageModelUsage;\n }) {\n const includeRawChunks = self.includeRawChunks;\n\n stepFinish = new DelayedPromise<void>();\n\n const stepInputMessages = [...initialMessages, ...responseMessages];\n\n const prepareStepResult = await prepareStep?.({\n model,\n steps: recordedSteps,\n stepNumber: recordedSteps.length,\n messages: stepInputMessages,\n experimental_context,\n });\n\n const stepModel = resolveLanguageModel(\n prepareStepResult?.model ?? model,\n );\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: prepareStepResult?.system ?? initialPrompt.system,\n messages: prepareStepResult?.messages ?? stepInputMessages,\n },\n supportedUrls: await stepModel.supportedUrls,\n download,\n });\n\n const { toolChoice: stepToolChoice, tools: stepTools } =\n await prepareToolsAndToolChoice({\n tools,\n toolChoice: prepareStepResult?.toolChoice ?? toolChoice,\n activeTools: prepareStepResult?.activeTools ?? activeTools,\n });\n\n experimental_context =\n prepareStepResult?.experimental_context ?? experimental_context;\n\n const stepProviderOptions = mergeObjects(\n providerOptions,\n prepareStepResult?.providerOptions,\n );\n const {\n result: { stream, response, request },\n doStreamSpan,\n startTimestampMs,\n } = await retry(() =>\n recordSpan({\n name: 'ai.streamText.doStream',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamText.doStream',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // model:\n 'ai.model.provider': stepModel.provider,\n 'ai.model.id': stepModel.modelId,\n // prompt:\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n 'ai.prompt.tools': {\n // convert the language model level tools:\n input: () => stepTools?.map(tool => JSON.stringify(tool)),\n },\n 'ai.prompt.toolChoice': {\n input: () =>\n stepToolChoice != null\n ? JSON.stringify(stepToolChoice)\n : undefined,\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': stepModel.provider,\n 'gen_ai.request.model': stepModel.modelId,\n 'gen_ai.request.frequency_penalty':\n callSettings.frequencyPenalty,\n 'gen_ai.request.max_tokens': callSettings.maxOutputTokens,\n 'gen_ai.request.presence_penalty':\n callSettings.presencePenalty,\n 'gen_ai.request.stop_sequences': callSettings.stopSequences,\n 'gen_ai.request.temperature': callSettings.temperature,\n 'gen_ai.request.top_k': callSettings.topK,\n 'gen_ai.request.top_p': callSettings.topP,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async doStreamSpan => ({\n startTimestampMs: now(), // get before the call\n doStreamSpan,\n result: await stepModel.doStream({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: await output?.responseFormat,\n prompt: promptMessages,\n providerOptions: stepProviderOptions,\n abortSignal,\n headers,\n includeRawChunks,\n }),\n }),\n }),\n );\n\n const streamWithToolResults = runToolsTransformation({\n tools,\n generatorStream: stream,\n tracer,\n telemetry,\n system,\n messages: stepInputMessages,\n repairToolCall,\n abortSignal,\n experimental_context,\n generateId,\n });\n\n const stepRequest = request ?? {};\n const stepToolCalls: TypedToolCall<TOOLS>[] = [];\n const stepToolOutputs: ToolOutput<TOOLS>[] = [];\n let warnings: SharedV3Warning[] | undefined;\n\n const activeToolCallToolNames: Record<string, string> = {};\n\n let stepFinishReason: FinishReason = 'other';\n let stepRawFinishReason: string | undefined = undefined;\n\n let stepUsage: LanguageModelUsage = createNullLanguageModelUsage();\n let stepProviderMetadata: ProviderMetadata | undefined;\n let stepFirstChunk = true;\n let stepResponse: { id: string; timestamp: Date; modelId: string } = {\n id: generateId(),\n timestamp: currentDate(),\n modelId: model.modelId,\n };\n\n // raw text as it comes from the provider. recorded for telemetry.\n let activeText = '';\n\n self.addStream(\n streamWithToolResults.pipeThrough(\n new TransformStream<\n SingleRequestTextStreamPart<TOOLS>,\n TextStreamPart<TOOLS>\n >({\n async transform(chunk, controller): Promise<void> {\n if (chunk.type === 'stream-start') {\n warnings = chunk.warnings;\n return; // stream start chunks are sent immediately and do not count as first chunk\n }\n\n if (stepFirstChunk) {\n // Telemetry for first chunk:\n const msToFirstChunk = now() - startTimestampMs;\n\n stepFirstChunk = false;\n\n doStreamSpan.addEvent('ai.stream.firstChunk', {\n 'ai.response.msToFirstChunk': msToFirstChunk,\n });\n\n doStreamSpan.setAttributes({\n 'ai.response.msToFirstChunk': msToFirstChunk,\n });\n\n // Step start:\n controller.enqueue({\n type: 'start-step',\n request: stepRequest,\n warnings: warnings ?? [],\n });\n }\n\n const chunkType = chunk.type;\n switch (chunkType) {\n case 'tool-approval-request':\n case 'text-start':\n case 'text-end': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'text-delta': {\n if (chunk.delta.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata,\n });\n activeText += chunk.delta;\n }\n break;\n }\n\n case 'reasoning-start':\n case 'reasoning-end': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'reasoning-delta': {\n controller.enqueue({\n type: 'reasoning-delta',\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata,\n });\n break;\n }\n\n case 'tool-call': {\n controller.enqueue(chunk);\n // store tool calls for onFinish callback and toolCalls promise:\n stepToolCalls.push(chunk);\n break;\n }\n\n case 'tool-result': {\n controller.enqueue(chunk);\n\n if (!chunk.preliminary) {\n stepToolOutputs.push(chunk);\n }\n\n break;\n }\n\n case 'tool-error': {\n controller.enqueue(chunk);\n stepToolOutputs.push(chunk);\n break;\n }\n\n case 'response-metadata': {\n stepResponse = {\n id: chunk.id ?? stepResponse.id,\n timestamp: chunk.timestamp ?? stepResponse.timestamp,\n modelId: chunk.modelId ?? stepResponse.modelId,\n };\n break;\n }\n\n case 'finish': {\n // Note: tool executions might not be finished yet when the finish event is emitted.\n // store usage and finish reason for promises and onFinish callback:\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepRawFinishReason = chunk.rawFinishReason;\n stepProviderMetadata = chunk.providerMetadata;\n\n // Telemetry for finish event timing\n // (since tool executions can take longer and distort calculations)\n const msToFinish = now() - startTimestampMs;\n doStreamSpan.addEvent('ai.stream.finish');\n doStreamSpan.setAttributes({\n 'ai.response.msToFinish': msToFinish,\n 'ai.response.avgOutputTokensPerSecond':\n (1000 * (stepUsage.outputTokens ?? 0)) / msToFinish,\n });\n\n break;\n }\n\n case 'file': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'source': {\n controller.enqueue(chunk);\n break;\n }\n\n case 'tool-input-start': {\n activeToolCallToolNames[chunk.id] = chunk.toolName;\n\n const tool = tools?.[chunk.toolName];\n if (tool?.onInputStart != null) {\n await tool.onInputStart({\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context,\n });\n }\n\n controller.enqueue({\n ...chunk,\n dynamic: chunk.dynamic ?? tool?.type === 'dynamic',\n title: tool?.title,\n });\n break;\n }\n\n case 'tool-input-end': {\n delete activeToolCallToolNames[chunk.id];\n controller.enqueue(chunk);\n break;\n }\n\n case 'tool-input-delta': {\n const toolName = activeToolCallToolNames[chunk.id];\n const tool = tools?.[toolName];\n\n if (tool?.onInputDelta != null) {\n await tool.onInputDelta({\n inputTextDelta: chunk.delta,\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context,\n });\n }\n\n controller.enqueue(chunk);\n break;\n }\n\n case 'error': {\n controller.enqueue(chunk);\n stepFinishReason = 'error';\n break;\n }\n\n case 'raw': {\n if (includeRawChunks) {\n controller.enqueue(chunk);\n }\n break;\n }\n\n default: {\n const exhaustiveCheck: never = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n const stepToolCallsJson =\n stepToolCalls.length > 0\n ? JSON.stringify(stepToolCalls)\n : undefined;\n\n // record telemetry information first to ensure best effort timing\n try {\n doStreamSpan.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': stepFinishReason,\n 'ai.response.text': {\n output: () => activeText,\n },\n 'ai.response.toolCalls': {\n output: () => stepToolCallsJson,\n },\n 'ai.response.id': stepResponse.id,\n 'ai.response.model': stepResponse.modelId,\n 'ai.response.timestamp':\n stepResponse.timestamp.toISOString(),\n 'ai.response.providerMetadata':\n JSON.stringify(stepProviderMetadata),\n\n 'ai.usage.inputTokens': stepUsage.inputTokens,\n 'ai.usage.outputTokens': stepUsage.outputTokens,\n 'ai.usage.totalTokens': stepUsage.totalTokens,\n 'ai.usage.reasoningTokens': stepUsage.reasoningTokens,\n 'ai.usage.cachedInputTokens':\n stepUsage.cachedInputTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [stepFinishReason],\n 'gen_ai.response.id': stepResponse.id,\n 'gen_ai.response.model': stepResponse.modelId,\n 'gen_ai.usage.input_tokens': stepUsage.inputTokens,\n 'gen_ai.usage.output_tokens': stepUsage.outputTokens,\n },\n }),\n );\n } catch (error) {\n // ignore error setting telemetry attributes\n } finally {\n // finish doStreamSpan before other operations for correct timing:\n doStreamSpan.end();\n }\n\n controller.enqueue({\n type: 'finish-step',\n finishReason: stepFinishReason,\n rawFinishReason: stepRawFinishReason,\n usage: stepUsage,\n providerMetadata: stepProviderMetadata,\n response: {\n ...stepResponse,\n headers: response?.headers,\n },\n });\n\n const combinedUsage = addLanguageModelUsage(usage, stepUsage);\n\n // wait for the step to be fully processed by the event processor\n // to ensure that the recorded steps are complete:\n await stepFinish.promise;\n\n const clientToolCalls = stepToolCalls.filter(\n toolCall => toolCall.providerExecuted !== true,\n );\n const clientToolOutputs = stepToolOutputs.filter(\n toolOutput => toolOutput.providerExecuted !== true,\n );\n\n // Track provider-executed tool calls that support deferred results.\n // In programmatic tool calling, a server tool (e.g., code_execution) may\n // trigger a client tool, and the server tool's result is deferred until\n // the client tool's result is sent back.\n for (const toolCall of stepToolCalls) {\n if (toolCall.providerExecuted !== true) continue;\n const tool = tools?.[toolCall.toolName];\n if (\n tool?.type === 'provider' &&\n tool.supportsDeferredResults\n ) {\n // Check if this tool call already has a result in the current step\n const hasResultInStep = stepToolOutputs.some(\n output =>\n output.type === 'tool-result' &&\n output.toolCallId === toolCall.toolCallId,\n );\n if (!hasResultInStep) {\n pendingDeferredToolCalls.set(toolCall.toolCallId, {\n toolName: toolCall.toolName,\n });\n }\n }\n }\n\n // Mark deferred tool calls as resolved when we receive their results\n for (const output of stepToolOutputs) {\n if (output.type === 'tool-result') {\n pendingDeferredToolCalls.delete(output.toolCallId);\n }\n }\n\n if (\n // Continue if:\n // 1. There are client tool calls that have all been executed, OR\n // 2. There are pending deferred results from provider-executed tools\n ((clientToolCalls.length > 0 &&\n clientToolOutputs.length === clientToolCalls.length) ||\n pendingDeferredToolCalls.size > 0) &&\n // continue until a stop condition is met:\n !(await isStopConditionMet({\n stopConditions,\n steps: recordedSteps,\n }))\n ) {\n // append to messages for the next step:\n responseMessages.push(\n ...(await toResponseMessages({\n content:\n // use transformed content to create the messages for the next step:\n recordedSteps[recordedSteps.length - 1].content,\n tools,\n })),\n );\n\n try {\n await streamStep({\n currentStep: currentStep + 1,\n responseMessages,\n usage: combinedUsage,\n });\n } catch (error) {\n controller.enqueue({\n type: 'error',\n error,\n });\n\n self.closeStream();\n }\n } else {\n controller.enqueue({\n type: 'finish',\n finishReason: stepFinishReason,\n rawFinishReason: stepRawFinishReason,\n totalUsage: combinedUsage,\n });\n\n self.closeStream(); // close the stitchable stream\n }\n },\n }),\n ),\n );\n }\n\n // add the initial stream to the stitchable stream\n await streamStep({\n currentStep: 0,\n responseMessages: initialResponseMessages,\n usage: createNullLanguageModelUsage(),\n });\n },\n }).catch(error => {\n // add an error stream part and close the streams:\n self.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: 'error', error });\n controller.close();\n },\n }),\n );\n self.closeStream();\n });\n }\n\n get steps() {\n // when any of the promises are accessed, the stream is consumed\n // so it resolves without needing to consume the stream separately\n this.consumeStream();\n\n return this._steps.promise;\n }\n\n private get finalStep() {\n return this.steps.then(steps => steps[steps.length - 1]);\n }\n\n get content() {\n return this.finalStep.then(step => step.content);\n }\n\n get warnings() {\n return this.finalStep.then(step => step.warnings);\n }\n\n get providerMetadata() {\n return this.finalStep.then(step => step.providerMetadata);\n }\n\n get text() {\n return this.finalStep.then(step => step.text);\n }\n\n get reasoningText() {\n return this.finalStep.then(step => step.reasoningText);\n }\n\n get reasoning() {\n return this.finalStep.then(step => step.reasoning);\n }\n\n get sources() {\n return this.finalStep.then(step => step.sources);\n }\n\n get files() {\n return this.finalStep.then(step => step.files);\n }\n\n get toolCalls() {\n return this.finalStep.then(step => step.toolCalls);\n }\n\n get staticToolCalls() {\n return this.finalStep.then(step => step.staticToolCalls);\n }\n\n get dynamicToolCalls() {\n return this.finalStep.then(step => step.dynamicToolCalls);\n }\n\n get toolResults() {\n return this.finalStep.then(step => step.toolResults);\n }\n\n get staticToolResults() {\n return this.finalStep.then(step => step.staticToolResults);\n }\n\n get dynamicToolResults() {\n return this.finalStep.then(step => step.dynamicToolResults);\n }\n\n get usage() {\n return this.finalStep.then(step => step.usage);\n }\n\n get request() {\n return this.finalStep.then(step => step.request);\n }\n\n get response() {\n return this.finalStep.then(step => step.response);\n }\n\n get totalUsage() {\n // when any of the promises are accessed, the stream is consumed\n // so it resolves without needing to consume the stream separately\n this.consumeStream();\n\n return this._totalUsage.promise;\n }\n\n get finishReason() {\n // when any of the promises are accessed, the stream is consumed\n // so it resolves without needing to consume the stream separately\n this.consumeStream();\n\n return this._finishReason.promise;\n }\n\n get rawFinishReason() {\n // when any of the promises are accessed, the stream is consumed\n // so it resolves without needing to consume the stream separately\n this.consumeStream();\n\n return this._rawFinishReason.promise;\n }\n\n /**\nSplit out a new stream from the original stream.\nThe original stream is replaced to allow for further splitting,\nsince we do not know how many times the stream will be split.\n\nNote: this leads to buffering the stream content on the server.\nHowever, the LLM results are expected to be small enough to not cause issues.\n */\n private teeStream() {\n const [stream1, stream2] = this.baseStream.tee();\n this.baseStream = stream2;\n return stream1;\n }\n\n get textStream(): AsyncIterableStream<string> {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>,\n string\n >({\n transform({ part }, controller) {\n if (part.type === 'text-delta') {\n controller.enqueue(part.text);\n }\n },\n }),\n ),\n );\n }\n\n get fullStream(): AsyncIterableStream<TextStreamPart<TOOLS>> {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>,\n TextStreamPart<TOOLS>\n >({\n transform({ part }, controller) {\n controller.enqueue(part);\n },\n }),\n ),\n );\n }\n\n async consumeStream(options?: ConsumeStreamOptions): Promise<void> {\n try {\n await consumeStream({\n stream: this.fullStream,\n onError: options?.onError,\n });\n } catch (error) {\n options?.onError?.(error);\n }\n }\n\n get experimental_partialOutputStream(): AsyncIterableStream<\n InferPartialOutput<OUTPUT>\n > {\n return this.partialOutputStream;\n }\n\n get partialOutputStream(): AsyncIterableStream<InferPartialOutput<OUTPUT>> {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream<\n EnrichedStreamPart<TOOLS, InferPartialOutput<OUTPUT>>,\n InferPartialOutput<OUTPUT>\n >({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n controller.enqueue(partialOutput);\n }\n },\n }),\n ),\n );\n }\n\n get output(): Promise<InferCompleteOutput<OUTPUT>> {\n return this.finalStep.then(step => {\n const output = this.outputSpecification ?? text();\n return output.parseCompleteOutput(\n { text: step.text },\n {\n response: step.response,\n usage: step.usage,\n finishReason: step.finishReason,\n },\n );\n });\n }\n\n toUIMessageStream<UI_MESSAGE extends UIMessage>({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = getErrorMessage,\n }: UIMessageStreamOptions<UI_MESSAGE> = {}): AsyncIterableStream<\n InferUIMessageChunk<UI_MESSAGE>\n > {\n const responseMessageId =\n generateMessageId != null\n ? getResponseUIMessageId({\n originalMessages,\n responseMessageId: generateMessageId,\n })\n : undefined;\n\n // TODO simplify once dynamic is no longer needed for invalid tool inputs\n const isDynamic = (part: { toolName: string; dynamic?: boolean }) => {\n const tool = this.tools?.[part.toolName];\n\n // provider-executed, dynamic tools are not listed in the tools object\n if (tool == null) {\n return part.dynamic;\n }\n\n return tool?.type === 'dynamic' ? true : undefined;\n };\n\n const baseStream = this.fullStream.pipeThrough(\n new TransformStream<\n TextStreamPart<TOOLS>,\n UIMessageChunk<\n InferUIMessageMetadata<UI_MESSAGE>,\n InferUIMessageData<UI_MESSAGE>\n >\n >({\n transform: async (part, controller) => {\n const messageMetadataValue = messageMetadata?.({ part });\n\n const partType = part.type;\n switch (partType) {\n case 'text-start': {\n controller.enqueue({\n type: 'text-start',\n id: part.id,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'text-delta': {\n controller.enqueue({\n type: 'text-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'text-end': {\n controller.enqueue({\n type: 'text-end',\n id: part.id,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'reasoning-start': {\n controller.enqueue({\n type: 'reasoning-start',\n id: part.id,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'reasoning-delta': {\n if (sendReasoning) {\n controller.enqueue({\n type: 'reasoning-delta',\n id: part.id,\n delta: part.text,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n }\n break;\n }\n\n case 'reasoning-end': {\n controller.enqueue({\n type: 'reasoning-end',\n id: part.id,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n break;\n }\n\n case 'file': {\n controller.enqueue({\n type: 'file',\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`,\n });\n break;\n }\n\n case 'source': {\n if (sendSources && part.sourceType === 'url') {\n controller.enqueue({\n type: 'source-url',\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n }\n\n if (sendSources && part.sourceType === 'document') {\n controller.enqueue({\n type: 'source-document',\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n });\n }\n break;\n }\n\n case 'tool-input-start': {\n const dynamic = isDynamic(part);\n\n controller.enqueue({\n type: 'tool-input-start',\n toolCallId: part.id,\n toolName: part.toolName,\n ...(part.providerExecuted != null\n ? { providerExecuted: part.providerExecuted }\n : {}),\n ...(dynamic != null ? { dynamic } : {}),\n ...(part.title != null ? { title: part.title } : {}),\n });\n break;\n }\n\n case 'tool-input-delta': {\n controller.enqueue({\n type: 'tool-input-delta',\n toolCallId: part.id,\n inputTextDelta: part.delta,\n });\n break;\n }\n\n case 'tool-call': {\n const dynamic = isDynamic(part);\n\n if (part.invalid) {\n controller.enqueue({\n type: 'tool-input-error',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...(part.providerExecuted != null\n ? { providerExecuted: part.providerExecuted }\n : {}),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n ...(dynamic != null ? { dynamic } : {}),\n errorText: onError(part.error),\n ...(part.title != null ? { title: part.title } : {}),\n });\n } else {\n controller.enqueue({\n type: 'tool-input-available',\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...(part.providerExecuted != null\n ? { providerExecuted: part.providerExecuted }\n : {}),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : {}),\n ...(dynamic != null ? { dynamic } : {}),\n ...(part.title != null ? { title: part.title } : {}),\n });\n }\n\n break;\n }\n\n case 'tool-approval-request': {\n controller.enqueue({\n type: 'tool-approval-request',\n approvalId: part.approvalId,\n toolCallId: part.toolCall.toolCallId,\n });\n break;\n }\n\n case 'tool-result': {\n const dynamic = isDynamic(part);\n\n controller.enqueue({\n type: 'tool-output-available',\n toolCallId: part.toolCallId,\n output: part.output,\n ...(part.providerExecuted != null\n ? { providerExecuted: part.providerExecuted }\n : {}),\n ...(part.preliminary != null\n ? { preliminary: part.preliminary }\n : {}),\n ...(dynamic != null ? { dynamic } : {}),\n });\n break;\n }\n\n case 'tool-error': {\n const dynamic = isDynamic(part);\n\n controller.enqueue({\n type: 'tool-output-error',\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...(part.providerExecuted != null\n ? { providerExecuted: part.providerExecuted }\n : {}),\n ...(dynamic != null ? { dynamic } : {}),\n });\n break;\n }\n\n case 'tool-output-denied': {\n controller.enqueue({\n type: 'tool-output-denied',\n toolCallId: part.toolCallId,\n });\n break;\n }\n\n case 'error': {\n controller.enqueue({\n type: 'error',\n errorText: onError(part.error),\n });\n break;\n }\n\n case 'start-step': {\n controller.enqueue({ type: 'start-step' });\n break;\n }\n\n case 'finish-step': {\n controller.enqueue({ type: 'finish-step' });\n break;\n }\n\n case 'start': {\n if (sendStart) {\n controller.enqueue({\n type: 'start',\n ...(messageMetadataValue != null\n ? { messageMetadata: messageMetadataValue }\n : {}),\n ...(responseMessageId != null\n ? { messageId: responseMessageId }\n : {}),\n });\n }\n break;\n }\n\n case 'finish': {\n if (sendFinish) {\n controller.enqueue({\n type: 'finish',\n finishReason: part.finishReason,\n ...(messageMetadataValue != null\n ? { messageMetadata: messageMetadataValue }\n : {}),\n });\n }\n break;\n }\n\n case 'abort': {\n controller.enqueue(part);\n break;\n }\n\n case 'tool-input-end': {\n break;\n }\n\n case 'raw': {\n // Raw chunks are not included in UI message streams\n // as they contain provider-specific data for developer use\n break;\n }\n\n default: {\n const exhaustiveCheck: never = partType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n\n // start and finish events already have metadata\n // so we only need to send metadata for other parts\n if (\n messageMetadataValue != null &&\n partType !== 'start' &&\n partType !== 'finish'\n ) {\n controller.enqueue({\n type: 'message-metadata',\n messageMetadata: messageMetadataValue,\n });\n }\n },\n }),\n );\n\n return createAsyncIterableStream(\n handleUIMessageStreamFinish<UI_MESSAGE>({\n stream: baseStream,\n messageId: responseMessageId ?? generateMessageId?.(),\n originalMessages,\n onFinish,\n onError,\n }),\n );\n }\n\n pipeUIMessageStreamToResponse<UI_MESSAGE extends UIMessage>(\n response: ServerResponse,\n {\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n }: UIMessageStreamResponseInit & UIMessageStreamOptions<UI_MESSAGE> = {},\n ) {\n pipeUIMessageStreamToResponse({\n response,\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n }),\n ...init,\n });\n }\n\n pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init,\n });\n }\n\n toUIMessageStreamResponse<UI_MESSAGE extends UIMessage>({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n }: UIMessageStreamResponseInit &\n UIMessageStreamOptions<UI_MESSAGE> = {}): Response {\n return createUIMessageStreamResponse({\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n }),\n ...init,\n });\n }\n\n toTextStreamResponse(init?: ResponseInit): Response {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init,\n });\n }\n}\n","import { generateText } from '../generate-text/generate-text';\nimport { GenerateTextResult } from '../generate-text/generate-text-result';\nimport { Output } from '../generate-text/output';\nimport { stepCountIs } from '../generate-text/stop-condition';\nimport { streamText } from '../generate-text/stream-text';\nimport { StreamTextResult } from '../generate-text/stream-text-result';\nimport { ToolSet } from '../generate-text/tool-set';\nimport { Prompt } from '../prompt';\nimport { Agent, AgentCallParameters, AgentStreamParameters } from './agent';\nimport { ToolLoopAgentSettings } from './tool-loop-agent-settings';\n\n/**\n * A tool loop agent is an agent that runs tools in a loop. In each step,\n * it calls the LLM, and if there are tool calls, it executes the tools\n * and calls the LLM again in a new step with the tool results.\n *\n * The loop continues until:\n * - A finish reasoning other than tool-calls is returned, or\n * - A tool that is invoked does not have an execute function, or\n * - A tool call needs approval, or\n * - A stop condition is met (default stop condition is stepCountIs(20))\n */\nexport class ToolLoopAgent<\n CALL_OPTIONS = never,\n TOOLS extends ToolSet = {},\n OUTPUT extends Output = never,\n> implements Agent<CALL_OPTIONS, TOOLS, OUTPUT>\n{\n readonly version = 'agent-v1';\n\n private readonly settings: ToolLoopAgentSettings<CALL_OPTIONS, TOOLS, OUTPUT>;\n\n constructor(settings: ToolLoopAgentSettings<CALL_OPTIONS, TOOLS, OUTPUT>) {\n this.settings = settings;\n }\n\n /**\n * The id of the agent.\n */\n get id(): string | undefined {\n return this.settings.id;\n }\n\n /**\n * The tools that the agent can use.\n */\n get tools(): TOOLS {\n return this.settings.tools as TOOLS;\n }\n\n private async prepareCall(\n options: AgentCallParameters<CALL_OPTIONS>,\n ): Promise<\n Omit<\n ToolLoopAgentSettings<CALL_OPTIONS, TOOLS, OUTPUT>,\n 'prepareCall' | 'instructions'\n > &\n Prompt\n > {\n const baseCallArgs = {\n ...this.settings,\n stopWhen: this.settings.stopWhen ?? stepCountIs(20),\n ...options,\n };\n\n const preparedCallArgs =\n (await this.settings.prepareCall?.(baseCallArgs)) ?? baseCallArgs;\n\n const { instructions, messages, prompt, ...callArgs } = preparedCallArgs;\n\n return {\n ...callArgs,\n\n // restore prompt types\n ...({ system: instructions, messages, prompt } as Prompt),\n };\n }\n\n /**\n * Generates an output from the agent (non-streaming).\n */\n async generate({\n abortSignal,\n ...options\n }: AgentCallParameters<CALL_OPTIONS>): Promise<\n GenerateTextResult<TOOLS, OUTPUT>\n > {\n return generateText({\n ...(await this.prepareCall(options)),\n abortSignal,\n });\n }\n\n /**\n * Streams an output from the agent (streaming).\n */\n async stream({\n abortSignal,\n experimental_transform,\n ...options\n }: AgentStreamParameters<CALL_OPTIONS, TOOLS>): Promise<\n StreamTextResult<TOOLS, OUTPUT>\n > {\n return streamText({\n ...(await this.prepareCall(options)),\n abortSignal,\n experimental_transform,\n });\n }\n}\n","import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { logWarnings } from '../logger/log-warnings';\nimport { resolveEmbeddingModel } from '../model/resolve-model';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { EmbeddingModel } from '../types';\nimport { prepareRetries } from '../util/prepare-retries';\nimport { EmbedResult } from './embed-result';\nimport { VERSION } from '../version';\n\n/**\nEmbed a value using an embedding model. The type of the value is defined by the embedding model.\n\n@param model - The embedding model to use.\n@param value - The value that should be embedded.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@returns A result object that contains the embedding, the value, and additional information.\n */\nexport async function embed({\n model: modelArg,\n value,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_telemetry: telemetry,\n}: {\n /**\nThe embedding model to use.\n */\n model: EmbeddingModel;\n\n /**\nThe value that should be embedded.\n */\n value: string;\n\n /**\nMaximum number of retries per embedding model call. Set to 0 to disable retries.\n\n@default 2\n */\n maxRetries?: number;\n\n /**\nAbort signal.\n */\n abortSignal?: AbortSignal;\n\n /**\nAdditional headers to include in the request.\nOnly applicable for HTTP-based providers.\n */\n headers?: Record<string, string>;\n\n /**\n Additional provider-specific options. They are passed through\n to the provider from the AI SDK and enable provider-specific\n functionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n * Optional telemetry configuration (experimental).\n */\n experimental_telemetry?: TelemetrySettings;\n}): Promise<EmbedResult> {\n const model = resolveEmbeddingModel(modelArg);\n\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal,\n });\n\n const headersWithUserAgent = withUserAgentSuffix(\n headers ?? {},\n `ai/${VERSION}`,\n );\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model: model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries },\n });\n\n const tracer = getTracer(telemetry);\n\n return recordSpan({\n name: 'ai.embed',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: 'ai.embed', telemetry }),\n ...baseTelemetryAttributes,\n 'ai.value': { input: () => JSON.stringify(value) },\n },\n }),\n tracer,\n fn: async span => {\n const { embedding, usage, warnings, response, providerMetadata } =\n await retry(() =>\n // nested spans to align with the embedMany telemetry data:\n recordSpan({\n name: 'ai.embed.doEmbed',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.embed.doEmbed',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.values': { input: () => [JSON.stringify(value)] },\n },\n }),\n tracer,\n fn: async doEmbedSpan => {\n const modelResponse = await model.doEmbed({\n values: [value],\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions,\n });\n\n const embedding = modelResponse.embeddings[0];\n const usage = modelResponse.usage ?? { tokens: NaN };\n\n doEmbedSpan.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.embeddings': {\n output: () =>\n modelResponse.embeddings.map(embedding =>\n JSON.stringify(embedding),\n ),\n },\n 'ai.usage.tokens': usage.tokens,\n },\n }),\n );\n\n return {\n embedding,\n usage,\n warnings: modelResponse.warnings,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response,\n };\n },\n }),\n );\n\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.embedding': { output: () => JSON.stringify(embedding) },\n 'ai.usage.tokens': usage.tokens,\n },\n }),\n );\n\n logWarnings({ warnings, provider: model.provider, model: model.modelId });\n\n return new DefaultEmbedResult({\n value,\n embedding,\n usage,\n warnings,\n providerMetadata,\n response,\n });\n },\n });\n}\n\nclass DefaultEmbedResult implements EmbedResult {\n readonly value: EmbedResult['value'];\n readonly embedding: EmbedResult['embedding'];\n readonly usage: EmbedResult['usage'];\n readonly warnings: EmbedResult['warnings'];\n readonly providerMetadata: EmbedResult['providerMetadata'];\n readonly response: EmbedResult['response'];\n\n constructor(options: {\n value: EmbedResult['value'];\n embedding: EmbedResult['embedding'];\n usage: EmbedResult['usage'];\n warnings: EmbedResult['warnings'];\n providerMetadata?: EmbedResult['providerMetadata'];\n response?: EmbedResult['response'];\n }) {\n this.value = options.value;\n this.embedding = options.embedding;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n }\n}\n","import { JSONValue } from '@ai-sdk/provider';\nimport {\n createIdGenerator,\n FlexibleSchema,\n InferSchema,\n ProviderOptions,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { NoObjectGeneratedError } from '../error/no-object-generated-error';\nimport { extractReasoningContent } from '../generate-text/extract-reasoning-content';\nimport { extractTextContent } from '../generate-text/extract-text-content';\nimport { logWarnings } from '../logger/log-warnings';\nimport { resolveLanguageModel } from '../model/resolve-model';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { wrapGatewayError } from '../prompt/wrap-gateway-error';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport {\n CallWarning,\n FinishReason,\n LanguageModel,\n} from '../types/language-model';\nimport { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { ProviderMetadata } from '../types/provider-metadata';\nimport { asLanguageModelUsage, LanguageModelUsage } from '../types/usage';\nimport { DownloadFunction } from '../util/download/download-function';\nimport { prepareHeaders } from '../util/prepare-headers';\nimport { prepareRetries } from '../util/prepare-retries';\nimport { VERSION } from '../version';\nimport { GenerateObjectResult } from './generate-object-result';\nimport { getOutputStrategy } from './output-strategy';\nimport { parseAndValidateObjectResultWithRepair } from './parse-and-validate-object-result';\nimport { RepairTextFunction } from './repair-text';\nimport { validateObjectGenerationInput } from './validate-object-generation-input';\n\nconst originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 });\n\n/**\nGenerate a structured, typed object for a given prompt and schema using a language model.\n\nThis function does not stream the output. If you want to stream the output, use `streamObject` instead.\n\n@param model - The language model to use.\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxOutputTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param schema - The schema of the object that the model should generate.\n@param schemaName - Optional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n@param schemaDescription - Optional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n\n@param output - The type of the output.\n\n- 'object': The output is an object.\n- 'array': The output is an array.\n- 'enum': The output is an enum.\n- 'no-schema': The output is not a schema.\n\n@param experimental_repairText - A function that attempts to repair the raw output of the model\nto enable JSON parsing.\n\n@param experimental_telemetry - Optional telemetry configuration (experimental).\n\n@param providerOptions - Additional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n\n@returns\nA result object that contains the generated object, the finish reason, the token usage, and additional information.\n\n@deprecated Use `generateText` with an `output` setting instead.\n */\nexport async function generateObject<\n SCHEMA extends FlexibleSchema<unknown> = FlexibleSchema<JSONValue>,\n OUTPUT extends\n | 'object'\n | 'array'\n | 'enum'\n | 'no-schema' = InferSchema<SCHEMA> extends string ? 'enum' : 'object',\n RESULT = OUTPUT extends 'array'\n ? Array<InferSchema<SCHEMA>>\n : InferSchema<SCHEMA>,\n>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt &\n (OUTPUT extends 'enum'\n ? {\n /**\nThe enum values that the model should use.\n */\n enum: Array<RESULT>;\n output: 'enum';\n }\n : OUTPUT extends 'no-schema'\n ? {}\n : {\n /**\nThe schema of the object that the model should generate.\n */\n schema: SCHEMA;\n\n /**\nOptional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n }) & {\n output?: OUTPUT;\n\n /**\n The language model to use.\n */\n model: LanguageModel;\n /**\n A function that attempts to repair the raw output of the model\n to enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\n Optional telemetry configuration (experimental).\n */\n\n experimental_telemetry?: TelemetrySettings;\n\n /**\n Custom download function to use for URLs.\n\n By default, files are downloaded if the model does not support the URL for the given media type.\n */\n experimental_download?: DownloadFunction | undefined;\n\n /**\n Additional provider-specific options. They are passed through\n to the provider from the AI SDK and enable provider-specific\n functionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n };\n },\n): Promise<GenerateObjectResult<RESULT>> {\n const {\n model: modelArg,\n output = 'object',\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download,\n providerOptions,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n } = {},\n ...settings\n } = options;\n\n const model = resolveLanguageModel(modelArg);\n\n const enumValues = 'enum' in options ? options.enum : undefined;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName,\n } = 'schema' in options ? options : {};\n\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues,\n });\n\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal,\n });\n\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues,\n });\n\n const callSettings = prepareCallSettings(settings);\n\n const headersWithUserAgent = withUserAgentSuffix(\n headers ?? {},\n `ai/${VERSION}`,\n );\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries },\n });\n\n const tracer = getTracer(telemetry);\n const jsonSchema = await outputStrategy.jsonSchema();\n\n try {\n return await recordSpan({\n name: 'ai.generateObject',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateObject',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.schema':\n jsonSchema != null\n ? { input: () => JSON.stringify(jsonSchema) }\n : undefined,\n 'ai.schema.name': schemaName,\n 'ai.schema.description': schemaDescription,\n 'ai.settings.output': outputStrategy.type,\n },\n }),\n tracer,\n fn: async span => {\n let result: string;\n let finishReason: FinishReason;\n let usage: LanguageModelUsage;\n let warnings: CallWarning[] | undefined;\n let response: LanguageModelResponseMetadata;\n let request: LanguageModelRequestMetadata;\n let resultProviderMetadata: ProviderMetadata | undefined;\n let reasoning: string | undefined;\n\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages,\n } as Prompt);\n\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download,\n });\n\n const generateResult = await retry(() =>\n recordSpan({\n name: 'ai.generateObject.doGenerate',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.generateObject.doGenerate',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(promptMessages),\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty':\n callSettings.frequencyPenalty,\n 'gen_ai.request.max_tokens': callSettings.maxOutputTokens,\n 'gen_ai.request.presence_penalty': callSettings.presencePenalty,\n 'gen_ai.request.temperature': callSettings.temperature,\n 'gen_ai.request.top_k': callSettings.topK,\n 'gen_ai.request.top_p': callSettings.topP,\n },\n }),\n tracer,\n fn: async span => {\n const result = await model.doGenerate({\n responseFormat: {\n type: 'json',\n schema: jsonSchema,\n name: schemaName,\n description: schemaDescription,\n },\n ...prepareCallSettings(settings),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent,\n });\n\n const responseData = {\n id: result.response?.id ?? generateId(),\n timestamp: result.response?.timestamp ?? currentDate(),\n modelId: result.response?.modelId ?? model.modelId,\n headers: result.response?.headers,\n body: result.response?.body,\n };\n\n const text = extractTextContent(result.content);\n const reasoning = extractReasoningContent(result.content);\n\n if (text === undefined) {\n throw new NoObjectGeneratedError({\n message:\n 'No object generated: the model did not return a response.',\n response: responseData,\n usage: asLanguageModelUsage(result.usage),\n finishReason: result.finishReason.unified,\n });\n }\n\n // Add response information to the span:\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': result.finishReason.unified,\n 'ai.response.object': { output: () => text },\n 'ai.response.id': responseData.id,\n 'ai.response.model': responseData.modelId,\n 'ai.response.timestamp':\n responseData.timestamp.toISOString(),\n 'ai.response.providerMetadata': JSON.stringify(\n result.providerMetadata,\n ),\n\n // TODO rename telemetry attributes to inputTokens and outputTokens\n 'ai.usage.promptTokens': result.usage.inputTokens.total,\n 'ai.usage.completionTokens':\n result.usage.outputTokens.total,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [\n result.finishReason.unified,\n ],\n 'gen_ai.response.id': responseData.id,\n 'gen_ai.response.model': responseData.modelId,\n 'gen_ai.usage.input_tokens': result.usage.inputTokens.total,\n 'gen_ai.usage.output_tokens':\n result.usage.outputTokens.total,\n },\n }),\n );\n\n return {\n ...result,\n objectText: text,\n reasoning,\n responseData,\n };\n },\n }),\n );\n\n result = generateResult.objectText;\n finishReason = generateResult.finishReason.unified;\n usage = asLanguageModelUsage(generateResult.usage);\n warnings = generateResult.warnings;\n resultProviderMetadata = generateResult.providerMetadata;\n request = generateResult.request ?? {};\n response = generateResult.responseData;\n reasoning = generateResult.reasoning;\n\n logWarnings({\n warnings,\n provider: model.provider,\n model: model.modelId,\n });\n\n const object = await parseAndValidateObjectResultWithRepair(\n result,\n outputStrategy,\n repairText,\n {\n response,\n usage,\n finishReason,\n },\n );\n\n // Add response information to the span:\n span.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n 'ai.response.providerMetadata': JSON.stringify(\n resultProviderMetadata,\n ),\n\n // TODO rename telemetry attributes to inputTokens and outputTokens\n 'ai.usage.promptTokens': usage.inputTokens,\n 'ai.usage.completionTokens': usage.outputTokens,\n },\n }),\n );\n\n return new DefaultGenerateObjectResult({\n object,\n reasoning,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata,\n });\n },\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\n\nclass DefaultGenerateObjectResult<T> implements GenerateObjectResult<T> {\n readonly object: GenerateObjectResult<T>['object'];\n readonly finishReason: GenerateObjectResult<T>['finishReason'];\n readonly usage: GenerateObjectResult<T>['usage'];\n readonly warnings: GenerateObjectResult<T>['warnings'];\n readonly providerMetadata: GenerateObjectResult<T>['providerMetadata'];\n readonly response: GenerateObjectResult<T>['response'];\n readonly request: GenerateObjectResult<T>['request'];\n readonly reasoning: GenerateObjectResult<T>['reasoning'];\n\n constructor(options: {\n object: GenerateObjectResult<T>['object'];\n finishReason: GenerateObjectResult<T>['finishReason'];\n usage: GenerateObjectResult<T>['usage'];\n warnings: GenerateObjectResult<T>['warnings'];\n providerMetadata: GenerateObjectResult<T>['providerMetadata'];\n response: GenerateObjectResult<T>['response'];\n request: GenerateObjectResult<T>['request'];\n reasoning: GenerateObjectResult<T>['reasoning'];\n }) {\n this.object = options.object;\n this.finishReason = options.finishReason;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n this.request = options.request;\n this.reasoning = options.reasoning;\n }\n\n toJsonResponse(init?: ResponseInit): Response {\n return new Response(JSON.stringify(this.object), {\n status: init?.status ?? 200,\n headers: prepareHeaders(init?.headers, {\n 'content-type': 'application/json; charset=utf-8',\n }),\n });\n }\n}\n","import {\n JSONValue,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n SharedV3ProviderMetadata,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n createIdGenerator,\n DelayedPromise,\n FlexibleSchema,\n ProviderOptions,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { ServerResponse } from 'http';\nimport { logWarnings } from '../logger/log-warnings';\nimport { resolveLanguageModel } from '../model/resolve-model';\nimport { CallSettings } from '../prompt/call-settings';\nimport { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';\nimport { prepareCallSettings } from '../prompt/prepare-call-settings';\nimport { Prompt } from '../prompt/prompt';\nimport { standardizePrompt } from '../prompt/standardize-prompt';\nimport { wrapGatewayError } from '../prompt/wrap-gateway-error';\nimport { assembleOperationName } from '../telemetry/assemble-operation-name';\nimport { getBaseTelemetryAttributes } from '../telemetry/get-base-telemetry-attributes';\nimport { getTracer } from '../telemetry/get-tracer';\nimport { recordSpan } from '../telemetry/record-span';\nimport { selectTelemetryAttributes } from '../telemetry/select-telemetry-attributes';\nimport { stringifyForTelemetry } from '../telemetry/stringify-for-telemetry';\nimport { TelemetrySettings } from '../telemetry/telemetry-settings';\nimport { createTextStreamResponse } from '../text-stream/create-text-stream-response';\nimport { pipeTextStreamToResponse } from '../text-stream/pipe-text-stream-to-response';\nimport {\n CallWarning,\n FinishReason,\n LanguageModel,\n} from '../types/language-model';\nimport { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';\nimport { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';\nimport { ProviderMetadata } from '../types/provider-metadata';\nimport {\n asLanguageModelUsage,\n createNullLanguageModelUsage,\n LanguageModelUsage,\n} from '../types/usage';\nimport { DeepPartial, isDeepEqualData, parsePartialJson } from '../util';\nimport {\n AsyncIterableStream,\n createAsyncIterableStream,\n} from '../util/async-iterable-stream';\nimport { createStitchableStream } from '../util/create-stitchable-stream';\nimport { DownloadFunction } from '../util/download/download-function';\nimport { now as originalNow } from '../util/now';\nimport { prepareRetries } from '../util/prepare-retries';\nimport { getOutputStrategy, OutputStrategy } from './output-strategy';\nimport { parseAndValidateObjectResultWithRepair } from './parse-and-validate-object-result';\nimport { RepairTextFunction } from './repair-text';\nimport { ObjectStreamPart, StreamObjectResult } from './stream-object-result';\nimport { validateObjectGenerationInput } from './validate-object-generation-input';\n\nconst originalGenerateId = createIdGenerator({ prefix: 'aiobj', size: 24 });\n\n/**\nCallback that is set using the `onError` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamObjectOnErrorCallback = (event: {\n error: unknown;\n}) => Promise<void> | void;\n\n/**\nCallback that is set using the `onFinish` option.\n\n@param event - The event that is passed to the callback.\n */\nexport type StreamObjectOnFinishCallback<RESULT> = (event: {\n /**\nThe token usage of the generated response.\n*/\n usage: LanguageModelUsage;\n\n /**\nThe generated object. Can be undefined if the final object does not match the schema.\n*/\n object: RESULT | undefined;\n\n /**\nOptional error object. This is e.g. a TypeValidationError when the final object does not match the schema.\n*/\n error: unknown | undefined;\n\n /**\nResponse metadata.\n */\n response: LanguageModelResponseMetadata;\n\n /**\nWarnings from the model provider (e.g. unsupported settings).\n*/\n warnings?: CallWarning[];\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n*/\n providerMetadata: ProviderMetadata | undefined;\n}) => Promise<void> | void;\n\n/**\nGenerate a structured, typed object for a given prompt and schema using a language model.\n\nThis function streams the output. If you do not want to stream the output, use `generateObject` instead.\n\n@param model - The language model to use.\n@param tools - Tools that are accessible to and can be called by the model. The model needs to support calling tools.\n\n@param system - A system message that will be part of the prompt.\n@param prompt - A simple text prompt. You can either use `prompt` or `messages` but not both.\n@param messages - A list of messages. You can either use `prompt` or `messages` but not both.\n\n@param maxOutputTokens - Maximum number of tokens to generate.\n@param temperature - Temperature setting.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topP - Nucleus sampling.\nThe value is passed through to the provider. The range depends on the provider and model.\nIt is recommended to set either `temperature` or `topP`, but not both.\n@param topK - Only sample from the top K options for each subsequent token.\nUsed to remove \"long tail\" low probability responses.\nRecommended for advanced use cases only. You usually only need to use temperature.\n@param presencePenalty - Presence penalty setting.\nIt affects the likelihood of the model to repeat information that is already in the prompt.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param frequencyPenalty - Frequency penalty setting.\nIt affects the likelihood of the model to repeatedly use the same words or phrases.\nThe value is passed through to the provider. The range depends on the provider and model.\n@param stopSequences - Stop sequences.\nIf set, the model will stop generating text when one of the stop sequences is generated.\n@param seed - The seed (integer) to use for random sampling.\nIf set and supported by the model, calls will generate deterministic results.\n\n@param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.\n@param abortSignal - An optional abort signal that can be used to cancel the call.\n@param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.\n\n@param schema - The schema of the object that the model should generate.\n@param schemaName - Optional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n@param schemaDescription - Optional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n\n@param output - The type of the output.\n\n- 'object': The output is an object.\n- 'array': The output is an array.\n- 'enum': The output is an enum.\n- 'no-schema': The output is not a schema.\n\n@param experimental_telemetry - Optional telemetry configuration (experimental).\n\n@param providerOptions - Additional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n\n@returns\nA result object for accessing the partial object stream and additional information.\n\n@deprecated Use `streamText` with an `output` setting instead.\n */\nexport function streamObject<\n SCHEMA extends FlexibleSchema<unknown> = FlexibleSchema<JSONValue>,\n OUTPUT extends\n | 'object'\n | 'array'\n | 'enum'\n | 'no-schema' = InferSchema<SCHEMA> extends string ? 'enum' : 'object',\n RESULT = OUTPUT extends 'array'\n ? Array<InferSchema<SCHEMA>>\n : InferSchema<SCHEMA>,\n>(\n options: Omit<CallSettings, 'stopSequences'> &\n Prompt &\n (OUTPUT extends 'enum'\n ? {\n /**\nThe enum values that the model should use.\n */\n enum: Array<RESULT>;\n output: 'enum';\n }\n : OUTPUT extends 'no-schema'\n ? {}\n : {\n /**\nThe schema of the object that the model should generate.\n */\n schema: SCHEMA;\n\n /**\nOptional name of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema name.\n */\n schemaName?: string;\n\n /**\nOptional description of the output that should be generated.\nUsed by some providers for additional LLM guidance, e.g.\nvia tool or schema description.\n */\n schemaDescription?: string;\n }) & {\n output?: OUTPUT;\n\n /**\nThe language model to use.\n */\n model: LanguageModel;\n\n /**\nA function that attempts to repair the raw output of the model\nto enable JSON parsing.\n */\n experimental_repairText?: RepairTextFunction;\n\n /**\nOptional telemetry configuration (experimental).\n */\n\n experimental_telemetry?: TelemetrySettings;\n\n /**\n Custom download function to use for URLs.\n\n By default, files are downloaded if the model does not support the URL for the given media type.\n */\n experimental_download?: DownloadFunction | undefined;\n\n /**\nAdditional provider-specific options. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n\n /**\nCallback that is invoked when an error occurs during streaming.\nYou can use it to log errors.\nThe stream processing will pause until the callback promise is resolved.\n */\n onError?: StreamObjectOnErrorCallback;\n\n /**\nCallback that is called when the LLM response and the final object validation are finished.\n*/\n onFinish?: StreamObjectOnFinishCallback<RESULT>;\n\n /**\n * Internal. For test use only. May change without notice.\n */\n _internal?: {\n generateId?: () => string;\n currentDate?: () => Date;\n now?: () => number;\n };\n },\n): StreamObjectResult<\n OUTPUT extends 'enum'\n ? string\n : OUTPUT extends 'array'\n ? RESULT\n : DeepPartial<RESULT>,\n OUTPUT extends 'array' ? RESULT : RESULT,\n OUTPUT extends 'array'\n ? RESULT extends Array<infer U>\n ? AsyncIterableStream<U>\n : never\n : never\n> {\n const {\n model,\n output = 'object',\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download,\n providerOptions,\n onError = ({ error }: { error: unknown }) => {\n console.error(error);\n },\n onFinish,\n _internal: {\n generateId = originalGenerateId,\n currentDate = () => new Date(),\n now = originalNow,\n } = {},\n ...settings\n } = options;\n\n const enumValues =\n 'enum' in options && options.enum ? options.enum : undefined;\n\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName,\n } = 'schema' in options ? options : {};\n\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues,\n });\n\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues,\n });\n\n return new DefaultStreamObjectResult({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download,\n generateId,\n currentDate,\n now,\n });\n}\n\nclass DefaultStreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM>\n implements StreamObjectResult<PARTIAL, RESULT, ELEMENT_STREAM>\n{\n private readonly _object = new DelayedPromise<RESULT>();\n private readonly _usage = new DelayedPromise<LanguageModelUsage>();\n private readonly _providerMetadata = new DelayedPromise<\n ProviderMetadata | undefined\n >();\n private readonly _warnings = new DelayedPromise<CallWarning[] | undefined>();\n private readonly _request =\n new DelayedPromise<LanguageModelRequestMetadata>();\n private readonly _response =\n new DelayedPromise<LanguageModelResponseMetadata>();\n private readonly _finishReason = new DelayedPromise<FinishReason>();\n\n private readonly baseStream: ReadableStream<ObjectStreamPart<PARTIAL>>;\n\n private readonly outputStrategy: OutputStrategy<\n PARTIAL,\n RESULT,\n ELEMENT_STREAM\n >;\n\n constructor({\n model: modelArg,\n headers,\n telemetry,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download,\n generateId,\n currentDate,\n now,\n }: {\n model: LanguageModel;\n telemetry: TelemetrySettings | undefined;\n headers: Record<string, string | undefined> | undefined;\n settings: Omit<CallSettings, 'abortSignal' | 'headers'>;\n maxRetries: number | undefined;\n abortSignal: AbortSignal | undefined;\n outputStrategy: OutputStrategy<PARTIAL, RESULT, ELEMENT_STREAM>;\n system: Prompt['system'];\n prompt: Prompt['prompt'];\n messages: Prompt['messages'];\n schemaName: string | undefined;\n schemaDescription: string | undefined;\n providerOptions: ProviderOptions | undefined;\n repairText: RepairTextFunction | undefined;\n onError: StreamObjectOnErrorCallback;\n onFinish: StreamObjectOnFinishCallback<RESULT> | undefined;\n download: DownloadFunction | undefined;\n generateId: () => string;\n currentDate: () => Date;\n now: () => number;\n }) {\n const model = resolveLanguageModel(modelArg);\n\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal,\n });\n\n const callSettings = prepareCallSettings(settings);\n\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries },\n });\n\n const tracer = getTracer(telemetry);\n const self = this;\n\n const stitchableStream =\n createStitchableStream<ObjectStreamPart<PARTIAL>>();\n\n const eventProcessor = new TransformStream<\n ObjectStreamPart<PARTIAL>,\n ObjectStreamPart<PARTIAL>\n >({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n\n if (chunk.type === 'error') {\n onError({ error: wrapGatewayError(chunk.error) });\n }\n },\n });\n\n this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n\n recordSpan({\n name: 'ai.streamObject',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamObject',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n 'ai.prompt': {\n input: () => JSON.stringify({ system, prompt, messages }),\n },\n 'ai.schema': {\n input: async () =>\n JSON.stringify(await outputStrategy.jsonSchema()),\n },\n 'ai.schema.name': schemaName,\n 'ai.schema.description': schemaDescription,\n 'ai.settings.output': outputStrategy.type,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async rootSpan => {\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages,\n } as Prompt);\n\n const callOptions = {\n responseFormat: {\n type: 'json' as const,\n schema: await outputStrategy.jsonSchema(),\n name: schemaName,\n description: schemaDescription,\n },\n ...prepareCallSettings(settings),\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download,\n }),\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: false,\n };\n\n const transformer: Transformer<\n LanguageModelV3StreamPart,\n ObjectStreamInputPart\n > = {\n transform: (chunk, controller) => {\n switch (chunk.type) {\n case 'text-delta':\n controller.enqueue(chunk.delta);\n break;\n case 'response-metadata':\n case 'finish':\n case 'error':\n case 'stream-start':\n controller.enqueue(chunk);\n break;\n }\n },\n };\n\n const {\n result: { stream, response, request },\n doStreamSpan,\n startTimestampMs,\n } = await retry(() =>\n recordSpan({\n name: 'ai.streamObject.doStream',\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: 'ai.streamObject.doStream',\n telemetry,\n }),\n ...baseTelemetryAttributes,\n 'ai.prompt.messages': {\n input: () => stringifyForTelemetry(callOptions.prompt),\n },\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.system': model.provider,\n 'gen_ai.request.model': model.modelId,\n 'gen_ai.request.frequency_penalty':\n callSettings.frequencyPenalty,\n 'gen_ai.request.max_tokens': callSettings.maxOutputTokens,\n 'gen_ai.request.presence_penalty': callSettings.presencePenalty,\n 'gen_ai.request.temperature': callSettings.temperature,\n 'gen_ai.request.top_k': callSettings.topK,\n 'gen_ai.request.top_p': callSettings.topP,\n },\n }),\n tracer,\n endWhenDone: false,\n fn: async doStreamSpan => ({\n startTimestampMs: now(),\n doStreamSpan,\n result: await model.doStream(callOptions),\n }),\n }),\n );\n\n self._request.resolve(request ?? {});\n\n // store information for onFinish callback:\n let warnings: SharedV3Warning[] | undefined;\n let usage: LanguageModelUsage = createNullLanguageModelUsage();\n let finishReason: FinishReason | undefined;\n let providerMetadata: ProviderMetadata | undefined;\n let object: RESULT | undefined;\n let error: unknown | undefined;\n\n // pipe chunks through a transformation stream that extracts metadata:\n let accumulatedText = '';\n let textDelta = '';\n let fullResponse: {\n id: string;\n timestamp: Date;\n modelId: string;\n } = {\n id: generateId(),\n timestamp: currentDate(),\n modelId: model.modelId,\n };\n\n // Keep track of raw parse result before type validation, since e.g. Zod might\n // change the object by mapping properties.\n let latestObjectJson: JSONValue | undefined = undefined;\n let latestObject: PARTIAL | undefined = undefined;\n let isFirstChunk = true;\n let isFirstDelta = true;\n\n const transformedStream = stream\n .pipeThrough(new TransformStream(transformer))\n .pipeThrough(\n new TransformStream<\n string | ObjectStreamInputPart,\n ObjectStreamPart<PARTIAL>\n >({\n async transform(chunk, controller): Promise<void> {\n if (\n typeof chunk === 'object' &&\n chunk.type === 'stream-start'\n ) {\n warnings = chunk.warnings;\n return; // stream start chunks are sent immediately and do not count as first chunk\n }\n\n // Telemetry event for first chunk:\n if (isFirstChunk) {\n const msToFirstChunk = now() - startTimestampMs;\n\n isFirstChunk = false;\n\n doStreamSpan.addEvent('ai.stream.firstChunk', {\n 'ai.stream.msToFirstChunk': msToFirstChunk,\n });\n\n doStreamSpan.setAttributes({\n 'ai.stream.msToFirstChunk': msToFirstChunk,\n });\n }\n\n // process partial text chunks\n if (typeof chunk === 'string') {\n accumulatedText += chunk;\n textDelta += chunk;\n\n const { value: currentObjectJson, state: parseState } =\n await parsePartialJson(accumulatedText);\n\n if (\n currentObjectJson !== undefined &&\n !isDeepEqualData(latestObjectJson, currentObjectJson)\n ) {\n const validationResult =\n await outputStrategy.validatePartialResult({\n value: currentObjectJson,\n textDelta,\n latestObject,\n isFirstDelta,\n isFinalDelta: parseState === 'successful-parse',\n });\n\n if (\n validationResult.success &&\n !isDeepEqualData(\n latestObject,\n validationResult.value.partial,\n )\n ) {\n // inside inner check to correctly parse the final element in array mode:\n latestObjectJson = currentObjectJson;\n latestObject = validationResult.value.partial;\n\n controller.enqueue({\n type: 'object',\n object: latestObject,\n });\n\n controller.enqueue({\n type: 'text-delta',\n textDelta: validationResult.value.textDelta,\n });\n\n textDelta = '';\n isFirstDelta = false;\n }\n }\n\n return;\n }\n\n switch (chunk.type) {\n case 'response-metadata': {\n fullResponse = {\n id: chunk.id ?? fullResponse.id,\n timestamp: chunk.timestamp ?? fullResponse.timestamp,\n modelId: chunk.modelId ?? fullResponse.modelId,\n };\n break;\n }\n\n case 'finish': {\n // send final text delta:\n if (textDelta !== '') {\n controller.enqueue({ type: 'text-delta', textDelta });\n }\n\n // store finish reason for telemetry:\n finishReason = chunk.finishReason.unified;\n\n // store usage and metadata for promises and onFinish callback:\n usage = asLanguageModelUsage(chunk.usage);\n providerMetadata = chunk.providerMetadata;\n\n controller.enqueue({\n ...chunk,\n finishReason: chunk.finishReason.unified,\n usage,\n response: fullResponse,\n });\n\n // log warnings:\n logWarnings({\n warnings: warnings ?? [],\n provider: model.provider,\n model: model.modelId,\n });\n\n // resolve promises that can be resolved now:\n self._usage.resolve(usage);\n self._providerMetadata.resolve(providerMetadata);\n self._warnings.resolve(warnings);\n self._response.resolve({\n ...fullResponse,\n headers: response?.headers,\n });\n self._finishReason.resolve(finishReason ?? 'other');\n\n try {\n object = await parseAndValidateObjectResultWithRepair(\n accumulatedText,\n outputStrategy,\n repairText,\n {\n response: fullResponse,\n usage,\n finishReason,\n },\n );\n self._object.resolve(object);\n } catch (e) {\n error = e;\n self._object.reject(e);\n }\n break;\n }\n\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n try {\n const finalUsage = usage ?? {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN,\n };\n\n doStreamSpan.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.response.finishReason': finishReason,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n 'ai.response.id': fullResponse.id,\n 'ai.response.model': fullResponse.modelId,\n 'ai.response.timestamp':\n fullResponse.timestamp.toISOString(),\n 'ai.response.providerMetadata':\n JSON.stringify(providerMetadata),\n\n 'ai.usage.inputTokens': finalUsage.inputTokens,\n 'ai.usage.outputTokens': finalUsage.outputTokens,\n 'ai.usage.totalTokens': finalUsage.totalTokens,\n 'ai.usage.reasoningTokens': finalUsage.reasoningTokens,\n 'ai.usage.cachedInputTokens':\n finalUsage.cachedInputTokens,\n\n // standardized gen-ai llm span attributes:\n 'gen_ai.response.finish_reasons': [finishReason],\n 'gen_ai.response.id': fullResponse.id,\n 'gen_ai.response.model': fullResponse.modelId,\n 'gen_ai.usage.input_tokens': finalUsage.inputTokens,\n 'gen_ai.usage.output_tokens': finalUsage.outputTokens,\n },\n }),\n );\n\n // finish doStreamSpan before other operations for correct timing:\n doStreamSpan.end();\n\n // Add response information to the root span:\n rootSpan.setAttributes(\n await selectTelemetryAttributes({\n telemetry,\n attributes: {\n 'ai.usage.inputTokens': finalUsage.inputTokens,\n 'ai.usage.outputTokens': finalUsage.outputTokens,\n 'ai.usage.totalTokens': finalUsage.totalTokens,\n 'ai.usage.reasoningTokens': finalUsage.reasoningTokens,\n 'ai.usage.cachedInputTokens':\n finalUsage.cachedInputTokens,\n 'ai.response.object': {\n output: () => JSON.stringify(object),\n },\n 'ai.response.providerMetadata':\n JSON.stringify(providerMetadata),\n },\n }),\n );\n\n // call onFinish callback:\n await onFinish?.({\n usage: finalUsage,\n object,\n error,\n response: {\n ...fullResponse,\n headers: response?.headers,\n },\n warnings,\n providerMetadata,\n });\n } catch (error) {\n controller.enqueue({ type: 'error', error });\n } finally {\n rootSpan.end();\n }\n },\n }),\n );\n\n stitchableStream.addStream(transformedStream);\n },\n })\n .catch(error => {\n // add an empty stream with an error to break the stream:\n stitchableStream.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: 'error', error });\n controller.close();\n },\n }),\n );\n })\n .finally(() => {\n stitchableStream.close();\n });\n\n this.outputStrategy = outputStrategy;\n }\n\n get object() {\n return this._object.promise;\n }\n\n get usage() {\n return this._usage.promise;\n }\n\n get providerMetadata() {\n return this._providerMetadata.promise;\n }\n\n get warnings() {\n return this._warnings.promise;\n }\n\n get request() {\n return this._request.promise;\n }\n\n get response() {\n return this._response.promise;\n }\n\n get finishReason() {\n return this._finishReason.promise;\n }\n\n get partialObjectStream(): AsyncIterableStream<PARTIAL> {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream<ObjectStreamPart<PARTIAL>, PARTIAL>({\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'object':\n controller.enqueue(chunk.object);\n break;\n\n case 'text-delta':\n case 'finish':\n case 'error': // suppress error (use onError instead)\n break;\n\n default: {\n const _exhaustiveCheck: never = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n );\n }\n\n get elementStream(): ELEMENT_STREAM {\n return this.outputStrategy.createElementStream(this.baseStream);\n }\n\n get textStream(): AsyncIterableStream<string> {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream<ObjectStreamPart<PARTIAL>, string>({\n transform(chunk, controller) {\n switch (chunk.type) {\n case 'text-delta':\n controller.enqueue(chunk.textDelta);\n break;\n\n case 'object':\n case 'finish':\n case 'error': // suppress error (use onError instead)\n break;\n\n default: {\n const _exhaustiveCheck: never = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n );\n }\n\n get fullStream(): AsyncIterableStream<ObjectStreamPart<PARTIAL>> {\n return createAsyncIterableStream(this.baseStream);\n }\n\n pipeTextStreamToResponse(response: ServerResponse, init?: ResponseInit) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init,\n });\n }\n\n toTextStreamResponse(init?: ResponseInit): Response {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init,\n });\n }\n}\n\nexport type ObjectStreamInputPart =\n | string\n | {\n type: 'stream-start';\n warnings: SharedV3Warning[];\n }\n | {\n type: 'error';\n error: unknown;\n }\n | {\n type: 'response-metadata';\n id?: string;\n timestamp?: Date;\n modelId?: string;\n }\n | {\n type: 'finish';\n finishReason: LanguageModelV3FinishReason;\n usage: LanguageModelV3Usage;\n providerMetadata?: SharedV3ProviderMetadata;\n };\n"]}