@fairyhunter13/ai-sdk 6.0.116-fork.1

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 (534) hide show
  1. package/CHANGELOG.md +7582 -0
  2. package/README.md +238 -0
  3. package/dist/index.d.mts +6751 -0
  4. package/dist/index.d.ts +6751 -0
  5. package/dist/index.js +14155 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +14127 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/internal/index.d.mts +324 -0
  10. package/dist/internal/index.d.ts +324 -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 +158 -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 +1144 -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 +246 -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 +1118 -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 +535 -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 +309 -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 +244 -0
  267. package/src/agent/tool-loop-agent.ts +205 -0
  268. package/src/embed/embed-events.ts +109 -0
  269. package/src/embed/embed-many-result.ts +53 -0
  270. package/src/embed/embed-many.ts +484 -0
  271. package/src/embed/embed-result.ts +50 -0
  272. package/src/embed/embed.ts +294 -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 +168 -0
  313. package/src/generate-text/create-stream-text-part-transform.ts +229 -0
  314. package/src/generate-text/execute-tool-call.ts +190 -0
  315. package/src/generate-text/extract-reasoning-content.ts +17 -0
  316. package/src/generate-text/extract-text-content.ts +15 -0
  317. package/src/generate-text/generate-text-result.ts +168 -0
  318. package/src/generate-text/generate-text.ts +1411 -0
  319. package/src/generate-text/generated-file.ts +70 -0
  320. package/src/generate-text/index.ts +74 -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-text-result.ts +536 -0
  334. package/src/generate-text/stream-text.ts +2693 -0
  335. package/src/generate-text/to-response-messages.ts +178 -0
  336. package/src/generate-text/tool-approval-request-output.ts +21 -0
  337. package/src/generate-text/tool-call-repair-function.ts +27 -0
  338. package/src/generate-text/tool-call.ts +47 -0
  339. package/src/generate-text/tool-error.ts +34 -0
  340. package/src/generate-text/tool-output-denied.ts +21 -0
  341. package/src/generate-text/tool-output.ts +7 -0
  342. package/src/generate-text/tool-result.ts +36 -0
  343. package/src/generate-text/tool-set.ts +14 -0
  344. package/src/generate-video/generate-video-result.ts +36 -0
  345. package/src/generate-video/generate-video.ts +402 -0
  346. package/src/generate-video/index.ts +3 -0
  347. package/src/global.ts +36 -0
  348. package/src/index.ts +49 -0
  349. package/src/logger/index.ts +6 -0
  350. package/src/logger/log-warnings.ts +140 -0
  351. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  352. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  353. package/src/middleware/default-settings-middleware.ts +33 -0
  354. package/src/middleware/extract-json-middleware.ts +197 -0
  355. package/src/middleware/extract-reasoning-middleware.ts +249 -0
  356. package/src/middleware/index.ts +10 -0
  357. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  358. package/src/middleware/wrap-embedding-model.ts +89 -0
  359. package/src/middleware/wrap-image-model.ts +92 -0
  360. package/src/middleware/wrap-language-model.ts +108 -0
  361. package/src/middleware/wrap-provider.ts +51 -0
  362. package/src/model/as-embedding-model-v3.ts +24 -0
  363. package/src/model/as-embedding-model-v4.ts +25 -0
  364. package/src/model/as-image-model-v3.ts +24 -0
  365. package/src/model/as-image-model-v4.ts +21 -0
  366. package/src/model/as-language-model-v3.ts +103 -0
  367. package/src/model/as-language-model-v4.ts +25 -0
  368. package/src/model/as-provider-v3.ts +36 -0
  369. package/src/model/as-provider-v4.ts +47 -0
  370. package/src/model/as-reranking-model-v4.ts +16 -0
  371. package/src/model/as-speech-model-v3.ts +24 -0
  372. package/src/model/as-speech-model-v4.ts +21 -0
  373. package/src/model/as-transcription-model-v3.ts +24 -0
  374. package/src/model/as-transcription-model-v4.ts +25 -0
  375. package/src/model/as-video-model-v4.ts +19 -0
  376. package/src/model/resolve-model.ts +172 -0
  377. package/src/prompt/call-settings.ts +177 -0
  378. package/src/prompt/content-part.ts +236 -0
  379. package/src/prompt/convert-to-language-model-prompt.ts +548 -0
  380. package/src/prompt/create-tool-model-output.ts +34 -0
  381. package/src/prompt/data-content.ts +134 -0
  382. package/src/prompt/index.ts +27 -0
  383. package/src/prompt/invalid-data-content-error.ts +29 -0
  384. package/src/prompt/invalid-message-role-error.ts +27 -0
  385. package/src/prompt/message-conversion-error.ts +28 -0
  386. package/src/prompt/message.ts +72 -0
  387. package/src/prompt/prepare-call-settings.ts +110 -0
  388. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  389. package/src/prompt/prompt.ts +43 -0
  390. package/src/prompt/split-data-url.ts +17 -0
  391. package/src/prompt/standardize-prompt.ts +99 -0
  392. package/src/prompt/wrap-gateway-error.ts +29 -0
  393. package/src/registry/custom-provider.ts +210 -0
  394. package/src/registry/index.ts +7 -0
  395. package/src/registry/no-such-provider-error.ts +41 -0
  396. package/src/registry/provider-registry.ts +331 -0
  397. package/src/rerank/index.ts +2 -0
  398. package/src/rerank/rerank-result.ts +70 -0
  399. package/src/rerank/rerank.ts +239 -0
  400. package/src/telemetry/assemble-operation-name.ts +21 -0
  401. package/src/telemetry/get-base-telemetry-attributes.ts +55 -0
  402. package/src/telemetry/get-global-telemetry-integration.ts +110 -0
  403. package/src/telemetry/get-tracer.ts +20 -0
  404. package/src/telemetry/index.ts +4 -0
  405. package/src/telemetry/noop-tracer.ts +69 -0
  406. package/src/telemetry/open-telemetry-integration.ts +537 -0
  407. package/src/telemetry/record-span.ts +75 -0
  408. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  409. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  410. package/src/telemetry/telemetry-integration-registry.ts +22 -0
  411. package/src/telemetry/telemetry-integration.ts +100 -0
  412. package/src/telemetry/telemetry-settings.ts +55 -0
  413. package/src/test/mock-embedding-model-v2.ts +35 -0
  414. package/src/test/mock-embedding-model-v3.ts +48 -0
  415. package/src/test/mock-embedding-model-v4.ts +48 -0
  416. package/src/test/mock-image-model-v2.ts +28 -0
  417. package/src/test/mock-image-model-v3.ts +28 -0
  418. package/src/test/mock-image-model-v4.ts +28 -0
  419. package/src/test/mock-language-model-v2.ts +72 -0
  420. package/src/test/mock-language-model-v3.ts +77 -0
  421. package/src/test/mock-language-model-v4.ts +77 -0
  422. package/src/test/mock-provider-v2.ts +68 -0
  423. package/src/test/mock-provider-v3.ts +80 -0
  424. package/src/test/mock-provider-v4.ts +80 -0
  425. package/src/test/mock-reranking-model-v3.ts +25 -0
  426. package/src/test/mock-reranking-model-v4.ts +25 -0
  427. package/src/test/mock-server-response.ts +69 -0
  428. package/src/test/mock-speech-model-v2.ts +24 -0
  429. package/src/test/mock-speech-model-v3.ts +24 -0
  430. package/src/test/mock-speech-model-v4.ts +24 -0
  431. package/src/test/mock-tracer.ts +156 -0
  432. package/src/test/mock-transcription-model-v2.ts +24 -0
  433. package/src/test/mock-transcription-model-v3.ts +24 -0
  434. package/src/test/mock-transcription-model-v4.ts +24 -0
  435. package/src/test/mock-values.ts +4 -0
  436. package/src/test/mock-video-model-v3.ts +28 -0
  437. package/src/test/mock-video-model-v4.ts +28 -0
  438. package/src/test/not-implemented.ts +3 -0
  439. package/src/text-stream/create-text-stream-response.ts +30 -0
  440. package/src/text-stream/index.ts +2 -0
  441. package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
  442. package/src/transcribe/index.ts +2 -0
  443. package/src/transcribe/transcribe-result.ts +60 -0
  444. package/src/transcribe/transcribe.ts +187 -0
  445. package/src/types/embedding-model-middleware.ts +15 -0
  446. package/src/types/embedding-model.ts +20 -0
  447. package/src/types/image-model-middleware.ts +15 -0
  448. package/src/types/image-model-response-metadata.ts +16 -0
  449. package/src/types/image-model.ts +19 -0
  450. package/src/types/index.ts +29 -0
  451. package/src/types/json-value.ts +15 -0
  452. package/src/types/language-model-middleware.ts +15 -0
  453. package/src/types/language-model-request-metadata.ts +6 -0
  454. package/src/types/language-model-response-metadata.ts +21 -0
  455. package/src/types/language-model.ts +106 -0
  456. package/src/types/provider-metadata.ts +16 -0
  457. package/src/types/provider.ts +55 -0
  458. package/src/types/reranking-model.ts +6 -0
  459. package/src/types/speech-model-response-metadata.ts +21 -0
  460. package/src/types/speech-model.ts +10 -0
  461. package/src/types/transcription-model-response-metadata.ts +16 -0
  462. package/src/types/transcription-model.ts +14 -0
  463. package/src/types/usage.ts +200 -0
  464. package/src/types/video-model-response-metadata.ts +28 -0
  465. package/src/types/video-model.ts +15 -0
  466. package/src/types/warning.ts +7 -0
  467. package/src/ui/call-completion-api.ts +157 -0
  468. package/src/ui/chat-transport.ts +83 -0
  469. package/src/ui/chat.ts +786 -0
  470. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  471. package/src/ui/convert-to-model-messages.ts +403 -0
  472. package/src/ui/default-chat-transport.ts +36 -0
  473. package/src/ui/direct-chat-transport.ts +117 -0
  474. package/src/ui/http-chat-transport.ts +273 -0
  475. package/src/ui/index.ts +76 -0
  476. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  477. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  478. package/src/ui/process-text-stream.ts +16 -0
  479. package/src/ui/process-ui-message-stream.ts +858 -0
  480. package/src/ui/text-stream-chat-transport.ts +23 -0
  481. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  482. package/src/ui/ui-messages.ts +602 -0
  483. package/src/ui/use-completion.ts +84 -0
  484. package/src/ui/validate-ui-messages.ts +521 -0
  485. package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
  486. package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
  487. package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
  488. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
  489. package/src/ui-message-stream/index.ts +14 -0
  490. package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
  491. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
  492. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  493. package/src/ui-message-stream/ui-message-chunks.ts +372 -0
  494. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  495. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  496. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
  497. package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
  498. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  499. package/src/util/as-array.ts +3 -0
  500. package/src/util/async-iterable-stream.ts +94 -0
  501. package/src/util/consume-stream.ts +31 -0
  502. package/src/util/cosine-similarity.ts +46 -0
  503. package/src/util/create-resolvable-promise.ts +30 -0
  504. package/src/util/create-stitchable-stream.ts +112 -0
  505. package/src/util/data-url.ts +17 -0
  506. package/src/util/deep-partial.ts +84 -0
  507. package/src/util/detect-media-type.ts +226 -0
  508. package/src/util/download/create-download.ts +13 -0
  509. package/src/util/download/download-function.ts +45 -0
  510. package/src/util/download/download.ts +74 -0
  511. package/src/util/error-handler.ts +1 -0
  512. package/src/util/fix-json.ts +401 -0
  513. package/src/util/get-potential-start-index.ts +39 -0
  514. package/src/util/index.ts +12 -0
  515. package/src/util/is-deep-equal-data.ts +48 -0
  516. package/src/util/is-non-empty-object.ts +5 -0
  517. package/src/util/job.ts +1 -0
  518. package/src/util/log-v2-compatibility-warning.ts +21 -0
  519. package/src/util/merge-abort-signals.ts +43 -0
  520. package/src/util/merge-objects.ts +79 -0
  521. package/src/util/notify.ts +22 -0
  522. package/src/util/now.ts +4 -0
  523. package/src/util/parse-partial-json.ts +30 -0
  524. package/src/util/prepare-headers.ts +14 -0
  525. package/src/util/prepare-retries.ts +47 -0
  526. package/src/util/retry-error.ts +41 -0
  527. package/src/util/retry-with-exponential-backoff.ts +154 -0
  528. package/src/util/serial-job-executor.ts +36 -0
  529. package/src/util/simulate-readable-stream.ts +39 -0
  530. package/src/util/split-array.ts +20 -0
  531. package/src/util/value-of.ts +65 -0
  532. package/src/util/write-to-server-response.ts +49 -0
  533. package/src/version.ts +5 -0
  534. package/test.d.ts +1 -0
@@ -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;
@@ -0,0 +1,157 @@
1
+ import {
2
+ parseJsonEventStream,
3
+ ParseResult,
4
+ withUserAgentSuffix,
5
+ getRuntimeEnvironmentUserAgent,
6
+ } from '@ai-sdk/provider-utils';
7
+ import {
8
+ UIMessageChunk,
9
+ uiMessageChunkSchema,
10
+ } from '../ui-message-stream/ui-message-chunks';
11
+ import { consumeStream } from '../util/consume-stream';
12
+ import { processTextStream } from './process-text-stream';
13
+ import { VERSION } from '../version';
14
+
15
+ // use function to allow for mocking in tests:
16
+ const getOriginalFetch = () => fetch;
17
+
18
+ export async function callCompletionApi({
19
+ api,
20
+ prompt,
21
+ credentials,
22
+ headers,
23
+ body,
24
+ streamProtocol = 'data',
25
+ setCompletion,
26
+ setLoading,
27
+ setError,
28
+ setAbortController,
29
+ onFinish,
30
+ onError,
31
+ fetch = getOriginalFetch(),
32
+ }: {
33
+ api: string;
34
+ prompt: string;
35
+ credentials: RequestCredentials | undefined;
36
+ headers: HeadersInit | undefined;
37
+ body: Record<string, any>;
38
+ streamProtocol: 'data' | 'text' | undefined;
39
+ setCompletion: (completion: string) => void;
40
+ setLoading: (loading: boolean) => void;
41
+ setError: (error: Error | undefined) => void;
42
+ setAbortController: (abortController: AbortController | null) => void;
43
+ onFinish: ((prompt: string, completion: string) => void) | undefined;
44
+ onError: ((error: Error) => void) | undefined;
45
+ fetch: ReturnType<typeof getOriginalFetch> | undefined;
46
+ }) {
47
+ try {
48
+ setLoading(true);
49
+ setError(undefined);
50
+
51
+ const abortController = new AbortController();
52
+ setAbortController(abortController);
53
+
54
+ // Empty the completion immediately.
55
+ setCompletion('');
56
+
57
+ const response = await fetch(api, {
58
+ method: 'POST',
59
+ body: JSON.stringify({
60
+ prompt,
61
+ ...body,
62
+ }),
63
+ credentials,
64
+ headers: withUserAgentSuffix(
65
+ {
66
+ 'Content-Type': 'application/json',
67
+ ...headers,
68
+ },
69
+ `ai-sdk/${VERSION}`,
70
+ getRuntimeEnvironmentUserAgent(),
71
+ ),
72
+ signal: abortController.signal,
73
+ }).catch(err => {
74
+ throw err;
75
+ });
76
+
77
+ if (!response.ok) {
78
+ throw new Error(
79
+ (await response.text()) ?? 'Failed to fetch the chat response.',
80
+ );
81
+ }
82
+
83
+ if (!response.body) {
84
+ throw new Error('The response body is empty.');
85
+ }
86
+
87
+ let result = '';
88
+
89
+ switch (streamProtocol) {
90
+ case 'text': {
91
+ await processTextStream({
92
+ stream: response.body,
93
+ onTextPart: chunk => {
94
+ result += chunk;
95
+ setCompletion(result);
96
+ },
97
+ });
98
+ break;
99
+ }
100
+ case 'data': {
101
+ await consumeStream({
102
+ stream: parseJsonEventStream({
103
+ stream: response.body,
104
+ schema: uiMessageChunkSchema,
105
+ }).pipeThrough(
106
+ new TransformStream<ParseResult<UIMessageChunk>, UIMessageChunk>({
107
+ async transform(part) {
108
+ if (!part.success) {
109
+ throw part.error;
110
+ }
111
+
112
+ const streamPart = part.value;
113
+ if (streamPart.type === 'text-delta') {
114
+ result += streamPart.delta;
115
+ setCompletion(result);
116
+ } else if (streamPart.type === 'error') {
117
+ throw new Error(streamPart.errorText);
118
+ }
119
+ },
120
+ }),
121
+ ),
122
+ onError: error => {
123
+ throw error;
124
+ },
125
+ });
126
+ break;
127
+ }
128
+ default: {
129
+ const exhaustiveCheck: never = streamProtocol;
130
+ throw new Error(`Unknown stream protocol: ${exhaustiveCheck}`);
131
+ }
132
+ }
133
+
134
+ if (onFinish) {
135
+ onFinish(prompt, result);
136
+ }
137
+
138
+ setAbortController(null);
139
+ return result;
140
+ } catch (err) {
141
+ // Ignore abort errors as they are expected.
142
+ if ((err as any).name === 'AbortError') {
143
+ setAbortController(null);
144
+ return null;
145
+ }
146
+
147
+ if (err instanceof Error) {
148
+ if (onError) {
149
+ onError(err);
150
+ }
151
+ }
152
+
153
+ setError(err as Error);
154
+ } finally {
155
+ setLoading(false);
156
+ }
157
+ }
@@ -0,0 +1,83 @@
1
+ import { UIMessageChunk } from '../ui-message-stream';
2
+ import { ChatRequestOptions } from './chat';
3
+ import { UIMessage } from './ui-messages';
4
+
5
+ /**
6
+ * Transport interface for handling chat message communication and streaming.
7
+ *
8
+ * The `ChatTransport` interface provides fine-grained control over how messages
9
+ * are sent to API endpoints and how responses are processed. This enables
10
+ * alternative communication protocols like WebSockets, custom authentication
11
+ * patterns, or specialized backend integrations.
12
+ *
13
+ * @template UI_MESSAGE - The UI message type extending UIMessage
14
+ */
15
+ export interface ChatTransport<UI_MESSAGE extends UIMessage> {
16
+ /**
17
+ * Sends messages to the chat API endpoint and returns a streaming response.
18
+ *
19
+ * This method handles both new message submission and message regeneration.
20
+ * It supports real-time streaming of responses through UIMessageChunk events.
21
+ *
22
+ * @param options - Configuration object containing:
23
+ * @param options.trigger - The type of message submission:
24
+ * - `'submit-message'`: Submitting a new user message
25
+ * - `'regenerate-message'`: Regenerating an assistant response
26
+ * @param options.chatId - Unique identifier for the chat session
27
+ * @param options.messageId - ID of the message to regenerate (for regenerate-message trigger) or undefined for new messages
28
+ * @param options.messages - Array of UI messages representing the conversation history
29
+ * @param options.abortSignal - Signal to abort the request if needed
30
+ * @param options.headers - Additional HTTP headers to include in the request
31
+ * @param options.body - Additional JSON properties to include in the request body
32
+ * @param options.metadata - Custom metadata to attach to the request
33
+ *
34
+ * @returns Promise resolving to a ReadableStream of UIMessageChunk objects.
35
+ * The stream emits various chunk types like:
36
+ * - `text-start`, `text-delta`, `text-end`: For streaming text content
37
+ * - `tool-input-start`, `tool-input-delta`, `tool-input-available`: For tool calls
38
+ * - `data-part-start`, `data-part-delta`, `data-part-available`: For data parts
39
+ * - `error`: For error handling
40
+ *
41
+ * @throws Error when the API request fails or response is invalid
42
+ */
43
+ sendMessages: (
44
+ options: {
45
+ /** The type of message submission - either new message or regeneration */
46
+ trigger: 'submit-message' | 'regenerate-message';
47
+ /** Unique identifier for the chat session */
48
+ chatId: string;
49
+ /** ID of the message to regenerate, or undefined for new messages */
50
+ messageId: string | undefined;
51
+ /** Array of UI messages representing the conversation history */
52
+ messages: UI_MESSAGE[];
53
+ /** Signal to abort the request if needed */
54
+ abortSignal: AbortSignal | undefined;
55
+ } & ChatRequestOptions,
56
+ ) => Promise<ReadableStream<UIMessageChunk>>;
57
+
58
+ /**
59
+ * Reconnects to an existing streaming response for the specified chat session.
60
+ *
61
+ * This method is used to resume streaming when a connection is interrupted
62
+ * or when resuming a chat session. It's particularly useful for maintaining
63
+ * continuity in long-running conversations or recovering from network issues.
64
+ *
65
+ * @param options - Configuration object containing:
66
+ * @param options.chatId - Unique identifier for the chat session to reconnect to
67
+ * @param options.headers - Additional HTTP headers to include in the reconnection request
68
+ * @param options.body - Additional JSON properties to include in the request body
69
+ * @param options.metadata - Custom metadata to attach to the request
70
+ *
71
+ * @returns Promise resolving to:
72
+ * - `ReadableStream<UIMessageChunk>`: If an active stream is found and can be resumed
73
+ * - `null`: If no active stream exists for the specified chat session (e.g., response already completed)
74
+ *
75
+ * @throws Error when the reconnection request fails or response is invalid
76
+ */
77
+ reconnectToStream: (
78
+ options: {
79
+ /** Unique identifier for the chat session to reconnect to */
80
+ chatId: string;
81
+ } & ChatRequestOptions,
82
+ ) => Promise<ReadableStream<UIMessageChunk> | null>;
83
+ }