ai 6.0.201 → 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 +14 -0
- package/dist/index.d.mts +58 -13
- package/dist/index.d.ts +58 -13
- package/dist/index.js +836 -575
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +674 -408
- 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-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 += "[";
|
|
@@ -9979,7 +10244,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9979
10244
|
const inputArray = value.elements;
|
|
9980
10245
|
const resultArray = [];
|
|
9981
10246
|
for (const element of inputArray) {
|
|
9982
|
-
const result = await
|
|
10247
|
+
const result = await safeValidateTypes5({ value: element, schema });
|
|
9983
10248
|
if (!result.success) {
|
|
9984
10249
|
return result;
|
|
9985
10250
|
}
|
|
@@ -10098,9 +10363,9 @@ function getOutputStrategy({
|
|
|
10098
10363
|
}) {
|
|
10099
10364
|
switch (output) {
|
|
10100
10365
|
case "object":
|
|
10101
|
-
return objectOutputStrategy(
|
|
10366
|
+
return objectOutputStrategy(asSchema5(schema));
|
|
10102
10367
|
case "array":
|
|
10103
|
-
return arrayOutputStrategy(
|
|
10368
|
+
return arrayOutputStrategy(asSchema5(schema));
|
|
10104
10369
|
case "enum":
|
|
10105
10370
|
return enumOutputStrategy(enumValues);
|
|
10106
10371
|
case "no-schema":
|
|
@@ -10369,7 +10634,7 @@ async function generateObject(options) {
|
|
|
10369
10634
|
}),
|
|
10370
10635
|
tracer,
|
|
10371
10636
|
fn: async (span) => {
|
|
10372
|
-
var
|
|
10637
|
+
var _a22;
|
|
10373
10638
|
let result;
|
|
10374
10639
|
let finishReason;
|
|
10375
10640
|
let usage;
|
|
@@ -10416,7 +10681,7 @@ async function generateObject(options) {
|
|
|
10416
10681
|
}),
|
|
10417
10682
|
tracer,
|
|
10418
10683
|
fn: async (span2) => {
|
|
10419
|
-
var
|
|
10684
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
10420
10685
|
const result2 = await model.doGenerate({
|
|
10421
10686
|
responseFormat: {
|
|
10422
10687
|
type: "json",
|
|
@@ -10431,7 +10696,7 @@ async function generateObject(options) {
|
|
|
10431
10696
|
headers: headersWithUserAgent
|
|
10432
10697
|
});
|
|
10433
10698
|
const responseData = {
|
|
10434
|
-
id: (_b = (
|
|
10699
|
+
id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
|
|
10435
10700
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
10436
10701
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
10437
10702
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -10487,7 +10752,7 @@ async function generateObject(options) {
|
|
|
10487
10752
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
10488
10753
|
warnings = generateResult.warnings;
|
|
10489
10754
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
10490
|
-
request = (
|
|
10755
|
+
request = (_a22 = generateResult.request) != null ? _a22 : {};
|
|
10491
10756
|
response = generateResult.responseData;
|
|
10492
10757
|
reasoning = generateResult.reasoning;
|
|
10493
10758
|
logWarnings({
|
|
@@ -10550,9 +10815,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
10550
10815
|
this.reasoning = options.reasoning;
|
|
10551
10816
|
}
|
|
10552
10817
|
toJsonResponse(init) {
|
|
10553
|
-
var
|
|
10818
|
+
var _a22;
|
|
10554
10819
|
return new Response(JSON.stringify(this.object), {
|
|
10555
|
-
status: (
|
|
10820
|
+
status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
|
|
10556
10821
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
10557
10822
|
"content-type": "application/json; charset=utf-8"
|
|
10558
10823
|
})
|
|
@@ -10686,8 +10951,8 @@ function simulateReadableStream({
|
|
|
10686
10951
|
chunkDelayInMs = 0,
|
|
10687
10952
|
_internal
|
|
10688
10953
|
}) {
|
|
10689
|
-
var
|
|
10690
|
-
const delay2 = (
|
|
10954
|
+
var _a22;
|
|
10955
|
+
const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : delayFunction;
|
|
10691
10956
|
let index = 0;
|
|
10692
10957
|
return new ReadableStream({
|
|
10693
10958
|
async pull(controller) {
|
|
@@ -10949,7 +11214,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10949
11214
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
10950
11215
|
new TransformStream({
|
|
10951
11216
|
async transform(chunk, controller) {
|
|
10952
|
-
var
|
|
11217
|
+
var _a22, _b, _c;
|
|
10953
11218
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
10954
11219
|
warnings = chunk.warnings;
|
|
10955
11220
|
return;
|
|
@@ -10999,7 +11264,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10999
11264
|
switch (chunk.type) {
|
|
11000
11265
|
case "response-metadata": {
|
|
11001
11266
|
fullResponse = {
|
|
11002
|
-
id: (
|
|
11267
|
+
id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
|
|
11003
11268
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11004
11269
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11005
11270
|
};
|
|
@@ -11273,7 +11538,7 @@ async function generateSpeech({
|
|
|
11273
11538
|
abortSignal,
|
|
11274
11539
|
headers
|
|
11275
11540
|
}) {
|
|
11276
|
-
var
|
|
11541
|
+
var _a22;
|
|
11277
11542
|
const resolvedModel = resolveSpeechModel(model);
|
|
11278
11543
|
if (!resolvedModel) {
|
|
11279
11544
|
throw new Error("Model could not be resolved");
|
|
@@ -11310,10 +11575,10 @@ async function generateSpeech({
|
|
|
11310
11575
|
return new DefaultSpeechResult({
|
|
11311
11576
|
audio: new DefaultGeneratedAudioFile({
|
|
11312
11577
|
data: result.audio,
|
|
11313
|
-
mediaType: (
|
|
11578
|
+
mediaType: (_a22 = detectMediaType({
|
|
11314
11579
|
data: result.audio,
|
|
11315
11580
|
signatures: audioMediaTypeSignatures
|
|
11316
|
-
})) != null ?
|
|
11581
|
+
})) != null ? _a22 : "audio/mp3"
|
|
11317
11582
|
}),
|
|
11318
11583
|
warnings: result.warnings,
|
|
11319
11584
|
responses: [result.response],
|
|
@@ -11322,11 +11587,11 @@ async function generateSpeech({
|
|
|
11322
11587
|
}
|
|
11323
11588
|
var DefaultSpeechResult = class {
|
|
11324
11589
|
constructor(options) {
|
|
11325
|
-
var
|
|
11590
|
+
var _a22;
|
|
11326
11591
|
this.audio = options.audio;
|
|
11327
11592
|
this.warnings = options.warnings;
|
|
11328
11593
|
this.responses = options.responses;
|
|
11329
|
-
this.providerMetadata = (
|
|
11594
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
11330
11595
|
}
|
|
11331
11596
|
};
|
|
11332
11597
|
|
|
@@ -11511,7 +11776,7 @@ function smoothStream({
|
|
|
11511
11776
|
|
|
11512
11777
|
// src/generate-video/generate-video.ts
|
|
11513
11778
|
import {
|
|
11514
|
-
convertBase64ToUint8Array as
|
|
11779
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array6,
|
|
11515
11780
|
withUserAgentSuffix as withUserAgentSuffix8
|
|
11516
11781
|
} from "@ai-sdk/provider-utils";
|
|
11517
11782
|
var defaultDownload = createDownload();
|
|
@@ -11531,7 +11796,7 @@ async function experimental_generateVideo({
|
|
|
11531
11796
|
headers,
|
|
11532
11797
|
download: downloadFn = defaultDownload
|
|
11533
11798
|
}) {
|
|
11534
|
-
var
|
|
11799
|
+
var _a22;
|
|
11535
11800
|
const model = resolveVideoModel(modelArg);
|
|
11536
11801
|
const headersWithUserAgent = withUserAgentSuffix8(
|
|
11537
11802
|
headers != null ? headers : {},
|
|
@@ -11542,7 +11807,7 @@ async function experimental_generateVideo({
|
|
|
11542
11807
|
abortSignal
|
|
11543
11808
|
});
|
|
11544
11809
|
const { prompt, image } = normalizePrompt2(promptArg);
|
|
11545
|
-
const maxVideosPerCallWithDefault = (
|
|
11810
|
+
const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
|
|
11546
11811
|
const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
|
|
11547
11812
|
const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
|
|
11548
11813
|
const remaining = n - index * maxVideosPerCallWithDefault;
|
|
@@ -11664,7 +11929,7 @@ async function experimental_generateVideo({
|
|
|
11664
11929
|
};
|
|
11665
11930
|
}
|
|
11666
11931
|
function normalizePrompt2(promptArg) {
|
|
11667
|
-
var
|
|
11932
|
+
var _a22, _b;
|
|
11668
11933
|
if (typeof promptArg === "string") {
|
|
11669
11934
|
return {
|
|
11670
11935
|
prompt: promptArg,
|
|
@@ -11685,14 +11950,14 @@ function normalizePrompt2(promptArg) {
|
|
|
11685
11950
|
image = {
|
|
11686
11951
|
type: "file",
|
|
11687
11952
|
mediaType: mediaType != null ? mediaType : "image/png",
|
|
11688
|
-
data:
|
|
11953
|
+
data: convertBase64ToUint8Array6(base64Content != null ? base64Content : "")
|
|
11689
11954
|
};
|
|
11690
11955
|
} else {
|
|
11691
|
-
const bytes =
|
|
11692
|
-
const mediaType = (
|
|
11956
|
+
const bytes = convertBase64ToUint8Array6(dataContent);
|
|
11957
|
+
const mediaType = (_a22 = detectMediaType({
|
|
11693
11958
|
data: bytes,
|
|
11694
11959
|
signatures: imageMediaTypeSignatures
|
|
11695
|
-
})) != null ?
|
|
11960
|
+
})) != null ? _a22 : "image/png";
|
|
11696
11961
|
image = {
|
|
11697
11962
|
type: "file",
|
|
11698
11963
|
mediaType,
|
|
@@ -11752,8 +12017,8 @@ function defaultTransform(text2) {
|
|
|
11752
12017
|
return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
11753
12018
|
}
|
|
11754
12019
|
function extractJsonMiddleware(options) {
|
|
11755
|
-
var
|
|
11756
|
-
const transform = (
|
|
12020
|
+
var _a22;
|
|
12021
|
+
const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
|
|
11757
12022
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
11758
12023
|
return {
|
|
11759
12024
|
specificationVersion: "v3",
|
|
@@ -12127,13 +12392,13 @@ function addToolInputExamplesMiddleware({
|
|
|
12127
12392
|
return {
|
|
12128
12393
|
specificationVersion: "v3",
|
|
12129
12394
|
transformParams: async ({ params }) => {
|
|
12130
|
-
var
|
|
12131
|
-
if (!((
|
|
12395
|
+
var _a22;
|
|
12396
|
+
if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
|
|
12132
12397
|
return params;
|
|
12133
12398
|
}
|
|
12134
12399
|
const transformedTools = params.tools.map((tool2) => {
|
|
12135
|
-
var
|
|
12136
|
-
if (tool2.type !== "function" || !((
|
|
12400
|
+
var _a23;
|
|
12401
|
+
if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
|
|
12137
12402
|
return tool2;
|
|
12138
12403
|
}
|
|
12139
12404
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -12180,7 +12445,7 @@ var doWrap = ({
|
|
|
12180
12445
|
modelId,
|
|
12181
12446
|
providerId
|
|
12182
12447
|
}) => {
|
|
12183
|
-
var
|
|
12448
|
+
var _a22, _b, _c;
|
|
12184
12449
|
async function doTransform({
|
|
12185
12450
|
params,
|
|
12186
12451
|
type
|
|
@@ -12189,7 +12454,7 @@ var doWrap = ({
|
|
|
12189
12454
|
}
|
|
12190
12455
|
return {
|
|
12191
12456
|
specificationVersion: "v3",
|
|
12192
|
-
provider: (
|
|
12457
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12193
12458
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12194
12459
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
12195
12460
|
async doGenerate(params) {
|
|
@@ -12236,7 +12501,7 @@ var doWrap2 = ({
|
|
|
12236
12501
|
modelId,
|
|
12237
12502
|
providerId
|
|
12238
12503
|
}) => {
|
|
12239
|
-
var
|
|
12504
|
+
var _a22, _b, _c, _d;
|
|
12240
12505
|
async function doTransform({
|
|
12241
12506
|
params
|
|
12242
12507
|
}) {
|
|
@@ -12244,7 +12509,7 @@ var doWrap2 = ({
|
|
|
12244
12509
|
}
|
|
12245
12510
|
return {
|
|
12246
12511
|
specificationVersion: "v3",
|
|
12247
|
-
provider: (
|
|
12512
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12248
12513
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12249
12514
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
12250
12515
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -12283,11 +12548,11 @@ var doWrap3 = ({
|
|
|
12283
12548
|
modelId,
|
|
12284
12549
|
providerId
|
|
12285
12550
|
}) => {
|
|
12286
|
-
var
|
|
12551
|
+
var _a22, _b, _c;
|
|
12287
12552
|
async function doTransform({ params }) {
|
|
12288
12553
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
12289
12554
|
}
|
|
12290
|
-
const maxImagesPerCallRaw = (
|
|
12555
|
+
const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
|
|
12291
12556
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
12292
12557
|
return {
|
|
12293
12558
|
specificationVersion: "v3",
|
|
@@ -12437,11 +12702,11 @@ function customProvider({
|
|
|
12437
12702
|
var experimental_customProvider = customProvider;
|
|
12438
12703
|
|
|
12439
12704
|
// src/registry/no-such-provider-error.ts
|
|
12440
|
-
import { AISDKError as
|
|
12441
|
-
var
|
|
12442
|
-
var
|
|
12443
|
-
var
|
|
12444
|
-
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;
|
|
12445
12710
|
var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
12446
12711
|
constructor({
|
|
12447
12712
|
modelId,
|
|
@@ -12450,16 +12715,16 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
|
12450
12715
|
availableProviders,
|
|
12451
12716
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
12452
12717
|
}) {
|
|
12453
|
-
super({ errorName:
|
|
12454
|
-
this[
|
|
12718
|
+
super({ errorName: name21, modelId, modelType, message });
|
|
12719
|
+
this[_a21] = true;
|
|
12455
12720
|
this.providerId = providerId;
|
|
12456
12721
|
this.availableProviders = availableProviders;
|
|
12457
12722
|
}
|
|
12458
12723
|
static isInstance(error) {
|
|
12459
|
-
return
|
|
12724
|
+
return AISDKError25.hasMarker(error, marker21);
|
|
12460
12725
|
}
|
|
12461
12726
|
};
|
|
12462
|
-
|
|
12727
|
+
_a21 = symbol21;
|
|
12463
12728
|
|
|
12464
12729
|
// src/registry/provider-registry.ts
|
|
12465
12730
|
import {
|
|
@@ -12522,10 +12787,10 @@ var DefaultProviderRegistry = class {
|
|
|
12522
12787
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
12523
12788
|
}
|
|
12524
12789
|
languageModel(id) {
|
|
12525
|
-
var
|
|
12790
|
+
var _a22, _b;
|
|
12526
12791
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
12527
|
-
let model = (_b = (
|
|
12528
|
-
|
|
12792
|
+
let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
12793
|
+
_a22,
|
|
12529
12794
|
modelId
|
|
12530
12795
|
);
|
|
12531
12796
|
if (model == null) {
|
|
@@ -12540,10 +12805,10 @@ var DefaultProviderRegistry = class {
|
|
|
12540
12805
|
return model;
|
|
12541
12806
|
}
|
|
12542
12807
|
embeddingModel(id) {
|
|
12543
|
-
var
|
|
12808
|
+
var _a22;
|
|
12544
12809
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
12545
12810
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
12546
|
-
const model = (
|
|
12811
|
+
const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12547
12812
|
if (model == null) {
|
|
12548
12813
|
throw new NoSuchModelError4({
|
|
12549
12814
|
modelId: id,
|
|
@@ -12553,10 +12818,10 @@ var DefaultProviderRegistry = class {
|
|
|
12553
12818
|
return model;
|
|
12554
12819
|
}
|
|
12555
12820
|
imageModel(id) {
|
|
12556
|
-
var
|
|
12821
|
+
var _a22;
|
|
12557
12822
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
12558
12823
|
const provider = this.getProvider(providerId, "imageModel");
|
|
12559
|
-
let model = (
|
|
12824
|
+
let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12560
12825
|
if (model == null) {
|
|
12561
12826
|
throw new NoSuchModelError4({ modelId: id, modelType: "imageModel" });
|
|
12562
12827
|
}
|
|
@@ -12569,10 +12834,10 @@ var DefaultProviderRegistry = class {
|
|
|
12569
12834
|
return model;
|
|
12570
12835
|
}
|
|
12571
12836
|
transcriptionModel(id) {
|
|
12572
|
-
var
|
|
12837
|
+
var _a22;
|
|
12573
12838
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
12574
12839
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
12575
|
-
const model = (
|
|
12840
|
+
const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12576
12841
|
if (model == null) {
|
|
12577
12842
|
throw new NoSuchModelError4({
|
|
12578
12843
|
modelId: id,
|
|
@@ -12582,20 +12847,20 @@ var DefaultProviderRegistry = class {
|
|
|
12582
12847
|
return model;
|
|
12583
12848
|
}
|
|
12584
12849
|
speechModel(id) {
|
|
12585
|
-
var
|
|
12850
|
+
var _a22;
|
|
12586
12851
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
12587
12852
|
const provider = this.getProvider(providerId, "speechModel");
|
|
12588
|
-
const model = (
|
|
12853
|
+
const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12589
12854
|
if (model == null) {
|
|
12590
12855
|
throw new NoSuchModelError4({ modelId: id, modelType: "speechModel" });
|
|
12591
12856
|
}
|
|
12592
12857
|
return model;
|
|
12593
12858
|
}
|
|
12594
12859
|
rerankingModel(id) {
|
|
12595
|
-
var
|
|
12860
|
+
var _a22;
|
|
12596
12861
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
12597
12862
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
12598
|
-
const model = (
|
|
12863
|
+
const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12599
12864
|
if (model == null) {
|
|
12600
12865
|
throw new NoSuchModelError4({ modelId: id, modelType: "rerankingModel" });
|
|
12601
12866
|
}
|
|
@@ -12653,7 +12918,7 @@ async function rerank({
|
|
|
12653
12918
|
}),
|
|
12654
12919
|
tracer,
|
|
12655
12920
|
fn: async () => {
|
|
12656
|
-
var
|
|
12921
|
+
var _a22, _b;
|
|
12657
12922
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
12658
12923
|
() => recordSpan({
|
|
12659
12924
|
name: "ai.rerank.doRerank",
|
|
@@ -12717,7 +12982,7 @@ async function rerank({
|
|
|
12717
12982
|
providerMetadata,
|
|
12718
12983
|
response: {
|
|
12719
12984
|
id: response == null ? void 0 : response.id,
|
|
12720
|
-
timestamp: (
|
|
12985
|
+
timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
|
|
12721
12986
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
12722
12987
|
headers: response == null ? void 0 : response.headers,
|
|
12723
12988
|
body: response == null ? void 0 : response.body
|
|
@@ -12767,16 +13032,16 @@ async function transcribe({
|
|
|
12767
13032
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
12768
13033
|
const result = await retry(
|
|
12769
13034
|
() => {
|
|
12770
|
-
var
|
|
13035
|
+
var _a22;
|
|
12771
13036
|
return resolvedModel.doGenerate({
|
|
12772
13037
|
audio: audioData,
|
|
12773
13038
|
abortSignal,
|
|
12774
13039
|
headers: headersWithUserAgent,
|
|
12775
13040
|
providerOptions,
|
|
12776
|
-
mediaType: (
|
|
13041
|
+
mediaType: (_a22 = detectMediaType({
|
|
12777
13042
|
data: audioData,
|
|
12778
13043
|
signatures: audioMediaTypeSignatures
|
|
12779
|
-
})) != null ?
|
|
13044
|
+
})) != null ? _a22 : "audio/wav"
|
|
12780
13045
|
});
|
|
12781
13046
|
}
|
|
12782
13047
|
);
|
|
@@ -12800,14 +13065,14 @@ async function transcribe({
|
|
|
12800
13065
|
}
|
|
12801
13066
|
var DefaultTranscriptionResult = class {
|
|
12802
13067
|
constructor(options) {
|
|
12803
|
-
var
|
|
13068
|
+
var _a22;
|
|
12804
13069
|
this.text = options.text;
|
|
12805
13070
|
this.segments = options.segments;
|
|
12806
13071
|
this.language = options.language;
|
|
12807
13072
|
this.durationInSeconds = options.durationInSeconds;
|
|
12808
13073
|
this.warnings = options.warnings;
|
|
12809
13074
|
this.responses = options.responses;
|
|
12810
|
-
this.providerMetadata = (
|
|
13075
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
12811
13076
|
}
|
|
12812
13077
|
};
|
|
12813
13078
|
|
|
@@ -12850,7 +13115,7 @@ async function callCompletionApi({
|
|
|
12850
13115
|
onError,
|
|
12851
13116
|
fetch: fetch2 = getOriginalFetch()
|
|
12852
13117
|
}) {
|
|
12853
|
-
var
|
|
13118
|
+
var _a22;
|
|
12854
13119
|
try {
|
|
12855
13120
|
setLoading(true);
|
|
12856
13121
|
setError(void 0);
|
|
@@ -12878,7 +13143,7 @@ async function callCompletionApi({
|
|
|
12878
13143
|
});
|
|
12879
13144
|
if (!response.ok) {
|
|
12880
13145
|
throw new Error(
|
|
12881
|
-
(
|
|
13146
|
+
(_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
|
|
12882
13147
|
);
|
|
12883
13148
|
}
|
|
12884
13149
|
if (!response.body) {
|
|
@@ -12964,12 +13229,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12964
13229
|
}
|
|
12965
13230
|
return Promise.all(
|
|
12966
13231
|
Array.from(files).map(async (file) => {
|
|
12967
|
-
const { name:
|
|
13232
|
+
const { name: name22, type } = file;
|
|
12968
13233
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
12969
13234
|
const reader = new FileReader();
|
|
12970
13235
|
reader.onload = (readerEvent) => {
|
|
12971
|
-
var
|
|
12972
|
-
resolve3((
|
|
13236
|
+
var _a22;
|
|
13237
|
+
resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
|
|
12973
13238
|
};
|
|
12974
13239
|
reader.onerror = (error) => reject(error);
|
|
12975
13240
|
reader.readAsDataURL(file);
|
|
@@ -12977,7 +13242,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12977
13242
|
return {
|
|
12978
13243
|
type: "file",
|
|
12979
13244
|
mediaType: type,
|
|
12980
|
-
filename:
|
|
13245
|
+
filename: name22,
|
|
12981
13246
|
url: dataUrl
|
|
12982
13247
|
};
|
|
12983
13248
|
})
|
|
@@ -13014,7 +13279,7 @@ var HttpChatTransport = class {
|
|
|
13014
13279
|
abortSignal,
|
|
13015
13280
|
...options
|
|
13016
13281
|
}) {
|
|
13017
|
-
var
|
|
13282
|
+
var _a22, _b, _c, _d, _e;
|
|
13018
13283
|
const resolvedBody = await resolve2(this.body);
|
|
13019
13284
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13020
13285
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13022,7 +13287,7 @@ var HttpChatTransport = class {
|
|
|
13022
13287
|
...normalizeHeaders(resolvedHeaders),
|
|
13023
13288
|
...normalizeHeaders(options.headers)
|
|
13024
13289
|
};
|
|
13025
|
-
const preparedRequest = await ((
|
|
13290
|
+
const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
|
|
13026
13291
|
api: this.api,
|
|
13027
13292
|
id: options.chatId,
|
|
13028
13293
|
messages: options.messages,
|
|
@@ -13066,7 +13331,7 @@ var HttpChatTransport = class {
|
|
|
13066
13331
|
return this.processResponseStream(response.body);
|
|
13067
13332
|
}
|
|
13068
13333
|
async reconnectToStream(options) {
|
|
13069
|
-
var
|
|
13334
|
+
var _a22, _b, _c, _d, _e;
|
|
13070
13335
|
const resolvedBody = await resolve2(this.body);
|
|
13071
13336
|
const resolvedHeaders = await resolve2(this.headers);
|
|
13072
13337
|
const resolvedCredentials = await resolve2(this.credentials);
|
|
@@ -13074,7 +13339,7 @@ var HttpChatTransport = class {
|
|
|
13074
13339
|
...normalizeHeaders(resolvedHeaders),
|
|
13075
13340
|
...normalizeHeaders(options.headers)
|
|
13076
13341
|
};
|
|
13077
|
-
const preparedRequest = await ((
|
|
13342
|
+
const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
|
|
13078
13343
|
api: this.api,
|
|
13079
13344
|
id: options.chatId,
|
|
13080
13345
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -13152,11 +13417,11 @@ var AbstractChat = class {
|
|
|
13152
13417
|
* If a messageId is provided, the message will be replaced.
|
|
13153
13418
|
*/
|
|
13154
13419
|
this.sendMessage = async (message, options) => {
|
|
13155
|
-
var
|
|
13420
|
+
var _a22, _b, _c, _d;
|
|
13156
13421
|
if (message == null) {
|
|
13157
13422
|
await this.makeRequest({
|
|
13158
13423
|
trigger: "submit-message",
|
|
13159
|
-
messageId: (
|
|
13424
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13160
13425
|
...options
|
|
13161
13426
|
});
|
|
13162
13427
|
return;
|
|
@@ -13266,11 +13531,11 @@ var AbstractChat = class {
|
|
|
13266
13531
|
}
|
|
13267
13532
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13268
13533
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13269
|
-
var
|
|
13534
|
+
var _a22;
|
|
13270
13535
|
if (shouldSend) {
|
|
13271
13536
|
this.makeRequest({
|
|
13272
13537
|
trigger: "submit-message",
|
|
13273
|
-
messageId: (
|
|
13538
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13274
13539
|
...options
|
|
13275
13540
|
});
|
|
13276
13541
|
}
|
|
@@ -13296,11 +13561,11 @@ var AbstractChat = class {
|
|
|
13296
13561
|
}
|
|
13297
13562
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13298
13563
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13299
|
-
var
|
|
13564
|
+
var _a22;
|
|
13300
13565
|
if (shouldSend) {
|
|
13301
13566
|
this.makeRequest({
|
|
13302
13567
|
trigger: "submit-message",
|
|
13303
|
-
messageId: (
|
|
13568
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13304
13569
|
...options
|
|
13305
13570
|
});
|
|
13306
13571
|
}
|
|
@@ -13313,10 +13578,10 @@ var AbstractChat = class {
|
|
|
13313
13578
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
13314
13579
|
*/
|
|
13315
13580
|
this.stop = async () => {
|
|
13316
|
-
var
|
|
13581
|
+
var _a22;
|
|
13317
13582
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
13318
13583
|
return;
|
|
13319
|
-
if ((
|
|
13584
|
+
if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
|
|
13320
13585
|
this.activeResponse.abortController.abort();
|
|
13321
13586
|
}
|
|
13322
13587
|
};
|
|
@@ -13382,7 +13647,7 @@ var AbstractChat = class {
|
|
|
13382
13647
|
body,
|
|
13383
13648
|
messageId
|
|
13384
13649
|
}) {
|
|
13385
|
-
var
|
|
13650
|
+
var _a22, _b, _c;
|
|
13386
13651
|
let resumeStream;
|
|
13387
13652
|
if (trigger === "resume-stream") {
|
|
13388
13653
|
try {
|
|
@@ -13442,9 +13707,9 @@ var AbstractChat = class {
|
|
|
13442
13707
|
() => job({
|
|
13443
13708
|
state: activeResponse.state,
|
|
13444
13709
|
write: () => {
|
|
13445
|
-
var
|
|
13710
|
+
var _a23;
|
|
13446
13711
|
this.setStatus({ status: "streaming" });
|
|
13447
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
13712
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
|
|
13448
13713
|
if (replaceLastMessage) {
|
|
13449
13714
|
this.state.replaceMessage(
|
|
13450
13715
|
this.state.messages.length - 1,
|
|
@@ -13496,7 +13761,7 @@ var AbstractChat = class {
|
|
|
13496
13761
|
isAbort,
|
|
13497
13762
|
isDisconnect,
|
|
13498
13763
|
isError,
|
|
13499
|
-
finishReason: (
|
|
13764
|
+
finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
|
|
13500
13765
|
});
|
|
13501
13766
|
} catch (err) {
|
|
13502
13767
|
console.error(err);
|
|
@@ -13634,7 +13899,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
13634
13899
|
}
|
|
13635
13900
|
};
|
|
13636
13901
|
export {
|
|
13637
|
-
|
|
13902
|
+
AISDKError22 as AISDKError,
|
|
13638
13903
|
APICallError,
|
|
13639
13904
|
AbstractChat,
|
|
13640
13905
|
DefaultChatTransport,
|
|
@@ -13651,6 +13916,7 @@ export {
|
|
|
13651
13916
|
InvalidResponseDataError,
|
|
13652
13917
|
InvalidStreamPartError,
|
|
13653
13918
|
InvalidToolApprovalError,
|
|
13919
|
+
InvalidToolApprovalSignatureError,
|
|
13654
13920
|
InvalidToolInputError,
|
|
13655
13921
|
JSONParseError,
|
|
13656
13922
|
JsonToSseTransformStream,
|
|
@@ -13682,7 +13948,7 @@ export {
|
|
|
13682
13948
|
UnsupportedFunctionalityError,
|
|
13683
13949
|
UnsupportedModelVersionError,
|
|
13684
13950
|
addToolInputExamplesMiddleware,
|
|
13685
|
-
|
|
13951
|
+
asSchema6 as asSchema,
|
|
13686
13952
|
assistantModelMessageSchema,
|
|
13687
13953
|
bindTelemetryIntegration,
|
|
13688
13954
|
callCompletionApi,
|