@ai-sdk/provider 3.0.2 → 3.0.4

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 +12 -0
  2. package/dist/index.d.mts +7 -7
  3. package/dist/index.d.ts +7 -7
  4. package/package.json +3 -1
  5. package/src/embedding-model/index.ts +2 -0
  6. package/src/embedding-model/v2/embedding-model-v2-embedding.ts +5 -0
  7. package/src/embedding-model/v2/embedding-model-v2.ts +113 -0
  8. package/src/embedding-model/v2/index.ts +2 -0
  9. package/src/embedding-model/v3/embedding-model-v3-call-options.ts +26 -0
  10. package/src/embedding-model/v3/embedding-model-v3-embedding.ts +5 -0
  11. package/src/embedding-model/v3/embedding-model-v3-result.ts +48 -0
  12. package/src/embedding-model/v3/embedding-model-v3.ts +54 -0
  13. package/src/embedding-model/v3/index.ts +4 -0
  14. package/src/embedding-model-middleware/index.ts +1 -0
  15. package/src/embedding-model-middleware/v3/embedding-model-v3-middleware.ts +69 -0
  16. package/src/embedding-model-middleware/v3/index.ts +1 -0
  17. package/src/errors/ai-sdk-error.ts +62 -0
  18. package/src/errors/api-call-error.ts +59 -0
  19. package/src/errors/empty-response-body-error.ts +17 -0
  20. package/src/errors/get-error-message.ts +15 -0
  21. package/src/errors/index.ts +15 -0
  22. package/src/errors/invalid-argument-error.ts +32 -0
  23. package/src/errors/invalid-prompt-error.ts +33 -0
  24. package/src/errors/invalid-response-data-error.ts +31 -0
  25. package/src/errors/json-parse-error.ts +29 -0
  26. package/src/errors/load-api-key-error.ts +17 -0
  27. package/src/errors/load-setting-error.ts +17 -0
  28. package/src/errors/no-content-generated-error.ts +22 -0
  29. package/src/errors/no-such-model-error.ts +45 -0
  30. package/src/errors/too-many-embedding-values-for-call-error.ts +40 -0
  31. package/src/errors/type-validation-error.ts +51 -0
  32. package/src/errors/unsupported-functionality-error.ts +26 -0
  33. package/src/image-model/index.ts +2 -0
  34. package/src/image-model/v2/image-model-v2-call-options.ts +60 -0
  35. package/src/image-model/v2/image-model-v2-call-warning.ts +16 -0
  36. package/src/image-model/v2/image-model-v2.ts +104 -0
  37. package/src/image-model/v2/index.ts +6 -0
  38. package/src/image-model/v3/image-model-v3-call-options.ts +74 -0
  39. package/src/image-model/v3/image-model-v3-file.ts +44 -0
  40. package/src/image-model/v3/image-model-v3-usage.ts +19 -0
  41. package/src/image-model/v3/image-model-v3.ts +110 -0
  42. package/src/image-model/v3/index.ts +7 -0
  43. package/src/image-model-middleware/index.ts +1 -0
  44. package/src/image-model-middleware/v3/image-model-v3-middleware.ts +61 -0
  45. package/src/image-model-middleware/v3/index.ts +1 -0
  46. package/src/index.ts +15 -0
  47. package/src/json-value/index.ts +2 -0
  48. package/src/json-value/is-json.ts +40 -0
  49. package/src/json-value/json-value.ts +17 -0
  50. package/src/language-model/index.ts +2 -0
  51. package/src/language-model/v2/index.ts +18 -0
  52. package/src/language-model/v2/language-model-v2-call-options.ts +127 -0
  53. package/src/language-model/v2/language-model-v2-call-warning.ts +23 -0
  54. package/src/language-model/v2/language-model-v2-content.ts +14 -0
  55. package/src/language-model/v2/language-model-v2-data-content.ts +4 -0
  56. package/src/language-model/v2/language-model-v2-file.ts +25 -0
  57. package/src/language-model/v2/language-model-v2-finish-reason.ts +20 -0
  58. package/src/language-model/v2/language-model-v2-function-tool.ts +37 -0
  59. package/src/language-model/v2/language-model-v2-prompt.ts +218 -0
  60. package/src/language-model/v2/language-model-v2-provider-defined-tool.ts +24 -0
  61. package/src/language-model/v2/language-model-v2-reasoning.ts +14 -0
  62. package/src/language-model/v2/language-model-v2-response-metadata.ts +16 -0
  63. package/src/language-model/v2/language-model-v2-source.ts +67 -0
  64. package/src/language-model/v2/language-model-v2-stream-part.ts +102 -0
  65. package/src/language-model/v2/language-model-v2-text.ts +15 -0
  66. package/src/language-model/v2/language-model-v2-tool-call.ts +35 -0
  67. package/src/language-model/v2/language-model-v2-tool-choice.ts +5 -0
  68. package/src/language-model/v2/language-model-v2-tool-result.ts +40 -0
  69. package/src/language-model/v2/language-model-v2-usage.ts +34 -0
  70. package/src/language-model/v2/language-model-v2.ts +137 -0
  71. package/src/language-model/v3/index.ts +21 -0
  72. package/src/language-model/v3/language-model-v3-call-options.ts +125 -0
  73. package/src/language-model/v3/language-model-v3-content.ts +16 -0
  74. package/src/language-model/v3/language-model-v3-data-content.ts +4 -0
  75. package/src/language-model/v3/language-model-v3-file.ts +32 -0
  76. package/src/language-model/v3/language-model-v3-finish-reason.ts +33 -0
  77. package/src/language-model/v3/language-model-v3-function-tool.ts +53 -0
  78. package/src/language-model/v3/language-model-v3-generate-result.ts +63 -0
  79. package/src/language-model/v3/language-model-v3-prompt.ts +422 -0
  80. package/src/language-model/v3/language-model-v3-provider-tool.ts +28 -0
  81. package/src/language-model/v3/language-model-v3-reasoning.ts +14 -0
  82. package/src/language-model/v3/language-model-v3-response-metadata.ts +16 -0
  83. package/src/language-model/v3/language-model-v3-source.ts +67 -0
  84. package/src/language-model/v3/language-model-v3-stream-part.ts +106 -0
  85. package/src/language-model/v3/language-model-v3-stream-result.ts +32 -0
  86. package/src/language-model/v3/language-model-v3-text.ts +15 -0
  87. package/src/language-model/v3/language-model-v3-tool-approval-request.ts +27 -0
  88. package/src/language-model/v3/language-model-v3-tool-call.ts +41 -0
  89. package/src/language-model/v3/language-model-v3-tool-choice.ts +5 -0
  90. package/src/language-model/v3/language-model-v3-tool-result.ts +51 -0
  91. package/src/language-model/v3/language-model-v3-usage.ts +59 -0
  92. package/src/language-model/v3/language-model-v3.ts +61 -0
  93. package/src/language-model-middleware/index.ts +2 -0
  94. package/src/language-model-middleware/v2/index.ts +1 -0
  95. package/src/language-model-middleware/v2/language-model-v2-middleware.ts +82 -0
  96. package/src/language-model-middleware/v3/index.ts +1 -0
  97. package/src/language-model-middleware/v3/language-model-v3-middleware.ts +84 -0
  98. package/src/provider/index.ts +2 -0
  99. package/src/provider/v2/index.ts +1 -0
  100. package/src/provider/v2/provider-v2.ts +64 -0
  101. package/src/provider/v3/index.ts +1 -0
  102. package/src/provider/v3/provider-v3.ts +93 -0
  103. package/src/reranking-model/index.ts +1 -0
  104. package/src/reranking-model/v3/index.ts +2 -0
  105. package/src/reranking-model/v3/reranking-model-v3-call-options.ts +40 -0
  106. package/src/reranking-model/v3/reranking-model-v3.ts +90 -0
  107. package/src/shared/index.ts +2 -0
  108. package/src/shared/v2/index.ts +3 -0
  109. package/src/shared/v2/shared-v2-headers.ts +1 -0
  110. package/src/shared/v2/shared-v2-provider-metadata.ts +27 -0
  111. package/src/shared/v2/shared-v2-provider-options.ts +24 -0
  112. package/src/shared/v3/index.ts +4 -0
  113. package/src/shared/v3/shared-v3-headers.ts +1 -0
  114. package/src/shared/v3/shared-v3-provider-metadata.ts +24 -0
  115. package/src/shared/v3/shared-v3-provider-options.ts +24 -0
  116. package/src/shared/v3/shared-v3-warning.ts +50 -0
  117. package/src/speech-model/index.ts +2 -0
  118. package/src/speech-model/v2/index.ts +3 -0
  119. package/src/speech-model/v2/speech-model-v2-call-options.ts +62 -0
  120. package/src/speech-model/v2/speech-model-v2-call-warning.ts +16 -0
  121. package/src/speech-model/v2/speech-model-v2.ts +89 -0
  122. package/src/speech-model/v3/index.ts +2 -0
  123. package/src/speech-model/v3/speech-model-v3-call-options.ts +62 -0
  124. package/src/speech-model/v3/speech-model-v3.ts +89 -0
  125. package/src/transcription-model/index.ts +2 -0
  126. package/src/transcription-model/v2/index.ts +3 -0
  127. package/src/transcription-model/v2/transcription-model-v2-call-options.ts +48 -0
  128. package/src/transcription-model/v2/transcription-model-v2-call-warning.ts +16 -0
  129. package/src/transcription-model/v2/transcription-model-v2.ts +117 -0
  130. package/src/transcription-model/v3/index.ts +2 -0
  131. package/src/transcription-model/v3/transcription-model-v3-call-options.ts +45 -0
  132. package/src/transcription-model/v3/transcription-model-v3.ts +117 -0
@@ -0,0 +1,218 @@
1
+ import { JSONValue } from '../../json-value/json-value';
2
+ import { SharedV2ProviderOptions } from '../../shared/v2/shared-v2-provider-options';
3
+ import { LanguageModelV2DataContent } from './language-model-v2-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 LanguageModelV2Prompt = Array<LanguageModelV2Message>;
15
+
16
+ export type LanguageModelV2Message =
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<LanguageModelV2TextPart | LanguageModelV2FilePart>;
28
+ }
29
+ | {
30
+ role: 'assistant';
31
+ content: Array<
32
+ | LanguageModelV2TextPart
33
+ | LanguageModelV2FilePart
34
+ | LanguageModelV2ReasoningPart
35
+ | LanguageModelV2ToolCallPart
36
+ | LanguageModelV2ToolResultPart
37
+ >;
38
+ }
39
+ | {
40
+ role: 'tool';
41
+ content: Array<LanguageModelV2ToolResultPart>;
42
+ }
43
+ ) & {
44
+ /**
45
+ * Additional provider-specific options. They are passed through
46
+ * to the provider from the AI SDK and enable provider-specific
47
+ * functionality that can be fully encapsulated in the provider.
48
+ */
49
+ providerOptions?: SharedV2ProviderOptions;
50
+ };
51
+
52
+ /**
53
+ Text content part of a prompt. It contains a string of text.
54
+ */
55
+ export interface LanguageModelV2TextPart {
56
+ type: 'text';
57
+
58
+ /**
59
+ The text content.
60
+ */
61
+ text: string;
62
+
63
+ /**
64
+ * Additional provider-specific options. They are passed through
65
+ * to the provider from the AI SDK and enable provider-specific
66
+ * functionality that can be fully encapsulated in the provider.
67
+ */
68
+ providerOptions?: SharedV2ProviderOptions;
69
+ }
70
+
71
+ /**
72
+ Reasoning content part of a prompt. It contains a string of reasoning text.
73
+ */
74
+ export interface LanguageModelV2ReasoningPart {
75
+ type: 'reasoning';
76
+
77
+ /**
78
+ The reasoning text.
79
+ */
80
+ text: string;
81
+
82
+ /**
83
+ * Additional provider-specific options. They are passed through
84
+ * to the provider from the AI SDK and enable provider-specific
85
+ * functionality that can be fully encapsulated in the provider.
86
+ */
87
+ providerOptions?: SharedV2ProviderOptions;
88
+ }
89
+
90
+ /**
91
+ File content part of a prompt. It contains a file.
92
+ */
93
+ export interface LanguageModelV2FilePart {
94
+ type: 'file';
95
+
96
+ /**
97
+ * Optional filename of the file.
98
+ */
99
+ filename?: string;
100
+
101
+ /**
102
+ File data. Can be a Uint8Array, base64 encoded data as a string or a URL.
103
+ */
104
+ data: LanguageModelV2DataContent;
105
+
106
+ /**
107
+ IANA media type of the file.
108
+
109
+ Can support wildcards, e.g. `image/*` (in which case the provider needs to take appropriate action).
110
+
111
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
112
+ */
113
+ mediaType: string;
114
+
115
+ /**
116
+ * Additional provider-specific options. They are passed through
117
+ * to the provider from the AI SDK and enable provider-specific
118
+ * functionality that can be fully encapsulated in the provider.
119
+ */
120
+ providerOptions?: SharedV2ProviderOptions;
121
+ }
122
+
123
+ /**
124
+ Tool call content part of a prompt. It contains a tool call (usually generated by the AI model).
125
+ */
126
+ export interface LanguageModelV2ToolCallPart {
127
+ type: 'tool-call';
128
+
129
+ /**
130
+ ID of the tool call. This ID is used to match the tool call with the tool result.
131
+ */
132
+ toolCallId: string;
133
+
134
+ /**
135
+ Name of the tool that is being called.
136
+ */
137
+ toolName: string;
138
+
139
+ /**
140
+ Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema.
141
+ */
142
+ input: unknown;
143
+
144
+ /**
145
+ * Whether the tool call will be executed by the provider.
146
+ * If this flag is not set or is false, the tool call will be executed by the client.
147
+ */
148
+ providerExecuted?: boolean;
149
+
150
+ /**
151
+ * Additional provider-specific options. They are passed through
152
+ * to the provider from the AI SDK and enable provider-specific
153
+ * functionality that can be fully encapsulated in the provider.
154
+ */
155
+ providerOptions?: SharedV2ProviderOptions;
156
+ }
157
+
158
+ /**
159
+ Tool result content part of a prompt. It contains the result of the tool call with the matching ID.
160
+ */
161
+ export interface LanguageModelV2ToolResultPart {
162
+ type: 'tool-result';
163
+
164
+ /**
165
+ ID of the tool call that this result is associated with.
166
+ */
167
+ toolCallId: string;
168
+
169
+ /**
170
+ Name of the tool that generated this result.
171
+ */
172
+ toolName: string;
173
+
174
+ /**
175
+ Result of the tool call.
176
+ */
177
+ output: LanguageModelV2ToolResultOutput;
178
+
179
+ /**
180
+ * Additional provider-specific options. They are passed through
181
+ * to the provider from the AI SDK and enable provider-specific
182
+ * functionality that can be fully encapsulated in the provider.
183
+ */
184
+ providerOptions?: SharedV2ProviderOptions;
185
+ }
186
+
187
+ export type LanguageModelV2ToolResultOutput =
188
+ | { type: 'text'; value: string }
189
+ | { type: 'json'; value: JSONValue }
190
+ | { type: 'error-text'; value: string }
191
+ | { type: 'error-json'; value: JSONValue }
192
+ | {
193
+ type: 'content';
194
+ value: Array<
195
+ | {
196
+ type: 'text';
197
+
198
+ /**
199
+ Text content.
200
+ */
201
+ text: string;
202
+ }
203
+ | {
204
+ type: 'media';
205
+
206
+ /**
207
+ Base-64 encoded media data.
208
+ */
209
+ data: string;
210
+
211
+ /**
212
+ IANA media type.
213
+ @see https://www.iana.org/assignments/media-types/media-types.xhtml
214
+ */
215
+ mediaType: string;
216
+ }
217
+ >;
218
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ The configuration of a tool that is defined by the provider.
3
+ */
4
+ export type LanguageModelV2ProviderDefinedTool = {
5
+ /**
6
+ The type of the tool (always 'provider-defined').
7
+ */
8
+ type: 'provider-defined';
9
+
10
+ /**
11
+ The ID of the tool. Should follow the format `<provider-name>.<unique-tool-name>`.
12
+ */
13
+ id: `${string}.${string}`;
14
+
15
+ /**
16
+ The name of the tool that the user must use in the tool set.
17
+ */
18
+ name: string;
19
+
20
+ /**
21
+ The arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.
22
+ */
23
+ args: Record<string, unknown>;
24
+ };
@@ -0,0 +1,14 @@
1
+ import { SharedV2ProviderMetadata } from '../../shared';
2
+
3
+ /**
4
+ Reasoning that the model has generated.
5
+ */
6
+ export type LanguageModelV2Reasoning = {
7
+ type: 'reasoning';
8
+ text: string;
9
+
10
+ /**
11
+ * Optional provider-specific metadata for the reasoning part.
12
+ */
13
+ providerMetadata?: SharedV2ProviderMetadata;
14
+ };
@@ -0,0 +1,16 @@
1
+ export interface LanguageModelV2ResponseMetadata {
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 { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata';
2
+
3
+ /**
4
+ A source that has been used as input to generate the response.
5
+ */
6
+ export type LanguageModelV2Source =
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?: SharedV2ProviderMetadata;
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?: SharedV2ProviderMetadata;
67
+ };
@@ -0,0 +1,102 @@
1
+ import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata';
2
+ import { LanguageModelV2CallWarning } from './language-model-v2-call-warning';
3
+ import { LanguageModelV2File } from './language-model-v2-file';
4
+ import { LanguageModelV2FinishReason } from './language-model-v2-finish-reason';
5
+ import { LanguageModelV2ResponseMetadata } from './language-model-v2-response-metadata';
6
+ import { LanguageModelV2Source } from './language-model-v2-source';
7
+ import { LanguageModelV2ToolCall } from './language-model-v2-tool-call';
8
+ import { LanguageModelV2ToolResult } from './language-model-v2-tool-result';
9
+ import { LanguageModelV2Usage } from './language-model-v2-usage';
10
+
11
+ export type LanguageModelV2StreamPart =
12
+ // Text blocks:
13
+ | {
14
+ type: 'text-start';
15
+ providerMetadata?: SharedV2ProviderMetadata;
16
+ id: string;
17
+ }
18
+ | {
19
+ type: 'text-delta';
20
+ id: string;
21
+ providerMetadata?: SharedV2ProviderMetadata;
22
+ delta: string;
23
+ }
24
+ | {
25
+ type: 'text-end';
26
+ providerMetadata?: SharedV2ProviderMetadata;
27
+ id: string;
28
+ }
29
+
30
+ // Reasoning blocks:
31
+ | {
32
+ type: 'reasoning-start';
33
+ providerMetadata?: SharedV2ProviderMetadata;
34
+ id: string;
35
+ }
36
+ | {
37
+ type: 'reasoning-delta';
38
+ id: string;
39
+ providerMetadata?: SharedV2ProviderMetadata;
40
+ delta: string;
41
+ }
42
+ | {
43
+ type: 'reasoning-end';
44
+ id: string;
45
+ providerMetadata?: SharedV2ProviderMetadata;
46
+ }
47
+
48
+ // Tool calls and results:
49
+ | {
50
+ type: 'tool-input-start';
51
+ id: string;
52
+ toolName: string;
53
+ providerMetadata?: SharedV2ProviderMetadata;
54
+ providerExecuted?: boolean;
55
+ }
56
+ | {
57
+ type: 'tool-input-delta';
58
+ id: string;
59
+ delta: string;
60
+ providerMetadata?: SharedV2ProviderMetadata;
61
+ }
62
+ | {
63
+ type: 'tool-input-end';
64
+ id: string;
65
+ providerMetadata?: SharedV2ProviderMetadata;
66
+ }
67
+ | LanguageModelV2ToolCall
68
+ | LanguageModelV2ToolResult
69
+
70
+ // Files and sources:
71
+ | LanguageModelV2File
72
+ | LanguageModelV2Source
73
+
74
+ // stream start event with warnings for the call, e.g. unsupported settings:
75
+ | {
76
+ type: 'stream-start';
77
+ warnings: Array<LanguageModelV2CallWarning>;
78
+ }
79
+
80
+ // metadata for the response.
81
+ // separate stream part so it can be sent once it is available.
82
+ | ({ type: 'response-metadata' } & LanguageModelV2ResponseMetadata)
83
+
84
+ // metadata that is available after the stream is finished:
85
+ | {
86
+ type: 'finish';
87
+ usage: LanguageModelV2Usage;
88
+ finishReason: LanguageModelV2FinishReason;
89
+ providerMetadata?: SharedV2ProviderMetadata;
90
+ }
91
+
92
+ // raw chunks if enabled
93
+ | {
94
+ type: 'raw';
95
+ rawValue: unknown;
96
+ }
97
+
98
+ // error parts are streamed, allowing for multiple errors
99
+ | {
100
+ type: 'error';
101
+ error: unknown;
102
+ };
@@ -0,0 +1,15 @@
1
+ import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata';
2
+
3
+ /**
4
+ Text that the model has generated.
5
+ */
6
+ export type LanguageModelV2Text = {
7
+ type: 'text';
8
+
9
+ /**
10
+ The text content.
11
+ */
12
+ text: string;
13
+
14
+ providerMetadata?: SharedV2ProviderMetadata;
15
+ };
@@ -0,0 +1,35 @@
1
+ import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata';
2
+
3
+ /**
4
+ * Tool calls that the model has generated.
5
+ */
6
+ export type LanguageModelV2ToolCall = {
7
+ type: 'tool-call';
8
+
9
+ /**
10
+ * The identifier of the tool call. It must be unique across all tool calls.
11
+ */
12
+ toolCallId: string;
13
+
14
+ /**
15
+ * The name of the tool that should be called.
16
+ */
17
+ toolName: string;
18
+
19
+ /**
20
+ * Stringified JSON object with the tool call arguments. Must match the
21
+ * parameters schema of the tool.
22
+ */
23
+ input: string;
24
+
25
+ /**
26
+ * Whether the tool call will be executed by the provider.
27
+ * If this flag is not set or is false, the tool call will be executed by the client.
28
+ */
29
+ providerExecuted?: boolean;
30
+
31
+ /**
32
+ * Additional provider-specific metadata for the tool call.
33
+ */
34
+ providerMetadata?: SharedV2ProviderMetadata;
35
+ };
@@ -0,0 +1,5 @@
1
+ export type LanguageModelV2ToolChoice =
2
+ | { type: 'auto' } // the tool selection is automatic (can be no tool)
3
+ | { type: 'none' } // no tool must be selected
4
+ | { type: 'required' } // one of the available tools must be selected
5
+ | { type: 'tool'; toolName: string }; // a specific tool must be selected:
@@ -0,0 +1,40 @@
1
+ import { SharedV2ProviderMetadata } from '../../shared/v2/shared-v2-provider-metadata';
2
+
3
+ /**
4
+ Result of a tool call that has been executed by the provider.
5
+ */
6
+ export type LanguageModelV2ToolResult = {
7
+ type: 'tool-result';
8
+
9
+ /**
10
+ * The ID of the tool call that this result is associated with.
11
+ */
12
+ toolCallId: string;
13
+
14
+ /**
15
+ * Name of the tool that generated this result.
16
+ */
17
+ toolName: string;
18
+
19
+ /**
20
+ * Result of the tool call. This is a JSON-serializable object.
21
+ */
22
+ result: unknown;
23
+
24
+ /**
25
+ * Optional flag if the result is an error or an error message.
26
+ */
27
+ isError?: boolean;
28
+
29
+ /**
30
+ * Whether the tool result was generated by the provider.
31
+ * If this flag is set to true, the tool result was generated by the provider.
32
+ * If this flag is not set or is false, the tool result was generated by the client.
33
+ */
34
+ providerExecuted?: boolean;
35
+
36
+ /**
37
+ * Additional provider-specific metadata for the tool result.
38
+ */
39
+ providerMetadata?: SharedV2ProviderMetadata;
40
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ Usage information for a language model call.
3
+
4
+ If your API return additional usage information, you can add it to the
5
+ provider metadata under your provider's key.
6
+ */
7
+ export type LanguageModelV2Usage = {
8
+ /**
9
+ The number of input (prompt) tokens used.
10
+ */
11
+ inputTokens: number | undefined;
12
+
13
+ /**
14
+ The number of output (completion) tokens used.
15
+ */
16
+ outputTokens: number | undefined;
17
+
18
+ /**
19
+ The total number of tokens as reported by the provider.
20
+ This number might be different from the sum of `inputTokens` and `outputTokens`
21
+ and e.g. include reasoning tokens or other overhead.
22
+ */
23
+ totalTokens: number | undefined;
24
+
25
+ /**
26
+ The number of reasoning tokens used.
27
+ */
28
+ reasoningTokens?: number | undefined;
29
+
30
+ /**
31
+ The number of cached input tokens.
32
+ */
33
+ cachedInputTokens?: number | undefined;
34
+ };