@ai-sdk/provider 3.0.1 → 3.0.3

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 (133) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.mts +60 -2
  3. package/dist/index.d.ts +60 -2
  4. package/dist/index.js.map +1 -1
  5. package/package.json +3 -1
  6. package/src/embedding-model/index.ts +2 -0
  7. package/src/embedding-model/v2/embedding-model-v2-embedding.ts +5 -0
  8. package/src/embedding-model/v2/embedding-model-v2.ts +113 -0
  9. package/src/embedding-model/v2/index.ts +2 -0
  10. package/src/embedding-model/v3/embedding-model-v3-call-options.ts +26 -0
  11. package/src/embedding-model/v3/embedding-model-v3-embedding.ts +5 -0
  12. package/src/embedding-model/v3/embedding-model-v3-result.ts +48 -0
  13. package/src/embedding-model/v3/embedding-model-v3.ts +54 -0
  14. package/src/embedding-model/v3/index.ts +4 -0
  15. package/src/embedding-model-middleware/index.ts +1 -0
  16. package/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts +69 -0
  17. package/src/embedding-model-middleware/v3/index.ts +1 -0
  18. package/src/errors/ai-sdk-error.ts +62 -0
  19. package/src/errors/api-call-error.ts +59 -0
  20. package/src/errors/empty-response-body-error.ts +17 -0
  21. package/src/errors/get-error-message.ts +15 -0
  22. package/src/errors/index.ts +15 -0
  23. package/src/errors/invalid-argument-error.ts +32 -0
  24. package/src/errors/invalid-prompt-error.ts +33 -0
  25. package/src/errors/invalid-response-data-error.ts +31 -0
  26. package/src/errors/json-parse-error.ts +29 -0
  27. package/src/errors/load-api-key-error.ts +17 -0
  28. package/src/errors/load-setting-error.ts +17 -0
  29. package/src/errors/no-content-generated-error.ts +22 -0
  30. package/src/errors/no-such-model-error.ts +45 -0
  31. package/src/errors/too-many-embedding-values-for-call-error.ts +40 -0
  32. package/src/errors/type-validation-error.ts +51 -0
  33. package/src/errors/unsupported-functionality-error.ts +26 -0
  34. package/src/image-model/index.ts +2 -0
  35. package/src/image-model/v2/image-model-v2-call-options.ts +60 -0
  36. package/src/image-model/v2/image-model-v2-call-warning.ts +16 -0
  37. package/src/image-model/v2/image-model-v2.ts +104 -0
  38. package/src/image-model/v2/index.ts +6 -0
  39. package/src/image-model/v3/image-model-v3-call-options.ts +74 -0
  40. package/src/image-model/v3/image-model-v3-file.ts +44 -0
  41. package/src/image-model/v3/image-model-v3-usage.ts +19 -0
  42. package/src/image-model/v3/image-model-v3.ts +110 -0
  43. package/src/image-model/v3/index.ts +7 -0
  44. package/src/image-model-middleware/index.ts +1 -0
  45. package/src/image-model-middleware/v3/image-model-v3-middleware.ts +61 -0
  46. package/src/image-model-middleware/v3/index.ts +1 -0
  47. package/src/index.ts +15 -0
  48. package/src/json-value/index.ts +2 -0
  49. package/src/json-value/is-json.ts +40 -0
  50. package/src/json-value/json-value.ts +17 -0
  51. package/src/language-model/index.ts +2 -0
  52. package/src/language-model/v2/index.ts +18 -0
  53. package/src/language-model/v2/language-model-v2-call-options.ts +125 -0
  54. package/src/language-model/v2/language-model-v2-call-warning.ts +23 -0
  55. package/src/language-model/v2/language-model-v2-content.ts +14 -0
  56. package/src/language-model/v2/language-model-v2-data-content.ts +4 -0
  57. package/src/language-model/v2/language-model-v2-file.ts +25 -0
  58. package/src/language-model/v2/language-model-v2-finish-reason.ts +20 -0
  59. package/src/language-model/v2/language-model-v2-function-tool.ts +37 -0
  60. package/src/language-model/v2/language-model-v2-prompt.ts +218 -0
  61. package/src/language-model/v2/language-model-v2-provider-defined-tool.ts +24 -0
  62. package/src/language-model/v2/language-model-v2-reasoning.ts +14 -0
  63. package/src/language-model/v2/language-model-v2-response-metadata.ts +16 -0
  64. package/src/language-model/v2/language-model-v2-source.ts +67 -0
  65. package/src/language-model/v2/language-model-v2-stream-part.ts +102 -0
  66. package/src/language-model/v2/language-model-v2-text.ts +15 -0
  67. package/src/language-model/v2/language-model-v2-tool-call.ts +35 -0
  68. package/src/language-model/v2/language-model-v2-tool-choice.ts +5 -0
  69. package/src/language-model/v2/language-model-v2-tool-result.ts +40 -0
  70. package/src/language-model/v2/language-model-v2-usage.ts +34 -0
  71. package/src/language-model/v2/language-model-v2.ts +137 -0
  72. package/src/language-model/v3/index.ts +21 -0
  73. package/src/language-model/v3/language-model-v3-call-options.ts +125 -0
  74. package/src/language-model/v3/language-model-v3-content.ts +16 -0
  75. package/src/language-model/v3/language-model-v3-data-content.ts +4 -0
  76. package/src/language-model/v3/language-model-v3-file.ts +32 -0
  77. package/src/language-model/v3/language-model-v3-finish-reason.ts +33 -0
  78. package/src/language-model/v3/language-model-v3-function-tool.ts +53 -0
  79. package/src/language-model/v3/language-model-v3-generate-result.ts +63 -0
  80. package/src/language-model/v3/language-model-v3-prompt.ts +422 -0
  81. package/src/language-model/v3/language-model-v3-provider-tool.ts +28 -0
  82. package/src/language-model/v3/language-model-v3-reasoning.ts +14 -0
  83. package/src/language-model/v3/language-model-v3-response-metadata.ts +16 -0
  84. package/src/language-model/v3/language-model-v3-source.ts +67 -0
  85. package/src/language-model/v3/language-model-v3-stream-part.ts +106 -0
  86. package/src/language-model/v3/language-model-v3-stream-result.ts +32 -0
  87. package/src/language-model/v3/language-model-v3-text.ts +15 -0
  88. package/src/language-model/v3/language-model-v3-tool-approval-request.ts +27 -0
  89. package/src/language-model/v3/language-model-v3-tool-call.ts +41 -0
  90. package/src/language-model/v3/language-model-v3-tool-choice.ts +5 -0
  91. package/src/language-model/v3/language-model-v3-tool-result.ts +51 -0
  92. package/src/language-model/v3/language-model-v3-usage.ts +59 -0
  93. package/src/language-model/v3/language-model-v3.ts +61 -0
  94. package/src/language-model-middleware/index.ts +2 -0
  95. package/src/language-model-middleware/v2/index.ts +1 -0
  96. package/src/language-model-middleware/v2/language-model-v2-middleware.ts +82 -0
  97. package/src/language-model-middleware/v3/index.ts +1 -0
  98. package/src/language-model-middleware/v3/language-model-v3-middleware.ts +84 -0
  99. package/src/provider/index.ts +2 -0
  100. package/src/provider/v2/index.ts +1 -0
  101. package/src/provider/v2/provider-v2.ts +64 -0
  102. package/src/provider/v3/index.ts +1 -0
  103. package/src/provider/v3/provider-v3.ts +93 -0
  104. package/src/reranking-model/index.ts +1 -0
  105. package/src/reranking-model/v3/index.ts +2 -0
  106. package/src/reranking-model/v3/reranking-model-v3-call-options.ts +40 -0
  107. package/src/reranking-model/v3/reranking-model-v3.ts +90 -0
  108. package/src/shared/index.ts +2 -0
  109. package/src/shared/v2/index.ts +3 -0
  110. package/src/shared/v2/shared-v2-headers.ts +1 -0
  111. package/src/shared/v2/shared-v2-provider-metadata.ts +27 -0
  112. package/src/shared/v2/shared-v2-provider-options.ts +24 -0
  113. package/src/shared/v3/index.ts +4 -0
  114. package/src/shared/v3/shared-v3-headers.ts +1 -0
  115. package/src/shared/v3/shared-v3-provider-metadata.ts +24 -0
  116. package/src/shared/v3/shared-v3-provider-options.ts +24 -0
  117. package/src/shared/v3/shared-v3-warning.ts +50 -0
  118. package/src/speech-model/index.ts +2 -0
  119. package/src/speech-model/v2/index.ts +3 -0
  120. package/src/speech-model/v2/speech-model-v2-call-options.ts +62 -0
  121. package/src/speech-model/v2/speech-model-v2-call-warning.ts +16 -0
  122. package/src/speech-model/v2/speech-model-v2.ts +89 -0
  123. package/src/speech-model/v3/index.ts +2 -0
  124. package/src/speech-model/v3/speech-model-v3-call-options.ts +62 -0
  125. package/src/speech-model/v3/speech-model-v3.ts +89 -0
  126. package/src/transcription-model/index.ts +2 -0
  127. package/src/transcription-model/v2/index.ts +3 -0
  128. package/src/transcription-model/v2/transcription-model-v2-call-options.ts +48 -0
  129. package/src/transcription-model/v2/transcription-model-v2-call-warning.ts +16 -0
  130. package/src/transcription-model/v2/transcription-model-v2.ts +117 -0
  131. package/src/transcription-model/v3/index.ts +2 -0
  132. package/src/transcription-model/v3/transcription-model-v3-call-options.ts +45 -0
  133. package/src/transcription-model/v3/transcription-model-v3.ts +117 -0
@@ -0,0 +1,422 @@
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';
4
+
5
+ /**
6
+ A prompt is a list of messages.
7
+
8
+ Note: Not all models and prompt formats support multi-modal inputs and
9
+ tool calls. The validation happens at runtime.
10
+
11
+ Note: This is not a user-facing prompt. The AI SDK methods will map the
12
+ user-facing prompt types such as chat or instruction prompts to this format.
13
+ */
14
+ export type LanguageModelV3Prompt = Array<LanguageModelV3Message>;
15
+
16
+ export type LanguageModelV3Message =
17
+ // Note: there could be additional parts for each role in the future,
18
+ // e.g. when the assistant can return images or the user can share files
19
+ // such as PDFs.
20
+ (
21
+ | {
22
+ role: 'system';
23
+ content: string;
24
+ }
25
+ | {
26
+ role: 'user';
27
+ content: Array<LanguageModelV3TextPart | LanguageModelV3FilePart>;
28
+ }
29
+ | {
30
+ role: 'assistant';
31
+ content: Array<
32
+ | LanguageModelV3TextPart
33
+ | LanguageModelV3FilePart
34
+ | LanguageModelV3ReasoningPart
35
+ | LanguageModelV3ToolCallPart
36
+ | LanguageModelV3ToolResultPart
37
+ >;
38
+ }
39
+ | {
40
+ role: 'tool';
41
+ content: Array<
42
+ | LanguageModelV3ToolResultPart
43
+ | LanguageModelV3ToolApprovalResponsePart
44
+ >;
45
+ }
46
+ ) & {
47
+ /**
48
+ * Additional provider-specific options. They are passed through
49
+ * to the provider from the AI SDK and enable provider-specific
50
+ * functionality that can be fully encapsulated in the provider.
51
+ */
52
+ providerOptions?: SharedV3ProviderOptions;
53
+ };
54
+
55
+ /**
56
+ Text content part of a prompt. It contains a string of text.
57
+ */
58
+ export interface LanguageModelV3TextPart {
59
+ type: 'text';
60
+
61
+ /**
62
+ The text content.
63
+ */
64
+ text: string;
65
+
66
+ /**
67
+ * Additional provider-specific options. They are passed through
68
+ * to the provider from the AI SDK and enable provider-specific
69
+ * functionality that can be fully encapsulated in the provider.
70
+ */
71
+ providerOptions?: SharedV3ProviderOptions;
72
+ }
73
+
74
+ /**
75
+ Reasoning content part of a prompt. It contains a string of reasoning text.
76
+ */
77
+ export interface LanguageModelV3ReasoningPart {
78
+ type: 'reasoning';
79
+
80
+ /**
81
+ The reasoning text.
82
+ */
83
+ text: string;
84
+
85
+ /**
86
+ * Additional provider-specific options. They are passed through
87
+ * to the provider from the AI SDK and enable provider-specific
88
+ * functionality that can be fully encapsulated in the provider.
89
+ */
90
+ providerOptions?: SharedV3ProviderOptions;
91
+ }
92
+
93
+ /**
94
+ File content part of a prompt. It contains a file.
95
+ */
96
+ export interface LanguageModelV3FilePart {
97
+ type: 'file';
98
+
99
+ /**
100
+ * Optional filename of the file.
101
+ */
102
+ filename?: string;
103
+
104
+ /**
105
+ File data. Can be a Uint8Array, base64 encoded data as a string or a URL.
106
+ */
107
+ data: LanguageModelV3DataContent;
108
+
109
+ /**
110
+ IANA media type of the file.
111
+
112
+ Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action).
113
+
114
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
115
+ */
116
+ mediaType: string;
117
+
118
+ /**
119
+ * Additional provider-specific options. They are passed through
120
+ * to the provider from the AI SDK and enable provider-specific
121
+ * functionality that can be fully encapsulated in the provider.
122
+ */
123
+ providerOptions?: SharedV3ProviderOptions;
124
+ }
125
+
126
+ /**
127
+ Tool call content part of a prompt. It contains a tool call (usually generated by the AI model).
128
+ */
129
+ export interface LanguageModelV3ToolCallPart {
130
+ type: 'tool-call';
131
+
132
+ /**
133
+ ID of the tool call. This ID is used to match the tool call with the tool result.
134
+ */
135
+ toolCallId: string;
136
+
137
+ /**
138
+ Name of the tool that is being called.
139
+ */
140
+ toolName: string;
141
+
142
+ /**
143
+ Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.
144
+ */
145
+ input: unknown;
146
+
147
+ /**
148
+ * Whether the tool call will be executed by the provider.
149
+ * If this flag is not set or is false, the tool call will be executed by the client.
150
+ */
151
+ providerExecuted?: boolean;
152
+
153
+ /**
154
+ * Additional provider-specific options. They are passed through
155
+ * to the provider from the AI SDK and enable provider-specific
156
+ * functionality that can be fully encapsulated in the provider.
157
+ */
158
+ providerOptions?: SharedV3ProviderOptions;
159
+ }
160
+
161
+ /**
162
+ Tool result content part of a prompt. It contains the result of the tool call with the matching ID.
163
+ */
164
+ export interface LanguageModelV3ToolResultPart {
165
+ type: 'tool-result';
166
+
167
+ /**
168
+ ID of the tool call that this result is associated with.
169
+ */
170
+ toolCallId: string;
171
+
172
+ /**
173
+ Name of the tool that generated this result.
174
+ */
175
+ toolName: string;
176
+
177
+ /**
178
+ Result of the tool call.
179
+ */
180
+ output: LanguageModelV3ToolResultOutput;
181
+
182
+ /**
183
+ * Additional provider-specific options. They are passed through
184
+ * to the provider from the AI SDK and enable provider-specific
185
+ * functionality that can be fully encapsulated in the provider.
186
+ */
187
+ providerOptions?: SharedV3ProviderOptions;
188
+ }
189
+
190
+ /**
191
+ * Tool approval response content part of a prompt. It contains the user's
192
+ * decision to approve or deny a provider-executed tool call.
193
+ */
194
+ export interface LanguageModelV3ToolApprovalResponsePart {
195
+ type: 'tool-approval-response';
196
+
197
+ /**
198
+ * ID of the approval request that this response refers to.
199
+ */
200
+ approvalId: string;
201
+
202
+ /**
203
+ * Whether the approval was granted (true) or denied (false).
204
+ */
205
+ approved: boolean;
206
+
207
+ /**
208
+ * Optional reason for approval or denial.
209
+ */
210
+ reason?: string;
211
+
212
+ /**
213
+ * Additional provider-specific options. They are passed through
214
+ * to the provider from the AI SDK and enable provider-specific
215
+ * functionality that can be fully encapsulated in the provider.
216
+ */
217
+ providerOptions?: SharedV3ProviderOptions;
218
+ }
219
+
220
+ /**
221
+ * Result of a tool call.
222
+ */
223
+ export type LanguageModelV3ToolResultOutput =
224
+ | {
225
+ /**
226
+ * Text tool output that should be directly sent to the API.
227
+ */
228
+ type: 'text';
229
+ value: string;
230
+
231
+ /**
232
+ * Provider-specific options.
233
+ */
234
+ providerOptions?: SharedV3ProviderOptions;
235
+ }
236
+ | {
237
+ type: 'json';
238
+ value: JSONValue;
239
+
240
+ /**
241
+ * Provider-specific options.
242
+ */
243
+ providerOptions?: SharedV3ProviderOptions;
244
+ }
245
+ | {
246
+ /**
247
+ * Type when the user has denied the execution of the tool call.
248
+ */
249
+ type: 'execution-denied';
250
+
251
+ /**
252
+ * Optional reason for the execution denial.
253
+ */
254
+ reason?: string;
255
+
256
+ /**
257
+ * Provider-specific options.
258
+ */
259
+ providerOptions?: SharedV3ProviderOptions;
260
+ }
261
+ | {
262
+ type: 'error-text';
263
+ value: string;
264
+
265
+ /**
266
+ * Provider-specific options.
267
+ */
268
+ providerOptions?: SharedV3ProviderOptions;
269
+ }
270
+ | {
271
+ type: 'error-json';
272
+ value: JSONValue;
273
+
274
+ /**
275
+ * Provider-specific options.
276
+ */
277
+ providerOptions?: SharedV3ProviderOptions;
278
+ }
279
+ | {
280
+ type: 'content';
281
+ value: Array<
282
+ | {
283
+ type: 'text';
284
+
285
+ /**
286
+ Text content.
287
+ */
288
+ text: string;
289
+
290
+ /**
291
+ * Provider-specific options.
292
+ */
293
+ providerOptions?: SharedV3ProviderOptions;
294
+ }
295
+ | {
296
+ type: 'file-data';
297
+
298
+ /**
299
+ Base-64 encoded media data.
300
+ */
301
+ data: string;
302
+
303
+ /**
304
+ IANA media type.
305
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
306
+ */
307
+ mediaType: string;
308
+
309
+ /**
310
+ * Optional filename of the file.
311
+ */
312
+ filename?: string;
313
+
314
+ /**
315
+ * Provider-specific options.
316
+ */
317
+ providerOptions?: SharedV3ProviderOptions;
318
+ }
319
+ | {
320
+ type: 'file-url';
321
+
322
+ /**
323
+ * URL of the file.
324
+ */
325
+ url: string;
326
+
327
+ /**
328
+ * Provider-specific options.
329
+ */
330
+ providerOptions?: SharedV3ProviderOptions;
331
+ }
332
+ | {
333
+ type: 'file-id';
334
+
335
+ /**
336
+ * ID of the file.
337
+ *
338
+ * If you use multiple providers, you need to
339
+ * specify the provider specific ids using
340
+ * the Record option. The key is the provider
341
+ * name, e.g. 'openai' or 'anthropic'.
342
+ */
343
+ fileId: string | Record<string, string>;
344
+
345
+ /**
346
+ * Provider-specific options.
347
+ */
348
+ providerOptions?: SharedV3ProviderOptions;
349
+ }
350
+ | {
351
+ /**
352
+ * Images that are referenced using base64 encoded data.
353
+ */
354
+ type: 'image-data';
355
+
356
+ /**
357
+ Base-64 encoded image data.
358
+ */
359
+ data: string;
360
+
361
+ /**
362
+ IANA media type.
363
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
364
+ */
365
+ mediaType: string;
366
+
367
+ /**
368
+ * Provider-specific options.
369
+ */
370
+ providerOptions?: SharedV3ProviderOptions;
371
+ }
372
+ | {
373
+ /**
374
+ * Images that are referenced using a URL.
375
+ */
376
+ type: 'image-url';
377
+
378
+ /**
379
+ * URL of the image.
380
+ */
381
+ url: string;
382
+
383
+ /**
384
+ * Provider-specific options.
385
+ */
386
+ providerOptions?: SharedV3ProviderOptions;
387
+ }
388
+ | {
389
+ /**
390
+ * Images that are referenced using a provider file id.
391
+ */
392
+ type: 'image-file-id';
393
+
394
+ /**
395
+ * Image that is referenced using a provider file id.
396
+ *
397
+ * If you use multiple providers, you need to
398
+ * specify the provider specific ids using
399
+ * the Record option. The key is the provider
400
+ * name, e.g. 'openai' or 'anthropic'.
401
+ */
402
+ fileId: string | Record<string, string>;
403
+
404
+ /**
405
+ * Provider-specific options.
406
+ */
407
+ providerOptions?: SharedV3ProviderOptions;
408
+ }
409
+ | {
410
+ /**
411
+ * Custom content part. This can be used to implement
412
+ * provider-specific content parts.
413
+ */
414
+ type: 'custom';
415
+
416
+ /**
417
+ * Provider-specific options.
418
+ */
419
+ providerOptions?: SharedV3ProviderOptions;
420
+ }
421
+ >;
422
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The configuration of a provider tool.
3
+ *
4
+ * Provider tools are tools that are specific to a certain provider.
5
+ * The input and output schemas are defined be the provider, and
6
+ * some of the tools are also executed on the provider systems.
7
+ */
8
+ export type LanguageModelV3ProviderTool = {
9
+ /**
10
+ * The type of the tool (always 'provider').
11
+ */
12
+ type: 'provider';
13
+
14
+ /**
15
+ * The ID of the tool. Should follow the format `<provider-id>.<unique-tool-name>`.
16
+ */
17
+ id: `${string}.${string}`;
18
+
19
+ /**
20
+ * The name of the tool. Unique within this model call.
21
+ */
22
+ name: string;
23
+
24
+ /**
25
+ * The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.
26
+ */
27
+ args: Record<string, unknown>;
28
+ };
@@ -0,0 +1,14 @@
1
+ import { SharedV3ProviderMetadata } from '../../shared';
2
+
3
+ /**
4
+ Reasoning that the model has generated.
5
+ */
6
+ export type LanguageModelV3Reasoning = {
7
+ type: 'reasoning';
8
+ text: string;
9
+
10
+ /**
11
+ * Optional provider-specific metadata for the reasoning part.
12
+ */
13
+ providerMetadata?: SharedV3ProviderMetadata;
14
+ };
@@ -0,0 +1,16 @@
1
+ export interface LanguageModelV3ResponseMetadata {
2
+ /**
3
+ ID for the generated response, if the provider sends one.
4
+ */
5
+ id?: string;
6
+
7
+ /**
8
+ Timestamp for the start of the generated response, if the provider sends one.
9
+ */
10
+ timestamp?: Date;
11
+
12
+ /**
13
+ The ID of the response model that was used to generate the response, if the provider sends one.
14
+ */
15
+ modelId?: string;
16
+ }
@@ -0,0 +1,67 @@
1
+ import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
+
3
+ /**
4
+ A source that has been used as input to generate the response.
5
+ */
6
+ export type LanguageModelV3Source =
7
+ | {
8
+ type: 'source';
9
+
10
+ /**
11
+ * The type of source - URL sources reference web content.
12
+ */
13
+ sourceType: 'url';
14
+
15
+ /**
16
+ * The ID of the source.
17
+ */
18
+ id: string;
19
+
20
+ /**
21
+ * The URL of the source.
22
+ */
23
+ url: string;
24
+
25
+ /**
26
+ * The title of the source.
27
+ */
28
+ title?: string;
29
+
30
+ /**
31
+ * Additional provider metadata for the source.
32
+ */
33
+ providerMetadata?: SharedV3ProviderMetadata;
34
+ }
35
+ | {
36
+ type: 'source';
37
+
38
+ /**
39
+ * The type of source - document sources reference files/documents.
40
+ */
41
+ sourceType: 'document';
42
+
43
+ /**
44
+ * The ID of the source.
45
+ */
46
+ id: string;
47
+
48
+ /**
49
+ * IANA media type of the document (e.g., 'application/pdf').
50
+ */
51
+ mediaType: string;
52
+
53
+ /**
54
+ * The title of the document.
55
+ */
56
+ title: string;
57
+
58
+ /**
59
+ * Optional filename of the document.
60
+ */
61
+ filename?: string;
62
+
63
+ /**
64
+ * Additional provider metadata for the source.
65
+ */
66
+ providerMetadata?: SharedV3ProviderMetadata;
67
+ };
@@ -0,0 +1,106 @@
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';
11
+
12
+ export type LanguageModelV3StreamPart =
13
+ // Text blocks:
14
+ | {
15
+ type: 'text-start';
16
+ providerMetadata?: SharedV3ProviderMetadata;
17
+ id: string;
18
+ }
19
+ | {
20
+ type: 'text-delta';
21
+ id: string;
22
+ providerMetadata?: SharedV3ProviderMetadata;
23
+ delta: string;
24
+ }
25
+ | {
26
+ type: 'text-end';
27
+ providerMetadata?: SharedV3ProviderMetadata;
28
+ id: string;
29
+ }
30
+
31
+ // Reasoning blocks:
32
+ | {
33
+ type: 'reasoning-start';
34
+ providerMetadata?: SharedV3ProviderMetadata;
35
+ id: string;
36
+ }
37
+ | {
38
+ type: 'reasoning-delta';
39
+ id: string;
40
+ providerMetadata?: SharedV3ProviderMetadata;
41
+ delta: string;
42
+ }
43
+ | {
44
+ type: 'reasoning-end';
45
+ id: string;
46
+ providerMetadata?: SharedV3ProviderMetadata;
47
+ }
48
+
49
+ // Tool calls and results:
50
+ | {
51
+ type: 'tool-input-start';
52
+ id: string;
53
+ toolName: string;
54
+ providerMetadata?: SharedV3ProviderMetadata;
55
+ providerExecuted?: boolean;
56
+ dynamic?: boolean;
57
+ title?: string;
58
+ }
59
+ | {
60
+ type: 'tool-input-delta';
61
+ id: string;
62
+ delta: string;
63
+ providerMetadata?: SharedV3ProviderMetadata;
64
+ }
65
+ | {
66
+ type: 'tool-input-end';
67
+ id: string;
68
+ providerMetadata?: SharedV3ProviderMetadata;
69
+ }
70
+ | LanguageModelV3ToolApprovalRequest
71
+ | LanguageModelV3ToolCall
72
+ | LanguageModelV3ToolResult
73
+
74
+ // Files and sources:
75
+ | LanguageModelV3File
76
+ | LanguageModelV3Source
77
+
78
+ // stream start event with warnings for the call, e.g. unsupported settings:
79
+ | {
80
+ type: 'stream-start';
81
+ warnings: Array<SharedV3Warning>;
82
+ }
83
+
84
+ // metadata for the response.
85
+ // separate stream part so it can be sent once it is available.
86
+ | ({ type: 'response-metadata' } & LanguageModelV3ResponseMetadata)
87
+
88
+ // metadata that is available after the stream is finished:
89
+ | {
90
+ type: 'finish';
91
+ usage: LanguageModelV3Usage;
92
+ finishReason: LanguageModelV3FinishReason;
93
+ providerMetadata?: SharedV3ProviderMetadata;
94
+ }
95
+
96
+ // raw chunks if enabled
97
+ | {
98
+ type: 'raw';
99
+ rawValue: unknown;
100
+ }
101
+
102
+ // error parts are streamed, allowing for multiple errors
103
+ | {
104
+ type: 'error';
105
+ error: unknown;
106
+ };
@@ -0,0 +1,32 @@
1
+ import { SharedV3Headers } from '../../shared';
2
+ import { LanguageModelV3StreamPart } from './language-model-v3-stream-part';
3
+
4
+ /**
5
+ * The result of a language model doStream call.
6
+ */
7
+ export type LanguageModelV3StreamResult = {
8
+ /**
9
+ * The stream.
10
+ */
11
+ stream: ReadableStream<LanguageModelV3StreamPart>;
12
+
13
+ /**
14
+ * Optional request information for telemetry and debugging purposes.
15
+ */
16
+ request?: {
17
+ /**
18
+ * Request HTTP body that was sent to the provider API.
19
+ */
20
+ body?: unknown;
21
+ };
22
+
23
+ /**
24
+ * Optional response data.
25
+ */
26
+ response?: {
27
+ /**
28
+ * Response headers.
29
+ */
30
+ headers?: SharedV3Headers;
31
+ };
32
+ };
@@ -0,0 +1,15 @@
1
+ import { SharedV3ProviderMetadata } from '../../shared/v3/shared-v3-provider-metadata';
2
+
3
+ /**
4
+ Text that the model has generated.
5
+ */
6
+ export type LanguageModelV3Text = {
7
+ type: 'text';
8
+
9
+ /**
10
+ The text content.
11
+ */
12
+ text: string;
13
+
14
+ providerMetadata?: SharedV3ProviderMetadata;
15
+ };