ai 6.0.201 → 6.0.203
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.
- package/CHANGELOG.md +41 -0
- package/dist/index.d.mts +61 -15
- package/dist/index.d.ts +61 -15
- package/dist/index.js +853 -592
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +695 -430
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +10 -12
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +11 -13
- package/dist/internal/index.mjs.map +1 -1
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +32 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +20 -2
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +1 -1
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-signature-error.mdx +31 -0
- package/package.json +3 -3
- package/src/error/index.ts +1 -0
- package/src/error/invalid-tool-approval-signature-error.ts +35 -0
- package/src/generate-text/generate-text.ts +48 -6
- package/src/generate-text/run-tools-transformation.ts +14 -1
- package/src/generate-text/stream-text.ts +47 -11
- package/src/generate-text/to-response-messages.ts +1 -0
- package/src/generate-text/tool-approval-request-output.ts +5 -0
- package/src/generate-text/tool-approval-signature.ts +125 -0
- package/src/generate-text/validate-tool-approvals.ts +124 -0
- package/src/middleware/extract-json-middleware.ts +2 -1
- package/src/middleware/extract-reasoning-middleware.ts +2 -1
- package/src/ui/convert-to-model-messages.ts +3 -0
- package/src/ui/process-ui-message-stream.ts +6 -1
- package/src/ui/ui-messages.ts +10 -0
- package/src/ui/validate-ui-messages.ts +10 -0
- package/src/ui-message-stream/create-ui-message-stream.ts +2 -3
- package/src/ui-message-stream/ui-message-chunks.ts +2 -0
- package/src/util/download/download.ts +11 -14
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __export = (target, all) => {
|
|
3
|
-
for (var
|
|
4
|
-
__defProp(target,
|
|
3
|
+
for (var name22 in all)
|
|
4
|
+
__defProp(target, name22, { get: all[name22], enumerable: true });
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
// src/index.ts
|
|
8
8
|
import { createGateway, gateway as gateway2 } from "@ai-sdk/gateway";
|
|
9
9
|
import {
|
|
10
|
-
asSchema as
|
|
10
|
+
asSchema as asSchema6,
|
|
11
11
|
createIdGenerator as createIdGenerator5,
|
|
12
12
|
dynamicTool,
|
|
13
13
|
generateId,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
|
|
30
30
|
// src/error/index.ts
|
|
31
31
|
import {
|
|
32
|
-
AISDKError as
|
|
32
|
+
AISDKError as AISDKError22,
|
|
33
33
|
APICallError,
|
|
34
34
|
EmptyResponseBodyError,
|
|
35
35
|
InvalidPromptError,
|
|
@@ -112,23 +112,25 @@ var InvalidToolApprovalError = class extends AISDKError3 {
|
|
|
112
112
|
};
|
|
113
113
|
_a3 = symbol3;
|
|
114
114
|
|
|
115
|
-
// src/error/invalid-tool-
|
|
116
|
-
import { AISDKError as AISDKError4
|
|
117
|
-
var name4 = "
|
|
115
|
+
// src/error/invalid-tool-approval-signature-error.ts
|
|
116
|
+
import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
|
|
117
|
+
var name4 = "AI_InvalidToolApprovalSignatureError";
|
|
118
118
|
var marker4 = `vercel.ai.error.${name4}`;
|
|
119
119
|
var symbol4 = Symbol.for(marker4);
|
|
120
120
|
var _a4;
|
|
121
|
-
var
|
|
121
|
+
var InvalidToolApprovalSignatureError = class extends AISDKError4 {
|
|
122
122
|
constructor({
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`
|
|
123
|
+
approvalId,
|
|
124
|
+
toolCallId,
|
|
125
|
+
reason
|
|
127
126
|
}) {
|
|
128
|
-
super({
|
|
127
|
+
super({
|
|
128
|
+
name: name4,
|
|
129
|
+
message: `Tool approval signature verification failed for approval "${approvalId}" (tool call "${toolCallId}"): ${reason}`
|
|
130
|
+
});
|
|
129
131
|
this[_a4] = true;
|
|
130
|
-
this.
|
|
131
|
-
this.
|
|
132
|
+
this.approvalId = approvalId;
|
|
133
|
+
this.toolCallId = toolCallId;
|
|
132
134
|
}
|
|
133
135
|
static isInstance(error) {
|
|
134
136
|
return AISDKError4.hasMarker(error, marker4);
|
|
@@ -136,24 +138,23 @@ var InvalidToolInputError = class extends AISDKError4 {
|
|
|
136
138
|
};
|
|
137
139
|
_a4 = symbol4;
|
|
138
140
|
|
|
139
|
-
// src/error/tool-
|
|
140
|
-
import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
|
|
141
|
-
var name5 = "
|
|
141
|
+
// src/error/invalid-tool-input-error.ts
|
|
142
|
+
import { AISDKError as AISDKError5, getErrorMessage } from "@ai-sdk/provider";
|
|
143
|
+
var name5 = "AI_InvalidToolInputError";
|
|
142
144
|
var marker5 = `vercel.ai.error.${name5}`;
|
|
143
145
|
var symbol5 = Symbol.for(marker5);
|
|
144
146
|
var _a5;
|
|
145
|
-
var
|
|
147
|
+
var InvalidToolInputError = class extends AISDKError5 {
|
|
146
148
|
constructor({
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
toolInput,
|
|
150
|
+
toolName,
|
|
151
|
+
cause,
|
|
152
|
+
message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`
|
|
149
153
|
}) {
|
|
150
|
-
super({
|
|
151
|
-
name: name5,
|
|
152
|
-
message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
|
|
153
|
-
});
|
|
154
|
+
super({ name: name5, message, cause });
|
|
154
155
|
this[_a5] = true;
|
|
155
|
-
this.
|
|
156
|
-
this.
|
|
156
|
+
this.toolInput = toolInput;
|
|
157
|
+
this.toolName = toolName;
|
|
157
158
|
}
|
|
158
159
|
static isInstance(error) {
|
|
159
160
|
return AISDKError5.hasMarker(error, marker5);
|
|
@@ -161,22 +162,24 @@ var ToolCallNotFoundForApprovalError = class extends AISDKError5 {
|
|
|
161
162
|
};
|
|
162
163
|
_a5 = symbol5;
|
|
163
164
|
|
|
164
|
-
// src/error/
|
|
165
|
+
// src/error/tool-call-not-found-for-approval-error.ts
|
|
165
166
|
import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
|
|
166
|
-
var name6 = "
|
|
167
|
+
var name6 = "AI_ToolCallNotFoundForApprovalError";
|
|
167
168
|
var marker6 = `vercel.ai.error.${name6}`;
|
|
168
169
|
var symbol6 = Symbol.for(marker6);
|
|
169
170
|
var _a6;
|
|
170
|
-
var
|
|
171
|
-
constructor({
|
|
171
|
+
var ToolCallNotFoundForApprovalError = class extends AISDKError6 {
|
|
172
|
+
constructor({
|
|
173
|
+
toolCallId,
|
|
174
|
+
approvalId
|
|
175
|
+
}) {
|
|
172
176
|
super({
|
|
173
177
|
name: name6,
|
|
174
|
-
message: `Tool
|
|
175
|
-
", "
|
|
176
|
-
)}.`
|
|
178
|
+
message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
|
|
177
179
|
});
|
|
178
180
|
this[_a6] = true;
|
|
179
|
-
this.
|
|
181
|
+
this.toolCallId = toolCallId;
|
|
182
|
+
this.approvalId = approvalId;
|
|
180
183
|
}
|
|
181
184
|
static isInstance(error) {
|
|
182
185
|
return AISDKError6.hasMarker(error, marker6);
|
|
@@ -184,21 +187,22 @@ var MissingToolResultsError = class extends AISDKError6 {
|
|
|
184
187
|
};
|
|
185
188
|
_a6 = symbol6;
|
|
186
189
|
|
|
187
|
-
// src/error/
|
|
190
|
+
// src/error/missing-tool-result-error.ts
|
|
188
191
|
import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
|
|
189
|
-
var name7 = "
|
|
192
|
+
var name7 = "AI_MissingToolResultsError";
|
|
190
193
|
var marker7 = `vercel.ai.error.${name7}`;
|
|
191
194
|
var symbol7 = Symbol.for(marker7);
|
|
192
195
|
var _a7;
|
|
193
|
-
var
|
|
194
|
-
constructor({
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
196
|
+
var MissingToolResultsError = class extends AISDKError7 {
|
|
197
|
+
constructor({ toolCallIds }) {
|
|
198
|
+
super({
|
|
199
|
+
name: name7,
|
|
200
|
+
message: `Tool result${toolCallIds.length > 1 ? "s are" : " is"} missing for tool call${toolCallIds.length > 1 ? "s" : ""} ${toolCallIds.join(
|
|
201
|
+
", "
|
|
202
|
+
)}.`
|
|
203
|
+
});
|
|
200
204
|
this[_a7] = true;
|
|
201
|
-
this.
|
|
205
|
+
this.toolCallIds = toolCallIds;
|
|
202
206
|
}
|
|
203
207
|
static isInstance(error) {
|
|
204
208
|
return AISDKError7.hasMarker(error, marker7);
|
|
@@ -206,27 +210,21 @@ var NoImageGeneratedError = class extends AISDKError7 {
|
|
|
206
210
|
};
|
|
207
211
|
_a7 = symbol7;
|
|
208
212
|
|
|
209
|
-
// src/error/no-
|
|
213
|
+
// src/error/no-image-generated-error.ts
|
|
210
214
|
import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
|
|
211
|
-
var name8 = "
|
|
215
|
+
var name8 = "AI_NoImageGeneratedError";
|
|
212
216
|
var marker8 = `vercel.ai.error.${name8}`;
|
|
213
217
|
var symbol8 = Symbol.for(marker8);
|
|
214
218
|
var _a8;
|
|
215
|
-
var
|
|
219
|
+
var NoImageGeneratedError = class extends AISDKError8 {
|
|
216
220
|
constructor({
|
|
217
|
-
message = "No
|
|
221
|
+
message = "No image generated.",
|
|
218
222
|
cause,
|
|
219
|
-
|
|
220
|
-
response,
|
|
221
|
-
usage,
|
|
222
|
-
finishReason
|
|
223
|
+
responses
|
|
223
224
|
}) {
|
|
224
225
|
super({ name: name8, message, cause });
|
|
225
226
|
this[_a8] = true;
|
|
226
|
-
this.
|
|
227
|
-
this.response = response;
|
|
228
|
-
this.usage = usage;
|
|
229
|
-
this.finishReason = finishReason;
|
|
227
|
+
this.responses = responses;
|
|
230
228
|
}
|
|
231
229
|
static isInstance(error) {
|
|
232
230
|
return AISDKError8.hasMarker(error, marker8);
|
|
@@ -234,20 +232,27 @@ var NoObjectGeneratedError = class extends AISDKError8 {
|
|
|
234
232
|
};
|
|
235
233
|
_a8 = symbol8;
|
|
236
234
|
|
|
237
|
-
// src/error/no-
|
|
235
|
+
// src/error/no-object-generated-error.ts
|
|
238
236
|
import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
|
|
239
|
-
var name9 = "
|
|
237
|
+
var name9 = "AI_NoObjectGeneratedError";
|
|
240
238
|
var marker9 = `vercel.ai.error.${name9}`;
|
|
241
239
|
var symbol9 = Symbol.for(marker9);
|
|
242
240
|
var _a9;
|
|
243
|
-
var
|
|
244
|
-
// used in isInstance
|
|
241
|
+
var NoObjectGeneratedError = class extends AISDKError9 {
|
|
245
242
|
constructor({
|
|
246
|
-
message = "No
|
|
247
|
-
cause
|
|
248
|
-
|
|
243
|
+
message = "No object generated.",
|
|
244
|
+
cause,
|
|
245
|
+
text: text2,
|
|
246
|
+
response,
|
|
247
|
+
usage,
|
|
248
|
+
finishReason
|
|
249
|
+
}) {
|
|
249
250
|
super({ name: name9, message, cause });
|
|
250
251
|
this[_a9] = true;
|
|
252
|
+
this.text = text2;
|
|
253
|
+
this.response = response;
|
|
254
|
+
this.usage = usage;
|
|
255
|
+
this.finishReason = finishReason;
|
|
251
256
|
}
|
|
252
257
|
static isInstance(error) {
|
|
253
258
|
return AISDKError9.hasMarker(error, marker9);
|
|
@@ -255,20 +260,20 @@ var NoOutputGeneratedError = class extends AISDKError9 {
|
|
|
255
260
|
};
|
|
256
261
|
_a9 = symbol9;
|
|
257
262
|
|
|
258
|
-
// src/error/no-
|
|
263
|
+
// src/error/no-output-generated-error.ts
|
|
259
264
|
import { AISDKError as AISDKError10 } from "@ai-sdk/provider";
|
|
260
|
-
var name10 = "
|
|
265
|
+
var name10 = "AI_NoOutputGeneratedError";
|
|
261
266
|
var marker10 = `vercel.ai.error.${name10}`;
|
|
262
267
|
var symbol10 = Symbol.for(marker10);
|
|
263
268
|
var _a10;
|
|
264
|
-
var
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
269
|
+
var NoOutputGeneratedError = class extends AISDKError10 {
|
|
270
|
+
// used in isInstance
|
|
271
|
+
constructor({
|
|
272
|
+
message = "No output generated.",
|
|
273
|
+
cause
|
|
274
|
+
} = {}) {
|
|
275
|
+
super({ name: name10, message, cause });
|
|
270
276
|
this[_a10] = true;
|
|
271
|
-
this.responses = options.responses;
|
|
272
277
|
}
|
|
273
278
|
static isInstance(error) {
|
|
274
279
|
return AISDKError10.hasMarker(error, marker10);
|
|
@@ -276,17 +281,17 @@ var NoSpeechGeneratedError = class extends AISDKError10 {
|
|
|
276
281
|
};
|
|
277
282
|
_a10 = symbol10;
|
|
278
283
|
|
|
279
|
-
// src/error/no-
|
|
284
|
+
// src/error/no-speech-generated-error.ts
|
|
280
285
|
import { AISDKError as AISDKError11 } from "@ai-sdk/provider";
|
|
281
|
-
var name11 = "
|
|
286
|
+
var name11 = "AI_NoSpeechGeneratedError";
|
|
282
287
|
var marker11 = `vercel.ai.error.${name11}`;
|
|
283
288
|
var symbol11 = Symbol.for(marker11);
|
|
284
289
|
var _a11;
|
|
285
|
-
var
|
|
290
|
+
var NoSpeechGeneratedError = class extends AISDKError11 {
|
|
286
291
|
constructor(options) {
|
|
287
292
|
super({
|
|
288
293
|
name: name11,
|
|
289
|
-
message: "No
|
|
294
|
+
message: "No speech audio generated."
|
|
290
295
|
});
|
|
291
296
|
this[_a11] = true;
|
|
292
297
|
this.responses = options.responses;
|
|
@@ -297,30 +302,51 @@ var NoTranscriptGeneratedError = class extends AISDKError11 {
|
|
|
297
302
|
};
|
|
298
303
|
_a11 = symbol11;
|
|
299
304
|
|
|
300
|
-
// src/error/no-
|
|
305
|
+
// src/error/no-transcript-generated-error.ts
|
|
301
306
|
import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
|
|
302
|
-
var name12 = "
|
|
307
|
+
var name12 = "AI_NoTranscriptGeneratedError";
|
|
303
308
|
var marker12 = `vercel.ai.error.${name12}`;
|
|
304
309
|
var symbol12 = Symbol.for(marker12);
|
|
305
310
|
var _a12;
|
|
306
|
-
var
|
|
311
|
+
var NoTranscriptGeneratedError = class extends AISDKError12 {
|
|
312
|
+
constructor(options) {
|
|
313
|
+
super({
|
|
314
|
+
name: name12,
|
|
315
|
+
message: "No transcript generated."
|
|
316
|
+
});
|
|
317
|
+
this[_a12] = true;
|
|
318
|
+
this.responses = options.responses;
|
|
319
|
+
}
|
|
320
|
+
static isInstance(error) {
|
|
321
|
+
return AISDKError12.hasMarker(error, marker12);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
_a12 = symbol12;
|
|
325
|
+
|
|
326
|
+
// src/error/no-video-generated-error.ts
|
|
327
|
+
import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
|
|
328
|
+
var name13 = "AI_NoVideoGeneratedError";
|
|
329
|
+
var marker13 = `vercel.ai.error.${name13}`;
|
|
330
|
+
var symbol13 = Symbol.for(marker13);
|
|
331
|
+
var _a13;
|
|
332
|
+
var NoVideoGeneratedError = class extends AISDKError13 {
|
|
307
333
|
constructor({
|
|
308
334
|
message = "No video generated.",
|
|
309
335
|
cause,
|
|
310
336
|
responses
|
|
311
337
|
}) {
|
|
312
|
-
super({ name:
|
|
313
|
-
this[
|
|
338
|
+
super({ name: name13, message, cause });
|
|
339
|
+
this[_a13] = true;
|
|
314
340
|
this.responses = responses;
|
|
315
341
|
}
|
|
316
342
|
static isInstance(error) {
|
|
317
|
-
return
|
|
343
|
+
return AISDKError13.hasMarker(error, marker13);
|
|
318
344
|
}
|
|
319
345
|
/**
|
|
320
346
|
* @deprecated use `isInstance` instead
|
|
321
347
|
*/
|
|
322
348
|
static isNoVideoGeneratedError(error) {
|
|
323
|
-
return error instanceof Error && error.name ===
|
|
349
|
+
return error instanceof Error && error.name === name13 && typeof error.responses !== "undefined" ? true : false;
|
|
324
350
|
}
|
|
325
351
|
/**
|
|
326
352
|
* @deprecated Do not use this method. It will be removed in the next major version.
|
|
@@ -335,56 +361,56 @@ var NoVideoGeneratedError = class extends AISDKError12 {
|
|
|
335
361
|
};
|
|
336
362
|
}
|
|
337
363
|
};
|
|
338
|
-
|
|
364
|
+
_a13 = symbol13;
|
|
339
365
|
|
|
340
366
|
// src/error/no-such-tool-error.ts
|
|
341
|
-
import { AISDKError as
|
|
342
|
-
var
|
|
343
|
-
var
|
|
344
|
-
var
|
|
345
|
-
var
|
|
346
|
-
var NoSuchToolError = class extends
|
|
367
|
+
import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
|
|
368
|
+
var name14 = "AI_NoSuchToolError";
|
|
369
|
+
var marker14 = `vercel.ai.error.${name14}`;
|
|
370
|
+
var symbol14 = Symbol.for(marker14);
|
|
371
|
+
var _a14;
|
|
372
|
+
var NoSuchToolError = class extends AISDKError14 {
|
|
347
373
|
constructor({
|
|
348
374
|
toolName,
|
|
349
375
|
availableTools = void 0,
|
|
350
376
|
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
|
351
377
|
}) {
|
|
352
|
-
super({ name:
|
|
353
|
-
this[
|
|
378
|
+
super({ name: name14, message });
|
|
379
|
+
this[_a14] = true;
|
|
354
380
|
this.toolName = toolName;
|
|
355
381
|
this.availableTools = availableTools;
|
|
356
382
|
}
|
|
357
383
|
static isInstance(error) {
|
|
358
|
-
return
|
|
384
|
+
return AISDKError14.hasMarker(error, marker14);
|
|
359
385
|
}
|
|
360
386
|
};
|
|
361
|
-
|
|
387
|
+
_a14 = symbol14;
|
|
362
388
|
|
|
363
389
|
// src/error/tool-call-repair-error.ts
|
|
364
|
-
import { AISDKError as
|
|
365
|
-
var
|
|
366
|
-
var
|
|
367
|
-
var
|
|
368
|
-
var
|
|
369
|
-
var ToolCallRepairError = class extends
|
|
390
|
+
import { AISDKError as AISDKError15, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
|
|
391
|
+
var name15 = "AI_ToolCallRepairError";
|
|
392
|
+
var marker15 = `vercel.ai.error.${name15}`;
|
|
393
|
+
var symbol15 = Symbol.for(marker15);
|
|
394
|
+
var _a15;
|
|
395
|
+
var ToolCallRepairError = class extends AISDKError15 {
|
|
370
396
|
constructor({
|
|
371
397
|
cause,
|
|
372
398
|
originalError,
|
|
373
399
|
message = `Error repairing tool call: ${getErrorMessage2(cause)}`
|
|
374
400
|
}) {
|
|
375
|
-
super({ name:
|
|
376
|
-
this[
|
|
401
|
+
super({ name: name15, message, cause });
|
|
402
|
+
this[_a15] = true;
|
|
377
403
|
this.originalError = originalError;
|
|
378
404
|
}
|
|
379
405
|
static isInstance(error) {
|
|
380
|
-
return
|
|
406
|
+
return AISDKError15.hasMarker(error, marker15);
|
|
381
407
|
}
|
|
382
408
|
};
|
|
383
|
-
|
|
409
|
+
_a15 = symbol15;
|
|
384
410
|
|
|
385
411
|
// src/error/unsupported-model-version-error.ts
|
|
386
|
-
import { AISDKError as
|
|
387
|
-
var UnsupportedModelVersionError = class extends
|
|
412
|
+
import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
|
|
413
|
+
var UnsupportedModelVersionError = class extends AISDKError16 {
|
|
388
414
|
constructor(options) {
|
|
389
415
|
super({
|
|
390
416
|
name: "AI_UnsupportedModelVersionError",
|
|
@@ -397,118 +423,118 @@ var UnsupportedModelVersionError = class extends AISDKError15 {
|
|
|
397
423
|
};
|
|
398
424
|
|
|
399
425
|
// src/error/ui-message-stream-error.ts
|
|
400
|
-
import { AISDKError as
|
|
401
|
-
var
|
|
402
|
-
var
|
|
403
|
-
var
|
|
404
|
-
var
|
|
405
|
-
var UIMessageStreamError = class extends
|
|
426
|
+
import { AISDKError as AISDKError17 } from "@ai-sdk/provider";
|
|
427
|
+
var name16 = "AI_UIMessageStreamError";
|
|
428
|
+
var marker16 = `vercel.ai.error.${name16}`;
|
|
429
|
+
var symbol16 = Symbol.for(marker16);
|
|
430
|
+
var _a16;
|
|
431
|
+
var UIMessageStreamError = class extends AISDKError17 {
|
|
406
432
|
constructor({
|
|
407
433
|
chunkType,
|
|
408
434
|
chunkId,
|
|
409
435
|
message
|
|
410
436
|
}) {
|
|
411
|
-
super({ name:
|
|
412
|
-
this[
|
|
437
|
+
super({ name: name16, message });
|
|
438
|
+
this[_a16] = true;
|
|
413
439
|
this.chunkType = chunkType;
|
|
414
440
|
this.chunkId = chunkId;
|
|
415
441
|
}
|
|
416
442
|
static isInstance(error) {
|
|
417
|
-
return
|
|
443
|
+
return AISDKError17.hasMarker(error, marker16);
|
|
418
444
|
}
|
|
419
445
|
};
|
|
420
|
-
|
|
446
|
+
_a16 = symbol16;
|
|
421
447
|
|
|
422
448
|
// src/prompt/invalid-data-content-error.ts
|
|
423
|
-
import { AISDKError as
|
|
424
|
-
var
|
|
425
|
-
var
|
|
426
|
-
var
|
|
427
|
-
var
|
|
428
|
-
var InvalidDataContentError = class extends
|
|
449
|
+
import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
|
|
450
|
+
var name17 = "AI_InvalidDataContentError";
|
|
451
|
+
var marker17 = `vercel.ai.error.${name17}`;
|
|
452
|
+
var symbol17 = Symbol.for(marker17);
|
|
453
|
+
var _a17;
|
|
454
|
+
var InvalidDataContentError = class extends AISDKError18 {
|
|
429
455
|
constructor({
|
|
430
456
|
content,
|
|
431
457
|
cause,
|
|
432
458
|
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
|
433
459
|
}) {
|
|
434
|
-
super({ name:
|
|
435
|
-
this[
|
|
460
|
+
super({ name: name17, message, cause });
|
|
461
|
+
this[_a17] = true;
|
|
436
462
|
this.content = content;
|
|
437
463
|
}
|
|
438
464
|
static isInstance(error) {
|
|
439
|
-
return
|
|
465
|
+
return AISDKError18.hasMarker(error, marker17);
|
|
440
466
|
}
|
|
441
467
|
};
|
|
442
|
-
|
|
468
|
+
_a17 = symbol17;
|
|
443
469
|
|
|
444
470
|
// src/prompt/invalid-message-role-error.ts
|
|
445
|
-
import { AISDKError as
|
|
446
|
-
var
|
|
447
|
-
var
|
|
448
|
-
var
|
|
449
|
-
var
|
|
450
|
-
var InvalidMessageRoleError = class extends
|
|
471
|
+
import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
|
|
472
|
+
var name18 = "AI_InvalidMessageRoleError";
|
|
473
|
+
var marker18 = `vercel.ai.error.${name18}`;
|
|
474
|
+
var symbol18 = Symbol.for(marker18);
|
|
475
|
+
var _a18;
|
|
476
|
+
var InvalidMessageRoleError = class extends AISDKError19 {
|
|
451
477
|
constructor({
|
|
452
478
|
role,
|
|
453
479
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
|
454
480
|
}) {
|
|
455
|
-
super({ name:
|
|
456
|
-
this[
|
|
481
|
+
super({ name: name18, message });
|
|
482
|
+
this[_a18] = true;
|
|
457
483
|
this.role = role;
|
|
458
484
|
}
|
|
459
485
|
static isInstance(error) {
|
|
460
|
-
return
|
|
486
|
+
return AISDKError19.hasMarker(error, marker18);
|
|
461
487
|
}
|
|
462
488
|
};
|
|
463
|
-
|
|
489
|
+
_a18 = symbol18;
|
|
464
490
|
|
|
465
491
|
// src/prompt/message-conversion-error.ts
|
|
466
|
-
import { AISDKError as
|
|
467
|
-
var
|
|
468
|
-
var
|
|
469
|
-
var
|
|
470
|
-
var
|
|
471
|
-
var MessageConversionError = class extends
|
|
492
|
+
import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
|
|
493
|
+
var name19 = "AI_MessageConversionError";
|
|
494
|
+
var marker19 = `vercel.ai.error.${name19}`;
|
|
495
|
+
var symbol19 = Symbol.for(marker19);
|
|
496
|
+
var _a19;
|
|
497
|
+
var MessageConversionError = class extends AISDKError20 {
|
|
472
498
|
constructor({
|
|
473
499
|
originalMessage,
|
|
474
500
|
message
|
|
475
501
|
}) {
|
|
476
|
-
super({ name:
|
|
477
|
-
this[
|
|
502
|
+
super({ name: name19, message });
|
|
503
|
+
this[_a19] = true;
|
|
478
504
|
this.originalMessage = originalMessage;
|
|
479
505
|
}
|
|
480
506
|
static isInstance(error) {
|
|
481
|
-
return
|
|
507
|
+
return AISDKError20.hasMarker(error, marker19);
|
|
482
508
|
}
|
|
483
509
|
};
|
|
484
|
-
|
|
510
|
+
_a19 = symbol19;
|
|
485
511
|
|
|
486
512
|
// src/error/index.ts
|
|
487
513
|
import { DownloadError } from "@ai-sdk/provider-utils";
|
|
488
514
|
|
|
489
515
|
// src/util/retry-error.ts
|
|
490
|
-
import { AISDKError as
|
|
491
|
-
var
|
|
492
|
-
var
|
|
493
|
-
var
|
|
494
|
-
var
|
|
495
|
-
var RetryError = class extends
|
|
516
|
+
import { AISDKError as AISDKError21 } from "@ai-sdk/provider";
|
|
517
|
+
var name20 = "AI_RetryError";
|
|
518
|
+
var marker20 = `vercel.ai.error.${name20}`;
|
|
519
|
+
var symbol20 = Symbol.for(marker20);
|
|
520
|
+
var _a20;
|
|
521
|
+
var RetryError = class extends AISDKError21 {
|
|
496
522
|
constructor({
|
|
497
523
|
message,
|
|
498
524
|
reason,
|
|
499
525
|
errors
|
|
500
526
|
}) {
|
|
501
|
-
super({ name:
|
|
502
|
-
this[
|
|
527
|
+
super({ name: name20, message });
|
|
528
|
+
this[_a20] = true;
|
|
503
529
|
this.reason = reason;
|
|
504
530
|
this.errors = errors;
|
|
505
531
|
this.lastError = errors[errors.length - 1];
|
|
506
532
|
}
|
|
507
533
|
static isInstance(error) {
|
|
508
|
-
return
|
|
534
|
+
return AISDKError21.hasMarker(error, marker20);
|
|
509
535
|
}
|
|
510
536
|
};
|
|
511
|
-
|
|
537
|
+
_a20 = symbol20;
|
|
512
538
|
|
|
513
539
|
// src/util/as-array.ts
|
|
514
540
|
function asArray(value) {
|
|
@@ -788,7 +814,7 @@ function resolveEmbeddingModel(model) {
|
|
|
788
814
|
return getGlobalProvider().embeddingModel(model);
|
|
789
815
|
}
|
|
790
816
|
function resolveTranscriptionModel(model) {
|
|
791
|
-
var
|
|
817
|
+
var _a22, _b;
|
|
792
818
|
if (typeof model !== "string") {
|
|
793
819
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
794
820
|
const unsupportedModel = model;
|
|
@@ -800,10 +826,10 @@ function resolveTranscriptionModel(model) {
|
|
|
800
826
|
}
|
|
801
827
|
return asTranscriptionModelV3(model);
|
|
802
828
|
}
|
|
803
|
-
return (_b = (
|
|
829
|
+
return (_b = (_a22 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a22, model);
|
|
804
830
|
}
|
|
805
831
|
function resolveSpeechModel(model) {
|
|
806
|
-
var
|
|
832
|
+
var _a22, _b;
|
|
807
833
|
if (typeof model !== "string") {
|
|
808
834
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
809
835
|
const unsupportedModel = model;
|
|
@@ -815,7 +841,7 @@ function resolveSpeechModel(model) {
|
|
|
815
841
|
}
|
|
816
842
|
return asSpeechModelV3(model);
|
|
817
843
|
}
|
|
818
|
-
return (_b = (
|
|
844
|
+
return (_b = (_a22 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a22, model);
|
|
819
845
|
}
|
|
820
846
|
function resolveImageModel(model) {
|
|
821
847
|
if (typeof model !== "string") {
|
|
@@ -874,8 +900,8 @@ function resolveRerankingModel(model) {
|
|
|
874
900
|
return model;
|
|
875
901
|
}
|
|
876
902
|
function getGlobalProvider() {
|
|
877
|
-
var
|
|
878
|
-
return (
|
|
903
|
+
var _a22;
|
|
904
|
+
return (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : gateway;
|
|
879
905
|
}
|
|
880
906
|
|
|
881
907
|
// src/prompt/call-settings.ts
|
|
@@ -1138,13 +1164,13 @@ import {
|
|
|
1138
1164
|
DownloadError as DownloadError2,
|
|
1139
1165
|
readResponseWithSizeLimit,
|
|
1140
1166
|
DEFAULT_MAX_DOWNLOAD_SIZE,
|
|
1141
|
-
|
|
1167
|
+
fetchWithValidatedRedirects,
|
|
1142
1168
|
withUserAgentSuffix,
|
|
1143
1169
|
getRuntimeEnvironmentUserAgent
|
|
1144
1170
|
} from "@ai-sdk/provider-utils";
|
|
1145
1171
|
|
|
1146
1172
|
// src/version.ts
|
|
1147
|
-
var VERSION = true ? "6.0.
|
|
1173
|
+
var VERSION = true ? "6.0.203" : "0.0.0-test";
|
|
1148
1174
|
|
|
1149
1175
|
// src/util/download/download.ts
|
|
1150
1176
|
var download = async ({
|
|
@@ -1152,21 +1178,19 @@ var download = async ({
|
|
|
1152
1178
|
maxBytes,
|
|
1153
1179
|
abortSignal
|
|
1154
1180
|
}) => {
|
|
1155
|
-
var
|
|
1181
|
+
var _a22;
|
|
1156
1182
|
const urlText = url.toString();
|
|
1157
|
-
validateDownloadUrl(urlText);
|
|
1158
1183
|
try {
|
|
1159
|
-
const
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1184
|
+
const headers = withUserAgentSuffix(
|
|
1185
|
+
{},
|
|
1186
|
+
`ai-sdk/${VERSION}`,
|
|
1187
|
+
getRuntimeEnvironmentUserAgent()
|
|
1188
|
+
);
|
|
1189
|
+
const response = await fetchWithValidatedRedirects({
|
|
1190
|
+
url: urlText,
|
|
1191
|
+
headers,
|
|
1192
|
+
abortSignal
|
|
1166
1193
|
});
|
|
1167
|
-
if (response.redirected) {
|
|
1168
|
-
validateDownloadUrl(response.url);
|
|
1169
|
-
}
|
|
1170
1194
|
if (!response.ok) {
|
|
1171
1195
|
throw new DownloadError2({
|
|
1172
1196
|
url: urlText,
|
|
@@ -1181,7 +1205,7 @@ var download = async ({
|
|
|
1181
1205
|
});
|
|
1182
1206
|
return {
|
|
1183
1207
|
data,
|
|
1184
|
-
mediaType: (
|
|
1208
|
+
mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
|
|
1185
1209
|
};
|
|
1186
1210
|
} catch (error) {
|
|
1187
1211
|
if (DownloadError2.isInstance(error)) {
|
|
@@ -1199,7 +1223,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
1199
1223
|
);
|
|
1200
1224
|
|
|
1201
1225
|
// src/prompt/data-content.ts
|
|
1202
|
-
import { AISDKError as
|
|
1226
|
+
import { AISDKError as AISDKError23 } from "@ai-sdk/provider";
|
|
1203
1227
|
import {
|
|
1204
1228
|
convertBase64ToUint8Array as convertBase64ToUint8Array2,
|
|
1205
1229
|
convertUint8ArrayToBase64
|
|
@@ -1230,8 +1254,8 @@ var dataContentSchema = z.union([
|
|
|
1230
1254
|
z.custom(
|
|
1231
1255
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
1232
1256
|
(value) => {
|
|
1233
|
-
var
|
|
1234
|
-
return (_b = (
|
|
1257
|
+
var _a22, _b;
|
|
1258
|
+
return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
|
|
1235
1259
|
},
|
|
1236
1260
|
{ message: "Must be a Buffer" }
|
|
1237
1261
|
)
|
|
@@ -1254,7 +1278,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1254
1278
|
content.toString()
|
|
1255
1279
|
);
|
|
1256
1280
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
1257
|
-
throw new
|
|
1281
|
+
throw new AISDKError23({
|
|
1258
1282
|
name: "InvalidDataContentError",
|
|
1259
1283
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
1260
1284
|
});
|
|
@@ -1537,7 +1561,7 @@ function convertToLanguageModelMessage({
|
|
|
1537
1561
|
}
|
|
1538
1562
|
}
|
|
1539
1563
|
async function downloadAssets(messages, download2, supportedUrls) {
|
|
1540
|
-
var
|
|
1564
|
+
var _a22;
|
|
1541
1565
|
const downloadableFiles = [];
|
|
1542
1566
|
for (const message of messages) {
|
|
1543
1567
|
if (message.role === "user" && Array.isArray(message.content)) {
|
|
@@ -1545,7 +1569,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1545
1569
|
if (part.type === "image" || part.type === "file") {
|
|
1546
1570
|
downloadableFiles.push({
|
|
1547
1571
|
data: part.type === "image" ? part.image : part.data,
|
|
1548
|
-
mediaType: (
|
|
1572
|
+
mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
|
|
1549
1573
|
});
|
|
1550
1574
|
}
|
|
1551
1575
|
}
|
|
@@ -1597,7 +1621,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1597
1621
|
);
|
|
1598
1622
|
}
|
|
1599
1623
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1600
|
-
var
|
|
1624
|
+
var _a22;
|
|
1601
1625
|
if (part.type === "text") {
|
|
1602
1626
|
return {
|
|
1603
1627
|
type: "text",
|
|
@@ -1630,7 +1654,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1630
1654
|
switch (type) {
|
|
1631
1655
|
case "image": {
|
|
1632
1656
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1633
|
-
mediaType = (
|
|
1657
|
+
mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
|
|
1634
1658
|
}
|
|
1635
1659
|
return {
|
|
1636
1660
|
type: "file",
|
|
@@ -1665,14 +1689,14 @@ function mapToolResultOutput({
|
|
|
1665
1689
|
return {
|
|
1666
1690
|
type: "content",
|
|
1667
1691
|
value: output.value.map((item) => {
|
|
1668
|
-
var
|
|
1692
|
+
var _a22, _b;
|
|
1669
1693
|
if (item.type === "image-url") {
|
|
1670
1694
|
const downloadedFile = downloadedAssets[new URL(item.url).toString()];
|
|
1671
1695
|
if (downloadedFile) {
|
|
1672
1696
|
return {
|
|
1673
1697
|
type: "image-data",
|
|
1674
1698
|
data: convertDataContentToBase64String(downloadedFile.data),
|
|
1675
|
-
mediaType: (
|
|
1699
|
+
mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
|
|
1676
1700
|
providerOptions: item.providerOptions
|
|
1677
1701
|
};
|
|
1678
1702
|
}
|
|
@@ -1846,10 +1870,10 @@ async function prepareToolsAndToolChoice({
|
|
|
1846
1870
|
};
|
|
1847
1871
|
}
|
|
1848
1872
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
1849
|
-
([
|
|
1873
|
+
([name22]) => activeTools.includes(name22)
|
|
1850
1874
|
) : Object.entries(tools);
|
|
1851
1875
|
const languageModelTools = [];
|
|
1852
|
-
for (const [
|
|
1876
|
+
for (const [name22, tool2] of filteredTools) {
|
|
1853
1877
|
const toolType = tool2.type;
|
|
1854
1878
|
switch (toolType) {
|
|
1855
1879
|
case void 0:
|
|
@@ -1857,7 +1881,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1857
1881
|
case "function":
|
|
1858
1882
|
languageModelTools.push({
|
|
1859
1883
|
type: "function",
|
|
1860
|
-
name:
|
|
1884
|
+
name: name22,
|
|
1861
1885
|
description: tool2.description,
|
|
1862
1886
|
inputSchema: await asSchema(tool2.inputSchema).jsonSchema,
|
|
1863
1887
|
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
@@ -1868,7 +1892,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1868
1892
|
case "provider":
|
|
1869
1893
|
languageModelTools.push({
|
|
1870
1894
|
type: "provider",
|
|
1871
|
-
name:
|
|
1895
|
+
name: name22,
|
|
1872
1896
|
id: tool2.id,
|
|
1873
1897
|
args: tool2.args
|
|
1874
1898
|
});
|
|
@@ -2168,14 +2192,14 @@ async function standardizePrompt({
|
|
|
2168
2192
|
|
|
2169
2193
|
// src/prompt/wrap-gateway-error.ts
|
|
2170
2194
|
import { GatewayAuthenticationError } from "@ai-sdk/gateway";
|
|
2171
|
-
import { AISDKError as
|
|
2195
|
+
import { AISDKError as AISDKError24 } from "@ai-sdk/provider";
|
|
2172
2196
|
function wrapGatewayError(error) {
|
|
2173
2197
|
if (!GatewayAuthenticationError.isInstance(error))
|
|
2174
2198
|
return error;
|
|
2175
2199
|
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
2176
2200
|
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
2177
2201
|
if (isProductionEnv) {
|
|
2178
|
-
return new
|
|
2202
|
+
return new AISDKError24({
|
|
2179
2203
|
name: "GatewayError",
|
|
2180
2204
|
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
2181
2205
|
});
|
|
@@ -2216,7 +2240,7 @@ function getBaseTelemetryAttributes({
|
|
|
2216
2240
|
telemetry,
|
|
2217
2241
|
headers
|
|
2218
2242
|
}) {
|
|
2219
|
-
var
|
|
2243
|
+
var _a22;
|
|
2220
2244
|
return {
|
|
2221
2245
|
"ai.model.provider": model.provider,
|
|
2222
2246
|
"ai.model.id": model.modelId,
|
|
@@ -2235,7 +2259,7 @@ function getBaseTelemetryAttributes({
|
|
|
2235
2259
|
return attributes;
|
|
2236
2260
|
}, {}),
|
|
2237
2261
|
// add metadata as attributes:
|
|
2238
|
-
...Object.entries((
|
|
2262
|
+
...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
|
|
2239
2263
|
(attributes, [key, value]) => {
|
|
2240
2264
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
2241
2265
|
return attributes;
|
|
@@ -2260,7 +2284,7 @@ var noopTracer = {
|
|
|
2260
2284
|
startSpan() {
|
|
2261
2285
|
return noopSpan;
|
|
2262
2286
|
},
|
|
2263
|
-
startActiveSpan(
|
|
2287
|
+
startActiveSpan(name22, arg1, arg2, arg3) {
|
|
2264
2288
|
if (typeof arg1 === "function") {
|
|
2265
2289
|
return arg1(noopSpan);
|
|
2266
2290
|
}
|
|
@@ -2333,14 +2357,14 @@ import {
|
|
|
2333
2357
|
context
|
|
2334
2358
|
} from "@opentelemetry/api";
|
|
2335
2359
|
async function recordSpan({
|
|
2336
|
-
name:
|
|
2360
|
+
name: name22,
|
|
2337
2361
|
tracer,
|
|
2338
2362
|
attributes,
|
|
2339
2363
|
fn,
|
|
2340
2364
|
endWhenDone = true
|
|
2341
2365
|
}) {
|
|
2342
2366
|
return tracer.startActiveSpan(
|
|
2343
|
-
|
|
2367
|
+
name22,
|
|
2344
2368
|
{ attributes: await attributes },
|
|
2345
2369
|
async (span) => {
|
|
2346
2370
|
const ctx = context.active();
|
|
@@ -2438,15 +2462,15 @@ function registerTelemetryIntegration(integration) {
|
|
|
2438
2462
|
globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
|
|
2439
2463
|
}
|
|
2440
2464
|
function getGlobalTelemetryIntegrations() {
|
|
2441
|
-
var
|
|
2442
|
-
return (
|
|
2465
|
+
var _a22;
|
|
2466
|
+
return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
|
|
2443
2467
|
}
|
|
2444
2468
|
|
|
2445
2469
|
// src/telemetry/get-global-telemetry-integration.ts
|
|
2446
2470
|
function bindTelemetryIntegration(integration) {
|
|
2447
|
-
var
|
|
2471
|
+
var _a22, _b, _c, _d, _e, _f;
|
|
2448
2472
|
return {
|
|
2449
|
-
onStart: (
|
|
2473
|
+
onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
|
|
2450
2474
|
onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
|
|
2451
2475
|
onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
|
|
2452
2476
|
onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
|
|
@@ -2530,12 +2554,12 @@ function createNullLanguageModelUsage() {
|
|
|
2530
2554
|
};
|
|
2531
2555
|
}
|
|
2532
2556
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2533
|
-
var
|
|
2557
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2534
2558
|
return {
|
|
2535
2559
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2536
2560
|
inputTokenDetails: {
|
|
2537
2561
|
noCacheTokens: addTokenCounts(
|
|
2538
|
-
(
|
|
2562
|
+
(_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
2539
2563
|
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2540
2564
|
),
|
|
2541
2565
|
cacheReadTokens: addTokenCounts(
|
|
@@ -2826,8 +2850,8 @@ import { executeTool } from "@ai-sdk/provider-utils";
|
|
|
2826
2850
|
|
|
2827
2851
|
// src/util/now.ts
|
|
2828
2852
|
function now() {
|
|
2829
|
-
var
|
|
2830
|
-
return (_b = (
|
|
2853
|
+
var _a22, _b;
|
|
2854
|
+
return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
|
|
2831
2855
|
}
|
|
2832
2856
|
|
|
2833
2857
|
// src/generate-text/execute-tool-call.ts
|
|
@@ -3040,6 +3064,176 @@ async function isApprovalNeeded({
|
|
|
3040
3064
|
});
|
|
3041
3065
|
}
|
|
3042
3066
|
|
|
3067
|
+
// src/generate-text/tool-approval-signature.ts
|
|
3068
|
+
import {
|
|
3069
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array4,
|
|
3070
|
+
convertUint8ArrayToBase64 as convertUint8ArrayToBase643
|
|
3071
|
+
} from "@ai-sdk/provider-utils";
|
|
3072
|
+
var encoder = new TextEncoder();
|
|
3073
|
+
function canonicalJSON(value) {
|
|
3074
|
+
if (value === null || value === void 0) {
|
|
3075
|
+
return JSON.stringify(value);
|
|
3076
|
+
}
|
|
3077
|
+
if (typeof value !== "object") {
|
|
3078
|
+
return JSON.stringify(value);
|
|
3079
|
+
}
|
|
3080
|
+
if (Array.isArray(value)) {
|
|
3081
|
+
return `[${value.map(canonicalJSON).join(",")}]`;
|
|
3082
|
+
}
|
|
3083
|
+
const keys = Object.keys(value).sort();
|
|
3084
|
+
const entries = keys.map(
|
|
3085
|
+
(k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`
|
|
3086
|
+
);
|
|
3087
|
+
return `{${entries.join(",")}}`;
|
|
3088
|
+
}
|
|
3089
|
+
function toBase64url(bytes) {
|
|
3090
|
+
return convertUint8ArrayToBase643(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
3091
|
+
}
|
|
3092
|
+
function fromBase64url(str) {
|
|
3093
|
+
return convertBase64ToUint8Array4(str);
|
|
3094
|
+
}
|
|
3095
|
+
async function importKey(secret) {
|
|
3096
|
+
const keyData = typeof secret === "string" ? encoder.encode(secret) : secret;
|
|
3097
|
+
return crypto.subtle.importKey(
|
|
3098
|
+
"raw",
|
|
3099
|
+
keyData,
|
|
3100
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
3101
|
+
false,
|
|
3102
|
+
["sign", "verify"]
|
|
3103
|
+
);
|
|
3104
|
+
}
|
|
3105
|
+
async function hashInput(input) {
|
|
3106
|
+
const canonical = canonicalJSON(input);
|
|
3107
|
+
const digest = await crypto.subtle.digest(
|
|
3108
|
+
"SHA-256",
|
|
3109
|
+
encoder.encode(canonical)
|
|
3110
|
+
);
|
|
3111
|
+
return toBase64url(new Uint8Array(digest));
|
|
3112
|
+
}
|
|
3113
|
+
function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
3114
|
+
return encoder.encode(
|
|
3115
|
+
`${approvalId}
|
|
3116
|
+
${toolCallId}
|
|
3117
|
+
${toolName}
|
|
3118
|
+
${inputDigest}`
|
|
3119
|
+
);
|
|
3120
|
+
}
|
|
3121
|
+
async function signToolApproval({
|
|
3122
|
+
secret,
|
|
3123
|
+
approvalId,
|
|
3124
|
+
toolCallId,
|
|
3125
|
+
toolName,
|
|
3126
|
+
input
|
|
3127
|
+
}) {
|
|
3128
|
+
const key = await importKey(secret);
|
|
3129
|
+
const inputDigest = await hashInput(input);
|
|
3130
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3131
|
+
const sig = await crypto.subtle.sign("HMAC", key, payload);
|
|
3132
|
+
return toBase64url(new Uint8Array(sig));
|
|
3133
|
+
}
|
|
3134
|
+
async function verifyToolApprovalSignature({
|
|
3135
|
+
secret,
|
|
3136
|
+
signature,
|
|
3137
|
+
approvalId,
|
|
3138
|
+
toolCallId,
|
|
3139
|
+
toolName,
|
|
3140
|
+
input
|
|
3141
|
+
}) {
|
|
3142
|
+
const key = await importKey(secret);
|
|
3143
|
+
const inputDigest = await hashInput(input);
|
|
3144
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3145
|
+
const sigBytes = fromBase64url(signature);
|
|
3146
|
+
return crypto.subtle.verify("HMAC", key, sigBytes, payload);
|
|
3147
|
+
}
|
|
3148
|
+
async function maybeSignApproval({
|
|
3149
|
+
secret,
|
|
3150
|
+
approvalId,
|
|
3151
|
+
toolCallId,
|
|
3152
|
+
toolName,
|
|
3153
|
+
input
|
|
3154
|
+
}) {
|
|
3155
|
+
if (secret == null)
|
|
3156
|
+
return void 0;
|
|
3157
|
+
return signToolApproval({ secret, approvalId, toolCallId, toolName, input });
|
|
3158
|
+
}
|
|
3159
|
+
|
|
3160
|
+
// src/generate-text/validate-tool-approvals.ts
|
|
3161
|
+
import {
|
|
3162
|
+
asSchema as asSchema2,
|
|
3163
|
+
safeValidateTypes as safeValidateTypes2
|
|
3164
|
+
} from "@ai-sdk/provider-utils";
|
|
3165
|
+
async function validateApprovedToolApprovals({
|
|
3166
|
+
approvedToolApprovals,
|
|
3167
|
+
tools,
|
|
3168
|
+
messages,
|
|
3169
|
+
experimental_context,
|
|
3170
|
+
toolApprovalSecret
|
|
3171
|
+
}) {
|
|
3172
|
+
var _a22;
|
|
3173
|
+
const approved = [];
|
|
3174
|
+
const denied = [];
|
|
3175
|
+
for (const approval of approvedToolApprovals) {
|
|
3176
|
+
const { toolCall, approvalRequest } = approval;
|
|
3177
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3178
|
+
if (toolApprovalSecret != null) {
|
|
3179
|
+
if (approvalRequest.signature == null) {
|
|
3180
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3181
|
+
approvalId: approvalRequest.approvalId,
|
|
3182
|
+
toolCallId: toolCall.toolCallId,
|
|
3183
|
+
reason: "missing signature"
|
|
3184
|
+
});
|
|
3185
|
+
}
|
|
3186
|
+
const valid = await verifyToolApprovalSignature({
|
|
3187
|
+
secret: toolApprovalSecret,
|
|
3188
|
+
signature: approvalRequest.signature,
|
|
3189
|
+
approvalId: approvalRequest.approvalId,
|
|
3190
|
+
toolCallId: toolCall.toolCallId,
|
|
3191
|
+
toolName: toolCall.toolName,
|
|
3192
|
+
input: toolCall.input
|
|
3193
|
+
});
|
|
3194
|
+
if (!valid) {
|
|
3195
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3196
|
+
approvalId: approvalRequest.approvalId,
|
|
3197
|
+
toolCallId: toolCall.toolCallId,
|
|
3198
|
+
reason: "invalid signature"
|
|
3199
|
+
});
|
|
3200
|
+
}
|
|
3201
|
+
}
|
|
3202
|
+
if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
|
|
3203
|
+
const validation = await safeValidateTypes2({
|
|
3204
|
+
value: toolCall.input,
|
|
3205
|
+
schema: asSchema2(tool2.inputSchema)
|
|
3206
|
+
});
|
|
3207
|
+
if (!validation.success) {
|
|
3208
|
+
throw new InvalidToolInputError({
|
|
3209
|
+
toolName: toolCall.toolName,
|
|
3210
|
+
toolInput: JSON.stringify(toolCall.input),
|
|
3211
|
+
cause: validation.error
|
|
3212
|
+
});
|
|
3213
|
+
}
|
|
3214
|
+
}
|
|
3215
|
+
const approvalNeeded = tool2 != null && await isApprovalNeeded({
|
|
3216
|
+
tool: tool2,
|
|
3217
|
+
toolCall,
|
|
3218
|
+
messages,
|
|
3219
|
+
experimental_context
|
|
3220
|
+
});
|
|
3221
|
+
if (approvalNeeded) {
|
|
3222
|
+
approved.push(approval);
|
|
3223
|
+
} else {
|
|
3224
|
+
denied.push({
|
|
3225
|
+
...approval,
|
|
3226
|
+
approvalResponse: {
|
|
3227
|
+
...approval.approvalResponse,
|
|
3228
|
+
approved: false,
|
|
3229
|
+
reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
|
|
3230
|
+
}
|
|
3231
|
+
});
|
|
3232
|
+
}
|
|
3233
|
+
}
|
|
3234
|
+
return { approvedToolApprovals: approved, deniedToolApprovals: denied };
|
|
3235
|
+
}
|
|
3236
|
+
|
|
3043
3237
|
// src/generate-text/output.ts
|
|
3044
3238
|
var output_exports = {};
|
|
3045
3239
|
__export(output_exports, {
|
|
@@ -3053,10 +3247,10 @@ import {
|
|
|
3053
3247
|
TypeValidationError as TypeValidationError2
|
|
3054
3248
|
} from "@ai-sdk/provider";
|
|
3055
3249
|
import {
|
|
3056
|
-
asSchema as
|
|
3250
|
+
asSchema as asSchema3,
|
|
3057
3251
|
resolve,
|
|
3058
3252
|
safeParseJSON as safeParseJSON2,
|
|
3059
|
-
safeValidateTypes as
|
|
3253
|
+
safeValidateTypes as safeValidateTypes3
|
|
3060
3254
|
} from "@ai-sdk/provider-utils";
|
|
3061
3255
|
|
|
3062
3256
|
// src/util/parse-partial-json.ts
|
|
@@ -3412,16 +3606,16 @@ var text = () => ({
|
|
|
3412
3606
|
});
|
|
3413
3607
|
var object = ({
|
|
3414
3608
|
schema: inputSchema,
|
|
3415
|
-
name:
|
|
3609
|
+
name: name22,
|
|
3416
3610
|
description
|
|
3417
3611
|
}) => {
|
|
3418
|
-
const schema =
|
|
3612
|
+
const schema = asSchema3(inputSchema);
|
|
3419
3613
|
return {
|
|
3420
3614
|
name: "object",
|
|
3421
3615
|
responseFormat: resolve(schema.jsonSchema).then((jsonSchema2) => ({
|
|
3422
3616
|
type: "json",
|
|
3423
3617
|
schema: jsonSchema2,
|
|
3424
|
-
...
|
|
3618
|
+
...name22 != null && { name: name22 },
|
|
3425
3619
|
...description != null && { description }
|
|
3426
3620
|
})),
|
|
3427
3621
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3436,7 +3630,7 @@ var object = ({
|
|
|
3436
3630
|
finishReason: context2.finishReason
|
|
3437
3631
|
});
|
|
3438
3632
|
}
|
|
3439
|
-
const validationResult = await
|
|
3633
|
+
const validationResult = await safeValidateTypes3({
|
|
3440
3634
|
value: parseResult.value,
|
|
3441
3635
|
schema
|
|
3442
3636
|
});
|
|
@@ -3475,10 +3669,10 @@ var object = ({
|
|
|
3475
3669
|
};
|
|
3476
3670
|
var array = ({
|
|
3477
3671
|
element: inputElementSchema,
|
|
3478
|
-
name:
|
|
3672
|
+
name: name22,
|
|
3479
3673
|
description
|
|
3480
3674
|
}) => {
|
|
3481
|
-
const elementSchema =
|
|
3675
|
+
const elementSchema = asSchema3(inputElementSchema);
|
|
3482
3676
|
return {
|
|
3483
3677
|
name: "array",
|
|
3484
3678
|
// JSON schema that describes an array of elements:
|
|
@@ -3495,7 +3689,7 @@ var array = ({
|
|
|
3495
3689
|
required: ["elements"],
|
|
3496
3690
|
additionalProperties: false
|
|
3497
3691
|
},
|
|
3498
|
-
...
|
|
3692
|
+
...name22 != null && { name: name22 },
|
|
3499
3693
|
...description != null && { description }
|
|
3500
3694
|
};
|
|
3501
3695
|
}),
|
|
@@ -3526,7 +3720,7 @@ var array = ({
|
|
|
3526
3720
|
});
|
|
3527
3721
|
}
|
|
3528
3722
|
for (const element of outerValue.elements) {
|
|
3529
|
-
const validationResult = await
|
|
3723
|
+
const validationResult = await safeValidateTypes3({
|
|
3530
3724
|
value: element,
|
|
3531
3725
|
schema: elementSchema
|
|
3532
3726
|
});
|
|
@@ -3559,7 +3753,7 @@ var array = ({
|
|
|
3559
3753
|
const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
|
|
3560
3754
|
const parsedElements = [];
|
|
3561
3755
|
for (const rawElement of rawElements) {
|
|
3562
|
-
const validationResult = await
|
|
3756
|
+
const validationResult = await safeValidateTypes3({
|
|
3563
3757
|
value: rawElement,
|
|
3564
3758
|
schema: elementSchema
|
|
3565
3759
|
});
|
|
@@ -3587,7 +3781,7 @@ var array = ({
|
|
|
3587
3781
|
};
|
|
3588
3782
|
var choice = ({
|
|
3589
3783
|
options: choiceOptions,
|
|
3590
|
-
name:
|
|
3784
|
+
name: name22,
|
|
3591
3785
|
description
|
|
3592
3786
|
}) => {
|
|
3593
3787
|
return {
|
|
@@ -3604,7 +3798,7 @@ var choice = ({
|
|
|
3604
3798
|
required: ["result"],
|
|
3605
3799
|
additionalProperties: false
|
|
3606
3800
|
},
|
|
3607
|
-
...
|
|
3801
|
+
...name22 != null && { name: name22 },
|
|
3608
3802
|
...description != null && { description }
|
|
3609
3803
|
}),
|
|
3610
3804
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3665,14 +3859,14 @@ var choice = ({
|
|
|
3665
3859
|
};
|
|
3666
3860
|
};
|
|
3667
3861
|
var json = ({
|
|
3668
|
-
name:
|
|
3862
|
+
name: name22,
|
|
3669
3863
|
description
|
|
3670
3864
|
} = {}) => {
|
|
3671
3865
|
return {
|
|
3672
3866
|
name: "json",
|
|
3673
3867
|
responseFormat: Promise.resolve({
|
|
3674
3868
|
type: "json",
|
|
3675
|
-
...
|
|
3869
|
+
...name22 != null && { name: name22 },
|
|
3676
3870
|
...description != null && { description }
|
|
3677
3871
|
}),
|
|
3678
3872
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3710,9 +3904,9 @@ var json = ({
|
|
|
3710
3904
|
|
|
3711
3905
|
// src/generate-text/parse-tool-call.ts
|
|
3712
3906
|
import {
|
|
3713
|
-
asSchema as
|
|
3907
|
+
asSchema as asSchema4,
|
|
3714
3908
|
safeParseJSON as safeParseJSON3,
|
|
3715
|
-
safeValidateTypes as
|
|
3909
|
+
safeValidateTypes as safeValidateTypes4
|
|
3716
3910
|
} from "@ai-sdk/provider-utils";
|
|
3717
3911
|
async function parseToolCall({
|
|
3718
3912
|
toolCall,
|
|
@@ -3741,7 +3935,7 @@ async function parseToolCall({
|
|
|
3741
3935
|
tools,
|
|
3742
3936
|
inputSchema: async ({ toolName }) => {
|
|
3743
3937
|
const { inputSchema } = tools[toolName];
|
|
3744
|
-
return await
|
|
3938
|
+
return await asSchema4(inputSchema).jsonSchema;
|
|
3745
3939
|
},
|
|
3746
3940
|
system,
|
|
3747
3941
|
messages,
|
|
@@ -3811,8 +4005,8 @@ async function doParseToolCall({
|
|
|
3811
4005
|
availableTools: Object.keys(tools)
|
|
3812
4006
|
});
|
|
3813
4007
|
}
|
|
3814
|
-
const schema =
|
|
3815
|
-
const parseResult = toolCall.input.trim() === "" ? await
|
|
4008
|
+
const schema = asSchema4(tool2.inputSchema);
|
|
4009
|
+
const parseResult = toolCall.input.trim() === "" ? await safeValidateTypes4({ value: {}, schema }) : await safeParseJSON3({ text: toolCall.input, schema });
|
|
3816
4010
|
if (parseResult.success === false) {
|
|
3817
4011
|
throw new InvalidToolInputError({
|
|
3818
4012
|
toolName,
|
|
@@ -3925,8 +4119,8 @@ function isLoopFinished() {
|
|
|
3925
4119
|
}
|
|
3926
4120
|
function hasToolCall(toolName) {
|
|
3927
4121
|
return ({ steps }) => {
|
|
3928
|
-
var
|
|
3929
|
-
return (_c = (_b = (
|
|
4122
|
+
var _a22, _b, _c;
|
|
4123
|
+
return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
|
|
3930
4124
|
(toolCall) => toolCall.toolName === toolName
|
|
3931
4125
|
)) != null ? _c : false;
|
|
3932
4126
|
};
|
|
@@ -4026,7 +4220,8 @@ async function toResponseMessages({
|
|
|
4026
4220
|
content.push({
|
|
4027
4221
|
type: "tool-approval-request",
|
|
4028
4222
|
approvalId: part.approvalId,
|
|
4029
|
-
toolCallId: part.toolCall.toolCallId
|
|
4223
|
+
toolCallId: part.toolCall.toolCallId,
|
|
4224
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
4030
4225
|
});
|
|
4031
4226
|
break;
|
|
4032
4227
|
}
|
|
@@ -4123,6 +4318,7 @@ async function generateText({
|
|
|
4123
4318
|
experimental_repairToolCall: repairToolCall,
|
|
4124
4319
|
experimental_download: download2,
|
|
4125
4320
|
experimental_context,
|
|
4321
|
+
experimental_toolApprovalSecret,
|
|
4126
4322
|
experimental_include: include,
|
|
4127
4323
|
_internal: { generateId: generateId2 = originalGenerateId } = {},
|
|
4128
4324
|
experimental_onStart: onStart,
|
|
@@ -4224,13 +4420,29 @@ async function generateText({
|
|
|
4224
4420
|
}),
|
|
4225
4421
|
tracer,
|
|
4226
4422
|
fn: async (span) => {
|
|
4227
|
-
var
|
|
4423
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
4228
4424
|
const initialMessages = initialPrompt.messages;
|
|
4229
4425
|
const responseMessages = [];
|
|
4230
|
-
const {
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
);
|
|
4426
|
+
const {
|
|
4427
|
+
approvedToolApprovals,
|
|
4428
|
+
deniedToolApprovals: collectedDeniedToolApprovals
|
|
4429
|
+
} = collectToolApprovals({ messages: initialMessages });
|
|
4430
|
+
const {
|
|
4431
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
4432
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
4433
|
+
} = await validateApprovedToolApprovals({
|
|
4434
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
4435
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
4436
|
+
),
|
|
4437
|
+
tools,
|
|
4438
|
+
messages: initialMessages,
|
|
4439
|
+
experimental_context,
|
|
4440
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
4441
|
+
});
|
|
4442
|
+
const deniedToolApprovals = [
|
|
4443
|
+
...collectedDeniedToolApprovals,
|
|
4444
|
+
...revalidationDeniedToolApprovals
|
|
4445
|
+
];
|
|
4234
4446
|
if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
|
|
4235
4447
|
const toolOutputs = await executeTools({
|
|
4236
4448
|
toolCalls: localApprovedToolApprovals.map(
|
|
@@ -4311,7 +4523,7 @@ async function generateText({
|
|
|
4311
4523
|
experimental_context
|
|
4312
4524
|
}));
|
|
4313
4525
|
const stepModel = resolveLanguageModel(
|
|
4314
|
-
(
|
|
4526
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
4315
4527
|
);
|
|
4316
4528
|
const stepModelInfo = {
|
|
4317
4529
|
provider: stepModel.provider,
|
|
@@ -4366,7 +4578,7 @@ async function generateText({
|
|
|
4366
4578
|
});
|
|
4367
4579
|
currentModelResponse = await retry(
|
|
4368
4580
|
() => {
|
|
4369
|
-
var
|
|
4581
|
+
var _a23;
|
|
4370
4582
|
return recordSpan({
|
|
4371
4583
|
name: "ai.generateText.doGenerate",
|
|
4372
4584
|
attributes: selectTelemetryAttributes({
|
|
@@ -4398,14 +4610,14 @@ async function generateText({
|
|
|
4398
4610
|
"gen_ai.request.max_tokens": settings.maxOutputTokens,
|
|
4399
4611
|
"gen_ai.request.presence_penalty": settings.presencePenalty,
|
|
4400
4612
|
"gen_ai.request.stop_sequences": settings.stopSequences,
|
|
4401
|
-
"gen_ai.request.temperature": (
|
|
4613
|
+
"gen_ai.request.temperature": (_a23 = settings.temperature) != null ? _a23 : void 0,
|
|
4402
4614
|
"gen_ai.request.top_k": settings.topK,
|
|
4403
4615
|
"gen_ai.request.top_p": settings.topP
|
|
4404
4616
|
}
|
|
4405
4617
|
}),
|
|
4406
4618
|
tracer,
|
|
4407
4619
|
fn: async (span2) => {
|
|
4408
|
-
var
|
|
4620
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
4409
4621
|
const result = await stepModel.doGenerate({
|
|
4410
4622
|
...callSettings2,
|
|
4411
4623
|
tools: stepTools,
|
|
@@ -4417,7 +4629,7 @@ async function generateText({
|
|
|
4417
4629
|
headers: headersWithUserAgent
|
|
4418
4630
|
});
|
|
4419
4631
|
const responseData = {
|
|
4420
|
-
id: (_b2 = (
|
|
4632
|
+
id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
|
|
4421
4633
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
|
|
4422
4634
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
4423
4635
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
@@ -4510,10 +4722,19 @@ async function generateText({
|
|
|
4510
4722
|
messages: stepInputMessages,
|
|
4511
4723
|
experimental_context
|
|
4512
4724
|
})) {
|
|
4725
|
+
const approvalId = generateId2();
|
|
4726
|
+
const signature = await maybeSignApproval({
|
|
4727
|
+
secret: experimental_toolApprovalSecret,
|
|
4728
|
+
approvalId,
|
|
4729
|
+
toolCallId: toolCall.toolCallId,
|
|
4730
|
+
toolName: toolCall.toolName,
|
|
4731
|
+
input: toolCall.input
|
|
4732
|
+
});
|
|
4513
4733
|
toolApprovalRequests[toolCall.toolCallId] = {
|
|
4514
4734
|
type: "tool-approval-request",
|
|
4515
|
-
approvalId
|
|
4516
|
-
toolCall
|
|
4735
|
+
approvalId,
|
|
4736
|
+
toolCall,
|
|
4737
|
+
...signature != null ? { signature } : {}
|
|
4517
4738
|
};
|
|
4518
4739
|
}
|
|
4519
4740
|
}
|
|
@@ -5215,7 +5436,8 @@ var uiMessageChunkSchema = lazySchema(
|
|
|
5215
5436
|
z7.strictObject({
|
|
5216
5437
|
type: z7.literal("tool-approval-request"),
|
|
5217
5438
|
approvalId: z7.string(),
|
|
5218
|
-
toolCallId: z7.string()
|
|
5439
|
+
toolCallId: z7.string(),
|
|
5440
|
+
signature: z7.string().optional()
|
|
5219
5441
|
}),
|
|
5220
5442
|
z7.strictObject({
|
|
5221
5443
|
type: z7.literal("tool-output-available"),
|
|
@@ -5390,7 +5612,7 @@ function processUIMessageStream({
|
|
|
5390
5612
|
new TransformStream({
|
|
5391
5613
|
async transform(chunk, controller) {
|
|
5392
5614
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
5393
|
-
var
|
|
5615
|
+
var _a22, _b, _c, _d;
|
|
5394
5616
|
function getToolInvocation(toolCallId) {
|
|
5395
5617
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
|
5396
5618
|
const toolInvocation = toolInvocations.find(
|
|
@@ -5406,7 +5628,7 @@ function processUIMessageStream({
|
|
|
5406
5628
|
return toolInvocation;
|
|
5407
5629
|
}
|
|
5408
5630
|
function updateToolPart(options) {
|
|
5409
|
-
var
|
|
5631
|
+
var _a23;
|
|
5410
5632
|
const part = state.message.parts.find(
|
|
5411
5633
|
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
5412
5634
|
);
|
|
@@ -5425,7 +5647,7 @@ function processUIMessageStream({
|
|
|
5425
5647
|
if (options.toolMetadata !== void 0) {
|
|
5426
5648
|
anyPart.toolMetadata = options.toolMetadata;
|
|
5427
5649
|
}
|
|
5428
|
-
anyPart.providerExecuted = (
|
|
5650
|
+
anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
|
|
5429
5651
|
const providerMetadata = anyOptions.providerMetadata;
|
|
5430
5652
|
if (providerMetadata != null) {
|
|
5431
5653
|
if (options.state === "output-available" || options.state === "output-error") {
|
|
@@ -5454,7 +5676,7 @@ function processUIMessageStream({
|
|
|
5454
5676
|
}
|
|
5455
5677
|
}
|
|
5456
5678
|
function updateDynamicToolPart(options) {
|
|
5457
|
-
var
|
|
5679
|
+
var _a23, _b2;
|
|
5458
5680
|
const part = state.message.parts.find(
|
|
5459
5681
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
5460
5682
|
);
|
|
@@ -5466,7 +5688,7 @@ function processUIMessageStream({
|
|
|
5466
5688
|
anyPart.input = anyOptions.input;
|
|
5467
5689
|
anyPart.output = anyOptions.output;
|
|
5468
5690
|
anyPart.errorText = anyOptions.errorText;
|
|
5469
|
-
anyPart.rawInput = (
|
|
5691
|
+
anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
|
|
5470
5692
|
anyPart.preliminary = anyOptions.preliminary;
|
|
5471
5693
|
if (options.title !== void 0) {
|
|
5472
5694
|
anyPart.title = options.title;
|
|
@@ -5541,7 +5763,7 @@ function processUIMessageStream({
|
|
|
5541
5763
|
});
|
|
5542
5764
|
}
|
|
5543
5765
|
textPart.text += chunk.delta;
|
|
5544
|
-
textPart.providerMetadata = (
|
|
5766
|
+
textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
|
|
5545
5767
|
write();
|
|
5546
5768
|
break;
|
|
5547
5769
|
}
|
|
@@ -5770,7 +5992,10 @@ function processUIMessageStream({
|
|
|
5770
5992
|
case "tool-approval-request": {
|
|
5771
5993
|
const toolInvocation = getToolInvocation(chunk.toolCallId);
|
|
5772
5994
|
toolInvocation.state = "approval-requested";
|
|
5773
|
-
toolInvocation.approval = {
|
|
5995
|
+
toolInvocation.approval = {
|
|
5996
|
+
id: chunk.approvalId,
|
|
5997
|
+
...chunk.signature != null ? { signature: chunk.signature } : {}
|
|
5998
|
+
};
|
|
5774
5999
|
write();
|
|
5775
6000
|
break;
|
|
5776
6001
|
}
|
|
@@ -6061,13 +6286,13 @@ function createAsyncIterableStream(source) {
|
|
|
6061
6286
|
const reader = this.getReader();
|
|
6062
6287
|
let finished = false;
|
|
6063
6288
|
async function cleanup(cancelStream) {
|
|
6064
|
-
var
|
|
6289
|
+
var _a22;
|
|
6065
6290
|
if (finished)
|
|
6066
6291
|
return;
|
|
6067
6292
|
finished = true;
|
|
6068
6293
|
try {
|
|
6069
6294
|
if (cancelStream) {
|
|
6070
|
-
await ((
|
|
6295
|
+
await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
|
|
6071
6296
|
}
|
|
6072
6297
|
} finally {
|
|
6073
6298
|
try {
|
|
@@ -6245,6 +6470,7 @@ function runToolsTransformation({
|
|
|
6245
6470
|
abortSignal,
|
|
6246
6471
|
repairToolCall,
|
|
6247
6472
|
experimental_context,
|
|
6473
|
+
toolApprovalSecret,
|
|
6248
6474
|
generateId: generateId2,
|
|
6249
6475
|
stepNumber,
|
|
6250
6476
|
model,
|
|
@@ -6374,10 +6600,19 @@ function runToolsTransformation({
|
|
|
6374
6600
|
messages,
|
|
6375
6601
|
experimental_context
|
|
6376
6602
|
})) {
|
|
6603
|
+
const approvalId = generateId2();
|
|
6604
|
+
const signature = await maybeSignApproval({
|
|
6605
|
+
secret: toolApprovalSecret,
|
|
6606
|
+
approvalId,
|
|
6607
|
+
toolCallId: toolCall.toolCallId,
|
|
6608
|
+
toolName: toolCall.toolName,
|
|
6609
|
+
input: toolCall.input
|
|
6610
|
+
});
|
|
6377
6611
|
toolResultsStreamController.enqueue({
|
|
6378
6612
|
type: "tool-approval-request",
|
|
6379
|
-
approvalId
|
|
6380
|
-
toolCall
|
|
6613
|
+
approvalId,
|
|
6614
|
+
toolCall,
|
|
6615
|
+
...signature != null ? { signature } : {}
|
|
6381
6616
|
});
|
|
6382
6617
|
break;
|
|
6383
6618
|
}
|
|
@@ -6548,6 +6783,7 @@ function streamText({
|
|
|
6548
6783
|
experimental_onToolCallStart: onToolCallStart,
|
|
6549
6784
|
experimental_onToolCallFinish: onToolCallFinish,
|
|
6550
6785
|
experimental_context,
|
|
6786
|
+
experimental_toolApprovalSecret,
|
|
6551
6787
|
experimental_include: include,
|
|
6552
6788
|
_internal: { now: now2 = now, generateId: generateId2 = originalGenerateId2 } = {},
|
|
6553
6789
|
...settings
|
|
@@ -6602,6 +6838,7 @@ function streamText({
|
|
|
6602
6838
|
now: now2,
|
|
6603
6839
|
generateId: generateId2,
|
|
6604
6840
|
experimental_context,
|
|
6841
|
+
experimental_toolApprovalSecret,
|
|
6605
6842
|
download: download2,
|
|
6606
6843
|
include
|
|
6607
6844
|
});
|
|
@@ -6629,7 +6866,7 @@ function createOutputTransformStream(output) {
|
|
|
6629
6866
|
}
|
|
6630
6867
|
return new TransformStream({
|
|
6631
6868
|
async transform(chunk, controller) {
|
|
6632
|
-
var
|
|
6869
|
+
var _a22;
|
|
6633
6870
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
6634
6871
|
publishTextChunk({ controller });
|
|
6635
6872
|
}
|
|
@@ -6656,7 +6893,7 @@ function createOutputTransformStream(output) {
|
|
|
6656
6893
|
}
|
|
6657
6894
|
text2 += chunk.text;
|
|
6658
6895
|
textChunk += chunk.text;
|
|
6659
|
-
textProviderMetadata = (
|
|
6896
|
+
textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
|
|
6660
6897
|
const result = await output.parsePartialOutput({ text: text2 });
|
|
6661
6898
|
if (result !== void 0) {
|
|
6662
6899
|
const currentValue = typeof result.partial === "string" ? result.partial : JSON.stringify(result.partial);
|
|
@@ -6709,6 +6946,7 @@ var DefaultStreamTextResult = class {
|
|
|
6709
6946
|
onToolCallStart,
|
|
6710
6947
|
onToolCallFinish,
|
|
6711
6948
|
experimental_context,
|
|
6949
|
+
experimental_toolApprovalSecret,
|
|
6712
6950
|
download: download2,
|
|
6713
6951
|
include
|
|
6714
6952
|
}) {
|
|
@@ -6733,11 +6971,11 @@ var DefaultStreamTextResult = class {
|
|
|
6733
6971
|
let recordedNoOutputError;
|
|
6734
6972
|
const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
|
|
6735
6973
|
let rootSpan;
|
|
6736
|
-
let activeTextContent =
|
|
6737
|
-
let activeReasoningContent =
|
|
6974
|
+
let activeTextContent = createIdMap();
|
|
6975
|
+
let activeReasoningContent = createIdMap();
|
|
6738
6976
|
const eventProcessor = new TransformStream({
|
|
6739
6977
|
async transform(chunk, controller) {
|
|
6740
|
-
var
|
|
6978
|
+
var _a22, _b, _c, _d;
|
|
6741
6979
|
controller.enqueue(chunk);
|
|
6742
6980
|
const { part } = chunk;
|
|
6743
6981
|
if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
|
|
@@ -6771,7 +7009,7 @@ var DefaultStreamTextResult = class {
|
|
|
6771
7009
|
return;
|
|
6772
7010
|
}
|
|
6773
7011
|
activeText.text += part.text;
|
|
6774
|
-
activeText.providerMetadata = (
|
|
7012
|
+
activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
|
|
6775
7013
|
}
|
|
6776
7014
|
if (part.type === "text-end") {
|
|
6777
7015
|
const activeText = activeTextContent[part.id];
|
|
@@ -6850,8 +7088,8 @@ var DefaultStreamTextResult = class {
|
|
|
6850
7088
|
}
|
|
6851
7089
|
if (part.type === "start-step") {
|
|
6852
7090
|
recordedContent = [];
|
|
6853
|
-
activeReasoningContent =
|
|
6854
|
-
activeTextContent =
|
|
7091
|
+
activeReasoningContent = createIdMap();
|
|
7092
|
+
activeTextContent = createIdMap();
|
|
6855
7093
|
recordedRequest = part.request;
|
|
6856
7094
|
recordedWarnings = part.warnings;
|
|
6857
7095
|
}
|
|
@@ -6897,7 +7135,7 @@ var DefaultStreamTextResult = class {
|
|
|
6897
7135
|
}
|
|
6898
7136
|
},
|
|
6899
7137
|
async flush(controller) {
|
|
6900
|
-
var
|
|
7138
|
+
var _a22, _b, _c, _d, _e, _f, _g;
|
|
6901
7139
|
try {
|
|
6902
7140
|
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
6903
7141
|
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
@@ -6961,15 +7199,15 @@ var DefaultStreamTextResult = class {
|
|
|
6961
7199
|
},
|
|
6962
7200
|
"ai.response.toolCalls": {
|
|
6963
7201
|
output: () => {
|
|
6964
|
-
var
|
|
6965
|
-
return ((
|
|
7202
|
+
var _a23;
|
|
7203
|
+
return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
6966
7204
|
}
|
|
6967
7205
|
},
|
|
6968
7206
|
"ai.response.providerMetadata": JSON.stringify(
|
|
6969
7207
|
finalStep.providerMetadata
|
|
6970
7208
|
),
|
|
6971
7209
|
"ai.usage.inputTokens": totalUsage.inputTokens,
|
|
6972
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7210
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
6973
7211
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
|
|
6974
7212
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
|
|
6975
7213
|
"ai.usage.outputTokens": totalUsage.outputTokens,
|
|
@@ -7120,12 +7358,24 @@ var DefaultStreamTextResult = class {
|
|
|
7120
7358
|
const initialResponseMessages = [];
|
|
7121
7359
|
const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
|
|
7122
7360
|
if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
|
|
7123
|
-
const
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7361
|
+
const {
|
|
7362
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
7363
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
7364
|
+
} = await validateApprovedToolApprovals({
|
|
7365
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
7366
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7367
|
+
),
|
|
7368
|
+
tools,
|
|
7369
|
+
messages: initialMessages,
|
|
7370
|
+
experimental_context,
|
|
7371
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
7372
|
+
});
|
|
7373
|
+
const localDeniedToolApprovals = [
|
|
7374
|
+
...deniedToolApprovals.filter(
|
|
7375
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7376
|
+
),
|
|
7377
|
+
...revalidationDeniedToolApprovals
|
|
7378
|
+
];
|
|
7129
7379
|
const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
|
|
7130
7380
|
(toolApproval) => toolApproval.toolCall.providerExecuted
|
|
7131
7381
|
);
|
|
@@ -7220,7 +7470,7 @@ var DefaultStreamTextResult = class {
|
|
|
7220
7470
|
responseMessages,
|
|
7221
7471
|
usage
|
|
7222
7472
|
}) {
|
|
7223
|
-
var
|
|
7473
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7224
7474
|
const includeRawChunks2 = self.includeRawChunks;
|
|
7225
7475
|
const stepTimeoutId = stepTimeoutMs != null ? setTimeout(() => stepAbortController.abort(), stepTimeoutMs) : void 0;
|
|
7226
7476
|
let chunkTimeoutId = void 0;
|
|
@@ -7257,7 +7507,7 @@ var DefaultStreamTextResult = class {
|
|
|
7257
7507
|
experimental_context
|
|
7258
7508
|
}));
|
|
7259
7509
|
const stepModel = resolveLanguageModel(
|
|
7260
|
-
(
|
|
7510
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
7261
7511
|
);
|
|
7262
7512
|
const stepModelInfo = {
|
|
7263
7513
|
provider: stepModel.provider,
|
|
@@ -7380,6 +7630,7 @@ var DefaultStreamTextResult = class {
|
|
|
7380
7630
|
repairToolCall,
|
|
7381
7631
|
abortSignal,
|
|
7382
7632
|
experimental_context,
|
|
7633
|
+
toolApprovalSecret: experimental_toolApprovalSecret,
|
|
7383
7634
|
generateId: generateId2,
|
|
7384
7635
|
stepNumber: recordedSteps.length,
|
|
7385
7636
|
model: stepModelInfo,
|
|
@@ -7414,7 +7665,7 @@ var DefaultStreamTextResult = class {
|
|
|
7414
7665
|
streamWithToolResults.pipeThrough(
|
|
7415
7666
|
new TransformStream({
|
|
7416
7667
|
async transform(chunk, controller) {
|
|
7417
|
-
var
|
|
7668
|
+
var _a23, _b2, _c2, _d2, _e2;
|
|
7418
7669
|
resetChunkTimeout();
|
|
7419
7670
|
if (chunk.type === "stream-start") {
|
|
7420
7671
|
warnings = chunk.warnings;
|
|
@@ -7491,7 +7742,7 @@ var DefaultStreamTextResult = class {
|
|
|
7491
7742
|
}
|
|
7492
7743
|
case "response-metadata": {
|
|
7493
7744
|
stepResponse = {
|
|
7494
|
-
id: (
|
|
7745
|
+
id: (_a23 = chunk.id) != null ? _a23 : stepResponse.id,
|
|
7495
7746
|
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
|
7496
7747
|
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
|
7497
7748
|
};
|
|
@@ -7579,7 +7830,7 @@ var DefaultStreamTextResult = class {
|
|
|
7579
7830
|
},
|
|
7580
7831
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
7581
7832
|
async flush(controller) {
|
|
7582
|
-
var
|
|
7833
|
+
var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
7583
7834
|
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
7584
7835
|
controller.enqueue({
|
|
7585
7836
|
type: "error",
|
|
@@ -7607,7 +7858,7 @@ var DefaultStreamTextResult = class {
|
|
|
7607
7858
|
"ai.response.model": stepResponse.modelId,
|
|
7608
7859
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
|
7609
7860
|
"ai.usage.inputTokens": stepUsage.inputTokens,
|
|
7610
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7861
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
7611
7862
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
|
|
7612
7863
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
|
|
7613
7864
|
"ai.usage.outputTokens": stepUsage.outputTokens,
|
|
@@ -7881,19 +8132,19 @@ var DefaultStreamTextResult = class {
|
|
|
7881
8132
|
this._steps.reject(error);
|
|
7882
8133
|
}
|
|
7883
8134
|
async consumeStream(options) {
|
|
7884
|
-
var
|
|
8135
|
+
var _a22;
|
|
7885
8136
|
try {
|
|
7886
8137
|
await consumeStream({
|
|
7887
8138
|
stream: this.fullStream,
|
|
7888
8139
|
onError: (error) => {
|
|
7889
|
-
var
|
|
8140
|
+
var _a23;
|
|
7890
8141
|
this.rejectResultPromises(error);
|
|
7891
|
-
(
|
|
8142
|
+
(_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
|
|
7892
8143
|
}
|
|
7893
8144
|
});
|
|
7894
8145
|
} catch (error) {
|
|
7895
8146
|
this.rejectResultPromises(error);
|
|
7896
|
-
(
|
|
8147
|
+
(_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
|
|
7897
8148
|
}
|
|
7898
8149
|
}
|
|
7899
8150
|
get experimental_partialOutputStream() {
|
|
@@ -7913,8 +8164,8 @@ var DefaultStreamTextResult = class {
|
|
|
7913
8164
|
);
|
|
7914
8165
|
}
|
|
7915
8166
|
get elementStream() {
|
|
7916
|
-
var
|
|
7917
|
-
const transform = (
|
|
8167
|
+
var _a22, _b, _c;
|
|
8168
|
+
const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
|
|
7918
8169
|
if (transform == null) {
|
|
7919
8170
|
throw new UnsupportedFunctionalityError2({
|
|
7920
8171
|
functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
|
|
@@ -7924,8 +8175,8 @@ var DefaultStreamTextResult = class {
|
|
|
7924
8175
|
}
|
|
7925
8176
|
get output() {
|
|
7926
8177
|
return this.finalStep.then((step) => {
|
|
7927
|
-
var
|
|
7928
|
-
const output = (
|
|
8178
|
+
var _a22;
|
|
8179
|
+
const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
|
|
7929
8180
|
return output.parseCompleteOutput(
|
|
7930
8181
|
{ text: step.text },
|
|
7931
8182
|
{
|
|
@@ -7945,15 +8196,16 @@ var DefaultStreamTextResult = class {
|
|
|
7945
8196
|
sendSources = false,
|
|
7946
8197
|
sendStart = true,
|
|
7947
8198
|
sendFinish = true,
|
|
7948
|
-
onError =
|
|
8199
|
+
onError = () => "An error occurred."
|
|
8200
|
+
// prevent leaking server error details to the client by default
|
|
7949
8201
|
} = {}) {
|
|
7950
8202
|
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
|
7951
8203
|
originalMessages,
|
|
7952
8204
|
responseMessageId: generateMessageId
|
|
7953
8205
|
}) : void 0;
|
|
7954
8206
|
const isDynamic = (part) => {
|
|
7955
|
-
var
|
|
7956
|
-
const tool2 = (
|
|
8207
|
+
var _a22;
|
|
8208
|
+
const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
|
|
7957
8209
|
if (tool2 == null) {
|
|
7958
8210
|
return part.dynamic;
|
|
7959
8211
|
}
|
|
@@ -8099,7 +8351,8 @@ var DefaultStreamTextResult = class {
|
|
|
8099
8351
|
controller.enqueue({
|
|
8100
8352
|
type: "tool-approval-request",
|
|
8101
8353
|
approvalId: part.approvalId,
|
|
8102
|
-
toolCallId: part.toolCall.toolCallId
|
|
8354
|
+
toolCallId: part.toolCall.toolCallId,
|
|
8355
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
8103
8356
|
});
|
|
8104
8357
|
break;
|
|
8105
8358
|
}
|
|
@@ -8295,7 +8548,7 @@ var ToolLoopAgent = class {
|
|
|
8295
8548
|
return this.settings.tools;
|
|
8296
8549
|
}
|
|
8297
8550
|
async prepareCall(options) {
|
|
8298
|
-
var
|
|
8551
|
+
var _a22, _b, _c, _d;
|
|
8299
8552
|
if (this.settings.callOptionsSchema != null && options.options !== void 0) {
|
|
8300
8553
|
const validatedOptions = await validateTypes2({
|
|
8301
8554
|
value: options.options,
|
|
@@ -8307,7 +8560,7 @@ var ToolLoopAgent = class {
|
|
|
8307
8560
|
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
|
|
8308
8561
|
const baseCallArgs = {
|
|
8309
8562
|
...settingsWithoutCallback,
|
|
8310
|
-
stopWhen: (
|
|
8563
|
+
stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
|
|
8311
8564
|
...options
|
|
8312
8565
|
};
|
|
8313
8566
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
|
|
@@ -8380,12 +8633,12 @@ var ToolLoopAgent = class {
|
|
|
8380
8633
|
|
|
8381
8634
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
8382
8635
|
import {
|
|
8383
|
-
generateId as generateIdFunc
|
|
8384
|
-
getErrorMessage as getErrorMessage8
|
|
8636
|
+
generateId as generateIdFunc
|
|
8385
8637
|
} from "@ai-sdk/provider-utils";
|
|
8386
8638
|
function createUIMessageStream({
|
|
8387
8639
|
execute,
|
|
8388
|
-
onError =
|
|
8640
|
+
onError = () => "An error occurred.",
|
|
8641
|
+
// prevent leaking server error details to the client by default
|
|
8389
8642
|
originalMessages,
|
|
8390
8643
|
onStepFinish,
|
|
8391
8644
|
onFinish,
|
|
@@ -8476,7 +8729,7 @@ function readUIMessageStream({
|
|
|
8476
8729
|
onError,
|
|
8477
8730
|
terminateOnError = false
|
|
8478
8731
|
}) {
|
|
8479
|
-
var
|
|
8732
|
+
var _a22;
|
|
8480
8733
|
let controller;
|
|
8481
8734
|
let hasErrored = false;
|
|
8482
8735
|
const outputStream = new ReadableStream({
|
|
@@ -8485,7 +8738,7 @@ function readUIMessageStream({
|
|
|
8485
8738
|
}
|
|
8486
8739
|
});
|
|
8487
8740
|
const state = createStreamingUIMessageState({
|
|
8488
|
-
messageId: (
|
|
8741
|
+
messageId: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : "",
|
|
8489
8742
|
lastMessage: message
|
|
8490
8743
|
});
|
|
8491
8744
|
const handleError = (error) => {
|
|
@@ -8554,7 +8807,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8554
8807
|
modelMessages.push({
|
|
8555
8808
|
role: "user",
|
|
8556
8809
|
content: message.parts.map((part) => {
|
|
8557
|
-
var
|
|
8810
|
+
var _a22;
|
|
8558
8811
|
if (isTextUIPart(part)) {
|
|
8559
8812
|
return {
|
|
8560
8813
|
type: "text",
|
|
@@ -8572,7 +8825,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8572
8825
|
};
|
|
8573
8826
|
}
|
|
8574
8827
|
if (isDataUIPart(part)) {
|
|
8575
|
-
return (
|
|
8828
|
+
return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(
|
|
8576
8829
|
options,
|
|
8577
8830
|
part
|
|
8578
8831
|
);
|
|
@@ -8585,7 +8838,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8585
8838
|
if (message.parts != null) {
|
|
8586
8839
|
let block = [];
|
|
8587
8840
|
async function processBlock() {
|
|
8588
|
-
var
|
|
8841
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h;
|
|
8589
8842
|
if (block.length === 0) {
|
|
8590
8843
|
return;
|
|
8591
8844
|
}
|
|
@@ -8618,7 +8871,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8618
8871
|
type: "tool-call",
|
|
8619
8872
|
toolCallId: part.toolCallId,
|
|
8620
8873
|
toolName,
|
|
8621
|
-
input: part.state === "output-error" ? (
|
|
8874
|
+
input: part.state === "output-error" ? (_a22 = part.input) != null ? _a22 : "rawInput" in part ? part.rawInput : void 0 : part.input,
|
|
8622
8875
|
providerExecuted: part.providerExecuted,
|
|
8623
8876
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
8624
8877
|
});
|
|
@@ -8626,7 +8879,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8626
8879
|
content.push({
|
|
8627
8880
|
type: "tool-approval-request",
|
|
8628
8881
|
approvalId: part.approval.id,
|
|
8629
|
-
toolCallId: part.toolCallId
|
|
8882
|
+
toolCallId: part.toolCallId,
|
|
8883
|
+
...part.approval.signature != null ? { signature: part.approval.signature } : {}
|
|
8630
8884
|
});
|
|
8631
8885
|
}
|
|
8632
8886
|
if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
|
|
@@ -8665,8 +8919,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8665
8919
|
});
|
|
8666
8920
|
const toolParts = block.filter(
|
|
8667
8921
|
(part) => {
|
|
8668
|
-
var
|
|
8669
|
-
return isToolUIPart(part) && (part.providerExecuted !== true || ((
|
|
8922
|
+
var _a23;
|
|
8923
|
+
return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);
|
|
8670
8924
|
}
|
|
8671
8925
|
);
|
|
8672
8926
|
if (toolParts.length > 0) {
|
|
@@ -8858,7 +9112,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8858
9112
|
approval: z8.object({
|
|
8859
9113
|
id: z8.string(),
|
|
8860
9114
|
approved: z8.never().optional(),
|
|
8861
|
-
reason: z8.never().optional()
|
|
9115
|
+
reason: z8.never().optional(),
|
|
9116
|
+
signature: z8.string().optional()
|
|
8862
9117
|
})
|
|
8863
9118
|
}),
|
|
8864
9119
|
z8.object({
|
|
@@ -8875,7 +9130,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8875
9130
|
approval: z8.object({
|
|
8876
9131
|
id: z8.string(),
|
|
8877
9132
|
approved: z8.boolean(),
|
|
8878
|
-
reason: z8.string().optional()
|
|
9133
|
+
reason: z8.string().optional(),
|
|
9134
|
+
signature: z8.string().optional()
|
|
8879
9135
|
})
|
|
8880
9136
|
}),
|
|
8881
9137
|
z8.object({
|
|
@@ -8894,7 +9150,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8894
9150
|
approval: z8.object({
|
|
8895
9151
|
id: z8.string(),
|
|
8896
9152
|
approved: z8.literal(true),
|
|
8897
|
-
reason: z8.string().optional()
|
|
9153
|
+
reason: z8.string().optional(),
|
|
9154
|
+
signature: z8.string().optional()
|
|
8898
9155
|
}).optional()
|
|
8899
9156
|
}),
|
|
8900
9157
|
z8.object({
|
|
@@ -8913,7 +9170,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8913
9170
|
approval: z8.object({
|
|
8914
9171
|
id: z8.string(),
|
|
8915
9172
|
approved: z8.literal(true),
|
|
8916
|
-
reason: z8.string().optional()
|
|
9173
|
+
reason: z8.string().optional(),
|
|
9174
|
+
signature: z8.string().optional()
|
|
8917
9175
|
}).optional()
|
|
8918
9176
|
}),
|
|
8919
9177
|
z8.object({
|
|
@@ -8930,7 +9188,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8930
9188
|
approval: z8.object({
|
|
8931
9189
|
id: z8.string(),
|
|
8932
9190
|
approved: z8.literal(false),
|
|
8933
|
-
reason: z8.string().optional()
|
|
9191
|
+
reason: z8.string().optional(),
|
|
9192
|
+
signature: z8.string().optional()
|
|
8934
9193
|
})
|
|
8935
9194
|
}),
|
|
8936
9195
|
z8.object({
|
|
@@ -8970,7 +9229,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8970
9229
|
approval: z8.object({
|
|
8971
9230
|
id: z8.string(),
|
|
8972
9231
|
approved: z8.never().optional(),
|
|
8973
|
-
reason: z8.never().optional()
|
|
9232
|
+
reason: z8.never().optional(),
|
|
9233
|
+
signature: z8.string().optional()
|
|
8974
9234
|
})
|
|
8975
9235
|
}),
|
|
8976
9236
|
z8.object({
|
|
@@ -8986,7 +9246,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8986
9246
|
approval: z8.object({
|
|
8987
9247
|
id: z8.string(),
|
|
8988
9248
|
approved: z8.boolean(),
|
|
8989
|
-
reason: z8.string().optional()
|
|
9249
|
+
reason: z8.string().optional(),
|
|
9250
|
+
signature: z8.string().optional()
|
|
8990
9251
|
})
|
|
8991
9252
|
}),
|
|
8992
9253
|
z8.object({
|
|
@@ -9004,7 +9265,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9004
9265
|
approval: z8.object({
|
|
9005
9266
|
id: z8.string(),
|
|
9006
9267
|
approved: z8.literal(true),
|
|
9007
|
-
reason: z8.string().optional()
|
|
9268
|
+
reason: z8.string().optional(),
|
|
9269
|
+
signature: z8.string().optional()
|
|
9008
9270
|
}).optional()
|
|
9009
9271
|
}),
|
|
9010
9272
|
z8.object({
|
|
@@ -9022,7 +9284,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9022
9284
|
approval: z8.object({
|
|
9023
9285
|
id: z8.string(),
|
|
9024
9286
|
approved: z8.literal(true),
|
|
9025
|
-
reason: z8.string().optional()
|
|
9287
|
+
reason: z8.string().optional(),
|
|
9288
|
+
signature: z8.string().optional()
|
|
9026
9289
|
}).optional()
|
|
9027
9290
|
}),
|
|
9028
9291
|
z8.object({
|
|
@@ -9038,7 +9301,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9038
9301
|
approval: z8.object({
|
|
9039
9302
|
id: z8.string(),
|
|
9040
9303
|
approved: z8.literal(false),
|
|
9041
|
-
reason: z8.string().optional()
|
|
9304
|
+
reason: z8.string().optional(),
|
|
9305
|
+
signature: z8.string().optional()
|
|
9042
9306
|
})
|
|
9043
9307
|
})
|
|
9044
9308
|
])
|
|
@@ -9198,7 +9462,7 @@ async function createAgentUIStream({
|
|
|
9198
9462
|
onStepFinish,
|
|
9199
9463
|
...uiMessageStreamOptions
|
|
9200
9464
|
}) {
|
|
9201
|
-
var
|
|
9465
|
+
var _a22;
|
|
9202
9466
|
const validatedMessages = await validateUIMessages({
|
|
9203
9467
|
messages: uiMessages,
|
|
9204
9468
|
tools: agent.tools
|
|
@@ -9217,7 +9481,7 @@ async function createAgentUIStream({
|
|
|
9217
9481
|
return result.toUIMessageStream({
|
|
9218
9482
|
...uiMessageStreamOptions,
|
|
9219
9483
|
// TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
|
|
9220
|
-
originalMessages: (
|
|
9484
|
+
originalMessages: (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages
|
|
9221
9485
|
});
|
|
9222
9486
|
}
|
|
9223
9487
|
|
|
@@ -9317,7 +9581,7 @@ async function embed({
|
|
|
9317
9581
|
}),
|
|
9318
9582
|
tracer,
|
|
9319
9583
|
fn: async (doEmbedSpan) => {
|
|
9320
|
-
var
|
|
9584
|
+
var _a22, _b;
|
|
9321
9585
|
const modelResponse = await model.doEmbed({
|
|
9322
9586
|
values: [value],
|
|
9323
9587
|
abortSignal,
|
|
@@ -9325,7 +9589,7 @@ async function embed({
|
|
|
9325
9589
|
providerOptions
|
|
9326
9590
|
});
|
|
9327
9591
|
const embedding2 = modelResponse.embeddings[0];
|
|
9328
|
-
const usage2 = (
|
|
9592
|
+
const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
|
|
9329
9593
|
doEmbedSpan.setAttributes(
|
|
9330
9594
|
await selectTelemetryAttributes({
|
|
9331
9595
|
telemetry,
|
|
@@ -9441,7 +9705,7 @@ async function embedMany({
|
|
|
9441
9705
|
}),
|
|
9442
9706
|
tracer,
|
|
9443
9707
|
fn: async (span) => {
|
|
9444
|
-
var
|
|
9708
|
+
var _a22;
|
|
9445
9709
|
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
|
9446
9710
|
model.maxEmbeddingsPerCall,
|
|
9447
9711
|
model.supportsParallelCalls
|
|
@@ -9466,7 +9730,7 @@ async function embedMany({
|
|
|
9466
9730
|
}),
|
|
9467
9731
|
tracer,
|
|
9468
9732
|
fn: async (doEmbedSpan) => {
|
|
9469
|
-
var
|
|
9733
|
+
var _a23, _b;
|
|
9470
9734
|
const modelResponse = await model.doEmbed({
|
|
9471
9735
|
values,
|
|
9472
9736
|
abortSignal,
|
|
@@ -9474,7 +9738,7 @@ async function embedMany({
|
|
|
9474
9738
|
providerOptions
|
|
9475
9739
|
});
|
|
9476
9740
|
const embeddings3 = modelResponse.embeddings;
|
|
9477
|
-
const usage2 = (
|
|
9741
|
+
const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9478
9742
|
doEmbedSpan.setAttributes(
|
|
9479
9743
|
await selectTelemetryAttributes({
|
|
9480
9744
|
telemetry,
|
|
@@ -9555,7 +9819,7 @@ async function embedMany({
|
|
|
9555
9819
|
}),
|
|
9556
9820
|
tracer,
|
|
9557
9821
|
fn: async (doEmbedSpan) => {
|
|
9558
|
-
var
|
|
9822
|
+
var _a23, _b;
|
|
9559
9823
|
const modelResponse = await model.doEmbed({
|
|
9560
9824
|
values: chunk,
|
|
9561
9825
|
abortSignal,
|
|
@@ -9563,7 +9827,7 @@ async function embedMany({
|
|
|
9563
9827
|
providerOptions
|
|
9564
9828
|
});
|
|
9565
9829
|
const embeddings2 = modelResponse.embeddings;
|
|
9566
|
-
const usage = (
|
|
9830
|
+
const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9567
9831
|
doEmbedSpan.setAttributes(
|
|
9568
9832
|
await selectTelemetryAttributes({
|
|
9569
9833
|
telemetry,
|
|
@@ -9602,7 +9866,7 @@ async function embedMany({
|
|
|
9602
9866
|
result.providerMetadata
|
|
9603
9867
|
)) {
|
|
9604
9868
|
providerMetadata[providerName] = {
|
|
9605
|
-
...(
|
|
9869
|
+
...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
|
|
9606
9870
|
...metadata
|
|
9607
9871
|
};
|
|
9608
9872
|
}
|
|
@@ -9650,7 +9914,7 @@ var DefaultEmbedManyResult = class {
|
|
|
9650
9914
|
|
|
9651
9915
|
// src/generate-image/generate-image.ts
|
|
9652
9916
|
import {
|
|
9653
|
-
convertBase64ToUint8Array as
|
|
9917
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array5,
|
|
9654
9918
|
withUserAgentSuffix as withUserAgentSuffix5
|
|
9655
9919
|
} from "@ai-sdk/provider-utils";
|
|
9656
9920
|
async function generateImage({
|
|
@@ -9666,7 +9930,7 @@ async function generateImage({
|
|
|
9666
9930
|
abortSignal,
|
|
9667
9931
|
headers
|
|
9668
9932
|
}) {
|
|
9669
|
-
var
|
|
9933
|
+
var _a22, _b;
|
|
9670
9934
|
const model = resolveImageModel(modelArg);
|
|
9671
9935
|
const headersWithUserAgent = withUserAgentSuffix5(
|
|
9672
9936
|
headers != null ? headers : {},
|
|
@@ -9676,7 +9940,7 @@ async function generateImage({
|
|
|
9676
9940
|
maxRetries: maxRetriesArg,
|
|
9677
9941
|
abortSignal
|
|
9678
9942
|
});
|
|
9679
|
-
const maxImagesPerCallWithDefault = (
|
|
9943
|
+
const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 1;
|
|
9680
9944
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
9681
9945
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
9682
9946
|
if (i < callCount - 1) {
|
|
@@ -9717,13 +9981,13 @@ async function generateImage({
|
|
|
9717
9981
|
images.push(
|
|
9718
9982
|
...result.images.map(
|
|
9719
9983
|
(image) => {
|
|
9720
|
-
var
|
|
9984
|
+
var _a23;
|
|
9721
9985
|
return new DefaultGeneratedFile({
|
|
9722
9986
|
data: image,
|
|
9723
|
-
mediaType: (
|
|
9987
|
+
mediaType: (_a23 = detectMediaType({
|
|
9724
9988
|
data: image,
|
|
9725
9989
|
signatures: imageMediaTypeSignatures
|
|
9726
|
-
})) != null ?
|
|
9990
|
+
})) != null ? _a23 : "image/png"
|
|
9727
9991
|
});
|
|
9728
9992
|
}
|
|
9729
9993
|
)
|
|
@@ -9811,7 +10075,7 @@ function toImageModelV3File(dataContent) {
|
|
|
9811
10075
|
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
9812
10076
|
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
9813
10077
|
if (base64Content != null) {
|
|
9814
|
-
const uint8Data2 =
|
|
10078
|
+
const uint8Data2 = convertBase64ToUint8Array5(base64Content);
|
|
9815
10079
|
return {
|
|
9816
10080
|
type: "file",
|
|
9817
10081
|
data: uint8Data2,
|
|
@@ -9850,8 +10114,8 @@ import {
|
|
|
9850
10114
|
UnsupportedFunctionalityError as UnsupportedFunctionalityError3
|
|
9851
10115
|
} from "@ai-sdk/provider";
|
|
9852
10116
|
import {
|
|
9853
|
-
asSchema as
|
|
9854
|
-
safeValidateTypes as
|
|
10117
|
+
asSchema as asSchema5,
|
|
10118
|
+
safeValidateTypes as safeValidateTypes5
|
|
9855
10119
|
} from "@ai-sdk/provider-utils";
|
|
9856
10120
|
var noSchemaOutputStrategy = {
|
|
9857
10121
|
type: "no-schema",
|
|
@@ -9891,7 +10155,7 @@ var objectOutputStrategy = (schema) => ({
|
|
|
9891
10155
|
};
|
|
9892
10156
|
},
|
|
9893
10157
|
async validateFinalResult(value) {
|
|
9894
|
-
return
|
|
10158
|
+
return safeValidateTypes5({ value, schema });
|
|
9895
10159
|
},
|
|
9896
10160
|
createElementStream() {
|
|
9897
10161
|
throw new UnsupportedFunctionalityError3({
|
|
@@ -9923,7 +10187,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9923
10187
|
isFirstDelta,
|
|
9924
10188
|
isFinalDelta
|
|
9925
10189
|
}) {
|
|
9926
|
-
var
|
|
10190
|
+
var _a22;
|
|
9927
10191
|
if (!isJSONObject(value) || !isJSONArray(value.elements)) {
|
|
9928
10192
|
return {
|
|
9929
10193
|
success: false,
|
|
@@ -9937,7 +10201,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9937
10201
|
const resultArray = [];
|
|
9938
10202
|
for (let i = 0; i < inputArray.length; i++) {
|
|
9939
10203
|
const element = inputArray[i];
|
|
9940
|
-
const result = await
|
|
10204
|
+
const result = await safeValidateTypes5({ value: element, schema });
|
|
9941
10205
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
9942
10206
|
continue;
|
|
9943
10207
|
}
|
|
@@ -9946,7 +10210,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9946
10210
|
}
|
|
9947
10211
|
resultArray.push(result.value);
|
|
9948
10212
|
}
|
|
9949
|
-
const publishedElementCount = (
|
|
10213
|
+
const publishedElementCount = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 0;
|
|
9950
10214
|
let textDelta = "";
|
|
9951
10215
|
if (isFirstDelta) {
|
|
9952
10216
|
textDelta += "[";
|
|
@@ -9979,7 +10243,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9979
10243
|
const inputArray = value.elements;
|
|
9980
10244
|
const resultArray = [];
|
|
9981
10245
|
for (const element of inputArray) {
|
|
9982
|
-
const result = await
|
|
10246
|
+
const result = await safeValidateTypes5({ value: element, schema });
|
|
9983
10247
|
if (!result.success) {
|
|
9984
10248
|
return result;
|
|
9985
10249
|
}
|
|
@@ -10098,9 +10362,9 @@ function getOutputStrategy({
|
|
|
10098
10362
|
}) {
|
|
10099
10363
|
switch (output) {
|
|
10100
10364
|
case "object":
|
|
10101
|
-
return objectOutputStrategy(
|
|
10365
|
+
return objectOutputStrategy(asSchema5(schema));
|
|
10102
10366
|
case "array":
|
|
10103
|
-
return arrayOutputStrategy(
|
|
10367
|
+
return arrayOutputStrategy(asSchema5(schema));
|
|
10104
10368
|
case "enum":
|
|
10105
10369
|
return enumOutputStrategy(enumValues);
|
|
10106
10370
|
case "no-schema":
|
|
@@ -10369,7 +10633,7 @@ async function generateObject(options) {
|
|
|
10369
10633
|
}),
|
|
10370
10634
|
tracer,
|
|
10371
10635
|
fn: async (span) => {
|
|
10372
|
-
var
|
|
10636
|
+
var _a22;
|
|
10373
10637
|
let result;
|
|
10374
10638
|
let finishReason;
|
|
10375
10639
|
let usage;
|
|
@@ -10416,7 +10680,7 @@ async function generateObject(options) {
|
|
|
10416
10680
|
}),
|
|
10417
10681
|
tracer,
|
|
10418
10682
|
fn: async (span2) => {
|
|
10419
|
-
var
|
|
10683
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
10420
10684
|
const result2 = await model.doGenerate({
|
|
10421
10685
|
responseFormat: {
|
|
10422
10686
|
type: "json",
|
|
@@ -10431,7 +10695,7 @@ async function generateObject(options) {
|
|
|
10431
10695
|
headers: headersWithUserAgent
|
|
10432
10696
|
});
|
|
10433
10697
|
const responseData = {
|
|
10434
|
-
id: (_b = (
|
|
10698
|
+
id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
|
|
10435
10699
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
10436
10700
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
10437
10701
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -10487,7 +10751,7 @@ async function generateObject(options) {
|
|
|
10487
10751
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
10488
10752
|
warnings = generateResult.warnings;
|
|
10489
10753
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
10490
|
-
request = (
|
|
10754
|
+
request = (_a22 = generateResult.request) != null ? _a22 : {};
|
|
10491
10755
|
response = generateResult.responseData;
|
|
10492
10756
|
reasoning = generateResult.reasoning;
|
|
10493
10757
|
logWarnings({
|
|
@@ -10550,9 +10814,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
10550
10814
|
this.reasoning = options.reasoning;
|
|
10551
10815
|
}
|
|
10552
10816
|
toJsonResponse(init) {
|
|
10553
|
-
var
|
|
10817
|
+
var _a22;
|
|
10554
10818
|
return new Response(JSON.stringify(this.object), {
|
|
10555
|
-
status: (
|
|
10819
|
+
status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
|
|
10556
10820
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
10557
10821
|
"content-type": "application/json; charset=utf-8"
|
|
10558
10822
|
})
|
|
@@ -10686,8 +10950,8 @@ function simulateReadableStream({
|
|
|
10686
10950
|
chunkDelayInMs = 0,
|
|
10687
10951
|
_internal
|
|
10688
10952
|
}) {
|
|
10689
|
-
var
|
|
10690
|
-
const delay2 = (
|
|
10953
|
+
var _a22;
|
|
10954
|
+
const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : delayFunction;
|
|
10691
10955
|
let index = 0;
|
|
10692
10956
|
return new ReadableStream({
|
|
10693
10957
|
async pull(controller) {
|
|
@@ -10949,7 +11213,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10949
11213
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
10950
11214
|
new TransformStream({
|
|
10951
11215
|
async transform(chunk, controller) {
|
|
10952
|
-
var
|
|
11216
|
+
var _a22, _b, _c;
|
|
10953
11217
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
10954
11218
|
warnings = chunk.warnings;
|
|
10955
11219
|
return;
|
|
@@ -10999,7 +11263,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10999
11263
|
switch (chunk.type) {
|
|
11000
11264
|
case "response-metadata": {
|
|
11001
11265
|
fullResponse = {
|
|
11002
|
-
id: (
|
|
11266
|
+
id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
|
|
11003
11267
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11004
11268
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11005
11269
|
};
|
|
@@ -11273,7 +11537,7 @@ async function generateSpeech({
|
|
|
11273
11537
|
abortSignal,
|
|
11274
11538
|
headers
|
|
11275
11539
|
}) {
|
|
11276
|
-
var
|
|
11540
|
+
var _a22;
|
|
11277
11541
|
const resolvedModel = resolveSpeechModel(model);
|
|
11278
11542
|
if (!resolvedModel) {
|
|
11279
11543
|
throw new Error("Model could not be resolved");
|
|
@@ -11310,10 +11574,10 @@ async function generateSpeech({
|
|
|
11310
11574
|
return new DefaultSpeechResult({
|
|
11311
11575
|
audio: new DefaultGeneratedAudioFile({
|
|
11312
11576
|
data: result.audio,
|
|
11313
|
-
mediaType: (
|
|
11577
|
+
mediaType: (_a22 = detectMediaType({
|
|
11314
11578
|
data: result.audio,
|
|
11315
11579
|
signatures: audioMediaTypeSignatures
|
|
11316
|
-
})) != null ?
|
|
11580
|
+
})) != null ? _a22 : "audio/mp3"
|
|
11317
11581
|
}),
|
|
11318
11582
|
warnings: result.warnings,
|
|
11319
11583
|
responses: [result.response],
|
|
@@ -11322,11 +11586,11 @@ async function generateSpeech({
|
|
|
11322
11586
|
}
|
|
11323
11587
|
var DefaultSpeechResult = class {
|
|
11324
11588
|
constructor(options) {
|
|
11325
|
-
var
|
|
11589
|
+
var _a22;
|
|
11326
11590
|
this.audio = options.audio;
|
|
11327
11591
|
this.warnings = options.warnings;
|
|
11328
11592
|
this.responses = options.responses;
|
|
11329
|
-
this.providerMetadata = (
|
|
11593
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
11330
11594
|
}
|
|
11331
11595
|
};
|
|
11332
11596
|
|
|
@@ -11511,7 +11775,7 @@ function smoothStream({
|
|
|
11511
11775
|
|
|
11512
11776
|
// src/generate-video/generate-video.ts
|
|
11513
11777
|
import {
|
|
11514
|
-
convertBase64ToUint8Array as
|
|
11778
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array6,
|
|
11515
11779
|
withUserAgentSuffix as withUserAgentSuffix8
|
|
11516
11780
|
} from "@ai-sdk/provider-utils";
|
|
11517
11781
|
var defaultDownload = createDownload();
|
|
@@ -11531,7 +11795,7 @@ async function experimental_generateVideo({
|
|
|
11531
11795
|
headers,
|
|
11532
11796
|
download: downloadFn = defaultDownload
|
|
11533
11797
|
}) {
|
|
11534
|
-
var
|
|
11798
|
+
var _a22;
|
|
11535
11799
|
const model = resolveVideoModel(modelArg);
|
|
11536
11800
|
const headersWithUserAgent = withUserAgentSuffix8(
|
|
11537
11801
|
headers != null ? headers : {},
|
|
@@ -11542,7 +11806,7 @@ async function experimental_generateVideo({
|
|
|
11542
11806
|
abortSignal
|
|
11543
11807
|
});
|
|
11544
11808
|
const { prompt, image } = normalizePrompt2(promptArg);
|
|
11545
|
-
const maxVideosPerCallWithDefault = (
|
|
11809
|
+
const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
|
|
11546
11810
|
const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
|
|
11547
11811
|
const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
|
|
11548
11812
|
const remaining = n - index * maxVideosPerCallWithDefault;
|
|
@@ -11664,7 +11928,7 @@ async function experimental_generateVideo({
|
|
|
11664
11928
|
};
|
|
11665
11929
|
}
|
|
11666
11930
|
function normalizePrompt2(promptArg) {
|
|
11667
|
-
var
|
|
11931
|
+
var _a22, _b;
|
|
11668
11932
|
if (typeof promptArg === "string") {
|
|
11669
11933
|
return {
|
|
11670
11934
|
prompt: promptArg,
|
|
@@ -11685,14 +11949,14 @@ function normalizePrompt2(promptArg) {
|
|
|
11685
11949
|
image = {
|
|
11686
11950
|
type: "file",
|
|
11687
11951
|
mediaType: mediaType != null ? mediaType : "image/png",
|
|
11688
|
-
data:
|
|
11952
|
+
data: convertBase64ToUint8Array6(base64Content != null ? base64Content : "")
|
|
11689
11953
|
};
|
|
11690
11954
|
} else {
|
|
11691
|
-
const bytes =
|
|
11692
|
-
const mediaType = (
|
|
11955
|
+
const bytes = convertBase64ToUint8Array6(dataContent);
|
|
11956
|
+
const mediaType = (_a22 = detectMediaType({
|
|
11693
11957
|
data: bytes,
|
|
11694
11958
|
signatures: imageMediaTypeSignatures
|
|
11695
|
-
})) != null ?
|
|
11959
|
+
})) != null ? _a22 : "image/png";
|
|
11696
11960
|
image = {
|
|
11697
11961
|
type: "file",
|
|
11698
11962
|
mediaType,
|
|
@@ -11752,8 +12016,8 @@ function defaultTransform(text2) {
|
|
|
11752
12016
|
return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
11753
12017
|
}
|
|
11754
12018
|
function extractJsonMiddleware(options) {
|
|
11755
|
-
var
|
|
11756
|
-
const transform = (
|
|
12019
|
+
var _a22;
|
|
12020
|
+
const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
|
|
11757
12021
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
11758
12022
|
return {
|
|
11759
12023
|
specificationVersion: "v3",
|
|
@@ -11774,7 +12038,7 @@ function extractJsonMiddleware(options) {
|
|
|
11774
12038
|
},
|
|
11775
12039
|
wrapStream: async ({ doStream }) => {
|
|
11776
12040
|
const { stream, ...rest } = await doStream();
|
|
11777
|
-
const textBlocks =
|
|
12041
|
+
const textBlocks = createIdMap();
|
|
11778
12042
|
const SUFFIX_BUFFER_SIZE = 12;
|
|
11779
12043
|
return {
|
|
11780
12044
|
stream: stream.pipeThrough(
|
|
@@ -11937,7 +12201,7 @@ function extractReasoningMiddleware({
|
|
|
11937
12201
|
},
|
|
11938
12202
|
wrapStream: async ({ doStream }) => {
|
|
11939
12203
|
const { stream, ...rest } = await doStream();
|
|
11940
|
-
const reasoningExtractions =
|
|
12204
|
+
const reasoningExtractions = createIdMap();
|
|
11941
12205
|
let delayedTextStart;
|
|
11942
12206
|
return {
|
|
11943
12207
|
stream: stream.pipeThrough(
|
|
@@ -12127,13 +12391,13 @@ function addToolInputExamplesMiddleware({
|
|
|
12127
12391
|
return {
|
|
12128
12392
|
specificationVersion: "v3",
|
|
12129
12393
|
transformParams: async ({ params }) => {
|
|
12130
|
-
var
|
|
12131
|
-
if (!((
|
|
12394
|
+
var _a22;
|
|
12395
|
+
if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
|
|
12132
12396
|
return params;
|
|
12133
12397
|
}
|
|
12134
12398
|
const transformedTools = params.tools.map((tool2) => {
|
|
12135
|
-
var
|
|
12136
|
-
if (tool2.type !== "function" || !((
|
|
12399
|
+
var _a23;
|
|
12400
|
+
if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
|
|
12137
12401
|
return tool2;
|
|
12138
12402
|
}
|
|
12139
12403
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -12180,7 +12444,7 @@ var doWrap = ({
|
|
|
12180
12444
|
modelId,
|
|
12181
12445
|
providerId
|
|
12182
12446
|
}) => {
|
|
12183
|
-
var
|
|
12447
|
+
var _a22, _b, _c;
|
|
12184
12448
|
async function doTransform({
|
|
12185
12449
|
params,
|
|
12186
12450
|
type
|
|
@@ -12189,7 +12453,7 @@ var doWrap = ({
|
|
|
12189
12453
|
}
|
|
12190
12454
|
return {
|
|
12191
12455
|
specificationVersion: "v3",
|
|
12192
|
-
provider: (
|
|
12456
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12193
12457
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12194
12458
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
12195
12459
|
async doGenerate(params) {
|
|
@@ -12236,7 +12500,7 @@ var doWrap2 = ({
|
|
|
12236
12500
|
modelId,
|
|
12237
12501
|
providerId
|
|
12238
12502
|
}) => {
|
|
12239
|
-
var
|
|
12503
|
+
var _a22, _b, _c, _d;
|
|
12240
12504
|
async function doTransform({
|
|
12241
12505
|
params
|
|
12242
12506
|
}) {
|
|
@@ -12244,7 +12508,7 @@ var doWrap2 = ({
|
|
|
12244
12508
|
}
|
|
12245
12509
|
return {
|
|
12246
12510
|
specificationVersion: "v3",
|
|
12247
|
-
provider: (
|
|
12511
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12248
12512
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12249
12513
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
12250
12514
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -12283,11 +12547,11 @@ var doWrap3 = ({
|
|
|
12283
12547
|
modelId,
|
|
12284
12548
|
providerId
|
|
12285
12549
|
}) => {
|
|
12286
|
-
var
|
|
12550
|
+
var _a22, _b, _c;
|
|
12287
12551
|
async function doTransform({ params }) {
|
|
12288
12552
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
12289
12553
|
}
|
|
12290
|
-
const maxImagesPerCallRaw = (
|
|
12554
|
+
const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
|
|
12291
12555
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
12292
12556
|
return {
|
|
12293
12557
|
specificationVersion: "v3",
|
|
@@ -12437,11 +12701,11 @@ function customProvider({
|
|
|
12437
12701
|
var experimental_customProvider = customProvider;
|
|
12438
12702
|
|
|
12439
12703
|
// src/registry/no-such-provider-error.ts
|
|
12440
|
-
import { AISDKError as
|
|
12441
|
-
var
|
|
12442
|
-
var
|
|
12443
|
-
var
|
|
12444
|
-
var
|
|
12704
|
+
import { AISDKError as AISDKError25, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
|
|
12705
|
+
var name21 = "AI_NoSuchProviderError";
|
|
12706
|
+
var marker21 = `vercel.ai.error.${name21}`;
|
|
12707
|
+
var symbol21 = Symbol.for(marker21);
|
|
12708
|
+
var _a21;
|
|
12445
12709
|
var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
12446
12710
|
constructor({
|
|
12447
12711
|
modelId,
|
|
@@ -12450,16 +12714,16 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
|
12450
12714
|
availableProviders,
|
|
12451
12715
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
12452
12716
|
}) {
|
|
12453
|
-
super({ errorName:
|
|
12454
|
-
this[
|
|
12717
|
+
super({ errorName: name21, modelId, modelType, message });
|
|
12718
|
+
this[_a21] = true;
|
|
12455
12719
|
this.providerId = providerId;
|
|
12456
12720
|
this.availableProviders = availableProviders;
|
|
12457
12721
|
}
|
|
12458
12722
|
static isInstance(error) {
|
|
12459
|
-
return
|
|
12723
|
+
return AISDKError25.hasMarker(error, marker21);
|
|
12460
12724
|
}
|
|
12461
12725
|
};
|
|
12462
|
-
|
|
12726
|
+
_a21 = symbol21;
|
|
12463
12727
|
|
|
12464
12728
|
// src/registry/provider-registry.ts
|
|
12465
12729
|
import {
|
|
@@ -12522,10 +12786,10 @@ var DefaultProviderRegistry = class {
|
|
|
12522
12786
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
12523
12787
|
}
|
|
12524
12788
|
languageModel(id) {
|
|
12525
|
-
var
|
|
12789
|
+
var _a22, _b;
|
|
12526
12790
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
12527
|
-
let model = (_b = (
|
|
12528
|
-
|
|
12791
|
+
let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
12792
|
+
_a22,
|
|
12529
12793
|
modelId
|
|
12530
12794
|
);
|
|
12531
12795
|
if (model == null) {
|
|
@@ -12540,10 +12804,10 @@ var DefaultProviderRegistry = class {
|
|
|
12540
12804
|
return model;
|
|
12541
12805
|
}
|
|
12542
12806
|
embeddingModel(id) {
|
|
12543
|
-
var
|
|
12807
|
+
var _a22;
|
|
12544
12808
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
12545
12809
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
12546
|
-
const model = (
|
|
12810
|
+
const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12547
12811
|
if (model == null) {
|
|
12548
12812
|
throw new NoSuchModelError4({
|
|
12549
12813
|
modelId: id,
|
|
@@ -12553,10 +12817,10 @@ var DefaultProviderRegistry = class {
|
|
|
12553
12817
|
return model;
|
|
12554
12818
|
}
|
|
12555
12819
|
imageModel(id) {
|
|
12556
|
-
var
|
|
12820
|
+
var _a22;
|
|
12557
12821
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
12558
12822
|
const provider = this.getProvider(providerId, "imageModel");
|
|
12559
|
-
let model = (
|
|
12823
|
+
let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12560
12824
|
if (model == null) {
|
|
12561
12825
|
throw new NoSuchModelError4({ modelId: id, modelType: "imageModel" });
|
|
12562
12826
|
}
|
|
@@ -12569,10 +12833,10 @@ var DefaultProviderRegistry = class {
|
|
|
12569
12833
|
return model;
|
|
12570
12834
|
}
|
|
12571
12835
|
transcriptionModel(id) {
|
|
12572
|
-
var
|
|
12836
|
+
var _a22;
|
|
12573
12837
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
12574
12838
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
12575
|
-
const model = (
|
|
12839
|
+
const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12576
12840
|
if (model == null) {
|
|
12577
12841
|
throw new NoSuchModelError4({
|
|
12578
12842
|
modelId: id,
|
|
@@ -12582,20 +12846,20 @@ var DefaultProviderRegistry = class {
|
|
|
12582
12846
|
return model;
|
|
12583
12847
|
}
|
|
12584
12848
|
speechModel(id) {
|
|
12585
|
-
var
|
|
12849
|
+
var _a22;
|
|
12586
12850
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
12587
12851
|
const provider = this.getProvider(providerId, "speechModel");
|
|
12588
|
-
const model = (
|
|
12852
|
+
const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12589
12853
|
if (model == null) {
|
|
12590
12854
|
throw new NoSuchModelError4({ modelId: id, modelType: "speechModel" });
|
|
12591
12855
|
}
|
|
12592
12856
|
return model;
|
|
12593
12857
|
}
|
|
12594
12858
|
rerankingModel(id) {
|
|
12595
|
-
var
|
|
12859
|
+
var _a22;
|
|
12596
12860
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
12597
12861
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
12598
|
-
const model = (
|
|
12862
|
+
const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12599
12863
|
if (model == null) {
|
|
12600
12864
|
throw new NoSuchModelError4({ modelId: id, modelType: "rerankingModel" });
|
|
12601
12865
|
}
|
|
@@ -12653,7 +12917,7 @@ async function rerank({
|
|
|
12653
12917
|
}),
|
|
12654
12918
|
tracer,
|
|
12655
12919
|
fn: async () => {
|
|
12656
|
-
var
|
|
12920
|
+
var _a22, _b;
|
|
12657
12921
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
12658
12922
|
() => recordSpan({
|
|
12659
12923
|
name: "ai.rerank.doRerank",
|
|
@@ -12717,7 +12981,7 @@ async function rerank({
|
|
|
12717
12981
|
providerMetadata,
|
|
12718
12982
|
response: {
|
|
12719
12983
|
id: response == null ? void 0 : response.id,
|
|
12720
|
-
timestamp: (
|
|
12984
|
+
timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
|
|
12721
12985
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
12722
12986
|
headers: response == null ? void 0 : response.headers,
|
|
12723
12987
|
body: response == null ? void 0 : response.body
|
|
@@ -12767,16 +13031,16 @@ async function transcribe({
|
|
|
12767
13031
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
12768
13032
|
const result = await retry(
|
|
12769
13033
|
() => {
|
|
12770
|
-
var
|
|
13034
|
+
var _a22;
|
|
12771
13035
|
return resolvedModel.doGenerate({
|
|
12772
13036
|
audio: audioData,
|
|
12773
13037
|
abortSignal,
|
|
12774
13038
|
headers: headersWithUserAgent,
|
|
12775
13039
|
providerOptions,
|
|
12776
|
-
mediaType: (
|
|
13040
|
+
mediaType: (_a22 = detectMediaType({
|
|
12777
13041
|
data: audioData,
|
|
12778
13042
|
signatures: audioMediaTypeSignatures
|
|
12779
|
-
})) != null ?
|
|
13043
|
+
})) != null ? _a22 : "audio/wav"
|
|
12780
13044
|
});
|
|
12781
13045
|
}
|
|
12782
13046
|
);
|
|
@@ -12800,14 +13064,14 @@ async function transcribe({
|
|
|
12800
13064
|
}
|
|
12801
13065
|
var DefaultTranscriptionResult = class {
|
|
12802
13066
|
constructor(options) {
|
|
12803
|
-
var
|
|
13067
|
+
var _a22;
|
|
12804
13068
|
this.text = options.text;
|
|
12805
13069
|
this.segments = options.segments;
|
|
12806
13070
|
this.language = options.language;
|
|
12807
13071
|
this.durationInSeconds = options.durationInSeconds;
|
|
12808
13072
|
this.warnings = options.warnings;
|
|
12809
13073
|
this.responses = options.responses;
|
|
12810
|
-
this.providerMetadata = (
|
|
13074
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
12811
13075
|
}
|
|
12812
13076
|
};
|
|
12813
13077
|
|
|
@@ -12850,7 +13114,7 @@ async function callCompletionApi({
|
|
|
12850
13114
|
onError,
|
|
12851
13115
|
fetch: fetch2 = getOriginalFetch()
|
|
12852
13116
|
}) {
|
|
12853
|
-
var
|
|
13117
|
+
var _a22;
|
|
12854
13118
|
try {
|
|
12855
13119
|
setLoading(true);
|
|
12856
13120
|
setError(void 0);
|
|
@@ -12878,7 +13142,7 @@ async function callCompletionApi({
|
|
|
12878
13142
|
});
|
|
12879
13143
|
if (!response.ok) {
|
|
12880
13144
|
throw new Error(
|
|
12881
|
-
(
|
|
13145
|
+
(_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
|
|
12882
13146
|
);
|
|
12883
13147
|
}
|
|
12884
13148
|
if (!response.body) {
|
|
@@ -12964,12 +13228,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12964
13228
|
}
|
|
12965
13229
|
return Promise.all(
|
|
12966
13230
|
Array.from(files).map(async (file) => {
|
|
12967
|
-
const { name:
|
|
13231
|
+
const { name: name22, type } = file;
|
|
12968
13232
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
12969
13233
|
const reader = new FileReader();
|
|
12970
13234
|
reader.onload = (readerEvent) => {
|
|
12971
|
-
var
|
|
12972
|
-
resolve3((
|
|
13235
|
+
var _a22;
|
|
13236
|
+
resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
|
|
12973
13237
|
};
|
|
12974
13238
|
reader.onerror = (error) => reject(error);
|
|
12975
13239
|
reader.readAsDataURL(file);
|
|
@@ -12977,7 +13241,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12977
13241
|
return {
|
|
12978
13242
|
type: "file",
|
|
12979
13243
|
mediaType: type,
|
|
12980
|
-
filename:
|
|
13244
|
+
filename: name22,
|
|
12981
13245
|
url: dataUrl
|
|
12982
13246
|
};
|
|
12983
13247
|
})
|
|
@@ -13014,7 +13278,7 @@ var HttpChatTransport = class {
|
|
|
13014
13278
|
abortSignal,
|
|
13015
13279
|
...options
|
|
13016
13280
|
}) {
|
|
13017
|
-
var
|
|
13281
|
+
var _a22, _b, _c, _d, _e;
|
|
13018
13282
|
const resolvedBody = await resolve2(this.body);
|
|
13019
13283
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13020
13284
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13022,7 +13286,7 @@ var HttpChatTransport = class {
|
|
|
13022
13286
|
...normalizeHeaders(resolvedHeaders),
|
|
13023
13287
|
...normalizeHeaders(options.headers)
|
|
13024
13288
|
};
|
|
13025
|
-
const preparedRequest = await ((
|
|
13289
|
+
const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
|
|
13026
13290
|
api: this.api,
|
|
13027
13291
|
id: options.chatId,
|
|
13028
13292
|
messages: options.messages,
|
|
@@ -13066,7 +13330,7 @@ var HttpChatTransport = class {
|
|
|
13066
13330
|
return this.processResponseStream(response.body);
|
|
13067
13331
|
}
|
|
13068
13332
|
async reconnectToStream(options) {
|
|
13069
|
-
var
|
|
13333
|
+
var _a22, _b, _c, _d, _e;
|
|
13070
13334
|
const resolvedBody = await resolve2(this.body);
|
|
13071
13335
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13072
13336
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13074,7 +13338,7 @@ var HttpChatTransport = class {
|
|
|
13074
13338
|
...normalizeHeaders(resolvedHeaders),
|
|
13075
13339
|
...normalizeHeaders(options.headers)
|
|
13076
13340
|
};
|
|
13077
|
-
const preparedRequest = await ((
|
|
13341
|
+
const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
|
|
13078
13342
|
api: this.api,
|
|
13079
13343
|
id: options.chatId,
|
|
13080
13344
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -13152,11 +13416,11 @@ var AbstractChat = class {
|
|
|
13152
13416
|
* If a messageId is provided, the message will be replaced.
|
|
13153
13417
|
*/
|
|
13154
13418
|
this.sendMessage = async (message, options) => {
|
|
13155
|
-
var
|
|
13419
|
+
var _a22, _b, _c, _d;
|
|
13156
13420
|
if (message == null) {
|
|
13157
13421
|
await this.makeRequest({
|
|
13158
13422
|
trigger: "submit-message",
|
|
13159
|
-
messageId: (
|
|
13423
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13160
13424
|
...options
|
|
13161
13425
|
});
|
|
13162
13426
|
return;
|
|
@@ -13266,11 +13530,11 @@ var AbstractChat = class {
|
|
|
13266
13530
|
}
|
|
13267
13531
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13268
13532
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13269
|
-
var
|
|
13533
|
+
var _a22;
|
|
13270
13534
|
if (shouldSend) {
|
|
13271
13535
|
this.makeRequest({
|
|
13272
13536
|
trigger: "submit-message",
|
|
13273
|
-
messageId: (
|
|
13537
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13274
13538
|
...options
|
|
13275
13539
|
});
|
|
13276
13540
|
}
|
|
@@ -13296,11 +13560,11 @@ var AbstractChat = class {
|
|
|
13296
13560
|
}
|
|
13297
13561
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13298
13562
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13299
|
-
var
|
|
13563
|
+
var _a22;
|
|
13300
13564
|
if (shouldSend) {
|
|
13301
13565
|
this.makeRequest({
|
|
13302
13566
|
trigger: "submit-message",
|
|
13303
|
-
messageId: (
|
|
13567
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13304
13568
|
...options
|
|
13305
13569
|
});
|
|
13306
13570
|
}
|
|
@@ -13313,10 +13577,10 @@ var AbstractChat = class {
|
|
|
13313
13577
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
13314
13578
|
*/
|
|
13315
13579
|
this.stop = async () => {
|
|
13316
|
-
var
|
|
13580
|
+
var _a22;
|
|
13317
13581
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
13318
13582
|
return;
|
|
13319
|
-
if ((
|
|
13583
|
+
if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
|
|
13320
13584
|
this.activeResponse.abortController.abort();
|
|
13321
13585
|
}
|
|
13322
13586
|
};
|
|
@@ -13382,7 +13646,7 @@ var AbstractChat = class {
|
|
|
13382
13646
|
body,
|
|
13383
13647
|
messageId
|
|
13384
13648
|
}) {
|
|
13385
|
-
var
|
|
13649
|
+
var _a22, _b, _c;
|
|
13386
13650
|
let resumeStream;
|
|
13387
13651
|
if (trigger === "resume-stream") {
|
|
13388
13652
|
try {
|
|
@@ -13442,9 +13706,9 @@ var AbstractChat = class {
|
|
|
13442
13706
|
() => job({
|
|
13443
13707
|
state: activeResponse.state,
|
|
13444
13708
|
write: () => {
|
|
13445
|
-
var
|
|
13709
|
+
var _a23;
|
|
13446
13710
|
this.setStatus({ status: "streaming" });
|
|
13447
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
13711
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
|
|
13448
13712
|
if (replaceLastMessage) {
|
|
13449
13713
|
this.state.replaceMessage(
|
|
13450
13714
|
this.state.messages.length - 1,
|
|
@@ -13496,7 +13760,7 @@ var AbstractChat = class {
|
|
|
13496
13760
|
isAbort,
|
|
13497
13761
|
isDisconnect,
|
|
13498
13762
|
isError,
|
|
13499
|
-
finishReason: (
|
|
13763
|
+
finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
|
|
13500
13764
|
});
|
|
13501
13765
|
} catch (err) {
|
|
13502
13766
|
console.error(err);
|
|
@@ -13634,7 +13898,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
13634
13898
|
}
|
|
13635
13899
|
};
|
|
13636
13900
|
export {
|
|
13637
|
-
|
|
13901
|
+
AISDKError22 as AISDKError,
|
|
13638
13902
|
APICallError,
|
|
13639
13903
|
AbstractChat,
|
|
13640
13904
|
DefaultChatTransport,
|
|
@@ -13651,6 +13915,7 @@ export {
|
|
|
13651
13915
|
InvalidResponseDataError,
|
|
13652
13916
|
InvalidStreamPartError,
|
|
13653
13917
|
InvalidToolApprovalError,
|
|
13918
|
+
InvalidToolApprovalSignatureError,
|
|
13654
13919
|
InvalidToolInputError,
|
|
13655
13920
|
JSONParseError,
|
|
13656
13921
|
JsonToSseTransformStream,
|
|
@@ -13682,7 +13947,7 @@ export {
|
|
|
13682
13947
|
UnsupportedFunctionalityError,
|
|
13683
13948
|
UnsupportedModelVersionError,
|
|
13684
13949
|
addToolInputExamplesMiddleware,
|
|
13685
|
-
|
|
13950
|
+
asSchema6 as asSchema,
|
|
13686
13951
|
assistantModelMessageSchema,
|
|
13687
13952
|
bindTelemetryIntegration,
|
|
13688
13953
|
callCompletionApi,
|