@ai-sdk/provider 4.0.0-beta.13 → 4.0.0-beta.19

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 (132) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/index.d.ts +626 -67
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -4
  5. package/src/embedding-model/v2/embedding-model-v2.ts +2 -2
  6. package/src/embedding-model/v3/embedding-model-v3-call-options.ts +1 -1
  7. package/src/embedding-model/v3/embedding-model-v3-result.ts +2 -2
  8. package/src/embedding-model/v3/embedding-model-v3.ts +2 -2
  9. package/src/embedding-model/v4/embedding-model-v4-call-options.ts +1 -1
  10. package/src/embedding-model/v4/embedding-model-v4-result.ts +2 -2
  11. package/src/embedding-model/v4/embedding-model-v4.ts +2 -2
  12. package/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts +2 -2
  13. package/src/embedding-model-middleware/v4/embedding-model-v4-middleware.ts +2 -2
  14. package/src/errors/no-such-provider-reference-error.ts +1 -1
  15. package/src/files/v4/files-v4-upload-file-call-options.ts +10 -3
  16. package/src/files/v4/files-v4-upload-file-result.ts +3 -3
  17. package/src/files/v4/files-v4.ts +2 -2
  18. package/src/image-model/v2/image-model-v2-call-options.ts +1 -1
  19. package/src/image-model/v2/image-model-v2-call-warning.ts +1 -1
  20. package/src/image-model/v2/image-model-v2.ts +3 -3
  21. package/src/image-model/v3/image-model-v3-call-options.ts +2 -2
  22. package/src/image-model/v3/image-model-v3-file.ts +1 -1
  23. package/src/image-model/v3/image-model-v3.ts +4 -4
  24. package/src/image-model/v4/image-model-v4-call-options.ts +2 -2
  25. package/src/image-model/v4/image-model-v4-file.ts +1 -1
  26. package/src/image-model/v4/image-model-v4-result.ts +3 -3
  27. package/src/image-model/v4/image-model-v4.ts +2 -2
  28. package/src/image-model-middleware/v3/image-model-v3-middleware.ts +2 -2
  29. package/src/image-model-middleware/v4/image-model-v4-middleware.ts +2 -2
  30. package/src/index.ts +1 -0
  31. package/src/json-value/is-json.ts +1 -1
  32. package/src/language-model/v2/language-model-v2-call-options.ts +6 -6
  33. package/src/language-model/v2/language-model-v2-call-warning.ts +3 -3
  34. package/src/language-model/v2/language-model-v2-content.ts +6 -6
  35. package/src/language-model/v2/language-model-v2-function-tool.ts +2 -2
  36. package/src/language-model/v2/language-model-v2-prompt.ts +3 -3
  37. package/src/language-model/v2/language-model-v2-reasoning.ts +1 -1
  38. package/src/language-model/v2/language-model-v2-source.ts +1 -1
  39. package/src/language-model/v2/language-model-v2-stream-part.ts +9 -9
  40. package/src/language-model/v2/language-model-v2-text.ts +1 -1
  41. package/src/language-model/v2/language-model-v2-tool-call.ts +1 -1
  42. package/src/language-model/v2/language-model-v2-tool-result.ts +1 -1
  43. package/src/language-model/v2/language-model-v2.ts +9 -9
  44. package/src/language-model/v3/language-model-v3-call-options.ts +6 -6
  45. package/src/language-model/v3/language-model-v3-content.ts +7 -7
  46. package/src/language-model/v3/language-model-v3-file.ts +1 -1
  47. package/src/language-model/v3/language-model-v3-function-tool.ts +3 -3
  48. package/src/language-model/v3/language-model-v3-generate-result.ts +6 -6
  49. package/src/language-model/v3/language-model-v3-prompt.ts +3 -3
  50. package/src/language-model/v3/language-model-v3-reasoning.ts +1 -1
  51. package/src/language-model/v3/language-model-v3-source.ts +1 -1
  52. package/src/language-model/v3/language-model-v3-stream-part.ts +10 -10
  53. package/src/language-model/v3/language-model-v3-stream-result.ts +2 -2
  54. package/src/language-model/v3/language-model-v3-text.ts +1 -1
  55. package/src/language-model/v3/language-model-v3-tool-approval-request.ts +1 -1
  56. package/src/language-model/v3/language-model-v3-tool-call.ts +1 -1
  57. package/src/language-model/v3/language-model-v3-tool-result.ts +2 -2
  58. package/src/language-model/v3/language-model-v3-usage.ts +1 -1
  59. package/src/language-model/v3/language-model-v3.ts +3 -3
  60. package/src/language-model/v4/index.ts +0 -1
  61. package/src/language-model/v4/language-model-v4-call-options.ts +6 -6
  62. package/src/language-model/v4/language-model-v4-content.ts +9 -9
  63. package/src/language-model/v4/language-model-v4-custom-content.ts +1 -1
  64. package/src/language-model/v4/language-model-v4-file.ts +10 -3
  65. package/src/language-model/v4/language-model-v4-function-tool.ts +3 -3
  66. package/src/language-model/v4/language-model-v4-generate-result.ts +6 -6
  67. package/src/language-model/v4/language-model-v4-prompt.ts +43 -48
  68. package/src/language-model/v4/language-model-v4-reasoning-file.ts +10 -3
  69. package/src/language-model/v4/language-model-v4-reasoning.ts +1 -1
  70. package/src/language-model/v4/language-model-v4-source.ts +1 -1
  71. package/src/language-model/v4/language-model-v4-stream-part.ts +12 -12
  72. package/src/language-model/v4/language-model-v4-stream-result.ts +2 -2
  73. package/src/language-model/v4/language-model-v4-text.ts +1 -1
  74. package/src/language-model/v4/language-model-v4-tool-approval-request.ts +1 -1
  75. package/src/language-model/v4/language-model-v4-tool-call.ts +1 -1
  76. package/src/language-model/v4/language-model-v4-tool-result.ts +2 -2
  77. package/src/language-model/v4/language-model-v4-usage.ts +1 -1
  78. package/src/language-model/v4/language-model-v4.ts +3 -3
  79. package/src/language-model-middleware/v2/language-model-v2-middleware.ts +2 -2
  80. package/src/language-model-middleware/v3/language-model-v3-middleware.ts +4 -4
  81. package/src/language-model-middleware/v4/language-model-v4-middleware.ts +4 -4
  82. package/src/provider/v2/provider-v2.ts +5 -5
  83. package/src/provider/v3/provider-v3.ts +6 -6
  84. package/src/provider/v4/provider-v4.ts +8 -8
  85. package/src/realtime-model/index.ts +1 -0
  86. package/src/realtime-model/v4/index.ts +20 -0
  87. package/src/realtime-model/v4/realtime-factory-v4.ts +20 -0
  88. package/src/realtime-model/v4/realtime-model-v4-client-event.ts +68 -0
  89. package/src/realtime-model/v4/realtime-model-v4-client-secret.ts +40 -0
  90. package/src/realtime-model/v4/realtime-model-v4-conversation-item.ts +55 -0
  91. package/src/realtime-model/v4/realtime-model-v4-server-event.ts +199 -0
  92. package/src/realtime-model/v4/realtime-model-v4-session-config.ts +142 -0
  93. package/src/realtime-model/v4/realtime-model-v4-tool-definition.ts +28 -0
  94. package/src/realtime-model/v4/realtime-model-v4.ts +89 -0
  95. package/src/reranking-model/v3/reranking-model-v3-call-options.ts +2 -2
  96. package/src/reranking-model/v3/reranking-model-v3.ts +2 -2
  97. package/src/reranking-model/v4/reranking-model-v4-call-options.ts +2 -2
  98. package/src/reranking-model/v4/reranking-model-v4-result.ts +1 -1
  99. package/src/reranking-model/v4/reranking-model-v4.ts +2 -2
  100. package/src/shared/v2/shared-v2-provider-metadata.ts +1 -1
  101. package/src/shared/v2/shared-v2-provider-options.ts +1 -1
  102. package/src/shared/v3/shared-v3-provider-metadata.ts +1 -1
  103. package/src/shared/v3/shared-v3-provider-options.ts +1 -1
  104. package/src/shared/v4/index.ts +1 -0
  105. package/src/shared/v4/shared-v4-file-data.ts +49 -0
  106. package/src/shared/v4/shared-v4-provider-metadata.ts +1 -1
  107. package/src/shared/v4/shared-v4-provider-options.ts +1 -1
  108. package/src/shared/v4/shared-v4-provider-reference.ts +8 -1
  109. package/src/skills/v4/skills-v4-upload-skill-call-options.ts +10 -3
  110. package/src/skills/v4/skills-v4-upload-skill-result.ts +3 -3
  111. package/src/skills/v4/skills-v4.ts +2 -2
  112. package/src/speech-model/v2/speech-model-v2-call-options.ts +1 -1
  113. package/src/speech-model/v2/speech-model-v2-call-warning.ts +1 -1
  114. package/src/speech-model/v2/speech-model-v2.ts +4 -4
  115. package/src/speech-model/v3/speech-model-v3-call-options.ts +1 -1
  116. package/src/speech-model/v3/speech-model-v3.ts +4 -4
  117. package/src/speech-model/v4/speech-model-v4-call-options.ts +1 -1
  118. package/src/speech-model/v4/speech-model-v4-result.ts +3 -3
  119. package/src/speech-model/v4/speech-model-v4.ts +2 -2
  120. package/src/transcription-model/v2/transcription-model-v2-call-options.ts +1 -1
  121. package/src/transcription-model/v2/transcription-model-v2-call-warning.ts +1 -1
  122. package/src/transcription-model/v2/transcription-model-v2.ts +4 -4
  123. package/src/transcription-model/v3/transcription-model-v3-call-options.ts +1 -1
  124. package/src/transcription-model/v3/transcription-model-v3.ts +4 -4
  125. package/src/transcription-model/v4/transcription-model-v4-call-options.ts +1 -1
  126. package/src/transcription-model/v4/transcription-model-v4-result.ts +3 -3
  127. package/src/transcription-model/v4/transcription-model-v4.ts +2 -2
  128. package/src/video-model/v3/video-model-v3-call-options.ts +2 -2
  129. package/src/video-model/v3/video-model-v3-file.ts +1 -1
  130. package/src/video-model/v4/video-model-v4-call-options.ts +2 -2
  131. package/src/video-model/v4/video-model-v4-file.ts +1 -1
  132. package/src/language-model/v4/language-model-v4-data-content.ts +0 -4
@@ -1,10 +1,10 @@
1
- import { LanguageModelV3File } from './language-model-v3-file';
2
- import { LanguageModelV3Reasoning } from './language-model-v3-reasoning';
3
- import { LanguageModelV3Source } from './language-model-v3-source';
4
- import { LanguageModelV3Text } from './language-model-v3-text';
5
- import { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request';
6
- import { LanguageModelV3ToolCall } from './language-model-v3-tool-call';
7
- import { LanguageModelV3ToolResult } from './language-model-v3-tool-result';
1
+ import type { LanguageModelV3File } from './language-model-v3-file';
2
+ import type { LanguageModelV3Reasoning } from './language-model-v3-reasoning';
3
+ import type { LanguageModelV3Source } from './language-model-v3-source';
4
+ import type { LanguageModelV3Text } from './language-model-v3-text';
5
+ import type { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request';
6
+ import type { LanguageModelV3ToolCall } from './language-model-v3-tool-call';
7
+ import type { LanguageModelV3ToolResult } from './language-model-v3-tool-result';
8
8
 
9
9
  export type LanguageModelV3Content =
10
10
  | LanguageModelV3Text
@@ -1,4 +1,4 @@
1
- import { SharedV3ProviderMetadata } from '../../shared';
1
+ import type { SharedV3ProviderMetadata } from '../../shared';
2
2
 
3
3
  /**
4
4
  * A file that has been generated by the model.
@@ -1,6 +1,6 @@
1
- import { JSONSchema7 } from 'json-schema';
2
- import { SharedV3ProviderOptions } from '../../shared';
3
- import { JSONObject } from '../../json-value';
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ import type { SharedV3ProviderOptions } 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 { SharedV3Headers, SharedV3Warning } from '../../shared';
2
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
3
- import { LanguageModelV3Content } from './language-model-v3-content';
4
- import { LanguageModelV3FinishReason } from './language-model-v3-finish-reason';
5
- import { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata';
6
- import { LanguageModelV3Usage } from './language-model-v3-usage';
1
+ import type { SharedV3Headers, SharedV3Warning } from '../../shared';
2
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
3
+ import type { LanguageModelV3Content } from './language-model-v3-content';
4
+ import type { LanguageModelV3FinishReason } from './language-model-v3-finish-reason';
5
+ import type { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata';
6
+ import type { LanguageModelV3Usage } from './language-model-v3-usage';
7
7
 
8
8
  /**
9
9
  * The result of a language model doGenerate call.
@@ -1,6 +1,6 @@
1
- import { JSONValue } from '../../json-value/json-value';
2
- import { SharedV3ProviderOptions } from '../../shared/v3/shared-v3-provider-options';
3
- import { LanguageModelV3DataContent } from './language-model-v3-data-content';
1
+ import type { JSONValue } from '../../json-value/json-value';
2
+ import type { SharedV3ProviderOptions } from '../../shared/v3/shared-v3-provider-options';
3
+ import type { LanguageModelV3DataContent } from './language-model-v3-data-content';
4
4
 
5
5
  /**
6
6
  * A prompt is a list of messages.
@@ -1,4 +1,4 @@
1
- import { SharedV3ProviderMetadata } from '../../shared';
1
+ import type { SharedV3ProviderMetadata } from '../../shared';
2
2
 
3
3
  /**
4
4
  * Reasoning 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
  * A source that has been used as input to generate the response.
@@ -1,13 +1,13 @@
1
- import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
- import { SharedV3Warning } from '../../shared/v3/shared-v3-warning';
3
- import { LanguageModelV3File } from './language-model-v3-file';
4
- import { LanguageModelV3FinishReason } from './language-model-v3-finish-reason';
5
- import { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata';
6
- import { LanguageModelV3Source } from './language-model-v3-source';
7
- import { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request';
8
- import { LanguageModelV3ToolCall } from './language-model-v3-tool-call';
9
- import { LanguageModelV3ToolResult } from './language-model-v3-tool-result';
10
- import { LanguageModelV3Usage } from './language-model-v3-usage';
1
+ import type { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
+ import type { SharedV3Warning } from '../../shared/v3/shared-v3-warning';
3
+ import type { LanguageModelV3File } from './language-model-v3-file';
4
+ import type { LanguageModelV3FinishReason } from './language-model-v3-finish-reason';
5
+ import type { LanguageModelV3ResponseMetadata } from './language-model-v3-response-metadata';
6
+ import type { LanguageModelV3Source } from './language-model-v3-source';
7
+ import type { LanguageModelV3ToolApprovalRequest } from './language-model-v3-tool-approval-request';
8
+ import type { LanguageModelV3ToolCall } from './language-model-v3-tool-call';
9
+ import type { LanguageModelV3ToolResult } from './language-model-v3-tool-result';
10
+ import type { LanguageModelV3Usage } from './language-model-v3-usage';
11
11
 
12
12
  export type LanguageModelV3StreamPart =
13
13
  // Text blocks:
@@ -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.
@@ -2,7 +2,6 @@ export * from './language-model-v4';
2
2
  export * from './language-model-v4-call-options';
3
3
  export * from './language-model-v4-content';
4
4
  export * from './language-model-v4-custom-content';
5
- export * from './language-model-v4-data-content';
6
5
  export * from './language-model-v4-file';
7
6
  export * from './language-model-v4-finish-reason';
8
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
  /**
@@ -1,12 +1,12 @@
1
- import { LanguageModelV4CustomContent } from './language-model-v4-custom-content';
2
- import { LanguageModelV4File } from './language-model-v4-file';
3
- import { LanguageModelV4Reasoning } from './language-model-v4-reasoning';
4
- import { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
5
- import { LanguageModelV4Source } from './language-model-v4-source';
6
- import { LanguageModelV4Text } from './language-model-v4-text';
7
- import { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
8
- import { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
9
- 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';
10
10
 
11
11
  export type LanguageModelV4Content =
12
12
  | LanguageModelV4Text
@@ -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 provider-specific content block that does not map to another standardized
@@ -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,7 +1,10 @@
1
- import { JSONValue } from '../../json-value/json-value';
2
- import { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
3
- import { SharedV4ProviderReference } from '../../shared/v4/shared-v4-provider-reference';
4
- 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';
5
8
 
6
9
  /**
7
10
  * A prompt is a list of messages.
@@ -100,9 +103,12 @@ export interface LanguageModelV4ReasoningFilePart {
100
103
  type: 'reasoning-file';
101
104
 
102
105
  /**
103
- * File data. Can be a Uint8Array or base64 encoded data as a string.
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.
104
110
  */
105
- data: LanguageModelV4DataContent;
111
+ data: SharedV4FileDataData | SharedV4FileDataUrl;
106
112
 
107
113
  /**
108
114
  * IANA media type of the file.
@@ -151,15 +157,24 @@ export interface LanguageModelV4FilePart {
151
157
  filename?: string;
152
158
 
153
159
  /**
154
- * File data. Can be a Uint8Array, base64 encoded data as a string, a URL,
155
- * or a provider reference mapping provider names to provider-specific file IDs.
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).
156
166
  */
157
- data: LanguageModelV4DataContent | SharedV4ProviderReference;
167
+ data: SharedV4FileData;
158
168
 
159
169
  /**
160
- * 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`).
161
172
  *
162
- * 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.
163
178
  *
164
179
  * @see https://www.iana.org/assignments/media-types/media-types.xhtml
165
180
  */
@@ -343,15 +358,28 @@ export type LanguageModelV4ToolResultOutput =
343
358
  providerOptions?: SharedV4ProviderOptions;
344
359
  }
345
360
  | {
346
- type: 'file-data';
361
+ type: 'file';
347
362
 
348
363
  /**
349
- * 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).
350
370
  */
351
- data: string;
371
+ data: SharedV4FileData;
352
372
 
353
373
  /**
354
- * 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
+ *
355
383
  * @see https://www.iana.org/assignments/media-types/media-types.xhtml
356
384
  */
357
385
  mediaType: string;
@@ -361,39 +389,6 @@ export type LanguageModelV4ToolResultOutput =
361
389
  */
362
390
  filename?: string;
363
391
 
364
- /**
365
- * Provider-specific options.
366
- */
367
- providerOptions?: SharedV4ProviderOptions;
368
- }
369
- | {
370
- type: 'file-url';
371
-
372
- /**
373
- * URL of the file.
374
- */
375
- url: string;
376
-
377
- /**
378
- * IANA media type.
379
- * @see https://www.iana.org/assignments/media-types/media-types.xhtml
380
- */
381
- mediaType: string;
382
-
383
- /**
384
- * Provider-specific options.
385
- */
386
- providerOptions?: SharedV4ProviderOptions;
387
- }
388
- | {
389
- type: 'file-reference';
390
-
391
- /**
392
- * Provider-specific references for the file.
393
- * The key is the provider name, e.g. 'openai' or 'anthropic'.
394
- */
395
- providerReference: SharedV4ProviderReference;
396
-
397
392
  /**
398
393
  * Provider-specific options.
399
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,15 +1,15 @@
1
- import { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
- import { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
3
- import { LanguageModelV4CustomContent } from './language-model-v4-custom-content';
4
- import { LanguageModelV4File } from './language-model-v4-file';
5
- import { LanguageModelV4FinishReason } from './language-model-v4-finish-reason';
6
- import { LanguageModelV4ReasoningFile } from './language-model-v4-reasoning-file';
7
- import { LanguageModelV4ResponseMetadata } from './language-model-v4-response-metadata';
8
- import { LanguageModelV4Source } from './language-model-v4-source';
9
- import { LanguageModelV4ToolApprovalRequest } from './language-model-v4-tool-approval-request';
10
- import { LanguageModelV4ToolCall } from './language-model-v4-tool-call';
11
- import { LanguageModelV4ToolResult } from './language-model-v4-tool-result';
12
- 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';
13
13
 
14
14
  export type LanguageModelV4StreamPart =
15
15
  // Text blocks:
@@ -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.
@@ -1,9 +1,9 @@
1
- import { EmbeddingModelV3 } from '../../embedding-model/v3/embedding-model-v3';
2
- import { ImageModelV3 } from '../../image-model/v3/image-model-v3';
3
- import { LanguageModelV3 } from '../../language-model/v3/language-model-v3';
4
- import { RerankingModelV3 } from '../../reranking-model/v3/reranking-model-v3';
5
- import { SpeechModelV3 } from '../../speech-model/v3/speech-model-v3';
6
- import { TranscriptionModelV3 } from '../../transcription-model/v3/transcription-model-v3';
1
+ import type { EmbeddingModelV3 } from '../../embedding-model/v3/embedding-model-v3';
2
+ import type { ImageModelV3 } from '../../image-model/v3/image-model-v3';
3
+ import type { LanguageModelV3 } from '../../language-model/v3/language-model-v3';
4
+ import type { RerankingModelV3 } from '../../reranking-model/v3/reranking-model-v3';
5
+ import type { SpeechModelV3 } from '../../speech-model/v3/speech-model-v3';
6
+ import type { TranscriptionModelV3 } from '../../transcription-model/v3/transcription-model-v3';
7
7
 
8
8
  /**
9
9
  * Provider for language, text embedding, and image generation models.