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,104 @@
1
+ import { GatewayModelId } from '@ai-sdk/gateway';
2
+ import {
3
+ LanguageModelV2,
4
+ LanguageModelV3,
5
+ SharedV3Warning,
6
+ LanguageModelV3Source,
7
+ } from '@ai-sdk/provider';
8
+
9
+ declare global {
10
+ /**
11
+ * Global interface that can be augmented by third-party packages to register custom model IDs.
12
+ *
13
+ * You can register model IDs in two ways:
14
+ *
15
+ * 1. Register based on Model IDs from a provider package:
16
+ * @example
17
+ * ```typescript
18
+ * import { openai } from '@ai-sdk/openai';
19
+ * type OpenAIResponsesModelId = Parameters<typeof openai>[0];
20
+ *
21
+ * declare global {
22
+ * interface RegisteredProviderModels {
23
+ * openai: OpenAIResponsesModelId;
24
+ * }
25
+ * }
26
+ * ```
27
+ *
28
+ * 2. Register individual model IDs directly as keys:
29
+ * @example
30
+ * ```typescript
31
+ * declare global {
32
+ * interface RegisteredProviderModels {
33
+ * 'my-provider:my-model': any;
34
+ * 'my-provider:another-model': any;
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ interface RegisteredProviderModels {}
40
+ }
41
+
42
+ /**
43
+ * Global provider model ID type that defaults to GatewayModelId but can be augmented
44
+ * by third-party packages via declaration merging.
45
+ */
46
+ export type GlobalProviderModelId = [keyof RegisteredProviderModels] extends [
47
+ never,
48
+ ]
49
+ ? GatewayModelId
50
+ :
51
+ | keyof RegisteredProviderModels
52
+ | RegisteredProviderModels[keyof RegisteredProviderModels];
53
+
54
+ /**
55
+ Language model that is used by the AI SDK.
56
+ */
57
+ export type LanguageModel =
58
+ | GlobalProviderModelId
59
+ | LanguageModelV3
60
+ | LanguageModelV2;
61
+
62
+ /**
63
+ Reason why a language model finished generating a response.
64
+
65
+ Can be one of the following:
66
+ - `stop`: model generated stop sequence
67
+ - `length`: model generated maximum number of tokens
68
+ - `content-filter`: content filter violation stopped the model
69
+ - `tool-calls`: model triggered tool calls
70
+ - `error`: model stopped because of an error
71
+ - `other`: model stopped for other reasons
72
+ */
73
+ export type FinishReason =
74
+ | 'stop'
75
+ | 'length'
76
+ | 'content-filter'
77
+ | 'tool-calls'
78
+ | 'error'
79
+ | 'other';
80
+
81
+ /**
82
+ Warning from the model provider for this call. The call will proceed, but e.g.
83
+ some settings might not be supported, which can lead to suboptimal results.
84
+ */
85
+ export type CallWarning = SharedV3Warning;
86
+
87
+ /**
88
+ A source that has been used as input to generate the response.
89
+ */
90
+ export type Source = LanguageModelV3Source;
91
+
92
+ /**
93
+ Tool choice for the generation. It supports the following settings:
94
+
95
+ - `auto` (default): the model can choose whether and which tools to call.
96
+ - `required`: the model must call a tool. It can choose which tool to call.
97
+ - `none`: the model must not call tools
98
+ - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool
99
+ */
100
+ export type ToolChoice<TOOLS extends Record<string, unknown>> =
101
+ | 'auto'
102
+ | 'none'
103
+ | 'required'
104
+ | { type: 'tool'; toolName: Extract<keyof TOOLS, string> };
@@ -0,0 +1,16 @@
1
+ import { SharedV3ProviderMetadata } from '@ai-sdk/provider';
2
+ import { z } from 'zod/v4';
3
+ import { jsonValueSchema } from './json-value';
4
+
5
+ /**
6
+ Additional provider-specific metadata that is returned from the provider.
7
+
8
+ This is needed to enable provider-specific functionality that can be
9
+ fully encapsulated in the provider.
10
+ */
11
+ export type ProviderMetadata = SharedV3ProviderMetadata;
12
+
13
+ export const providerMetadataSchema: z.ZodType<ProviderMetadata> = z.record(
14
+ z.string(),
15
+ z.record(z.string(), jsonValueSchema.optional()),
16
+ );
@@ -0,0 +1,55 @@
1
+ import { EmbeddingModel } from './embedding-model';
2
+ import { LanguageModel } from './language-model';
3
+ import { ImageModel } from './image-model';
4
+ import { RerankingModel } from './reranking-model';
5
+
6
+ /**
7
+ * Provider for language, text embedding, and image models.
8
+ */
9
+ export type Provider = {
10
+ /**
11
+ Returns the language model with the given id.
12
+ The model id is then passed to the provider function to get the model.
13
+
14
+ @param {string} id - The id of the model to return.
15
+
16
+ @returns {LanguageModel} The language model associated with the id
17
+
18
+ @throws {NoSuchModelError} If no such model exists.
19
+ */
20
+ languageModel(modelId: string): LanguageModel;
21
+
22
+ /**
23
+ Returns the text embedding model with the given id.
24
+ The model id is then passed to the provider function to get the model.
25
+
26
+ @param {string} id - The id of the model to return.
27
+
28
+ @returns {LanguageModel} The language model associated with the id
29
+
30
+ @throws {NoSuchModelError} If no such model exists.
31
+ */
32
+ embeddingModel(modelId: string): EmbeddingModel;
33
+
34
+ /**
35
+ Returns the image model with the given id.
36
+ The model id is then passed to the provider function to get the model.
37
+
38
+ @param {string} id - The id of the model to return.
39
+
40
+ @returns {ImageModel} The image model associated with the id
41
+ */
42
+ imageModel(modelId: string): ImageModel;
43
+
44
+ /**
45
+ Returns the reranking model with the given id.
46
+ The model id is then passed to the provider function to get the model.
47
+
48
+ @param {string} id - The id of the model to return.
49
+
50
+ @return {RerankingModel<VALUE>} The reranking model associated with the id
51
+
52
+ @throws {NoSuchModelError} If no such model exists.
53
+ */
54
+ rerankingModel(modelId: string): RerankingModel;
55
+ };
@@ -0,0 +1,6 @@
1
+ import { RerankingModelV3 } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ * Reranking model that is used by the AI SDK.
5
+ */
6
+ export type RerankingModel = RerankingModelV3;
@@ -0,0 +1,21 @@
1
+ export type SpeechModelResponseMetadata = {
2
+ /**
3
+ Timestamp for the start of the generated response.
4
+ */
5
+ timestamp: Date;
6
+
7
+ /**
8
+ The ID of the response model that was used to generate the response.
9
+ */
10
+ modelId: string;
11
+
12
+ /**
13
+ Response headers.
14
+ */
15
+ headers?: Record<string, string>;
16
+
17
+ /**
18
+ Response body.
19
+ */
20
+ body?: unknown;
21
+ };
@@ -0,0 +1,6 @@
1
+ import { SpeechModelV2, SpeechModelV3 } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ Speech model that is used by the AI SDK.
5
+ */
6
+ export type SpeechModel = string | SpeechModelV3 | SpeechModelV2;
@@ -0,0 +1,16 @@
1
+ export type TranscriptionModelResponseMetadata = {
2
+ /**
3
+ Timestamp for the start of the generated response.
4
+ */
5
+ timestamp: Date;
6
+
7
+ /**
8
+ The ID of the response model that was used to generate the response.
9
+ */
10
+ modelId: string;
11
+
12
+ /**
13
+ Response headers.
14
+ */
15
+ headers?: Record<string, string>;
16
+ };
@@ -0,0 +1,9 @@
1
+ import { TranscriptionModelV2, TranscriptionModelV3 } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ Transcription model that is used by the AI SDK.
5
+ */
6
+ export type TranscriptionModel =
7
+ | string
8
+ | TranscriptionModelV3
9
+ | TranscriptionModelV2;
@@ -0,0 +1,200 @@
1
+ import {
2
+ ImageModelV3Usage,
3
+ JSONObject,
4
+ LanguageModelV3Usage,
5
+ } from '@ai-sdk/provider';
6
+
7
+ /**
8
+ * Represents the number of tokens used in a prompt and completion.
9
+ */
10
+ export type LanguageModelUsage = {
11
+ /**
12
+ * The total number of input (prompt) tokens used.
13
+ */
14
+ inputTokens: number | undefined;
15
+
16
+ /**
17
+ * Detailed information about the input tokens.
18
+ */
19
+ inputTokenDetails: {
20
+ /**
21
+ * The number of non-cached input (prompt) tokens used.
22
+ */
23
+ noCacheTokens: number | undefined;
24
+
25
+ /**
26
+ * The number of cached input (prompt) tokens read.
27
+ */
28
+ cacheReadTokens: number | undefined;
29
+
30
+ /**
31
+ * The number of cached input (prompt) tokens written.
32
+ */
33
+ cacheWriteTokens: number | undefined;
34
+ };
35
+
36
+ /**
37
+ * The number of total output (completion) tokens used.
38
+ */
39
+ outputTokens: number | undefined;
40
+
41
+ /**
42
+ * Detailed information about the output tokens.
43
+ */
44
+ outputTokenDetails: {
45
+ /**
46
+ * The number of text tokens used.
47
+ */
48
+ textTokens: number | undefined;
49
+
50
+ /**
51
+ * The number of reasoning tokens used.
52
+ */
53
+ reasoningTokens: number | undefined;
54
+ };
55
+
56
+ /**
57
+ * The total number of tokens used.
58
+ */
59
+ totalTokens: number | undefined;
60
+
61
+ /**
62
+ * @deprecated Use outputTokenDetails.reasoning instead.
63
+ */
64
+ reasoningTokens?: number | undefined;
65
+
66
+ /**
67
+ * @deprecated Use inputTokenDetails.cacheRead instead.
68
+ */
69
+ cachedInputTokens?: number | undefined;
70
+
71
+ /**
72
+ * Raw usage information from the provider.
73
+ *
74
+ * This is the usage information in the shape that the provider returns.
75
+ * It can include additional information that is not part of the standard usage information.
76
+ */
77
+ raw?: JSONObject;
78
+ };
79
+
80
+ /**
81
+ Represents the number of tokens used in an embedding.
82
+ */
83
+ // TODO replace with EmbeddingModelV3Usage
84
+ export type EmbeddingModelUsage = {
85
+ /**
86
+ The number of tokens used in the embedding.
87
+ */
88
+ tokens: number;
89
+ };
90
+
91
+ export function asLanguageModelUsage(
92
+ usage: LanguageModelV3Usage,
93
+ ): LanguageModelUsage {
94
+ return {
95
+ inputTokens: usage.inputTokens.total,
96
+ inputTokenDetails: {
97
+ noCacheTokens: usage.inputTokens.noCache,
98
+ cacheReadTokens: usage.inputTokens.cacheRead,
99
+ cacheWriteTokens: usage.inputTokens.cacheWrite,
100
+ },
101
+ outputTokens: usage.outputTokens.total,
102
+ outputTokenDetails: {
103
+ textTokens: usage.outputTokens.text,
104
+ reasoningTokens: usage.outputTokens.reasoning,
105
+ },
106
+ totalTokens: addTokenCounts(
107
+ usage.inputTokens.total,
108
+ usage.outputTokens.total,
109
+ ),
110
+ raw: usage.raw,
111
+ reasoningTokens: usage.outputTokens.reasoning,
112
+ cachedInputTokens: usage.inputTokens.cacheRead,
113
+ };
114
+ }
115
+
116
+ export function createNullLanguageModelUsage(): LanguageModelUsage {
117
+ return {
118
+ inputTokens: undefined,
119
+ inputTokenDetails: {
120
+ noCacheTokens: undefined,
121
+ cacheReadTokens: undefined,
122
+ cacheWriteTokens: undefined,
123
+ },
124
+ outputTokens: undefined,
125
+ outputTokenDetails: {
126
+ textTokens: undefined,
127
+ reasoningTokens: undefined,
128
+ },
129
+ totalTokens: undefined,
130
+ raw: undefined,
131
+ };
132
+ }
133
+
134
+ export function addLanguageModelUsage(
135
+ usage1: LanguageModelUsage,
136
+ usage2: LanguageModelUsage,
137
+ ): LanguageModelUsage {
138
+ return {
139
+ inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
140
+ inputTokenDetails: {
141
+ noCacheTokens: addTokenCounts(
142
+ usage1.inputTokenDetails?.noCacheTokens,
143
+ usage2.inputTokenDetails?.noCacheTokens,
144
+ ),
145
+ cacheReadTokens: addTokenCounts(
146
+ usage1.inputTokenDetails?.cacheReadTokens,
147
+ usage2.inputTokenDetails?.cacheReadTokens,
148
+ ),
149
+ cacheWriteTokens: addTokenCounts(
150
+ usage1.inputTokenDetails?.cacheWriteTokens,
151
+ usage2.inputTokenDetails?.cacheWriteTokens,
152
+ ),
153
+ },
154
+ outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
155
+ outputTokenDetails: {
156
+ textTokens: addTokenCounts(
157
+ usage1.outputTokenDetails?.textTokens,
158
+ usage2.outputTokenDetails?.textTokens,
159
+ ),
160
+ reasoningTokens: addTokenCounts(
161
+ usage1.outputTokenDetails?.reasoningTokens,
162
+ usage2.outputTokenDetails?.reasoningTokens,
163
+ ),
164
+ },
165
+ totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
166
+ reasoningTokens: addTokenCounts(
167
+ usage1.reasoningTokens,
168
+ usage2.reasoningTokens,
169
+ ),
170
+ cachedInputTokens: addTokenCounts(
171
+ usage1.cachedInputTokens,
172
+ usage2.cachedInputTokens,
173
+ ),
174
+ };
175
+ }
176
+
177
+ function addTokenCounts(
178
+ tokenCount1: number | undefined,
179
+ tokenCount2: number | undefined,
180
+ ): number | undefined {
181
+ return tokenCount1 == null && tokenCount2 == null
182
+ ? undefined
183
+ : (tokenCount1 ?? 0) + (tokenCount2 ?? 0);
184
+ }
185
+
186
+ /**
187
+ Usage information for an image model call.
188
+ */
189
+ export type ImageModelUsage = ImageModelV3Usage;
190
+
191
+ export function addImageModelUsage(
192
+ usage1: ImageModelUsage,
193
+ usage2: ImageModelUsage,
194
+ ): ImageModelUsage {
195
+ return {
196
+ inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
197
+ outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
198
+ totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
199
+ };
200
+ }
@@ -0,0 +1,7 @@
1
+ import { SharedV3Warning } from '@ai-sdk/provider';
2
+
3
+ /**
4
+ Warning from the model provider for this call. The call will proceed, but e.g.
5
+ some settings might not be supported, which can lead to suboptimal results.
6
+ */
7
+ export type Warning = SharedV3Warning;