@fondation-io/ai 7.0.0-beta.45

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 (536) hide show
  1. package/CHANGELOG.md +7687 -0
  2. package/README.md +238 -0
  3. package/dist/index.d.mts +7056 -0
  4. package/dist/index.d.ts +7056 -0
  5. package/dist/index.js +14607 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +14578 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/internal/index.d.mts +303 -0
  10. package/dist/internal/index.d.ts +303 -0
  11. package/dist/internal/index.js +1352 -0
  12. package/dist/internal/index.js.map +1 -0
  13. package/dist/internal/index.mjs +1336 -0
  14. package/dist/internal/index.mjs.map +1 -0
  15. package/dist/test/index.d.mts +265 -0
  16. package/dist/test/index.d.ts +265 -0
  17. package/dist/test/index.js +509 -0
  18. package/dist/test/index.js.map +1 -0
  19. package/dist/test/index.mjs +472 -0
  20. package/dist/test/index.mjs.map +1 -0
  21. package/docs/00-introduction/index.mdx +76 -0
  22. package/docs/02-foundations/01-overview.mdx +43 -0
  23. package/docs/02-foundations/02-providers-and-models.mdx +160 -0
  24. package/docs/02-foundations/03-prompts.mdx +616 -0
  25. package/docs/02-foundations/04-tools.mdx +251 -0
  26. package/docs/02-foundations/05-streaming.mdx +62 -0
  27. package/docs/02-foundations/06-provider-options.mdx +345 -0
  28. package/docs/02-foundations/index.mdx +49 -0
  29. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  30. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  31. package/docs/02-getting-started/02-nextjs-app-router.mdx +559 -0
  32. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  33. package/docs/02-getting-started/04-svelte.mdx +627 -0
  34. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  35. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  36. package/docs/02-getting-started/07-expo.mdx +766 -0
  37. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  38. package/docs/02-getting-started/09-coding-agents.mdx +179 -0
  39. package/docs/02-getting-started/index.mdx +44 -0
  40. package/docs/03-agents/01-overview.mdx +96 -0
  41. package/docs/03-agents/02-building-agents.mdx +449 -0
  42. package/docs/03-agents/03-workflows.mdx +386 -0
  43. package/docs/03-agents/04-loop-control.mdx +394 -0
  44. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  45. package/docs/03-agents/06-memory.mdx +222 -0
  46. package/docs/03-agents/06-subagents.mdx +362 -0
  47. package/docs/03-agents/index.mdx +46 -0
  48. package/docs/03-ai-sdk-core/01-overview.mdx +31 -0
  49. package/docs/03-ai-sdk-core/05-generating-text.mdx +707 -0
  50. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +498 -0
  51. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1148 -0
  52. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +383 -0
  53. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +146 -0
  54. package/docs/03-ai-sdk-core/25-settings.mdx +216 -0
  55. package/docs/03-ai-sdk-core/26-reasoning.mdx +190 -0
  56. package/docs/03-ai-sdk-core/30-embeddings.mdx +236 -0
  57. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  58. package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
  59. package/docs/03-ai-sdk-core/36-transcription.mdx +227 -0
  60. package/docs/03-ai-sdk-core/37-speech.mdx +169 -0
  61. package/docs/03-ai-sdk-core/38-video-generation.mdx +366 -0
  62. package/docs/03-ai-sdk-core/40-middleware.mdx +485 -0
  63. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  64. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  65. package/docs/03-ai-sdk-core/55-testing.mdx +219 -0
  66. package/docs/03-ai-sdk-core/60-telemetry.mdx +391 -0
  67. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  68. package/docs/03-ai-sdk-core/65-event-listeners.mdx +1303 -0
  69. package/docs/03-ai-sdk-core/index.mdx +99 -0
  70. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  71. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1320 -0
  72. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +534 -0
  73. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  74. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  75. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  76. package/docs/04-ai-sdk-ui/05-completion.mdx +181 -0
  77. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  78. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  79. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  80. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  81. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  82. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  83. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +503 -0
  84. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  85. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  86. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  87. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  88. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  89. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  90. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +157 -0
  91. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  92. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +94 -0
  93. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  94. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  95. package/docs/05-ai-sdk-rsc/index.mdx +63 -0
  96. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  97. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  98. package/docs/06-advanced/03-backpressure.mdx +173 -0
  99. package/docs/06-advanced/04-caching.mdx +169 -0
  100. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  101. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  102. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +225 -0
  103. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  104. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  105. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  106. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  107. package/docs/06-advanced/index.mdx +11 -0
  108. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2785 -0
  109. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3752 -0
  110. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +332 -0
  111. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +330 -0
  112. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +323 -0
  113. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +251 -0
  114. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +152 -0
  115. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +221 -0
  116. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +264 -0
  117. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +235 -0
  118. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +973 -0
  119. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +154 -0
  120. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +173 -0
  121. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +150 -0
  122. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +209 -0
  123. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +223 -0
  124. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +423 -0
  125. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  126. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  127. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  128. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +58 -0
  129. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  130. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +435 -0
  131. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +264 -0
  132. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  133. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  134. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +198 -0
  135. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +157 -0
  136. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  137. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  138. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  139. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +74 -0
  140. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  141. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  142. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  143. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  144. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  145. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  146. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  147. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  148. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  149. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +30 -0
  150. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  151. package/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx +68 -0
  152. package/docs/07-reference/01-ai-sdk-core/index.mdx +160 -0
  153. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +493 -0
  154. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +185 -0
  155. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +196 -0
  156. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +231 -0
  157. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  158. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +162 -0
  159. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +119 -0
  160. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +77 -0
  161. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  162. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  163. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  164. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  165. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  166. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  167. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  168. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  169. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +78 -0
  170. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +79 -0
  171. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  172. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  173. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  174. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  175. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  176. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  177. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +266 -0
  178. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  179. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +31 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +28 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +26 -0
  184. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
  185. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
  186. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
  187. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +24 -0
  188. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
  189. package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
  190. package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
  191. package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
  192. package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
  193. package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
  194. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
  195. package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
  196. package/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx +25 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +24 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +24 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx +39 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +25 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  207. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  208. package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
  209. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  210. package/docs/07-reference/05-ai-sdk-errors/index.mdx +39 -0
  211. package/docs/07-reference/index.mdx +28 -0
  212. package/docs/08-migration-guides/00-versioning.mdx +46 -0
  213. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +95 -0
  214. package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
  215. package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
  216. package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
  217. package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
  218. package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
  219. package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
  220. package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
  221. package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
  222. package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
  223. package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
  224. package/docs/08-migration-guides/index.mdx +22 -0
  225. package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
  226. package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
  227. package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
  228. package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
  229. package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
  230. package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
  231. package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
  232. package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
  233. package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
  234. package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
  235. package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
  236. package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
  237. package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
  238. package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
  239. package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
  240. package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
  241. package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
  242. package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
  243. package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
  244. package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
  245. package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
  246. package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
  247. package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
  248. package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
  249. package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +76 -0
  250. package/docs/09-troubleshooting/21-missing-tool-results-error.mdx +82 -0
  251. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
  252. package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
  253. package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
  254. package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
  255. package/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx +108 -0
  256. package/docs/09-troubleshooting/index.mdx +11 -0
  257. package/internal.d.ts +1 -0
  258. package/package.json +120 -0
  259. package/src/agent/agent.ts +156 -0
  260. package/src/agent/create-agent-ui-stream-response.ts +61 -0
  261. package/src/agent/create-agent-ui-stream.ts +84 -0
  262. package/src/agent/index.ts +37 -0
  263. package/src/agent/infer-agent-tools.ts +7 -0
  264. package/src/agent/infer-agent-ui-message.ts +11 -0
  265. package/src/agent/pipe-agent-ui-stream-to-response.ts +64 -0
  266. package/src/agent/tool-loop-agent-settings.ts +252 -0
  267. package/src/agent/tool-loop-agent.ts +205 -0
  268. package/src/embed/embed-events.ts +181 -0
  269. package/src/embed/embed-many-result.ts +53 -0
  270. package/src/embed/embed-many.ts +428 -0
  271. package/src/embed/embed-result.ts +50 -0
  272. package/src/embed/embed.ts +266 -0
  273. package/src/embed/index.ts +5 -0
  274. package/src/error/index.ts +37 -0
  275. package/src/error/invalid-argument-error.ts +34 -0
  276. package/src/error/invalid-stream-part-error.ts +28 -0
  277. package/src/error/invalid-tool-approval-error.ts +26 -0
  278. package/src/error/invalid-tool-input-error.ts +33 -0
  279. package/src/error/missing-tool-result-error.ts +28 -0
  280. package/src/error/no-image-generated-error.ts +39 -0
  281. package/src/error/no-object-generated-error.ts +70 -0
  282. package/src/error/no-output-generated-error.ts +26 -0
  283. package/src/error/no-speech-generated-error.ts +28 -0
  284. package/src/error/no-such-tool-error.ts +35 -0
  285. package/src/error/no-transcript-generated-error.ts +30 -0
  286. package/src/error/no-video-generated-error.ts +57 -0
  287. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  288. package/src/error/tool-call-repair-error.ts +30 -0
  289. package/src/error/ui-message-stream-error.ts +48 -0
  290. package/src/error/unsupported-model-version-error.ts +23 -0
  291. package/src/error/verify-no-object-generated-error.ts +27 -0
  292. package/src/generate-image/generate-image-result.ts +42 -0
  293. package/src/generate-image/generate-image.ts +361 -0
  294. package/src/generate-image/index.ts +18 -0
  295. package/src/generate-object/generate-object-result.ts +67 -0
  296. package/src/generate-object/generate-object.ts +514 -0
  297. package/src/generate-object/index.ts +9 -0
  298. package/src/generate-object/inject-json-instruction.ts +30 -0
  299. package/src/generate-object/output-strategy.ts +415 -0
  300. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  301. package/src/generate-object/repair-text.ts +12 -0
  302. package/src/generate-object/stream-object-result.ts +120 -0
  303. package/src/generate-object/stream-object.ts +984 -0
  304. package/src/generate-object/validate-object-generation-input.ts +144 -0
  305. package/src/generate-speech/generate-speech-result.ts +30 -0
  306. package/src/generate-speech/generate-speech.ts +191 -0
  307. package/src/generate-speech/generated-audio-file.ts +65 -0
  308. package/src/generate-speech/index.ts +3 -0
  309. package/src/generate-text/collect-tool-approvals.ts +116 -0
  310. package/src/generate-text/content-part.ts +31 -0
  311. package/src/generate-text/core-events.ts +390 -0
  312. package/src/generate-text/create-execute-tools-transformation.ts +144 -0
  313. package/src/generate-text/execute-tool-call.ts +190 -0
  314. package/src/generate-text/extract-reasoning-content.ts +17 -0
  315. package/src/generate-text/extract-text-content.ts +15 -0
  316. package/src/generate-text/generate-text-result.ts +168 -0
  317. package/src/generate-text/generate-text.ts +1445 -0
  318. package/src/generate-text/generated-file.ts +70 -0
  319. package/src/generate-text/index.ts +78 -0
  320. package/src/generate-text/invoke-tool-callbacks-from-stream.ts +81 -0
  321. package/src/generate-text/is-approval-needed.ts +29 -0
  322. package/src/generate-text/output-utils.ts +23 -0
  323. package/src/generate-text/output.ts +590 -0
  324. package/src/generate-text/parse-tool-call.ts +188 -0
  325. package/src/generate-text/prepare-step.ts +103 -0
  326. package/src/generate-text/prune-messages.ts +167 -0
  327. package/src/generate-text/reasoning-output.ts +99 -0
  328. package/src/generate-text/reasoning.ts +10 -0
  329. package/src/generate-text/response-message.ts +10 -0
  330. package/src/generate-text/smooth-stream.ts +162 -0
  331. package/src/generate-text/step-result.ts +310 -0
  332. package/src/generate-text/stop-condition.ts +29 -0
  333. package/src/generate-text/stream-model-call.ts +418 -0
  334. package/src/generate-text/stream-text-result.ts +536 -0
  335. package/src/generate-text/stream-text.ts +2696 -0
  336. package/src/generate-text/to-response-messages.ts +195 -0
  337. package/src/generate-text/tool-approval-request-output.ts +21 -0
  338. package/src/generate-text/tool-call-repair-function.ts +27 -0
  339. package/src/generate-text/tool-call.ts +47 -0
  340. package/src/generate-text/tool-error.ts +34 -0
  341. package/src/generate-text/tool-output-denied.ts +21 -0
  342. package/src/generate-text/tool-output.ts +7 -0
  343. package/src/generate-text/tool-result.ts +36 -0
  344. package/src/generate-text/tool-set.ts +14 -0
  345. package/src/generate-video/generate-video-result.ts +36 -0
  346. package/src/generate-video/generate-video.ts +402 -0
  347. package/src/generate-video/index.ts +3 -0
  348. package/src/global.ts +36 -0
  349. package/src/index.ts +49 -0
  350. package/src/logger/index.ts +6 -0
  351. package/src/logger/log-warnings.ts +140 -0
  352. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  353. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  354. package/src/middleware/default-settings-middleware.ts +33 -0
  355. package/src/middleware/extract-json-middleware.ts +197 -0
  356. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  357. package/src/middleware/index.ts +10 -0
  358. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  359. package/src/middleware/wrap-embedding-model.ts +89 -0
  360. package/src/middleware/wrap-image-model.ts +92 -0
  361. package/src/middleware/wrap-language-model.ts +108 -0
  362. package/src/middleware/wrap-provider.ts +51 -0
  363. package/src/model/as-embedding-model-v3.ts +24 -0
  364. package/src/model/as-embedding-model-v4.ts +25 -0
  365. package/src/model/as-image-model-v3.ts +24 -0
  366. package/src/model/as-image-model-v4.ts +21 -0
  367. package/src/model/as-language-model-v3.ts +103 -0
  368. package/src/model/as-language-model-v4.ts +25 -0
  369. package/src/model/as-provider-v3.ts +36 -0
  370. package/src/model/as-provider-v4.ts +47 -0
  371. package/src/model/as-reranking-model-v4.ts +16 -0
  372. package/src/model/as-speech-model-v3.ts +24 -0
  373. package/src/model/as-speech-model-v4.ts +21 -0
  374. package/src/model/as-transcription-model-v3.ts +24 -0
  375. package/src/model/as-transcription-model-v4.ts +25 -0
  376. package/src/model/as-video-model-v4.ts +19 -0
  377. package/src/model/resolve-model.ts +172 -0
  378. package/src/prompt/call-settings.ts +169 -0
  379. package/src/prompt/content-part.ts +236 -0
  380. package/src/prompt/convert-to-language-model-prompt.ts +548 -0
  381. package/src/prompt/create-tool-model-output.ts +34 -0
  382. package/src/prompt/data-content.ts +134 -0
  383. package/src/prompt/index.ts +27 -0
  384. package/src/prompt/invalid-data-content-error.ts +29 -0
  385. package/src/prompt/invalid-message-role-error.ts +27 -0
  386. package/src/prompt/message-conversion-error.ts +28 -0
  387. package/src/prompt/message.ts +72 -0
  388. package/src/prompt/prepare-call-settings.ts +110 -0
  389. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  390. package/src/prompt/prompt.ts +43 -0
  391. package/src/prompt/split-data-url.ts +17 -0
  392. package/src/prompt/standardize-prompt.ts +99 -0
  393. package/src/prompt/wrap-gateway-error.ts +29 -0
  394. package/src/registry/custom-provider.ts +210 -0
  395. package/src/registry/index.ts +7 -0
  396. package/src/registry/no-such-provider-error.ts +41 -0
  397. package/src/registry/provider-registry.ts +331 -0
  398. package/src/rerank/index.ts +8 -0
  399. package/src/rerank/rerank-events.ts +189 -0
  400. package/src/rerank/rerank-result.ts +70 -0
  401. package/src/rerank/rerank.ts +348 -0
  402. package/src/telemetry/assemble-operation-name.ts +21 -0
  403. package/src/telemetry/get-base-telemetry-attributes.ts +45 -0
  404. package/src/telemetry/get-global-telemetry-integration.ts +126 -0
  405. package/src/telemetry/get-tracer.ts +20 -0
  406. package/src/telemetry/index.ts +4 -0
  407. package/src/telemetry/noop-tracer.ts +69 -0
  408. package/src/telemetry/open-telemetry-integration.ts +875 -0
  409. package/src/telemetry/record-span.ts +75 -0
  410. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  411. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  412. package/src/telemetry/telemetry-integration-registry.ts +22 -0
  413. package/src/telemetry/telemetry-integration.ts +139 -0
  414. package/src/telemetry/telemetry-settings.ts +55 -0
  415. package/src/test/mock-embedding-model-v2.ts +35 -0
  416. package/src/test/mock-embedding-model-v3.ts +48 -0
  417. package/src/test/mock-embedding-model-v4.ts +48 -0
  418. package/src/test/mock-image-model-v2.ts +28 -0
  419. package/src/test/mock-image-model-v3.ts +28 -0
  420. package/src/test/mock-image-model-v4.ts +28 -0
  421. package/src/test/mock-language-model-v2.ts +72 -0
  422. package/src/test/mock-language-model-v3.ts +77 -0
  423. package/src/test/mock-language-model-v4.ts +77 -0
  424. package/src/test/mock-provider-v2.ts +68 -0
  425. package/src/test/mock-provider-v3.ts +80 -0
  426. package/src/test/mock-provider-v4.ts +80 -0
  427. package/src/test/mock-reranking-model-v3.ts +25 -0
  428. package/src/test/mock-reranking-model-v4.ts +25 -0
  429. package/src/test/mock-server-response.ts +69 -0
  430. package/src/test/mock-speech-model-v2.ts +24 -0
  431. package/src/test/mock-speech-model-v3.ts +24 -0
  432. package/src/test/mock-speech-model-v4.ts +24 -0
  433. package/src/test/mock-tracer.ts +156 -0
  434. package/src/test/mock-transcription-model-v2.ts +24 -0
  435. package/src/test/mock-transcription-model-v3.ts +24 -0
  436. package/src/test/mock-transcription-model-v4.ts +24 -0
  437. package/src/test/mock-values.ts +4 -0
  438. package/src/test/mock-video-model-v3.ts +28 -0
  439. package/src/test/mock-video-model-v4.ts +28 -0
  440. package/src/test/not-implemented.ts +3 -0
  441. package/src/text-stream/create-text-stream-response.ts +30 -0
  442. package/src/text-stream/index.ts +2 -0
  443. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  444. package/src/transcribe/index.ts +2 -0
  445. package/src/transcribe/transcribe-result.ts +60 -0
  446. package/src/transcribe/transcribe.ts +187 -0
  447. package/src/types/embedding-model-middleware.ts +15 -0
  448. package/src/types/embedding-model.ts +20 -0
  449. package/src/types/image-model-middleware.ts +15 -0
  450. package/src/types/image-model-response-metadata.ts +16 -0
  451. package/src/types/image-model.ts +19 -0
  452. package/src/types/index.ts +29 -0
  453. package/src/types/json-value.ts +15 -0
  454. package/src/types/language-model-middleware.ts +15 -0
  455. package/src/types/language-model-request-metadata.ts +6 -0
  456. package/src/types/language-model-response-metadata.ts +21 -0
  457. package/src/types/language-model.ts +106 -0
  458. package/src/types/provider-metadata.ts +16 -0
  459. package/src/types/provider.ts +55 -0
  460. package/src/types/reranking-model.ts +6 -0
  461. package/src/types/speech-model-response-metadata.ts +21 -0
  462. package/src/types/speech-model.ts +10 -0
  463. package/src/types/transcription-model-response-metadata.ts +16 -0
  464. package/src/types/transcription-model.ts +14 -0
  465. package/src/types/usage.ts +200 -0
  466. package/src/types/video-model-response-metadata.ts +28 -0
  467. package/src/types/video-model.ts +15 -0
  468. package/src/types/warning.ts +7 -0
  469. package/src/ui/call-completion-api.ts +157 -0
  470. package/src/ui/chat-transport.ts +83 -0
  471. package/src/ui/chat.ts +786 -0
  472. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  473. package/src/ui/convert-to-model-messages.ts +403 -0
  474. package/src/ui/default-chat-transport.ts +36 -0
  475. package/src/ui/direct-chat-transport.ts +117 -0
  476. package/src/ui/http-chat-transport.ts +273 -0
  477. package/src/ui/index.ts +76 -0
  478. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  479. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  480. package/src/ui/process-text-stream.ts +16 -0
  481. package/src/ui/process-ui-message-stream.ts +858 -0
  482. package/src/ui/text-stream-chat-transport.ts +23 -0
  483. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  484. package/src/ui/ui-messages.ts +602 -0
  485. package/src/ui/use-completion.ts +84 -0
  486. package/src/ui/validate-ui-messages.ts +521 -0
  487. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  488. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  489. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  490. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  491. package/src/ui-message-stream/index.ts +14 -0
  492. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  493. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  494. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  495. package/src/ui-message-stream/ui-message-chunks.ts +372 -0
  496. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  497. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  498. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  499. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  500. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  501. package/src/util/as-array.ts +3 -0
  502. package/src/util/async-iterable-stream.ts +94 -0
  503. package/src/util/consume-stream.ts +31 -0
  504. package/src/util/cosine-similarity.ts +46 -0
  505. package/src/util/create-resolvable-promise.ts +30 -0
  506. package/src/util/create-stitchable-stream.ts +112 -0
  507. package/src/util/data-url.ts +17 -0
  508. package/src/util/deep-partial.ts +84 -0
  509. package/src/util/detect-media-type.ts +226 -0
  510. package/src/util/download/create-download.ts +13 -0
  511. package/src/util/download/download-function.ts +45 -0
  512. package/src/util/download/download.ts +74 -0
  513. package/src/util/error-handler.ts +1 -0
  514. package/src/util/fix-json.ts +401 -0
  515. package/src/util/get-potential-start-index.ts +39 -0
  516. package/src/util/index.ts +12 -0
  517. package/src/util/is-deep-equal-data.ts +48 -0
  518. package/src/util/is-non-empty-object.ts +5 -0
  519. package/src/util/job.ts +1 -0
  520. package/src/util/log-v2-compatibility-warning.ts +21 -0
  521. package/src/util/merge-abort-signals.ts +43 -0
  522. package/src/util/merge-objects.ts +79 -0
  523. package/src/util/notify.ts +22 -0
  524. package/src/util/now.ts +4 -0
  525. package/src/util/parse-partial-json.ts +30 -0
  526. package/src/util/prepare-headers.ts +14 -0
  527. package/src/util/prepare-retries.ts +47 -0
  528. package/src/util/retry-error.ts +41 -0
  529. package/src/util/retry-with-exponential-backoff.ts +154 -0
  530. package/src/util/serial-job-executor.ts +36 -0
  531. package/src/util/simulate-readable-stream.ts +39 -0
  532. package/src/util/split-array.ts +20 -0
  533. package/src/util/value-of.ts +65 -0
  534. package/src/util/write-to-server-response.ts +49 -0
  535. package/src/version.ts +5 -0
  536. package/test.d.ts +1 -0
@@ -0,0 +1,16 @@
1
+ export type ImageModelResponseMetadata = {
2
+ /**
3
+ * Timestamp for the start of the generated response.
4
+ */
5
+ timestamp: Date;
6
+
7
+ /**
8
+ * The ID of the response model that was used to generate the response.
9
+ */
10
+ modelId: string;
11
+
12
+ /**
13
+ * Response headers.
14
+ */
15
+ headers?: Record<string, string>;
16
+ };
@@ -0,0 +1,19 @@
1
+ import {
2
+ ImageModelV2,
3
+ ImageModelV3,
4
+ ImageModelV4,
5
+ ImageModelV4ProviderMetadata,
6
+ ImageModelV2ProviderMetadata,
7
+ } from '@ai-sdk/provider';
8
+
9
+ /**
10
+ * Image model that is used by the AI SDK.
11
+ */
12
+ export type ImageModel = string | ImageModelV4 | ImageModelV3 | ImageModelV2;
13
+
14
+ /**
15
+ * Metadata from the model provider for this call.
16
+ */
17
+ export type ImageModelProviderMetadata =
18
+ | ImageModelV4ProviderMetadata
19
+ | ImageModelV2ProviderMetadata;
@@ -0,0 +1,29 @@
1
+ export type { JSONSchema7 } from '@ai-sdk/provider';
2
+ export type { Embedding, EmbeddingModel } from './embedding-model';
3
+ export type { EmbeddingModelMiddleware } from './embedding-model-middleware';
4
+ export type { ImageModel, ImageModelProviderMetadata } from './image-model';
5
+ export type { ImageModelMiddleware } from './image-model-middleware';
6
+ export type { ImageModelResponseMetadata } from './image-model-response-metadata';
7
+ export type { JSONValue } from './json-value';
8
+ export type {
9
+ CallWarning,
10
+ FinishReason,
11
+ LanguageModel,
12
+ ToolChoice,
13
+ } from './language-model';
14
+ export type { LanguageModelMiddleware } from './language-model-middleware';
15
+ export type { LanguageModelRequestMetadata } from './language-model-request-metadata';
16
+ export type { LanguageModelResponseMetadata } from './language-model-response-metadata';
17
+ export type { Provider } from './provider';
18
+ export type { ProviderMetadata } from './provider-metadata';
19
+ export type { RerankingModel } from './reranking-model';
20
+ export type { SpeechModel } from './speech-model';
21
+ export type { SpeechModelResponseMetadata } from './speech-model-response-metadata';
22
+ export type { TranscriptionModel } from './transcription-model';
23
+ export type { TranscriptionModelResponseMetadata } from './transcription-model-response-metadata';
24
+ export type {
25
+ EmbeddingModelUsage,
26
+ ImageModelUsage,
27
+ LanguageModelUsage,
28
+ } from './usage';
29
+ export type { Warning } from './warning';
@@ -0,0 +1,15 @@
1
+ import { JSONValue as OriginalJSONValue } from '@ai-sdk/provider';
2
+ import { z } from 'zod/v4';
3
+
4
+ export const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>
5
+ z.union([
6
+ z.null(),
7
+ z.string(),
8
+ z.number(),
9
+ z.boolean(),
10
+ z.record(z.string(), jsonValueSchema.optional()),
11
+ z.array(jsonValueSchema),
12
+ ]),
13
+ );
14
+
15
+ export type JSONValue = OriginalJSONValue;
@@ -0,0 +1,15 @@
1
+ import { LanguageModelV4Middleware } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Middleware for language models.
5
+ * Accepts both V3 and V4 middleware types for backward compatibility.
6
+ *
7
+ * Uses LanguageModelV4Middleware as the base but relaxes specificationVersion
8
+ * to accept any string (including 'v3') and makes it optional.
9
+ */
10
+ export type LanguageModelMiddleware = Omit<
11
+ LanguageModelV4Middleware,
12
+ 'specificationVersion'
13
+ > & {
14
+ readonly specificationVersion?: string;
15
+ };
@@ -0,0 +1,6 @@
1
+ export type LanguageModelRequestMetadata = {
2
+ /**
3
+ * Request HTTP body that was sent to the provider API.
4
+ */
5
+ body?: unknown;
6
+ };
@@ -0,0 +1,21 @@
1
+ export type LanguageModelResponseMetadata = {
2
+ /**
3
+ * ID for the generated response.
4
+ */
5
+ id: string;
6
+
7
+ /**
8
+ * Timestamp for the start of the generated response.
9
+ */
10
+ timestamp: Date;
11
+
12
+ /**
13
+ * The ID of the response model that was used to generate the response.
14
+ */
15
+ modelId: string;
16
+
17
+ /**
18
+ * Response headers (available only for providers that use HTTP requests).
19
+ */
20
+ headers?: Record<string, string>;
21
+ };
@@ -0,0 +1,106 @@
1
+ import { GatewayModelId } from '@ai-sdk/gateway';
2
+ import {
3
+ LanguageModelV2,
4
+ LanguageModelV3,
5
+ LanguageModelV4,
6
+ SharedV4Warning,
7
+ LanguageModelV4Source,
8
+ } from '@ai-sdk/provider';
9
+
10
+ declare global {
11
+ /**
12
+ * Global interface that can be augmented by third-party packages to register custom model IDs.
13
+ *
14
+ * You can register model IDs in two ways:
15
+ *
16
+ * 1. Register based on Model IDs from a provider package:
17
+ * @example
18
+ * ```typescript
19
+ * import { openai } from '@ai-sdk/openai';
20
+ * type OpenAIResponsesModelId = Parameters<typeof openai>[0];
21
+ *
22
+ * declare global {
23
+ * interface RegisteredProviderModels {
24
+ * openai: OpenAIResponsesModelId;
25
+ * }
26
+ * }
27
+ * ```
28
+ *
29
+ * 2. Register individual model IDs directly as keys:
30
+ * @example
31
+ * ```typescript
32
+ * declare global {
33
+ * interface RegisteredProviderModels {
34
+ * 'my-provider:my-model': any;
35
+ * 'my-provider:another-model': any;
36
+ * }
37
+ * }
38
+ * ```
39
+ */
40
+ interface RegisteredProviderModels {}
41
+ }
42
+
43
+ /**
44
+ * Global provider model ID type that defaults to GatewayModelId but can be augmented
45
+ * by third-party packages via declaration merging.
46
+ */
47
+ export type GlobalProviderModelId = [keyof RegisteredProviderModels] extends [
48
+ never,
49
+ ]
50
+ ? GatewayModelId
51
+ :
52
+ | keyof RegisteredProviderModels
53
+ | RegisteredProviderModels[keyof RegisteredProviderModels];
54
+
55
+ /**
56
+ * Language model that is used by the AI SDK.
57
+ */
58
+ export type LanguageModel =
59
+ | GlobalProviderModelId
60
+ | LanguageModelV4
61
+ | LanguageModelV3
62
+ | LanguageModelV2;
63
+
64
+ /**
65
+ * Reason why a language model finished generating a response.
66
+ *
67
+ * Can be one of the following:
68
+ * - `stop`: model generated stop sequence
69
+ * - `length`: model generated maximum number of tokens
70
+ * - `content-filter`: content filter violation stopped the model
71
+ * - `tool-calls`: model triggered tool calls
72
+ * - `error`: model stopped because of an error
73
+ * - `other`: model stopped for other reasons
74
+ */
75
+ export type FinishReason =
76
+ | 'stop'
77
+ | 'length'
78
+ | 'content-filter'
79
+ | 'tool-calls'
80
+ | 'error'
81
+ | 'other';
82
+
83
+ /**
84
+ * Warning from the model provider for this call. The call will proceed, but e.g.
85
+ * some settings might not be supported, which can lead to suboptimal results.
86
+ */
87
+ export type CallWarning = SharedV4Warning;
88
+
89
+ /**
90
+ * A source that has been used as input to generate the response.
91
+ */
92
+ export type Source = LanguageModelV4Source;
93
+
94
+ /**
95
+ * Tool choice for the generation. It supports the following settings:
96
+ *
97
+ * - `auto` (default): the model can choose whether and which tools to call.
98
+ * - `required`: the model must call a tool. It can choose which tool to call.
99
+ * - `none`: the model must not call tools
100
+ * - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool
101
+ */
102
+ export type ToolChoice<TOOLS extends Record<string, unknown>> =
103
+ | 'auto'
104
+ | 'none'
105
+ | 'required'
106
+ | { type: 'tool'; toolName: Extract<keyof TOOLS, string> };
@@ -0,0 +1,16 @@
1
+ import { SharedV4ProviderMetadata } from '@ai-sdk/provider';
2
+ import { z } from 'zod/v4';
3
+ import { jsonValueSchema } from './json-value';
4
+
5
+ /**
6
+ * Additional provider-specific metadata that is returned from the provider.
7
+ *
8
+ * This is needed to enable provider-specific functionality that can be
9
+ * fully encapsulated in the provider.
10
+ */
11
+ export type ProviderMetadata = SharedV4ProviderMetadata;
12
+
13
+ export const providerMetadataSchema: z.ZodType<ProviderMetadata> = z.record(
14
+ z.string(),
15
+ z.record(z.string(), jsonValueSchema.optional()),
16
+ );
@@ -0,0 +1,55 @@
1
+ import { EmbeddingModel } from './embedding-model';
2
+ import { LanguageModel } from './language-model';
3
+ import { ImageModel } from './image-model';
4
+ import { RerankingModel } from './reranking-model';
5
+
6
+ /**
7
+ * Provider for language, text embedding, and image models.
8
+ */
9
+ export type Provider = {
10
+ /**
11
+ * Returns the language model with the given id.
12
+ * The model id is then passed to the provider function to get the model.
13
+ *
14
+ * @param {string} modelId - The id of the model to return.
15
+ *
16
+ * @returns {LanguageModel} The language model associated with the id
17
+ *
18
+ * @throws {NoSuchModelError} If no such model exists.
19
+ */
20
+ languageModel(modelId: string): LanguageModel;
21
+
22
+ /**
23
+ * Returns the text embedding model with the given id.
24
+ * The model id is then passed to the provider function to get the model.
25
+ *
26
+ * @param {string} modelId - The id of the model to return.
27
+ *
28
+ * @returns {EmbeddingModel} The embedding model associated with the id
29
+ *
30
+ * @throws {NoSuchModelError} If no such model exists.
31
+ */
32
+ embeddingModel(modelId: string): EmbeddingModel;
33
+
34
+ /**
35
+ * Returns the image model with the given id.
36
+ * The model id is then passed to the provider function to get the model.
37
+ *
38
+ * @param {string} modelId - The id of the model to return.
39
+ *
40
+ * @returns {ImageModel} The image model associated with the id
41
+ */
42
+ imageModel(modelId: string): ImageModel;
43
+
44
+ /**
45
+ * Returns the reranking model with the given id.
46
+ * The model id is then passed to the provider function to get the model.
47
+ *
48
+ * @param {string} modelId - The id of the model to return.
49
+ *
50
+ * @returns {RerankingModel} The reranking model associated with the id
51
+ *
52
+ * @throws {NoSuchModelError} If no such model exists.
53
+ */
54
+ rerankingModel(modelId: string): RerankingModel;
55
+ };
@@ -0,0 +1,6 @@
1
+ import { RerankingModelV3, RerankingModelV4 } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Reranking model that is used by the AI SDK.
5
+ */
6
+ export type RerankingModel = RerankingModelV4 | RerankingModelV3;
@@ -0,0 +1,21 @@
1
+ export type SpeechModelResponseMetadata = {
2
+ /**
3
+ * Timestamp for the start of the generated response.
4
+ */
5
+ timestamp: Date;
6
+
7
+ /**
8
+ * The ID of the response model that was used to generate the response.
9
+ */
10
+ modelId: string;
11
+
12
+ /**
13
+ * Response headers.
14
+ */
15
+ headers?: Record<string, string>;
16
+
17
+ /**
18
+ * Response body.
19
+ */
20
+ body?: unknown;
21
+ };
@@ -0,0 +1,10 @@
1
+ import { SpeechModelV2, SpeechModelV3, SpeechModelV4 } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Speech model that is used by the AI SDK.
5
+ */
6
+ export type SpeechModel =
7
+ | string
8
+ | SpeechModelV4
9
+ | SpeechModelV3
10
+ | SpeechModelV2;
@@ -0,0 +1,16 @@
1
+ export type TranscriptionModelResponseMetadata = {
2
+ /**
3
+ * Timestamp for the start of the generated response.
4
+ */
5
+ timestamp: Date;
6
+
7
+ /**
8
+ * The ID of the response model that was used to generate the response.
9
+ */
10
+ modelId: string;
11
+
12
+ /**
13
+ * Response headers.
14
+ */
15
+ headers?: Record<string, string>;
16
+ };
@@ -0,0 +1,14 @@
1
+ import {
2
+ TranscriptionModelV2,
3
+ TranscriptionModelV3,
4
+ TranscriptionModelV4,
5
+ } from '@ai-sdk/provider';
6
+
7
+ /**
8
+ * Transcription model that is used by the AI SDK.
9
+ */
10
+ export type TranscriptionModel =
11
+ | string
12
+ | TranscriptionModelV4
13
+ | TranscriptionModelV3
14
+ | TranscriptionModelV2;
@@ -0,0 +1,200 @@
1
+ import {
2
+ ImageModelV4Usage,
3
+ JSONObject,
4
+ LanguageModelV4Usage,
5
+ } from '@ai-sdk/provider';
6
+
7
+ /**
8
+ * Represents the number of tokens used in a prompt and completion.
9
+ */
10
+ export type LanguageModelUsage = {
11
+ /**
12
+ * The total number of input (prompt) tokens used.
13
+ */
14
+ inputTokens: number | undefined;
15
+
16
+ /**
17
+ * Detailed information about the input tokens.
18
+ */
19
+ inputTokenDetails: {
20
+ /**
21
+ * The number of non-cached input (prompt) tokens used.
22
+ */
23
+ noCacheTokens: number | undefined;
24
+
25
+ /**
26
+ * The number of cached input (prompt) tokens read.
27
+ */
28
+ cacheReadTokens: number | undefined;
29
+
30
+ /**
31
+ * The number of cached input (prompt) tokens written.
32
+ */
33
+ cacheWriteTokens: number | undefined;
34
+ };
35
+
36
+ /**
37
+ * The number of total output (completion) tokens used.
38
+ */
39
+ outputTokens: number | undefined;
40
+
41
+ /**
42
+ * Detailed information about the output tokens.
43
+ */
44
+ outputTokenDetails: {
45
+ /**
46
+ * The number of text tokens used.
47
+ */
48
+ textTokens: number | undefined;
49
+
50
+ /**
51
+ * The number of reasoning tokens used.
52
+ */
53
+ reasoningTokens: number | undefined;
54
+ };
55
+
56
+ /**
57
+ * The total number of tokens used.
58
+ */
59
+ totalTokens: number | undefined;
60
+
61
+ /**
62
+ * @deprecated Use outputTokenDetails.reasoningTokens instead.
63
+ */
64
+ reasoningTokens?: number | undefined;
65
+
66
+ /**
67
+ * @deprecated Use inputTokenDetails.cacheReadTokens instead.
68
+ */
69
+ cachedInputTokens?: number | undefined;
70
+
71
+ /**
72
+ * Raw usage information from the provider.
73
+ *
74
+ * This is the usage information in the shape that the provider returns.
75
+ * It can include additional information that is not part of the standard usage information.
76
+ */
77
+ raw?: JSONObject;
78
+ };
79
+
80
+ /**
81
+ * Represents the number of tokens used in an embedding.
82
+ */
83
+ // TODO replace with EmbeddingModelV4Usage once available in @ai-sdk/provider
84
+ export type EmbeddingModelUsage = {
85
+ /**
86
+ * The number of tokens used in the embedding.
87
+ */
88
+ tokens: number;
89
+ };
90
+
91
+ export function asLanguageModelUsage(
92
+ usage: LanguageModelV4Usage,
93
+ ): LanguageModelUsage {
94
+ return {
95
+ inputTokens: usage.inputTokens.total,
96
+ inputTokenDetails: {
97
+ noCacheTokens: usage.inputTokens.noCache,
98
+ cacheReadTokens: usage.inputTokens.cacheRead,
99
+ cacheWriteTokens: usage.inputTokens.cacheWrite,
100
+ },
101
+ outputTokens: usage.outputTokens.total,
102
+ outputTokenDetails: {
103
+ textTokens: usage.outputTokens.text,
104
+ reasoningTokens: usage.outputTokens.reasoning,
105
+ },
106
+ totalTokens: addTokenCounts(
107
+ usage.inputTokens.total,
108
+ usage.outputTokens.total,
109
+ ),
110
+ raw: usage.raw,
111
+ reasoningTokens: usage.outputTokens.reasoning,
112
+ cachedInputTokens: usage.inputTokens.cacheRead,
113
+ };
114
+ }
115
+
116
+ export function createNullLanguageModelUsage(): LanguageModelUsage {
117
+ return {
118
+ inputTokens: undefined,
119
+ inputTokenDetails: {
120
+ noCacheTokens: undefined,
121
+ cacheReadTokens: undefined,
122
+ cacheWriteTokens: undefined,
123
+ },
124
+ outputTokens: undefined,
125
+ outputTokenDetails: {
126
+ textTokens: undefined,
127
+ reasoningTokens: undefined,
128
+ },
129
+ totalTokens: undefined,
130
+ raw: undefined,
131
+ };
132
+ }
133
+
134
+ export function addLanguageModelUsage(
135
+ usage1: LanguageModelUsage,
136
+ usage2: LanguageModelUsage,
137
+ ): LanguageModelUsage {
138
+ return {
139
+ inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
140
+ inputTokenDetails: {
141
+ noCacheTokens: addTokenCounts(
142
+ usage1.inputTokenDetails?.noCacheTokens,
143
+ usage2.inputTokenDetails?.noCacheTokens,
144
+ ),
145
+ cacheReadTokens: addTokenCounts(
146
+ usage1.inputTokenDetails?.cacheReadTokens,
147
+ usage2.inputTokenDetails?.cacheReadTokens,
148
+ ),
149
+ cacheWriteTokens: addTokenCounts(
150
+ usage1.inputTokenDetails?.cacheWriteTokens,
151
+ usage2.inputTokenDetails?.cacheWriteTokens,
152
+ ),
153
+ },
154
+ outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
155
+ outputTokenDetails: {
156
+ textTokens: addTokenCounts(
157
+ usage1.outputTokenDetails?.textTokens,
158
+ usage2.outputTokenDetails?.textTokens,
159
+ ),
160
+ reasoningTokens: addTokenCounts(
161
+ usage1.outputTokenDetails?.reasoningTokens,
162
+ usage2.outputTokenDetails?.reasoningTokens,
163
+ ),
164
+ },
165
+ totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
166
+ reasoningTokens: addTokenCounts(
167
+ usage1.reasoningTokens,
168
+ usage2.reasoningTokens,
169
+ ),
170
+ cachedInputTokens: addTokenCounts(
171
+ usage1.cachedInputTokens,
172
+ usage2.cachedInputTokens,
173
+ ),
174
+ };
175
+ }
176
+
177
+ function addTokenCounts(
178
+ tokenCount1: number | undefined,
179
+ tokenCount2: number | undefined,
180
+ ): number | undefined {
181
+ return tokenCount1 == null && tokenCount2 == null
182
+ ? undefined
183
+ : (tokenCount1 ?? 0) + (tokenCount2 ?? 0);
184
+ }
185
+
186
+ /**
187
+ * Usage information for an image model call.
188
+ */
189
+ export type ImageModelUsage = ImageModelV4Usage;
190
+
191
+ export function addImageModelUsage(
192
+ usage1: ImageModelUsage,
193
+ usage2: ImageModelUsage,
194
+ ): ImageModelUsage {
195
+ return {
196
+ inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
197
+ outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
198
+ totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
199
+ };
200
+ }
@@ -0,0 +1,28 @@
1
+ import type { SharedV4ProviderMetadata } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Response metadata for a video model call.
5
+ */
6
+ export type VideoModelResponseMetadata = {
7
+ /**
8
+ * Timestamp for the start of the generated response.
9
+ */
10
+ timestamp: Date;
11
+
12
+ /**
13
+ * The ID of the response model that was used to generate the response.
14
+ */
15
+ modelId: string;
16
+
17
+ /**
18
+ * Response headers.
19
+ */
20
+ headers?: Record<string, string>;
21
+
22
+ /**
23
+ * Provider-specific metadata for this call.
24
+ * When multiple calls are made (n > maxVideosPerCall), each response
25
+ * contains its own providerMetadata, allowing lossless per-call access.
26
+ */
27
+ providerMetadata?: SharedV4ProviderMetadata;
28
+ };
@@ -0,0 +1,15 @@
1
+ import {
2
+ Experimental_VideoModelV3,
3
+ Experimental_VideoModelV4,
4
+ SharedV4ProviderMetadata,
5
+ } from '@ai-sdk/provider';
6
+
7
+ /**
8
+ * A video model can be a string (model ID) or a video model object.
9
+ */
10
+ export type VideoModel =
11
+ | string
12
+ | Experimental_VideoModelV4
13
+ | Experimental_VideoModelV3;
14
+
15
+ export type VideoModelProviderMetadata = SharedV4ProviderMetadata;
@@ -0,0 +1,7 @@
1
+ import { SharedV4Warning } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Warning from the model provider for this call. The call will proceed, but e.g.
5
+ * some settings might not be supported, which can lead to suboptimal results.
6
+ */
7
+ export type Warning = SharedV4Warning;