ai 6.0.32 → 6.0.34

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 (353) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/index.js +12 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +12 -2
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/internal/index.js +1 -1
  7. package/dist/internal/index.mjs +1 -1
  8. package/docs/02-foundations/03-prompts.mdx +2 -2
  9. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1 -1
  10. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +1 -1
  11. package/package.json +6 -4
  12. package/src/agent/agent.ts +116 -0
  13. package/src/agent/create-agent-ui-stream-response.test.ts +258 -0
  14. package/src/agent/create-agent-ui-stream-response.ts +50 -0
  15. package/src/agent/create-agent-ui-stream.ts +73 -0
  16. package/src/agent/index.ts +33 -0
  17. package/src/agent/infer-agent-tools.ts +7 -0
  18. package/src/agent/infer-agent-ui-message.test-d.ts +54 -0
  19. package/src/agent/infer-agent-ui-message.ts +11 -0
  20. package/src/agent/pipe-agent-ui-stream-to-response.ts +52 -0
  21. package/src/agent/tool-loop-agent-on-finish-callback.ts +31 -0
  22. package/src/agent/tool-loop-agent-on-step-finish-callback.ts +11 -0
  23. package/src/agent/tool-loop-agent-settings.ts +182 -0
  24. package/src/agent/tool-loop-agent.test-d.ts +114 -0
  25. package/src/agent/tool-loop-agent.test.ts +442 -0
  26. package/src/agent/tool-loop-agent.ts +114 -0
  27. package/src/embed/__snapshots__/embed-many.test.ts.snap +191 -0
  28. package/src/embed/__snapshots__/embed.test.ts.snap +81 -0
  29. package/src/embed/embed-many-result.ts +53 -0
  30. package/src/embed/embed-many.test.ts +653 -0
  31. package/src/embed/embed-many.ts +378 -0
  32. package/src/embed/embed-result.ts +50 -0
  33. package/src/embed/embed.test.ts +298 -0
  34. package/src/embed/embed.ts +211 -0
  35. package/src/embed/index.ts +4 -0
  36. package/src/error/index.ts +34 -0
  37. package/src/error/invalid-argument-error.ts +34 -0
  38. package/src/error/invalid-stream-part-error.ts +28 -0
  39. package/src/error/invalid-tool-approval-error.ts +26 -0
  40. package/src/error/invalid-tool-input-error.ts +33 -0
  41. package/src/error/no-image-generated-error.ts +39 -0
  42. package/src/error/no-object-generated-error.ts +70 -0
  43. package/src/error/no-output-generated-error.ts +26 -0
  44. package/src/error/no-speech-generated-error.ts +18 -0
  45. package/src/error/no-such-tool-error.ts +35 -0
  46. package/src/error/no-transcript-generated-error.ts +20 -0
  47. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  48. package/src/error/tool-call-repair-error.ts +30 -0
  49. package/src/error/unsupported-model-version-error.ts +23 -0
  50. package/src/error/verify-no-object-generated-error.ts +27 -0
  51. package/src/generate-image/generate-image-result.ts +42 -0
  52. package/src/generate-image/generate-image.test.ts +1420 -0
  53. package/src/generate-image/generate-image.ts +360 -0
  54. package/src/generate-image/index.ts +18 -0
  55. package/src/generate-object/__snapshots__/generate-object.test.ts.snap +133 -0
  56. package/src/generate-object/__snapshots__/stream-object.test.ts.snap +297 -0
  57. package/src/generate-object/generate-object-result.ts +67 -0
  58. package/src/generate-object/generate-object.test-d.ts +49 -0
  59. package/src/generate-object/generate-object.test.ts +1191 -0
  60. package/src/generate-object/generate-object.ts +518 -0
  61. package/src/generate-object/index.ts +9 -0
  62. package/src/generate-object/inject-json-instruction.test.ts +181 -0
  63. package/src/generate-object/inject-json-instruction.ts +30 -0
  64. package/src/generate-object/output-strategy.ts +415 -0
  65. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  66. package/src/generate-object/repair-text.ts +12 -0
  67. package/src/generate-object/stream-object-result.ts +120 -0
  68. package/src/generate-object/stream-object.test-d.ts +74 -0
  69. package/src/generate-object/stream-object.test.ts +1950 -0
  70. package/src/generate-object/stream-object.ts +986 -0
  71. package/src/generate-object/validate-object-generation-input.ts +144 -0
  72. package/src/generate-speech/generate-speech-result.ts +30 -0
  73. package/src/generate-speech/generate-speech.test.ts +300 -0
  74. package/src/generate-speech/generate-speech.ts +190 -0
  75. package/src/generate-speech/generated-audio-file.ts +65 -0
  76. package/src/generate-speech/index.ts +3 -0
  77. package/src/generate-text/__snapshots__/generate-text.test.ts.snap +1872 -0
  78. package/src/generate-text/__snapshots__/stream-text.test.ts.snap +1255 -0
  79. package/src/generate-text/collect-tool-approvals.test.ts +553 -0
  80. package/src/generate-text/collect-tool-approvals.ts +116 -0
  81. package/src/generate-text/content-part.ts +25 -0
  82. package/src/generate-text/execute-tool-call.ts +129 -0
  83. package/src/generate-text/extract-reasoning-content.ts +17 -0
  84. package/src/generate-text/extract-text-content.ts +15 -0
  85. package/src/generate-text/generate-text-result.ts +168 -0
  86. package/src/generate-text/generate-text.test-d.ts +68 -0
  87. package/src/generate-text/generate-text.test.ts +7011 -0
  88. package/src/generate-text/generate-text.ts +1223 -0
  89. package/src/generate-text/generated-file.ts +70 -0
  90. package/src/generate-text/index.ts +57 -0
  91. package/src/generate-text/is-approval-needed.ts +29 -0
  92. package/src/generate-text/output-utils.ts +23 -0
  93. package/src/generate-text/output.test.ts +698 -0
  94. package/src/generate-text/output.ts +590 -0
  95. package/src/generate-text/parse-tool-call.test.ts +570 -0
  96. package/src/generate-text/parse-tool-call.ts +188 -0
  97. package/src/generate-text/prepare-step.ts +103 -0
  98. package/src/generate-text/prune-messages.test.ts +720 -0
  99. package/src/generate-text/prune-messages.ts +167 -0
  100. package/src/generate-text/reasoning-output.ts +20 -0
  101. package/src/generate-text/reasoning.ts +8 -0
  102. package/src/generate-text/response-message.ts +10 -0
  103. package/src/generate-text/run-tools-transformation.test.ts +1143 -0
  104. package/src/generate-text/run-tools-transformation.ts +420 -0
  105. package/src/generate-text/smooth-stream.test.ts +2101 -0
  106. package/src/generate-text/smooth-stream.ts +162 -0
  107. package/src/generate-text/step-result.ts +238 -0
  108. package/src/generate-text/stop-condition.ts +29 -0
  109. package/src/generate-text/stream-text-result.ts +463 -0
  110. package/src/generate-text/stream-text.test-d.ts +200 -0
  111. package/src/generate-text/stream-text.test.ts +19979 -0
  112. package/src/generate-text/stream-text.ts +2505 -0
  113. package/src/generate-text/to-response-messages.test.ts +922 -0
  114. package/src/generate-text/to-response-messages.ts +163 -0
  115. package/src/generate-text/tool-approval-request-output.ts +21 -0
  116. package/src/generate-text/tool-call-repair-function.ts +27 -0
  117. package/src/generate-text/tool-call.ts +47 -0
  118. package/src/generate-text/tool-error.ts +34 -0
  119. package/src/generate-text/tool-output-denied.ts +21 -0
  120. package/src/generate-text/tool-output.ts +7 -0
  121. package/src/generate-text/tool-result.ts +36 -0
  122. package/src/generate-text/tool-set.ts +14 -0
  123. package/src/global.ts +24 -0
  124. package/src/index.ts +50 -0
  125. package/src/logger/index.ts +6 -0
  126. package/src/logger/log-warnings.test.ts +351 -0
  127. package/src/logger/log-warnings.ts +119 -0
  128. package/src/middleware/__snapshots__/simulate-streaming-middleware.test.ts.snap +64 -0
  129. package/src/middleware/add-tool-input-examples-middleware.test.ts +476 -0
  130. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  131. package/src/middleware/default-embedding-settings-middleware.test.ts +126 -0
  132. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  133. package/src/middleware/default-settings-middleware.test.ts +388 -0
  134. package/src/middleware/default-settings-middleware.ts +33 -0
  135. package/src/middleware/extract-json-middleware.test.ts +827 -0
  136. package/src/middleware/extract-json-middleware.ts +197 -0
  137. package/src/middleware/extract-reasoning-middleware.test.ts +1028 -0
  138. package/src/middleware/extract-reasoning-middleware.ts +238 -0
  139. package/src/middleware/index.ts +10 -0
  140. package/src/middleware/simulate-streaming-middleware.test.ts +911 -0
  141. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  142. package/src/middleware/wrap-embedding-model.test.ts +358 -0
  143. package/src/middleware/wrap-embedding-model.ts +86 -0
  144. package/src/middleware/wrap-image-model.test.ts +423 -0
  145. package/src/middleware/wrap-image-model.ts +85 -0
  146. package/src/middleware/wrap-language-model.test.ts +518 -0
  147. package/src/middleware/wrap-language-model.ts +104 -0
  148. package/src/middleware/wrap-provider.test.ts +120 -0
  149. package/src/middleware/wrap-provider.ts +51 -0
  150. package/src/model/as-embedding-model-v3.test.ts +319 -0
  151. package/src/model/as-embedding-model-v3.ts +24 -0
  152. package/src/model/as-image-model-v3.test.ts +409 -0
  153. package/src/model/as-image-model-v3.ts +24 -0
  154. package/src/model/as-language-model-v3.test.ts +508 -0
  155. package/src/model/as-language-model-v3.ts +103 -0
  156. package/src/model/as-provider-v3.ts +36 -0
  157. package/src/model/as-speech-model-v3.test.ts +356 -0
  158. package/src/model/as-speech-model-v3.ts +24 -0
  159. package/src/model/as-transcription-model-v3.test.ts +529 -0
  160. package/src/model/as-transcription-model-v3.ts +24 -0
  161. package/src/model/resolve-model.test.ts +244 -0
  162. package/src/model/resolve-model.ts +126 -0
  163. package/src/prompt/call-settings.ts +148 -0
  164. package/src/prompt/content-part.ts +209 -0
  165. package/src/prompt/convert-to-language-model-prompt.test.ts +2018 -0
  166. package/src/prompt/convert-to-language-model-prompt.ts +442 -0
  167. package/src/prompt/create-tool-model-output.test.ts +508 -0
  168. package/src/prompt/create-tool-model-output.ts +34 -0
  169. package/src/prompt/data-content.test.ts +15 -0
  170. package/src/prompt/data-content.ts +134 -0
  171. package/src/prompt/index.ts +27 -0
  172. package/src/prompt/invalid-data-content-error.ts +29 -0
  173. package/src/prompt/invalid-message-role-error.ts +27 -0
  174. package/src/prompt/message-conversion-error.ts +28 -0
  175. package/src/prompt/message.ts +68 -0
  176. package/src/prompt/prepare-call-settings.test.ts +159 -0
  177. package/src/prompt/prepare-call-settings.ts +108 -0
  178. package/src/prompt/prepare-tools-and-tool-choice.test.ts +461 -0
  179. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  180. package/src/prompt/prompt.ts +43 -0
  181. package/src/prompt/split-data-url.ts +17 -0
  182. package/src/prompt/standardize-prompt.test.ts +82 -0
  183. package/src/prompt/standardize-prompt.ts +99 -0
  184. package/src/prompt/wrap-gateway-error.ts +29 -0
  185. package/src/registry/custom-provider.test.ts +211 -0
  186. package/src/registry/custom-provider.ts +155 -0
  187. package/src/registry/index.ts +7 -0
  188. package/src/registry/no-such-provider-error.ts +41 -0
  189. package/src/registry/provider-registry.test.ts +691 -0
  190. package/src/registry/provider-registry.ts +328 -0
  191. package/src/rerank/index.ts +2 -0
  192. package/src/rerank/rerank-result.ts +70 -0
  193. package/src/rerank/rerank.test.ts +516 -0
  194. package/src/rerank/rerank.ts +237 -0
  195. package/src/telemetry/assemble-operation-name.ts +21 -0
  196. package/src/telemetry/get-base-telemetry-attributes.ts +53 -0
  197. package/src/telemetry/get-tracer.ts +20 -0
  198. package/src/telemetry/noop-tracer.ts +69 -0
  199. package/src/telemetry/record-span.ts +63 -0
  200. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  201. package/src/telemetry/select-temetry-attributes.test.ts +114 -0
  202. package/src/telemetry/stringify-for-telemetry.test.ts +114 -0
  203. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  204. package/src/telemetry/telemetry-settings.ts +44 -0
  205. package/src/test/mock-embedding-model-v2.ts +35 -0
  206. package/src/test/mock-embedding-model-v3.ts +48 -0
  207. package/src/test/mock-image-model-v2.ts +28 -0
  208. package/src/test/mock-image-model-v3.ts +28 -0
  209. package/src/test/mock-language-model-v2.ts +72 -0
  210. package/src/test/mock-language-model-v3.ts +77 -0
  211. package/src/test/mock-provider-v2.ts +68 -0
  212. package/src/test/mock-provider-v3.ts +80 -0
  213. package/src/test/mock-reranking-model-v3.ts +25 -0
  214. package/src/test/mock-server-response.ts +69 -0
  215. package/src/test/mock-speech-model-v2.ts +24 -0
  216. package/src/test/mock-speech-model-v3.ts +24 -0
  217. package/src/test/mock-tracer.ts +156 -0
  218. package/src/test/mock-transcription-model-v2.ts +24 -0
  219. package/src/test/mock-transcription-model-v3.ts +24 -0
  220. package/src/test/mock-values.ts +4 -0
  221. package/src/test/not-implemented.ts +3 -0
  222. package/src/text-stream/create-text-stream-response.test.ts +38 -0
  223. package/src/text-stream/create-text-stream-response.ts +18 -0
  224. package/src/text-stream/index.ts +2 -0
  225. package/src/text-stream/pipe-text-stream-to-response.test.ts +38 -0
  226. package/src/text-stream/pipe-text-stream-to-response.ts +26 -0
  227. package/src/transcribe/index.ts +2 -0
  228. package/src/transcribe/transcribe-result.ts +60 -0
  229. package/src/transcribe/transcribe.test.ts +313 -0
  230. package/src/transcribe/transcribe.ts +173 -0
  231. package/src/types/embedding-model-middleware.ts +3 -0
  232. package/src/types/embedding-model.ts +18 -0
  233. package/src/types/image-model-middleware.ts +3 -0
  234. package/src/types/image-model-response-metadata.ts +16 -0
  235. package/src/types/image-model.ts +19 -0
  236. package/src/types/index.ts +29 -0
  237. package/src/types/json-value.ts +15 -0
  238. package/src/types/language-model-middleware.ts +3 -0
  239. package/src/types/language-model-request-metadata.ts +6 -0
  240. package/src/types/language-model-response-metadata.ts +21 -0
  241. package/src/types/language-model.ts +104 -0
  242. package/src/types/provider-metadata.ts +16 -0
  243. package/src/types/provider.ts +55 -0
  244. package/src/types/reranking-model.ts +6 -0
  245. package/src/types/speech-model-response-metadata.ts +21 -0
  246. package/src/types/speech-model.ts +6 -0
  247. package/src/types/transcription-model-response-metadata.ts +16 -0
  248. package/src/types/transcription-model.ts +9 -0
  249. package/src/types/usage.ts +200 -0
  250. package/src/types/warning.ts +7 -0
  251. package/src/ui/__snapshots__/append-response-messages.test.ts.snap +416 -0
  252. package/src/ui/__snapshots__/convert-to-model-messages.test.ts.snap +419 -0
  253. package/src/ui/__snapshots__/process-chat-text-response.test.ts.snap +142 -0
  254. package/src/ui/call-completion-api.ts +157 -0
  255. package/src/ui/chat-transport.ts +83 -0
  256. package/src/ui/chat.test-d.ts +233 -0
  257. package/src/ui/chat.test.ts +2695 -0
  258. package/src/ui/chat.ts +716 -0
  259. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  260. package/src/ui/convert-to-model-messages.test.ts +2775 -0
  261. package/src/ui/convert-to-model-messages.ts +373 -0
  262. package/src/ui/default-chat-transport.ts +36 -0
  263. package/src/ui/direct-chat-transport.test.ts +446 -0
  264. package/src/ui/direct-chat-transport.ts +118 -0
  265. package/src/ui/http-chat-transport.test.ts +185 -0
  266. package/src/ui/http-chat-transport.ts +292 -0
  267. package/src/ui/index.ts +71 -0
  268. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  269. package/src/ui/last-assistant-message-is-complete-with-tool-calls.test.ts +371 -0
  270. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  271. package/src/ui/process-text-stream.test.ts +38 -0
  272. package/src/ui/process-text-stream.ts +16 -0
  273. package/src/ui/process-ui-message-stream.test.ts +8052 -0
  274. package/src/ui/process-ui-message-stream.ts +713 -0
  275. package/src/ui/text-stream-chat-transport.ts +23 -0
  276. package/src/ui/transform-text-to-ui-message-stream.test.ts +124 -0
  277. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  278. package/src/ui/ui-messages.test.ts +48 -0
  279. package/src/ui/ui-messages.ts +534 -0
  280. package/src/ui/use-completion.ts +84 -0
  281. package/src/ui/validate-ui-messages.test.ts +1428 -0
  282. package/src/ui/validate-ui-messages.ts +476 -0
  283. package/src/ui-message-stream/create-ui-message-stream-response.test.ts +266 -0
  284. package/src/ui-message-stream/create-ui-message-stream-response.ts +32 -0
  285. package/src/ui-message-stream/create-ui-message-stream.test.ts +639 -0
  286. package/src/ui-message-stream/create-ui-message-stream.ts +124 -0
  287. package/src/ui-message-stream/get-response-ui-message-id.test.ts +55 -0
  288. package/src/ui-message-stream/get-response-ui-message-id.ts +24 -0
  289. package/src/ui-message-stream/handle-ui-message-stream-finish.test.ts +429 -0
  290. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +135 -0
  291. package/src/ui-message-stream/index.ts +13 -0
  292. package/src/ui-message-stream/json-to-sse-transform-stream.ts +12 -0
  293. package/src/ui-message-stream/pipe-ui-message-stream-to-response.test.ts +90 -0
  294. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +40 -0
  295. package/src/ui-message-stream/read-ui-message-stream.test.ts +122 -0
  296. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  297. package/src/ui-message-stream/ui-message-chunks.test-d.ts +18 -0
  298. package/src/ui-message-stream/ui-message-chunks.ts +344 -0
  299. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  300. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  301. package/src/ui-message-stream/ui-message-stream-response-init.ts +5 -0
  302. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  303. package/src/util/as-array.ts +3 -0
  304. package/src/util/async-iterable-stream.test.ts +241 -0
  305. package/src/util/async-iterable-stream.ts +94 -0
  306. package/src/util/consume-stream.ts +29 -0
  307. package/src/util/cosine-similarity.test.ts +57 -0
  308. package/src/util/cosine-similarity.ts +47 -0
  309. package/src/util/create-resolvable-promise.ts +30 -0
  310. package/src/util/create-stitchable-stream.test.ts +239 -0
  311. package/src/util/create-stitchable-stream.ts +112 -0
  312. package/src/util/data-url.ts +17 -0
  313. package/src/util/deep-partial.ts +84 -0
  314. package/src/util/detect-media-type.test.ts +670 -0
  315. package/src/util/detect-media-type.ts +184 -0
  316. package/src/util/download/download-function.ts +45 -0
  317. package/src/util/download/download.test.ts +69 -0
  318. package/src/util/download/download.ts +46 -0
  319. package/src/util/error-handler.ts +1 -0
  320. package/src/util/fix-json.test.ts +279 -0
  321. package/src/util/fix-json.ts +401 -0
  322. package/src/util/get-potential-start-index.test.ts +34 -0
  323. package/src/util/get-potential-start-index.ts +30 -0
  324. package/src/util/index.ts +11 -0
  325. package/src/util/is-deep-equal-data.test.ts +119 -0
  326. package/src/util/is-deep-equal-data.ts +48 -0
  327. package/src/util/is-non-empty-object.ts +5 -0
  328. package/src/util/job.ts +1 -0
  329. package/src/util/log-v2-compatibility-warning.ts +21 -0
  330. package/src/util/merge-abort-signals.test.ts +155 -0
  331. package/src/util/merge-abort-signals.ts +43 -0
  332. package/src/util/merge-objects.test.ts +118 -0
  333. package/src/util/merge-objects.ts +79 -0
  334. package/src/util/now.ts +4 -0
  335. package/src/util/parse-partial-json.test.ts +80 -0
  336. package/src/util/parse-partial-json.ts +30 -0
  337. package/src/util/prepare-headers.test.ts +51 -0
  338. package/src/util/prepare-headers.ts +14 -0
  339. package/src/util/prepare-retries.test.ts +10 -0
  340. package/src/util/prepare-retries.ts +47 -0
  341. package/src/util/retry-error.ts +41 -0
  342. package/src/util/retry-with-exponential-backoff.test.ts +446 -0
  343. package/src/util/retry-with-exponential-backoff.ts +154 -0
  344. package/src/util/serial-job-executor.test.ts +162 -0
  345. package/src/util/serial-job-executor.ts +36 -0
  346. package/src/util/simulate-readable-stream.test.ts +98 -0
  347. package/src/util/simulate-readable-stream.ts +39 -0
  348. package/src/util/split-array.test.ts +60 -0
  349. package/src/util/split-array.ts +20 -0
  350. package/src/util/value-of.ts +65 -0
  351. package/src/util/write-to-server-response.test.ts +266 -0
  352. package/src/util/write-to-server-response.ts +49 -0
  353. package/src/version.ts +5 -0
@@ -0,0 +1,39 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+ import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
3
+
4
+ const name = 'AI_NoImageGeneratedError';
5
+ const marker = `vercel.ai.error.${name}`;
6
+ const symbol = Symbol.for(marker);
7
+
8
+ /**
9
+ Thrown when no image could be generated. This can have multiple causes:
10
+
11
+ - The model failed to generate a response.
12
+ - The model generated a response that could not be parsed.
13
+ */
14
+ export class NoImageGeneratedError extends AISDKError {
15
+ private readonly [symbol] = true; // used in isInstance
16
+
17
+ /**
18
+ The response metadata for each call.
19
+ */
20
+ readonly responses: Array<ImageModelResponseMetadata> | undefined;
21
+
22
+ constructor({
23
+ message = 'No image generated.',
24
+ cause,
25
+ responses,
26
+ }: {
27
+ message?: string;
28
+ cause?: Error;
29
+ responses?: Array<ImageModelResponseMetadata>;
30
+ }) {
31
+ super({ name, message, cause });
32
+
33
+ this.responses = responses;
34
+ }
35
+
36
+ static isInstance(error: unknown): error is NoImageGeneratedError {
37
+ return AISDKError.hasMarker(error, marker);
38
+ }
39
+ }
@@ -0,0 +1,70 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+ import { FinishReason } from '../types/language-model';
3
+ import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
4
+ import { LanguageModelUsage } from '../types/usage';
5
+
6
+ const name = 'AI_NoObjectGeneratedError';
7
+ const marker = `vercel.ai.error.${name}`;
8
+ const symbol = Symbol.for(marker);
9
+
10
+ /**
11
+ Thrown when no object could be generated. This can have several causes:
12
+
13
+ - The model failed to generate a response.
14
+ - The model generated a response that could not be parsed.
15
+ - The model generated a response that could not be validated against the schema.
16
+
17
+ The error contains the following properties:
18
+
19
+ - `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
20
+ */
21
+ export class NoObjectGeneratedError extends AISDKError {
22
+ private readonly [symbol] = true; // used in isInstance
23
+
24
+ /**
25
+ The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
26
+ */
27
+ readonly text: string | undefined;
28
+
29
+ /**
30
+ The response metadata.
31
+ */
32
+ readonly response: LanguageModelResponseMetadata | undefined;
33
+
34
+ /**
35
+ The usage of the model.
36
+ */
37
+ readonly usage: LanguageModelUsage | undefined;
38
+
39
+ /**
40
+ Reason why the model finished generating a response.
41
+ */
42
+ readonly finishReason: FinishReason | undefined;
43
+
44
+ constructor({
45
+ message = 'No object generated.',
46
+ cause,
47
+ text,
48
+ response,
49
+ usage,
50
+ finishReason,
51
+ }: {
52
+ message?: string;
53
+ cause?: Error;
54
+ text?: string;
55
+ response: LanguageModelResponseMetadata;
56
+ usage: LanguageModelUsage;
57
+ finishReason: FinishReason;
58
+ }) {
59
+ super({ name, message, cause });
60
+
61
+ this.text = text;
62
+ this.response = response;
63
+ this.usage = usage;
64
+ this.finishReason = finishReason;
65
+ }
66
+
67
+ static isInstance(error: unknown): error is NoObjectGeneratedError {
68
+ return AISDKError.hasMarker(error, marker);
69
+ }
70
+ }
@@ -0,0 +1,26 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+
3
+ const name = 'AI_NoOutputGeneratedError';
4
+ const marker = `vercel.ai.error.${name}`;
5
+ const symbol = Symbol.for(marker);
6
+
7
+ /**
8
+ Thrown when no LLM output was generated, e.g. because of errors.
9
+ */
10
+ export class NoOutputGeneratedError extends AISDKError {
11
+ private readonly [symbol] = true; // used in isInstance
12
+
13
+ constructor({
14
+ message = 'No output generated.',
15
+ cause,
16
+ }: {
17
+ message?: string;
18
+ cause?: Error;
19
+ } = {}) {
20
+ super({ name, message, cause });
21
+ }
22
+
23
+ static isInstance(error: unknown): error is NoOutputGeneratedError {
24
+ return AISDKError.hasMarker(error, marker);
25
+ }
26
+ }
@@ -0,0 +1,18 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+ import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata';
3
+
4
+ /**
5
+ Error that is thrown when no speech audio was generated.
6
+ */
7
+ export class NoSpeechGeneratedError extends AISDKError {
8
+ readonly responses: Array<SpeechModelResponseMetadata>;
9
+
10
+ constructor(options: { responses: Array<SpeechModelResponseMetadata> }) {
11
+ super({
12
+ name: 'AI_NoSpeechGeneratedError',
13
+ message: 'No speech audio generated.',
14
+ });
15
+
16
+ this.responses = options.responses;
17
+ }
18
+ }
@@ -0,0 +1,35 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+
3
+ const name = 'AI_NoSuchToolError';
4
+ const marker = `vercel.ai.error.${name}`;
5
+ const symbol = Symbol.for(marker);
6
+
7
+ export class NoSuchToolError extends AISDKError {
8
+ private readonly [symbol] = true; // used in isInstance
9
+
10
+ readonly toolName: string;
11
+ readonly availableTools: string[] | undefined;
12
+
13
+ constructor({
14
+ toolName,
15
+ availableTools = undefined,
16
+ message = `Model tried to call unavailable tool '${toolName}'. ${
17
+ availableTools === undefined
18
+ ? 'No tools are available.'
19
+ : `Available tools: ${availableTools.join(', ')}.`
20
+ }`,
21
+ }: {
22
+ toolName: string;
23
+ availableTools?: string[] | undefined;
24
+ message?: string;
25
+ }) {
26
+ super({ name, message });
27
+
28
+ this.toolName = toolName;
29
+ this.availableTools = availableTools;
30
+ }
31
+
32
+ static isInstance(error: unknown): error is NoSuchToolError {
33
+ return AISDKError.hasMarker(error, marker);
34
+ }
35
+ }
@@ -0,0 +1,20 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+ import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
3
+
4
+ /**
5
+ Error that is thrown when no transcript was generated.
6
+ */
7
+ export class NoTranscriptGeneratedError extends AISDKError {
8
+ readonly responses: Array<TranscriptionModelResponseMetadata>;
9
+
10
+ constructor(options: {
11
+ responses: Array<TranscriptionModelResponseMetadata>;
12
+ }) {
13
+ super({
14
+ name: 'AI_NoTranscriptGeneratedError',
15
+ message: 'No transcript generated.',
16
+ });
17
+
18
+ this.responses = options.responses;
19
+ }
20
+ }
@@ -0,0 +1,32 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+
3
+ const name = 'AI_ToolCallNotFoundForApprovalError';
4
+ const marker = `vercel.ai.error.${name}`;
5
+ const symbol = Symbol.for(marker);
6
+
7
+ export class ToolCallNotFoundForApprovalError extends AISDKError {
8
+ private readonly [symbol] = true; // used in isInstance
9
+
10
+ readonly toolCallId: string;
11
+ readonly approvalId: string;
12
+
13
+ constructor({
14
+ toolCallId,
15
+ approvalId,
16
+ }: {
17
+ toolCallId: string;
18
+ approvalId: string;
19
+ }) {
20
+ super({
21
+ name,
22
+ message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`,
23
+ });
24
+
25
+ this.toolCallId = toolCallId;
26
+ this.approvalId = approvalId;
27
+ }
28
+
29
+ static isInstance(error: unknown): error is ToolCallNotFoundForApprovalError {
30
+ return AISDKError.hasMarker(error, marker);
31
+ }
32
+ }
@@ -0,0 +1,30 @@
1
+ import { AISDKError, getErrorMessage } from '@ai-sdk/provider';
2
+ import { InvalidToolInputError } from './invalid-tool-input-error';
3
+ import { NoSuchToolError } from './no-such-tool-error';
4
+
5
+ const name = 'AI_ToolCallRepairError';
6
+ const marker = `vercel.ai.error.${name}`;
7
+ const symbol = Symbol.for(marker);
8
+
9
+ export class ToolCallRepairError extends AISDKError {
10
+ private readonly [symbol] = true; // used in isInstance
11
+
12
+ readonly originalError: NoSuchToolError | InvalidToolInputError;
13
+
14
+ constructor({
15
+ cause,
16
+ originalError,
17
+ message = `Error repairing tool call: ${getErrorMessage(cause)}`,
18
+ }: {
19
+ message?: string;
20
+ cause: unknown;
21
+ originalError: NoSuchToolError | InvalidToolInputError;
22
+ }) {
23
+ super({ name, message, cause });
24
+ this.originalError = originalError;
25
+ }
26
+
27
+ static isInstance(error: unknown): error is ToolCallRepairError {
28
+ return AISDKError.hasMarker(error, marker);
29
+ }
30
+ }
@@ -0,0 +1,23 @@
1
+ import { AISDKError } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ Error that is thrown when a model with an unsupported version is used.
5
+ */
6
+ export class UnsupportedModelVersionError extends AISDKError {
7
+ readonly version: string;
8
+ readonly provider: string;
9
+ readonly modelId: string;
10
+
11
+ constructor(options: { version: string; provider: string; modelId: string }) {
12
+ super({
13
+ name: 'AI_UnsupportedModelVersionError',
14
+ message:
15
+ `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". ` +
16
+ `AI SDK 5 only supports models that implement specification version "v2".`,
17
+ });
18
+
19
+ this.version = options.version;
20
+ this.provider = options.provider;
21
+ this.modelId = options.modelId;
22
+ }
23
+ }
@@ -0,0 +1,27 @@
1
+ import { expect } from 'vitest';
2
+
3
+ import {
4
+ FinishReason,
5
+ LanguageModelResponseMetadata,
6
+ LanguageModelUsage,
7
+ } from '../types';
8
+ import { NoObjectGeneratedError } from './no-object-generated-error';
9
+
10
+ export function verifyNoObjectGeneratedError(
11
+ error: unknown,
12
+ expected: {
13
+ message: string;
14
+ response: LanguageModelResponseMetadata & {
15
+ body?: string;
16
+ };
17
+ usage: LanguageModelUsage;
18
+ finishReason: FinishReason;
19
+ },
20
+ ) {
21
+ expect(NoObjectGeneratedError.isInstance(error)).toBeTruthy();
22
+ const noObjectGeneratedError = error as NoObjectGeneratedError;
23
+ expect(noObjectGeneratedError.message).toEqual(expected.message);
24
+ expect(noObjectGeneratedError.response).toEqual(expected.response);
25
+ expect(noObjectGeneratedError.usage).toEqual(expected.usage);
26
+ expect(noObjectGeneratedError.finishReason).toEqual(expected.finishReason);
27
+ }
@@ -0,0 +1,42 @@
1
+ import { GeneratedFile } from '../generate-text';
2
+ import { ImageModelProviderMetadata } from '../types/image-model';
3
+ import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
4
+ import { ImageModelUsage } from '../types/usage';
5
+ import { Warning } from '../types/warning';
6
+
7
+ /**
8
+ The result of a `generateImage` call.
9
+ It contains the images and additional information.
10
+ */
11
+ export interface GenerateImageResult {
12
+ /**
13
+ The first image that was generated.
14
+ */
15
+ readonly image: GeneratedFile;
16
+
17
+ /**
18
+ The images that were generated.
19
+ */
20
+ readonly images: Array<GeneratedFile>;
21
+
22
+ /**
23
+ Warnings for the call, e.g. unsupported settings.
24
+ */
25
+ readonly warnings: Array<Warning>;
26
+
27
+ /**
28
+ Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.
29
+ */
30
+ readonly responses: Array<ImageModelResponseMetadata>;
31
+
32
+ /**
33
+ * Provider-specific metadata. They are passed through from the provider to the AI SDK and enable provider-specific
34
+ * results that can be fully encapsulated in the provider.
35
+ */
36
+ readonly providerMetadata: ImageModelProviderMetadata;
37
+
38
+ /**
39
+ Combined token usage across all underlying provider calls for this image generation.
40
+ */
41
+ readonly usage: ImageModelUsage;
42
+ }