@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
@@ -0,0 +1,89 @@
1
+ import type {
2
+ RealtimeModelV4ClientSecretOptions,
3
+ RealtimeModelV4ClientSecretResult,
4
+ } from './realtime-model-v4-client-secret';
5
+ import type { RealtimeModelV4ClientEvent } from './realtime-model-v4-client-event';
6
+ import type { RealtimeModelV4ServerEvent } from './realtime-model-v4-server-event';
7
+ import type { RealtimeModelV4SessionConfig } from './realtime-model-v4-session-config';
8
+
9
+ /**
10
+ * Specification for a realtime model that supports bidirectional
11
+ * audio/text communication over WebSocket.
12
+ *
13
+ * Providers implement this interface to enable realtime voice
14
+ * conversations through the AI SDK.
15
+ */
16
+ export type RealtimeModelV4 = {
17
+ /**
18
+ * The realtime model must specify which interface version it implements.
19
+ */
20
+ readonly specificationVersion: 'v4';
21
+
22
+ /**
23
+ * Provider ID (e.g. 'openai', 'xai').
24
+ */
25
+ readonly provider: string;
26
+
27
+ /**
28
+ * Provider-specific model ID (e.g. 'gpt-4o-realtime', 'grok-3').
29
+ */
30
+ readonly modelId: string;
31
+
32
+ /**
33
+ * Server-side: Creates an ephemeral client secret for authenticating
34
+ * browser-side WebSocket connections. The secret is short-lived and
35
+ * safe to expose to client code.
36
+ *
37
+ * Naming: "do" prefix to prevent accidental direct usage by the user.
38
+ */
39
+ doCreateClientSecret(
40
+ options: RealtimeModelV4ClientSecretOptions,
41
+ ): PromiseLike<RealtimeModelV4ClientSecretResult>;
42
+
43
+ /**
44
+ * Browser-side: Returns the WebSocket URL and subprotocols to use
45
+ * when connecting. Each provider has its own authentication mechanism
46
+ * (e.g. OpenAI uses subprotocol headers, xAI may use query params).
47
+ */
48
+ getWebSocketConfig(options: { token: string; url: string }): {
49
+ url: string;
50
+ protocols?: string[];
51
+ };
52
+
53
+ /**
54
+ * Browser-side: Parses a raw JSON event received over the WebSocket
55
+ * and returns one or more normalized events. Providers map their native
56
+ * event format to the common RealtimeModelV4ServerEvent union.
57
+ *
58
+ * Returns an array when a single provider message maps to multiple
59
+ * normalized events (e.g. Google's serverContent can contain audio,
60
+ * text, and turn-complete data in one message).
61
+ */
62
+ parseServerEvent(
63
+ raw: unknown,
64
+ ): RealtimeModelV4ServerEvent | RealtimeModelV4ServerEvent[];
65
+
66
+ /**
67
+ * Browser-side: Serializes a normalized client event into the
68
+ * provider's native JSON format for sending over the WebSocket.
69
+ */
70
+ serializeClientEvent(
71
+ event: RealtimeModelV4ClientEvent,
72
+ ): unknown | PromiseLike<unknown>;
73
+
74
+ /**
75
+ * Browser-side: Builds the provider-specific session configuration
76
+ * payload from a normalized session config. Used to construct the
77
+ * session.update event sent after WebSocket connection.
78
+ */
79
+ buildSessionConfig(config: RealtimeModelV4SessionConfig): unknown;
80
+
81
+ /**
82
+ * Browser-side: Returns a message to auto-send back over the WebSocket
83
+ * in response to a raw incoming message, or null if no response is needed.
84
+ *
85
+ * Used for provider-specific keepalive protocols (e.g. ping/pong).
86
+ * Called by the session layer before parseServerEvent.
87
+ */
88
+ getHealthCheckResponse?(raw: unknown): unknown | null;
89
+ };
@@ -1,5 +1,5 @@
1
- import { JSONObject } from '../../json-value';
2
- import { SharedV3Headers, SharedV3ProviderOptions } from '../../shared/v3';
1
+ import type { JSONObject } from '../../json-value';
2
+ import type { SharedV3Headers, SharedV3ProviderOptions } from '../../shared/v3';
3
3
 
4
4
  export type RerankingModelV3CallOptions = {
5
5
  /**
@@ -1,9 +1,9 @@
1
- import {
1
+ import type {
2
2
  SharedV3Headers,
3
3
  SharedV3ProviderMetadata,
4
4
  SharedV3Warning,
5
5
  } from '../../shared/v3/';
6
- import { RerankingModelV3CallOptions } from './reranking-model-v3-call-options';
6
+ import type { RerankingModelV3CallOptions } from './reranking-model-v3-call-options';
7
7
 
8
8
  /**
9
9
  * Specification for a reranking model that implements the reranking model interface version 3.
@@ -1,2 +1,3 @@
1
1
  export type { RerankingModelV4 } from './reranking-model-v4';
2
2
  export type { RerankingModelV4CallOptions } from './reranking-model-v4-call-options';
3
+ export type { RerankingModelV4Result } from './reranking-model-v4-result';
@@ -1,5 +1,5 @@
1
- import { JSONObject } from '../../json-value';
2
- import { SharedV4Headers, SharedV4ProviderOptions } from '../../shared/v4';
1
+ import type { JSONObject } from '../../json-value';
2
+ import type { SharedV4Headers, SharedV4ProviderOptions } from '../../shared/v4';
3
3
 
4
4
  export type RerankingModelV4CallOptions = {
5
5
  /**
@@ -0,0 +1,68 @@
1
+ import type {
2
+ SharedV4Headers,
3
+ SharedV4ProviderMetadata,
4
+ SharedV4Warning,
5
+ } from '../../shared/v4/';
6
+
7
+ /**
8
+ * The result of a reranking model doRerank call.
9
+ */
10
+ export type RerankingModelV4Result = {
11
+ /**
12
+ * Ordered list of reranked documents (via index before reranking).
13
+ * The documents are sorted by the descending order of relevance scores.
14
+ */
15
+ ranking: Array<{
16
+ /**
17
+ * The index of the document in the original list of documents before reranking.
18
+ */
19
+ index: number;
20
+
21
+ /**
22
+ * The relevance score of the document after reranking.
23
+ */
24
+ relevanceScore: number;
25
+ }>;
26
+
27
+ /**
28
+ * Additional provider-specific metadata. They are passed through
29
+ * to the provider from the AI SDK and enable provider-specific
30
+ * functionality that can be fully encapsulated in the provider.
31
+ */
32
+ providerMetadata?: SharedV4ProviderMetadata;
33
+
34
+ /**
35
+ * Warnings for the call, e.g. unsupported settings.
36
+ */
37
+ warnings?: Array<SharedV4Warning>;
38
+
39
+ /**
40
+ * Optional response information for debugging purposes.
41
+ */
42
+ response?: {
43
+ /**
44
+ * ID for the generated response, if the provider sends one.
45
+ */
46
+ id?: string;
47
+
48
+ /**
49
+ * Timestamp for the start of the generated response, if the provider sends one.
50
+ */
51
+ timestamp?: Date;
52
+
53
+ /**
54
+ * The ID of the response model that was used to generate the response, if the provider sends one.
55
+ */
56
+ modelId?: string;
57
+
58
+ /**
59
+ * Response headers.
60
+ */
61
+ headers?: SharedV4Headers;
62
+
63
+ /**
64
+ * Response body.
65
+ */
66
+ body?: unknown;
67
+ };
68
+ };
@@ -1,9 +1,5 @@
1
- import {
2
- SharedV4Headers,
3
- SharedV4ProviderMetadata,
4
- SharedV4Warning,
5
- } from '../../shared/v4/';
6
- import { RerankingModelV4CallOptions } from './reranking-model-v4-call-options';
1
+ import type { RerankingModelV4CallOptions } from './reranking-model-v4-call-options';
2
+ import type { RerankingModelV4Result } from './reranking-model-v4-result';
7
3
 
8
4
  /**
9
5
  * Specification for a reranking model that implements the reranking model interface version 3.
@@ -28,63 +24,7 @@ export type RerankingModelV4 = {
28
24
  * Reranking a list of documents using the query.
29
25
  */
30
26
  // Naming: "do" prefix to prevent accidental direct usage of the method by the user.
31
- doRerank(options: RerankingModelV4CallOptions): PromiseLike<{
32
- /**
33
- * Ordered list of reranked documents (via index before reranking).
34
- * The documents are sorted by the descending order of relevance scores.
35
- */
36
- ranking: Array<{
37
- /**
38
- * The index of the document in the original list of documents before reranking.
39
- */
40
- index: number;
41
-
42
- /**
43
- * The relevance score of the document after reranking.
44
- */
45
- relevanceScore: number;
46
- }>;
47
-
48
- /**
49
- * Additional provider-specific metadata. They are passed through
50
- * to the provider from the AI SDK and enable provider-specific
51
- * functionality that can be fully encapsulated in the provider.
52
- */
53
- providerMetadata?: SharedV4ProviderMetadata;
54
-
55
- /**
56
- * Warnings for the call, e.g. unsupported settings.
57
- */
58
- warnings?: Array<SharedV4Warning>;
59
-
60
- /**
61
- * Optional response information for debugging purposes.
62
- */
63
- response?: {
64
- /**
65
- * ID for the generated response, if the provider sends one.
66
- */
67
- id?: string;
68
-
69
- /**
70
- * Timestamp for the start of the generated response, if the provider sends one.
71
- */
72
- timestamp?: Date;
73
-
74
- /**
75
- * The ID of the response model that was used to generate the response, if the provider sends one.
76
- */
77
- modelId?: string;
78
-
79
- /**
80
- * Response headers.
81
- */
82
- headers?: SharedV4Headers;
83
-
84
- /**
85
- * Response body.
86
- */
87
- body?: unknown;
88
- };
89
- }>;
27
+ doRerank(
28
+ options: RerankingModelV4CallOptions,
29
+ ): PromiseLike<RerankingModelV4Result>;
90
30
  };
@@ -1,4 +1,4 @@
1
- import { JSONValue } from '../../json-value/json-value';
1
+ import type { JSONValue } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific metadata.
@@ -1,4 +1,4 @@
1
- import { JSONValue } from '../../json-value/json-value';
1
+ import type { JSONValue } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific options.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific metadata.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific options.
@@ -1,4 +1,6 @@
1
+ export * from './shared-v4-file-data';
1
2
  export * from './shared-v4-headers';
2
3
  export * from './shared-v4-provider-metadata';
3
4
  export * from './shared-v4-provider-options';
5
+ export * from './shared-v4-provider-reference';
4
6
  export * from './shared-v4-warning';
@@ -0,0 +1,49 @@
1
+ import type { SharedV4ProviderReference } from './shared-v4-provider-reference';
2
+
3
+ /**
4
+ * File data variant containing raw bytes (`Uint8Array`) or a base64-encoded
5
+ * string.
6
+ */
7
+ export interface SharedV4FileDataData {
8
+ type: 'data';
9
+ data: Uint8Array | string;
10
+ }
11
+
12
+ /**
13
+ * File data variant containing a URL that points to the file.
14
+ */
15
+ export interface SharedV4FileDataUrl {
16
+ type: 'url';
17
+ url: URL;
18
+ }
19
+
20
+ /**
21
+ * File data variant containing a provider reference (`{ [provider]: id }`).
22
+ */
23
+ export interface SharedV4FileDataReference {
24
+ type: 'reference';
25
+ reference: SharedV4ProviderReference;
26
+ }
27
+
28
+ /**
29
+ * File data variant containing inline text content (e.g. an inline text
30
+ * document).
31
+ */
32
+ export interface SharedV4FileDataText {
33
+ type: 'text';
34
+ text: string;
35
+ }
36
+
37
+ /**
38
+ * File data as a tagged discriminated union:
39
+ *
40
+ * - `{ type: 'data', data }`: raw bytes (`Uint8Array`) or base64-encoded string.
41
+ * - `{ type: 'url', url }`: a URL that points to the file.
42
+ * - `{ type: 'reference', reference }`: a provider reference (`{ [provider]: id }`).
43
+ * - `{ type: 'text', text }`: inline text content (e.g. an inline text document).
44
+ */
45
+ export type SharedV4FileData =
46
+ | SharedV4FileDataData
47
+ | SharedV4FileDataUrl
48
+ | SharedV4FileDataReference
49
+ | SharedV4FileDataText;
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific metadata.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  /**
4
4
  * Additional provider-specific options.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A mapping of provider names to provider-specific file identifiers.
3
+ *
4
+ * Provider references allow files to be identified across different
5
+ * providers without re-uploading, by storing each provider's own
6
+ * identifier for the same logical file.
7
+ *
8
+ * ```ts
9
+ * {
10
+ * "openai": "file-abc123",
11
+ * "anthropic": "file-xyz789"
12
+ * }
13
+ * ```
14
+ *
15
+ * The `type?: never` constraint excludes any object that has a `type`
16
+ * property, so a `SharedV4ProviderReference` cannot be confused with a
17
+ * tagged file-data shape (e.g. `{ type: 'data', data }` or
18
+ * `{ type: 'reference', reference }`) when both appear in the same union.
19
+ */
20
+ export type SharedV4ProviderReference = Record<string, string> & {
21
+ type?: never;
22
+ };
@@ -37,6 +37,22 @@ export type SharedV4Warning =
37
37
  */
38
38
  details?: string;
39
39
  }
40
+ | {
41
+ /**
42
+ * A deprecated feature or option is being used.
43
+ */
44
+ type: 'deprecated';
45
+
46
+ /**
47
+ * The deprecated setting or feature name.
48
+ */
49
+ setting: string;
50
+
51
+ /**
52
+ * A human-readable message explaining what to use instead.
53
+ */
54
+ message: string;
55
+ }
40
56
  | {
41
57
  /**
42
58
  * Other warning.
@@ -0,0 +1 @@
1
+ export * from './v4/index';
@@ -0,0 +1,6 @@
1
+ export type { SkillsV4 } from './skills-v4';
2
+ export type {
3
+ SkillsV4File,
4
+ SkillsV4UploadSkillCallOptions,
5
+ } from './skills-v4-upload-skill-call-options';
6
+ export type { SkillsV4UploadSkillResult } from './skills-v4-upload-skill-result';
@@ -0,0 +1,37 @@
1
+ import type {
2
+ SharedV4FileDataData,
3
+ SharedV4FileDataText,
4
+ } from '../../shared/v4/shared-v4-file-data';
5
+ import type { SharedV4ProviderOptions } from '../../shared/v4/shared-v4-provider-options';
6
+
7
+ export interface SkillsV4File {
8
+ /**
9
+ * The path of the file relative to the skill root.
10
+ */
11
+ path: string;
12
+
13
+ /**
14
+ * The file data.
15
+ *
16
+ * - `{ type: 'data', data }`: raw bytes (`Uint8Array`) or a base64-encoded string.
17
+ * - `{ type: 'text', text }`: inline text (UTF-8).
18
+ */
19
+ data: SharedV4FileDataData | SharedV4FileDataText;
20
+ }
21
+
22
+ export interface SkillsV4UploadSkillCallOptions {
23
+ /**
24
+ * The files that make up the skill.
25
+ */
26
+ files: SkillsV4File[];
27
+
28
+ /**
29
+ * Optional human-readable title for the skill.
30
+ */
31
+ displayTitle?: string;
32
+
33
+ /**
34
+ * Additional provider-specific options.
35
+ */
36
+ providerOptions?: SharedV4ProviderOptions;
37
+ }
@@ -0,0 +1,40 @@
1
+ import type { SharedV4ProviderMetadata } from '../../shared/v4/shared-v4-provider-metadata';
2
+ import type { SharedV4ProviderReference } from '../../shared/v4/shared-v4-provider-reference';
3
+ import type { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
4
+
5
+ export interface SkillsV4UploadSkillResult {
6
+ /**
7
+ * A provider reference mapping provider names to provider-specific skill identifiers.
8
+ */
9
+ providerReference: SharedV4ProviderReference;
10
+
11
+ /**
12
+ * Optional human-readable title for the uploaded skill.
13
+ */
14
+ displayTitle?: string;
15
+
16
+ /**
17
+ * Optional name of the uploaded skill.
18
+ */
19
+ name?: string;
20
+
21
+ /**
22
+ * Optional description of what the uploaded skill does.
23
+ */
24
+ description?: string;
25
+
26
+ /**
27
+ * Optional latest version identifier of the uploaded skill.
28
+ */
29
+ latestVersion?: string;
30
+
31
+ /**
32
+ * Additional provider-specific metadata.
33
+ */
34
+ providerMetadata?: SharedV4ProviderMetadata;
35
+
36
+ /**
37
+ * Warnings for the call, e.g. unsupported settings.
38
+ */
39
+ warnings: SharedV4Warning[];
40
+ }
@@ -0,0 +1,28 @@
1
+ import type { SkillsV4UploadSkillCallOptions } from './skills-v4-upload-skill-call-options';
2
+ import type { SkillsV4UploadSkillResult } from './skills-v4-upload-skill-result';
3
+
4
+ /**
5
+ * Skills specification version 4.
6
+ */
7
+ export interface SkillsV4 {
8
+ /**
9
+ * The skills implementation must specify which skills interface
10
+ * version it implements. This will allow us to evolve the skills
11
+ * interface and retain backwards compatibility. The different
12
+ * implementation versions can be handled as a discriminated union
13
+ * on our side.
14
+ */
15
+ readonly specificationVersion: 'v4';
16
+
17
+ /**
18
+ * Name of the provider for logging purposes.
19
+ */
20
+ readonly provider: string;
21
+
22
+ /**
23
+ * Uploads a new skill from the given files.
24
+ */
25
+ uploadSkill(
26
+ params: SkillsV4UploadSkillCallOptions,
27
+ ): PromiseLike<SkillsV4UploadSkillResult>;
28
+ }
@@ -1,4 +1,4 @@
1
- import { JSONValue } from '../../json-value/json-value';
1
+ import type { JSONValue } from '../../json-value/json-value';
2
2
 
3
3
  type SpeechModelV2ProviderOptions = Record<string, Record<string, JSONValue>>;
4
4
 
@@ -1,4 +1,4 @@
1
- import { SpeechModelV2CallOptions } from './speech-model-v2-call-options';
1
+ import type { SpeechModelV2CallOptions } from './speech-model-v2-call-options';
2
2
 
3
3
  /**
4
4
  * Warning from the model provider for this call. The call will proceed, but e.g.
@@ -1,7 +1,7 @@
1
- import { JSONValue } from '../../json-value';
2
- import { SharedV2Headers } from '../../shared';
3
- import { SpeechModelV2CallOptions } from './speech-model-v2-call-options';
4
- import { SpeechModelV2CallWarning } from './speech-model-v2-call-warning';
1
+ import type { JSONValue } from '../../json-value';
2
+ import type { SharedV2Headers } from '../../shared';
3
+ import type { SpeechModelV2CallOptions } from './speech-model-v2-call-options';
4
+ import type { SpeechModelV2CallWarning } from './speech-model-v2-call-warning';
5
5
 
6
6
  /**
7
7
  * Speech model specification version 2.
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  type SpeechModelV3ProviderOptions = Record<string, JSONObject>;
4
4
 
@@ -1,7 +1,7 @@
1
- import { JSONObject } from '../../json-value';
2
- import { SharedV2Headers } from '../../shared';
3
- import { SharedV3Warning } from '../../shared/v3/shared-v3-warning';
4
- import { SpeechModelV3CallOptions } from './speech-model-v3-call-options';
1
+ import type { JSONObject } from '../../json-value';
2
+ import type { SharedV2Headers } from '../../shared';
3
+ import type { SharedV3Warning } from '../../shared/v3/shared-v3-warning';
4
+ import type { SpeechModelV3CallOptions } from './speech-model-v3-call-options';
5
5
 
6
6
  /**
7
7
  * Speech model specification version 3.
@@ -1,2 +1,3 @@
1
1
  export type { SpeechModelV4 } from './speech-model-v4';
2
2
  export type { SpeechModelV4CallOptions } from './speech-model-v4-call-options';
3
+ export type { SpeechModelV4Result } from './speech-model-v4-result';
@@ -1,4 +1,4 @@
1
- import { JSONObject } from '../../json-value/json-value';
1
+ import type { JSONObject } from '../../json-value/json-value';
2
2
 
3
3
  type SpeechModelV4ProviderOptions = Record<string, JSONObject>;
4
4
 
@@ -0,0 +1,64 @@
1
+ import type { JSONObject } from '../../json-value';
2
+ import type { SharedV2Headers } from '../../shared';
3
+ import type { SharedV4Warning } from '../../shared/v4/shared-v4-warning';
4
+
5
+ /**
6
+ * The result of a speech model doGenerate call.
7
+ */
8
+ export type SpeechModelV4Result = {
9
+ /**
10
+ * Generated audio as an ArrayBuffer.
11
+ * The audio should be returned without any unnecessary conversion.
12
+ * If the API returns base64 encoded strings, the audio should be returned
13
+ * as base64 encoded strings. If the API returns binary data, the audio
14
+ * should be returned as binary data.
15
+ */
16
+ audio: string | Uint8Array;
17
+
18
+ /**
19
+ * Warnings for the call, e.g. unsupported settings.
20
+ */
21
+ warnings: Array<SharedV4Warning>;
22
+
23
+ /**
24
+ * Optional request information for telemetry and debugging purposes.
25
+ */
26
+ request?: {
27
+ /**
28
+ * Response body (available only for providers that use HTTP requests).
29
+ */
30
+ body?: unknown;
31
+ };
32
+
33
+ /**
34
+ * Response information for telemetry and debugging purposes.
35
+ */
36
+ response: {
37
+ /**
38
+ * Timestamp for the start of the generated response.
39
+ */
40
+ timestamp: Date;
41
+
42
+ /**
43
+ * The ID of the response model that was used to generate the response.
44
+ */
45
+ modelId: string;
46
+
47
+ /**
48
+ * Response headers.
49
+ */
50
+ headers?: SharedV2Headers;
51
+
52
+ /**
53
+ * Response body.
54
+ */
55
+ body?: unknown;
56
+ };
57
+
58
+ /**
59
+ * Additional provider-specific metadata. They are passed through
60
+ * from the provider to the AI SDK and enable provider-specific
61
+ * results that can be fully encapsulated in the provider.
62
+ */
63
+ providerMetadata?: Record<string, JSONObject>;
64
+ };