@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,235 @@
1
+ ---
2
+ title: Agent (Interface)
3
+ description: API Reference for the Agent interface.
4
+ ---
5
+
6
+ # `Agent` (interface)
7
+
8
+ The `Agent` interface defines a contract for agents that can generate or stream AI-generated responses in response to prompts. Agents may encapsulate advanced logic such as tool usage, multi-step workflows, or prompt handling, enabling both simple and autonomous AI agents.
9
+
10
+ Implementations of the `Agent` interface—such as `ToolLoopAgent`—fulfill the same contract and integrate seamlessly with all SDK APIs and utilities that expect an agent. This design allows users to supply custom agent classes or wrappers for third-party chains, while maximizing compatibility with AI SDK features.
11
+
12
+ ## Interface Definition
13
+
14
+ ```ts
15
+ import { ModelMessage } from '@ai-sdk/provider-utils';
16
+ import { ToolSet } from '../generate-text/tool-set';
17
+ import { Output } from '../generate-text/output';
18
+ import { GenerateTextResult } from '../generate-text/generate-text-result';
19
+ import { StreamTextResult } from '../generate-text/stream-text-result';
20
+
21
+ export type AgentCallParameters<CALL_OPTIONS, TOOLS extends ToolSet = {}> = ([
22
+ CALL_OPTIONS,
23
+ ] extends [never]
24
+ ? { options?: never }
25
+ : { options: CALL_OPTIONS }) &
26
+ (
27
+ | {
28
+ /**
29
+ * A prompt. It can be either a text prompt or a list of messages.
30
+ *
31
+ * You can either use `prompt` or `messages` but not both.
32
+ */
33
+ prompt: string | Array<ModelMessage>;
34
+
35
+ /**
36
+ * A list of messages.
37
+ *
38
+ * You can either use `prompt` or `messages` but not both.
39
+ */
40
+ messages?: never;
41
+ }
42
+ | {
43
+ /**
44
+ * A list of messages.
45
+ *
46
+ * You can either use `prompt` or `messages` but not both.
47
+ */
48
+ messages: Array<ModelMessage>;
49
+
50
+ /**
51
+ * A prompt. It can be either a text prompt or a list of messages.
52
+ *
53
+ * You can either use `prompt` or `messages` but not both.
54
+ */
55
+ prompt?: never;
56
+ }
57
+ ) & {
58
+ /**
59
+ * Abort signal.
60
+ */
61
+ abortSignal?: AbortSignal;
62
+ /**
63
+ * Timeout in milliseconds. Can be specified as a number or as an object with a totalMs property.
64
+ * The call will be aborted if it takes longer than the specified timeout.
65
+ * Can be used alongside abortSignal.
66
+ */
67
+ timeout?: number | { totalMs?: number };
68
+ /**
69
+ * Callback that is called when the agent operation begins, before any LLM calls.
70
+ */
71
+ experimental_onStart?: ToolLoopAgentOnStartCallback<TOOLS>;
72
+ /**
73
+ * Callback that is called when a step (LLM call) begins, before the provider is called.
74
+ */
75
+ experimental_onStepStart?: ToolLoopAgentOnStepStartCallback<TOOLS>;
76
+ /**
77
+ * Callback that is called before each tool execution begins.
78
+ */
79
+ experimental_onToolCallStart?: ToolLoopAgentOnToolCallStartCallback<TOOLS>;
80
+ /**
81
+ * Callback that is called after each tool execution completes.
82
+ */
83
+ experimental_onToolCallFinish?: ToolLoopAgentOnToolCallFinishCallback<TOOLS>;
84
+ /**
85
+ * Callback that is called when each step (LLM call) is finished, including intermediate steps.
86
+ */
87
+ onStepFinish?: ToolLoopAgentOnStepFinishCallback<TOOLS>;
88
+ /**
89
+ * Callback that is called when all steps are finished and the response is complete.
90
+ */
91
+ onFinish?: ToolLoopAgentOnFinishCallback<TOOLS>;
92
+ };
93
+
94
+ /**
95
+ * An Agent receives a prompt (text or messages) and generates or streams an output
96
+ * that consists of steps, tool calls, data parts, etc.
97
+ *
98
+ * You can implement your own Agent by implementing the `Agent` interface,
99
+ * or use the `ToolLoopAgent` class.
100
+ */
101
+ export interface Agent<
102
+ CALL_OPTIONS = never,
103
+ TOOLS extends ToolSet = {},
104
+ OUTPUT extends Output = never,
105
+ > {
106
+ /**
107
+ * The specification version of the agent interface. This will enable
108
+ * us to evolve the agent interface and retain backwards compatibility.
109
+ */
110
+ readonly version: 'agent-v1';
111
+
112
+ /**
113
+ * The id of the agent.
114
+ */
115
+ readonly id: string | undefined;
116
+
117
+ /**
118
+ * The tools that the agent can use.
119
+ */
120
+ readonly tools: TOOLS;
121
+
122
+ /**
123
+ * Generates an output from the agent (non-streaming).
124
+ */
125
+ generate(
126
+ options: AgentCallParameters<CALL_OPTIONS, TOOLS>,
127
+ ): PromiseLike<GenerateTextResult<TOOLS, OUTPUT>>;
128
+
129
+ /**
130
+ * Streams an output from the agent (streaming).
131
+ */
132
+ stream(
133
+ options: AgentStreamParameters<CALL_OPTIONS, TOOLS>,
134
+ ): PromiseLike<StreamTextResult<TOOLS, OUTPUT>>;
135
+ }
136
+ ```
137
+
138
+ ## Core Properties & Methods
139
+
140
+ | Name | Type | Description |
141
+ | ------------ | ------------------------------------------------ | ------------------------------------------------------------------- |
142
+ | `version` | `'agent-v1'` | Interface version for compatibility. |
143
+ | `id` | `string \| undefined` | Optional agent identifier. |
144
+ | `tools` | `ToolSet` | The set of tools available to this agent. |
145
+ | `generate()` | `PromiseLike<GenerateTextResult<TOOLS, OUTPUT>>` | Generates full, non-streaming output for a text prompt or messages. |
146
+ | `stream()` | `PromiseLike<StreamTextResult<TOOLS, OUTPUT>>` | Streams output (chunks or steps) for a text prompt or messages. |
147
+
148
+ ## Generic Parameters
149
+
150
+ | Parameter | Default | Description |
151
+ | -------------- | ------- | -------------------------------------------------------------------------- |
152
+ | `CALL_OPTIONS` | `never` | Optional type for additional call options that can be passed to the agent. |
153
+ | `TOOLS` | `{}` | The type of the tool set available to this agent. |
154
+ | `OUTPUT` | `never` | The type of additional output data that the agent can produce. |
155
+
156
+ ## Method Parameters
157
+
158
+ Both `generate()` and `stream()` accept an `AgentCallParameters<CALL_OPTIONS, TOOLS>` object with:
159
+
160
+ - `prompt` (optional): A string prompt or array of `ModelMessage` objects
161
+ - `messages` (optional): An array of `ModelMessage` objects (mutually exclusive with `prompt`)
162
+ - `options` (optional): Additional call options when `CALL_OPTIONS` is not `never`
163
+ - `abortSignal` (optional): An `AbortSignal` to cancel the operation
164
+ - `timeout` (optional): A timeout in milliseconds. Can be specified as a number or as an object with a `totalMs` property. The call will be aborted if it takes longer than the specified timeout. Can be used alongside `abortSignal`.
165
+ - `experimental_onStart` (optional): Callback invoked when the agent operation begins, before any LLM calls. Experimental.
166
+ - `experimental_onStepStart` (optional): Callback invoked when a step (LLM call) begins, before the provider is called. Experimental.
167
+ - `experimental_onToolCallStart` (optional): Callback invoked right before a tool's execute function runs. Experimental.
168
+ - `experimental_onToolCallFinish` (optional): Callback invoked right after a tool's execute function completes or errors. Experimental.
169
+ - `onStepFinish` (optional): A callback invoked after each agent step (LLM/tool call) completes. Useful for tracking token usage or logging.
170
+ - `onFinish` (optional): A callback invoked when all steps are finished and the response is complete.
171
+
172
+ ## Example: Custom Agent Implementation
173
+
174
+ Here's how you might implement your own Agent:
175
+
176
+ ```ts
177
+ import { Agent, GenerateTextResult, StreamTextResult } from 'ai';
178
+ import type { ModelMessage } from '@ai-sdk/provider-utils';
179
+
180
+ class MyEchoAgent implements Agent {
181
+ version = 'agent-v1' as const;
182
+ id = 'echo';
183
+ tools = {};
184
+
185
+ async generate({ prompt, messages, abortSignal }) {
186
+ const text = prompt ?? JSON.stringify(messages);
187
+ return { text, steps: [] };
188
+ }
189
+
190
+ async stream({ prompt, messages, abortSignal }) {
191
+ const text = prompt ?? JSON.stringify(messages);
192
+ return {
193
+ textStream: (async function* () {
194
+ yield text;
195
+ })(),
196
+ };
197
+ }
198
+ }
199
+ ```
200
+
201
+ ## Usage: Interacting with Agents
202
+
203
+ All SDK utilities that accept an agent—including [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream), [`createAgentUIStreamResponse`](/docs/reference/ai-sdk-core/create-agent-ui-stream-response), and [`pipeAgentUIStreamToResponse`](/docs/reference/ai-sdk-core/pipe-agent-ui-stream-to-response)—expect an object adhering to the `Agent` interface.
204
+
205
+ You can use the official [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) (recommended for multi-step AI workflows with tool use), or supply your own implementation:
206
+
207
+ ```ts
208
+ import { ToolLoopAgent, createAgentUIStream } from "ai";
209
+
210
+ const agent = new ToolLoopAgent({ ... });
211
+
212
+ const stream = await createAgentUIStream({
213
+ agent,
214
+ messages: [{ role: "user", content: "What is the weather in NYC?" }]
215
+ });
216
+
217
+ for await (const chunk of stream) {
218
+ console.log(chunk);
219
+ }
220
+ ```
221
+
222
+ ## See Also
223
+
224
+ - [`ToolLoopAgent`](/docs/reference/ai-sdk-core/tool-loop-agent) &mdash; Official multi-step agent implementation
225
+ - [`createAgentUIStream`](/docs/reference/ai-sdk-core/create-agent-ui-stream)
226
+ - [`GenerateTextResult`](/docs/reference/ai-sdk-core/generate-text)
227
+ - [`StreamTextResult`](/docs/reference/ai-sdk-core/stream-text)
228
+
229
+ ## Notes
230
+
231
+ - Agents should define their `tools` property, even if empty (`{}`), for compatibility with SDK utilities.
232
+ - The interface accepts both plain prompts and message arrays as input, but only one at a time.
233
+ - The `CALL_OPTIONS` generic parameter allows agents to accept additional call-specific options when needed.
234
+ - The `abortSignal` parameter enables cancellation of agent operations.
235
+ - This design is extensible for both complex autonomous agents and simple LLM wrappers.