@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,324 @@
1
+ import { SystemModelMessage, ModelMessage, Tool } from '@ai-sdk/provider-utils';
2
+ export { convertAsyncIteratorToReadableStream } from '@ai-sdk/provider-utils';
3
+ import { LanguageModelV4Prompt, LanguageModelV4CallOptions, LanguageModelV4Usage, JSONObject, LanguageModelV4FunctionTool, LanguageModelV4ProviderTool, LanguageModelV4ToolChoice } from '@ai-sdk/provider';
4
+
5
+ /**
6
+ * Experimental. Can change in patch versions without warning.
7
+ *
8
+ * Download function. Called with the array of URLs and a boolean indicating
9
+ * whether the URL is supported by the model.
10
+ *
11
+ * The download function can decide for each URL:
12
+ * - to return null (which means that the URL should be passed to the model)
13
+ * - to download the asset and return the data (incl. retries, authentication, etc.)
14
+ *
15
+ * Should throw DownloadError if the download fails.
16
+ *
17
+ * Should return an array of objects sorted by the order of the requested downloads.
18
+ * For each object, the data should be a Uint8Array if the URL was downloaded.
19
+ * For each object, the mediaType should be the media type of the downloaded asset.
20
+ * For each object, the data should be null if the URL should be passed through as is.
21
+ */
22
+ type DownloadFunction = (options: Array<{
23
+ url: URL;
24
+ isUrlSupportedByModel: boolean;
25
+ }>) => PromiseLike<Array<{
26
+ data: Uint8Array;
27
+ mediaType: string | undefined;
28
+ } | null>>;
29
+
30
+ /**
31
+ * Prompt part of the AI function options.
32
+ * It contains a system message, a simple text prompt, or a list of messages.
33
+ */
34
+ type Prompt = {
35
+ /**
36
+ * System message to include in the prompt. Can be used with `prompt` or `messages`.
37
+ */
38
+ system?: string | SystemModelMessage | Array<SystemModelMessage>;
39
+ } & ({
40
+ /**
41
+ * A prompt. It can be either a text prompt or a list of messages.
42
+ *
43
+ * You can either use `prompt` or `messages` but not both.
44
+ */
45
+ prompt: string | Array<ModelMessage>;
46
+ /**
47
+ * A list of messages.
48
+ *
49
+ * You can either use `prompt` or `messages` but not both.
50
+ */
51
+ messages?: never;
52
+ } | {
53
+ /**
54
+ * A list of messages.
55
+ *
56
+ * You can either use `prompt` or `messages` but not both.
57
+ */
58
+ messages: Array<ModelMessage>;
59
+ /**
60
+ * A prompt. It can be either a text prompt or a list of messages.
61
+ *
62
+ * You can either use `prompt` or `messages` but not both.
63
+ */
64
+ prompt?: never;
65
+ });
66
+
67
+ type StandardizedPrompt = {
68
+ /**
69
+ * System message.
70
+ */
71
+ system?: string | SystemModelMessage | Array<SystemModelMessage>;
72
+ /**
73
+ * Messages.
74
+ */
75
+ messages: ModelMessage[];
76
+ };
77
+ declare function standardizePrompt(prompt: Prompt): Promise<StandardizedPrompt>;
78
+
79
+ declare function convertToLanguageModelPrompt({ prompt, supportedUrls, download, }: {
80
+ prompt: StandardizedPrompt;
81
+ supportedUrls: Record<string, RegExp[]>;
82
+ download: DownloadFunction | undefined;
83
+ }): Promise<LanguageModelV4Prompt>;
84
+
85
+ type ToolSet = Record<string, (Tool<never, never> | Tool<any, any> | Tool<any, never> | Tool<never, any>) & Pick<Tool<any, any>, 'execute' | 'onInputAvailable' | 'onInputStart' | 'onInputDelta' | 'needsApproval'>>;
86
+
87
+ /**
88
+ * Timeout configuration for API calls. Can be specified as:
89
+ * - A number representing milliseconds
90
+ * - An object with `totalMs` property for the total timeout in milliseconds
91
+ * - An object with `stepMs` property for the timeout of each step in milliseconds
92
+ * - An object with `chunkMs` property for the timeout between stream chunks (streaming only)
93
+ */
94
+ type TimeoutConfiguration<TOOLS extends ToolSet> = number | {
95
+ totalMs?: number;
96
+ stepMs?: number;
97
+ chunkMs?: number;
98
+ toolMs?: number;
99
+ tools?: Partial<Record<`${keyof TOOLS & string}Ms`, number>>;
100
+ };
101
+ type CallSettings<TOOLS extends ToolSet> = {
102
+ /**
103
+ * Maximum number of tokens to generate.
104
+ */
105
+ maxOutputTokens?: number;
106
+ /**
107
+ * Temperature setting. The range depends on the provider and model.
108
+ *
109
+ * It is recommended to set either `temperature` or `topP`, but not both.
110
+ */
111
+ temperature?: number;
112
+ /**
113
+ * Nucleus sampling. This is a number between 0 and 1.
114
+ *
115
+ * E.g. 0.1 would mean that only tokens with the top 10% probability mass
116
+ * are considered.
117
+ *
118
+ * It is recommended to set either `temperature` or `topP`, but not both.
119
+ */
120
+ topP?: number;
121
+ /**
122
+ * Only sample from the top K options for each subsequent token.
123
+ *
124
+ * Used to remove "long tail" low probability responses.
125
+ * Recommended for advanced use cases only. You usually only need to use temperature.
126
+ */
127
+ topK?: number;
128
+ /**
129
+ * Presence penalty setting. It affects the likelihood of the model to
130
+ * repeat information that is already in the prompt.
131
+ *
132
+ * The presence penalty is a number between -1 (increase repetition)
133
+ * and 1 (maximum penalty, decrease repetition). 0 means no penalty.
134
+ */
135
+ presencePenalty?: number;
136
+ /**
137
+ * Frequency penalty setting. It affects the likelihood of the model
138
+ * to repeatedly use the same words or phrases.
139
+ *
140
+ * The frequency penalty is a number between -1 (increase repetition)
141
+ * and 1 (maximum penalty, decrease repetition). 0 means no penalty.
142
+ */
143
+ frequencyPenalty?: number;
144
+ /**
145
+ * Stop sequences.
146
+ * If set, the model will stop generating text when one of the stop sequences is generated.
147
+ * Providers may have limits on the number of stop sequences.
148
+ */
149
+ stopSequences?: string[];
150
+ /**
151
+ * The seed (integer) to use for random sampling. If set and supported
152
+ * by the model, calls will generate deterministic results.
153
+ */
154
+ seed?: number;
155
+ /**
156
+ * Reasoning effort level for the model. Controls how much reasoning
157
+ * the model performs before generating a response.
158
+ *
159
+ * Use `'provider-default'` to use the provider's default reasoning level.
160
+ * Use `'none'` to disable reasoning (if supported by the provider).
161
+ */
162
+ reasoning?: LanguageModelV4CallOptions['reasoning'];
163
+ /**
164
+ * Maximum number of retries. Set to 0 to disable retries.
165
+ *
166
+ * @default 2
167
+ */
168
+ maxRetries?: number;
169
+ /**
170
+ * Abort signal.
171
+ */
172
+ abortSignal?: AbortSignal;
173
+ /**
174
+ * Timeout in milliseconds. The call will be aborted if it takes longer
175
+ * than the specified timeout. Can be used alongside abortSignal.
176
+ *
177
+ * Can be specified as a number (milliseconds) or as an object with `totalMs`.
178
+ */
179
+ timeout?: TimeoutConfiguration<TOOLS>;
180
+ /**
181
+ * Additional HTTP headers to be sent with the request.
182
+ * Only applicable for HTTP-based providers.
183
+ */
184
+ headers?: Record<string, string | undefined>;
185
+ };
186
+
187
+ declare global {
188
+ /**
189
+ * Global interface that can be augmented by third-party packages to register custom model IDs.
190
+ *
191
+ * You can register model IDs in two ways:
192
+ *
193
+ * 1. Register based on Model IDs from a provider package:
194
+ * @example
195
+ * ```typescript
196
+ * import { openai } from '@ai-sdk/openai';
197
+ * type OpenAIResponsesModelId = Parameters<typeof openai>[0];
198
+ *
199
+ * declare global {
200
+ * interface RegisteredProviderModels {
201
+ * openai: OpenAIResponsesModelId;
202
+ * }
203
+ * }
204
+ * ```
205
+ *
206
+ * 2. Register individual model IDs directly as keys:
207
+ * @example
208
+ * ```typescript
209
+ * declare global {
210
+ * interface RegisteredProviderModels {
211
+ * 'my-provider:my-model': any;
212
+ * 'my-provider:another-model': any;
213
+ * }
214
+ * }
215
+ * ```
216
+ */
217
+ interface RegisteredProviderModels {
218
+ }
219
+ }
220
+ /**
221
+ * Tool choice for the generation. It supports the following settings:
222
+ *
223
+ * - `auto` (default): the model can choose whether and which tools to call.
224
+ * - `required`: the model must call a tool. It can choose which tool to call.
225
+ * - `none`: the model must not call tools
226
+ * - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool
227
+ */
228
+ type ToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | 'required' | {
229
+ type: 'tool';
230
+ toolName: Extract<keyof TOOLS, string>;
231
+ };
232
+
233
+ /**
234
+ * Represents the number of tokens used in a prompt and completion.
235
+ */
236
+ type LanguageModelUsage = {
237
+ /**
238
+ * The total number of input (prompt) tokens used.
239
+ */
240
+ inputTokens: number | undefined;
241
+ /**
242
+ * Detailed information about the input tokens.
243
+ */
244
+ inputTokenDetails: {
245
+ /**
246
+ * The number of non-cached input (prompt) tokens used.
247
+ */
248
+ noCacheTokens: number | undefined;
249
+ /**
250
+ * The number of cached input (prompt) tokens read.
251
+ */
252
+ cacheReadTokens: number | undefined;
253
+ /**
254
+ * The number of cached input (prompt) tokens written.
255
+ */
256
+ cacheWriteTokens: number | undefined;
257
+ };
258
+ /**
259
+ * The number of total output (completion) tokens used.
260
+ */
261
+ outputTokens: number | undefined;
262
+ /**
263
+ * Detailed information about the output tokens.
264
+ */
265
+ outputTokenDetails: {
266
+ /**
267
+ * The number of text tokens used.
268
+ */
269
+ textTokens: number | undefined;
270
+ /**
271
+ * The number of reasoning tokens used.
272
+ */
273
+ reasoningTokens: number | undefined;
274
+ };
275
+ /**
276
+ * The total number of tokens used.
277
+ */
278
+ totalTokens: number | undefined;
279
+ /**
280
+ * @deprecated Use outputTokenDetails.reasoningTokens instead.
281
+ */
282
+ reasoningTokens?: number | undefined;
283
+ /**
284
+ * @deprecated Use inputTokenDetails.cacheReadTokens instead.
285
+ */
286
+ cachedInputTokens?: number | undefined;
287
+ /**
288
+ * Raw usage information from the provider.
289
+ *
290
+ * This is the usage information in the shape that the provider returns.
291
+ * It can include additional information that is not part of the standard usage information.
292
+ */
293
+ raw?: JSONObject;
294
+ };
295
+ declare function asLanguageModelUsage(usage: LanguageModelV4Usage): LanguageModelUsage;
296
+
297
+ declare function prepareToolsAndToolChoice<TOOLS extends ToolSet>({ tools, toolChoice, activeTools, }: {
298
+ tools: TOOLS | undefined;
299
+ toolChoice: ToolChoice<TOOLS> | undefined;
300
+ activeTools: Array<keyof TOOLS> | undefined;
301
+ }): Promise<{
302
+ tools: Array<LanguageModelV4FunctionTool | LanguageModelV4ProviderTool> | undefined;
303
+ toolChoice: LanguageModelV4ToolChoice | undefined;
304
+ }>;
305
+
306
+ /**
307
+ * Validates call settings and returns a new object with limited values.
308
+ */
309
+ declare function prepareCallSettings({ maxOutputTokens, temperature, topP, topK, presencePenalty, frequencyPenalty, seed, stopSequences, reasoning, }: Omit<CallSettings<any>, 'abortSignal' | 'headers' | 'maxRetries'>): Omit<CallSettings<any>, 'abortSignal' | 'headers' | 'maxRetries'>;
310
+
311
+ type RetryFunction = <OUTPUT>(fn: () => PromiseLike<OUTPUT>) => PromiseLike<OUTPUT>;
312
+
313
+ /**
314
+ * Validate and prepare retries.
315
+ */
316
+ declare function prepareRetries({ maxRetries, abortSignal, }: {
317
+ maxRetries: number | undefined;
318
+ abortSignal: AbortSignal | undefined;
319
+ }): {
320
+ maxRetries: number;
321
+ retry: RetryFunction;
322
+ };
323
+
324
+ export { asLanguageModelUsage, convertToLanguageModelPrompt, prepareCallSettings, prepareRetries, prepareToolsAndToolChoice, standardizePrompt };
@@ -0,0 +1,324 @@
1
+ import { SystemModelMessage, ModelMessage, Tool } from '@ai-sdk/provider-utils';
2
+ export { convertAsyncIteratorToReadableStream } from '@ai-sdk/provider-utils';
3
+ import { LanguageModelV4Prompt, LanguageModelV4CallOptions, LanguageModelV4Usage, JSONObject, LanguageModelV4FunctionTool, LanguageModelV4ProviderTool, LanguageModelV4ToolChoice } from '@ai-sdk/provider';
4
+
5
+ /**
6
+ * Experimental. Can change in patch versions without warning.
7
+ *
8
+ * Download function. Called with the array of URLs and a boolean indicating
9
+ * whether the URL is supported by the model.
10
+ *
11
+ * The download function can decide for each URL:
12
+ * - to return null (which means that the URL should be passed to the model)
13
+ * - to download the asset and return the data (incl. retries, authentication, etc.)
14
+ *
15
+ * Should throw DownloadError if the download fails.
16
+ *
17
+ * Should return an array of objects sorted by the order of the requested downloads.
18
+ * For each object, the data should be a Uint8Array if the URL was downloaded.
19
+ * For each object, the mediaType should be the media type of the downloaded asset.
20
+ * For each object, the data should be null if the URL should be passed through as is.
21
+ */
22
+ type DownloadFunction = (options: Array<{
23
+ url: URL;
24
+ isUrlSupportedByModel: boolean;
25
+ }>) => PromiseLike<Array<{
26
+ data: Uint8Array;
27
+ mediaType: string | undefined;
28
+ } | null>>;
29
+
30
+ /**
31
+ * Prompt part of the AI function options.
32
+ * It contains a system message, a simple text prompt, or a list of messages.
33
+ */
34
+ type Prompt = {
35
+ /**
36
+ * System message to include in the prompt. Can be used with `prompt` or `messages`.
37
+ */
38
+ system?: string | SystemModelMessage | Array<SystemModelMessage>;
39
+ } & ({
40
+ /**
41
+ * A prompt. It can be either a text prompt or a list of messages.
42
+ *
43
+ * You can either use `prompt` or `messages` but not both.
44
+ */
45
+ prompt: string | Array<ModelMessage>;
46
+ /**
47
+ * A list of messages.
48
+ *
49
+ * You can either use `prompt` or `messages` but not both.
50
+ */
51
+ messages?: never;
52
+ } | {
53
+ /**
54
+ * A list of messages.
55
+ *
56
+ * You can either use `prompt` or `messages` but not both.
57
+ */
58
+ messages: Array<ModelMessage>;
59
+ /**
60
+ * A prompt. It can be either a text prompt or a list of messages.
61
+ *
62
+ * You can either use `prompt` or `messages` but not both.
63
+ */
64
+ prompt?: never;
65
+ });
66
+
67
+ type StandardizedPrompt = {
68
+ /**
69
+ * System message.
70
+ */
71
+ system?: string | SystemModelMessage | Array<SystemModelMessage>;
72
+ /**
73
+ * Messages.
74
+ */
75
+ messages: ModelMessage[];
76
+ };
77
+ declare function standardizePrompt(prompt: Prompt): Promise<StandardizedPrompt>;
78
+
79
+ declare function convertToLanguageModelPrompt({ prompt, supportedUrls, download, }: {
80
+ prompt: StandardizedPrompt;
81
+ supportedUrls: Record<string, RegExp[]>;
82
+ download: DownloadFunction | undefined;
83
+ }): Promise<LanguageModelV4Prompt>;
84
+
85
+ type ToolSet = Record<string, (Tool<never, never> | Tool<any, any> | Tool<any, never> | Tool<never, any>) & Pick<Tool<any, any>, 'execute' | 'onInputAvailable' | 'onInputStart' | 'onInputDelta' | 'needsApproval'>>;
86
+
87
+ /**
88
+ * Timeout configuration for API calls. Can be specified as:
89
+ * - A number representing milliseconds
90
+ * - An object with `totalMs` property for the total timeout in milliseconds
91
+ * - An object with `stepMs` property for the timeout of each step in milliseconds
92
+ * - An object with `chunkMs` property for the timeout between stream chunks (streaming only)
93
+ */
94
+ type TimeoutConfiguration<TOOLS extends ToolSet> = number | {
95
+ totalMs?: number;
96
+ stepMs?: number;
97
+ chunkMs?: number;
98
+ toolMs?: number;
99
+ tools?: Partial<Record<`${keyof TOOLS & string}Ms`, number>>;
100
+ };
101
+ type CallSettings<TOOLS extends ToolSet> = {
102
+ /**
103
+ * Maximum number of tokens to generate.
104
+ */
105
+ maxOutputTokens?: number;
106
+ /**
107
+ * Temperature setting. The range depends on the provider and model.
108
+ *
109
+ * It is recommended to set either `temperature` or `topP`, but not both.
110
+ */
111
+ temperature?: number;
112
+ /**
113
+ * Nucleus sampling. This is a number between 0 and 1.
114
+ *
115
+ * E.g. 0.1 would mean that only tokens with the top 10% probability mass
116
+ * are considered.
117
+ *
118
+ * It is recommended to set either `temperature` or `topP`, but not both.
119
+ */
120
+ topP?: number;
121
+ /**
122
+ * Only sample from the top K options for each subsequent token.
123
+ *
124
+ * Used to remove "long tail" low probability responses.
125
+ * Recommended for advanced use cases only. You usually only need to use temperature.
126
+ */
127
+ topK?: number;
128
+ /**
129
+ * Presence penalty setting. It affects the likelihood of the model to
130
+ * repeat information that is already in the prompt.
131
+ *
132
+ * The presence penalty is a number between -1 (increase repetition)
133
+ * and 1 (maximum penalty, decrease repetition). 0 means no penalty.
134
+ */
135
+ presencePenalty?: number;
136
+ /**
137
+ * Frequency penalty setting. It affects the likelihood of the model
138
+ * to repeatedly use the same words or phrases.
139
+ *
140
+ * The frequency penalty is a number between -1 (increase repetition)
141
+ * and 1 (maximum penalty, decrease repetition). 0 means no penalty.
142
+ */
143
+ frequencyPenalty?: number;
144
+ /**
145
+ * Stop sequences.
146
+ * If set, the model will stop generating text when one of the stop sequences is generated.
147
+ * Providers may have limits on the number of stop sequences.
148
+ */
149
+ stopSequences?: string[];
150
+ /**
151
+ * The seed (integer) to use for random sampling. If set and supported
152
+ * by the model, calls will generate deterministic results.
153
+ */
154
+ seed?: number;
155
+ /**
156
+ * Reasoning effort level for the model. Controls how much reasoning
157
+ * the model performs before generating a response.
158
+ *
159
+ * Use `'provider-default'` to use the provider's default reasoning level.
160
+ * Use `'none'` to disable reasoning (if supported by the provider).
161
+ */
162
+ reasoning?: LanguageModelV4CallOptions['reasoning'];
163
+ /**
164
+ * Maximum number of retries. Set to 0 to disable retries.
165
+ *
166
+ * @default 2
167
+ */
168
+ maxRetries?: number;
169
+ /**
170
+ * Abort signal.
171
+ */
172
+ abortSignal?: AbortSignal;
173
+ /**
174
+ * Timeout in milliseconds. The call will be aborted if it takes longer
175
+ * than the specified timeout. Can be used alongside abortSignal.
176
+ *
177
+ * Can be specified as a number (milliseconds) or as an object with `totalMs`.
178
+ */
179
+ timeout?: TimeoutConfiguration<TOOLS>;
180
+ /**
181
+ * Additional HTTP headers to be sent with the request.
182
+ * Only applicable for HTTP-based providers.
183
+ */
184
+ headers?: Record<string, string | undefined>;
185
+ };
186
+
187
+ declare global {
188
+ /**
189
+ * Global interface that can be augmented by third-party packages to register custom model IDs.
190
+ *
191
+ * You can register model IDs in two ways:
192
+ *
193
+ * 1. Register based on Model IDs from a provider package:
194
+ * @example
195
+ * ```typescript
196
+ * import { openai } from '@ai-sdk/openai';
197
+ * type OpenAIResponsesModelId = Parameters<typeof openai>[0];
198
+ *
199
+ * declare global {
200
+ * interface RegisteredProviderModels {
201
+ * openai: OpenAIResponsesModelId;
202
+ * }
203
+ * }
204
+ * ```
205
+ *
206
+ * 2. Register individual model IDs directly as keys:
207
+ * @example
208
+ * ```typescript
209
+ * declare global {
210
+ * interface RegisteredProviderModels {
211
+ * 'my-provider:my-model': any;
212
+ * 'my-provider:another-model': any;
213
+ * }
214
+ * }
215
+ * ```
216
+ */
217
+ interface RegisteredProviderModels {
218
+ }
219
+ }
220
+ /**
221
+ * Tool choice for the generation. It supports the following settings:
222
+ *
223
+ * - `auto` (default): the model can choose whether and which tools to call.
224
+ * - `required`: the model must call a tool. It can choose which tool to call.
225
+ * - `none`: the model must not call tools
226
+ * - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool
227
+ */
228
+ type ToolChoice<TOOLS extends Record<string, unknown>> = 'auto' | 'none' | 'required' | {
229
+ type: 'tool';
230
+ toolName: Extract<keyof TOOLS, string>;
231
+ };
232
+
233
+ /**
234
+ * Represents the number of tokens used in a prompt and completion.
235
+ */
236
+ type LanguageModelUsage = {
237
+ /**
238
+ * The total number of input (prompt) tokens used.
239
+ */
240
+ inputTokens: number | undefined;
241
+ /**
242
+ * Detailed information about the input tokens.
243
+ */
244
+ inputTokenDetails: {
245
+ /**
246
+ * The number of non-cached input (prompt) tokens used.
247
+ */
248
+ noCacheTokens: number | undefined;
249
+ /**
250
+ * The number of cached input (prompt) tokens read.
251
+ */
252
+ cacheReadTokens: number | undefined;
253
+ /**
254
+ * The number of cached input (prompt) tokens written.
255
+ */
256
+ cacheWriteTokens: number | undefined;
257
+ };
258
+ /**
259
+ * The number of total output (completion) tokens used.
260
+ */
261
+ outputTokens: number | undefined;
262
+ /**
263
+ * Detailed information about the output tokens.
264
+ */
265
+ outputTokenDetails: {
266
+ /**
267
+ * The number of text tokens used.
268
+ */
269
+ textTokens: number | undefined;
270
+ /**
271
+ * The number of reasoning tokens used.
272
+ */
273
+ reasoningTokens: number | undefined;
274
+ };
275
+ /**
276
+ * The total number of tokens used.
277
+ */
278
+ totalTokens: number | undefined;
279
+ /**
280
+ * @deprecated Use outputTokenDetails.reasoningTokens instead.
281
+ */
282
+ reasoningTokens?: number | undefined;
283
+ /**
284
+ * @deprecated Use inputTokenDetails.cacheReadTokens instead.
285
+ */
286
+ cachedInputTokens?: number | undefined;
287
+ /**
288
+ * Raw usage information from the provider.
289
+ *
290
+ * This is the usage information in the shape that the provider returns.
291
+ * It can include additional information that is not part of the standard usage information.
292
+ */
293
+ raw?: JSONObject;
294
+ };
295
+ declare function asLanguageModelUsage(usage: LanguageModelV4Usage): LanguageModelUsage;
296
+
297
+ declare function prepareToolsAndToolChoice<TOOLS extends ToolSet>({ tools, toolChoice, activeTools, }: {
298
+ tools: TOOLS | undefined;
299
+ toolChoice: ToolChoice<TOOLS> | undefined;
300
+ activeTools: Array<keyof TOOLS> | undefined;
301
+ }): Promise<{
302
+ tools: Array<LanguageModelV4FunctionTool | LanguageModelV4ProviderTool> | undefined;
303
+ toolChoice: LanguageModelV4ToolChoice | undefined;
304
+ }>;
305
+
306
+ /**
307
+ * Validates call settings and returns a new object with limited values.
308
+ */
309
+ declare function prepareCallSettings({ maxOutputTokens, temperature, topP, topK, presencePenalty, frequencyPenalty, seed, stopSequences, reasoning, }: Omit<CallSettings<any>, 'abortSignal' | 'headers' | 'maxRetries'>): Omit<CallSettings<any>, 'abortSignal' | 'headers' | 'maxRetries'>;
310
+
311
+ type RetryFunction = <OUTPUT>(fn: () => PromiseLike<OUTPUT>) => PromiseLike<OUTPUT>;
312
+
313
+ /**
314
+ * Validate and prepare retries.
315
+ */
316
+ declare function prepareRetries({ maxRetries, abortSignal, }: {
317
+ maxRetries: number | undefined;
318
+ abortSignal: AbortSignal | undefined;
319
+ }): {
320
+ maxRetries: number;
321
+ retry: RetryFunction;
322
+ };
323
+
324
+ export { asLanguageModelUsage, convertToLanguageModelPrompt, prepareCallSettings, prepareRetries, prepareToolsAndToolChoice, standardizePrompt };