ai 7.0.0-beta.113 → 7.0.0-beta.115

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 (236) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/index.d.ts +1506 -1468
  3. package/dist/index.js +889 -979
  4. package/dist/index.js.map +1 -1
  5. package/dist/internal/index.d.ts +273 -273
  6. package/dist/internal/index.js +367 -405
  7. package/dist/internal/index.js.map +1 -1
  8. package/dist/test/index.d.ts +18 -18
  9. package/dist/test/index.js +22 -22
  10. package/dist/test/index.js.map +1 -1
  11. package/docs/02-foundations/03-prompts.mdx +13 -11
  12. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +2 -1
  13. package/docs/03-ai-sdk-core/39-file-uploads.mdx +1 -1
  14. package/docs/03-ai-sdk-core/45-provider-management.mdx +1 -1
  15. package/docs/03-ai-sdk-core/60-telemetry.mdx +87 -13
  16. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +2 -2
  17. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +7 -0
  18. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +7 -0
  19. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +9 -1
  20. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +104 -0
  21. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +56 -10
  22. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +1 -1
  23. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +42 -0
  24. package/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx +2 -2
  25. package/package.json +5 -5
  26. package/src/agent/agent.ts +13 -9
  27. package/src/agent/create-agent-ui-stream-response.ts +8 -8
  28. package/src/agent/create-agent-ui-stream.ts +9 -9
  29. package/src/agent/infer-agent-tools.ts +1 -1
  30. package/src/agent/infer-agent-ui-message.ts +2 -2
  31. package/src/agent/pipe-agent-ui-stream-to-response.ts +9 -9
  32. package/src/agent/tool-loop-agent-settings.ts +17 -19
  33. package/src/agent/tool-loop-agent.ts +16 -8
  34. package/src/embed/embed-many-result.ts +3 -4
  35. package/src/embed/embed-many.ts +5 -5
  36. package/src/embed/embed-result.ts +3 -4
  37. package/src/embed/embed.ts +4 -4
  38. package/src/error/invalid-stream-part-error.ts +1 -1
  39. package/src/error/no-image-generated-error.ts +1 -1
  40. package/src/error/no-object-generated-error.ts +3 -3
  41. package/src/error/no-speech-generated-error.ts +1 -1
  42. package/src/error/no-transcript-generated-error.ts +1 -1
  43. package/src/error/no-video-generated-error.ts +1 -1
  44. package/src/error/tool-call-repair-error.ts +2 -2
  45. package/src/error/verify-no-object-generated-error.ts +1 -1
  46. package/src/generate-image/generate-image-result.ts +5 -5
  47. package/src/generate-image/generate-image.ts +12 -15
  48. package/src/generate-image/index.ts +3 -2
  49. package/src/generate-object/generate-object-result.ts +2 -2
  50. package/src/generate-object/generate-object.ts +14 -14
  51. package/src/generate-object/inject-json-instruction.ts +1 -1
  52. package/src/generate-object/output-strategy.ts +10 -10
  53. package/src/generate-object/parse-and-validate-object-result.ts +1 -1
  54. package/src/generate-object/repair-text.ts +1 -1
  55. package/src/generate-object/stream-object-result.ts +4 -4
  56. package/src/generate-object/stream-object.ts +22 -19
  57. package/src/generate-object/validate-object-generation-input.ts +1 -1
  58. package/src/generate-speech/generate-speech-result.ts +4 -4
  59. package/src/generate-speech/generate-speech.ts +12 -13
  60. package/src/generate-speech/generated-audio-file.ts +1 -2
  61. package/src/generate-text/collect-tool-approvals.ts +4 -4
  62. package/src/generate-text/content-part.ts +9 -9
  63. package/src/generate-text/create-execute-tools-transformation.ts +9 -7
  64. package/src/generate-text/execute-tool-call.ts +11 -13
  65. package/src/generate-text/extract-reasoning-content.ts +1 -1
  66. package/src/generate-text/extract-text-content.ts +4 -1
  67. package/src/generate-text/generate-text-events.ts +2 -2
  68. package/src/generate-text/generate-text-result.ts +18 -14
  69. package/src/generate-text/generate-text.ts +42 -38
  70. package/src/generate-text/invoke-tool-callbacks-from-stream.ts +2 -3
  71. package/src/generate-text/output-utils.ts +1 -1
  72. package/src/generate-text/output.ts +8 -8
  73. package/src/generate-text/parse-tool-call.ts +36 -9
  74. package/src/generate-text/prepare-step.ts +3 -5
  75. package/src/generate-text/prune-messages.ts +1 -1
  76. package/src/generate-text/reasoning-output.ts +26 -9
  77. package/src/generate-text/reasoning.ts +1 -1
  78. package/src/generate-text/resolve-tool-approval.ts +3 -3
  79. package/src/generate-text/response-message.ts +1 -1
  80. package/src/generate-text/restricted-telemetry-dispatcher.ts +1 -1
  81. package/src/generate-text/smooth-stream.ts +6 -5
  82. package/src/generate-text/step-result.ts +16 -11
  83. package/src/generate-text/stop-condition.ts +1 -1
  84. package/src/generate-text/stream-language-model-call.ts +26 -21
  85. package/src/generate-text/stream-text-result.ts +29 -26
  86. package/src/generate-text/stream-text.ts +48 -46
  87. package/src/generate-text/to-response-messages.ts +2 -2
  88. package/src/generate-text/tool-approval-configuration.ts +2 -2
  89. package/src/generate-text/tool-approval-request-output.ts +1 -1
  90. package/src/generate-text/tool-approval-response-output.ts +1 -1
  91. package/src/generate-text/tool-call-repair-function.ts +4 -4
  92. package/src/generate-text/tool-call.ts +3 -4
  93. package/src/generate-text/tool-error.ts +3 -4
  94. package/src/generate-text/tool-execution-events.ts +2 -2
  95. package/src/generate-text/tool-output-denied.ts +1 -1
  96. package/src/generate-text/tool-output.ts +2 -2
  97. package/src/generate-text/tool-result.ts +7 -4
  98. package/src/generate-text/tools-context-parameter.ts +1 -1
  99. package/src/generate-text/validate-tool-context.ts +1 -2
  100. package/src/generate-video/generate-video-result.ts +4 -4
  101. package/src/generate-video/generate-video.ts +6 -10
  102. package/src/global.ts +2 -2
  103. package/src/index.ts +3 -3
  104. package/src/logger/log-warnings.ts +1 -1
  105. package/src/middleware/add-tool-input-examples-middleware.ts +2 -2
  106. package/src/middleware/default-embedding-settings-middleware.ts +2 -2
  107. package/src/middleware/default-settings-middleware.ts +2 -2
  108. package/src/middleware/extract-json-middleware.ts +1 -1
  109. package/src/middleware/extract-reasoning-middleware.ts +1 -1
  110. package/src/middleware/simulate-streaming-middleware.ts +1 -1
  111. package/src/middleware/wrap-embedding-model.ts +2 -2
  112. package/src/middleware/wrap-image-model.ts +2 -2
  113. package/src/middleware/wrap-language-model.ts +2 -2
  114. package/src/middleware/wrap-provider.ts +2 -2
  115. package/src/model/as-embedding-model-v3.ts +1 -1
  116. package/src/model/as-embedding-model-v4.ts +1 -1
  117. package/src/model/as-image-model-v3.ts +1 -1
  118. package/src/model/as-image-model-v4.ts +5 -1
  119. package/src/model/as-language-model-v3.ts +1 -1
  120. package/src/model/as-language-model-v4.ts +1 -1
  121. package/src/model/as-provider-v3.ts +1 -1
  122. package/src/model/as-provider-v4.ts +1 -1
  123. package/src/model/as-reranking-model-v4.ts +1 -1
  124. package/src/model/as-speech-model-v3.ts +1 -1
  125. package/src/model/as-speech-model-v4.ts +5 -1
  126. package/src/model/as-transcription-model-v3.ts +4 -1
  127. package/src/model/as-transcription-model-v4.ts +1 -1
  128. package/src/model/as-video-model-v4.ts +1 -1
  129. package/src/model/resolve-model.ts +8 -8
  130. package/src/prompt/content-part.ts +45 -15
  131. package/src/prompt/convert-to-language-model-prompt.ts +108 -122
  132. package/src/prompt/create-tool-model-output.ts +2 -2
  133. package/src/prompt/data-content.ts +1 -78
  134. package/src/prompt/file-part-data.ts +125 -0
  135. package/src/prompt/index.ts +3 -2
  136. package/src/prompt/language-model-call-options.ts +1 -1
  137. package/src/prompt/message-conversion-error.ts +1 -1
  138. package/src/prompt/message.ts +1 -1
  139. package/src/prompt/prepare-language-model-call-options.ts +1 -1
  140. package/src/prompt/prepare-tool-choice.ts +2 -2
  141. package/src/prompt/prepare-tools.ts +2 -2
  142. package/src/prompt/prompt.ts +1 -1
  143. package/src/prompt/standardize-prompt.ts +3 -3
  144. package/src/registry/custom-provider.ts +127 -92
  145. package/src/registry/index.ts +1 -1
  146. package/src/registry/provider-registry.ts +91 -87
  147. package/src/rerank/rerank-result.ts +1 -1
  148. package/src/rerank/rerank.ts +8 -5
  149. package/src/telemetry/create-telemetry-dispatcher.ts +11 -1
  150. package/src/telemetry/diagnostic-channel-publisher.ts +50 -0
  151. package/src/telemetry/diagnostic-channel.ts +24 -0
  152. package/src/telemetry/index.ts +5 -0
  153. package/src/telemetry/telemetry.ts +1 -1
  154. package/src/test/mock-embedding-model-v2.ts +1 -1
  155. package/src/test/mock-embedding-model-v3.ts +1 -1
  156. package/src/test/mock-embedding-model-v4.ts +1 -1
  157. package/src/test/mock-image-model-v2.ts +1 -1
  158. package/src/test/mock-image-model-v3.ts +1 -1
  159. package/src/test/mock-image-model-v4.ts +1 -1
  160. package/src/test/mock-language-model-v2.ts +1 -1
  161. package/src/test/mock-language-model-v3.ts +1 -1
  162. package/src/test/mock-language-model-v4.ts +1 -1
  163. package/src/test/mock-provider-v2.ts +6 -7
  164. package/src/test/mock-provider-v3.ts +7 -8
  165. package/src/test/mock-provider-v4.ts +7 -8
  166. package/src/test/mock-reranking-model-v3.ts +1 -1
  167. package/src/test/mock-reranking-model-v4.ts +1 -1
  168. package/src/test/mock-server-response.ts +1 -1
  169. package/src/test/mock-speech-model-v2.ts +1 -1
  170. package/src/test/mock-speech-model-v3.ts +1 -1
  171. package/src/test/mock-speech-model-v4.ts +1 -1
  172. package/src/test/mock-transcription-model-v2.ts +1 -1
  173. package/src/test/mock-transcription-model-v3.ts +1 -1
  174. package/src/test/mock-transcription-model-v4.ts +1 -1
  175. package/src/test/mock-video-model-v3.ts +1 -1
  176. package/src/test/mock-video-model-v4.ts +1 -1
  177. package/src/text-stream/pipe-text-stream-to-response.ts +1 -1
  178. package/src/transcribe/transcribe-result.ts +3 -3
  179. package/src/transcribe/transcribe.ts +12 -12
  180. package/src/types/embedding-model-middleware.ts +1 -1
  181. package/src/types/embedding-model.ts +1 -1
  182. package/src/types/image-model-middleware.ts +1 -1
  183. package/src/types/image-model.ts +1 -1
  184. package/src/types/json-value.ts +1 -1
  185. package/src/types/language-model-middleware.ts +1 -1
  186. package/src/types/language-model.ts +2 -2
  187. package/src/types/provider-metadata.ts +1 -1
  188. package/src/types/provider-reference.ts +1 -1
  189. package/src/types/provider.ts +4 -4
  190. package/src/types/reranking-model.ts +1 -1
  191. package/src/types/speech-model.ts +5 -1
  192. package/src/types/transcription-model.ts +1 -1
  193. package/src/types/usage.ts +1 -1
  194. package/src/types/video-model.ts +1 -1
  195. package/src/types/warning.ts +1 -1
  196. package/src/ui/call-completion-api.ts +2 -2
  197. package/src/ui/chat-transport.ts +3 -3
  198. package/src/ui/chat.ts +10 -11
  199. package/src/ui/convert-file-list-to-file-ui-parts.ts +1 -1
  200. package/src/ui/convert-to-model-messages.ts +34 -23
  201. package/src/ui/default-chat-transport.ts +4 -4
  202. package/src/ui/direct-chat-transport.ts +6 -6
  203. package/src/ui/http-chat-transport.ts +5 -5
  204. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +0 -1
  205. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +0 -1
  206. package/src/ui/process-ui-message-stream.ts +20 -21
  207. package/src/ui/text-stream-chat-transport.ts +3 -3
  208. package/src/ui/transform-text-to-ui-message-stream.ts +1 -1
  209. package/src/ui/ui-messages.ts +13 -6
  210. package/src/ui/use-completion.ts +1 -1
  211. package/src/ui/validate-ui-messages.ts +3 -3
  212. package/src/ui-message-stream/create-ui-message-stream-response.ts +2 -2
  213. package/src/ui-message-stream/create-ui-message-stream.ts +6 -6
  214. package/src/ui-message-stream/get-response-ui-message-id.ts +2 -2
  215. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +6 -6
  216. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +3 -3
  217. package/src/ui-message-stream/read-ui-message-stream.ts +4 -4
  218. package/src/ui-message-stream/ui-message-chunks.ts +4 -4
  219. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +2 -2
  220. package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +1 -1
  221. package/src/ui-message-stream/ui-message-stream-writer.ts +3 -3
  222. package/src/upload-file/upload-file-result.ts +3 -3
  223. package/src/upload-file/upload-file.ts +34 -56
  224. package/src/upload-skill/upload-skill-result.ts +3 -3
  225. package/src/upload-skill/upload-skill.ts +27 -8
  226. package/src/util/create-resolvable-promise.ts +1 -1
  227. package/src/util/deep-partial.ts +1 -1
  228. package/src/util/download/download.ts +0 -2
  229. package/src/util/extract-literal-union.ts +18 -0
  230. package/src/util/is-node-runtime.ts +3 -0
  231. package/src/util/notify.ts +1 -1
  232. package/src/util/parse-partial-json.ts +1 -1
  233. package/src/util/prepare-retries.ts +1 -2
  234. package/src/util/serial-job-executor.ts +1 -1
  235. package/src/util/write-to-server-response.ts +1 -1
  236. package/src/util/detect-media-type.ts +0 -235
@@ -1,4 +1,7 @@
1
- import { LanguageModelV4Content, LanguageModelV4Text } from '@ai-sdk/provider';
1
+ import type {
2
+ LanguageModelV4Content,
3
+ LanguageModelV4Text,
4
+ } from '@ai-sdk/provider';
2
5
 
3
6
  export function extractTextContent(
4
7
  content: LanguageModelV4Content[],
@@ -9,11 +9,11 @@ import type { TimeoutConfiguration } from '../prompt/request-options';
9
9
  import type { StandardizedPrompt } from '../prompt/standardize-prompt';
10
10
  import type { ToolChoice } from '../types/language-model';
11
11
  import type { LanguageModelUsage } from '../types/usage';
12
- import { Callback } from '../util/callback';
12
+ import type { Callback } from '../util/callback';
13
13
  import type { ActiveTools } from './active-tools';
14
14
  import type { Output } from './output';
15
15
  import type { StepResult } from './step-result';
16
- import { TextStreamPart } from './stream-text-result';
16
+ import type { TextStreamPart } from './stream-text-result';
17
17
 
18
18
  /**
19
19
  * Event passed to the `onStart` callback.
@@ -1,18 +1,22 @@
1
1
  import type { Context, ToolSet } from '@ai-sdk/provider-utils';
2
- import { CallWarning, FinishReason, ProviderMetadata } from '../types';
3
- import { Source } from '../types/language-model';
4
- import { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';
5
- import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
6
- import { LanguageModelUsage } from '../types/usage';
7
- import { ContentPart } from './content-part';
8
- import { GeneratedFile } from './generated-file';
9
- import { Output } from './output';
10
- import { InferCompleteOutput } from './output-utils';
11
- import { ReasoningFileOutput, ReasoningOutput } from './reasoning-output';
12
- import { ResponseMessage } from './response-message';
13
- import { StepResult } from './step-result';
14
- import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call';
15
- import {
2
+ import type { CallWarning, FinishReason, ProviderMetadata } from '../types';
3
+ import type { Source } from '../types/language-model';
4
+ import type { LanguageModelRequestMetadata } from '../types/language-model-request-metadata';
5
+ import type { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
6
+ import type { LanguageModelUsage } from '../types/usage';
7
+ import type { ContentPart } from './content-part';
8
+ import type { GeneratedFile } from './generated-file';
9
+ import type { Output } from './output';
10
+ import type { InferCompleteOutput } from './output-utils';
11
+ import type { ReasoningFileOutput, ReasoningOutput } from './reasoning-output';
12
+ import type { ResponseMessage } from './response-message';
13
+ import type { StepResult } from './step-result';
14
+ import type {
15
+ DynamicToolCall,
16
+ StaticToolCall,
17
+ TypedToolCall,
18
+ } from './tool-call';
19
+ import type {
16
20
  DynamicToolResult,
17
21
  StaticToolResult,
18
22
  TypedToolResult,
@@ -1,46 +1,44 @@
1
- import {
1
+ import type {
2
2
  LanguageModelV4Content,
3
3
  LanguageModelV4GenerateResult,
4
4
  LanguageModelV4ToolCall,
5
5
  } from '@ai-sdk/provider';
6
- import type {
7
- Arrayable,
8
- Context,
9
- InferToolSetContext,
10
- SensitiveContext,
11
- ToolSet,
12
- } from '@ai-sdk/provider-utils';
13
6
  import {
14
7
  asArray,
15
8
  createIdGenerator,
16
9
  getErrorMessage,
17
- IdGenerator,
18
- ProviderOptions,
19
10
  withUserAgentSuffix,
11
+ type Arrayable,
12
+ type Context,
13
+ type InferToolSetContext,
14
+ type SensitiveContext,
15
+ type ToolSet,
16
+ type IdGenerator,
17
+ type ProviderOptions,
20
18
  } from '@ai-sdk/provider-utils';
21
19
  import { NoOutputGeneratedError } from '../error';
22
20
  import { ToolCallNotFoundForApprovalError } from '../error/tool-call-not-found-for-approval-error';
23
21
  import { logWarnings } from '../logger/log-warnings';
24
22
  import { resolveLanguageModel } from '../model/resolve-model';
25
- import { ModelMessage } from '../prompt';
23
+ import type { ModelMessage } from '../prompt';
26
24
  import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';
27
25
  import { createToolModelOutput } from '../prompt/create-tool-model-output';
28
- import { LanguageModelCallOptions } from '../prompt/language-model-call-options';
26
+ import type { LanguageModelCallOptions } from '../prompt/language-model-call-options';
29
27
  import { prepareLanguageModelCallOptions } from '../prompt/prepare-language-model-call-options';
30
28
  import { prepareToolChoice } from '../prompt/prepare-tool-choice';
31
29
  import { prepareTools } from '../prompt/prepare-tools';
32
- import { Prompt } from '../prompt/prompt';
30
+ import type { Prompt } from '../prompt/prompt';
33
31
  import {
34
32
  getStepTimeoutMs,
35
33
  getTotalTimeoutMs,
36
- RequestOptions,
37
- TimeoutConfiguration,
34
+ type RequestOptions,
35
+ type TimeoutConfiguration,
38
36
  } from '../prompt/request-options';
39
37
  import { standardizePrompt } from '../prompt/standardize-prompt';
40
38
  import { wrapGatewayError } from '../prompt/wrap-gateway-error';
41
39
  import type { Telemetry } from '../telemetry/telemetry';
42
- import { TelemetryOptions } from '../telemetry/telemetry-options';
43
- import {
40
+ import type { TelemetryOptions } from '../telemetry/telemetry-options';
41
+ import type {
44
42
  LanguageModel,
45
43
  LanguageModelRequestMetadata,
46
44
  ToolChoice,
@@ -48,9 +46,9 @@ import {
48
46
  import {
49
47
  addLanguageModelUsage,
50
48
  asLanguageModelUsage,
51
- LanguageModelUsage,
49
+ type LanguageModelUsage,
52
50
  } from '../types/usage';
53
- import { DownloadFunction } from '../util/download/download-function';
51
+ import type { DownloadFunction } from '../util/download/download-function';
54
52
  import { mergeAbortSignals } from '../util/merge-abort-signals';
55
53
  import { mergeObjects } from '../util/merge-objects';
56
54
  import { notify } from '../util/notify';
@@ -58,7 +56,7 @@ import { prepareRetries } from '../util/prepare-retries';
58
56
  import { VERSION } from '../version';
59
57
  import type { ActiveTools } from './active-tools';
60
58
  import { collectToolApprovals } from './collect-tool-approvals';
61
- import { ContentPart } from './content-part';
59
+ import type { ContentPart } from './content-part';
62
60
  import { executeToolCall } from './execute-tool-call';
63
61
  import { filterActiveTools } from './filter-active-tools';
64
62
  import type {
@@ -67,40 +65,40 @@ import type {
67
65
  GenerateTextOnStepFinishCallback,
68
66
  GenerateTextOnStepStartCallback,
69
67
  } from './generate-text-events';
70
- import { GenerateTextResult } from './generate-text-result';
68
+ import type { GenerateTextResult } from './generate-text-result';
71
69
  import { DefaultGeneratedFile } from './generated-file';
72
70
  import type {
73
71
  OnLanguageModelCallEndCallback,
74
72
  OnLanguageModelCallStartCallback,
75
73
  } from './language-model-events';
76
- import { Output, text } from './output';
77
- import { InferCompleteOutput } from './output-utils';
74
+ import { text, type Output } from './output';
75
+ import type { InferCompleteOutput } from './output-utils';
78
76
  import { parseToolCall } from './parse-tool-call';
79
- import { PrepareStepFunction } from './prepare-step';
77
+ import type { PrepareStepFunction } from './prepare-step';
80
78
  import { convertToReasoningOutputs } from './reasoning-output';
81
79
  import { createRestrictedTelemetryDispatcher } from './restricted-telemetry-dispatcher';
82
80
  import { resolveToolApproval } from './resolve-tool-approval';
83
- import { ResponseMessage } from './response-message';
84
- import { DefaultStepResult, StepResult } from './step-result';
81
+ import type { ResponseMessage } from './response-message';
82
+ import { DefaultStepResult, type StepResult } from './step-result';
85
83
  import {
86
84
  isStepCount,
87
85
  isStopConditionMet,
88
- StopCondition,
86
+ type StopCondition,
89
87
  } from './stop-condition';
90
88
  import { toResponseMessages } from './to-response-messages';
91
- import { ToolApprovalConfiguration } from './tool-approval-configuration';
92
- import { ToolApprovalRequestOutput } from './tool-approval-request-output';
93
- import { ToolApprovalResponseOutput } from './tool-approval-response-output';
94
- import { TypedToolCall } from './tool-call';
95
- import { ToolCallRepairFunction } from './tool-call-repair-function';
96
- import { TypedToolError } from './tool-error';
97
- import {
89
+ import type { ToolApprovalConfiguration } from './tool-approval-configuration';
90
+ import type { ToolApprovalRequestOutput } from './tool-approval-request-output';
91
+ import type { ToolApprovalResponseOutput } from './tool-approval-response-output';
92
+ import type { TypedToolCall } from './tool-call';
93
+ import type { ToolCallRepairFunction } from './tool-call-repair-function';
94
+ import type { TypedToolError } from './tool-error';
95
+ import type {
98
96
  OnToolExecutionEndCallback,
99
97
  OnToolExecutionStartCallback,
100
98
  } from './tool-execution-events';
101
- import { ToolOutput } from './tool-output';
102
- import { TypedToolResult } from './tool-result';
103
- import { ToolsContextParameter } from './tools-context-parameter';
99
+ import type { ToolOutput } from './tool-output';
100
+ import type { TypedToolResult } from './tool-result';
101
+ import type { ToolsContextParameter } from './tools-context-parameter';
104
102
 
105
103
  const originalGenerateId = createIdGenerator({
106
104
  prefix: 'aitxt',
@@ -1281,7 +1279,13 @@ function asContent<TOOLS extends ToolSet>({
1281
1279
  case 'reasoning-file': {
1282
1280
  contentParts.push({
1283
1281
  type: part.type as 'file' | 'reasoning-file',
1284
- file: new DefaultGeneratedFile(part),
1282
+ file: new DefaultGeneratedFile({
1283
+ data:
1284
+ part.data.type === 'data'
1285
+ ? part.data.data
1286
+ : part.data.url.toString(),
1287
+ mediaType: part.mediaType,
1288
+ }),
1285
1289
  ...(part.providerMetadata != null
1286
1290
  ? { providerMetadata: part.providerMetadata }
1287
1291
  : {}),
@@ -1,6 +1,5 @@
1
- import type { Context, ToolSet } from '@ai-sdk/provider-utils';
2
- import { ModelMessage } from '@ai-sdk/provider-utils';
3
- import { LanguageModelStreamPart } from './stream-language-model-call';
1
+ import type { Context, ModelMessage, ToolSet } from '@ai-sdk/provider-utils';
2
+ import type { LanguageModelStreamPart } from './stream-language-model-call';
4
3
 
5
4
  export function invokeToolCallbacksFromStream<
6
5
  TOOLS extends ToolSet,
@@ -1,4 +1,4 @@
1
- import { Output } from './output';
1
+ import type { Output } from './output';
2
2
 
3
3
  /**
4
4
  * Infers the complete output type from the output specification.
@@ -1,22 +1,22 @@
1
1
  import {
2
- JSONValue,
3
- LanguageModelV4CallOptions,
4
2
  TypeValidationError,
3
+ type JSONValue,
4
+ type LanguageModelV4CallOptions,
5
5
  } from '@ai-sdk/provider';
6
6
  import {
7
7
  asSchema,
8
- FlexibleSchema,
9
8
  resolve,
10
9
  safeParseJSON,
11
10
  safeValidateTypes,
11
+ type FlexibleSchema,
12
12
  } from '@ai-sdk/provider-utils';
13
13
  import { NoObjectGeneratedError } from '../error/no-object-generated-error';
14
- import { FinishReason } from '../types/language-model';
15
- import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
16
- import { LanguageModelUsage } from '../types/usage';
17
- import { DeepPartial } from '../util/deep-partial';
14
+ import type { FinishReason } from '../types/language-model';
15
+ import type { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
16
+ import type { LanguageModelUsage } from '../types/usage';
17
+ import type { DeepPartial } from '../util/deep-partial';
18
18
  import { parsePartialJson } from '../util/parse-partial-json';
19
- import { EnrichedStreamPart } from './stream-text';
19
+ import type { EnrichedStreamPart } from './stream-text';
20
20
 
21
21
  export interface Output<OUTPUT = any, PARTIAL = any, ELEMENT = any> {
22
22
  /**
@@ -1,17 +1,36 @@
1
- import { LanguageModelV4ToolCall } from '@ai-sdk/provider';
1
+ import type { LanguageModelV4ToolCall } from '@ai-sdk/provider';
2
2
  import {
3
3
  asSchema,
4
- ModelMessage,
5
4
  safeParseJSON,
6
5
  safeValidateTypes,
7
- SystemModelMessage,
6
+ type ToolSet,
7
+ type ModelMessage,
8
+ type SystemModelMessage,
8
9
  } from '@ai-sdk/provider-utils';
9
10
  import { InvalidToolInputError } from '../error/invalid-tool-input-error';
10
11
  import { NoSuchToolError } from '../error/no-such-tool-error';
11
12
  import { ToolCallRepairError } from '../error/tool-call-repair-error';
12
- import { DynamicToolCall, TypedToolCall } from './tool-call';
13
- import { ToolCallRepairFunction } from './tool-call-repair-function';
14
- import type { ToolSet } from '@ai-sdk/provider-utils';
13
+ import type { ProviderMetadata } from '../types';
14
+ import type { DynamicToolCall, TypedToolCall } from './tool-call';
15
+ import type { ToolCallRepairFunction } from './tool-call-repair-function';
16
+
17
+ /**
18
+ * Merge the tool's static `providerMetadata` (e.g. an MCP server name)
19
+ * with the `providerMetadata` returned by the language model on the tool
20
+ * call. Model-supplied metadata wins on conflicting top-level namespaces.
21
+ */
22
+ function mergeToolProviderMetadata(
23
+ toolMetadata: ProviderMetadata | undefined,
24
+ callMetadata: ProviderMetadata | undefined,
25
+ ): ProviderMetadata | undefined {
26
+ if (toolMetadata == null) {
27
+ return callMetadata;
28
+ }
29
+ if (callMetadata == null) {
30
+ return toolMetadata;
31
+ }
32
+ return { ...toolMetadata, ...callMetadata };
33
+ }
15
34
 
16
35
  export async function parseToolCall<TOOLS extends ToolSet>({
17
36
  toolCall,
@@ -93,7 +112,10 @@ export async function parseToolCall<TOOLS extends ToolSet>({
93
112
  error,
94
113
  title: tools?.[toolCall.toolName]?.title,
95
114
  providerExecuted: toolCall.providerExecuted,
96
- providerMetadata: toolCall.providerMetadata,
115
+ providerMetadata: mergeToolProviderMetadata(
116
+ tools?.[toolCall.toolName]?.providerMetadata,
117
+ toolCall.providerMetadata,
118
+ ),
97
119
  };
98
120
  }
99
121
  }
@@ -165,6 +187,11 @@ async function doParseToolCall<TOOLS extends ToolSet>({
165
187
  });
166
188
  }
167
189
 
190
+ const mergedProviderMetadata = mergeToolProviderMetadata(
191
+ tool.providerMetadata,
192
+ toolCall.providerMetadata,
193
+ );
194
+
168
195
  return tool.type === 'dynamic'
169
196
  ? {
170
197
  type: 'tool-call',
@@ -172,7 +199,7 @@ async function doParseToolCall<TOOLS extends ToolSet>({
172
199
  toolName: toolCall.toolName,
173
200
  input: parseResult.value,
174
201
  providerExecuted: toolCall.providerExecuted,
175
- providerMetadata: toolCall.providerMetadata,
202
+ providerMetadata: mergedProviderMetadata,
176
203
  dynamic: true,
177
204
  title: tool.title,
178
205
  }
@@ -182,7 +209,7 @@ async function doParseToolCall<TOOLS extends ToolSet>({
182
209
  toolName,
183
210
  input: parseResult.value,
184
211
  providerExecuted: toolCall.providerExecuted,
185
- providerMetadata: toolCall.providerMetadata,
212
+ providerMetadata: mergedProviderMetadata,
186
213
  title: tool.title,
187
214
  };
188
215
  }
@@ -1,16 +1,14 @@
1
1
  import type {
2
2
  Context,
3
3
  InferToolSetContext,
4
- ToolSet,
5
- } from '@ai-sdk/provider-utils';
6
- import {
7
4
  ModelMessage,
8
5
  ProviderOptions,
9
6
  SystemModelMessage,
7
+ ToolSet,
10
8
  } from '@ai-sdk/provider-utils';
11
- import { LanguageModel, ToolChoice } from '../types/language-model';
9
+ import type { LanguageModel, ToolChoice } from '../types/language-model';
12
10
  import type { ActiveTools } from './active-tools';
13
- import { StepResult } from './step-result';
11
+ import type { StepResult } from './step-result';
14
12
 
15
13
  /**
16
14
  * Function that you can use to provide different settings for a step.
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  AssistantModelMessage,
3
3
  ModelMessage,
4
4
  ToolModelMessage,
@@ -1,6 +1,19 @@
1
- import { ReasoningFilePart, ReasoningPart } from '@ai-sdk/provider-utils';
2
- import { ProviderMetadata } from '../types/provider-metadata';
3
- import { DefaultGeneratedFile, GeneratedFile } from './generated-file';
1
+ import type {
2
+ DataContent,
3
+ ReasoningFilePart,
4
+ ReasoningPart,
5
+ } from '@ai-sdk/provider-utils';
6
+ import type { ProviderMetadata } from '../types/provider-metadata';
7
+ import { DefaultGeneratedFile, type GeneratedFile } from './generated-file';
8
+
9
+ function unwrapReasoningFileData(
10
+ data: ReasoningFilePart['data'],
11
+ ): DataContent | URL {
12
+ if (typeof data === 'object' && data !== null && 'type' in data) {
13
+ return data.type === 'data' ? data.data : data.url;
14
+ }
15
+ return data;
16
+ }
4
17
 
5
18
  /**
6
19
  * Reasoning output of a text generation. It contains a reasoning.
@@ -80,15 +93,19 @@ export function convertToReasoningOutputs(
80
93
  };
81
94
  }
82
95
 
96
+ const rawData = unwrapReasoningFileData(part.data);
97
+
98
+ const fileData: string | Uint8Array =
99
+ rawData instanceof ArrayBuffer
100
+ ? new Uint8Array(rawData)
101
+ : rawData instanceof URL
102
+ ? rawData.toString()
103
+ : (rawData as string | Uint8Array);
104
+
83
105
  return {
84
106
  type: 'reasoning-file' as const,
85
107
  file: new DefaultGeneratedFile({
86
- data:
87
- part.data instanceof ArrayBuffer
88
- ? new Uint8Array(part.data)
89
- : part.data instanceof URL
90
- ? part.data.toString()
91
- : part.data,
108
+ data: fileData,
92
109
  mediaType: part.mediaType,
93
110
  }),
94
111
  ...(part.providerOptions != null
@@ -1,4 +1,4 @@
1
- import { ReasoningPart, ReasoningFilePart } from '@ai-sdk/provider-utils';
1
+ import type { ReasoningPart, ReasoningFilePart } from '@ai-sdk/provider-utils';
2
2
 
3
3
  export function asReasoningText(
4
4
  reasoningParts: Array<ReasoningPart | ReasoningFilePart>,
@@ -1,15 +1,15 @@
1
- import {
1
+ import type {
2
2
  Context,
3
3
  InferToolInput,
4
4
  InferToolSetContext,
5
5
  ModelMessage,
6
6
  ToolSet,
7
7
  } from '@ai-sdk/provider-utils';
8
- import {
8
+ import type {
9
9
  ToolApprovalConfiguration,
10
10
  ToolApprovalStatus,
11
11
  } from './tool-approval-configuration';
12
- import { TypedToolCall } from './tool-call';
12
+ import type { TypedToolCall } from './tool-call';
13
13
  import { validateToolContext } from './validate-tool-context';
14
14
 
15
15
  /**
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  AssistantModelMessage,
3
3
  ToolModelMessage,
4
4
  } from '@ai-sdk/provider-utils';
@@ -15,7 +15,7 @@ import type {
15
15
  GenerateTextOnStepStartCallback,
16
16
  } from './generate-text-events';
17
17
  import type { Output } from './output';
18
- import { DefaultStepResult, StepResult } from './step-result';
18
+ import { DefaultStepResult, type StepResult } from './step-result';
19
19
  import type {
20
20
  OnToolExecutionEndCallback,
21
21
  OnToolExecutionStartCallback,
@@ -1,8 +1,9 @@
1
- import { delay as originalDelay } from '@ai-sdk/provider-utils';
2
- import { SharedV4ProviderMetadata } from '@ai-sdk/provider';
3
- import { TextStreamPart } from './stream-text-result';
4
- import type { ToolSet } from '@ai-sdk/provider-utils';
5
- import { InvalidArgumentError } from '@ai-sdk/provider';
1
+ import { delay as originalDelay, type ToolSet } from '@ai-sdk/provider-utils';
2
+ import {
3
+ InvalidArgumentError,
4
+ type SharedV4ProviderMetadata,
5
+ } from '@ai-sdk/provider';
6
+ import type { TextStreamPart } from './stream-text-result';
6
7
 
7
8
  const CHUNKING_REGEXPS = {
8
9
  word: /\S+\s+/m,
@@ -1,29 +1,34 @@
1
1
  import type {
2
2
  Context,
3
3
  InferToolSetContext,
4
+ ReasoningFilePart,
5
+ ReasoningPart,
4
6
  ToolSet,
5
7
  } from '@ai-sdk/provider-utils';
6
- import { ReasoningFilePart, ReasoningPart } from '@ai-sdk/provider-utils';
7
- import {
8
+ import type {
8
9
  CallWarning,
9
10
  FinishReason,
10
11
  LanguageModelRequestMetadata,
11
12
  LanguageModelResponseMetadata,
12
13
  ProviderMetadata,
13
14
  } from '../types';
14
- import { Source } from '../types/language-model';
15
- import { LanguageModelUsage } from '../types/usage';
16
- import { ContentPart } from './content-part';
17
- import { GeneratedFile } from './generated-file';
15
+ import type { Source } from '../types/language-model';
16
+ import type { LanguageModelUsage } from '../types/usage';
17
+ import type { ContentPart } from './content-part';
18
+ import type { GeneratedFile } from './generated-file';
18
19
  import { asReasoningText } from './reasoning';
19
20
  import {
20
- ReasoningFileOutput,
21
- ReasoningOutput,
22
21
  convertFromReasoningOutputs,
22
+ type ReasoningFileOutput,
23
+ type ReasoningOutput,
23
24
  } from './reasoning-output';
24
- import { ResponseMessage } from './response-message';
25
- import { DynamicToolCall, StaticToolCall, TypedToolCall } from './tool-call';
26
- import {
25
+ import type { ResponseMessage } from './response-message';
26
+ import type {
27
+ DynamicToolCall,
28
+ StaticToolCall,
29
+ TypedToolCall,
30
+ } from './tool-call';
31
+ import type {
27
32
  DynamicToolResult,
28
33
  StaticToolResult,
29
34
  TypedToolResult,
@@ -1,5 +1,5 @@
1
1
  import type { Context, ToolSet } from '@ai-sdk/provider-utils';
2
- import { StepResult } from './step-result';
2
+ import type { StepResult } from './step-result';
3
3
 
4
4
  /**
5
5
  * A predicate that decides whether a tool-calling loop should stop after the
@@ -1,37 +1,39 @@
1
1
  import {
2
2
  getErrorMessage,
3
- LanguageModelV4Prompt,
4
- LanguageModelV4StreamPart,
5
- SharedV4Headers,
3
+ type LanguageModelV4Prompt,
4
+ type LanguageModelV4StreamPart,
5
+ type SharedV4Headers,
6
6
  } from '@ai-sdk/provider';
7
- import type { Arrayable, IdGenerator, ToolSet } from '@ai-sdk/provider-utils';
8
7
  import {
9
8
  createIdGenerator,
10
- ModelMessage,
11
- ProviderOptions,
12
- SystemModelMessage,
9
+ type Arrayable,
10
+ type IdGenerator,
11
+ type ToolSet,
12
+ type ModelMessage,
13
+ type ProviderOptions,
14
+ type SystemModelMessage,
13
15
  } from '@ai-sdk/provider-utils';
14
16
  import { ToolCallNotFoundForApprovalError } from '../error/tool-call-not-found-for-approval-error';
15
17
  import { resolveLanguageModel } from '../model/resolve-model';
16
- import { LanguageModelCallOptions } from '../prompt/language-model-call-options';
17
- import { Prompt } from '../prompt';
18
+ import type { LanguageModelCallOptions } from '../prompt/language-model-call-options';
19
+ import type { Prompt } from '../prompt';
18
20
  import { convertToLanguageModelPrompt } from '../prompt/convert-to-language-model-prompt';
19
21
  import { prepareToolChoice } from '../prompt/prepare-tool-choice';
20
22
  import { prepareTools } from '../prompt/prepare-tools';
21
23
  import { standardizePrompt } from '../prompt/standardize-prompt';
22
- import {
24
+ import type {
23
25
  CallWarning,
24
26
  FinishReason,
25
27
  LanguageModel,
26
28
  ToolChoice,
27
29
  } from '../types/language-model';
28
- import { ProviderMetadata } from '../types/provider-metadata';
29
- import { asLanguageModelUsage, LanguageModelUsage } from '../types/usage';
30
+ import type { ProviderMetadata } from '../types/provider-metadata';
31
+ import { asLanguageModelUsage, type LanguageModelUsage } from '../types/usage';
30
32
  import {
31
- AsyncIterableStream,
32
33
  createAsyncIterableStream,
34
+ type AsyncIterableStream,
33
35
  } from '../util/async-iterable-stream';
34
- import { DownloadFunction } from '../util/download/download-function';
36
+ import type { DownloadFunction } from '../util/download/download-function';
35
37
  import { notify } from '../util/notify';
36
38
  import type { ContentPart } from './content-part';
37
39
  import { DefaultGeneratedFileWithType } from './generated-file';
@@ -39,9 +41,9 @@ import type {
39
41
  OnLanguageModelCallEndCallback,
40
42
  OnLanguageModelCallStartCallback,
41
43
  } from './language-model-events';
42
- import { Output } from './output';
44
+ import type { Output } from './output';
43
45
  import { parseToolCall } from './parse-tool-call';
44
- import {
46
+ import type {
45
47
  TextStreamFilePart,
46
48
  TextStreamPart,
47
49
  TextStreamReasoningDeltaPart,
@@ -53,10 +55,10 @@ import {
53
55
  TextStreamToolErrorPart,
54
56
  TextStreamToolResultPart,
55
57
  } from './stream-text-result';
56
- import { TypedToolCall } from './tool-call';
57
- import { ToolCallRepairFunction } from './tool-call-repair-function';
58
- import { TypedToolError } from './tool-error';
59
- import { TypedToolResult } from './tool-result';
58
+ import type { TypedToolCall } from './tool-call';
59
+ import type { ToolCallRepairFunction } from './tool-call-repair-function';
60
+ import type { TypedToolError } from './tool-error';
61
+ import type { TypedToolResult } from './tool-result';
60
62
 
61
63
  const originalGenerateId = createIdGenerator({
62
64
  prefix: 'aitxt',
@@ -446,7 +448,10 @@ function createLanguageModelV4StreamPartToLanguageModelStreamPartTransform<
446
448
  case 'file':
447
449
  case 'reasoning-file': {
448
450
  const file = new DefaultGeneratedFileWithType({
449
- data: chunk.data,
451
+ data:
452
+ chunk.data.type === 'data'
453
+ ? chunk.data.data
454
+ : chunk.data.url.toString(),
450
455
  mediaType: chunk.mediaType,
451
456
  });
452
457