@ai-sdk/provider 4.0.0-beta.2 → 4.0.0-beta.20

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 (150) hide show
  1. package/CHANGELOG.md +136 -13
  2. package/dist/index.d.ts +1241 -449
  3. package/dist/index.js +53 -75
  4. package/dist/index.js.map +1 -1
  5. package/package.json +12 -12
  6. package/src/embedding-model/v2/embedding-model-v2.ts +2 -2
  7. package/src/embedding-model/v3/embedding-model-v3-call-options.ts +1 -1
  8. package/src/embedding-model/v3/embedding-model-v3-result.ts +2 -2
  9. package/src/embedding-model/v3/embedding-model-v3.ts +2 -2
  10. package/src/embedding-model/v4/embedding-model-v4-call-options.ts +1 -1
  11. package/src/embedding-model/v4/embedding-model-v4-result.ts +2 -2
  12. package/src/embedding-model/v4/embedding-model-v4.ts +2 -2
  13. package/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts +2 -2
  14. package/src/embedding-model-middleware/v4/embedding-model-v4-middleware.ts +2 -2
  15. package/src/errors/get-error-message.ts +1 -1
  16. package/src/errors/index.ts +1 -0
  17. package/src/errors/no-such-provider-reference-error.ts +35 -0
  18. package/src/files/index.ts +1 -0
  19. package/src/files/v4/files-v4-upload-file-call-options.ts +35 -0
  20. package/src/files/v4/files-v4-upload-file-result.ts +35 -0
  21. package/src/files/v4/files-v4.ts +25 -0
  22. package/src/files/v4/index.ts +3 -0
  23. package/src/image-model/v2/image-model-v2-call-options.ts +1 -1
  24. package/src/image-model/v2/image-model-v2-call-warning.ts +1 -1
  25. package/src/image-model/v2/image-model-v2.ts +3 -3
  26. package/src/image-model/v3/image-model-v3-call-options.ts +2 -2
  27. package/src/image-model/v3/image-model-v3-file.ts +1 -1
  28. package/src/image-model/v3/image-model-v3.ts +4 -4
  29. package/src/image-model/v4/image-model-v4-call-options.ts +2 -2
  30. package/src/image-model/v4/image-model-v4-file.ts +1 -1
  31. package/src/image-model/v4/image-model-v4-result.ts +73 -0
  32. package/src/image-model/v4/image-model-v4.ts +3 -70
  33. package/src/image-model/v4/index.ts +4 -3
  34. package/src/image-model-middleware/v3/image-model-v3-middleware.ts +2 -2
  35. package/src/image-model-middleware/v4/image-model-v4-middleware.ts +2 -2
  36. package/src/index.ts +3 -0
  37. package/src/json-value/is-json.ts +1 -1
  38. package/src/language-model/v2/language-model-v2-call-options.ts +6 -6
  39. package/src/language-model/v2/language-model-v2-call-warning.ts +3 -3
  40. package/src/language-model/v2/language-model-v2-content.ts +6 -6
  41. package/src/language-model/v2/language-model-v2-function-tool.ts +2 -2
  42. package/src/language-model/v2/language-model-v2-prompt.ts +3 -3
  43. package/src/language-model/v2/language-model-v2-reasoning.ts +1 -1
  44. package/src/language-model/v2/language-model-v2-source.ts +1 -1
  45. package/src/language-model/v2/language-model-v2-stream-part.ts +9 -9
  46. package/src/language-model/v2/language-model-v2-text.ts +1 -1
  47. package/src/language-model/v2/language-model-v2-tool-call.ts +1 -1
  48. package/src/language-model/v2/language-model-v2-tool-result.ts +1 -1
  49. package/src/language-model/v2/language-model-v2.ts +9 -9
  50. package/src/language-model/v3/language-model-v3-call-options.ts +6 -6
  51. package/src/language-model/v3/language-model-v3-content.ts +7 -7
  52. package/src/language-model/v3/language-model-v3-file.ts +1 -1
  53. package/src/language-model/v3/language-model-v3-function-tool.ts +3 -3
  54. package/src/language-model/v3/language-model-v3-generate-result.ts +6 -6
  55. package/src/language-model/v3/language-model-v3-prompt.ts +3 -3
  56. package/src/language-model/v3/language-model-v3-reasoning.ts +1 -1
  57. package/src/language-model/v3/language-model-v3-source.ts +1 -1
  58. package/src/language-model/v3/language-model-v3-stream-part.ts +10 -10
  59. package/src/language-model/v3/language-model-v3-stream-result.ts +2 -2
  60. package/src/language-model/v3/language-model-v3-text.ts +1 -1
  61. package/src/language-model/v3/language-model-v3-tool-approval-request.ts +1 -1
  62. package/src/language-model/v3/language-model-v3-tool-call.ts +1 -1
  63. package/src/language-model/v3/language-model-v3-tool-result.ts +2 -2
  64. package/src/language-model/v3/language-model-v3-usage.ts +1 -1
  65. package/src/language-model/v3/language-model-v3.ts +3 -3
  66. package/src/language-model/v4/index.ts +1 -1
  67. package/src/language-model/v4/language-model-v4-call-options.ts +19 -6
  68. package/src/language-model/v4/language-model-v4-content.ts +10 -8
  69. package/src/language-model/v4/language-model-v4-custom-content.ts +21 -0
  70. package/src/language-model/v4/language-model-v4-file.ts +10 -3
  71. package/src/language-model/v4/language-model-v4-function-tool.ts +3 -3
  72. package/src/language-model/v4/language-model-v4-generate-result.ts +6 -6
  73. package/src/language-model/v4/language-model-v4-prompt.ts +64 -103
  74. package/src/language-model/v4/language-model-v4-reasoning-file.ts +10 -3
  75. package/src/language-model/v4/language-model-v4-reasoning.ts +1 -1
  76. package/src/language-model/v4/language-model-v4-source.ts +1 -1
  77. package/src/language-model/v4/language-model-v4-stream-part.ts +13 -11
  78. package/src/language-model/v4/language-model-v4-stream-result.ts +2 -2
  79. package/src/language-model/v4/language-model-v4-text.ts +1 -1
  80. package/src/language-model/v4/language-model-v4-tool-approval-request.ts +1 -1
  81. package/src/language-model/v4/language-model-v4-tool-call.ts +1 -1
  82. package/src/language-model/v4/language-model-v4-tool-result.ts +2 -2
  83. package/src/language-model/v4/language-model-v4-usage.ts +1 -1
  84. package/src/language-model/v4/language-model-v4.ts +3 -3
  85. package/src/language-model-middleware/v2/language-model-v2-middleware.ts +2 -2
  86. package/src/language-model-middleware/v3/language-model-v3-middleware.ts +4 -4
  87. package/src/language-model-middleware/v4/language-model-v4-middleware.ts +4 -4
  88. package/src/provider/v2/provider-v2.ts +5 -5
  89. package/src/provider/v3/provider-v3.ts +6 -6
  90. package/src/provider/v4/provider-v4.ts +22 -6
  91. package/src/realtime-model/index.ts +1 -0
  92. package/src/realtime-model/v4/index.ts +20 -0
  93. package/src/realtime-model/v4/realtime-factory-v4.ts +20 -0
  94. package/src/realtime-model/v4/realtime-model-v4-client-event.ts +68 -0
  95. package/src/realtime-model/v4/realtime-model-v4-client-secret.ts +40 -0
  96. package/src/realtime-model/v4/realtime-model-v4-conversation-item.ts +55 -0
  97. package/src/realtime-model/v4/realtime-model-v4-server-event.ts +199 -0
  98. package/src/realtime-model/v4/realtime-model-v4-session-config.ts +142 -0
  99. package/src/realtime-model/v4/realtime-model-v4-tool-definition.ts +28 -0
  100. package/src/realtime-model/v4/realtime-model-v4.ts +89 -0
  101. package/src/reranking-model/v3/reranking-model-v3-call-options.ts +2 -2
  102. package/src/reranking-model/v3/reranking-model-v3.ts +2 -2
  103. package/src/reranking-model/v4/index.ts +1 -0
  104. package/src/reranking-model/v4/reranking-model-v4-call-options.ts +2 -2
  105. package/src/reranking-model/v4/reranking-model-v4-result.ts +68 -0
  106. package/src/reranking-model/v4/reranking-model-v4.ts +5 -65
  107. package/src/shared/v2/shared-v2-provider-metadata.ts +1 -1
  108. package/src/shared/v2/shared-v2-provider-options.ts +1 -1
  109. package/src/shared/v3/shared-v3-provider-metadata.ts +1 -1
  110. package/src/shared/v3/shared-v3-provider-options.ts +1 -1
  111. package/src/shared/v4/index.ts +2 -0
  112. package/src/shared/v4/shared-v4-file-data.ts +49 -0
  113. package/src/shared/v4/shared-v4-provider-metadata.ts +1 -1
  114. package/src/shared/v4/shared-v4-provider-options.ts +1 -1
  115. package/src/shared/v4/shared-v4-provider-reference.ts +22 -0
  116. package/src/shared/v4/shared-v4-warning.ts +16 -0
  117. package/src/skills/index.ts +1 -0
  118. package/src/skills/v4/index.ts +6 -0
  119. package/src/skills/v4/skills-v4-upload-skill-call-options.ts +37 -0
  120. package/src/skills/v4/skills-v4-upload-skill-result.ts +40 -0
  121. package/src/skills/v4/skills-v4.ts +28 -0
  122. package/src/speech-model/v2/speech-model-v2-call-options.ts +1 -1
  123. package/src/speech-model/v2/speech-model-v2-call-warning.ts +1 -1
  124. package/src/speech-model/v2/speech-model-v2.ts +4 -4
  125. package/src/speech-model/v3/speech-model-v3-call-options.ts +1 -1
  126. package/src/speech-model/v3/speech-model-v3.ts +4 -4
  127. package/src/speech-model/v4/index.ts +1 -0
  128. package/src/speech-model/v4/speech-model-v4-call-options.ts +1 -1
  129. package/src/speech-model/v4/speech-model-v4-result.ts +64 -0
  130. package/src/speech-model/v4/speech-model-v4.ts +5 -61
  131. package/src/transcription-model/v2/transcription-model-v2-call-options.ts +1 -1
  132. package/src/transcription-model/v2/transcription-model-v2-call-warning.ts +1 -1
  133. package/src/transcription-model/v2/transcription-model-v2.ts +4 -4
  134. package/src/transcription-model/v3/transcription-model-v3-call-options.ts +1 -1
  135. package/src/transcription-model/v3/transcription-model-v3.ts +4 -4
  136. package/src/transcription-model/v4/index.ts +1 -0
  137. package/src/transcription-model/v4/transcription-model-v4-call-options.ts +1 -1
  138. package/src/transcription-model/v4/transcription-model-v4-result.ts +92 -0
  139. package/src/transcription-model/v4/transcription-model-v4.ts +5 -89
  140. package/src/video-model/v3/video-model-v3-call-options.ts +7 -2
  141. package/src/video-model/v3/video-model-v3-file.ts +1 -1
  142. package/src/video-model/v4/index.ts +4 -3
  143. package/src/video-model/v4/video-model-v4-call-options.ts +7 -2
  144. package/src/video-model/v4/video-model-v4-file.ts +1 -1
  145. package/src/video-model/v4/video-model-v4-result.ts +92 -0
  146. package/src/video-model/v4/video-model-v4.ts +2 -88
  147. package/dist/index.d.mts +0 -6354
  148. package/dist/index.mjs +0 -404
  149. package/dist/index.mjs.map +0 -1
  150. package/src/language-model/v4/language-model-v4-data-content.ts +0 -4
@@ -1,5 +1,5 @@
1
- import { SharedV3Headers } from '../../shared';
2
- import { LanguageModelV3StreamPart } from './language-model-v3-stream-part';
1
+ import type { SharedV3Headers } from '../../shared';
2
+ import type { LanguageModelV3StreamPart } from './language-model-v3-stream-part';
3
3
 
4
4
  /**
5
5
  * The result of a language model doStream call.
@@ -1,4 +1,4 @@
1
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
1
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Text that the model has generated.
@@ -1,4 +1,4 @@
1
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
1
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Tool approval request emitted by a provider for a provider-executed tool call.
@@ -1,4 +1,4 @@
1
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
1
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Tool calls that the model has generated.
@@ -1,5 +1,5 @@
1
- import { JSONValue } from '../../json-value';
2
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
1
+ import type { JSONValue } from '../../json-value';
2
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
3
3
 
4
4
  /**
5
5
  * Result of a tool call that has been executed by the provider.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value';
1
+ import type { JSONObject } from '../../json-value';
2
2
 
3
3
  /**
4
4
  * Usage information for a language model call.
@@ -1,6 +1,6 @@
1
- import { LanguageModelV3CallOptions } from './language-model-v3-call-options';
2
- import { LanguageModelV3GenerateResult } from './language-model-v3-generate-result';
3
- import { LanguageModelV3StreamResult } from './language-model-v3-stream-result';
1
+ import type { LanguageModelV3CallOptions } from './language-model-v3-call-options';
2
+ import type { LanguageModelV3GenerateResult } from './language-model-v3-generate-result';
3
+ import type { LanguageModelV3StreamResult } from './language-model-v3-stream-result';
4
4
 
5
5
  /**
6
6
  * Specification for a language model that implements the language model interface version 3.
@@ -1,7 +1,7 @@
1
1
  export * from './language-model-v4';
2
2
  export * from './language-model-v4-call-options';
3
3
  export * from './language-model-v4-content';
4
- export * from './language-model-v4-data-content';
4
+ export * from './language-model-v4-custom-content';
5
5
  export * from './language-model-v4-file';
6
6
  export * from './language-model-v4-finish-reason';
7
7
  export * from './language-model-v4-function-tool';
@@ -1,9 +1,9 @@
1
- import { JSONSchema7 } from 'json-schema';
2
- import { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
3
- import { LanguageModelV4FunctionTool } from './language-model-v4-function-tool';
4
- import { LanguageModelV4Prompt } from './language-model-v4-prompt';
5
- import { LanguageModelV4ProviderTool } from './language-model-v4-provider-tool';
6
- import { LanguageModelV4ToolChoice } from './language-model-v4-tool-choice';
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ import type { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
3
+ import type { LanguageModelV4FunctionTool } from './language-model-v4-function-tool';
4
+ import type { LanguageModelV4Prompt } from './language-model-v4-prompt';
5
+ import type { LanguageModelV4ProviderTool } from './language-model-v4-provider-tool';
6
+ import type { LanguageModelV4ToolChoice } from './language-model-v4-tool-choice';
7
7
 
8
8
  export type LanguageModelV4CallOptions = {
9
9
  /**
@@ -116,6 +116,19 @@ export type LanguageModelV4CallOptions = {
116
116
  */
117
117
  headers?: Record<string, string | undefined>;
118
118
 
119
+ /**
120
+ * Reasoning effort level for the model. Controls how much reasoning
121
+ * the model performs before generating a response. Defaults to 'provider-default'.
122
+ */
123
+ reasoning?:
124
+ | 'provider-default'
125
+ | 'none'
126
+ | 'minimal'
127
+ | 'low'
128
+ | 'medium'
129
+ | 'high'
130
+ | 'xhigh';
131
+
119
132
  /**
120
133
  * Additional provider-specific options. They are passed through
121
134
  * to the provider from the AI SDK and enable provider-specific
@@ -1,15 +1,17 @@
1
- import { LanguageModelV4File } from './language-model-v4-file';
2
- import { LanguageModelV4Reasoning } from './language-model-v4-reasoning';
3
- import { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
4
- import { LanguageModelV4Source } from './language-model-v4-source';
5
- import { LanguageModelV4Text } from './language-model-v4-text';
6
- import { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
7
- import { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
8
- import { LanguageModelV4ToolResult } from './language-model-v4-tool-result';
1
+ import type { LanguageModelV4CustomContent } from './language-model-v4-custom-content';
2
+ import type { LanguageModelV4File } from './language-model-v4-file';
3
+ import type { LanguageModelV4Reasoning } from './language-model-v4-reasoning';
4
+ import type { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
5
+ import type { LanguageModelV4Source } from './language-model-v4-source';
6
+ import type { LanguageModelV4Text } from './language-model-v4-text';
7
+ import type { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
8
+ import type { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
9
+ import type { LanguageModelV4ToolResult } from './language-model-v4-tool-result';
9
10
 
10
11
  export type LanguageModelV4Content =
11
12
  | LanguageModelV4Text
12
13
  | LanguageModelV4Reasoning
14
+ | LanguageModelV4CustomContent
13
15
  | LanguageModelV4ReasoningFile
14
16
  | LanguageModelV4File
15
17
  | LanguageModelV4ToolApprovalRequest
@@ -0,0 +1,21 @@
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
+
3
+ /**
4
+ * A provider-specific content block that does not map to another standardized
5
+ * content part type.
6
+ */
7
+ export type LanguageModelV4CustomContent = {
8
+ type: 'custom';
9
+
10
+ /**
11
+ * The kind of custom content, in the format `{provider}.{provider-type}`.
12
+ */
13
+ kind: `${string}.${string}`;
14
+
15
+ /**
16
+ * Additional provider-specific options. They are passed through
17
+ * to the provider from the AI SDK and enable provider-specific
18
+ * functionality that can be fully encapsulated in the provider.
19
+ */
20
+ providerMetadata?: SharedV4ProviderMetadata;
21
+ };
@@ -1,4 +1,8 @@
1
- import { SharedV4ProviderMetadata } from '../../shared';
1
+ import type {
2
+ SharedV4FileDataData,
3
+ SharedV4FileDataUrl,
4
+ SharedV4ProviderMetadata,
5
+ } from '../../shared';
2
6
 
3
7
  /**
4
8
  * A file that has been generated by the model.
@@ -16,14 +20,17 @@ export type LanguageModelV4File = {
16
20
  mediaType: string;
17
21
 
18
22
  /**
19
- * Generated file data as base64 encoded strings or binary data.
23
+ * Generated file data as a tagged discriminated union:
24
+ *
25
+ * - `{ type: 'data', data }`: raw bytes (Uint8Array) or base64-encoded string.
26
+ * - `{ type: 'url', url }`: a URL that points to the file.
20
27
  *
21
28
  * The file data should be returned without any unnecessary conversion.
22
29
  * If the API returns base64 encoded strings, the file data should be returned
23
30
  * as base64 encoded strings. If the API returns binary data, the file data should
24
31
  * be returned as binary data.
25
32
  */
26
- data: string | Uint8Array;
33
+ data: SharedV4FileDataData | SharedV4FileDataUrl;
27
34
 
28
35
  /**
29
36
  * Optional provider-specific metadata for the file part.
@@ -1,6 +1,6 @@
1
- import { JSONSchema7 } from 'json-schema';
2
- import { SharedV4ProviderOptions } from '../../shared';
3
- import { JSONObject } from '../../json-value';
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ import type { SharedV4ProviderOptions } from '../../shared';
3
+ import type { JSONObject } from '../../json-value';
4
4
 
5
5
  /**
6
6
  * A tool has a name, a description, and a set of parameters.
@@ -1,9 +1,9 @@
1
- import { SharedV4Headers, SharedV4Warning } from '../../shared';
2
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
3
- import { LanguageModelV4Content } from './language-model-v4-content';
4
- import { LanguageModelV4FinishReason } from './language-model-v4-finish-reason';
5
- import { LanguageModelV4ResponseMetadata } from './language-model-v4-response-metadata';
6
- import { LanguageModelV4Usage } from './language-model-v4-usage';
1
+ import type { SharedV4Headers, SharedV4Warning } from '../../shared';
2
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
3
+ import type { LanguageModelV4Content } from './language-model-v4-content';
4
+ import type { LanguageModelV4FinishReason } from './language-model-v4-finish-reason';
5
+ import type { LanguageModelV4ResponseMetadata } from './language-model-v4-response-metadata';
6
+ import type { LanguageModelV4Usage } from './language-model-v4-usage';
7
7
 
8
8
  /**
9
9
  * The result of a language model doGenerate call.
@@ -1,6 +1,10 @@
1
- import { JSONValue } from '../../json-value/json-value';
2
- import { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
3
- import { LanguageModelV4DataContent } from './language-model-v4-data-content';
1
+ import type { JSONValue } from '../../json-value/json-value';
2
+ import type {
3
+ SharedV4FileData,
4
+ SharedV4FileDataData,
5
+ SharedV4FileDataUrl,
6
+ } from '../../shared/v4/shared-v4-file-data';
7
+ import type { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
4
8
 
5
9
  /**
6
10
  * A prompt is a list of messages.
@@ -31,6 +35,7 @@ export type LanguageModelV4Message =
31
35
  content: Array<
32
36
  | LanguageModelV4TextPart
33
37
  | LanguageModelV4FilePart
38
+ | LanguageModelV4CustomPart
34
39
  | LanguageModelV4ReasoningPart
35
40
  | LanguageModelV4ReasoningFilePart
36
41
  | LanguageModelV4ToolCallPart
@@ -98,9 +103,12 @@ export interface LanguageModelV4ReasoningFilePart {
98
103
  type: 'reasoning-file';
99
104
 
100
105
  /**
101
- * File data. Can be a Uint8Array, base64 encoded data as a string or a URL.
106
+ * File data as a tagged discriminated union:
107
+ *
108
+ * - `{ type: 'data', data }`: raw bytes (Uint8Array) or base64-encoded string.
109
+ * - `{ type: 'url', url }`: a URL that points to the file.
102
110
  */
103
- data: LanguageModelV4DataContent;
111
+ data: SharedV4FileDataData | SharedV4FileDataUrl;
104
112
 
105
113
  /**
106
114
  * IANA media type of the file.
@@ -117,6 +125,26 @@ export interface LanguageModelV4ReasoningFilePart {
117
125
  providerOptions?: SharedV4ProviderOptions;
118
126
  }
119
127
 
128
+ /**
129
+ * Provider-specific content part of a prompt. It contains no standardized
130
+ * payload beyond provider-specific options.
131
+ */
132
+ export interface LanguageModelV4CustomPart {
133
+ type: 'custom';
134
+
135
+ /**
136
+ * The kind of custom content, in the format `{provider}.{provider-type}`.
137
+ */
138
+ kind: `${string}.${string}`;
139
+
140
+ /**
141
+ * Additional provider-specific options. They are passed through
142
+ * to the provider from the AI SDK and enable provider-specific
143
+ * functionality that can be fully encapsulated in the provider.
144
+ */
145
+ providerOptions?: SharedV4ProviderOptions;
146
+ }
147
+
120
148
  /**
121
149
  * File content part of a prompt. It contains a file.
122
150
  */
@@ -129,14 +157,24 @@ export interface LanguageModelV4FilePart {
129
157
  filename?: string;
130
158
 
131
159
  /**
132
- * File data. Can be a Uint8Array, base64 encoded data as a string or a URL.
160
+ * File data as a tagged discriminated union:
161
+ *
162
+ * - `{ type: 'data', data }`: raw bytes (Uint8Array) or base64-encoded string.
163
+ * - `{ type: 'url', url }`: a URL that points to the file.
164
+ * - `{ type: 'reference', reference }`: a provider reference (`{ [provider]: id }`).
165
+ * - `{ type: 'text', text }`: inline text content (e.g. an inline text document).
133
166
  */
134
- data: LanguageModelV4DataContent;
167
+ data: SharedV4FileData;
135
168
 
136
169
  /**
137
- * IANA media type of the file.
170
+ * Either a full IANA media type (`type/subtype`, e.g. `image/png`) or just
171
+ * the top-level IANA segment (e.g. `image`, `audio`, `video`, `text`).
138
172
  *
139
- * Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action).
173
+ * `*`-subtype wildcards (e.g. `image/*`) are normalized as equivalent to the
174
+ * top-level segment alone (e.g. `image`). Providers can use the helpers in
175
+ * `@ai-sdk/provider-utils` (`isFullMediaType`, `getTopLevelMediaType`,
176
+ * `detectMediaType`) to resolve the field according to their API
177
+ * requirements.
140
178
  *
141
179
  * @see https://www.iana.org/assignments/media-types/media-types.xhtml
142
180
  */
@@ -320,15 +358,28 @@ export type LanguageModelV4ToolResultOutput =
320
358
  providerOptions?: SharedV4ProviderOptions;
321
359
  }
322
360
  | {
323
- type: 'file-data';
361
+ type: 'file';
324
362
 
325
363
  /**
326
- * Base-64 encoded media data.
364
+ * File data as a tagged discriminated union:
365
+ *
366
+ * - `{ type: 'data', data }`: raw bytes (Uint8Array) or base64-encoded string.
367
+ * - `{ type: 'url', url }`: a URL that points to the file.
368
+ * - `{ type: 'reference', reference }`: a provider reference (`{ [provider]: id }`).
369
+ * - `{ type: 'text', text }`: inline text content (e.g. an inline text document).
327
370
  */
328
- data: string;
371
+ data: SharedV4FileData;
329
372
 
330
373
  /**
331
- * IANA media type.
374
+ * Either a full IANA media type (`type/subtype`, e.g. `image/png`) or just
375
+ * the top-level IANA segment (e.g. `image`, `audio`, `video`, `text`).
376
+ *
377
+ * `*`-subtype wildcards (e.g. `image/*`) are normalized as equivalent to the
378
+ * top-level segment alone (e.g. `image`). Providers can use the helpers in
379
+ * `@ai-sdk/provider-utils` (`isFullMediaType`, `getTopLevelMediaType`,
380
+ * `detectMediaType`) to resolve the field according to their API
381
+ * requirements.
382
+ *
332
383
  * @see https://www.iana.org/assignments/media-types/media-types.xhtml
333
384
  */
334
385
  mediaType: string;
@@ -338,96 +389,6 @@ export type LanguageModelV4ToolResultOutput =
338
389
  */
339
390
  filename?: string;
340
391
 
341
- /**
342
- * Provider-specific options.
343
- */
344
- providerOptions?: SharedV4ProviderOptions;
345
- }
346
- | {
347
- type: 'file-url';
348
-
349
- /**
350
- * URL of the file.
351
- */
352
- url: string;
353
-
354
- /**
355
- * Provider-specific options.
356
- */
357
- providerOptions?: SharedV4ProviderOptions;
358
- }
359
- | {
360
- type: 'file-id';
361
-
362
- /**
363
- * ID of the file.
364
- *
365
- * If you use multiple providers, you need to
366
- * specify the provider specific ids using
367
- * the Record option. The key is the provider
368
- * name, e.g. 'openai' or 'anthropic'.
369
- */
370
- fileId: string | Record<string, string>;
371
-
372
- /**
373
- * Provider-specific options.
374
- */
375
- providerOptions?: SharedV4ProviderOptions;
376
- }
377
- | {
378
- /**
379
- * Images that are referenced using base64 encoded data.
380
- */
381
- type: 'image-data';
382
-
383
- /**
384
- * Base-64 encoded image data.
385
- */
386
- data: string;
387
-
388
- /**
389
- * IANA media type.
390
- * @see https://www.iana.org/assignments/media-types/media-types.xhtml
391
- */
392
- mediaType: string;
393
-
394
- /**
395
- * Provider-specific options.
396
- */
397
- providerOptions?: SharedV4ProviderOptions;
398
- }
399
- | {
400
- /**
401
- * Images that are referenced using a URL.
402
- */
403
- type: 'image-url';
404
-
405
- /**
406
- * URL of the image.
407
- */
408
- url: string;
409
-
410
- /**
411
- * Provider-specific options.
412
- */
413
- providerOptions?: SharedV4ProviderOptions;
414
- }
415
- | {
416
- /**
417
- * Images that are referenced using a provider file id.
418
- */
419
- type: 'image-file-id';
420
-
421
- /**
422
- * Image that is referenced using a provider file id.
423
- *
424
- * If you use multiple providers, you need to
425
- * specify the provider specific ids using
426
- * the Record option. The key is the provider
427
- * name, e.g. 'openai' or 'anthropic'.
428
- */
429
- fileId: string | Record<string, string>;
430
-
431
392
  /**
432
393
  * Provider-specific options.
433
394
  */
@@ -1,4 +1,8 @@
1
- import { SharedV4ProviderMetadata } from '../../shared';
1
+ import type {
2
+ SharedV4FileDataData,
3
+ SharedV4FileDataUrl,
4
+ SharedV4ProviderMetadata,
5
+ } from '../../shared';
2
6
 
3
7
  /**
4
8
  * A file that has been generated by the model as part of reasoning.
@@ -16,14 +20,17 @@ export type LanguageModelV4ReasoningFile = {
16
20
  mediaType: string;
17
21
 
18
22
  /**
19
- * Generated file data as base64 encoded strings or binary data.
23
+ * Generated file data as a tagged discriminated union:
24
+ *
25
+ * - `{ type: 'data', data }`: raw bytes (Uint8Array) or base64-encoded string.
26
+ * - `{ type: 'url', url }`: a URL that points to the file.
20
27
  *
21
28
  * The file data should be returned without any unnecessary conversion.
22
29
  * If the API returns base64 encoded strings, the file data should be returned
23
30
  * as base64 encoded strings. If the API returns binary data, the file data should
24
31
  * be returned as binary data.
25
32
  */
26
- data: string | Uint8Array;
33
+ data: SharedV4FileDataData | SharedV4FileDataUrl;
27
34
 
28
35
  /**
29
36
  * Optional provider-specific metadata for the reasoning file part.
@@ -1,4 +1,4 @@
1
- import { SharedV4ProviderMetadata } from '../../shared';
1
+ import type { SharedV4ProviderMetadata } from '../../shared';
2
2
 
3
3
  /**
4
4
  * Reasoning that the model has generated.
@@ -1,4 +1,4 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
2
 
3
3
  /**
4
4
  * A source that has been used as input to generate the response.
@@ -1,14 +1,15 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
- import { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
3
- import { LanguageModelV4File } from './language-model-v4-file';
4
- import { LanguageModelV4FinishReason } from './language-model-v4-finish-reason';
5
- import { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
6
- import { LanguageModelV4ResponseMetadata } from './language-model-v4-response-metadata';
7
- import { LanguageModelV4Source } from './language-model-v4-source';
8
- import { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
9
- import { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
10
- import { LanguageModelV4ToolResult } from './language-model-v4-tool-result';
11
- import { LanguageModelV4Usage } from './language-model-v4-usage';
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
+ import type { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
3
+ import type { LanguageModelV4CustomContent } from './language-model-v4-custom-content';
4
+ import type { LanguageModelV4File } from './language-model-v4-file';
5
+ import type { LanguageModelV4FinishReason } from './language-model-v4-finish-reason';
6
+ import type { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
7
+ import type { LanguageModelV4ResponseMetadata } from './language-model-v4-response-metadata';
8
+ import type { LanguageModelV4Source } from './language-model-v4-source';
9
+ import type { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
10
+ import type { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
11
+ import type { LanguageModelV4ToolResult } from './language-model-v4-tool-result';
12
+ import type { LanguageModelV4Usage } from './language-model-v4-usage';
12
13
 
13
14
  export type LanguageModelV4StreamPart =
14
15
  // Text blocks:
@@ -71,6 +72,7 @@ export type LanguageModelV4StreamPart =
71
72
  | LanguageModelV4ToolApprovalRequest
72
73
  | LanguageModelV4ToolCall
73
74
  | LanguageModelV4ToolResult
75
+ | LanguageModelV4CustomContent
74
76
 
75
77
  // Files and sources:
76
78
  | LanguageModelV4File
@@ -1,5 +1,5 @@
1
- import { SharedV4Headers } from '../../shared';
2
- import { LanguageModelV4StreamPart } from './language-model-v4-stream-part';
1
+ import type { SharedV4Headers } from '../../shared';
2
+ import type { LanguageModelV4StreamPart } from './language-model-v4-stream-part';
3
3
 
4
4
  /**
5
5
  * The result of a language model doStream call.
@@ -1,4 +1,4 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Text that the model has generated.
@@ -1,4 +1,4 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Tool approval request emitted by a provider for a provider-executed tool call.
@@ -1,4 +1,4 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
2
 
3
3
  /**
4
4
  * Tool calls that the model has generated.
@@ -1,5 +1,5 @@
1
- import { JSONValue } from '../../json-value';
2
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
1
+ import type { JSONValue } from '../../json-value';
2
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
3
3
 
4
4
  /**
5
5
  * Result of a tool call that has been executed by the provider.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value';
1
+ import type { JSONObject } from '../../json-value';
2
2
 
3
3
  /**
4
4
  * Usage information for a language model call.
@@ -1,6 +1,6 @@
1
- import { LanguageModelV4CallOptions } from './language-model-v4-call-options';
2
- import { LanguageModelV4GenerateResult } from './language-model-v4-generate-result';
3
- import { LanguageModelV4StreamResult } from './language-model-v4-stream-result';
1
+ import type { LanguageModelV4CallOptions } from './language-model-v4-call-options';
2
+ import type { LanguageModelV4GenerateResult } from './language-model-v4-generate-result';
3
+ import type { LanguageModelV4StreamResult } from './language-model-v4-stream-result';
4
4
 
5
5
  /**
6
6
  * Specification for a language model that implements the language model interface version 4.
@@ -1,5 +1,5 @@
1
- import { LanguageModelV2 } from '../../language-model/v2/language-model-v2';
2
- import { LanguageModelV2CallOptions } from '../../language-model/v2/language-model-v2-call-options';
1
+ import type { LanguageModelV2 } from '../../language-model/v2/language-model-v2';
2
+ import type { LanguageModelV2CallOptions } from '../../language-model/v2/language-model-v2-call-options';
3
3
 
4
4
  /**
5
5
  * Experimental middleware for LanguageModelV2.
@@ -1,7 +1,7 @@
1
- import { LanguageModelV3 } from '../../language-model/v3/language-model-v3';
2
- import { LanguageModelV3CallOptions } from '../../language-model/v3/language-model-v3-call-options';
3
- import { LanguageModelV3GenerateResult } from '../../language-model/v3/language-model-v3-generate-result';
4
- import { LanguageModelV3StreamResult } from '../../language-model/v3/language-model-v3-stream-result';
1
+ import type { LanguageModelV3 } from '../../language-model/v3/language-model-v3';
2
+ import type { LanguageModelV3CallOptions } from '../../language-model/v3/language-model-v3-call-options';
3
+ import type { LanguageModelV3GenerateResult } from '../../language-model/v3/language-model-v3-generate-result';
4
+ import type { LanguageModelV3StreamResult } from '../../language-model/v3/language-model-v3-stream-result';
5
5
 
6
6
  /**
7
7
  * Experimental middleware for LanguageModelV3.
@@ -1,7 +1,7 @@
1
- import { LanguageModelV4 } from '../../language-model/v4/language-model-v4';
2
- import { LanguageModelV4CallOptions } from '../../language-model/v4/language-model-v4-call-options';
3
- import { LanguageModelV4GenerateResult } from '../../language-model/v4/language-model-v4-generate-result';
4
- import { LanguageModelV4StreamResult } from '../../language-model/v4/language-model-v4-stream-result';
1
+ import type { LanguageModelV4 } from '../../language-model/v4/language-model-v4';
2
+ import type { LanguageModelV4CallOptions } from '../../language-model/v4/language-model-v4-call-options';
3
+ import type { LanguageModelV4GenerateResult } from '../../language-model/v4/language-model-v4-generate-result';
4
+ import type { LanguageModelV4StreamResult } from '../../language-model/v4/language-model-v4-stream-result';
5
5
 
6
6
  /**
7
7
  * Experimental middleware for LanguageModelV4.
@@ -1,8 +1,8 @@
1
- import { EmbeddingModelV2 } from '../../embedding-model/v2/embedding-model-v2';
2
- import { ImageModelV2 } from '../../image-model/v2/image-model-v2';
3
- import { LanguageModelV2 } from '../../language-model/v2/language-model-v2';
4
- import { SpeechModelV2 } from '../../speech-model/v2/speech-model-v2';
5
- import { TranscriptionModelV2 } from '../../transcription-model/v2/transcription-model-v2';
1
+ import type { EmbeddingModelV2 } from '../../embedding-model/v2/embedding-model-v2';
2
+ import type { ImageModelV2 } from '../../image-model/v2/image-model-v2';
3
+ import type { LanguageModelV2 } from '../../language-model/v2/language-model-v2';
4
+ import type { SpeechModelV2 } from '../../speech-model/v2/speech-model-v2';
5
+ import type { TranscriptionModelV2 } from '../../transcription-model/v2/transcription-model-v2';
6
6
 
7
7
  /**
8
8
  * Provider for language, text embedding, and image generation models.