ai 6.0.200 → 6.0.202
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 +22 -0
- package/dist/index.d.mts +58 -13
- package/dist/index.d.ts +58 -13
- package/dist/index.js +839 -576
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +677 -409
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +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 +6 -6
- package/src/error/index.ts +1 -0
- package/src/error/invalid-tool-approval-signature-error.ts +35 -0
- package/src/generate-object/output-strategy.ts +3 -1
- 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 +41 -6
- 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/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/ui-message-chunks.ts +2 -0
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
|
|
@@ -1144,7 +1170,7 @@ import {
|
|
|
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.202" : "0.0.0-test";
|
|
1148
1174
|
|
|
1149
1175
|
// src/util/download/download.ts
|
|
1150
1176
|
var download = async ({
|
|
@@ -1152,7 +1178,7 @@ var download = async ({
|
|
|
1152
1178
|
maxBytes,
|
|
1153
1179
|
abortSignal
|
|
1154
1180
|
}) => {
|
|
1155
|
-
var
|
|
1181
|
+
var _a22;
|
|
1156
1182
|
const urlText = url.toString();
|
|
1157
1183
|
validateDownloadUrl(urlText);
|
|
1158
1184
|
try {
|
|
@@ -1181,7 +1207,7 @@ var download = async ({
|
|
|
1181
1207
|
});
|
|
1182
1208
|
return {
|
|
1183
1209
|
data,
|
|
1184
|
-
mediaType: (
|
|
1210
|
+
mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
|
|
1185
1211
|
};
|
|
1186
1212
|
} catch (error) {
|
|
1187
1213
|
if (DownloadError2.isInstance(error)) {
|
|
@@ -1199,7 +1225,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
1199
1225
|
);
|
|
1200
1226
|
|
|
1201
1227
|
// src/prompt/data-content.ts
|
|
1202
|
-
import { AISDKError as
|
|
1228
|
+
import { AISDKError as AISDKError23 } from "@ai-sdk/provider";
|
|
1203
1229
|
import {
|
|
1204
1230
|
convertBase64ToUint8Array as convertBase64ToUint8Array2,
|
|
1205
1231
|
convertUint8ArrayToBase64
|
|
@@ -1230,8 +1256,8 @@ var dataContentSchema = z.union([
|
|
|
1230
1256
|
z.custom(
|
|
1231
1257
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
1232
1258
|
(value) => {
|
|
1233
|
-
var
|
|
1234
|
-
return (_b = (
|
|
1259
|
+
var _a22, _b;
|
|
1260
|
+
return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
|
|
1235
1261
|
},
|
|
1236
1262
|
{ message: "Must be a Buffer" }
|
|
1237
1263
|
)
|
|
@@ -1254,7 +1280,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1254
1280
|
content.toString()
|
|
1255
1281
|
);
|
|
1256
1282
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
1257
|
-
throw new
|
|
1283
|
+
throw new AISDKError23({
|
|
1258
1284
|
name: "InvalidDataContentError",
|
|
1259
1285
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
1260
1286
|
});
|
|
@@ -1537,7 +1563,7 @@ function convertToLanguageModelMessage({
|
|
|
1537
1563
|
}
|
|
1538
1564
|
}
|
|
1539
1565
|
async function downloadAssets(messages, download2, supportedUrls) {
|
|
1540
|
-
var
|
|
1566
|
+
var _a22;
|
|
1541
1567
|
const downloadableFiles = [];
|
|
1542
1568
|
for (const message of messages) {
|
|
1543
1569
|
if (message.role === "user" && Array.isArray(message.content)) {
|
|
@@ -1545,7 +1571,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1545
1571
|
if (part.type === "image" || part.type === "file") {
|
|
1546
1572
|
downloadableFiles.push({
|
|
1547
1573
|
data: part.type === "image" ? part.image : part.data,
|
|
1548
|
-
mediaType: (
|
|
1574
|
+
mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
|
|
1549
1575
|
});
|
|
1550
1576
|
}
|
|
1551
1577
|
}
|
|
@@ -1597,7 +1623,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1597
1623
|
);
|
|
1598
1624
|
}
|
|
1599
1625
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1600
|
-
var
|
|
1626
|
+
var _a22;
|
|
1601
1627
|
if (part.type === "text") {
|
|
1602
1628
|
return {
|
|
1603
1629
|
type: "text",
|
|
@@ -1630,7 +1656,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1630
1656
|
switch (type) {
|
|
1631
1657
|
case "image": {
|
|
1632
1658
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1633
|
-
mediaType = (
|
|
1659
|
+
mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
|
|
1634
1660
|
}
|
|
1635
1661
|
return {
|
|
1636
1662
|
type: "file",
|
|
@@ -1665,14 +1691,14 @@ function mapToolResultOutput({
|
|
|
1665
1691
|
return {
|
|
1666
1692
|
type: "content",
|
|
1667
1693
|
value: output.value.map((item) => {
|
|
1668
|
-
var
|
|
1694
|
+
var _a22, _b;
|
|
1669
1695
|
if (item.type === "image-url") {
|
|
1670
1696
|
const downloadedFile = downloadedAssets[new URL(item.url).toString()];
|
|
1671
1697
|
if (downloadedFile) {
|
|
1672
1698
|
return {
|
|
1673
1699
|
type: "image-data",
|
|
1674
1700
|
data: convertDataContentToBase64String(downloadedFile.data),
|
|
1675
|
-
mediaType: (
|
|
1701
|
+
mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
|
|
1676
1702
|
providerOptions: item.providerOptions
|
|
1677
1703
|
};
|
|
1678
1704
|
}
|
|
@@ -1846,10 +1872,10 @@ async function prepareToolsAndToolChoice({
|
|
|
1846
1872
|
};
|
|
1847
1873
|
}
|
|
1848
1874
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
1849
|
-
([
|
|
1875
|
+
([name22]) => activeTools.includes(name22)
|
|
1850
1876
|
) : Object.entries(tools);
|
|
1851
1877
|
const languageModelTools = [];
|
|
1852
|
-
for (const [
|
|
1878
|
+
for (const [name22, tool2] of filteredTools) {
|
|
1853
1879
|
const toolType = tool2.type;
|
|
1854
1880
|
switch (toolType) {
|
|
1855
1881
|
case void 0:
|
|
@@ -1857,7 +1883,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1857
1883
|
case "function":
|
|
1858
1884
|
languageModelTools.push({
|
|
1859
1885
|
type: "function",
|
|
1860
|
-
name:
|
|
1886
|
+
name: name22,
|
|
1861
1887
|
description: tool2.description,
|
|
1862
1888
|
inputSchema: await asSchema(tool2.inputSchema).jsonSchema,
|
|
1863
1889
|
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
@@ -1868,7 +1894,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1868
1894
|
case "provider":
|
|
1869
1895
|
languageModelTools.push({
|
|
1870
1896
|
type: "provider",
|
|
1871
|
-
name:
|
|
1897
|
+
name: name22,
|
|
1872
1898
|
id: tool2.id,
|
|
1873
1899
|
args: tool2.args
|
|
1874
1900
|
});
|
|
@@ -2168,14 +2194,14 @@ async function standardizePrompt({
|
|
|
2168
2194
|
|
|
2169
2195
|
// src/prompt/wrap-gateway-error.ts
|
|
2170
2196
|
import { GatewayAuthenticationError } from "@ai-sdk/gateway";
|
|
2171
|
-
import { AISDKError as
|
|
2197
|
+
import { AISDKError as AISDKError24 } from "@ai-sdk/provider";
|
|
2172
2198
|
function wrapGatewayError(error) {
|
|
2173
2199
|
if (!GatewayAuthenticationError.isInstance(error))
|
|
2174
2200
|
return error;
|
|
2175
2201
|
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
2176
2202
|
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
2177
2203
|
if (isProductionEnv) {
|
|
2178
|
-
return new
|
|
2204
|
+
return new AISDKError24({
|
|
2179
2205
|
name: "GatewayError",
|
|
2180
2206
|
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
2181
2207
|
});
|
|
@@ -2216,7 +2242,7 @@ function getBaseTelemetryAttributes({
|
|
|
2216
2242
|
telemetry,
|
|
2217
2243
|
headers
|
|
2218
2244
|
}) {
|
|
2219
|
-
var
|
|
2245
|
+
var _a22;
|
|
2220
2246
|
return {
|
|
2221
2247
|
"ai.model.provider": model.provider,
|
|
2222
2248
|
"ai.model.id": model.modelId,
|
|
@@ -2235,7 +2261,7 @@ function getBaseTelemetryAttributes({
|
|
|
2235
2261
|
return attributes;
|
|
2236
2262
|
}, {}),
|
|
2237
2263
|
// add metadata as attributes:
|
|
2238
|
-
...Object.entries((
|
|
2264
|
+
...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
|
|
2239
2265
|
(attributes, [key, value]) => {
|
|
2240
2266
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
2241
2267
|
return attributes;
|
|
@@ -2260,7 +2286,7 @@ var noopTracer = {
|
|
|
2260
2286
|
startSpan() {
|
|
2261
2287
|
return noopSpan;
|
|
2262
2288
|
},
|
|
2263
|
-
startActiveSpan(
|
|
2289
|
+
startActiveSpan(name22, arg1, arg2, arg3) {
|
|
2264
2290
|
if (typeof arg1 === "function") {
|
|
2265
2291
|
return arg1(noopSpan);
|
|
2266
2292
|
}
|
|
@@ -2333,14 +2359,14 @@ import {
|
|
|
2333
2359
|
context
|
|
2334
2360
|
} from "@opentelemetry/api";
|
|
2335
2361
|
async function recordSpan({
|
|
2336
|
-
name:
|
|
2362
|
+
name: name22,
|
|
2337
2363
|
tracer,
|
|
2338
2364
|
attributes,
|
|
2339
2365
|
fn,
|
|
2340
2366
|
endWhenDone = true
|
|
2341
2367
|
}) {
|
|
2342
2368
|
return tracer.startActiveSpan(
|
|
2343
|
-
|
|
2369
|
+
name22,
|
|
2344
2370
|
{ attributes: await attributes },
|
|
2345
2371
|
async (span) => {
|
|
2346
2372
|
const ctx = context.active();
|
|
@@ -2438,15 +2464,15 @@ function registerTelemetryIntegration(integration) {
|
|
|
2438
2464
|
globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
|
|
2439
2465
|
}
|
|
2440
2466
|
function getGlobalTelemetryIntegrations() {
|
|
2441
|
-
var
|
|
2442
|
-
return (
|
|
2467
|
+
var _a22;
|
|
2468
|
+
return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
|
|
2443
2469
|
}
|
|
2444
2470
|
|
|
2445
2471
|
// src/telemetry/get-global-telemetry-integration.ts
|
|
2446
2472
|
function bindTelemetryIntegration(integration) {
|
|
2447
|
-
var
|
|
2473
|
+
var _a22, _b, _c, _d, _e, _f;
|
|
2448
2474
|
return {
|
|
2449
|
-
onStart: (
|
|
2475
|
+
onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
|
|
2450
2476
|
onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
|
|
2451
2477
|
onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
|
|
2452
2478
|
onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
|
|
@@ -2530,12 +2556,12 @@ function createNullLanguageModelUsage() {
|
|
|
2530
2556
|
};
|
|
2531
2557
|
}
|
|
2532
2558
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2533
|
-
var
|
|
2559
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2534
2560
|
return {
|
|
2535
2561
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2536
2562
|
inputTokenDetails: {
|
|
2537
2563
|
noCacheTokens: addTokenCounts(
|
|
2538
|
-
(
|
|
2564
|
+
(_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
2539
2565
|
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2540
2566
|
),
|
|
2541
2567
|
cacheReadTokens: addTokenCounts(
|
|
@@ -2826,8 +2852,8 @@ import { executeTool } from "@ai-sdk/provider-utils";
|
|
|
2826
2852
|
|
|
2827
2853
|
// src/util/now.ts
|
|
2828
2854
|
function now() {
|
|
2829
|
-
var
|
|
2830
|
-
return (_b = (
|
|
2855
|
+
var _a22, _b;
|
|
2856
|
+
return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
|
|
2831
2857
|
}
|
|
2832
2858
|
|
|
2833
2859
|
// src/generate-text/execute-tool-call.ts
|
|
@@ -3040,6 +3066,176 @@ async function isApprovalNeeded({
|
|
|
3040
3066
|
});
|
|
3041
3067
|
}
|
|
3042
3068
|
|
|
3069
|
+
// src/generate-text/tool-approval-signature.ts
|
|
3070
|
+
import {
|
|
3071
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array4,
|
|
3072
|
+
convertUint8ArrayToBase64 as convertUint8ArrayToBase643
|
|
3073
|
+
} from "@ai-sdk/provider-utils";
|
|
3074
|
+
var encoder = new TextEncoder();
|
|
3075
|
+
function canonicalJSON(value) {
|
|
3076
|
+
if (value === null || value === void 0) {
|
|
3077
|
+
return JSON.stringify(value);
|
|
3078
|
+
}
|
|
3079
|
+
if (typeof value !== "object") {
|
|
3080
|
+
return JSON.stringify(value);
|
|
3081
|
+
}
|
|
3082
|
+
if (Array.isArray(value)) {
|
|
3083
|
+
return `[${value.map(canonicalJSON).join(",")}]`;
|
|
3084
|
+
}
|
|
3085
|
+
const keys = Object.keys(value).sort();
|
|
3086
|
+
const entries = keys.map(
|
|
3087
|
+
(k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`
|
|
3088
|
+
);
|
|
3089
|
+
return `{${entries.join(",")}}`;
|
|
3090
|
+
}
|
|
3091
|
+
function toBase64url(bytes) {
|
|
3092
|
+
return convertUint8ArrayToBase643(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
3093
|
+
}
|
|
3094
|
+
function fromBase64url(str) {
|
|
3095
|
+
return convertBase64ToUint8Array4(str);
|
|
3096
|
+
}
|
|
3097
|
+
async function importKey(secret) {
|
|
3098
|
+
const keyData = typeof secret === "string" ? encoder.encode(secret) : secret;
|
|
3099
|
+
return crypto.subtle.importKey(
|
|
3100
|
+
"raw",
|
|
3101
|
+
keyData,
|
|
3102
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
3103
|
+
false,
|
|
3104
|
+
["sign", "verify"]
|
|
3105
|
+
);
|
|
3106
|
+
}
|
|
3107
|
+
async function hashInput(input) {
|
|
3108
|
+
const canonical = canonicalJSON(input);
|
|
3109
|
+
const digest = await crypto.subtle.digest(
|
|
3110
|
+
"SHA-256",
|
|
3111
|
+
encoder.encode(canonical)
|
|
3112
|
+
);
|
|
3113
|
+
return toBase64url(new Uint8Array(digest));
|
|
3114
|
+
}
|
|
3115
|
+
function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
3116
|
+
return encoder.encode(
|
|
3117
|
+
`${approvalId}
|
|
3118
|
+
${toolCallId}
|
|
3119
|
+
${toolName}
|
|
3120
|
+
${inputDigest}`
|
|
3121
|
+
);
|
|
3122
|
+
}
|
|
3123
|
+
async function signToolApproval({
|
|
3124
|
+
secret,
|
|
3125
|
+
approvalId,
|
|
3126
|
+
toolCallId,
|
|
3127
|
+
toolName,
|
|
3128
|
+
input
|
|
3129
|
+
}) {
|
|
3130
|
+
const key = await importKey(secret);
|
|
3131
|
+
const inputDigest = await hashInput(input);
|
|
3132
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3133
|
+
const sig = await crypto.subtle.sign("HMAC", key, payload);
|
|
3134
|
+
return toBase64url(new Uint8Array(sig));
|
|
3135
|
+
}
|
|
3136
|
+
async function verifyToolApprovalSignature({
|
|
3137
|
+
secret,
|
|
3138
|
+
signature,
|
|
3139
|
+
approvalId,
|
|
3140
|
+
toolCallId,
|
|
3141
|
+
toolName,
|
|
3142
|
+
input
|
|
3143
|
+
}) {
|
|
3144
|
+
const key = await importKey(secret);
|
|
3145
|
+
const inputDigest = await hashInput(input);
|
|
3146
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3147
|
+
const sigBytes = fromBase64url(signature);
|
|
3148
|
+
return crypto.subtle.verify("HMAC", key, sigBytes, payload);
|
|
3149
|
+
}
|
|
3150
|
+
async function maybeSignApproval({
|
|
3151
|
+
secret,
|
|
3152
|
+
approvalId,
|
|
3153
|
+
toolCallId,
|
|
3154
|
+
toolName,
|
|
3155
|
+
input
|
|
3156
|
+
}) {
|
|
3157
|
+
if (secret == null)
|
|
3158
|
+
return void 0;
|
|
3159
|
+
return signToolApproval({ secret, approvalId, toolCallId, toolName, input });
|
|
3160
|
+
}
|
|
3161
|
+
|
|
3162
|
+
// src/generate-text/validate-tool-approvals.ts
|
|
3163
|
+
import {
|
|
3164
|
+
asSchema as asSchema2,
|
|
3165
|
+
safeValidateTypes as safeValidateTypes2
|
|
3166
|
+
} from "@ai-sdk/provider-utils";
|
|
3167
|
+
async function validateApprovedToolApprovals({
|
|
3168
|
+
approvedToolApprovals,
|
|
3169
|
+
tools,
|
|
3170
|
+
messages,
|
|
3171
|
+
experimental_context,
|
|
3172
|
+
toolApprovalSecret
|
|
3173
|
+
}) {
|
|
3174
|
+
var _a22;
|
|
3175
|
+
const approved = [];
|
|
3176
|
+
const denied = [];
|
|
3177
|
+
for (const approval of approvedToolApprovals) {
|
|
3178
|
+
const { toolCall, approvalRequest } = approval;
|
|
3179
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3180
|
+
if (toolApprovalSecret != null) {
|
|
3181
|
+
if (approvalRequest.signature == null) {
|
|
3182
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3183
|
+
approvalId: approvalRequest.approvalId,
|
|
3184
|
+
toolCallId: toolCall.toolCallId,
|
|
3185
|
+
reason: "missing signature"
|
|
3186
|
+
});
|
|
3187
|
+
}
|
|
3188
|
+
const valid = await verifyToolApprovalSignature({
|
|
3189
|
+
secret: toolApprovalSecret,
|
|
3190
|
+
signature: approvalRequest.signature,
|
|
3191
|
+
approvalId: approvalRequest.approvalId,
|
|
3192
|
+
toolCallId: toolCall.toolCallId,
|
|
3193
|
+
toolName: toolCall.toolName,
|
|
3194
|
+
input: toolCall.input
|
|
3195
|
+
});
|
|
3196
|
+
if (!valid) {
|
|
3197
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3198
|
+
approvalId: approvalRequest.approvalId,
|
|
3199
|
+
toolCallId: toolCall.toolCallId,
|
|
3200
|
+
reason: "invalid signature"
|
|
3201
|
+
});
|
|
3202
|
+
}
|
|
3203
|
+
}
|
|
3204
|
+
if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
|
|
3205
|
+
const validation = await safeValidateTypes2({
|
|
3206
|
+
value: toolCall.input,
|
|
3207
|
+
schema: asSchema2(tool2.inputSchema)
|
|
3208
|
+
});
|
|
3209
|
+
if (!validation.success) {
|
|
3210
|
+
throw new InvalidToolInputError({
|
|
3211
|
+
toolName: toolCall.toolName,
|
|
3212
|
+
toolInput: JSON.stringify(toolCall.input),
|
|
3213
|
+
cause: validation.error
|
|
3214
|
+
});
|
|
3215
|
+
}
|
|
3216
|
+
}
|
|
3217
|
+
const approvalNeeded = tool2 != null && await isApprovalNeeded({
|
|
3218
|
+
tool: tool2,
|
|
3219
|
+
toolCall,
|
|
3220
|
+
messages,
|
|
3221
|
+
experimental_context
|
|
3222
|
+
});
|
|
3223
|
+
if (approvalNeeded) {
|
|
3224
|
+
approved.push(approval);
|
|
3225
|
+
} else {
|
|
3226
|
+
denied.push({
|
|
3227
|
+
...approval,
|
|
3228
|
+
approvalResponse: {
|
|
3229
|
+
...approval.approvalResponse,
|
|
3230
|
+
approved: false,
|
|
3231
|
+
reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
|
|
3232
|
+
}
|
|
3233
|
+
});
|
|
3234
|
+
}
|
|
3235
|
+
}
|
|
3236
|
+
return { approvedToolApprovals: approved, deniedToolApprovals: denied };
|
|
3237
|
+
}
|
|
3238
|
+
|
|
3043
3239
|
// src/generate-text/output.ts
|
|
3044
3240
|
var output_exports = {};
|
|
3045
3241
|
__export(output_exports, {
|
|
@@ -3053,10 +3249,10 @@ import {
|
|
|
3053
3249
|
TypeValidationError as TypeValidationError2
|
|
3054
3250
|
} from "@ai-sdk/provider";
|
|
3055
3251
|
import {
|
|
3056
|
-
asSchema as
|
|
3252
|
+
asSchema as asSchema3,
|
|
3057
3253
|
resolve,
|
|
3058
3254
|
safeParseJSON as safeParseJSON2,
|
|
3059
|
-
safeValidateTypes as
|
|
3255
|
+
safeValidateTypes as safeValidateTypes3
|
|
3060
3256
|
} from "@ai-sdk/provider-utils";
|
|
3061
3257
|
|
|
3062
3258
|
// src/util/parse-partial-json.ts
|
|
@@ -3412,16 +3608,16 @@ var text = () => ({
|
|
|
3412
3608
|
});
|
|
3413
3609
|
var object = ({
|
|
3414
3610
|
schema: inputSchema,
|
|
3415
|
-
name:
|
|
3611
|
+
name: name22,
|
|
3416
3612
|
description
|
|
3417
3613
|
}) => {
|
|
3418
|
-
const schema =
|
|
3614
|
+
const schema = asSchema3(inputSchema);
|
|
3419
3615
|
return {
|
|
3420
3616
|
name: "object",
|
|
3421
3617
|
responseFormat: resolve(schema.jsonSchema).then((jsonSchema2) => ({
|
|
3422
3618
|
type: "json",
|
|
3423
3619
|
schema: jsonSchema2,
|
|
3424
|
-
...
|
|
3620
|
+
...name22 != null && { name: name22 },
|
|
3425
3621
|
...description != null && { description }
|
|
3426
3622
|
})),
|
|
3427
3623
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3436,7 +3632,7 @@ var object = ({
|
|
|
3436
3632
|
finishReason: context2.finishReason
|
|
3437
3633
|
});
|
|
3438
3634
|
}
|
|
3439
|
-
const validationResult = await
|
|
3635
|
+
const validationResult = await safeValidateTypes3({
|
|
3440
3636
|
value: parseResult.value,
|
|
3441
3637
|
schema
|
|
3442
3638
|
});
|
|
@@ -3475,10 +3671,10 @@ var object = ({
|
|
|
3475
3671
|
};
|
|
3476
3672
|
var array = ({
|
|
3477
3673
|
element: inputElementSchema,
|
|
3478
|
-
name:
|
|
3674
|
+
name: name22,
|
|
3479
3675
|
description
|
|
3480
3676
|
}) => {
|
|
3481
|
-
const elementSchema =
|
|
3677
|
+
const elementSchema = asSchema3(inputElementSchema);
|
|
3482
3678
|
return {
|
|
3483
3679
|
name: "array",
|
|
3484
3680
|
// JSON schema that describes an array of elements:
|
|
@@ -3495,7 +3691,7 @@ var array = ({
|
|
|
3495
3691
|
required: ["elements"],
|
|
3496
3692
|
additionalProperties: false
|
|
3497
3693
|
},
|
|
3498
|
-
...
|
|
3694
|
+
...name22 != null && { name: name22 },
|
|
3499
3695
|
...description != null && { description }
|
|
3500
3696
|
};
|
|
3501
3697
|
}),
|
|
@@ -3526,7 +3722,7 @@ var array = ({
|
|
|
3526
3722
|
});
|
|
3527
3723
|
}
|
|
3528
3724
|
for (const element of outerValue.elements) {
|
|
3529
|
-
const validationResult = await
|
|
3725
|
+
const validationResult = await safeValidateTypes3({
|
|
3530
3726
|
value: element,
|
|
3531
3727
|
schema: elementSchema
|
|
3532
3728
|
});
|
|
@@ -3559,7 +3755,7 @@ var array = ({
|
|
|
3559
3755
|
const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
|
|
3560
3756
|
const parsedElements = [];
|
|
3561
3757
|
for (const rawElement of rawElements) {
|
|
3562
|
-
const validationResult = await
|
|
3758
|
+
const validationResult = await safeValidateTypes3({
|
|
3563
3759
|
value: rawElement,
|
|
3564
3760
|
schema: elementSchema
|
|
3565
3761
|
});
|
|
@@ -3587,7 +3783,7 @@ var array = ({
|
|
|
3587
3783
|
};
|
|
3588
3784
|
var choice = ({
|
|
3589
3785
|
options: choiceOptions,
|
|
3590
|
-
name:
|
|
3786
|
+
name: name22,
|
|
3591
3787
|
description
|
|
3592
3788
|
}) => {
|
|
3593
3789
|
return {
|
|
@@ -3604,7 +3800,7 @@ var choice = ({
|
|
|
3604
3800
|
required: ["result"],
|
|
3605
3801
|
additionalProperties: false
|
|
3606
3802
|
},
|
|
3607
|
-
...
|
|
3803
|
+
...name22 != null && { name: name22 },
|
|
3608
3804
|
...description != null && { description }
|
|
3609
3805
|
}),
|
|
3610
3806
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3665,14 +3861,14 @@ var choice = ({
|
|
|
3665
3861
|
};
|
|
3666
3862
|
};
|
|
3667
3863
|
var json = ({
|
|
3668
|
-
name:
|
|
3864
|
+
name: name22,
|
|
3669
3865
|
description
|
|
3670
3866
|
} = {}) => {
|
|
3671
3867
|
return {
|
|
3672
3868
|
name: "json",
|
|
3673
3869
|
responseFormat: Promise.resolve({
|
|
3674
3870
|
type: "json",
|
|
3675
|
-
...
|
|
3871
|
+
...name22 != null && { name: name22 },
|
|
3676
3872
|
...description != null && { description }
|
|
3677
3873
|
}),
|
|
3678
3874
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3710,9 +3906,9 @@ var json = ({
|
|
|
3710
3906
|
|
|
3711
3907
|
// src/generate-text/parse-tool-call.ts
|
|
3712
3908
|
import {
|
|
3713
|
-
asSchema as
|
|
3909
|
+
asSchema as asSchema4,
|
|
3714
3910
|
safeParseJSON as safeParseJSON3,
|
|
3715
|
-
safeValidateTypes as
|
|
3911
|
+
safeValidateTypes as safeValidateTypes4
|
|
3716
3912
|
} from "@ai-sdk/provider-utils";
|
|
3717
3913
|
async function parseToolCall({
|
|
3718
3914
|
toolCall,
|
|
@@ -3741,7 +3937,7 @@ async function parseToolCall({
|
|
|
3741
3937
|
tools,
|
|
3742
3938
|
inputSchema: async ({ toolName }) => {
|
|
3743
3939
|
const { inputSchema } = tools[toolName];
|
|
3744
|
-
return await
|
|
3940
|
+
return await asSchema4(inputSchema).jsonSchema;
|
|
3745
3941
|
},
|
|
3746
3942
|
system,
|
|
3747
3943
|
messages,
|
|
@@ -3811,8 +4007,8 @@ async function doParseToolCall({
|
|
|
3811
4007
|
availableTools: Object.keys(tools)
|
|
3812
4008
|
});
|
|
3813
4009
|
}
|
|
3814
|
-
const schema =
|
|
3815
|
-
const parseResult = toolCall.input.trim() === "" ? await
|
|
4010
|
+
const schema = asSchema4(tool2.inputSchema);
|
|
4011
|
+
const parseResult = toolCall.input.trim() === "" ? await safeValidateTypes4({ value: {}, schema }) : await safeParseJSON3({ text: toolCall.input, schema });
|
|
3816
4012
|
if (parseResult.success === false) {
|
|
3817
4013
|
throw new InvalidToolInputError({
|
|
3818
4014
|
toolName,
|
|
@@ -3925,8 +4121,8 @@ function isLoopFinished() {
|
|
|
3925
4121
|
}
|
|
3926
4122
|
function hasToolCall(toolName) {
|
|
3927
4123
|
return ({ steps }) => {
|
|
3928
|
-
var
|
|
3929
|
-
return (_c = (_b = (
|
|
4124
|
+
var _a22, _b, _c;
|
|
4125
|
+
return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
|
|
3930
4126
|
(toolCall) => toolCall.toolName === toolName
|
|
3931
4127
|
)) != null ? _c : false;
|
|
3932
4128
|
};
|
|
@@ -4026,7 +4222,8 @@ async function toResponseMessages({
|
|
|
4026
4222
|
content.push({
|
|
4027
4223
|
type: "tool-approval-request",
|
|
4028
4224
|
approvalId: part.approvalId,
|
|
4029
|
-
toolCallId: part.toolCall.toolCallId
|
|
4225
|
+
toolCallId: part.toolCall.toolCallId,
|
|
4226
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
4030
4227
|
});
|
|
4031
4228
|
break;
|
|
4032
4229
|
}
|
|
@@ -4123,6 +4320,7 @@ async function generateText({
|
|
|
4123
4320
|
experimental_repairToolCall: repairToolCall,
|
|
4124
4321
|
experimental_download: download2,
|
|
4125
4322
|
experimental_context,
|
|
4323
|
+
experimental_toolApprovalSecret,
|
|
4126
4324
|
experimental_include: include,
|
|
4127
4325
|
_internal: { generateId: generateId2 = originalGenerateId } = {},
|
|
4128
4326
|
experimental_onStart: onStart,
|
|
@@ -4224,13 +4422,29 @@ async function generateText({
|
|
|
4224
4422
|
}),
|
|
4225
4423
|
tracer,
|
|
4226
4424
|
fn: async (span) => {
|
|
4227
|
-
var
|
|
4425
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
4228
4426
|
const initialMessages = initialPrompt.messages;
|
|
4229
4427
|
const responseMessages = [];
|
|
4230
|
-
const {
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
);
|
|
4428
|
+
const {
|
|
4429
|
+
approvedToolApprovals,
|
|
4430
|
+
deniedToolApprovals: collectedDeniedToolApprovals
|
|
4431
|
+
} = collectToolApprovals({ messages: initialMessages });
|
|
4432
|
+
const {
|
|
4433
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
4434
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
4435
|
+
} = await validateApprovedToolApprovals({
|
|
4436
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
4437
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
4438
|
+
),
|
|
4439
|
+
tools,
|
|
4440
|
+
messages: initialMessages,
|
|
4441
|
+
experimental_context,
|
|
4442
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
4443
|
+
});
|
|
4444
|
+
const deniedToolApprovals = [
|
|
4445
|
+
...collectedDeniedToolApprovals,
|
|
4446
|
+
...revalidationDeniedToolApprovals
|
|
4447
|
+
];
|
|
4234
4448
|
if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
|
|
4235
4449
|
const toolOutputs = await executeTools({
|
|
4236
4450
|
toolCalls: localApprovedToolApprovals.map(
|
|
@@ -4311,7 +4525,7 @@ async function generateText({
|
|
|
4311
4525
|
experimental_context
|
|
4312
4526
|
}));
|
|
4313
4527
|
const stepModel = resolveLanguageModel(
|
|
4314
|
-
(
|
|
4528
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
4315
4529
|
);
|
|
4316
4530
|
const stepModelInfo = {
|
|
4317
4531
|
provider: stepModel.provider,
|
|
@@ -4366,7 +4580,7 @@ async function generateText({
|
|
|
4366
4580
|
});
|
|
4367
4581
|
currentModelResponse = await retry(
|
|
4368
4582
|
() => {
|
|
4369
|
-
var
|
|
4583
|
+
var _a23;
|
|
4370
4584
|
return recordSpan({
|
|
4371
4585
|
name: "ai.generateText.doGenerate",
|
|
4372
4586
|
attributes: selectTelemetryAttributes({
|
|
@@ -4398,14 +4612,14 @@ async function generateText({
|
|
|
4398
4612
|
"gen_ai.request.max_tokens": settings.maxOutputTokens,
|
|
4399
4613
|
"gen_ai.request.presence_penalty": settings.presencePenalty,
|
|
4400
4614
|
"gen_ai.request.stop_sequences": settings.stopSequences,
|
|
4401
|
-
"gen_ai.request.temperature": (
|
|
4615
|
+
"gen_ai.request.temperature": (_a23 = settings.temperature) != null ? _a23 : void 0,
|
|
4402
4616
|
"gen_ai.request.top_k": settings.topK,
|
|
4403
4617
|
"gen_ai.request.top_p": settings.topP
|
|
4404
4618
|
}
|
|
4405
4619
|
}),
|
|
4406
4620
|
tracer,
|
|
4407
4621
|
fn: async (span2) => {
|
|
4408
|
-
var
|
|
4622
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
4409
4623
|
const result = await stepModel.doGenerate({
|
|
4410
4624
|
...callSettings2,
|
|
4411
4625
|
tools: stepTools,
|
|
@@ -4417,7 +4631,7 @@ async function generateText({
|
|
|
4417
4631
|
headers: headersWithUserAgent
|
|
4418
4632
|
});
|
|
4419
4633
|
const responseData = {
|
|
4420
|
-
id: (_b2 = (
|
|
4634
|
+
id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
|
|
4421
4635
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
|
|
4422
4636
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
4423
4637
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
@@ -4510,10 +4724,19 @@ async function generateText({
|
|
|
4510
4724
|
messages: stepInputMessages,
|
|
4511
4725
|
experimental_context
|
|
4512
4726
|
})) {
|
|
4727
|
+
const approvalId = generateId2();
|
|
4728
|
+
const signature = await maybeSignApproval({
|
|
4729
|
+
secret: experimental_toolApprovalSecret,
|
|
4730
|
+
approvalId,
|
|
4731
|
+
toolCallId: toolCall.toolCallId,
|
|
4732
|
+
toolName: toolCall.toolName,
|
|
4733
|
+
input: toolCall.input
|
|
4734
|
+
});
|
|
4513
4735
|
toolApprovalRequests[toolCall.toolCallId] = {
|
|
4514
4736
|
type: "tool-approval-request",
|
|
4515
|
-
approvalId
|
|
4516
|
-
toolCall
|
|
4737
|
+
approvalId,
|
|
4738
|
+
toolCall,
|
|
4739
|
+
...signature != null ? { signature } : {}
|
|
4517
4740
|
};
|
|
4518
4741
|
}
|
|
4519
4742
|
}
|
|
@@ -5215,7 +5438,8 @@ var uiMessageChunkSchema = lazySchema(
|
|
|
5215
5438
|
z7.strictObject({
|
|
5216
5439
|
type: z7.literal("tool-approval-request"),
|
|
5217
5440
|
approvalId: z7.string(),
|
|
5218
|
-
toolCallId: z7.string()
|
|
5441
|
+
toolCallId: z7.string(),
|
|
5442
|
+
signature: z7.string().optional()
|
|
5219
5443
|
}),
|
|
5220
5444
|
z7.strictObject({
|
|
5221
5445
|
type: z7.literal("tool-output-available"),
|
|
@@ -5390,7 +5614,7 @@ function processUIMessageStream({
|
|
|
5390
5614
|
new TransformStream({
|
|
5391
5615
|
async transform(chunk, controller) {
|
|
5392
5616
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
5393
|
-
var
|
|
5617
|
+
var _a22, _b, _c, _d;
|
|
5394
5618
|
function getToolInvocation(toolCallId) {
|
|
5395
5619
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
|
5396
5620
|
const toolInvocation = toolInvocations.find(
|
|
@@ -5406,7 +5630,7 @@ function processUIMessageStream({
|
|
|
5406
5630
|
return toolInvocation;
|
|
5407
5631
|
}
|
|
5408
5632
|
function updateToolPart(options) {
|
|
5409
|
-
var
|
|
5633
|
+
var _a23;
|
|
5410
5634
|
const part = state.message.parts.find(
|
|
5411
5635
|
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
5412
5636
|
);
|
|
@@ -5425,7 +5649,7 @@ function processUIMessageStream({
|
|
|
5425
5649
|
if (options.toolMetadata !== void 0) {
|
|
5426
5650
|
anyPart.toolMetadata = options.toolMetadata;
|
|
5427
5651
|
}
|
|
5428
|
-
anyPart.providerExecuted = (
|
|
5652
|
+
anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
|
|
5429
5653
|
const providerMetadata = anyOptions.providerMetadata;
|
|
5430
5654
|
if (providerMetadata != null) {
|
|
5431
5655
|
if (options.state === "output-available" || options.state === "output-error") {
|
|
@@ -5454,7 +5678,7 @@ function processUIMessageStream({
|
|
|
5454
5678
|
}
|
|
5455
5679
|
}
|
|
5456
5680
|
function updateDynamicToolPart(options) {
|
|
5457
|
-
var
|
|
5681
|
+
var _a23, _b2;
|
|
5458
5682
|
const part = state.message.parts.find(
|
|
5459
5683
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
5460
5684
|
);
|
|
@@ -5466,7 +5690,7 @@ function processUIMessageStream({
|
|
|
5466
5690
|
anyPart.input = anyOptions.input;
|
|
5467
5691
|
anyPart.output = anyOptions.output;
|
|
5468
5692
|
anyPart.errorText = anyOptions.errorText;
|
|
5469
|
-
anyPart.rawInput = (
|
|
5693
|
+
anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
|
|
5470
5694
|
anyPart.preliminary = anyOptions.preliminary;
|
|
5471
5695
|
if (options.title !== void 0) {
|
|
5472
5696
|
anyPart.title = options.title;
|
|
@@ -5541,7 +5765,7 @@ function processUIMessageStream({
|
|
|
5541
5765
|
});
|
|
5542
5766
|
}
|
|
5543
5767
|
textPart.text += chunk.delta;
|
|
5544
|
-
textPart.providerMetadata = (
|
|
5768
|
+
textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
|
|
5545
5769
|
write();
|
|
5546
5770
|
break;
|
|
5547
5771
|
}
|
|
@@ -5770,7 +5994,10 @@ function processUIMessageStream({
|
|
|
5770
5994
|
case "tool-approval-request": {
|
|
5771
5995
|
const toolInvocation = getToolInvocation(chunk.toolCallId);
|
|
5772
5996
|
toolInvocation.state = "approval-requested";
|
|
5773
|
-
toolInvocation.approval = {
|
|
5997
|
+
toolInvocation.approval = {
|
|
5998
|
+
id: chunk.approvalId,
|
|
5999
|
+
...chunk.signature != null ? { signature: chunk.signature } : {}
|
|
6000
|
+
};
|
|
5774
6001
|
write();
|
|
5775
6002
|
break;
|
|
5776
6003
|
}
|
|
@@ -6061,13 +6288,13 @@ function createAsyncIterableStream(source) {
|
|
|
6061
6288
|
const reader = this.getReader();
|
|
6062
6289
|
let finished = false;
|
|
6063
6290
|
async function cleanup(cancelStream) {
|
|
6064
|
-
var
|
|
6291
|
+
var _a22;
|
|
6065
6292
|
if (finished)
|
|
6066
6293
|
return;
|
|
6067
6294
|
finished = true;
|
|
6068
6295
|
try {
|
|
6069
6296
|
if (cancelStream) {
|
|
6070
|
-
await ((
|
|
6297
|
+
await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
|
|
6071
6298
|
}
|
|
6072
6299
|
} finally {
|
|
6073
6300
|
try {
|
|
@@ -6245,6 +6472,7 @@ function runToolsTransformation({
|
|
|
6245
6472
|
abortSignal,
|
|
6246
6473
|
repairToolCall,
|
|
6247
6474
|
experimental_context,
|
|
6475
|
+
toolApprovalSecret,
|
|
6248
6476
|
generateId: generateId2,
|
|
6249
6477
|
stepNumber,
|
|
6250
6478
|
model,
|
|
@@ -6374,10 +6602,19 @@ function runToolsTransformation({
|
|
|
6374
6602
|
messages,
|
|
6375
6603
|
experimental_context
|
|
6376
6604
|
})) {
|
|
6605
|
+
const approvalId = generateId2();
|
|
6606
|
+
const signature = await maybeSignApproval({
|
|
6607
|
+
secret: toolApprovalSecret,
|
|
6608
|
+
approvalId,
|
|
6609
|
+
toolCallId: toolCall.toolCallId,
|
|
6610
|
+
toolName: toolCall.toolName,
|
|
6611
|
+
input: toolCall.input
|
|
6612
|
+
});
|
|
6377
6613
|
toolResultsStreamController.enqueue({
|
|
6378
6614
|
type: "tool-approval-request",
|
|
6379
|
-
approvalId
|
|
6380
|
-
toolCall
|
|
6615
|
+
approvalId,
|
|
6616
|
+
toolCall,
|
|
6617
|
+
...signature != null ? { signature } : {}
|
|
6381
6618
|
});
|
|
6382
6619
|
break;
|
|
6383
6620
|
}
|
|
@@ -6548,6 +6785,7 @@ function streamText({
|
|
|
6548
6785
|
experimental_onToolCallStart: onToolCallStart,
|
|
6549
6786
|
experimental_onToolCallFinish: onToolCallFinish,
|
|
6550
6787
|
experimental_context,
|
|
6788
|
+
experimental_toolApprovalSecret,
|
|
6551
6789
|
experimental_include: include,
|
|
6552
6790
|
_internal: { now: now2 = now, generateId: generateId2 = originalGenerateId2 } = {},
|
|
6553
6791
|
...settings
|
|
@@ -6602,6 +6840,7 @@ function streamText({
|
|
|
6602
6840
|
now: now2,
|
|
6603
6841
|
generateId: generateId2,
|
|
6604
6842
|
experimental_context,
|
|
6843
|
+
experimental_toolApprovalSecret,
|
|
6605
6844
|
download: download2,
|
|
6606
6845
|
include
|
|
6607
6846
|
});
|
|
@@ -6629,7 +6868,7 @@ function createOutputTransformStream(output) {
|
|
|
6629
6868
|
}
|
|
6630
6869
|
return new TransformStream({
|
|
6631
6870
|
async transform(chunk, controller) {
|
|
6632
|
-
var
|
|
6871
|
+
var _a22;
|
|
6633
6872
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
6634
6873
|
publishTextChunk({ controller });
|
|
6635
6874
|
}
|
|
@@ -6656,7 +6895,7 @@ function createOutputTransformStream(output) {
|
|
|
6656
6895
|
}
|
|
6657
6896
|
text2 += chunk.text;
|
|
6658
6897
|
textChunk += chunk.text;
|
|
6659
|
-
textProviderMetadata = (
|
|
6898
|
+
textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
|
|
6660
6899
|
const result = await output.parsePartialOutput({ text: text2 });
|
|
6661
6900
|
if (result !== void 0) {
|
|
6662
6901
|
const currentValue = typeof result.partial === "string" ? result.partial : JSON.stringify(result.partial);
|
|
@@ -6709,6 +6948,7 @@ var DefaultStreamTextResult = class {
|
|
|
6709
6948
|
onToolCallStart,
|
|
6710
6949
|
onToolCallFinish,
|
|
6711
6950
|
experimental_context,
|
|
6951
|
+
experimental_toolApprovalSecret,
|
|
6712
6952
|
download: download2,
|
|
6713
6953
|
include
|
|
6714
6954
|
}) {
|
|
@@ -6737,7 +6977,7 @@ var DefaultStreamTextResult = class {
|
|
|
6737
6977
|
let activeReasoningContent = {};
|
|
6738
6978
|
const eventProcessor = new TransformStream({
|
|
6739
6979
|
async transform(chunk, controller) {
|
|
6740
|
-
var
|
|
6980
|
+
var _a22, _b, _c, _d;
|
|
6741
6981
|
controller.enqueue(chunk);
|
|
6742
6982
|
const { part } = chunk;
|
|
6743
6983
|
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 +7011,7 @@ var DefaultStreamTextResult = class {
|
|
|
6771
7011
|
return;
|
|
6772
7012
|
}
|
|
6773
7013
|
activeText.text += part.text;
|
|
6774
|
-
activeText.providerMetadata = (
|
|
7014
|
+
activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
|
|
6775
7015
|
}
|
|
6776
7016
|
if (part.type === "text-end") {
|
|
6777
7017
|
const activeText = activeTextContent[part.id];
|
|
@@ -6897,7 +7137,7 @@ var DefaultStreamTextResult = class {
|
|
|
6897
7137
|
}
|
|
6898
7138
|
},
|
|
6899
7139
|
async flush(controller) {
|
|
6900
|
-
var
|
|
7140
|
+
var _a22, _b, _c, _d, _e, _f, _g;
|
|
6901
7141
|
try {
|
|
6902
7142
|
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
6903
7143
|
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
@@ -6961,15 +7201,15 @@ var DefaultStreamTextResult = class {
|
|
|
6961
7201
|
},
|
|
6962
7202
|
"ai.response.toolCalls": {
|
|
6963
7203
|
output: () => {
|
|
6964
|
-
var
|
|
6965
|
-
return ((
|
|
7204
|
+
var _a23;
|
|
7205
|
+
return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
6966
7206
|
}
|
|
6967
7207
|
},
|
|
6968
7208
|
"ai.response.providerMetadata": JSON.stringify(
|
|
6969
7209
|
finalStep.providerMetadata
|
|
6970
7210
|
),
|
|
6971
7211
|
"ai.usage.inputTokens": totalUsage.inputTokens,
|
|
6972
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7212
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
6973
7213
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
|
|
6974
7214
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
|
|
6975
7215
|
"ai.usage.outputTokens": totalUsage.outputTokens,
|
|
@@ -7120,12 +7360,24 @@ var DefaultStreamTextResult = class {
|
|
|
7120
7360
|
const initialResponseMessages = [];
|
|
7121
7361
|
const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
|
|
7122
7362
|
if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
|
|
7123
|
-
const
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7363
|
+
const {
|
|
7364
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
7365
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
7366
|
+
} = await validateApprovedToolApprovals({
|
|
7367
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
7368
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7369
|
+
),
|
|
7370
|
+
tools,
|
|
7371
|
+
messages: initialMessages,
|
|
7372
|
+
experimental_context,
|
|
7373
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
7374
|
+
});
|
|
7375
|
+
const localDeniedToolApprovals = [
|
|
7376
|
+
...deniedToolApprovals.filter(
|
|
7377
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7378
|
+
),
|
|
7379
|
+
...revalidationDeniedToolApprovals
|
|
7380
|
+
];
|
|
7129
7381
|
const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
|
|
7130
7382
|
(toolApproval) => toolApproval.toolCall.providerExecuted
|
|
7131
7383
|
);
|
|
@@ -7220,7 +7472,7 @@ var DefaultStreamTextResult = class {
|
|
|
7220
7472
|
responseMessages,
|
|
7221
7473
|
usage
|
|
7222
7474
|
}) {
|
|
7223
|
-
var
|
|
7475
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7224
7476
|
const includeRawChunks2 = self.includeRawChunks;
|
|
7225
7477
|
const stepTimeoutId = stepTimeoutMs != null ? setTimeout(() => stepAbortController.abort(), stepTimeoutMs) : void 0;
|
|
7226
7478
|
let chunkTimeoutId = void 0;
|
|
@@ -7257,7 +7509,7 @@ var DefaultStreamTextResult = class {
|
|
|
7257
7509
|
experimental_context
|
|
7258
7510
|
}));
|
|
7259
7511
|
const stepModel = resolveLanguageModel(
|
|
7260
|
-
(
|
|
7512
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
7261
7513
|
);
|
|
7262
7514
|
const stepModelInfo = {
|
|
7263
7515
|
provider: stepModel.provider,
|
|
@@ -7380,6 +7632,7 @@ var DefaultStreamTextResult = class {
|
|
|
7380
7632
|
repairToolCall,
|
|
7381
7633
|
abortSignal,
|
|
7382
7634
|
experimental_context,
|
|
7635
|
+
toolApprovalSecret: experimental_toolApprovalSecret,
|
|
7383
7636
|
generateId: generateId2,
|
|
7384
7637
|
stepNumber: recordedSteps.length,
|
|
7385
7638
|
model: stepModelInfo,
|
|
@@ -7414,7 +7667,7 @@ var DefaultStreamTextResult = class {
|
|
|
7414
7667
|
streamWithToolResults.pipeThrough(
|
|
7415
7668
|
new TransformStream({
|
|
7416
7669
|
async transform(chunk, controller) {
|
|
7417
|
-
var
|
|
7670
|
+
var _a23, _b2, _c2, _d2, _e2;
|
|
7418
7671
|
resetChunkTimeout();
|
|
7419
7672
|
if (chunk.type === "stream-start") {
|
|
7420
7673
|
warnings = chunk.warnings;
|
|
@@ -7491,7 +7744,7 @@ var DefaultStreamTextResult = class {
|
|
|
7491
7744
|
}
|
|
7492
7745
|
case "response-metadata": {
|
|
7493
7746
|
stepResponse = {
|
|
7494
|
-
id: (
|
|
7747
|
+
id: (_a23 = chunk.id) != null ? _a23 : stepResponse.id,
|
|
7495
7748
|
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
|
7496
7749
|
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
|
7497
7750
|
};
|
|
@@ -7579,7 +7832,7 @@ var DefaultStreamTextResult = class {
|
|
|
7579
7832
|
},
|
|
7580
7833
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
7581
7834
|
async flush(controller) {
|
|
7582
|
-
var
|
|
7835
|
+
var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
7583
7836
|
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
7584
7837
|
controller.enqueue({
|
|
7585
7838
|
type: "error",
|
|
@@ -7607,7 +7860,7 @@ var DefaultStreamTextResult = class {
|
|
|
7607
7860
|
"ai.response.model": stepResponse.modelId,
|
|
7608
7861
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
|
7609
7862
|
"ai.usage.inputTokens": stepUsage.inputTokens,
|
|
7610
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7863
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
7611
7864
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
|
|
7612
7865
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
|
|
7613
7866
|
"ai.usage.outputTokens": stepUsage.outputTokens,
|
|
@@ -7881,19 +8134,19 @@ var DefaultStreamTextResult = class {
|
|
|
7881
8134
|
this._steps.reject(error);
|
|
7882
8135
|
}
|
|
7883
8136
|
async consumeStream(options) {
|
|
7884
|
-
var
|
|
8137
|
+
var _a22;
|
|
7885
8138
|
try {
|
|
7886
8139
|
await consumeStream({
|
|
7887
8140
|
stream: this.fullStream,
|
|
7888
8141
|
onError: (error) => {
|
|
7889
|
-
var
|
|
8142
|
+
var _a23;
|
|
7890
8143
|
this.rejectResultPromises(error);
|
|
7891
|
-
(
|
|
8144
|
+
(_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
|
|
7892
8145
|
}
|
|
7893
8146
|
});
|
|
7894
8147
|
} catch (error) {
|
|
7895
8148
|
this.rejectResultPromises(error);
|
|
7896
|
-
(
|
|
8149
|
+
(_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
|
|
7897
8150
|
}
|
|
7898
8151
|
}
|
|
7899
8152
|
get experimental_partialOutputStream() {
|
|
@@ -7913,8 +8166,8 @@ var DefaultStreamTextResult = class {
|
|
|
7913
8166
|
);
|
|
7914
8167
|
}
|
|
7915
8168
|
get elementStream() {
|
|
7916
|
-
var
|
|
7917
|
-
const transform = (
|
|
8169
|
+
var _a22, _b, _c;
|
|
8170
|
+
const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
|
|
7918
8171
|
if (transform == null) {
|
|
7919
8172
|
throw new UnsupportedFunctionalityError2({
|
|
7920
8173
|
functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
|
|
@@ -7924,8 +8177,8 @@ var DefaultStreamTextResult = class {
|
|
|
7924
8177
|
}
|
|
7925
8178
|
get output() {
|
|
7926
8179
|
return this.finalStep.then((step) => {
|
|
7927
|
-
var
|
|
7928
|
-
const output = (
|
|
8180
|
+
var _a22;
|
|
8181
|
+
const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
|
|
7929
8182
|
return output.parseCompleteOutput(
|
|
7930
8183
|
{ text: step.text },
|
|
7931
8184
|
{
|
|
@@ -7952,8 +8205,8 @@ var DefaultStreamTextResult = class {
|
|
|
7952
8205
|
responseMessageId: generateMessageId
|
|
7953
8206
|
}) : void 0;
|
|
7954
8207
|
const isDynamic = (part) => {
|
|
7955
|
-
var
|
|
7956
|
-
const tool2 = (
|
|
8208
|
+
var _a22;
|
|
8209
|
+
const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
|
|
7957
8210
|
if (tool2 == null) {
|
|
7958
8211
|
return part.dynamic;
|
|
7959
8212
|
}
|
|
@@ -8099,7 +8352,8 @@ var DefaultStreamTextResult = class {
|
|
|
8099
8352
|
controller.enqueue({
|
|
8100
8353
|
type: "tool-approval-request",
|
|
8101
8354
|
approvalId: part.approvalId,
|
|
8102
|
-
toolCallId: part.toolCall.toolCallId
|
|
8355
|
+
toolCallId: part.toolCall.toolCallId,
|
|
8356
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
8103
8357
|
});
|
|
8104
8358
|
break;
|
|
8105
8359
|
}
|
|
@@ -8295,7 +8549,7 @@ var ToolLoopAgent = class {
|
|
|
8295
8549
|
return this.settings.tools;
|
|
8296
8550
|
}
|
|
8297
8551
|
async prepareCall(options) {
|
|
8298
|
-
var
|
|
8552
|
+
var _a22, _b, _c, _d;
|
|
8299
8553
|
if (this.settings.callOptionsSchema != null && options.options !== void 0) {
|
|
8300
8554
|
const validatedOptions = await validateTypes2({
|
|
8301
8555
|
value: options.options,
|
|
@@ -8307,7 +8561,7 @@ var ToolLoopAgent = class {
|
|
|
8307
8561
|
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
|
|
8308
8562
|
const baseCallArgs = {
|
|
8309
8563
|
...settingsWithoutCallback,
|
|
8310
|
-
stopWhen: (
|
|
8564
|
+
stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
|
|
8311
8565
|
...options
|
|
8312
8566
|
};
|
|
8313
8567
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
|
|
@@ -8476,7 +8730,7 @@ function readUIMessageStream({
|
|
|
8476
8730
|
onError,
|
|
8477
8731
|
terminateOnError = false
|
|
8478
8732
|
}) {
|
|
8479
|
-
var
|
|
8733
|
+
var _a22;
|
|
8480
8734
|
let controller;
|
|
8481
8735
|
let hasErrored = false;
|
|
8482
8736
|
const outputStream = new ReadableStream({
|
|
@@ -8485,7 +8739,7 @@ function readUIMessageStream({
|
|
|
8485
8739
|
}
|
|
8486
8740
|
});
|
|
8487
8741
|
const state = createStreamingUIMessageState({
|
|
8488
|
-
messageId: (
|
|
8742
|
+
messageId: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : "",
|
|
8489
8743
|
lastMessage: message
|
|
8490
8744
|
});
|
|
8491
8745
|
const handleError = (error) => {
|
|
@@ -8554,7 +8808,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8554
8808
|
modelMessages.push({
|
|
8555
8809
|
role: "user",
|
|
8556
8810
|
content: message.parts.map((part) => {
|
|
8557
|
-
var
|
|
8811
|
+
var _a22;
|
|
8558
8812
|
if (isTextUIPart(part)) {
|
|
8559
8813
|
return {
|
|
8560
8814
|
type: "text",
|
|
@@ -8572,7 +8826,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8572
8826
|
};
|
|
8573
8827
|
}
|
|
8574
8828
|
if (isDataUIPart(part)) {
|
|
8575
|
-
return (
|
|
8829
|
+
return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(
|
|
8576
8830
|
options,
|
|
8577
8831
|
part
|
|
8578
8832
|
);
|
|
@@ -8585,7 +8839,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8585
8839
|
if (message.parts != null) {
|
|
8586
8840
|
let block = [];
|
|
8587
8841
|
async function processBlock() {
|
|
8588
|
-
var
|
|
8842
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h;
|
|
8589
8843
|
if (block.length === 0) {
|
|
8590
8844
|
return;
|
|
8591
8845
|
}
|
|
@@ -8618,7 +8872,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8618
8872
|
type: "tool-call",
|
|
8619
8873
|
toolCallId: part.toolCallId,
|
|
8620
8874
|
toolName,
|
|
8621
|
-
input: part.state === "output-error" ? (
|
|
8875
|
+
input: part.state === "output-error" ? (_a22 = part.input) != null ? _a22 : "rawInput" in part ? part.rawInput : void 0 : part.input,
|
|
8622
8876
|
providerExecuted: part.providerExecuted,
|
|
8623
8877
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
8624
8878
|
});
|
|
@@ -8626,7 +8880,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8626
8880
|
content.push({
|
|
8627
8881
|
type: "tool-approval-request",
|
|
8628
8882
|
approvalId: part.approval.id,
|
|
8629
|
-
toolCallId: part.toolCallId
|
|
8883
|
+
toolCallId: part.toolCallId,
|
|
8884
|
+
...part.approval.signature != null ? { signature: part.approval.signature } : {}
|
|
8630
8885
|
});
|
|
8631
8886
|
}
|
|
8632
8887
|
if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
|
|
@@ -8665,8 +8920,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8665
8920
|
});
|
|
8666
8921
|
const toolParts = block.filter(
|
|
8667
8922
|
(part) => {
|
|
8668
|
-
var
|
|
8669
|
-
return isToolUIPart(part) && (part.providerExecuted !== true || ((
|
|
8923
|
+
var _a23;
|
|
8924
|
+
return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);
|
|
8670
8925
|
}
|
|
8671
8926
|
);
|
|
8672
8927
|
if (toolParts.length > 0) {
|
|
@@ -8858,7 +9113,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8858
9113
|
approval: z8.object({
|
|
8859
9114
|
id: z8.string(),
|
|
8860
9115
|
approved: z8.never().optional(),
|
|
8861
|
-
reason: z8.never().optional()
|
|
9116
|
+
reason: z8.never().optional(),
|
|
9117
|
+
signature: z8.string().optional()
|
|
8862
9118
|
})
|
|
8863
9119
|
}),
|
|
8864
9120
|
z8.object({
|
|
@@ -8875,7 +9131,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8875
9131
|
approval: z8.object({
|
|
8876
9132
|
id: z8.string(),
|
|
8877
9133
|
approved: z8.boolean(),
|
|
8878
|
-
reason: z8.string().optional()
|
|
9134
|
+
reason: z8.string().optional(),
|
|
9135
|
+
signature: z8.string().optional()
|
|
8879
9136
|
})
|
|
8880
9137
|
}),
|
|
8881
9138
|
z8.object({
|
|
@@ -8894,7 +9151,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8894
9151
|
approval: z8.object({
|
|
8895
9152
|
id: z8.string(),
|
|
8896
9153
|
approved: z8.literal(true),
|
|
8897
|
-
reason: z8.string().optional()
|
|
9154
|
+
reason: z8.string().optional(),
|
|
9155
|
+
signature: z8.string().optional()
|
|
8898
9156
|
}).optional()
|
|
8899
9157
|
}),
|
|
8900
9158
|
z8.object({
|
|
@@ -8913,7 +9171,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8913
9171
|
approval: z8.object({
|
|
8914
9172
|
id: z8.string(),
|
|
8915
9173
|
approved: z8.literal(true),
|
|
8916
|
-
reason: z8.string().optional()
|
|
9174
|
+
reason: z8.string().optional(),
|
|
9175
|
+
signature: z8.string().optional()
|
|
8917
9176
|
}).optional()
|
|
8918
9177
|
}),
|
|
8919
9178
|
z8.object({
|
|
@@ -8930,7 +9189,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8930
9189
|
approval: z8.object({
|
|
8931
9190
|
id: z8.string(),
|
|
8932
9191
|
approved: z8.literal(false),
|
|
8933
|
-
reason: z8.string().optional()
|
|
9192
|
+
reason: z8.string().optional(),
|
|
9193
|
+
signature: z8.string().optional()
|
|
8934
9194
|
})
|
|
8935
9195
|
}),
|
|
8936
9196
|
z8.object({
|
|
@@ -8970,7 +9230,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8970
9230
|
approval: z8.object({
|
|
8971
9231
|
id: z8.string(),
|
|
8972
9232
|
approved: z8.never().optional(),
|
|
8973
|
-
reason: z8.never().optional()
|
|
9233
|
+
reason: z8.never().optional(),
|
|
9234
|
+
signature: z8.string().optional()
|
|
8974
9235
|
})
|
|
8975
9236
|
}),
|
|
8976
9237
|
z8.object({
|
|
@@ -8986,7 +9247,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
8986
9247
|
approval: z8.object({
|
|
8987
9248
|
id: z8.string(),
|
|
8988
9249
|
approved: z8.boolean(),
|
|
8989
|
-
reason: z8.string().optional()
|
|
9250
|
+
reason: z8.string().optional(),
|
|
9251
|
+
signature: z8.string().optional()
|
|
8990
9252
|
})
|
|
8991
9253
|
}),
|
|
8992
9254
|
z8.object({
|
|
@@ -9004,7 +9266,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9004
9266
|
approval: z8.object({
|
|
9005
9267
|
id: z8.string(),
|
|
9006
9268
|
approved: z8.literal(true),
|
|
9007
|
-
reason: z8.string().optional()
|
|
9269
|
+
reason: z8.string().optional(),
|
|
9270
|
+
signature: z8.string().optional()
|
|
9008
9271
|
}).optional()
|
|
9009
9272
|
}),
|
|
9010
9273
|
z8.object({
|
|
@@ -9022,7 +9285,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9022
9285
|
approval: z8.object({
|
|
9023
9286
|
id: z8.string(),
|
|
9024
9287
|
approved: z8.literal(true),
|
|
9025
|
-
reason: z8.string().optional()
|
|
9288
|
+
reason: z8.string().optional(),
|
|
9289
|
+
signature: z8.string().optional()
|
|
9026
9290
|
}).optional()
|
|
9027
9291
|
}),
|
|
9028
9292
|
z8.object({
|
|
@@ -9038,7 +9302,8 @@ var uiMessagesSchema = lazySchema2(
|
|
|
9038
9302
|
approval: z8.object({
|
|
9039
9303
|
id: z8.string(),
|
|
9040
9304
|
approved: z8.literal(false),
|
|
9041
|
-
reason: z8.string().optional()
|
|
9305
|
+
reason: z8.string().optional(),
|
|
9306
|
+
signature: z8.string().optional()
|
|
9042
9307
|
})
|
|
9043
9308
|
})
|
|
9044
9309
|
])
|
|
@@ -9198,7 +9463,7 @@ async function createAgentUIStream({
|
|
|
9198
9463
|
onStepFinish,
|
|
9199
9464
|
...uiMessageStreamOptions
|
|
9200
9465
|
}) {
|
|
9201
|
-
var
|
|
9466
|
+
var _a22;
|
|
9202
9467
|
const validatedMessages = await validateUIMessages({
|
|
9203
9468
|
messages: uiMessages,
|
|
9204
9469
|
tools: agent.tools
|
|
@@ -9217,7 +9482,7 @@ async function createAgentUIStream({
|
|
|
9217
9482
|
return result.toUIMessageStream({
|
|
9218
9483
|
...uiMessageStreamOptions,
|
|
9219
9484
|
// TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
|
|
9220
|
-
originalMessages: (
|
|
9485
|
+
originalMessages: (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages
|
|
9221
9486
|
});
|
|
9222
9487
|
}
|
|
9223
9488
|
|
|
@@ -9317,7 +9582,7 @@ async function embed({
|
|
|
9317
9582
|
}),
|
|
9318
9583
|
tracer,
|
|
9319
9584
|
fn: async (doEmbedSpan) => {
|
|
9320
|
-
var
|
|
9585
|
+
var _a22, _b;
|
|
9321
9586
|
const modelResponse = await model.doEmbed({
|
|
9322
9587
|
values: [value],
|
|
9323
9588
|
abortSignal,
|
|
@@ -9325,7 +9590,7 @@ async function embed({
|
|
|
9325
9590
|
providerOptions
|
|
9326
9591
|
});
|
|
9327
9592
|
const embedding2 = modelResponse.embeddings[0];
|
|
9328
|
-
const usage2 = (
|
|
9593
|
+
const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
|
|
9329
9594
|
doEmbedSpan.setAttributes(
|
|
9330
9595
|
await selectTelemetryAttributes({
|
|
9331
9596
|
telemetry,
|
|
@@ -9441,7 +9706,7 @@ async function embedMany({
|
|
|
9441
9706
|
}),
|
|
9442
9707
|
tracer,
|
|
9443
9708
|
fn: async (span) => {
|
|
9444
|
-
var
|
|
9709
|
+
var _a22;
|
|
9445
9710
|
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
|
9446
9711
|
model.maxEmbeddingsPerCall,
|
|
9447
9712
|
model.supportsParallelCalls
|
|
@@ -9466,7 +9731,7 @@ async function embedMany({
|
|
|
9466
9731
|
}),
|
|
9467
9732
|
tracer,
|
|
9468
9733
|
fn: async (doEmbedSpan) => {
|
|
9469
|
-
var
|
|
9734
|
+
var _a23, _b;
|
|
9470
9735
|
const modelResponse = await model.doEmbed({
|
|
9471
9736
|
values,
|
|
9472
9737
|
abortSignal,
|
|
@@ -9474,7 +9739,7 @@ async function embedMany({
|
|
|
9474
9739
|
providerOptions
|
|
9475
9740
|
});
|
|
9476
9741
|
const embeddings3 = modelResponse.embeddings;
|
|
9477
|
-
const usage2 = (
|
|
9742
|
+
const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9478
9743
|
doEmbedSpan.setAttributes(
|
|
9479
9744
|
await selectTelemetryAttributes({
|
|
9480
9745
|
telemetry,
|
|
@@ -9555,7 +9820,7 @@ async function embedMany({
|
|
|
9555
9820
|
}),
|
|
9556
9821
|
tracer,
|
|
9557
9822
|
fn: async (doEmbedSpan) => {
|
|
9558
|
-
var
|
|
9823
|
+
var _a23, _b;
|
|
9559
9824
|
const modelResponse = await model.doEmbed({
|
|
9560
9825
|
values: chunk,
|
|
9561
9826
|
abortSignal,
|
|
@@ -9563,7 +9828,7 @@ async function embedMany({
|
|
|
9563
9828
|
providerOptions
|
|
9564
9829
|
});
|
|
9565
9830
|
const embeddings2 = modelResponse.embeddings;
|
|
9566
|
-
const usage = (
|
|
9831
|
+
const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9567
9832
|
doEmbedSpan.setAttributes(
|
|
9568
9833
|
await selectTelemetryAttributes({
|
|
9569
9834
|
telemetry,
|
|
@@ -9602,7 +9867,7 @@ async function embedMany({
|
|
|
9602
9867
|
result.providerMetadata
|
|
9603
9868
|
)) {
|
|
9604
9869
|
providerMetadata[providerName] = {
|
|
9605
|
-
...(
|
|
9870
|
+
...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
|
|
9606
9871
|
...metadata
|
|
9607
9872
|
};
|
|
9608
9873
|
}
|
|
@@ -9650,7 +9915,7 @@ var DefaultEmbedManyResult = class {
|
|
|
9650
9915
|
|
|
9651
9916
|
// src/generate-image/generate-image.ts
|
|
9652
9917
|
import {
|
|
9653
|
-
convertBase64ToUint8Array as
|
|
9918
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array5,
|
|
9654
9919
|
withUserAgentSuffix as withUserAgentSuffix5
|
|
9655
9920
|
} from "@ai-sdk/provider-utils";
|
|
9656
9921
|
async function generateImage({
|
|
@@ -9666,7 +9931,7 @@ async function generateImage({
|
|
|
9666
9931
|
abortSignal,
|
|
9667
9932
|
headers
|
|
9668
9933
|
}) {
|
|
9669
|
-
var
|
|
9934
|
+
var _a22, _b;
|
|
9670
9935
|
const model = resolveImageModel(modelArg);
|
|
9671
9936
|
const headersWithUserAgent = withUserAgentSuffix5(
|
|
9672
9937
|
headers != null ? headers : {},
|
|
@@ -9676,7 +9941,7 @@ async function generateImage({
|
|
|
9676
9941
|
maxRetries: maxRetriesArg,
|
|
9677
9942
|
abortSignal
|
|
9678
9943
|
});
|
|
9679
|
-
const maxImagesPerCallWithDefault = (
|
|
9944
|
+
const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 1;
|
|
9680
9945
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
9681
9946
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
9682
9947
|
if (i < callCount - 1) {
|
|
@@ -9717,13 +9982,13 @@ async function generateImage({
|
|
|
9717
9982
|
images.push(
|
|
9718
9983
|
...result.images.map(
|
|
9719
9984
|
(image) => {
|
|
9720
|
-
var
|
|
9985
|
+
var _a23;
|
|
9721
9986
|
return new DefaultGeneratedFile({
|
|
9722
9987
|
data: image,
|
|
9723
|
-
mediaType: (
|
|
9988
|
+
mediaType: (_a23 = detectMediaType({
|
|
9724
9989
|
data: image,
|
|
9725
9990
|
signatures: imageMediaTypeSignatures
|
|
9726
|
-
})) != null ?
|
|
9991
|
+
})) != null ? _a23 : "image/png"
|
|
9727
9992
|
});
|
|
9728
9993
|
}
|
|
9729
9994
|
)
|
|
@@ -9811,7 +10076,7 @@ function toImageModelV3File(dataContent) {
|
|
|
9811
10076
|
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
9812
10077
|
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
9813
10078
|
if (base64Content != null) {
|
|
9814
|
-
const uint8Data2 =
|
|
10079
|
+
const uint8Data2 = convertBase64ToUint8Array5(base64Content);
|
|
9815
10080
|
return {
|
|
9816
10081
|
type: "file",
|
|
9817
10082
|
data: uint8Data2,
|
|
@@ -9850,8 +10115,8 @@ import {
|
|
|
9850
10115
|
UnsupportedFunctionalityError as UnsupportedFunctionalityError3
|
|
9851
10116
|
} from "@ai-sdk/provider";
|
|
9852
10117
|
import {
|
|
9853
|
-
asSchema as
|
|
9854
|
-
safeValidateTypes as
|
|
10118
|
+
asSchema as asSchema5,
|
|
10119
|
+
safeValidateTypes as safeValidateTypes5
|
|
9855
10120
|
} from "@ai-sdk/provider-utils";
|
|
9856
10121
|
var noSchemaOutputStrategy = {
|
|
9857
10122
|
type: "no-schema",
|
|
@@ -9891,7 +10156,7 @@ var objectOutputStrategy = (schema) => ({
|
|
|
9891
10156
|
};
|
|
9892
10157
|
},
|
|
9893
10158
|
async validateFinalResult(value) {
|
|
9894
|
-
return
|
|
10159
|
+
return safeValidateTypes5({ value, schema });
|
|
9895
10160
|
},
|
|
9896
10161
|
createElementStream() {
|
|
9897
10162
|
throw new UnsupportedFunctionalityError3({
|
|
@@ -9923,7 +10188,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9923
10188
|
isFirstDelta,
|
|
9924
10189
|
isFinalDelta
|
|
9925
10190
|
}) {
|
|
9926
|
-
var
|
|
10191
|
+
var _a22;
|
|
9927
10192
|
if (!isJSONObject(value) || !isJSONArray(value.elements)) {
|
|
9928
10193
|
return {
|
|
9929
10194
|
success: false,
|
|
@@ -9937,7 +10202,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9937
10202
|
const resultArray = [];
|
|
9938
10203
|
for (let i = 0; i < inputArray.length; i++) {
|
|
9939
10204
|
const element = inputArray[i];
|
|
9940
|
-
const result = await
|
|
10205
|
+
const result = await safeValidateTypes5({ value: element, schema });
|
|
9941
10206
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
9942
10207
|
continue;
|
|
9943
10208
|
}
|
|
@@ -9946,7 +10211,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9946
10211
|
}
|
|
9947
10212
|
resultArray.push(result.value);
|
|
9948
10213
|
}
|
|
9949
|
-
const publishedElementCount = (
|
|
10214
|
+
const publishedElementCount = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 0;
|
|
9950
10215
|
let textDelta = "";
|
|
9951
10216
|
if (isFirstDelta) {
|
|
9952
10217
|
textDelta += "[";
|
|
@@ -9977,13 +10242,15 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9977
10242
|
};
|
|
9978
10243
|
}
|
|
9979
10244
|
const inputArray = value.elements;
|
|
10245
|
+
const resultArray = [];
|
|
9980
10246
|
for (const element of inputArray) {
|
|
9981
|
-
const result = await
|
|
10247
|
+
const result = await safeValidateTypes5({ value: element, schema });
|
|
9982
10248
|
if (!result.success) {
|
|
9983
10249
|
return result;
|
|
9984
10250
|
}
|
|
10251
|
+
resultArray.push(result.value);
|
|
9985
10252
|
}
|
|
9986
|
-
return { success: true, value:
|
|
10253
|
+
return { success: true, value: resultArray };
|
|
9987
10254
|
},
|
|
9988
10255
|
createElementStream(originalStream) {
|
|
9989
10256
|
let publishedElements = 0;
|
|
@@ -10096,9 +10363,9 @@ function getOutputStrategy({
|
|
|
10096
10363
|
}) {
|
|
10097
10364
|
switch (output) {
|
|
10098
10365
|
case "object":
|
|
10099
|
-
return objectOutputStrategy(
|
|
10366
|
+
return objectOutputStrategy(asSchema5(schema));
|
|
10100
10367
|
case "array":
|
|
10101
|
-
return arrayOutputStrategy(
|
|
10368
|
+
return arrayOutputStrategy(asSchema5(schema));
|
|
10102
10369
|
case "enum":
|
|
10103
10370
|
return enumOutputStrategy(enumValues);
|
|
10104
10371
|
case "no-schema":
|
|
@@ -10367,7 +10634,7 @@ async function generateObject(options) {
|
|
|
10367
10634
|
}),
|
|
10368
10635
|
tracer,
|
|
10369
10636
|
fn: async (span) => {
|
|
10370
|
-
var
|
|
10637
|
+
var _a22;
|
|
10371
10638
|
let result;
|
|
10372
10639
|
let finishReason;
|
|
10373
10640
|
let usage;
|
|
@@ -10414,7 +10681,7 @@ async function generateObject(options) {
|
|
|
10414
10681
|
}),
|
|
10415
10682
|
tracer,
|
|
10416
10683
|
fn: async (span2) => {
|
|
10417
|
-
var
|
|
10684
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
10418
10685
|
const result2 = await model.doGenerate({
|
|
10419
10686
|
responseFormat: {
|
|
10420
10687
|
type: "json",
|
|
@@ -10429,7 +10696,7 @@ async function generateObject(options) {
|
|
|
10429
10696
|
headers: headersWithUserAgent
|
|
10430
10697
|
});
|
|
10431
10698
|
const responseData = {
|
|
10432
|
-
id: (_b = (
|
|
10699
|
+
id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
|
|
10433
10700
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
10434
10701
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
10435
10702
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -10485,7 +10752,7 @@ async function generateObject(options) {
|
|
|
10485
10752
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
10486
10753
|
warnings = generateResult.warnings;
|
|
10487
10754
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
10488
|
-
request = (
|
|
10755
|
+
request = (_a22 = generateResult.request) != null ? _a22 : {};
|
|
10489
10756
|
response = generateResult.responseData;
|
|
10490
10757
|
reasoning = generateResult.reasoning;
|
|
10491
10758
|
logWarnings({
|
|
@@ -10548,9 +10815,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
10548
10815
|
this.reasoning = options.reasoning;
|
|
10549
10816
|
}
|
|
10550
10817
|
toJsonResponse(init) {
|
|
10551
|
-
var
|
|
10818
|
+
var _a22;
|
|
10552
10819
|
return new Response(JSON.stringify(this.object), {
|
|
10553
|
-
status: (
|
|
10820
|
+
status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
|
|
10554
10821
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
10555
10822
|
"content-type": "application/json; charset=utf-8"
|
|
10556
10823
|
})
|
|
@@ -10684,8 +10951,8 @@ function simulateReadableStream({
|
|
|
10684
10951
|
chunkDelayInMs = 0,
|
|
10685
10952
|
_internal
|
|
10686
10953
|
}) {
|
|
10687
|
-
var
|
|
10688
|
-
const delay2 = (
|
|
10954
|
+
var _a22;
|
|
10955
|
+
const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : delayFunction;
|
|
10689
10956
|
let index = 0;
|
|
10690
10957
|
return new ReadableStream({
|
|
10691
10958
|
async pull(controller) {
|
|
@@ -10947,7 +11214,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10947
11214
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
10948
11215
|
new TransformStream({
|
|
10949
11216
|
async transform(chunk, controller) {
|
|
10950
|
-
var
|
|
11217
|
+
var _a22, _b, _c;
|
|
10951
11218
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
10952
11219
|
warnings = chunk.warnings;
|
|
10953
11220
|
return;
|
|
@@ -10997,7 +11264,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10997
11264
|
switch (chunk.type) {
|
|
10998
11265
|
case "response-metadata": {
|
|
10999
11266
|
fullResponse = {
|
|
11000
|
-
id: (
|
|
11267
|
+
id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
|
|
11001
11268
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11002
11269
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11003
11270
|
};
|
|
@@ -11271,7 +11538,7 @@ async function generateSpeech({
|
|
|
11271
11538
|
abortSignal,
|
|
11272
11539
|
headers
|
|
11273
11540
|
}) {
|
|
11274
|
-
var
|
|
11541
|
+
var _a22;
|
|
11275
11542
|
const resolvedModel = resolveSpeechModel(model);
|
|
11276
11543
|
if (!resolvedModel) {
|
|
11277
11544
|
throw new Error("Model could not be resolved");
|
|
@@ -11308,10 +11575,10 @@ async function generateSpeech({
|
|
|
11308
11575
|
return new DefaultSpeechResult({
|
|
11309
11576
|
audio: new DefaultGeneratedAudioFile({
|
|
11310
11577
|
data: result.audio,
|
|
11311
|
-
mediaType: (
|
|
11578
|
+
mediaType: (_a22 = detectMediaType({
|
|
11312
11579
|
data: result.audio,
|
|
11313
11580
|
signatures: audioMediaTypeSignatures
|
|
11314
|
-
})) != null ?
|
|
11581
|
+
})) != null ? _a22 : "audio/mp3"
|
|
11315
11582
|
}),
|
|
11316
11583
|
warnings: result.warnings,
|
|
11317
11584
|
responses: [result.response],
|
|
@@ -11320,11 +11587,11 @@ async function generateSpeech({
|
|
|
11320
11587
|
}
|
|
11321
11588
|
var DefaultSpeechResult = class {
|
|
11322
11589
|
constructor(options) {
|
|
11323
|
-
var
|
|
11590
|
+
var _a22;
|
|
11324
11591
|
this.audio = options.audio;
|
|
11325
11592
|
this.warnings = options.warnings;
|
|
11326
11593
|
this.responses = options.responses;
|
|
11327
|
-
this.providerMetadata = (
|
|
11594
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
11328
11595
|
}
|
|
11329
11596
|
};
|
|
11330
11597
|
|
|
@@ -11509,7 +11776,7 @@ function smoothStream({
|
|
|
11509
11776
|
|
|
11510
11777
|
// src/generate-video/generate-video.ts
|
|
11511
11778
|
import {
|
|
11512
|
-
convertBase64ToUint8Array as
|
|
11779
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array6,
|
|
11513
11780
|
withUserAgentSuffix as withUserAgentSuffix8
|
|
11514
11781
|
} from "@ai-sdk/provider-utils";
|
|
11515
11782
|
var defaultDownload = createDownload();
|
|
@@ -11529,7 +11796,7 @@ async function experimental_generateVideo({
|
|
|
11529
11796
|
headers,
|
|
11530
11797
|
download: downloadFn = defaultDownload
|
|
11531
11798
|
}) {
|
|
11532
|
-
var
|
|
11799
|
+
var _a22;
|
|
11533
11800
|
const model = resolveVideoModel(modelArg);
|
|
11534
11801
|
const headersWithUserAgent = withUserAgentSuffix8(
|
|
11535
11802
|
headers != null ? headers : {},
|
|
@@ -11540,7 +11807,7 @@ async function experimental_generateVideo({
|
|
|
11540
11807
|
abortSignal
|
|
11541
11808
|
});
|
|
11542
11809
|
const { prompt, image } = normalizePrompt2(promptArg);
|
|
11543
|
-
const maxVideosPerCallWithDefault = (
|
|
11810
|
+
const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
|
|
11544
11811
|
const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
|
|
11545
11812
|
const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
|
|
11546
11813
|
const remaining = n - index * maxVideosPerCallWithDefault;
|
|
@@ -11662,7 +11929,7 @@ async function experimental_generateVideo({
|
|
|
11662
11929
|
};
|
|
11663
11930
|
}
|
|
11664
11931
|
function normalizePrompt2(promptArg) {
|
|
11665
|
-
var
|
|
11932
|
+
var _a22, _b;
|
|
11666
11933
|
if (typeof promptArg === "string") {
|
|
11667
11934
|
return {
|
|
11668
11935
|
prompt: promptArg,
|
|
@@ -11683,14 +11950,14 @@ function normalizePrompt2(promptArg) {
|
|
|
11683
11950
|
image = {
|
|
11684
11951
|
type: "file",
|
|
11685
11952
|
mediaType: mediaType != null ? mediaType : "image/png",
|
|
11686
|
-
data:
|
|
11953
|
+
data: convertBase64ToUint8Array6(base64Content != null ? base64Content : "")
|
|
11687
11954
|
};
|
|
11688
11955
|
} else {
|
|
11689
|
-
const bytes =
|
|
11690
|
-
const mediaType = (
|
|
11956
|
+
const bytes = convertBase64ToUint8Array6(dataContent);
|
|
11957
|
+
const mediaType = (_a22 = detectMediaType({
|
|
11691
11958
|
data: bytes,
|
|
11692
11959
|
signatures: imageMediaTypeSignatures
|
|
11693
|
-
})) != null ?
|
|
11960
|
+
})) != null ? _a22 : "image/png";
|
|
11694
11961
|
image = {
|
|
11695
11962
|
type: "file",
|
|
11696
11963
|
mediaType,
|
|
@@ -11750,8 +12017,8 @@ function defaultTransform(text2) {
|
|
|
11750
12017
|
return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
11751
12018
|
}
|
|
11752
12019
|
function extractJsonMiddleware(options) {
|
|
11753
|
-
var
|
|
11754
|
-
const transform = (
|
|
12020
|
+
var _a22;
|
|
12021
|
+
const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
|
|
11755
12022
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
11756
12023
|
return {
|
|
11757
12024
|
specificationVersion: "v3",
|
|
@@ -12125,13 +12392,13 @@ function addToolInputExamplesMiddleware({
|
|
|
12125
12392
|
return {
|
|
12126
12393
|
specificationVersion: "v3",
|
|
12127
12394
|
transformParams: async ({ params }) => {
|
|
12128
|
-
var
|
|
12129
|
-
if (!((
|
|
12395
|
+
var _a22;
|
|
12396
|
+
if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
|
|
12130
12397
|
return params;
|
|
12131
12398
|
}
|
|
12132
12399
|
const transformedTools = params.tools.map((tool2) => {
|
|
12133
|
-
var
|
|
12134
|
-
if (tool2.type !== "function" || !((
|
|
12400
|
+
var _a23;
|
|
12401
|
+
if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
|
|
12135
12402
|
return tool2;
|
|
12136
12403
|
}
|
|
12137
12404
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -12178,7 +12445,7 @@ var doWrap = ({
|
|
|
12178
12445
|
modelId,
|
|
12179
12446
|
providerId
|
|
12180
12447
|
}) => {
|
|
12181
|
-
var
|
|
12448
|
+
var _a22, _b, _c;
|
|
12182
12449
|
async function doTransform({
|
|
12183
12450
|
params,
|
|
12184
12451
|
type
|
|
@@ -12187,7 +12454,7 @@ var doWrap = ({
|
|
|
12187
12454
|
}
|
|
12188
12455
|
return {
|
|
12189
12456
|
specificationVersion: "v3",
|
|
12190
|
-
provider: (
|
|
12457
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12191
12458
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12192
12459
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
12193
12460
|
async doGenerate(params) {
|
|
@@ -12234,7 +12501,7 @@ var doWrap2 = ({
|
|
|
12234
12501
|
modelId,
|
|
12235
12502
|
providerId
|
|
12236
12503
|
}) => {
|
|
12237
|
-
var
|
|
12504
|
+
var _a22, _b, _c, _d;
|
|
12238
12505
|
async function doTransform({
|
|
12239
12506
|
params
|
|
12240
12507
|
}) {
|
|
@@ -12242,7 +12509,7 @@ var doWrap2 = ({
|
|
|
12242
12509
|
}
|
|
12243
12510
|
return {
|
|
12244
12511
|
specificationVersion: "v3",
|
|
12245
|
-
provider: (
|
|
12512
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12246
12513
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12247
12514
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
12248
12515
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -12281,11 +12548,11 @@ var doWrap3 = ({
|
|
|
12281
12548
|
modelId,
|
|
12282
12549
|
providerId
|
|
12283
12550
|
}) => {
|
|
12284
|
-
var
|
|
12551
|
+
var _a22, _b, _c;
|
|
12285
12552
|
async function doTransform({ params }) {
|
|
12286
12553
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
12287
12554
|
}
|
|
12288
|
-
const maxImagesPerCallRaw = (
|
|
12555
|
+
const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
|
|
12289
12556
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
12290
12557
|
return {
|
|
12291
12558
|
specificationVersion: "v3",
|
|
@@ -12435,11 +12702,11 @@ function customProvider({
|
|
|
12435
12702
|
var experimental_customProvider = customProvider;
|
|
12436
12703
|
|
|
12437
12704
|
// src/registry/no-such-provider-error.ts
|
|
12438
|
-
import { AISDKError as
|
|
12439
|
-
var
|
|
12440
|
-
var
|
|
12441
|
-
var
|
|
12442
|
-
var
|
|
12705
|
+
import { AISDKError as AISDKError25, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
|
|
12706
|
+
var name21 = "AI_NoSuchProviderError";
|
|
12707
|
+
var marker21 = `vercel.ai.error.${name21}`;
|
|
12708
|
+
var symbol21 = Symbol.for(marker21);
|
|
12709
|
+
var _a21;
|
|
12443
12710
|
var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
12444
12711
|
constructor({
|
|
12445
12712
|
modelId,
|
|
@@ -12448,16 +12715,16 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
|
12448
12715
|
availableProviders,
|
|
12449
12716
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
12450
12717
|
}) {
|
|
12451
|
-
super({ errorName:
|
|
12452
|
-
this[
|
|
12718
|
+
super({ errorName: name21, modelId, modelType, message });
|
|
12719
|
+
this[_a21] = true;
|
|
12453
12720
|
this.providerId = providerId;
|
|
12454
12721
|
this.availableProviders = availableProviders;
|
|
12455
12722
|
}
|
|
12456
12723
|
static isInstance(error) {
|
|
12457
|
-
return
|
|
12724
|
+
return AISDKError25.hasMarker(error, marker21);
|
|
12458
12725
|
}
|
|
12459
12726
|
};
|
|
12460
|
-
|
|
12727
|
+
_a21 = symbol21;
|
|
12461
12728
|
|
|
12462
12729
|
// src/registry/provider-registry.ts
|
|
12463
12730
|
import {
|
|
@@ -12520,10 +12787,10 @@ var DefaultProviderRegistry = class {
|
|
|
12520
12787
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
12521
12788
|
}
|
|
12522
12789
|
languageModel(id) {
|
|
12523
|
-
var
|
|
12790
|
+
var _a22, _b;
|
|
12524
12791
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
12525
|
-
let model = (_b = (
|
|
12526
|
-
|
|
12792
|
+
let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
12793
|
+
_a22,
|
|
12527
12794
|
modelId
|
|
12528
12795
|
);
|
|
12529
12796
|
if (model == null) {
|
|
@@ -12538,10 +12805,10 @@ var DefaultProviderRegistry = class {
|
|
|
12538
12805
|
return model;
|
|
12539
12806
|
}
|
|
12540
12807
|
embeddingModel(id) {
|
|
12541
|
-
var
|
|
12808
|
+
var _a22;
|
|
12542
12809
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
12543
12810
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
12544
|
-
const model = (
|
|
12811
|
+
const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12545
12812
|
if (model == null) {
|
|
12546
12813
|
throw new NoSuchModelError4({
|
|
12547
12814
|
modelId: id,
|
|
@@ -12551,10 +12818,10 @@ var DefaultProviderRegistry = class {
|
|
|
12551
12818
|
return model;
|
|
12552
12819
|
}
|
|
12553
12820
|
imageModel(id) {
|
|
12554
|
-
var
|
|
12821
|
+
var _a22;
|
|
12555
12822
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
12556
12823
|
const provider = this.getProvider(providerId, "imageModel");
|
|
12557
|
-
let model = (
|
|
12824
|
+
let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12558
12825
|
if (model == null) {
|
|
12559
12826
|
throw new NoSuchModelError4({ modelId: id, modelType: "imageModel" });
|
|
12560
12827
|
}
|
|
@@ -12567,10 +12834,10 @@ var DefaultProviderRegistry = class {
|
|
|
12567
12834
|
return model;
|
|
12568
12835
|
}
|
|
12569
12836
|
transcriptionModel(id) {
|
|
12570
|
-
var
|
|
12837
|
+
var _a22;
|
|
12571
12838
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
12572
12839
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
12573
|
-
const model = (
|
|
12840
|
+
const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12574
12841
|
if (model == null) {
|
|
12575
12842
|
throw new NoSuchModelError4({
|
|
12576
12843
|
modelId: id,
|
|
@@ -12580,20 +12847,20 @@ var DefaultProviderRegistry = class {
|
|
|
12580
12847
|
return model;
|
|
12581
12848
|
}
|
|
12582
12849
|
speechModel(id) {
|
|
12583
|
-
var
|
|
12850
|
+
var _a22;
|
|
12584
12851
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
12585
12852
|
const provider = this.getProvider(providerId, "speechModel");
|
|
12586
|
-
const model = (
|
|
12853
|
+
const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12587
12854
|
if (model == null) {
|
|
12588
12855
|
throw new NoSuchModelError4({ modelId: id, modelType: "speechModel" });
|
|
12589
12856
|
}
|
|
12590
12857
|
return model;
|
|
12591
12858
|
}
|
|
12592
12859
|
rerankingModel(id) {
|
|
12593
|
-
var
|
|
12860
|
+
var _a22;
|
|
12594
12861
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
12595
12862
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
12596
|
-
const model = (
|
|
12863
|
+
const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12597
12864
|
if (model == null) {
|
|
12598
12865
|
throw new NoSuchModelError4({ modelId: id, modelType: "rerankingModel" });
|
|
12599
12866
|
}
|
|
@@ -12651,7 +12918,7 @@ async function rerank({
|
|
|
12651
12918
|
}),
|
|
12652
12919
|
tracer,
|
|
12653
12920
|
fn: async () => {
|
|
12654
|
-
var
|
|
12921
|
+
var _a22, _b;
|
|
12655
12922
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
12656
12923
|
() => recordSpan({
|
|
12657
12924
|
name: "ai.rerank.doRerank",
|
|
@@ -12715,7 +12982,7 @@ async function rerank({
|
|
|
12715
12982
|
providerMetadata,
|
|
12716
12983
|
response: {
|
|
12717
12984
|
id: response == null ? void 0 : response.id,
|
|
12718
|
-
timestamp: (
|
|
12985
|
+
timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
|
|
12719
12986
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
12720
12987
|
headers: response == null ? void 0 : response.headers,
|
|
12721
12988
|
body: response == null ? void 0 : response.body
|
|
@@ -12765,16 +13032,16 @@ async function transcribe({
|
|
|
12765
13032
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
12766
13033
|
const result = await retry(
|
|
12767
13034
|
() => {
|
|
12768
|
-
var
|
|
13035
|
+
var _a22;
|
|
12769
13036
|
return resolvedModel.doGenerate({
|
|
12770
13037
|
audio: audioData,
|
|
12771
13038
|
abortSignal,
|
|
12772
13039
|
headers: headersWithUserAgent,
|
|
12773
13040
|
providerOptions,
|
|
12774
|
-
mediaType: (
|
|
13041
|
+
mediaType: (_a22 = detectMediaType({
|
|
12775
13042
|
data: audioData,
|
|
12776
13043
|
signatures: audioMediaTypeSignatures
|
|
12777
|
-
})) != null ?
|
|
13044
|
+
})) != null ? _a22 : "audio/wav"
|
|
12778
13045
|
});
|
|
12779
13046
|
}
|
|
12780
13047
|
);
|
|
@@ -12798,14 +13065,14 @@ async function transcribe({
|
|
|
12798
13065
|
}
|
|
12799
13066
|
var DefaultTranscriptionResult = class {
|
|
12800
13067
|
constructor(options) {
|
|
12801
|
-
var
|
|
13068
|
+
var _a22;
|
|
12802
13069
|
this.text = options.text;
|
|
12803
13070
|
this.segments = options.segments;
|
|
12804
13071
|
this.language = options.language;
|
|
12805
13072
|
this.durationInSeconds = options.durationInSeconds;
|
|
12806
13073
|
this.warnings = options.warnings;
|
|
12807
13074
|
this.responses = options.responses;
|
|
12808
|
-
this.providerMetadata = (
|
|
13075
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
12809
13076
|
}
|
|
12810
13077
|
};
|
|
12811
13078
|
|
|
@@ -12848,7 +13115,7 @@ async function callCompletionApi({
|
|
|
12848
13115
|
onError,
|
|
12849
13116
|
fetch: fetch2 = getOriginalFetch()
|
|
12850
13117
|
}) {
|
|
12851
|
-
var
|
|
13118
|
+
var _a22;
|
|
12852
13119
|
try {
|
|
12853
13120
|
setLoading(true);
|
|
12854
13121
|
setError(void 0);
|
|
@@ -12876,7 +13143,7 @@ async function callCompletionApi({
|
|
|
12876
13143
|
});
|
|
12877
13144
|
if (!response.ok) {
|
|
12878
13145
|
throw new Error(
|
|
12879
|
-
(
|
|
13146
|
+
(_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
|
|
12880
13147
|
);
|
|
12881
13148
|
}
|
|
12882
13149
|
if (!response.body) {
|
|
@@ -12962,12 +13229,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12962
13229
|
}
|
|
12963
13230
|
return Promise.all(
|
|
12964
13231
|
Array.from(files).map(async (file) => {
|
|
12965
|
-
const { name:
|
|
13232
|
+
const { name: name22, type } = file;
|
|
12966
13233
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
12967
13234
|
const reader = new FileReader();
|
|
12968
13235
|
reader.onload = (readerEvent) => {
|
|
12969
|
-
var
|
|
12970
|
-
resolve3((
|
|
13236
|
+
var _a22;
|
|
13237
|
+
resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
|
|
12971
13238
|
};
|
|
12972
13239
|
reader.onerror = (error) => reject(error);
|
|
12973
13240
|
reader.readAsDataURL(file);
|
|
@@ -12975,7 +13242,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12975
13242
|
return {
|
|
12976
13243
|
type: "file",
|
|
12977
13244
|
mediaType: type,
|
|
12978
|
-
filename:
|
|
13245
|
+
filename: name22,
|
|
12979
13246
|
url: dataUrl
|
|
12980
13247
|
};
|
|
12981
13248
|
})
|
|
@@ -13012,7 +13279,7 @@ var HttpChatTransport = class {
|
|
|
13012
13279
|
abortSignal,
|
|
13013
13280
|
...options
|
|
13014
13281
|
}) {
|
|
13015
|
-
var
|
|
13282
|
+
var _a22, _b, _c, _d, _e;
|
|
13016
13283
|
const resolvedBody = await resolve2(this.body);
|
|
13017
13284
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13018
13285
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13020,7 +13287,7 @@ var HttpChatTransport = class {
|
|
|
13020
13287
|
...normalizeHeaders(resolvedHeaders),
|
|
13021
13288
|
...normalizeHeaders(options.headers)
|
|
13022
13289
|
};
|
|
13023
|
-
const preparedRequest = await ((
|
|
13290
|
+
const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
|
|
13024
13291
|
api: this.api,
|
|
13025
13292
|
id: options.chatId,
|
|
13026
13293
|
messages: options.messages,
|
|
@@ -13064,7 +13331,7 @@ var HttpChatTransport = class {
|
|
|
13064
13331
|
return this.processResponseStream(response.body);
|
|
13065
13332
|
}
|
|
13066
13333
|
async reconnectToStream(options) {
|
|
13067
|
-
var
|
|
13334
|
+
var _a22, _b, _c, _d, _e;
|
|
13068
13335
|
const resolvedBody = await resolve2(this.body);
|
|
13069
13336
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13070
13337
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13072,7 +13339,7 @@ var HttpChatTransport = class {
|
|
|
13072
13339
|
...normalizeHeaders(resolvedHeaders),
|
|
13073
13340
|
...normalizeHeaders(options.headers)
|
|
13074
13341
|
};
|
|
13075
|
-
const preparedRequest = await ((
|
|
13342
|
+
const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
|
|
13076
13343
|
api: this.api,
|
|
13077
13344
|
id: options.chatId,
|
|
13078
13345
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -13150,11 +13417,11 @@ var AbstractChat = class {
|
|
|
13150
13417
|
* If a messageId is provided, the message will be replaced.
|
|
13151
13418
|
*/
|
|
13152
13419
|
this.sendMessage = async (message, options) => {
|
|
13153
|
-
var
|
|
13420
|
+
var _a22, _b, _c, _d;
|
|
13154
13421
|
if (message == null) {
|
|
13155
13422
|
await this.makeRequest({
|
|
13156
13423
|
trigger: "submit-message",
|
|
13157
|
-
messageId: (
|
|
13424
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13158
13425
|
...options
|
|
13159
13426
|
});
|
|
13160
13427
|
return;
|
|
@@ -13264,11 +13531,11 @@ var AbstractChat = class {
|
|
|
13264
13531
|
}
|
|
13265
13532
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13266
13533
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13267
|
-
var
|
|
13534
|
+
var _a22;
|
|
13268
13535
|
if (shouldSend) {
|
|
13269
13536
|
this.makeRequest({
|
|
13270
13537
|
trigger: "submit-message",
|
|
13271
|
-
messageId: (
|
|
13538
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13272
13539
|
...options
|
|
13273
13540
|
});
|
|
13274
13541
|
}
|
|
@@ -13294,11 +13561,11 @@ var AbstractChat = class {
|
|
|
13294
13561
|
}
|
|
13295
13562
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13296
13563
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13297
|
-
var
|
|
13564
|
+
var _a22;
|
|
13298
13565
|
if (shouldSend) {
|
|
13299
13566
|
this.makeRequest({
|
|
13300
13567
|
trigger: "submit-message",
|
|
13301
|
-
messageId: (
|
|
13568
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13302
13569
|
...options
|
|
13303
13570
|
});
|
|
13304
13571
|
}
|
|
@@ -13311,10 +13578,10 @@ var AbstractChat = class {
|
|
|
13311
13578
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
13312
13579
|
*/
|
|
13313
13580
|
this.stop = async () => {
|
|
13314
|
-
var
|
|
13581
|
+
var _a22;
|
|
13315
13582
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
13316
13583
|
return;
|
|
13317
|
-
if ((
|
|
13584
|
+
if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
|
|
13318
13585
|
this.activeResponse.abortController.abort();
|
|
13319
13586
|
}
|
|
13320
13587
|
};
|
|
@@ -13380,7 +13647,7 @@ var AbstractChat = class {
|
|
|
13380
13647
|
body,
|
|
13381
13648
|
messageId
|
|
13382
13649
|
}) {
|
|
13383
|
-
var
|
|
13650
|
+
var _a22, _b, _c;
|
|
13384
13651
|
let resumeStream;
|
|
13385
13652
|
if (trigger === "resume-stream") {
|
|
13386
13653
|
try {
|
|
@@ -13440,9 +13707,9 @@ var AbstractChat = class {
|
|
|
13440
13707
|
() => job({
|
|
13441
13708
|
state: activeResponse.state,
|
|
13442
13709
|
write: () => {
|
|
13443
|
-
var
|
|
13710
|
+
var _a23;
|
|
13444
13711
|
this.setStatus({ status: "streaming" });
|
|
13445
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
13712
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
|
|
13446
13713
|
if (replaceLastMessage) {
|
|
13447
13714
|
this.state.replaceMessage(
|
|
13448
13715
|
this.state.messages.length - 1,
|
|
@@ -13494,7 +13761,7 @@ var AbstractChat = class {
|
|
|
13494
13761
|
isAbort,
|
|
13495
13762
|
isDisconnect,
|
|
13496
13763
|
isError,
|
|
13497
|
-
finishReason: (
|
|
13764
|
+
finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
|
|
13498
13765
|
});
|
|
13499
13766
|
} catch (err) {
|
|
13500
13767
|
console.error(err);
|
|
@@ -13632,7 +13899,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
13632
13899
|
}
|
|
13633
13900
|
};
|
|
13634
13901
|
export {
|
|
13635
|
-
|
|
13902
|
+
AISDKError22 as AISDKError,
|
|
13636
13903
|
APICallError,
|
|
13637
13904
|
AbstractChat,
|
|
13638
13905
|
DefaultChatTransport,
|
|
@@ -13649,6 +13916,7 @@ export {
|
|
|
13649
13916
|
InvalidResponseDataError,
|
|
13650
13917
|
InvalidStreamPartError,
|
|
13651
13918
|
InvalidToolApprovalError,
|
|
13919
|
+
InvalidToolApprovalSignatureError,
|
|
13652
13920
|
InvalidToolInputError,
|
|
13653
13921
|
JSONParseError,
|
|
13654
13922
|
JsonToSseTransformStream,
|
|
@@ -13680,7 +13948,7 @@ export {
|
|
|
13680
13948
|
UnsupportedFunctionalityError,
|
|
13681
13949
|
UnsupportedModelVersionError,
|
|
13682
13950
|
addToolInputExamplesMiddleware,
|
|
13683
|
-
|
|
13951
|
+
asSchema6 as asSchema,
|
|
13684
13952
|
assistantModelMessageSchema,
|
|
13685
13953
|
bindTelemetryIntegration,
|
|
13686
13954
|
callCompletionApi,
|