ai 6.0.201 → 6.0.203
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/dist/index.d.mts +61 -15
- package/dist/index.d.ts +61 -15
- package/dist/index.js +853 -592
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +695 -430
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +10 -12
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +11 -13
- package/dist/internal/index.mjs.map +1 -1
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +32 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +20 -2
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +1 -1
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-signature-error.mdx +31 -0
- package/package.json +3 -3
- package/src/error/index.ts +1 -0
- package/src/error/invalid-tool-approval-signature-error.ts +35 -0
- package/src/generate-text/generate-text.ts +48 -6
- package/src/generate-text/run-tools-transformation.ts +14 -1
- package/src/generate-text/stream-text.ts +47 -11
- package/src/generate-text/to-response-messages.ts +1 -0
- package/src/generate-text/tool-approval-request-output.ts +5 -0
- package/src/generate-text/tool-approval-signature.ts +125 -0
- package/src/generate-text/validate-tool-approvals.ts +124 -0
- package/src/middleware/extract-json-middleware.ts +2 -1
- package/src/middleware/extract-reasoning-middleware.ts +2 -1
- package/src/ui/convert-to-model-messages.ts +3 -0
- package/src/ui/process-ui-message-stream.ts +6 -1
- package/src/ui/ui-messages.ts +10 -0
- package/src/ui/validate-ui-messages.ts +10 -0
- package/src/ui-message-stream/create-ui-message-stream.ts +2 -3
- package/src/ui-message-stream/ui-message-chunks.ts +2 -0
- package/src/util/download/download.ts +11 -14
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
6
|
var __export = (target, all) => {
|
|
7
|
-
for (var
|
|
8
|
-
__defProp(target,
|
|
7
|
+
for (var name22 in all)
|
|
8
|
+
__defProp(target, name22, { get: all[name22], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -20,36 +20,37 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
AISDKError: () =>
|
|
24
|
-
APICallError: () =>
|
|
23
|
+
AISDKError: () => import_provider22.AISDKError,
|
|
24
|
+
APICallError: () => import_provider22.APICallError,
|
|
25
25
|
AbstractChat: () => AbstractChat,
|
|
26
26
|
DefaultChatTransport: () => DefaultChatTransport,
|
|
27
27
|
DefaultGeneratedFile: () => DefaultGeneratedFile,
|
|
28
28
|
DirectChatTransport: () => DirectChatTransport,
|
|
29
29
|
DownloadError: () => import_provider_utils.DownloadError,
|
|
30
|
-
EmptyResponseBodyError: () =>
|
|
30
|
+
EmptyResponseBodyError: () => import_provider22.EmptyResponseBodyError,
|
|
31
31
|
Experimental_Agent: () => ToolLoopAgent,
|
|
32
32
|
HttpChatTransport: () => HttpChatTransport,
|
|
33
33
|
InvalidArgumentError: () => InvalidArgumentError,
|
|
34
34
|
InvalidDataContentError: () => InvalidDataContentError,
|
|
35
35
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
|
36
|
-
InvalidPromptError: () =>
|
|
37
|
-
InvalidResponseDataError: () =>
|
|
36
|
+
InvalidPromptError: () => import_provider22.InvalidPromptError,
|
|
37
|
+
InvalidResponseDataError: () => import_provider22.InvalidResponseDataError,
|
|
38
38
|
InvalidStreamPartError: () => InvalidStreamPartError,
|
|
39
39
|
InvalidToolApprovalError: () => InvalidToolApprovalError,
|
|
40
|
+
InvalidToolApprovalSignatureError: () => InvalidToolApprovalSignatureError,
|
|
40
41
|
InvalidToolInputError: () => InvalidToolInputError,
|
|
41
|
-
JSONParseError: () =>
|
|
42
|
+
JSONParseError: () => import_provider22.JSONParseError,
|
|
42
43
|
JsonToSseTransformStream: () => JsonToSseTransformStream,
|
|
43
|
-
LoadAPIKeyError: () =>
|
|
44
|
-
LoadSettingError: () =>
|
|
44
|
+
LoadAPIKeyError: () => import_provider22.LoadAPIKeyError,
|
|
45
|
+
LoadSettingError: () => import_provider22.LoadSettingError,
|
|
45
46
|
MessageConversionError: () => MessageConversionError,
|
|
46
47
|
MissingToolResultsError: () => MissingToolResultsError,
|
|
47
|
-
NoContentGeneratedError: () =>
|
|
48
|
+
NoContentGeneratedError: () => import_provider22.NoContentGeneratedError,
|
|
48
49
|
NoImageGeneratedError: () => NoImageGeneratedError,
|
|
49
50
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
|
50
51
|
NoOutputGeneratedError: () => NoOutputGeneratedError,
|
|
51
52
|
NoSpeechGeneratedError: () => NoSpeechGeneratedError,
|
|
52
|
-
NoSuchModelError: () =>
|
|
53
|
+
NoSuchModelError: () => import_provider22.NoSuchModelError,
|
|
53
54
|
NoSuchProviderError: () => NoSuchProviderError,
|
|
54
55
|
NoSuchToolError: () => NoSuchToolError,
|
|
55
56
|
NoTranscriptGeneratedError: () => NoTranscriptGeneratedError,
|
|
@@ -58,17 +59,17 @@ __export(src_exports, {
|
|
|
58
59
|
RetryError: () => RetryError,
|
|
59
60
|
SerialJobExecutor: () => SerialJobExecutor,
|
|
60
61
|
TextStreamChatTransport: () => TextStreamChatTransport,
|
|
61
|
-
TooManyEmbeddingValuesForCallError: () =>
|
|
62
|
+
TooManyEmbeddingValuesForCallError: () => import_provider22.TooManyEmbeddingValuesForCallError,
|
|
62
63
|
ToolCallNotFoundForApprovalError: () => ToolCallNotFoundForApprovalError,
|
|
63
64
|
ToolCallRepairError: () => ToolCallRepairError,
|
|
64
65
|
ToolLoopAgent: () => ToolLoopAgent,
|
|
65
|
-
TypeValidationError: () =>
|
|
66
|
+
TypeValidationError: () => import_provider22.TypeValidationError,
|
|
66
67
|
UIMessageStreamError: () => UIMessageStreamError,
|
|
67
68
|
UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
|
|
68
|
-
UnsupportedFunctionalityError: () =>
|
|
69
|
+
UnsupportedFunctionalityError: () => import_provider22.UnsupportedFunctionalityError,
|
|
69
70
|
UnsupportedModelVersionError: () => UnsupportedModelVersionError,
|
|
70
71
|
addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
|
|
71
|
-
asSchema: () =>
|
|
72
|
+
asSchema: () => import_provider_utils41.asSchema,
|
|
72
73
|
assistantModelMessageSchema: () => assistantModelMessageSchema,
|
|
73
74
|
bindTelemetryIntegration: () => bindTelemetryIntegration,
|
|
74
75
|
callCompletionApi: () => callCompletionApi,
|
|
@@ -80,7 +81,7 @@ __export(src_exports, {
|
|
|
80
81
|
createAgentUIStreamResponse: () => createAgentUIStreamResponse,
|
|
81
82
|
createDownload: () => createDownload,
|
|
82
83
|
createGateway: () => import_gateway4.createGateway,
|
|
83
|
-
createIdGenerator: () =>
|
|
84
|
+
createIdGenerator: () => import_provider_utils41.createIdGenerator,
|
|
84
85
|
createProviderRegistry: () => createProviderRegistry,
|
|
85
86
|
createTextStreamResponse: () => createTextStreamResponse,
|
|
86
87
|
createUIMessageStream: () => createUIMessageStream,
|
|
@@ -88,7 +89,7 @@ __export(src_exports, {
|
|
|
88
89
|
customProvider: () => customProvider,
|
|
89
90
|
defaultEmbeddingSettingsMiddleware: () => defaultEmbeddingSettingsMiddleware,
|
|
90
91
|
defaultSettingsMiddleware: () => defaultSettingsMiddleware,
|
|
91
|
-
dynamicTool: () =>
|
|
92
|
+
dynamicTool: () => import_provider_utils41.dynamicTool,
|
|
92
93
|
embed: () => embed,
|
|
93
94
|
embedMany: () => embedMany,
|
|
94
95
|
experimental_createProviderRegistry: () => experimental_createProviderRegistry,
|
|
@@ -100,7 +101,7 @@ __export(src_exports, {
|
|
|
100
101
|
extractJsonMiddleware: () => extractJsonMiddleware,
|
|
101
102
|
extractReasoningMiddleware: () => extractReasoningMiddleware,
|
|
102
103
|
gateway: () => import_gateway4.gateway,
|
|
103
|
-
generateId: () =>
|
|
104
|
+
generateId: () => import_provider_utils41.generateId,
|
|
104
105
|
generateImage: () => generateImage,
|
|
105
106
|
generateObject: () => generateObject,
|
|
106
107
|
generateText: () => generateText,
|
|
@@ -118,11 +119,11 @@ __export(src_exports, {
|
|
|
118
119
|
isTextUIPart: () => isTextUIPart,
|
|
119
120
|
isToolOrDynamicToolUIPart: () => isToolOrDynamicToolUIPart,
|
|
120
121
|
isToolUIPart: () => isToolUIPart,
|
|
121
|
-
jsonSchema: () =>
|
|
122
|
+
jsonSchema: () => import_provider_utils41.jsonSchema,
|
|
122
123
|
lastAssistantMessageIsCompleteWithApprovalResponses: () => lastAssistantMessageIsCompleteWithApprovalResponses,
|
|
123
124
|
lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
|
|
124
125
|
modelMessageSchema: () => modelMessageSchema,
|
|
125
|
-
parseJsonEventStream: () =>
|
|
126
|
+
parseJsonEventStream: () => import_provider_utils41.parseJsonEventStream,
|
|
126
127
|
parsePartialJson: () => parsePartialJson,
|
|
127
128
|
pipeAgentUIStreamToResponse: () => pipeAgentUIStreamToResponse,
|
|
128
129
|
pipeTextStreamToResponse: () => pipeTextStreamToResponse,
|
|
@@ -139,7 +140,7 @@ __export(src_exports, {
|
|
|
139
140
|
streamObject: () => streamObject,
|
|
140
141
|
streamText: () => streamText,
|
|
141
142
|
systemModelMessageSchema: () => systemModelMessageSchema,
|
|
142
|
-
tool: () =>
|
|
143
|
+
tool: () => import_provider_utils41.tool,
|
|
143
144
|
toolModelMessageSchema: () => toolModelMessageSchema,
|
|
144
145
|
uiMessageChunkSchema: () => uiMessageChunkSchema,
|
|
145
146
|
userModelMessageSchema: () => userModelMessageSchema,
|
|
@@ -148,20 +149,20 @@ __export(src_exports, {
|
|
|
148
149
|
wrapImageModel: () => wrapImageModel,
|
|
149
150
|
wrapLanguageModel: () => wrapLanguageModel,
|
|
150
151
|
wrapProvider: () => wrapProvider,
|
|
151
|
-
zodSchema: () =>
|
|
152
|
+
zodSchema: () => import_provider_utils41.zodSchema
|
|
152
153
|
});
|
|
153
154
|
module.exports = __toCommonJS(src_exports);
|
|
154
155
|
var import_gateway4 = require("@ai-sdk/gateway");
|
|
155
|
-
var
|
|
156
|
+
var import_provider_utils41 = require("@ai-sdk/provider-utils");
|
|
156
157
|
|
|
157
158
|
// src/agent/tool-loop-agent.ts
|
|
158
|
-
var
|
|
159
|
+
var import_provider_utils21 = require("@ai-sdk/provider-utils");
|
|
159
160
|
|
|
160
161
|
// src/generate-text/generate-text.ts
|
|
161
|
-
var
|
|
162
|
+
var import_provider_utils16 = require("@ai-sdk/provider-utils");
|
|
162
163
|
|
|
163
164
|
// src/error/index.ts
|
|
164
|
-
var
|
|
165
|
+
var import_provider22 = require("@ai-sdk/provider");
|
|
165
166
|
|
|
166
167
|
// src/error/invalid-argument-error.ts
|
|
167
168
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -231,23 +232,25 @@ var InvalidToolApprovalError = class extends import_provider3.AISDKError {
|
|
|
231
232
|
};
|
|
232
233
|
_a3 = symbol3;
|
|
233
234
|
|
|
234
|
-
// src/error/invalid-tool-
|
|
235
|
+
// src/error/invalid-tool-approval-signature-error.ts
|
|
235
236
|
var import_provider4 = require("@ai-sdk/provider");
|
|
236
|
-
var name4 = "
|
|
237
|
+
var name4 = "AI_InvalidToolApprovalSignatureError";
|
|
237
238
|
var marker4 = `vercel.ai.error.${name4}`;
|
|
238
239
|
var symbol4 = Symbol.for(marker4);
|
|
239
240
|
var _a4;
|
|
240
|
-
var
|
|
241
|
+
var InvalidToolApprovalSignatureError = class extends import_provider4.AISDKError {
|
|
241
242
|
constructor({
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
message = `Invalid input for tool ${toolName}: ${(0, import_provider4.getErrorMessage)(cause)}`
|
|
243
|
+
approvalId,
|
|
244
|
+
toolCallId,
|
|
245
|
+
reason
|
|
246
246
|
}) {
|
|
247
|
-
super({
|
|
247
|
+
super({
|
|
248
|
+
name: name4,
|
|
249
|
+
message: `Tool approval signature verification failed for approval "${approvalId}" (tool call "${toolCallId}"): ${reason}`
|
|
250
|
+
});
|
|
248
251
|
this[_a4] = true;
|
|
249
|
-
this.
|
|
250
|
-
this.
|
|
252
|
+
this.approvalId = approvalId;
|
|
253
|
+
this.toolCallId = toolCallId;
|
|
251
254
|
}
|
|
252
255
|
static isInstance(error) {
|
|
253
256
|
return import_provider4.AISDKError.hasMarker(error, marker4);
|
|
@@ -255,24 +258,23 @@ var InvalidToolInputError = class extends import_provider4.AISDKError {
|
|
|
255
258
|
};
|
|
256
259
|
_a4 = symbol4;
|
|
257
260
|
|
|
258
|
-
// src/error/tool-
|
|
261
|
+
// src/error/invalid-tool-input-error.ts
|
|
259
262
|
var import_provider5 = require("@ai-sdk/provider");
|
|
260
|
-
var name5 = "
|
|
263
|
+
var name5 = "AI_InvalidToolInputError";
|
|
261
264
|
var marker5 = `vercel.ai.error.${name5}`;
|
|
262
265
|
var symbol5 = Symbol.for(marker5);
|
|
263
266
|
var _a5;
|
|
264
|
-
var
|
|
267
|
+
var InvalidToolInputError = class extends import_provider5.AISDKError {
|
|
265
268
|
constructor({
|
|
266
|
-
|
|
267
|
-
|
|
269
|
+
toolInput,
|
|
270
|
+
toolName,
|
|
271
|
+
cause,
|
|
272
|
+
message = `Invalid input for tool ${toolName}: ${(0, import_provider5.getErrorMessage)(cause)}`
|
|
268
273
|
}) {
|
|
269
|
-
super({
|
|
270
|
-
name: name5,
|
|
271
|
-
message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
|
|
272
|
-
});
|
|
274
|
+
super({ name: name5, message, cause });
|
|
273
275
|
this[_a5] = true;
|
|
274
|
-
this.
|
|
275
|
-
this.
|
|
276
|
+
this.toolInput = toolInput;
|
|
277
|
+
this.toolName = toolName;
|
|
276
278
|
}
|
|
277
279
|
static isInstance(error) {
|
|
278
280
|
return import_provider5.AISDKError.hasMarker(error, marker5);
|
|
@@ -280,22 +282,24 @@ var ToolCallNotFoundForApprovalError = class extends import_provider5.AISDKError
|
|
|
280
282
|
};
|
|
281
283
|
_a5 = symbol5;
|
|
282
284
|
|
|
283
|
-
// src/error/
|
|
285
|
+
// src/error/tool-call-not-found-for-approval-error.ts
|
|
284
286
|
var import_provider6 = require("@ai-sdk/provider");
|
|
285
|
-
var name6 = "
|
|
287
|
+
var name6 = "AI_ToolCallNotFoundForApprovalError";
|
|
286
288
|
var marker6 = `vercel.ai.error.${name6}`;
|
|
287
289
|
var symbol6 = Symbol.for(marker6);
|
|
288
290
|
var _a6;
|
|
289
|
-
var
|
|
290
|
-
constructor({
|
|
291
|
+
var ToolCallNotFoundForApprovalError = class extends import_provider6.AISDKError {
|
|
292
|
+
constructor({
|
|
293
|
+
toolCallId,
|
|
294
|
+
approvalId
|
|
295
|
+
}) {
|
|
291
296
|
super({
|
|
292
297
|
name: name6,
|
|
293
|
-
message: `Tool
|
|
294
|
-
", "
|
|
295
|
-
)}.`
|
|
298
|
+
message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
|
|
296
299
|
});
|
|
297
300
|
this[_a6] = true;
|
|
298
|
-
this.
|
|
301
|
+
this.toolCallId = toolCallId;
|
|
302
|
+
this.approvalId = approvalId;
|
|
299
303
|
}
|
|
300
304
|
static isInstance(error) {
|
|
301
305
|
return import_provider6.AISDKError.hasMarker(error, marker6);
|
|
@@ -303,21 +307,22 @@ var MissingToolResultsError = class extends import_provider6.AISDKError {
|
|
|
303
307
|
};
|
|
304
308
|
_a6 = symbol6;
|
|
305
309
|
|
|
306
|
-
// src/error/
|
|
310
|
+
// src/error/missing-tool-result-error.ts
|
|
307
311
|
var import_provider7 = require("@ai-sdk/provider");
|
|
308
|
-
var name7 = "
|
|
312
|
+
var name7 = "AI_MissingToolResultsError";
|
|
309
313
|
var marker7 = `vercel.ai.error.${name7}`;
|
|
310
314
|
var symbol7 = Symbol.for(marker7);
|
|
311
315
|
var _a7;
|
|
312
|
-
var
|
|
313
|
-
constructor({
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
316
|
+
var MissingToolResultsError = class extends import_provider7.AISDKError {
|
|
317
|
+
constructor({ toolCallIds }) {
|
|
318
|
+
super({
|
|
319
|
+
name: name7,
|
|
320
|
+
message: `Tool result${toolCallIds.length > 1 ? "s are" : " is"} missing for tool call${toolCallIds.length > 1 ? "s" : ""} ${toolCallIds.join(
|
|
321
|
+
", "
|
|
322
|
+
)}.`
|
|
323
|
+
});
|
|
319
324
|
this[_a7] = true;
|
|
320
|
-
this.
|
|
325
|
+
this.toolCallIds = toolCallIds;
|
|
321
326
|
}
|
|
322
327
|
static isInstance(error) {
|
|
323
328
|
return import_provider7.AISDKError.hasMarker(error, marker7);
|
|
@@ -325,27 +330,21 @@ var NoImageGeneratedError = class extends import_provider7.AISDKError {
|
|
|
325
330
|
};
|
|
326
331
|
_a7 = symbol7;
|
|
327
332
|
|
|
328
|
-
// src/error/no-
|
|
333
|
+
// src/error/no-image-generated-error.ts
|
|
329
334
|
var import_provider8 = require("@ai-sdk/provider");
|
|
330
|
-
var name8 = "
|
|
335
|
+
var name8 = "AI_NoImageGeneratedError";
|
|
331
336
|
var marker8 = `vercel.ai.error.${name8}`;
|
|
332
337
|
var symbol8 = Symbol.for(marker8);
|
|
333
338
|
var _a8;
|
|
334
|
-
var
|
|
339
|
+
var NoImageGeneratedError = class extends import_provider8.AISDKError {
|
|
335
340
|
constructor({
|
|
336
|
-
message = "No
|
|
341
|
+
message = "No image generated.",
|
|
337
342
|
cause,
|
|
338
|
-
|
|
339
|
-
response,
|
|
340
|
-
usage,
|
|
341
|
-
finishReason
|
|
343
|
+
responses
|
|
342
344
|
}) {
|
|
343
345
|
super({ name: name8, message, cause });
|
|
344
346
|
this[_a8] = true;
|
|
345
|
-
this.
|
|
346
|
-
this.response = response;
|
|
347
|
-
this.usage = usage;
|
|
348
|
-
this.finishReason = finishReason;
|
|
347
|
+
this.responses = responses;
|
|
349
348
|
}
|
|
350
349
|
static isInstance(error) {
|
|
351
350
|
return import_provider8.AISDKError.hasMarker(error, marker8);
|
|
@@ -353,20 +352,27 @@ var NoObjectGeneratedError = class extends import_provider8.AISDKError {
|
|
|
353
352
|
};
|
|
354
353
|
_a8 = symbol8;
|
|
355
354
|
|
|
356
|
-
// src/error/no-
|
|
355
|
+
// src/error/no-object-generated-error.ts
|
|
357
356
|
var import_provider9 = require("@ai-sdk/provider");
|
|
358
|
-
var name9 = "
|
|
357
|
+
var name9 = "AI_NoObjectGeneratedError";
|
|
359
358
|
var marker9 = `vercel.ai.error.${name9}`;
|
|
360
359
|
var symbol9 = Symbol.for(marker9);
|
|
361
360
|
var _a9;
|
|
362
|
-
var
|
|
363
|
-
// used in isInstance
|
|
361
|
+
var NoObjectGeneratedError = class extends import_provider9.AISDKError {
|
|
364
362
|
constructor({
|
|
365
|
-
message = "No
|
|
366
|
-
cause
|
|
367
|
-
|
|
363
|
+
message = "No object generated.",
|
|
364
|
+
cause,
|
|
365
|
+
text: text2,
|
|
366
|
+
response,
|
|
367
|
+
usage,
|
|
368
|
+
finishReason
|
|
369
|
+
}) {
|
|
368
370
|
super({ name: name9, message, cause });
|
|
369
371
|
this[_a9] = true;
|
|
372
|
+
this.text = text2;
|
|
373
|
+
this.response = response;
|
|
374
|
+
this.usage = usage;
|
|
375
|
+
this.finishReason = finishReason;
|
|
370
376
|
}
|
|
371
377
|
static isInstance(error) {
|
|
372
378
|
return import_provider9.AISDKError.hasMarker(error, marker9);
|
|
@@ -374,20 +380,20 @@ var NoOutputGeneratedError = class extends import_provider9.AISDKError {
|
|
|
374
380
|
};
|
|
375
381
|
_a9 = symbol9;
|
|
376
382
|
|
|
377
|
-
// src/error/no-
|
|
383
|
+
// src/error/no-output-generated-error.ts
|
|
378
384
|
var import_provider10 = require("@ai-sdk/provider");
|
|
379
|
-
var name10 = "
|
|
385
|
+
var name10 = "AI_NoOutputGeneratedError";
|
|
380
386
|
var marker10 = `vercel.ai.error.${name10}`;
|
|
381
387
|
var symbol10 = Symbol.for(marker10);
|
|
382
388
|
var _a10;
|
|
383
|
-
var
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
+
var NoOutputGeneratedError = class extends import_provider10.AISDKError {
|
|
390
|
+
// used in isInstance
|
|
391
|
+
constructor({
|
|
392
|
+
message = "No output generated.",
|
|
393
|
+
cause
|
|
394
|
+
} = {}) {
|
|
395
|
+
super({ name: name10, message, cause });
|
|
389
396
|
this[_a10] = true;
|
|
390
|
-
this.responses = options.responses;
|
|
391
397
|
}
|
|
392
398
|
static isInstance(error) {
|
|
393
399
|
return import_provider10.AISDKError.hasMarker(error, marker10);
|
|
@@ -395,17 +401,17 @@ var NoSpeechGeneratedError = class extends import_provider10.AISDKError {
|
|
|
395
401
|
};
|
|
396
402
|
_a10 = symbol10;
|
|
397
403
|
|
|
398
|
-
// src/error/no-
|
|
404
|
+
// src/error/no-speech-generated-error.ts
|
|
399
405
|
var import_provider11 = require("@ai-sdk/provider");
|
|
400
|
-
var name11 = "
|
|
406
|
+
var name11 = "AI_NoSpeechGeneratedError";
|
|
401
407
|
var marker11 = `vercel.ai.error.${name11}`;
|
|
402
408
|
var symbol11 = Symbol.for(marker11);
|
|
403
409
|
var _a11;
|
|
404
|
-
var
|
|
410
|
+
var NoSpeechGeneratedError = class extends import_provider11.AISDKError {
|
|
405
411
|
constructor(options) {
|
|
406
412
|
super({
|
|
407
413
|
name: name11,
|
|
408
|
-
message: "No
|
|
414
|
+
message: "No speech audio generated."
|
|
409
415
|
});
|
|
410
416
|
this[_a11] = true;
|
|
411
417
|
this.responses = options.responses;
|
|
@@ -416,30 +422,51 @@ var NoTranscriptGeneratedError = class extends import_provider11.AISDKError {
|
|
|
416
422
|
};
|
|
417
423
|
_a11 = symbol11;
|
|
418
424
|
|
|
419
|
-
// src/error/no-
|
|
425
|
+
// src/error/no-transcript-generated-error.ts
|
|
420
426
|
var import_provider12 = require("@ai-sdk/provider");
|
|
421
|
-
var name12 = "
|
|
427
|
+
var name12 = "AI_NoTranscriptGeneratedError";
|
|
422
428
|
var marker12 = `vercel.ai.error.${name12}`;
|
|
423
429
|
var symbol12 = Symbol.for(marker12);
|
|
424
430
|
var _a12;
|
|
425
|
-
var
|
|
431
|
+
var NoTranscriptGeneratedError = class extends import_provider12.AISDKError {
|
|
432
|
+
constructor(options) {
|
|
433
|
+
super({
|
|
434
|
+
name: name12,
|
|
435
|
+
message: "No transcript generated."
|
|
436
|
+
});
|
|
437
|
+
this[_a12] = true;
|
|
438
|
+
this.responses = options.responses;
|
|
439
|
+
}
|
|
440
|
+
static isInstance(error) {
|
|
441
|
+
return import_provider12.AISDKError.hasMarker(error, marker12);
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
_a12 = symbol12;
|
|
445
|
+
|
|
446
|
+
// src/error/no-video-generated-error.ts
|
|
447
|
+
var import_provider13 = require("@ai-sdk/provider");
|
|
448
|
+
var name13 = "AI_NoVideoGeneratedError";
|
|
449
|
+
var marker13 = `vercel.ai.error.${name13}`;
|
|
450
|
+
var symbol13 = Symbol.for(marker13);
|
|
451
|
+
var _a13;
|
|
452
|
+
var NoVideoGeneratedError = class extends import_provider13.AISDKError {
|
|
426
453
|
constructor({
|
|
427
454
|
message = "No video generated.",
|
|
428
455
|
cause,
|
|
429
456
|
responses
|
|
430
457
|
}) {
|
|
431
|
-
super({ name:
|
|
432
|
-
this[
|
|
458
|
+
super({ name: name13, message, cause });
|
|
459
|
+
this[_a13] = true;
|
|
433
460
|
this.responses = responses;
|
|
434
461
|
}
|
|
435
462
|
static isInstance(error) {
|
|
436
|
-
return
|
|
463
|
+
return import_provider13.AISDKError.hasMarker(error, marker13);
|
|
437
464
|
}
|
|
438
465
|
/**
|
|
439
466
|
* @deprecated use `isInstance` instead
|
|
440
467
|
*/
|
|
441
468
|
static isNoVideoGeneratedError(error) {
|
|
442
|
-
return error instanceof Error && error.name ===
|
|
469
|
+
return error instanceof Error && error.name === name13 && typeof error.responses !== "undefined" ? true : false;
|
|
443
470
|
}
|
|
444
471
|
/**
|
|
445
472
|
* @deprecated Do not use this method. It will be removed in the next major version.
|
|
@@ -454,56 +481,56 @@ var NoVideoGeneratedError = class extends import_provider12.AISDKError {
|
|
|
454
481
|
};
|
|
455
482
|
}
|
|
456
483
|
};
|
|
457
|
-
|
|
484
|
+
_a13 = symbol13;
|
|
458
485
|
|
|
459
486
|
// src/error/no-such-tool-error.ts
|
|
460
|
-
var
|
|
461
|
-
var
|
|
462
|
-
var
|
|
463
|
-
var
|
|
464
|
-
var
|
|
465
|
-
var NoSuchToolError = class extends
|
|
487
|
+
var import_provider14 = require("@ai-sdk/provider");
|
|
488
|
+
var name14 = "AI_NoSuchToolError";
|
|
489
|
+
var marker14 = `vercel.ai.error.${name14}`;
|
|
490
|
+
var symbol14 = Symbol.for(marker14);
|
|
491
|
+
var _a14;
|
|
492
|
+
var NoSuchToolError = class extends import_provider14.AISDKError {
|
|
466
493
|
constructor({
|
|
467
494
|
toolName,
|
|
468
495
|
availableTools = void 0,
|
|
469
496
|
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
|
470
497
|
}) {
|
|
471
|
-
super({ name:
|
|
472
|
-
this[
|
|
498
|
+
super({ name: name14, message });
|
|
499
|
+
this[_a14] = true;
|
|
473
500
|
this.toolName = toolName;
|
|
474
501
|
this.availableTools = availableTools;
|
|
475
502
|
}
|
|
476
503
|
static isInstance(error) {
|
|
477
|
-
return
|
|
504
|
+
return import_provider14.AISDKError.hasMarker(error, marker14);
|
|
478
505
|
}
|
|
479
506
|
};
|
|
480
|
-
|
|
507
|
+
_a14 = symbol14;
|
|
481
508
|
|
|
482
509
|
// src/error/tool-call-repair-error.ts
|
|
483
|
-
var
|
|
484
|
-
var
|
|
485
|
-
var
|
|
486
|
-
var
|
|
487
|
-
var
|
|
488
|
-
var ToolCallRepairError = class extends
|
|
510
|
+
var import_provider15 = require("@ai-sdk/provider");
|
|
511
|
+
var name15 = "AI_ToolCallRepairError";
|
|
512
|
+
var marker15 = `vercel.ai.error.${name15}`;
|
|
513
|
+
var symbol15 = Symbol.for(marker15);
|
|
514
|
+
var _a15;
|
|
515
|
+
var ToolCallRepairError = class extends import_provider15.AISDKError {
|
|
489
516
|
constructor({
|
|
490
517
|
cause,
|
|
491
518
|
originalError,
|
|
492
|
-
message = `Error repairing tool call: ${(0,
|
|
519
|
+
message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
|
|
493
520
|
}) {
|
|
494
|
-
super({ name:
|
|
495
|
-
this[
|
|
521
|
+
super({ name: name15, message, cause });
|
|
522
|
+
this[_a15] = true;
|
|
496
523
|
this.originalError = originalError;
|
|
497
524
|
}
|
|
498
525
|
static isInstance(error) {
|
|
499
|
-
return
|
|
526
|
+
return import_provider15.AISDKError.hasMarker(error, marker15);
|
|
500
527
|
}
|
|
501
528
|
};
|
|
502
|
-
|
|
529
|
+
_a15 = symbol15;
|
|
503
530
|
|
|
504
531
|
// src/error/unsupported-model-version-error.ts
|
|
505
|
-
var
|
|
506
|
-
var UnsupportedModelVersionError = class extends
|
|
532
|
+
var import_provider16 = require("@ai-sdk/provider");
|
|
533
|
+
var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
|
|
507
534
|
constructor(options) {
|
|
508
535
|
super({
|
|
509
536
|
name: "AI_UnsupportedModelVersionError",
|
|
@@ -516,118 +543,118 @@ var UnsupportedModelVersionError = class extends import_provider15.AISDKError {
|
|
|
516
543
|
};
|
|
517
544
|
|
|
518
545
|
// src/error/ui-message-stream-error.ts
|
|
519
|
-
var
|
|
520
|
-
var
|
|
521
|
-
var
|
|
522
|
-
var
|
|
523
|
-
var
|
|
524
|
-
var UIMessageStreamError = class extends
|
|
546
|
+
var import_provider17 = require("@ai-sdk/provider");
|
|
547
|
+
var name16 = "AI_UIMessageStreamError";
|
|
548
|
+
var marker16 = `vercel.ai.error.${name16}`;
|
|
549
|
+
var symbol16 = Symbol.for(marker16);
|
|
550
|
+
var _a16;
|
|
551
|
+
var UIMessageStreamError = class extends import_provider17.AISDKError {
|
|
525
552
|
constructor({
|
|
526
553
|
chunkType,
|
|
527
554
|
chunkId,
|
|
528
555
|
message
|
|
529
556
|
}) {
|
|
530
|
-
super({ name:
|
|
531
|
-
this[
|
|
557
|
+
super({ name: name16, message });
|
|
558
|
+
this[_a16] = true;
|
|
532
559
|
this.chunkType = chunkType;
|
|
533
560
|
this.chunkId = chunkId;
|
|
534
561
|
}
|
|
535
562
|
static isInstance(error) {
|
|
536
|
-
return
|
|
563
|
+
return import_provider17.AISDKError.hasMarker(error, marker16);
|
|
537
564
|
}
|
|
538
565
|
};
|
|
539
|
-
|
|
566
|
+
_a16 = symbol16;
|
|
540
567
|
|
|
541
568
|
// src/prompt/invalid-data-content-error.ts
|
|
542
|
-
var
|
|
543
|
-
var
|
|
544
|
-
var
|
|
545
|
-
var
|
|
546
|
-
var
|
|
547
|
-
var InvalidDataContentError = class extends
|
|
569
|
+
var import_provider18 = require("@ai-sdk/provider");
|
|
570
|
+
var name17 = "AI_InvalidDataContentError";
|
|
571
|
+
var marker17 = `vercel.ai.error.${name17}`;
|
|
572
|
+
var symbol17 = Symbol.for(marker17);
|
|
573
|
+
var _a17;
|
|
574
|
+
var InvalidDataContentError = class extends import_provider18.AISDKError {
|
|
548
575
|
constructor({
|
|
549
576
|
content,
|
|
550
577
|
cause,
|
|
551
578
|
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
|
552
579
|
}) {
|
|
553
|
-
super({ name:
|
|
554
|
-
this[
|
|
580
|
+
super({ name: name17, message, cause });
|
|
581
|
+
this[_a17] = true;
|
|
555
582
|
this.content = content;
|
|
556
583
|
}
|
|
557
584
|
static isInstance(error) {
|
|
558
|
-
return
|
|
585
|
+
return import_provider18.AISDKError.hasMarker(error, marker17);
|
|
559
586
|
}
|
|
560
587
|
};
|
|
561
|
-
|
|
588
|
+
_a17 = symbol17;
|
|
562
589
|
|
|
563
590
|
// src/prompt/invalid-message-role-error.ts
|
|
564
|
-
var
|
|
565
|
-
var
|
|
566
|
-
var
|
|
567
|
-
var
|
|
568
|
-
var
|
|
569
|
-
var InvalidMessageRoleError = class extends
|
|
591
|
+
var import_provider19 = require("@ai-sdk/provider");
|
|
592
|
+
var name18 = "AI_InvalidMessageRoleError";
|
|
593
|
+
var marker18 = `vercel.ai.error.${name18}`;
|
|
594
|
+
var symbol18 = Symbol.for(marker18);
|
|
595
|
+
var _a18;
|
|
596
|
+
var InvalidMessageRoleError = class extends import_provider19.AISDKError {
|
|
570
597
|
constructor({
|
|
571
598
|
role,
|
|
572
599
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
|
573
600
|
}) {
|
|
574
|
-
super({ name:
|
|
575
|
-
this[
|
|
601
|
+
super({ name: name18, message });
|
|
602
|
+
this[_a18] = true;
|
|
576
603
|
this.role = role;
|
|
577
604
|
}
|
|
578
605
|
static isInstance(error) {
|
|
579
|
-
return
|
|
606
|
+
return import_provider19.AISDKError.hasMarker(error, marker18);
|
|
580
607
|
}
|
|
581
608
|
};
|
|
582
|
-
|
|
609
|
+
_a18 = symbol18;
|
|
583
610
|
|
|
584
611
|
// src/prompt/message-conversion-error.ts
|
|
585
|
-
var
|
|
586
|
-
var
|
|
587
|
-
var
|
|
588
|
-
var
|
|
589
|
-
var
|
|
590
|
-
var MessageConversionError = class extends
|
|
612
|
+
var import_provider20 = require("@ai-sdk/provider");
|
|
613
|
+
var name19 = "AI_MessageConversionError";
|
|
614
|
+
var marker19 = `vercel.ai.error.${name19}`;
|
|
615
|
+
var symbol19 = Symbol.for(marker19);
|
|
616
|
+
var _a19;
|
|
617
|
+
var MessageConversionError = class extends import_provider20.AISDKError {
|
|
591
618
|
constructor({
|
|
592
619
|
originalMessage,
|
|
593
620
|
message
|
|
594
621
|
}) {
|
|
595
|
-
super({ name:
|
|
596
|
-
this[
|
|
622
|
+
super({ name: name19, message });
|
|
623
|
+
this[_a19] = true;
|
|
597
624
|
this.originalMessage = originalMessage;
|
|
598
625
|
}
|
|
599
626
|
static isInstance(error) {
|
|
600
|
-
return
|
|
627
|
+
return import_provider20.AISDKError.hasMarker(error, marker19);
|
|
601
628
|
}
|
|
602
629
|
};
|
|
603
|
-
|
|
630
|
+
_a19 = symbol19;
|
|
604
631
|
|
|
605
632
|
// src/error/index.ts
|
|
606
633
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
607
634
|
|
|
608
635
|
// src/util/retry-error.ts
|
|
609
|
-
var
|
|
610
|
-
var
|
|
611
|
-
var
|
|
612
|
-
var
|
|
613
|
-
var
|
|
614
|
-
var RetryError = class extends
|
|
636
|
+
var import_provider21 = require("@ai-sdk/provider");
|
|
637
|
+
var name20 = "AI_RetryError";
|
|
638
|
+
var marker20 = `vercel.ai.error.${name20}`;
|
|
639
|
+
var symbol20 = Symbol.for(marker20);
|
|
640
|
+
var _a20;
|
|
641
|
+
var RetryError = class extends import_provider21.AISDKError {
|
|
615
642
|
constructor({
|
|
616
643
|
message,
|
|
617
644
|
reason,
|
|
618
645
|
errors
|
|
619
646
|
}) {
|
|
620
|
-
super({ name:
|
|
621
|
-
this[
|
|
647
|
+
super({ name: name20, message });
|
|
648
|
+
this[_a20] = true;
|
|
622
649
|
this.reason = reason;
|
|
623
650
|
this.errors = errors;
|
|
624
651
|
this.lastError = errors[errors.length - 1];
|
|
625
652
|
}
|
|
626
653
|
static isInstance(error) {
|
|
627
|
-
return
|
|
654
|
+
return import_provider21.AISDKError.hasMarker(error, marker20);
|
|
628
655
|
}
|
|
629
656
|
};
|
|
630
|
-
|
|
657
|
+
_a20 = symbol20;
|
|
631
658
|
|
|
632
659
|
// src/util/as-array.ts
|
|
633
660
|
function asArray(value) {
|
|
@@ -907,7 +934,7 @@ function resolveEmbeddingModel(model) {
|
|
|
907
934
|
return getGlobalProvider().embeddingModel(model);
|
|
908
935
|
}
|
|
909
936
|
function resolveTranscriptionModel(model) {
|
|
910
|
-
var
|
|
937
|
+
var _a22, _b;
|
|
911
938
|
if (typeof model !== "string") {
|
|
912
939
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
913
940
|
const unsupportedModel = model;
|
|
@@ -919,10 +946,10 @@ function resolveTranscriptionModel(model) {
|
|
|
919
946
|
}
|
|
920
947
|
return asTranscriptionModelV3(model);
|
|
921
948
|
}
|
|
922
|
-
return (_b = (
|
|
949
|
+
return (_b = (_a22 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a22, model);
|
|
923
950
|
}
|
|
924
951
|
function resolveSpeechModel(model) {
|
|
925
|
-
var
|
|
952
|
+
var _a22, _b;
|
|
926
953
|
if (typeof model !== "string") {
|
|
927
954
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
928
955
|
const unsupportedModel = model;
|
|
@@ -934,7 +961,7 @@ function resolveSpeechModel(model) {
|
|
|
934
961
|
}
|
|
935
962
|
return asSpeechModelV3(model);
|
|
936
963
|
}
|
|
937
|
-
return (_b = (
|
|
964
|
+
return (_b = (_a22 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a22, model);
|
|
938
965
|
}
|
|
939
966
|
function resolveImageModel(model) {
|
|
940
967
|
if (typeof model !== "string") {
|
|
@@ -993,8 +1020,8 @@ function resolveRerankingModel(model) {
|
|
|
993
1020
|
return model;
|
|
994
1021
|
}
|
|
995
1022
|
function getGlobalProvider() {
|
|
996
|
-
var
|
|
997
|
-
return (
|
|
1023
|
+
var _a22;
|
|
1024
|
+
return (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : import_gateway.gateway;
|
|
998
1025
|
}
|
|
999
1026
|
|
|
1000
1027
|
// src/prompt/call-settings.ts
|
|
@@ -1254,7 +1281,7 @@ function detectMediaType({
|
|
|
1254
1281
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
1255
1282
|
|
|
1256
1283
|
// src/version.ts
|
|
1257
|
-
var VERSION = true ? "6.0.
|
|
1284
|
+
var VERSION = true ? "6.0.203" : "0.0.0-test";
|
|
1258
1285
|
|
|
1259
1286
|
// src/util/download/download.ts
|
|
1260
1287
|
var download = async ({
|
|
@@ -1262,21 +1289,19 @@ var download = async ({
|
|
|
1262
1289
|
maxBytes,
|
|
1263
1290
|
abortSignal
|
|
1264
1291
|
}) => {
|
|
1265
|
-
var
|
|
1292
|
+
var _a22;
|
|
1266
1293
|
const urlText = url.toString();
|
|
1267
|
-
(0, import_provider_utils3.validateDownloadUrl)(urlText);
|
|
1268
1294
|
try {
|
|
1269
|
-
const
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1295
|
+
const headers = (0, import_provider_utils3.withUserAgentSuffix)(
|
|
1296
|
+
{},
|
|
1297
|
+
`ai-sdk/${VERSION}`,
|
|
1298
|
+
(0, import_provider_utils3.getRuntimeEnvironmentUserAgent)()
|
|
1299
|
+
);
|
|
1300
|
+
const response = await (0, import_provider_utils3.fetchWithValidatedRedirects)({
|
|
1301
|
+
url: urlText,
|
|
1302
|
+
headers,
|
|
1303
|
+
abortSignal
|
|
1276
1304
|
});
|
|
1277
|
-
if (response.redirected) {
|
|
1278
|
-
(0, import_provider_utils3.validateDownloadUrl)(response.url);
|
|
1279
|
-
}
|
|
1280
1305
|
if (!response.ok) {
|
|
1281
1306
|
throw new import_provider_utils3.DownloadError({
|
|
1282
1307
|
url: urlText,
|
|
@@ -1291,7 +1316,7 @@ var download = async ({
|
|
|
1291
1316
|
});
|
|
1292
1317
|
return {
|
|
1293
1318
|
data,
|
|
1294
|
-
mediaType: (
|
|
1319
|
+
mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
|
|
1295
1320
|
};
|
|
1296
1321
|
} catch (error) {
|
|
1297
1322
|
if (import_provider_utils3.DownloadError.isInstance(error)) {
|
|
@@ -1309,7 +1334,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
1309
1334
|
);
|
|
1310
1335
|
|
|
1311
1336
|
// src/prompt/data-content.ts
|
|
1312
|
-
var
|
|
1337
|
+
var import_provider23 = require("@ai-sdk/provider");
|
|
1313
1338
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
1314
1339
|
var import_v4 = require("zod/v4");
|
|
1315
1340
|
|
|
@@ -1337,8 +1362,8 @@ var dataContentSchema = import_v4.z.union([
|
|
|
1337
1362
|
import_v4.z.custom(
|
|
1338
1363
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
1339
1364
|
(value) => {
|
|
1340
|
-
var
|
|
1341
|
-
return (_b = (
|
|
1365
|
+
var _a22, _b;
|
|
1366
|
+
return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
|
|
1342
1367
|
},
|
|
1343
1368
|
{ message: "Must be a Buffer" }
|
|
1344
1369
|
)
|
|
@@ -1361,7 +1386,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1361
1386
|
content.toString()
|
|
1362
1387
|
);
|
|
1363
1388
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
1364
|
-
throw new
|
|
1389
|
+
throw new import_provider23.AISDKError({
|
|
1365
1390
|
name: "InvalidDataContentError",
|
|
1366
1391
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
1367
1392
|
});
|
|
@@ -1644,7 +1669,7 @@ function convertToLanguageModelMessage({
|
|
|
1644
1669
|
}
|
|
1645
1670
|
}
|
|
1646
1671
|
async function downloadAssets(messages, download2, supportedUrls) {
|
|
1647
|
-
var
|
|
1672
|
+
var _a22;
|
|
1648
1673
|
const downloadableFiles = [];
|
|
1649
1674
|
for (const message of messages) {
|
|
1650
1675
|
if (message.role === "user" && Array.isArray(message.content)) {
|
|
@@ -1652,7 +1677,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1652
1677
|
if (part.type === "image" || part.type === "file") {
|
|
1653
1678
|
downloadableFiles.push({
|
|
1654
1679
|
data: part.type === "image" ? part.image : part.data,
|
|
1655
|
-
mediaType: (
|
|
1680
|
+
mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
|
|
1656
1681
|
});
|
|
1657
1682
|
}
|
|
1658
1683
|
}
|
|
@@ -1704,7 +1729,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1704
1729
|
);
|
|
1705
1730
|
}
|
|
1706
1731
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1707
|
-
var
|
|
1732
|
+
var _a22;
|
|
1708
1733
|
if (part.type === "text") {
|
|
1709
1734
|
return {
|
|
1710
1735
|
type: "text",
|
|
@@ -1737,7 +1762,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1737
1762
|
switch (type) {
|
|
1738
1763
|
case "image": {
|
|
1739
1764
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1740
|
-
mediaType = (
|
|
1765
|
+
mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
|
|
1741
1766
|
}
|
|
1742
1767
|
return {
|
|
1743
1768
|
type: "file",
|
|
@@ -1772,14 +1797,14 @@ function mapToolResultOutput({
|
|
|
1772
1797
|
return {
|
|
1773
1798
|
type: "content",
|
|
1774
1799
|
value: output.value.map((item) => {
|
|
1775
|
-
var
|
|
1800
|
+
var _a22, _b;
|
|
1776
1801
|
if (item.type === "image-url") {
|
|
1777
1802
|
const downloadedFile = downloadedAssets[new URL(item.url).toString()];
|
|
1778
1803
|
if (downloadedFile) {
|
|
1779
1804
|
return {
|
|
1780
1805
|
type: "image-data",
|
|
1781
1806
|
data: convertDataContentToBase64String(downloadedFile.data),
|
|
1782
|
-
mediaType: (
|
|
1807
|
+
mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
|
|
1783
1808
|
providerOptions: item.providerOptions
|
|
1784
1809
|
};
|
|
1785
1810
|
}
|
|
@@ -1817,7 +1842,7 @@ function mapToolResultOutput({
|
|
|
1817
1842
|
}
|
|
1818
1843
|
|
|
1819
1844
|
// src/prompt/create-tool-model-output.ts
|
|
1820
|
-
var
|
|
1845
|
+
var import_provider24 = require("@ai-sdk/provider");
|
|
1821
1846
|
async function createToolModelOutput({
|
|
1822
1847
|
toolCallId,
|
|
1823
1848
|
input,
|
|
@@ -1826,7 +1851,7 @@ async function createToolModelOutput({
|
|
|
1826
1851
|
errorMode
|
|
1827
1852
|
}) {
|
|
1828
1853
|
if (errorMode === "text") {
|
|
1829
|
-
return { type: "error-text", value: (0,
|
|
1854
|
+
return { type: "error-text", value: (0, import_provider24.getErrorMessage)(output) };
|
|
1830
1855
|
} else if (errorMode === "json") {
|
|
1831
1856
|
return { type: "error-json", value: toJSONValue(output) };
|
|
1832
1857
|
}
|
|
@@ -1953,10 +1978,10 @@ async function prepareToolsAndToolChoice({
|
|
|
1953
1978
|
};
|
|
1954
1979
|
}
|
|
1955
1980
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
1956
|
-
([
|
|
1981
|
+
([name22]) => activeTools.includes(name22)
|
|
1957
1982
|
) : Object.entries(tools);
|
|
1958
1983
|
const languageModelTools = [];
|
|
1959
|
-
for (const [
|
|
1984
|
+
for (const [name22, tool2] of filteredTools) {
|
|
1960
1985
|
const toolType = tool2.type;
|
|
1961
1986
|
switch (toolType) {
|
|
1962
1987
|
case void 0:
|
|
@@ -1964,7 +1989,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1964
1989
|
case "function":
|
|
1965
1990
|
languageModelTools.push({
|
|
1966
1991
|
type: "function",
|
|
1967
|
-
name:
|
|
1992
|
+
name: name22,
|
|
1968
1993
|
description: tool2.description,
|
|
1969
1994
|
inputSchema: await (0, import_provider_utils6.asSchema)(tool2.inputSchema).jsonSchema,
|
|
1970
1995
|
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
@@ -1975,7 +2000,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1975
2000
|
case "provider":
|
|
1976
2001
|
languageModelTools.push({
|
|
1977
2002
|
type: "provider",
|
|
1978
|
-
name:
|
|
2003
|
+
name: name22,
|
|
1979
2004
|
id: tool2.id,
|
|
1980
2005
|
args: tool2.args
|
|
1981
2006
|
});
|
|
@@ -1993,7 +2018,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1993
2018
|
}
|
|
1994
2019
|
|
|
1995
2020
|
// src/prompt/standardize-prompt.ts
|
|
1996
|
-
var
|
|
2021
|
+
var import_provider25 = require("@ai-sdk/provider");
|
|
1997
2022
|
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
1998
2023
|
var import_v46 = require("zod/v4");
|
|
1999
2024
|
|
|
@@ -2211,19 +2236,19 @@ async function standardizePrompt({
|
|
|
2211
2236
|
messages
|
|
2212
2237
|
}) {
|
|
2213
2238
|
if (prompt == null && messages == null) {
|
|
2214
|
-
throw new
|
|
2239
|
+
throw new import_provider25.InvalidPromptError({
|
|
2215
2240
|
prompt,
|
|
2216
2241
|
message: "prompt or messages must be defined"
|
|
2217
2242
|
});
|
|
2218
2243
|
}
|
|
2219
2244
|
if (prompt != null && messages != null) {
|
|
2220
|
-
throw new
|
|
2245
|
+
throw new import_provider25.InvalidPromptError({
|
|
2221
2246
|
prompt,
|
|
2222
2247
|
message: "prompt and messages cannot be defined at the same time"
|
|
2223
2248
|
});
|
|
2224
2249
|
}
|
|
2225
2250
|
if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
|
|
2226
|
-
throw new
|
|
2251
|
+
throw new import_provider25.InvalidPromptError({
|
|
2227
2252
|
prompt,
|
|
2228
2253
|
message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
|
|
2229
2254
|
});
|
|
@@ -2233,20 +2258,20 @@ async function standardizePrompt({
|
|
|
2233
2258
|
} else if (prompt != null && Array.isArray(prompt)) {
|
|
2234
2259
|
messages = prompt;
|
|
2235
2260
|
} else if (messages == null) {
|
|
2236
|
-
throw new
|
|
2261
|
+
throw new import_provider25.InvalidPromptError({
|
|
2237
2262
|
prompt,
|
|
2238
2263
|
message: "prompt or messages must be defined"
|
|
2239
2264
|
});
|
|
2240
2265
|
}
|
|
2241
2266
|
if (messages.length === 0) {
|
|
2242
|
-
throw new
|
|
2267
|
+
throw new import_provider25.InvalidPromptError({
|
|
2243
2268
|
prompt,
|
|
2244
2269
|
message: "messages must not be empty"
|
|
2245
2270
|
});
|
|
2246
2271
|
}
|
|
2247
2272
|
if (messages.some((message) => message.role === "system")) {
|
|
2248
2273
|
if (allowSystemInMessages === false) {
|
|
2249
|
-
throw new
|
|
2274
|
+
throw new import_provider25.InvalidPromptError({
|
|
2250
2275
|
prompt,
|
|
2251
2276
|
message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
|
|
2252
2277
|
});
|
|
@@ -2262,7 +2287,7 @@ async function standardizePrompt({
|
|
|
2262
2287
|
schema: import_v46.z.array(modelMessageSchema)
|
|
2263
2288
|
});
|
|
2264
2289
|
if (!validationResult.success) {
|
|
2265
|
-
throw new
|
|
2290
|
+
throw new import_provider25.InvalidPromptError({
|
|
2266
2291
|
prompt,
|
|
2267
2292
|
message: "The messages do not match the ModelMessage[] schema.",
|
|
2268
2293
|
cause: validationResult.error
|
|
@@ -2273,14 +2298,14 @@ async function standardizePrompt({
|
|
|
2273
2298
|
|
|
2274
2299
|
// src/prompt/wrap-gateway-error.ts
|
|
2275
2300
|
var import_gateway2 = require("@ai-sdk/gateway");
|
|
2276
|
-
var
|
|
2301
|
+
var import_provider26 = require("@ai-sdk/provider");
|
|
2277
2302
|
function wrapGatewayError(error) {
|
|
2278
2303
|
if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
|
|
2279
2304
|
return error;
|
|
2280
2305
|
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
2281
2306
|
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
2282
2307
|
if (isProductionEnv) {
|
|
2283
|
-
return new
|
|
2308
|
+
return new import_provider26.AISDKError({
|
|
2284
2309
|
name: "GatewayError",
|
|
2285
2310
|
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
2286
2311
|
});
|
|
@@ -2321,7 +2346,7 @@ function getBaseTelemetryAttributes({
|
|
|
2321
2346
|
telemetry,
|
|
2322
2347
|
headers
|
|
2323
2348
|
}) {
|
|
2324
|
-
var
|
|
2349
|
+
var _a22;
|
|
2325
2350
|
return {
|
|
2326
2351
|
"ai.model.provider": model.provider,
|
|
2327
2352
|
"ai.model.id": model.modelId,
|
|
@@ -2340,7 +2365,7 @@ function getBaseTelemetryAttributes({
|
|
|
2340
2365
|
return attributes;
|
|
2341
2366
|
}, {}),
|
|
2342
2367
|
// add metadata as attributes:
|
|
2343
|
-
...Object.entries((
|
|
2368
|
+
...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
|
|
2344
2369
|
(attributes, [key, value]) => {
|
|
2345
2370
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
2346
2371
|
return attributes;
|
|
@@ -2365,7 +2390,7 @@ var noopTracer = {
|
|
|
2365
2390
|
startSpan() {
|
|
2366
2391
|
return noopSpan;
|
|
2367
2392
|
},
|
|
2368
|
-
startActiveSpan(
|
|
2393
|
+
startActiveSpan(name22, arg1, arg2, arg3) {
|
|
2369
2394
|
if (typeof arg1 === "function") {
|
|
2370
2395
|
return arg1(noopSpan);
|
|
2371
2396
|
}
|
|
@@ -2435,14 +2460,14 @@ function getTracer({
|
|
|
2435
2460
|
// src/telemetry/record-span.ts
|
|
2436
2461
|
var import_api2 = require("@opentelemetry/api");
|
|
2437
2462
|
async function recordSpan({
|
|
2438
|
-
name:
|
|
2463
|
+
name: name22,
|
|
2439
2464
|
tracer,
|
|
2440
2465
|
attributes,
|
|
2441
2466
|
fn,
|
|
2442
2467
|
endWhenDone = true
|
|
2443
2468
|
}) {
|
|
2444
2469
|
return tracer.startActiveSpan(
|
|
2445
|
-
|
|
2470
|
+
name22,
|
|
2446
2471
|
{ attributes: await attributes },
|
|
2447
2472
|
async (span) => {
|
|
2448
2473
|
const ctx = import_api2.context.active();
|
|
@@ -2540,15 +2565,15 @@ function registerTelemetryIntegration(integration) {
|
|
|
2540
2565
|
globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
|
|
2541
2566
|
}
|
|
2542
2567
|
function getGlobalTelemetryIntegrations() {
|
|
2543
|
-
var
|
|
2544
|
-
return (
|
|
2568
|
+
var _a22;
|
|
2569
|
+
return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
|
|
2545
2570
|
}
|
|
2546
2571
|
|
|
2547
2572
|
// src/telemetry/get-global-telemetry-integration.ts
|
|
2548
2573
|
function bindTelemetryIntegration(integration) {
|
|
2549
|
-
var
|
|
2574
|
+
var _a22, _b, _c, _d, _e, _f;
|
|
2550
2575
|
return {
|
|
2551
|
-
onStart: (
|
|
2576
|
+
onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
|
|
2552
2577
|
onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
|
|
2553
2578
|
onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
|
|
2554
2579
|
onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
|
|
@@ -2632,12 +2657,12 @@ function createNullLanguageModelUsage() {
|
|
|
2632
2657
|
};
|
|
2633
2658
|
}
|
|
2634
2659
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2635
|
-
var
|
|
2660
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2636
2661
|
return {
|
|
2637
2662
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2638
2663
|
inputTokenDetails: {
|
|
2639
2664
|
noCacheTokens: addTokenCounts(
|
|
2640
|
-
(
|
|
2665
|
+
(_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
2641
2666
|
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2642
2667
|
),
|
|
2643
2668
|
cacheReadTokens: addTokenCounts(
|
|
@@ -2719,14 +2744,14 @@ function mergeObjects(base, overrides) {
|
|
|
2719
2744
|
}
|
|
2720
2745
|
|
|
2721
2746
|
// src/util/retry-with-exponential-backoff.ts
|
|
2722
|
-
var
|
|
2747
|
+
var import_provider27 = require("@ai-sdk/provider");
|
|
2723
2748
|
var import_gateway3 = require("@ai-sdk/gateway");
|
|
2724
2749
|
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
2725
2750
|
function getRetryDelayInMs({
|
|
2726
2751
|
error,
|
|
2727
2752
|
exponentialBackoffDelay
|
|
2728
2753
|
}) {
|
|
2729
|
-
const headers =
|
|
2754
|
+
const headers = import_provider27.APICallError.isInstance(error) ? error.responseHeaders : import_provider27.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
|
|
2730
2755
|
if (!headers)
|
|
2731
2756
|
return exponentialBackoffDelay;
|
|
2732
2757
|
let ms;
|
|
@@ -2787,7 +2812,7 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
2787
2812
|
errors: newErrors
|
|
2788
2813
|
});
|
|
2789
2814
|
}
|
|
2790
|
-
if (error instanceof Error && (
|
|
2815
|
+
if (error instanceof Error && (import_provider27.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true) && tryNumber <= maxRetries) {
|
|
2791
2816
|
await (0, import_provider_utils8.delay)(
|
|
2792
2817
|
getRetryDelayInMs({
|
|
2793
2818
|
error,
|
|
@@ -2928,8 +2953,8 @@ var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
|
|
2928
2953
|
|
|
2929
2954
|
// src/util/now.ts
|
|
2930
2955
|
function now() {
|
|
2931
|
-
var
|
|
2932
|
-
return (_b = (
|
|
2956
|
+
var _a22, _b;
|
|
2957
|
+
return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
|
|
2933
2958
|
}
|
|
2934
2959
|
|
|
2935
2960
|
// src/generate-text/execute-tool-call.ts
|
|
@@ -3139,6 +3164,170 @@ async function isApprovalNeeded({
|
|
|
3139
3164
|
});
|
|
3140
3165
|
}
|
|
3141
3166
|
|
|
3167
|
+
// src/generate-text/tool-approval-signature.ts
|
|
3168
|
+
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
|
3169
|
+
var encoder = new TextEncoder();
|
|
3170
|
+
function canonicalJSON(value) {
|
|
3171
|
+
if (value === null || value === void 0) {
|
|
3172
|
+
return JSON.stringify(value);
|
|
3173
|
+
}
|
|
3174
|
+
if (typeof value !== "object") {
|
|
3175
|
+
return JSON.stringify(value);
|
|
3176
|
+
}
|
|
3177
|
+
if (Array.isArray(value)) {
|
|
3178
|
+
return `[${value.map(canonicalJSON).join(",")}]`;
|
|
3179
|
+
}
|
|
3180
|
+
const keys = Object.keys(value).sort();
|
|
3181
|
+
const entries = keys.map(
|
|
3182
|
+
(k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`
|
|
3183
|
+
);
|
|
3184
|
+
return `{${entries.join(",")}}`;
|
|
3185
|
+
}
|
|
3186
|
+
function toBase64url(bytes) {
|
|
3187
|
+
return (0, import_provider_utils11.convertUint8ArrayToBase64)(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
3188
|
+
}
|
|
3189
|
+
function fromBase64url(str) {
|
|
3190
|
+
return (0, import_provider_utils11.convertBase64ToUint8Array)(str);
|
|
3191
|
+
}
|
|
3192
|
+
async function importKey(secret) {
|
|
3193
|
+
const keyData = typeof secret === "string" ? encoder.encode(secret) : secret;
|
|
3194
|
+
return crypto.subtle.importKey(
|
|
3195
|
+
"raw",
|
|
3196
|
+
keyData,
|
|
3197
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
3198
|
+
false,
|
|
3199
|
+
["sign", "verify"]
|
|
3200
|
+
);
|
|
3201
|
+
}
|
|
3202
|
+
async function hashInput(input) {
|
|
3203
|
+
const canonical = canonicalJSON(input);
|
|
3204
|
+
const digest = await crypto.subtle.digest(
|
|
3205
|
+
"SHA-256",
|
|
3206
|
+
encoder.encode(canonical)
|
|
3207
|
+
);
|
|
3208
|
+
return toBase64url(new Uint8Array(digest));
|
|
3209
|
+
}
|
|
3210
|
+
function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
3211
|
+
return encoder.encode(
|
|
3212
|
+
`${approvalId}
|
|
3213
|
+
${toolCallId}
|
|
3214
|
+
${toolName}
|
|
3215
|
+
${inputDigest}`
|
|
3216
|
+
);
|
|
3217
|
+
}
|
|
3218
|
+
async function signToolApproval({
|
|
3219
|
+
secret,
|
|
3220
|
+
approvalId,
|
|
3221
|
+
toolCallId,
|
|
3222
|
+
toolName,
|
|
3223
|
+
input
|
|
3224
|
+
}) {
|
|
3225
|
+
const key = await importKey(secret);
|
|
3226
|
+
const inputDigest = await hashInput(input);
|
|
3227
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3228
|
+
const sig = await crypto.subtle.sign("HMAC", key, payload);
|
|
3229
|
+
return toBase64url(new Uint8Array(sig));
|
|
3230
|
+
}
|
|
3231
|
+
async function verifyToolApprovalSignature({
|
|
3232
|
+
secret,
|
|
3233
|
+
signature,
|
|
3234
|
+
approvalId,
|
|
3235
|
+
toolCallId,
|
|
3236
|
+
toolName,
|
|
3237
|
+
input
|
|
3238
|
+
}) {
|
|
3239
|
+
const key = await importKey(secret);
|
|
3240
|
+
const inputDigest = await hashInput(input);
|
|
3241
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3242
|
+
const sigBytes = fromBase64url(signature);
|
|
3243
|
+
return crypto.subtle.verify("HMAC", key, sigBytes, payload);
|
|
3244
|
+
}
|
|
3245
|
+
async function maybeSignApproval({
|
|
3246
|
+
secret,
|
|
3247
|
+
approvalId,
|
|
3248
|
+
toolCallId,
|
|
3249
|
+
toolName,
|
|
3250
|
+
input
|
|
3251
|
+
}) {
|
|
3252
|
+
if (secret == null)
|
|
3253
|
+
return void 0;
|
|
3254
|
+
return signToolApproval({ secret, approvalId, toolCallId, toolName, input });
|
|
3255
|
+
}
|
|
3256
|
+
|
|
3257
|
+
// src/generate-text/validate-tool-approvals.ts
|
|
3258
|
+
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
3259
|
+
async function validateApprovedToolApprovals({
|
|
3260
|
+
approvedToolApprovals,
|
|
3261
|
+
tools,
|
|
3262
|
+
messages,
|
|
3263
|
+
experimental_context,
|
|
3264
|
+
toolApprovalSecret
|
|
3265
|
+
}) {
|
|
3266
|
+
var _a22;
|
|
3267
|
+
const approved = [];
|
|
3268
|
+
const denied = [];
|
|
3269
|
+
for (const approval of approvedToolApprovals) {
|
|
3270
|
+
const { toolCall, approvalRequest } = approval;
|
|
3271
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3272
|
+
if (toolApprovalSecret != null) {
|
|
3273
|
+
if (approvalRequest.signature == null) {
|
|
3274
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3275
|
+
approvalId: approvalRequest.approvalId,
|
|
3276
|
+
toolCallId: toolCall.toolCallId,
|
|
3277
|
+
reason: "missing signature"
|
|
3278
|
+
});
|
|
3279
|
+
}
|
|
3280
|
+
const valid = await verifyToolApprovalSignature({
|
|
3281
|
+
secret: toolApprovalSecret,
|
|
3282
|
+
signature: approvalRequest.signature,
|
|
3283
|
+
approvalId: approvalRequest.approvalId,
|
|
3284
|
+
toolCallId: toolCall.toolCallId,
|
|
3285
|
+
toolName: toolCall.toolName,
|
|
3286
|
+
input: toolCall.input
|
|
3287
|
+
});
|
|
3288
|
+
if (!valid) {
|
|
3289
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3290
|
+
approvalId: approvalRequest.approvalId,
|
|
3291
|
+
toolCallId: toolCall.toolCallId,
|
|
3292
|
+
reason: "invalid signature"
|
|
3293
|
+
});
|
|
3294
|
+
}
|
|
3295
|
+
}
|
|
3296
|
+
if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
|
|
3297
|
+
const validation = await (0, import_provider_utils12.safeValidateTypes)({
|
|
3298
|
+
value: toolCall.input,
|
|
3299
|
+
schema: (0, import_provider_utils12.asSchema)(tool2.inputSchema)
|
|
3300
|
+
});
|
|
3301
|
+
if (!validation.success) {
|
|
3302
|
+
throw new InvalidToolInputError({
|
|
3303
|
+
toolName: toolCall.toolName,
|
|
3304
|
+
toolInput: JSON.stringify(toolCall.input),
|
|
3305
|
+
cause: validation.error
|
|
3306
|
+
});
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
const approvalNeeded = tool2 != null && await isApprovalNeeded({
|
|
3310
|
+
tool: tool2,
|
|
3311
|
+
toolCall,
|
|
3312
|
+
messages,
|
|
3313
|
+
experimental_context
|
|
3314
|
+
});
|
|
3315
|
+
if (approvalNeeded) {
|
|
3316
|
+
approved.push(approval);
|
|
3317
|
+
} else {
|
|
3318
|
+
denied.push({
|
|
3319
|
+
...approval,
|
|
3320
|
+
approvalResponse: {
|
|
3321
|
+
...approval.approvalResponse,
|
|
3322
|
+
approved: false,
|
|
3323
|
+
reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
|
|
3324
|
+
}
|
|
3325
|
+
});
|
|
3326
|
+
}
|
|
3327
|
+
}
|
|
3328
|
+
return { approvedToolApprovals: approved, deniedToolApprovals: denied };
|
|
3329
|
+
}
|
|
3330
|
+
|
|
3142
3331
|
// src/generate-text/output.ts
|
|
3143
3332
|
var output_exports = {};
|
|
3144
3333
|
__export(output_exports, {
|
|
@@ -3148,11 +3337,11 @@ __export(output_exports, {
|
|
|
3148
3337
|
object: () => object,
|
|
3149
3338
|
text: () => text
|
|
3150
3339
|
});
|
|
3151
|
-
var
|
|
3152
|
-
var
|
|
3340
|
+
var import_provider28 = require("@ai-sdk/provider");
|
|
3341
|
+
var import_provider_utils14 = require("@ai-sdk/provider-utils");
|
|
3153
3342
|
|
|
3154
3343
|
// src/util/parse-partial-json.ts
|
|
3155
|
-
var
|
|
3344
|
+
var import_provider_utils13 = require("@ai-sdk/provider-utils");
|
|
3156
3345
|
|
|
3157
3346
|
// src/util/fix-json.ts
|
|
3158
3347
|
function fixJson(input) {
|
|
@@ -3477,11 +3666,11 @@ async function parsePartialJson(jsonText) {
|
|
|
3477
3666
|
if (jsonText === void 0) {
|
|
3478
3667
|
return { value: void 0, state: "undefined-input" };
|
|
3479
3668
|
}
|
|
3480
|
-
let result = await (0,
|
|
3669
|
+
let result = await (0, import_provider_utils13.safeParseJSON)({ text: jsonText });
|
|
3481
3670
|
if (result.success) {
|
|
3482
3671
|
return { value: result.value, state: "successful-parse" };
|
|
3483
3672
|
}
|
|
3484
|
-
result = await (0,
|
|
3673
|
+
result = await (0, import_provider_utils13.safeParseJSON)({ text: fixJson(jsonText) });
|
|
3485
3674
|
if (result.success) {
|
|
3486
3675
|
return { value: result.value, state: "repaired-parse" };
|
|
3487
3676
|
}
|
|
@@ -3504,20 +3693,20 @@ var text = () => ({
|
|
|
3504
3693
|
});
|
|
3505
3694
|
var object = ({
|
|
3506
3695
|
schema: inputSchema,
|
|
3507
|
-
name:
|
|
3696
|
+
name: name22,
|
|
3508
3697
|
description
|
|
3509
3698
|
}) => {
|
|
3510
|
-
const schema = (0,
|
|
3699
|
+
const schema = (0, import_provider_utils14.asSchema)(inputSchema);
|
|
3511
3700
|
return {
|
|
3512
3701
|
name: "object",
|
|
3513
|
-
responseFormat: (0,
|
|
3702
|
+
responseFormat: (0, import_provider_utils14.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
|
|
3514
3703
|
type: "json",
|
|
3515
3704
|
schema: jsonSchema2,
|
|
3516
|
-
...
|
|
3705
|
+
...name22 != null && { name: name22 },
|
|
3517
3706
|
...description != null && { description }
|
|
3518
3707
|
})),
|
|
3519
3708
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3520
|
-
const parseResult = await (0,
|
|
3709
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3521
3710
|
if (!parseResult.success) {
|
|
3522
3711
|
throw new NoObjectGeneratedError({
|
|
3523
3712
|
message: "No object generated: could not parse the response.",
|
|
@@ -3528,7 +3717,7 @@ var object = ({
|
|
|
3528
3717
|
finishReason: context2.finishReason
|
|
3529
3718
|
});
|
|
3530
3719
|
}
|
|
3531
|
-
const validationResult = await (0,
|
|
3720
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3532
3721
|
value: parseResult.value,
|
|
3533
3722
|
schema
|
|
3534
3723
|
});
|
|
@@ -3567,14 +3756,14 @@ var object = ({
|
|
|
3567
3756
|
};
|
|
3568
3757
|
var array = ({
|
|
3569
3758
|
element: inputElementSchema,
|
|
3570
|
-
name:
|
|
3759
|
+
name: name22,
|
|
3571
3760
|
description
|
|
3572
3761
|
}) => {
|
|
3573
|
-
const elementSchema = (0,
|
|
3762
|
+
const elementSchema = (0, import_provider_utils14.asSchema)(inputElementSchema);
|
|
3574
3763
|
return {
|
|
3575
3764
|
name: "array",
|
|
3576
3765
|
// JSON schema that describes an array of elements:
|
|
3577
|
-
responseFormat: (0,
|
|
3766
|
+
responseFormat: (0, import_provider_utils14.resolve)(elementSchema.jsonSchema).then((jsonSchema2) => {
|
|
3578
3767
|
const { $schema, ...itemSchema } = jsonSchema2;
|
|
3579
3768
|
return {
|
|
3580
3769
|
type: "json",
|
|
@@ -3587,12 +3776,12 @@ var array = ({
|
|
|
3587
3776
|
required: ["elements"],
|
|
3588
3777
|
additionalProperties: false
|
|
3589
3778
|
},
|
|
3590
|
-
...
|
|
3779
|
+
...name22 != null && { name: name22 },
|
|
3591
3780
|
...description != null && { description }
|
|
3592
3781
|
};
|
|
3593
3782
|
}),
|
|
3594
3783
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3595
|
-
const parseResult = await (0,
|
|
3784
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3596
3785
|
if (!parseResult.success) {
|
|
3597
3786
|
throw new NoObjectGeneratedError({
|
|
3598
3787
|
message: "No object generated: could not parse the response.",
|
|
@@ -3607,7 +3796,7 @@ var array = ({
|
|
|
3607
3796
|
if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
|
|
3608
3797
|
throw new NoObjectGeneratedError({
|
|
3609
3798
|
message: "No object generated: response did not match schema.",
|
|
3610
|
-
cause: new
|
|
3799
|
+
cause: new import_provider28.TypeValidationError({
|
|
3611
3800
|
value: outerValue,
|
|
3612
3801
|
cause: "response must be an object with an elements array"
|
|
3613
3802
|
}),
|
|
@@ -3618,7 +3807,7 @@ var array = ({
|
|
|
3618
3807
|
});
|
|
3619
3808
|
}
|
|
3620
3809
|
for (const element of outerValue.elements) {
|
|
3621
|
-
const validationResult = await (0,
|
|
3810
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3622
3811
|
value: element,
|
|
3623
3812
|
schema: elementSchema
|
|
3624
3813
|
});
|
|
@@ -3651,7 +3840,7 @@ var array = ({
|
|
|
3651
3840
|
const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
|
|
3652
3841
|
const parsedElements = [];
|
|
3653
3842
|
for (const rawElement of rawElements) {
|
|
3654
|
-
const validationResult = await (0,
|
|
3843
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3655
3844
|
value: rawElement,
|
|
3656
3845
|
schema: elementSchema
|
|
3657
3846
|
});
|
|
@@ -3679,7 +3868,7 @@ var array = ({
|
|
|
3679
3868
|
};
|
|
3680
3869
|
var choice = ({
|
|
3681
3870
|
options: choiceOptions,
|
|
3682
|
-
name:
|
|
3871
|
+
name: name22,
|
|
3683
3872
|
description
|
|
3684
3873
|
}) => {
|
|
3685
3874
|
return {
|
|
@@ -3696,11 +3885,11 @@ var choice = ({
|
|
|
3696
3885
|
required: ["result"],
|
|
3697
3886
|
additionalProperties: false
|
|
3698
3887
|
},
|
|
3699
|
-
...
|
|
3888
|
+
...name22 != null && { name: name22 },
|
|
3700
3889
|
...description != null && { description }
|
|
3701
3890
|
}),
|
|
3702
3891
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3703
|
-
const parseResult = await (0,
|
|
3892
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3704
3893
|
if (!parseResult.success) {
|
|
3705
3894
|
throw new NoObjectGeneratedError({
|
|
3706
3895
|
message: "No object generated: could not parse the response.",
|
|
@@ -3715,7 +3904,7 @@ var choice = ({
|
|
|
3715
3904
|
if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
|
|
3716
3905
|
throw new NoObjectGeneratedError({
|
|
3717
3906
|
message: "No object generated: response did not match schema.",
|
|
3718
|
-
cause: new
|
|
3907
|
+
cause: new import_provider28.TypeValidationError({
|
|
3719
3908
|
value: outerValue,
|
|
3720
3909
|
cause: "response must be an object that contains a choice value."
|
|
3721
3910
|
}),
|
|
@@ -3757,18 +3946,18 @@ var choice = ({
|
|
|
3757
3946
|
};
|
|
3758
3947
|
};
|
|
3759
3948
|
var json = ({
|
|
3760
|
-
name:
|
|
3949
|
+
name: name22,
|
|
3761
3950
|
description
|
|
3762
3951
|
} = {}) => {
|
|
3763
3952
|
return {
|
|
3764
3953
|
name: "json",
|
|
3765
3954
|
responseFormat: Promise.resolve({
|
|
3766
3955
|
type: "json",
|
|
3767
|
-
...
|
|
3956
|
+
...name22 != null && { name: name22 },
|
|
3768
3957
|
...description != null && { description }
|
|
3769
3958
|
}),
|
|
3770
3959
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3771
|
-
const parseResult = await (0,
|
|
3960
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3772
3961
|
if (!parseResult.success) {
|
|
3773
3962
|
throw new NoObjectGeneratedError({
|
|
3774
3963
|
message: "No object generated: could not parse the response.",
|
|
@@ -3801,7 +3990,7 @@ var json = ({
|
|
|
3801
3990
|
};
|
|
3802
3991
|
|
|
3803
3992
|
// src/generate-text/parse-tool-call.ts
|
|
3804
|
-
var
|
|
3993
|
+
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
|
3805
3994
|
async function parseToolCall({
|
|
3806
3995
|
toolCall,
|
|
3807
3996
|
tools,
|
|
@@ -3829,7 +4018,7 @@ async function parseToolCall({
|
|
|
3829
4018
|
tools,
|
|
3830
4019
|
inputSchema: async ({ toolName }) => {
|
|
3831
4020
|
const { inputSchema } = tools[toolName];
|
|
3832
|
-
return await (0,
|
|
4021
|
+
return await (0, import_provider_utils15.asSchema)(inputSchema).jsonSchema;
|
|
3833
4022
|
},
|
|
3834
4023
|
system,
|
|
3835
4024
|
messages,
|
|
@@ -3847,7 +4036,7 @@ async function parseToolCall({
|
|
|
3847
4036
|
return await doParseToolCall({ toolCall: repairedToolCall, tools });
|
|
3848
4037
|
}
|
|
3849
4038
|
} catch (error) {
|
|
3850
|
-
const parsedInput = await (0,
|
|
4039
|
+
const parsedInput = await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
|
|
3851
4040
|
const input = parsedInput.success ? parsedInput.value : toolCall.input;
|
|
3852
4041
|
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3853
4042
|
return {
|
|
@@ -3866,7 +4055,7 @@ async function parseToolCall({
|
|
|
3866
4055
|
}
|
|
3867
4056
|
}
|
|
3868
4057
|
async function parseProviderExecutedDynamicToolCall(toolCall) {
|
|
3869
|
-
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0,
|
|
4058
|
+
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
|
|
3870
4059
|
if (parseResult.success === false) {
|
|
3871
4060
|
throw new InvalidToolInputError({
|
|
3872
4061
|
toolName: toolCall.toolName,
|
|
@@ -3899,8 +4088,8 @@ async function doParseToolCall({
|
|
|
3899
4088
|
availableTools: Object.keys(tools)
|
|
3900
4089
|
});
|
|
3901
4090
|
}
|
|
3902
|
-
const schema = (0,
|
|
3903
|
-
const parseResult = toolCall.input.trim() === "" ? await (0,
|
|
4091
|
+
const schema = (0, import_provider_utils15.asSchema)(tool2.inputSchema);
|
|
4092
|
+
const parseResult = toolCall.input.trim() === "" ? await (0, import_provider_utils15.safeValidateTypes)({ value: {}, schema }) : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input, schema });
|
|
3904
4093
|
if (parseResult.success === false) {
|
|
3905
4094
|
throw new InvalidToolInputError({
|
|
3906
4095
|
toolName,
|
|
@@ -4013,8 +4202,8 @@ function isLoopFinished() {
|
|
|
4013
4202
|
}
|
|
4014
4203
|
function hasToolCall(toolName) {
|
|
4015
4204
|
return ({ steps }) => {
|
|
4016
|
-
var
|
|
4017
|
-
return (_c = (_b = (
|
|
4205
|
+
var _a22, _b, _c;
|
|
4206
|
+
return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
|
|
4018
4207
|
(toolCall) => toolCall.toolName === toolName
|
|
4019
4208
|
)) != null ? _c : false;
|
|
4020
4209
|
};
|
|
@@ -4114,7 +4303,8 @@ async function toResponseMessages({
|
|
|
4114
4303
|
content.push({
|
|
4115
4304
|
type: "tool-approval-request",
|
|
4116
4305
|
approvalId: part.approvalId,
|
|
4117
|
-
toolCallId: part.toolCall.toolCallId
|
|
4306
|
+
toolCallId: part.toolCall.toolCallId,
|
|
4307
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
4118
4308
|
});
|
|
4119
4309
|
break;
|
|
4120
4310
|
}
|
|
@@ -4183,7 +4373,7 @@ function mergeAbortSignals(...signals) {
|
|
|
4183
4373
|
}
|
|
4184
4374
|
|
|
4185
4375
|
// src/generate-text/generate-text.ts
|
|
4186
|
-
var originalGenerateId = (0,
|
|
4376
|
+
var originalGenerateId = (0, import_provider_utils16.createIdGenerator)({
|
|
4187
4377
|
prefix: "aitxt",
|
|
4188
4378
|
size: 24
|
|
4189
4379
|
});
|
|
@@ -4211,6 +4401,7 @@ async function generateText({
|
|
|
4211
4401
|
experimental_repairToolCall: repairToolCall,
|
|
4212
4402
|
experimental_download: download2,
|
|
4213
4403
|
experimental_context,
|
|
4404
|
+
experimental_toolApprovalSecret,
|
|
4214
4405
|
experimental_include: include,
|
|
4215
4406
|
_internal: { generateId: generateId2 = originalGenerateId } = {},
|
|
4216
4407
|
experimental_onStart: onStart,
|
|
@@ -4237,7 +4428,7 @@ async function generateText({
|
|
|
4237
4428
|
abortSignal: mergedAbortSignal
|
|
4238
4429
|
});
|
|
4239
4430
|
const callSettings = prepareCallSettings(settings);
|
|
4240
|
-
const headersWithUserAgent = (0,
|
|
4431
|
+
const headersWithUserAgent = (0, import_provider_utils16.withUserAgentSuffix)(
|
|
4241
4432
|
headers != null ? headers : {},
|
|
4242
4433
|
`ai/${VERSION}`
|
|
4243
4434
|
);
|
|
@@ -4312,13 +4503,29 @@ async function generateText({
|
|
|
4312
4503
|
}),
|
|
4313
4504
|
tracer,
|
|
4314
4505
|
fn: async (span) => {
|
|
4315
|
-
var
|
|
4506
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
4316
4507
|
const initialMessages = initialPrompt.messages;
|
|
4317
4508
|
const responseMessages = [];
|
|
4318
|
-
const {
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
);
|
|
4509
|
+
const {
|
|
4510
|
+
approvedToolApprovals,
|
|
4511
|
+
deniedToolApprovals: collectedDeniedToolApprovals
|
|
4512
|
+
} = collectToolApprovals({ messages: initialMessages });
|
|
4513
|
+
const {
|
|
4514
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
4515
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
4516
|
+
} = await validateApprovedToolApprovals({
|
|
4517
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
4518
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
4519
|
+
),
|
|
4520
|
+
tools,
|
|
4521
|
+
messages: initialMessages,
|
|
4522
|
+
experimental_context,
|
|
4523
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
4524
|
+
});
|
|
4525
|
+
const deniedToolApprovals = [
|
|
4526
|
+
...collectedDeniedToolApprovals,
|
|
4527
|
+
...revalidationDeniedToolApprovals
|
|
4528
|
+
];
|
|
4322
4529
|
if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
|
|
4323
4530
|
const toolOutputs = await executeTools({
|
|
4324
4531
|
toolCalls: localApprovedToolApprovals.map(
|
|
@@ -4399,7 +4606,7 @@ async function generateText({
|
|
|
4399
4606
|
experimental_context
|
|
4400
4607
|
}));
|
|
4401
4608
|
const stepModel = resolveLanguageModel(
|
|
4402
|
-
(
|
|
4609
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
4403
4610
|
);
|
|
4404
4611
|
const stepModelInfo = {
|
|
4405
4612
|
provider: stepModel.provider,
|
|
@@ -4454,7 +4661,7 @@ async function generateText({
|
|
|
4454
4661
|
});
|
|
4455
4662
|
currentModelResponse = await retry(
|
|
4456
4663
|
() => {
|
|
4457
|
-
var
|
|
4664
|
+
var _a23;
|
|
4458
4665
|
return recordSpan({
|
|
4459
4666
|
name: "ai.generateText.doGenerate",
|
|
4460
4667
|
attributes: selectTelemetryAttributes({
|
|
@@ -4486,14 +4693,14 @@ async function generateText({
|
|
|
4486
4693
|
"gen_ai.request.max_tokens": settings.maxOutputTokens,
|
|
4487
4694
|
"gen_ai.request.presence_penalty": settings.presencePenalty,
|
|
4488
4695
|
"gen_ai.request.stop_sequences": settings.stopSequences,
|
|
4489
|
-
"gen_ai.request.temperature": (
|
|
4696
|
+
"gen_ai.request.temperature": (_a23 = settings.temperature) != null ? _a23 : void 0,
|
|
4490
4697
|
"gen_ai.request.top_k": settings.topK,
|
|
4491
4698
|
"gen_ai.request.top_p": settings.topP
|
|
4492
4699
|
}
|
|
4493
4700
|
}),
|
|
4494
4701
|
tracer,
|
|
4495
4702
|
fn: async (span2) => {
|
|
4496
|
-
var
|
|
4703
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
4497
4704
|
const result = await stepModel.doGenerate({
|
|
4498
4705
|
...callSettings2,
|
|
4499
4706
|
tools: stepTools,
|
|
@@ -4505,7 +4712,7 @@ async function generateText({
|
|
|
4505
4712
|
headers: headersWithUserAgent
|
|
4506
4713
|
});
|
|
4507
4714
|
const responseData = {
|
|
4508
|
-
id: (_b2 = (
|
|
4715
|
+
id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
|
|
4509
4716
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
|
|
4510
4717
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
4511
4718
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
@@ -4598,10 +4805,19 @@ async function generateText({
|
|
|
4598
4805
|
messages: stepInputMessages,
|
|
4599
4806
|
experimental_context
|
|
4600
4807
|
})) {
|
|
4808
|
+
const approvalId = generateId2();
|
|
4809
|
+
const signature = await maybeSignApproval({
|
|
4810
|
+
secret: experimental_toolApprovalSecret,
|
|
4811
|
+
approvalId,
|
|
4812
|
+
toolCallId: toolCall.toolCallId,
|
|
4813
|
+
toolName: toolCall.toolName,
|
|
4814
|
+
input: toolCall.input
|
|
4815
|
+
});
|
|
4601
4816
|
toolApprovalRequests[toolCall.toolCallId] = {
|
|
4602
4817
|
type: "tool-approval-request",
|
|
4603
|
-
approvalId
|
|
4604
|
-
toolCall
|
|
4818
|
+
approvalId,
|
|
4819
|
+
toolCall,
|
|
4820
|
+
...signature != null ? { signature } : {}
|
|
4605
4821
|
};
|
|
4606
4822
|
}
|
|
4607
4823
|
}
|
|
@@ -4615,7 +4831,7 @@ async function generateText({
|
|
|
4615
4831
|
toolCallId: toolCall.toolCallId,
|
|
4616
4832
|
toolName: toolCall.toolName,
|
|
4617
4833
|
input: toolCall.input,
|
|
4618
|
-
error: (0,
|
|
4834
|
+
error: (0, import_provider_utils16.getErrorMessage)(toolCall.error),
|
|
4619
4835
|
dynamic: true
|
|
4620
4836
|
});
|
|
4621
4837
|
}
|
|
@@ -5075,8 +5291,8 @@ function asContent({
|
|
|
5075
5291
|
}
|
|
5076
5292
|
|
|
5077
5293
|
// src/generate-text/stream-text.ts
|
|
5078
|
-
var
|
|
5079
|
-
var
|
|
5294
|
+
var import_provider29 = require("@ai-sdk/provider");
|
|
5295
|
+
var import_provider_utils20 = require("@ai-sdk/provider-utils");
|
|
5080
5296
|
|
|
5081
5297
|
// src/util/prepare-headers.ts
|
|
5082
5298
|
function prepareHeaders(headers, defaultHeaders) {
|
|
@@ -5223,17 +5439,17 @@ function getResponseUIMessageId({
|
|
|
5223
5439
|
}
|
|
5224
5440
|
|
|
5225
5441
|
// src/ui/process-ui-message-stream.ts
|
|
5226
|
-
var
|
|
5442
|
+
var import_provider_utils18 = require("@ai-sdk/provider-utils");
|
|
5227
5443
|
|
|
5228
5444
|
// src/ui-message-stream/ui-message-chunks.ts
|
|
5229
5445
|
var import_v47 = require("zod/v4");
|
|
5230
|
-
var
|
|
5446
|
+
var import_provider_utils17 = require("@ai-sdk/provider-utils");
|
|
5231
5447
|
var toolMetadataSchema = import_v47.z.record(
|
|
5232
5448
|
import_v47.z.string(),
|
|
5233
5449
|
jsonValueSchema.optional()
|
|
5234
5450
|
);
|
|
5235
|
-
var uiMessageChunkSchema = (0,
|
|
5236
|
-
() => (0,
|
|
5451
|
+
var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
|
|
5452
|
+
() => (0, import_provider_utils17.zodSchema)(
|
|
5237
5453
|
import_v47.z.union([
|
|
5238
5454
|
import_v47.z.strictObject({
|
|
5239
5455
|
type: import_v47.z.literal("text-start"),
|
|
@@ -5296,7 +5512,8 @@ var uiMessageChunkSchema = (0, import_provider_utils15.lazySchema)(
|
|
|
5296
5512
|
import_v47.z.strictObject({
|
|
5297
5513
|
type: import_v47.z.literal("tool-approval-request"),
|
|
5298
5514
|
approvalId: import_v47.z.string(),
|
|
5299
|
-
toolCallId: import_v47.z.string()
|
|
5515
|
+
toolCallId: import_v47.z.string(),
|
|
5516
|
+
signature: import_v47.z.string().optional()
|
|
5300
5517
|
}),
|
|
5301
5518
|
import_v47.z.strictObject({
|
|
5302
5519
|
type: import_v47.z.literal("tool-output-available"),
|
|
@@ -5471,7 +5688,7 @@ function processUIMessageStream({
|
|
|
5471
5688
|
new TransformStream({
|
|
5472
5689
|
async transform(chunk, controller) {
|
|
5473
5690
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
5474
|
-
var
|
|
5691
|
+
var _a22, _b, _c, _d;
|
|
5475
5692
|
function getToolInvocation(toolCallId) {
|
|
5476
5693
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
|
5477
5694
|
const toolInvocation = toolInvocations.find(
|
|
@@ -5487,7 +5704,7 @@ function processUIMessageStream({
|
|
|
5487
5704
|
return toolInvocation;
|
|
5488
5705
|
}
|
|
5489
5706
|
function updateToolPart(options) {
|
|
5490
|
-
var
|
|
5707
|
+
var _a23;
|
|
5491
5708
|
const part = state.message.parts.find(
|
|
5492
5709
|
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
5493
5710
|
);
|
|
@@ -5506,7 +5723,7 @@ function processUIMessageStream({
|
|
|
5506
5723
|
if (options.toolMetadata !== void 0) {
|
|
5507
5724
|
anyPart.toolMetadata = options.toolMetadata;
|
|
5508
5725
|
}
|
|
5509
|
-
anyPart.providerExecuted = (
|
|
5726
|
+
anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
|
|
5510
5727
|
const providerMetadata = anyOptions.providerMetadata;
|
|
5511
5728
|
if (providerMetadata != null) {
|
|
5512
5729
|
if (options.state === "output-available" || options.state === "output-error") {
|
|
@@ -5535,7 +5752,7 @@ function processUIMessageStream({
|
|
|
5535
5752
|
}
|
|
5536
5753
|
}
|
|
5537
5754
|
function updateDynamicToolPart(options) {
|
|
5538
|
-
var
|
|
5755
|
+
var _a23, _b2;
|
|
5539
5756
|
const part = state.message.parts.find(
|
|
5540
5757
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
5541
5758
|
);
|
|
@@ -5547,7 +5764,7 @@ function processUIMessageStream({
|
|
|
5547
5764
|
anyPart.input = anyOptions.input;
|
|
5548
5765
|
anyPart.output = anyOptions.output;
|
|
5549
5766
|
anyPart.errorText = anyOptions.errorText;
|
|
5550
|
-
anyPart.rawInput = (
|
|
5767
|
+
anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
|
|
5551
5768
|
anyPart.preliminary = anyOptions.preliminary;
|
|
5552
5769
|
if (options.title !== void 0) {
|
|
5553
5770
|
anyPart.title = options.title;
|
|
@@ -5587,7 +5804,7 @@ function processUIMessageStream({
|
|
|
5587
5804
|
if (metadata != null) {
|
|
5588
5805
|
const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;
|
|
5589
5806
|
if (messageMetadataSchema != null) {
|
|
5590
|
-
await (0,
|
|
5807
|
+
await (0, import_provider_utils18.validateTypes)({
|
|
5591
5808
|
value: mergedMetadata,
|
|
5592
5809
|
schema: messageMetadataSchema,
|
|
5593
5810
|
context: {
|
|
@@ -5622,7 +5839,7 @@ function processUIMessageStream({
|
|
|
5622
5839
|
});
|
|
5623
5840
|
}
|
|
5624
5841
|
textPart.text += chunk.delta;
|
|
5625
|
-
textPart.providerMetadata = (
|
|
5842
|
+
textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
|
|
5626
5843
|
write();
|
|
5627
5844
|
break;
|
|
5628
5845
|
}
|
|
@@ -5851,7 +6068,10 @@ function processUIMessageStream({
|
|
|
5851
6068
|
case "tool-approval-request": {
|
|
5852
6069
|
const toolInvocation = getToolInvocation(chunk.toolCallId);
|
|
5853
6070
|
toolInvocation.state = "approval-requested";
|
|
5854
|
-
toolInvocation.approval = {
|
|
6071
|
+
toolInvocation.approval = {
|
|
6072
|
+
id: chunk.approvalId,
|
|
6073
|
+
...chunk.signature != null ? { signature: chunk.signature } : {}
|
|
6074
|
+
};
|
|
5855
6075
|
write();
|
|
5856
6076
|
break;
|
|
5857
6077
|
}
|
|
@@ -5971,7 +6191,7 @@ function processUIMessageStream({
|
|
|
5971
6191
|
(p) => "id" in p && "data" in p && p.id === chunk.id && p.type === chunk.type
|
|
5972
6192
|
);
|
|
5973
6193
|
const actualPartIdx = partIdx >= 0 ? partIdx : state.message.parts.length;
|
|
5974
|
-
await (0,
|
|
6194
|
+
await (0, import_provider_utils18.validateTypes)({
|
|
5975
6195
|
value: chunk.data,
|
|
5976
6196
|
schema: dataPartSchemas[chunk.type],
|
|
5977
6197
|
context: {
|
|
@@ -6142,13 +6362,13 @@ function createAsyncIterableStream(source) {
|
|
|
6142
6362
|
const reader = this.getReader();
|
|
6143
6363
|
let finished = false;
|
|
6144
6364
|
async function cleanup(cancelStream) {
|
|
6145
|
-
var
|
|
6365
|
+
var _a22;
|
|
6146
6366
|
if (finished)
|
|
6147
6367
|
return;
|
|
6148
6368
|
finished = true;
|
|
6149
6369
|
try {
|
|
6150
6370
|
if (cancelStream) {
|
|
6151
|
-
await ((
|
|
6371
|
+
await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
|
|
6152
6372
|
}
|
|
6153
6373
|
} finally {
|
|
6154
6374
|
try {
|
|
@@ -6313,7 +6533,7 @@ function createStitchableStream() {
|
|
|
6313
6533
|
}
|
|
6314
6534
|
|
|
6315
6535
|
// src/generate-text/run-tools-transformation.ts
|
|
6316
|
-
var
|
|
6536
|
+
var import_provider_utils19 = require("@ai-sdk/provider-utils");
|
|
6317
6537
|
function runToolsTransformation({
|
|
6318
6538
|
tools,
|
|
6319
6539
|
generatorStream,
|
|
@@ -6324,6 +6544,7 @@ function runToolsTransformation({
|
|
|
6324
6544
|
abortSignal,
|
|
6325
6545
|
repairToolCall,
|
|
6326
6546
|
experimental_context,
|
|
6547
|
+
toolApprovalSecret,
|
|
6327
6548
|
generateId: generateId2,
|
|
6328
6549
|
stepNumber,
|
|
6329
6550
|
model,
|
|
@@ -6427,7 +6648,7 @@ function runToolsTransformation({
|
|
|
6427
6648
|
toolCallId: toolCall.toolCallId,
|
|
6428
6649
|
toolName: toolCall.toolName,
|
|
6429
6650
|
input: toolCall.input,
|
|
6430
|
-
error: (0,
|
|
6651
|
+
error: (0, import_provider_utils19.getErrorMessage)(toolCall.error),
|
|
6431
6652
|
dynamic: true,
|
|
6432
6653
|
title: toolCall.title,
|
|
6433
6654
|
...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}
|
|
@@ -6453,10 +6674,19 @@ function runToolsTransformation({
|
|
|
6453
6674
|
messages,
|
|
6454
6675
|
experimental_context
|
|
6455
6676
|
})) {
|
|
6677
|
+
const approvalId = generateId2();
|
|
6678
|
+
const signature = await maybeSignApproval({
|
|
6679
|
+
secret: toolApprovalSecret,
|
|
6680
|
+
approvalId,
|
|
6681
|
+
toolCallId: toolCall.toolCallId,
|
|
6682
|
+
toolName: toolCall.toolName,
|
|
6683
|
+
input: toolCall.input
|
|
6684
|
+
});
|
|
6456
6685
|
toolResultsStreamController.enqueue({
|
|
6457
6686
|
type: "tool-approval-request",
|
|
6458
|
-
approvalId
|
|
6459
|
-
toolCall
|
|
6687
|
+
approvalId,
|
|
6688
|
+
toolCall,
|
|
6689
|
+
...signature != null ? { signature } : {}
|
|
6460
6690
|
});
|
|
6461
6691
|
break;
|
|
6462
6692
|
}
|
|
@@ -6565,7 +6795,7 @@ function runToolsTransformation({
|
|
|
6565
6795
|
}
|
|
6566
6796
|
|
|
6567
6797
|
// src/generate-text/stream-text.ts
|
|
6568
|
-
var originalGenerateId2 = (0,
|
|
6798
|
+
var originalGenerateId2 = (0, import_provider_utils20.createIdGenerator)({
|
|
6569
6799
|
prefix: "aitxt",
|
|
6570
6800
|
size: 24
|
|
6571
6801
|
});
|
|
@@ -6627,6 +6857,7 @@ function streamText({
|
|
|
6627
6857
|
experimental_onToolCallStart: onToolCallStart,
|
|
6628
6858
|
experimental_onToolCallFinish: onToolCallFinish,
|
|
6629
6859
|
experimental_context,
|
|
6860
|
+
experimental_toolApprovalSecret,
|
|
6630
6861
|
experimental_include: include,
|
|
6631
6862
|
_internal: { now: now2 = now, generateId: generateId2 = originalGenerateId2 } = {},
|
|
6632
6863
|
...settings
|
|
@@ -6681,6 +6912,7 @@ function streamText({
|
|
|
6681
6912
|
now: now2,
|
|
6682
6913
|
generateId: generateId2,
|
|
6683
6914
|
experimental_context,
|
|
6915
|
+
experimental_toolApprovalSecret,
|
|
6684
6916
|
download: download2,
|
|
6685
6917
|
include
|
|
6686
6918
|
});
|
|
@@ -6708,7 +6940,7 @@ function createOutputTransformStream(output) {
|
|
|
6708
6940
|
}
|
|
6709
6941
|
return new TransformStream({
|
|
6710
6942
|
async transform(chunk, controller) {
|
|
6711
|
-
var
|
|
6943
|
+
var _a22;
|
|
6712
6944
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
6713
6945
|
publishTextChunk({ controller });
|
|
6714
6946
|
}
|
|
@@ -6735,7 +6967,7 @@ function createOutputTransformStream(output) {
|
|
|
6735
6967
|
}
|
|
6736
6968
|
text2 += chunk.text;
|
|
6737
6969
|
textChunk += chunk.text;
|
|
6738
|
-
textProviderMetadata = (
|
|
6970
|
+
textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
|
|
6739
6971
|
const result = await output.parsePartialOutput({ text: text2 });
|
|
6740
6972
|
if (result !== void 0) {
|
|
6741
6973
|
const currentValue = typeof result.partial === "string" ? result.partial : JSON.stringify(result.partial);
|
|
@@ -6788,13 +7020,14 @@ var DefaultStreamTextResult = class {
|
|
|
6788
7020
|
onToolCallStart,
|
|
6789
7021
|
onToolCallFinish,
|
|
6790
7022
|
experimental_context,
|
|
7023
|
+
experimental_toolApprovalSecret,
|
|
6791
7024
|
download: download2,
|
|
6792
7025
|
include
|
|
6793
7026
|
}) {
|
|
6794
|
-
this._totalUsage = new
|
|
6795
|
-
this._finishReason = new
|
|
6796
|
-
this._rawFinishReason = new
|
|
6797
|
-
this._steps = new
|
|
7027
|
+
this._totalUsage = new import_provider_utils20.DelayedPromise();
|
|
7028
|
+
this._finishReason = new import_provider_utils20.DelayedPromise();
|
|
7029
|
+
this._rawFinishReason = new import_provider_utils20.DelayedPromise();
|
|
7030
|
+
this._steps = new import_provider_utils20.DelayedPromise();
|
|
6798
7031
|
this.outputSpecification = output;
|
|
6799
7032
|
this.includeRawChunks = includeRawChunks;
|
|
6800
7033
|
this.tools = tools;
|
|
@@ -6812,11 +7045,11 @@ var DefaultStreamTextResult = class {
|
|
|
6812
7045
|
let recordedNoOutputError;
|
|
6813
7046
|
const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
|
|
6814
7047
|
let rootSpan;
|
|
6815
|
-
let activeTextContent =
|
|
6816
|
-
let activeReasoningContent =
|
|
7048
|
+
let activeTextContent = createIdMap();
|
|
7049
|
+
let activeReasoningContent = createIdMap();
|
|
6817
7050
|
const eventProcessor = new TransformStream({
|
|
6818
7051
|
async transform(chunk, controller) {
|
|
6819
|
-
var
|
|
7052
|
+
var _a22, _b, _c, _d;
|
|
6820
7053
|
controller.enqueue(chunk);
|
|
6821
7054
|
const { part } = chunk;
|
|
6822
7055
|
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") {
|
|
@@ -6850,7 +7083,7 @@ var DefaultStreamTextResult = class {
|
|
|
6850
7083
|
return;
|
|
6851
7084
|
}
|
|
6852
7085
|
activeText.text += part.text;
|
|
6853
|
-
activeText.providerMetadata = (
|
|
7086
|
+
activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
|
|
6854
7087
|
}
|
|
6855
7088
|
if (part.type === "text-end") {
|
|
6856
7089
|
const activeText = activeTextContent[part.id];
|
|
@@ -6929,8 +7162,8 @@ var DefaultStreamTextResult = class {
|
|
|
6929
7162
|
}
|
|
6930
7163
|
if (part.type === "start-step") {
|
|
6931
7164
|
recordedContent = [];
|
|
6932
|
-
activeReasoningContent =
|
|
6933
|
-
activeTextContent =
|
|
7165
|
+
activeReasoningContent = createIdMap();
|
|
7166
|
+
activeTextContent = createIdMap();
|
|
6934
7167
|
recordedRequest = part.request;
|
|
6935
7168
|
recordedWarnings = part.warnings;
|
|
6936
7169
|
}
|
|
@@ -6976,7 +7209,7 @@ var DefaultStreamTextResult = class {
|
|
|
6976
7209
|
}
|
|
6977
7210
|
},
|
|
6978
7211
|
async flush(controller) {
|
|
6979
|
-
var
|
|
7212
|
+
var _a22, _b, _c, _d, _e, _f, _g;
|
|
6980
7213
|
try {
|
|
6981
7214
|
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
6982
7215
|
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
@@ -7040,15 +7273,15 @@ var DefaultStreamTextResult = class {
|
|
|
7040
7273
|
},
|
|
7041
7274
|
"ai.response.toolCalls": {
|
|
7042
7275
|
output: () => {
|
|
7043
|
-
var
|
|
7044
|
-
return ((
|
|
7276
|
+
var _a23;
|
|
7277
|
+
return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
7045
7278
|
}
|
|
7046
7279
|
},
|
|
7047
7280
|
"ai.response.providerMetadata": JSON.stringify(
|
|
7048
7281
|
finalStep.providerMetadata
|
|
7049
7282
|
),
|
|
7050
7283
|
"ai.usage.inputTokens": totalUsage.inputTokens,
|
|
7051
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7284
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
7052
7285
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
|
|
7053
7286
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
|
|
7054
7287
|
"ai.usage.outputTokens": totalUsage.outputTokens,
|
|
@@ -7083,7 +7316,7 @@ var DefaultStreamTextResult = class {
|
|
|
7083
7316
|
// The `reason` is usually of type DOMException, but it can also be of any type,
|
|
7084
7317
|
// so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.
|
|
7085
7318
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason
|
|
7086
|
-
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0,
|
|
7319
|
+
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider29.getErrorMessage)(abortSignal.reason) } : {}
|
|
7087
7320
|
});
|
|
7088
7321
|
controller.close();
|
|
7089
7322
|
}
|
|
@@ -7099,7 +7332,7 @@ var DefaultStreamTextResult = class {
|
|
|
7099
7332
|
}
|
|
7100
7333
|
controller.enqueue(value);
|
|
7101
7334
|
} catch (error) {
|
|
7102
|
-
if ((0,
|
|
7335
|
+
if ((0, import_provider_utils20.isAbortError)(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {
|
|
7103
7336
|
abort();
|
|
7104
7337
|
} else {
|
|
7105
7338
|
controller.error(error);
|
|
@@ -7199,12 +7432,24 @@ var DefaultStreamTextResult = class {
|
|
|
7199
7432
|
const initialResponseMessages = [];
|
|
7200
7433
|
const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
|
|
7201
7434
|
if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
|
|
7202
|
-
const
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7435
|
+
const {
|
|
7436
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
7437
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
7438
|
+
} = await validateApprovedToolApprovals({
|
|
7439
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
7440
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7441
|
+
),
|
|
7442
|
+
tools,
|
|
7443
|
+
messages: initialMessages,
|
|
7444
|
+
experimental_context,
|
|
7445
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
7446
|
+
});
|
|
7447
|
+
const localDeniedToolApprovals = [
|
|
7448
|
+
...deniedToolApprovals.filter(
|
|
7449
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7450
|
+
),
|
|
7451
|
+
...revalidationDeniedToolApprovals
|
|
7452
|
+
];
|
|
7208
7453
|
const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
|
|
7209
7454
|
(toolApproval) => toolApproval.toolCall.providerExecuted
|
|
7210
7455
|
);
|
|
@@ -7299,7 +7544,7 @@ var DefaultStreamTextResult = class {
|
|
|
7299
7544
|
responseMessages,
|
|
7300
7545
|
usage
|
|
7301
7546
|
}) {
|
|
7302
|
-
var
|
|
7547
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7303
7548
|
const includeRawChunks2 = self.includeRawChunks;
|
|
7304
7549
|
const stepTimeoutId = stepTimeoutMs != null ? setTimeout(() => stepAbortController.abort(), stepTimeoutMs) : void 0;
|
|
7305
7550
|
let chunkTimeoutId = void 0;
|
|
@@ -7326,7 +7571,7 @@ var DefaultStreamTextResult = class {
|
|
|
7326
7571
|
}
|
|
7327
7572
|
}
|
|
7328
7573
|
try {
|
|
7329
|
-
stepFinish = new
|
|
7574
|
+
stepFinish = new import_provider_utils20.DelayedPromise();
|
|
7330
7575
|
const stepInputMessages = [...initialMessages, ...responseMessages];
|
|
7331
7576
|
const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
|
|
7332
7577
|
model,
|
|
@@ -7336,7 +7581,7 @@ var DefaultStreamTextResult = class {
|
|
|
7336
7581
|
experimental_context
|
|
7337
7582
|
}));
|
|
7338
7583
|
const stepModel = resolveLanguageModel(
|
|
7339
|
-
(
|
|
7584
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
7340
7585
|
);
|
|
7341
7586
|
const stepModelInfo = {
|
|
7342
7587
|
provider: stepModel.provider,
|
|
@@ -7459,6 +7704,7 @@ var DefaultStreamTextResult = class {
|
|
|
7459
7704
|
repairToolCall,
|
|
7460
7705
|
abortSignal,
|
|
7461
7706
|
experimental_context,
|
|
7707
|
+
toolApprovalSecret: experimental_toolApprovalSecret,
|
|
7462
7708
|
generateId: generateId2,
|
|
7463
7709
|
stepNumber: recordedSteps.length,
|
|
7464
7710
|
model: stepModelInfo,
|
|
@@ -7493,7 +7739,7 @@ var DefaultStreamTextResult = class {
|
|
|
7493
7739
|
streamWithToolResults.pipeThrough(
|
|
7494
7740
|
new TransformStream({
|
|
7495
7741
|
async transform(chunk, controller) {
|
|
7496
|
-
var
|
|
7742
|
+
var _a23, _b2, _c2, _d2, _e2;
|
|
7497
7743
|
resetChunkTimeout();
|
|
7498
7744
|
if (chunk.type === "stream-start") {
|
|
7499
7745
|
warnings = chunk.warnings;
|
|
@@ -7570,7 +7816,7 @@ var DefaultStreamTextResult = class {
|
|
|
7570
7816
|
}
|
|
7571
7817
|
case "response-metadata": {
|
|
7572
7818
|
stepResponse = {
|
|
7573
|
-
id: (
|
|
7819
|
+
id: (_a23 = chunk.id) != null ? _a23 : stepResponse.id,
|
|
7574
7820
|
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
|
7575
7821
|
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
|
7576
7822
|
};
|
|
@@ -7658,7 +7904,7 @@ var DefaultStreamTextResult = class {
|
|
|
7658
7904
|
},
|
|
7659
7905
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
7660
7906
|
async flush(controller) {
|
|
7661
|
-
var
|
|
7907
|
+
var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
7662
7908
|
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
7663
7909
|
controller.enqueue({
|
|
7664
7910
|
type: "error",
|
|
@@ -7686,7 +7932,7 @@ var DefaultStreamTextResult = class {
|
|
|
7686
7932
|
"ai.response.model": stepResponse.modelId,
|
|
7687
7933
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
|
7688
7934
|
"ai.usage.inputTokens": stepUsage.inputTokens,
|
|
7689
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7935
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
7690
7936
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
|
|
7691
7937
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
|
|
7692
7938
|
"ai.usage.outputTokens": stepUsage.outputTokens,
|
|
@@ -7960,19 +8206,19 @@ var DefaultStreamTextResult = class {
|
|
|
7960
8206
|
this._steps.reject(error);
|
|
7961
8207
|
}
|
|
7962
8208
|
async consumeStream(options) {
|
|
7963
|
-
var
|
|
8209
|
+
var _a22;
|
|
7964
8210
|
try {
|
|
7965
8211
|
await consumeStream({
|
|
7966
8212
|
stream: this.fullStream,
|
|
7967
8213
|
onError: (error) => {
|
|
7968
|
-
var
|
|
8214
|
+
var _a23;
|
|
7969
8215
|
this.rejectResultPromises(error);
|
|
7970
|
-
(
|
|
8216
|
+
(_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
|
|
7971
8217
|
}
|
|
7972
8218
|
});
|
|
7973
8219
|
} catch (error) {
|
|
7974
8220
|
this.rejectResultPromises(error);
|
|
7975
|
-
(
|
|
8221
|
+
(_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
|
|
7976
8222
|
}
|
|
7977
8223
|
}
|
|
7978
8224
|
get experimental_partialOutputStream() {
|
|
@@ -7992,10 +8238,10 @@ var DefaultStreamTextResult = class {
|
|
|
7992
8238
|
);
|
|
7993
8239
|
}
|
|
7994
8240
|
get elementStream() {
|
|
7995
|
-
var
|
|
7996
|
-
const transform = (
|
|
8241
|
+
var _a22, _b, _c;
|
|
8242
|
+
const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
|
|
7997
8243
|
if (transform == null) {
|
|
7998
|
-
throw new
|
|
8244
|
+
throw new import_provider29.UnsupportedFunctionalityError({
|
|
7999
8245
|
functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
|
|
8000
8246
|
});
|
|
8001
8247
|
}
|
|
@@ -8003,8 +8249,8 @@ var DefaultStreamTextResult = class {
|
|
|
8003
8249
|
}
|
|
8004
8250
|
get output() {
|
|
8005
8251
|
return this.finalStep.then((step) => {
|
|
8006
|
-
var
|
|
8007
|
-
const output = (
|
|
8252
|
+
var _a22;
|
|
8253
|
+
const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
|
|
8008
8254
|
return output.parseCompleteOutput(
|
|
8009
8255
|
{ text: step.text },
|
|
8010
8256
|
{
|
|
@@ -8024,15 +8270,16 @@ var DefaultStreamTextResult = class {
|
|
|
8024
8270
|
sendSources = false,
|
|
8025
8271
|
sendStart = true,
|
|
8026
8272
|
sendFinish = true,
|
|
8027
|
-
onError =
|
|
8273
|
+
onError = () => "An error occurred."
|
|
8274
|
+
// prevent leaking server error details to the client by default
|
|
8028
8275
|
} = {}) {
|
|
8029
8276
|
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
|
8030
8277
|
originalMessages,
|
|
8031
8278
|
responseMessageId: generateMessageId
|
|
8032
8279
|
}) : void 0;
|
|
8033
8280
|
const isDynamic = (part) => {
|
|
8034
|
-
var
|
|
8035
|
-
const tool2 = (
|
|
8281
|
+
var _a22;
|
|
8282
|
+
const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
|
|
8036
8283
|
if (tool2 == null) {
|
|
8037
8284
|
return part.dynamic;
|
|
8038
8285
|
}
|
|
@@ -8178,7 +8425,8 @@ var DefaultStreamTextResult = class {
|
|
|
8178
8425
|
controller.enqueue({
|
|
8179
8426
|
type: "tool-approval-request",
|
|
8180
8427
|
approvalId: part.approvalId,
|
|
8181
|
-
toolCallId: part.toolCall.toolCallId
|
|
8428
|
+
toolCallId: part.toolCall.toolCallId,
|
|
8429
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
8182
8430
|
});
|
|
8183
8431
|
break;
|
|
8184
8432
|
}
|
|
@@ -8374,9 +8622,9 @@ var ToolLoopAgent = class {
|
|
|
8374
8622
|
return this.settings.tools;
|
|
8375
8623
|
}
|
|
8376
8624
|
async prepareCall(options) {
|
|
8377
|
-
var
|
|
8625
|
+
var _a22, _b, _c, _d;
|
|
8378
8626
|
if (this.settings.callOptionsSchema != null && options.options !== void 0) {
|
|
8379
|
-
const validatedOptions = await (0,
|
|
8627
|
+
const validatedOptions = await (0, import_provider_utils21.validateTypes)({
|
|
8380
8628
|
value: options.options,
|
|
8381
8629
|
schema: this.settings.callOptionsSchema,
|
|
8382
8630
|
context: { field: "options" }
|
|
@@ -8386,7 +8634,7 @@ var ToolLoopAgent = class {
|
|
|
8386
8634
|
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
|
|
8387
8635
|
const baseCallArgs = {
|
|
8388
8636
|
...settingsWithoutCallback,
|
|
8389
|
-
stopWhen: (
|
|
8637
|
+
stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
|
|
8390
8638
|
...options
|
|
8391
8639
|
};
|
|
8392
8640
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
|
|
@@ -8458,14 +8706,15 @@ var ToolLoopAgent = class {
|
|
|
8458
8706
|
};
|
|
8459
8707
|
|
|
8460
8708
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
8461
|
-
var
|
|
8709
|
+
var import_provider_utils22 = require("@ai-sdk/provider-utils");
|
|
8462
8710
|
function createUIMessageStream({
|
|
8463
8711
|
execute,
|
|
8464
|
-
onError =
|
|
8712
|
+
onError = () => "An error occurred.",
|
|
8713
|
+
// prevent leaking server error details to the client by default
|
|
8465
8714
|
originalMessages,
|
|
8466
8715
|
onStepFinish,
|
|
8467
8716
|
onFinish,
|
|
8468
|
-
generateId: generateId2 =
|
|
8717
|
+
generateId: generateId2 = import_provider_utils22.generateId
|
|
8469
8718
|
}) {
|
|
8470
8719
|
let controller;
|
|
8471
8720
|
const ongoingStreamPromises = [];
|
|
@@ -8552,7 +8801,7 @@ function readUIMessageStream({
|
|
|
8552
8801
|
onError,
|
|
8553
8802
|
terminateOnError = false
|
|
8554
8803
|
}) {
|
|
8555
|
-
var
|
|
8804
|
+
var _a22;
|
|
8556
8805
|
let controller;
|
|
8557
8806
|
let hasErrored = false;
|
|
8558
8807
|
const outputStream = new ReadableStream({
|
|
@@ -8561,7 +8810,7 @@ function readUIMessageStream({
|
|
|
8561
8810
|
}
|
|
8562
8811
|
});
|
|
8563
8812
|
const state = createStreamingUIMessageState({
|
|
8564
|
-
messageId: (
|
|
8813
|
+
messageId: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : "",
|
|
8565
8814
|
lastMessage: message
|
|
8566
8815
|
});
|
|
8567
8816
|
const handleError = (error) => {
|
|
@@ -8594,7 +8843,7 @@ function readUIMessageStream({
|
|
|
8594
8843
|
}
|
|
8595
8844
|
|
|
8596
8845
|
// src/ui/convert-to-model-messages.ts
|
|
8597
|
-
var
|
|
8846
|
+
var import_provider_utils23 = require("@ai-sdk/provider-utils");
|
|
8598
8847
|
async function convertToModelMessages(messages, options) {
|
|
8599
8848
|
const modelMessages = [];
|
|
8600
8849
|
if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
|
|
@@ -8628,7 +8877,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8628
8877
|
modelMessages.push({
|
|
8629
8878
|
role: "user",
|
|
8630
8879
|
content: message.parts.map((part) => {
|
|
8631
|
-
var
|
|
8880
|
+
var _a22;
|
|
8632
8881
|
if (isTextUIPart(part)) {
|
|
8633
8882
|
return {
|
|
8634
8883
|
type: "text",
|
|
@@ -8646,12 +8895,12 @@ async function convertToModelMessages(messages, options) {
|
|
|
8646
8895
|
};
|
|
8647
8896
|
}
|
|
8648
8897
|
if (isDataUIPart(part)) {
|
|
8649
|
-
return (
|
|
8898
|
+
return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(
|
|
8650
8899
|
options,
|
|
8651
8900
|
part
|
|
8652
8901
|
);
|
|
8653
8902
|
}
|
|
8654
|
-
}).filter(
|
|
8903
|
+
}).filter(import_provider_utils23.isNonNullable)
|
|
8655
8904
|
});
|
|
8656
8905
|
break;
|
|
8657
8906
|
}
|
|
@@ -8659,7 +8908,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8659
8908
|
if (message.parts != null) {
|
|
8660
8909
|
let block = [];
|
|
8661
8910
|
async function processBlock() {
|
|
8662
|
-
var
|
|
8911
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h;
|
|
8663
8912
|
if (block.length === 0) {
|
|
8664
8913
|
return;
|
|
8665
8914
|
}
|
|
@@ -8692,7 +8941,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8692
8941
|
type: "tool-call",
|
|
8693
8942
|
toolCallId: part.toolCallId,
|
|
8694
8943
|
toolName,
|
|
8695
|
-
input: part.state === "output-error" ? (
|
|
8944
|
+
input: part.state === "output-error" ? (_a22 = part.input) != null ? _a22 : "rawInput" in part ? part.rawInput : void 0 : part.input,
|
|
8696
8945
|
providerExecuted: part.providerExecuted,
|
|
8697
8946
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
8698
8947
|
});
|
|
@@ -8700,7 +8949,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8700
8949
|
content.push({
|
|
8701
8950
|
type: "tool-approval-request",
|
|
8702
8951
|
approvalId: part.approval.id,
|
|
8703
|
-
toolCallId: part.toolCallId
|
|
8952
|
+
toolCallId: part.toolCallId,
|
|
8953
|
+
...part.approval.signature != null ? { signature: part.approval.signature } : {}
|
|
8704
8954
|
});
|
|
8705
8955
|
}
|
|
8706
8956
|
if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
|
|
@@ -8739,8 +8989,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
8739
8989
|
});
|
|
8740
8990
|
const toolParts = block.filter(
|
|
8741
8991
|
(part) => {
|
|
8742
|
-
var
|
|
8743
|
-
return isToolUIPart(part) && (part.providerExecuted !== true || ((
|
|
8992
|
+
var _a23;
|
|
8993
|
+
return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);
|
|
8744
8994
|
}
|
|
8745
8995
|
);
|
|
8746
8996
|
if (toolParts.length > 0) {
|
|
@@ -8828,15 +9078,15 @@ async function convertToModelMessages(messages, options) {
|
|
|
8828
9078
|
}
|
|
8829
9079
|
|
|
8830
9080
|
// src/ui/validate-ui-messages.ts
|
|
8831
|
-
var
|
|
8832
|
-
var
|
|
9081
|
+
var import_provider30 = require("@ai-sdk/provider");
|
|
9082
|
+
var import_provider_utils24 = require("@ai-sdk/provider-utils");
|
|
8833
9083
|
var import_v48 = require("zod/v4");
|
|
8834
9084
|
var toolMetadataSchema2 = import_v48.z.record(
|
|
8835
9085
|
import_v48.z.string(),
|
|
8836
9086
|
jsonValueSchema.optional()
|
|
8837
9087
|
);
|
|
8838
|
-
var uiMessagesSchema = (0,
|
|
8839
|
-
() => (0,
|
|
9088
|
+
var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
9089
|
+
() => (0, import_provider_utils24.zodSchema)(
|
|
8840
9090
|
import_v48.z.array(
|
|
8841
9091
|
import_v48.z.object({
|
|
8842
9092
|
id: import_v48.z.string(),
|
|
@@ -8926,7 +9176,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
8926
9176
|
approval: import_v48.z.object({
|
|
8927
9177
|
id: import_v48.z.string(),
|
|
8928
9178
|
approved: import_v48.z.never().optional(),
|
|
8929
|
-
reason: import_v48.z.never().optional()
|
|
9179
|
+
reason: import_v48.z.never().optional(),
|
|
9180
|
+
signature: import_v48.z.string().optional()
|
|
8930
9181
|
})
|
|
8931
9182
|
}),
|
|
8932
9183
|
import_v48.z.object({
|
|
@@ -8943,7 +9194,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
8943
9194
|
approval: import_v48.z.object({
|
|
8944
9195
|
id: import_v48.z.string(),
|
|
8945
9196
|
approved: import_v48.z.boolean(),
|
|
8946
|
-
reason: import_v48.z.string().optional()
|
|
9197
|
+
reason: import_v48.z.string().optional(),
|
|
9198
|
+
signature: import_v48.z.string().optional()
|
|
8947
9199
|
})
|
|
8948
9200
|
}),
|
|
8949
9201
|
import_v48.z.object({
|
|
@@ -8962,7 +9214,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
8962
9214
|
approval: import_v48.z.object({
|
|
8963
9215
|
id: import_v48.z.string(),
|
|
8964
9216
|
approved: import_v48.z.literal(true),
|
|
8965
|
-
reason: import_v48.z.string().optional()
|
|
9217
|
+
reason: import_v48.z.string().optional(),
|
|
9218
|
+
signature: import_v48.z.string().optional()
|
|
8966
9219
|
}).optional()
|
|
8967
9220
|
}),
|
|
8968
9221
|
import_v48.z.object({
|
|
@@ -8981,7 +9234,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
8981
9234
|
approval: import_v48.z.object({
|
|
8982
9235
|
id: import_v48.z.string(),
|
|
8983
9236
|
approved: import_v48.z.literal(true),
|
|
8984
|
-
reason: import_v48.z.string().optional()
|
|
9237
|
+
reason: import_v48.z.string().optional(),
|
|
9238
|
+
signature: import_v48.z.string().optional()
|
|
8985
9239
|
}).optional()
|
|
8986
9240
|
}),
|
|
8987
9241
|
import_v48.z.object({
|
|
@@ -8998,7 +9252,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
8998
9252
|
approval: import_v48.z.object({
|
|
8999
9253
|
id: import_v48.z.string(),
|
|
9000
9254
|
approved: import_v48.z.literal(false),
|
|
9001
|
-
reason: import_v48.z.string().optional()
|
|
9255
|
+
reason: import_v48.z.string().optional(),
|
|
9256
|
+
signature: import_v48.z.string().optional()
|
|
9002
9257
|
})
|
|
9003
9258
|
}),
|
|
9004
9259
|
import_v48.z.object({
|
|
@@ -9038,7 +9293,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
9038
9293
|
approval: import_v48.z.object({
|
|
9039
9294
|
id: import_v48.z.string(),
|
|
9040
9295
|
approved: import_v48.z.never().optional(),
|
|
9041
|
-
reason: import_v48.z.never().optional()
|
|
9296
|
+
reason: import_v48.z.never().optional(),
|
|
9297
|
+
signature: import_v48.z.string().optional()
|
|
9042
9298
|
})
|
|
9043
9299
|
}),
|
|
9044
9300
|
import_v48.z.object({
|
|
@@ -9054,7 +9310,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
9054
9310
|
approval: import_v48.z.object({
|
|
9055
9311
|
id: import_v48.z.string(),
|
|
9056
9312
|
approved: import_v48.z.boolean(),
|
|
9057
|
-
reason: import_v48.z.string().optional()
|
|
9313
|
+
reason: import_v48.z.string().optional(),
|
|
9314
|
+
signature: import_v48.z.string().optional()
|
|
9058
9315
|
})
|
|
9059
9316
|
}),
|
|
9060
9317
|
import_v48.z.object({
|
|
@@ -9072,7 +9329,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
9072
9329
|
approval: import_v48.z.object({
|
|
9073
9330
|
id: import_v48.z.string(),
|
|
9074
9331
|
approved: import_v48.z.literal(true),
|
|
9075
|
-
reason: import_v48.z.string().optional()
|
|
9332
|
+
reason: import_v48.z.string().optional(),
|
|
9333
|
+
signature: import_v48.z.string().optional()
|
|
9076
9334
|
}).optional()
|
|
9077
9335
|
}),
|
|
9078
9336
|
import_v48.z.object({
|
|
@@ -9090,7 +9348,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
9090
9348
|
approval: import_v48.z.object({
|
|
9091
9349
|
id: import_v48.z.string(),
|
|
9092
9350
|
approved: import_v48.z.literal(true),
|
|
9093
|
-
reason: import_v48.z.string().optional()
|
|
9351
|
+
reason: import_v48.z.string().optional(),
|
|
9352
|
+
signature: import_v48.z.string().optional()
|
|
9094
9353
|
}).optional()
|
|
9095
9354
|
}),
|
|
9096
9355
|
import_v48.z.object({
|
|
@@ -9106,7 +9365,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
|
9106
9365
|
approval: import_v48.z.object({
|
|
9107
9366
|
id: import_v48.z.string(),
|
|
9108
9367
|
approved: import_v48.z.literal(false),
|
|
9109
|
-
reason: import_v48.z.string().optional()
|
|
9368
|
+
reason: import_v48.z.string().optional(),
|
|
9369
|
+
signature: import_v48.z.string().optional()
|
|
9110
9370
|
})
|
|
9111
9371
|
})
|
|
9112
9372
|
])
|
|
@@ -9132,13 +9392,13 @@ async function safeValidateUIMessages({
|
|
|
9132
9392
|
})
|
|
9133
9393
|
};
|
|
9134
9394
|
}
|
|
9135
|
-
const validatedMessages = await (0,
|
|
9395
|
+
const validatedMessages = await (0, import_provider_utils24.validateTypes)({
|
|
9136
9396
|
value: messages,
|
|
9137
9397
|
schema: uiMessagesSchema
|
|
9138
9398
|
});
|
|
9139
9399
|
if (metadataSchema) {
|
|
9140
9400
|
for (const [msgIdx, message] of validatedMessages.entries()) {
|
|
9141
|
-
await (0,
|
|
9401
|
+
await (0, import_provider_utils24.validateTypes)({
|
|
9142
9402
|
value: message.metadata,
|
|
9143
9403
|
schema: metadataSchema,
|
|
9144
9404
|
context: {
|
|
@@ -9158,7 +9418,7 @@ async function safeValidateUIMessages({
|
|
|
9158
9418
|
if (!dataSchema) {
|
|
9159
9419
|
return {
|
|
9160
9420
|
success: false,
|
|
9161
|
-
error: new
|
|
9421
|
+
error: new import_provider30.TypeValidationError({
|
|
9162
9422
|
value: dataPart.data,
|
|
9163
9423
|
cause: `No data schema found for data part ${dataName}`,
|
|
9164
9424
|
context: {
|
|
@@ -9169,7 +9429,7 @@ async function safeValidateUIMessages({
|
|
|
9169
9429
|
})
|
|
9170
9430
|
};
|
|
9171
9431
|
}
|
|
9172
|
-
await (0,
|
|
9432
|
+
await (0, import_provider_utils24.validateTypes)({
|
|
9173
9433
|
value: dataPart.data,
|
|
9174
9434
|
schema: dataSchema,
|
|
9175
9435
|
context: {
|
|
@@ -9189,7 +9449,7 @@ async function safeValidateUIMessages({
|
|
|
9189
9449
|
if (!tool2) {
|
|
9190
9450
|
return {
|
|
9191
9451
|
success: false,
|
|
9192
|
-
error: new
|
|
9452
|
+
error: new import_provider30.TypeValidationError({
|
|
9193
9453
|
value: toolPart.input,
|
|
9194
9454
|
cause: `No tool schema found for tool part ${toolName}`,
|
|
9195
9455
|
context: {
|
|
@@ -9201,7 +9461,7 @@ async function safeValidateUIMessages({
|
|
|
9201
9461
|
};
|
|
9202
9462
|
}
|
|
9203
9463
|
if (toolPart.state === "input-available" || toolPart.state === "output-available") {
|
|
9204
|
-
await (0,
|
|
9464
|
+
await (0, import_provider_utils24.validateTypes)({
|
|
9205
9465
|
value: toolPart.input,
|
|
9206
9466
|
schema: tool2.inputSchema,
|
|
9207
9467
|
context: {
|
|
@@ -9212,7 +9472,7 @@ async function safeValidateUIMessages({
|
|
|
9212
9472
|
});
|
|
9213
9473
|
}
|
|
9214
9474
|
if (toolPart.state === "output-available" && tool2.outputSchema) {
|
|
9215
|
-
await (0,
|
|
9475
|
+
await (0, import_provider_utils24.validateTypes)({
|
|
9216
9476
|
value: toolPart.output,
|
|
9217
9477
|
schema: tool2.outputSchema,
|
|
9218
9478
|
context: {
|
|
@@ -9266,7 +9526,7 @@ async function createAgentUIStream({
|
|
|
9266
9526
|
onStepFinish,
|
|
9267
9527
|
...uiMessageStreamOptions
|
|
9268
9528
|
}) {
|
|
9269
|
-
var
|
|
9529
|
+
var _a22;
|
|
9270
9530
|
const validatedMessages = await validateUIMessages({
|
|
9271
9531
|
messages: uiMessages,
|
|
9272
9532
|
tools: agent.tools
|
|
@@ -9285,7 +9545,7 @@ async function createAgentUIStream({
|
|
|
9285
9545
|
return result.toUIMessageStream({
|
|
9286
9546
|
...uiMessageStreamOptions,
|
|
9287
9547
|
// TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
|
|
9288
|
-
originalMessages: (
|
|
9548
|
+
originalMessages: (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages
|
|
9289
9549
|
});
|
|
9290
9550
|
}
|
|
9291
9551
|
|
|
@@ -9326,7 +9586,7 @@ async function pipeAgentUIStreamToResponse({
|
|
|
9326
9586
|
}
|
|
9327
9587
|
|
|
9328
9588
|
// src/embed/embed.ts
|
|
9329
|
-
var
|
|
9589
|
+
var import_provider_utils25 = require("@ai-sdk/provider-utils");
|
|
9330
9590
|
async function embed({
|
|
9331
9591
|
model: modelArg,
|
|
9332
9592
|
value,
|
|
@@ -9341,7 +9601,7 @@ async function embed({
|
|
|
9341
9601
|
maxRetries: maxRetriesArg,
|
|
9342
9602
|
abortSignal
|
|
9343
9603
|
});
|
|
9344
|
-
const headersWithUserAgent = (0,
|
|
9604
|
+
const headersWithUserAgent = (0, import_provider_utils25.withUserAgentSuffix)(
|
|
9345
9605
|
headers != null ? headers : {},
|
|
9346
9606
|
`ai/${VERSION}`
|
|
9347
9607
|
);
|
|
@@ -9383,7 +9643,7 @@ async function embed({
|
|
|
9383
9643
|
}),
|
|
9384
9644
|
tracer,
|
|
9385
9645
|
fn: async (doEmbedSpan) => {
|
|
9386
|
-
var
|
|
9646
|
+
var _a22, _b;
|
|
9387
9647
|
const modelResponse = await model.doEmbed({
|
|
9388
9648
|
values: [value],
|
|
9389
9649
|
abortSignal,
|
|
@@ -9391,7 +9651,7 @@ async function embed({
|
|
|
9391
9651
|
providerOptions
|
|
9392
9652
|
});
|
|
9393
9653
|
const embedding2 = modelResponse.embeddings[0];
|
|
9394
|
-
const usage2 = (
|
|
9654
|
+
const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
|
|
9395
9655
|
doEmbedSpan.setAttributes(
|
|
9396
9656
|
await selectTelemetryAttributes({
|
|
9397
9657
|
telemetry,
|
|
@@ -9449,7 +9709,7 @@ var DefaultEmbedResult = class {
|
|
|
9449
9709
|
};
|
|
9450
9710
|
|
|
9451
9711
|
// src/embed/embed-many.ts
|
|
9452
|
-
var
|
|
9712
|
+
var import_provider_utils26 = require("@ai-sdk/provider-utils");
|
|
9453
9713
|
|
|
9454
9714
|
// src/util/split-array.ts
|
|
9455
9715
|
function splitArray(array2, chunkSize) {
|
|
@@ -9479,7 +9739,7 @@ async function embedMany({
|
|
|
9479
9739
|
maxRetries: maxRetriesArg,
|
|
9480
9740
|
abortSignal
|
|
9481
9741
|
});
|
|
9482
|
-
const headersWithUserAgent = (0,
|
|
9742
|
+
const headersWithUserAgent = (0, import_provider_utils26.withUserAgentSuffix)(
|
|
9483
9743
|
headers != null ? headers : {},
|
|
9484
9744
|
`ai/${VERSION}`
|
|
9485
9745
|
);
|
|
@@ -9505,7 +9765,7 @@ async function embedMany({
|
|
|
9505
9765
|
}),
|
|
9506
9766
|
tracer,
|
|
9507
9767
|
fn: async (span) => {
|
|
9508
|
-
var
|
|
9768
|
+
var _a22;
|
|
9509
9769
|
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
|
9510
9770
|
model.maxEmbeddingsPerCall,
|
|
9511
9771
|
model.supportsParallelCalls
|
|
@@ -9530,7 +9790,7 @@ async function embedMany({
|
|
|
9530
9790
|
}),
|
|
9531
9791
|
tracer,
|
|
9532
9792
|
fn: async (doEmbedSpan) => {
|
|
9533
|
-
var
|
|
9793
|
+
var _a23, _b;
|
|
9534
9794
|
const modelResponse = await model.doEmbed({
|
|
9535
9795
|
values,
|
|
9536
9796
|
abortSignal,
|
|
@@ -9538,7 +9798,7 @@ async function embedMany({
|
|
|
9538
9798
|
providerOptions
|
|
9539
9799
|
});
|
|
9540
9800
|
const embeddings3 = modelResponse.embeddings;
|
|
9541
|
-
const usage2 = (
|
|
9801
|
+
const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9542
9802
|
doEmbedSpan.setAttributes(
|
|
9543
9803
|
await selectTelemetryAttributes({
|
|
9544
9804
|
telemetry,
|
|
@@ -9619,7 +9879,7 @@ async function embedMany({
|
|
|
9619
9879
|
}),
|
|
9620
9880
|
tracer,
|
|
9621
9881
|
fn: async (doEmbedSpan) => {
|
|
9622
|
-
var
|
|
9882
|
+
var _a23, _b;
|
|
9623
9883
|
const modelResponse = await model.doEmbed({
|
|
9624
9884
|
values: chunk,
|
|
9625
9885
|
abortSignal,
|
|
@@ -9627,7 +9887,7 @@ async function embedMany({
|
|
|
9627
9887
|
providerOptions
|
|
9628
9888
|
});
|
|
9629
9889
|
const embeddings2 = modelResponse.embeddings;
|
|
9630
|
-
const usage = (
|
|
9890
|
+
const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
9631
9891
|
doEmbedSpan.setAttributes(
|
|
9632
9892
|
await selectTelemetryAttributes({
|
|
9633
9893
|
telemetry,
|
|
@@ -9666,7 +9926,7 @@ async function embedMany({
|
|
|
9666
9926
|
result.providerMetadata
|
|
9667
9927
|
)) {
|
|
9668
9928
|
providerMetadata[providerName] = {
|
|
9669
|
-
...(
|
|
9929
|
+
...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
|
|
9670
9930
|
...metadata
|
|
9671
9931
|
};
|
|
9672
9932
|
}
|
|
@@ -9713,7 +9973,7 @@ var DefaultEmbedManyResult = class {
|
|
|
9713
9973
|
};
|
|
9714
9974
|
|
|
9715
9975
|
// src/generate-image/generate-image.ts
|
|
9716
|
-
var
|
|
9976
|
+
var import_provider_utils27 = require("@ai-sdk/provider-utils");
|
|
9717
9977
|
async function generateImage({
|
|
9718
9978
|
model: modelArg,
|
|
9719
9979
|
prompt: promptArg,
|
|
@@ -9727,9 +9987,9 @@ async function generateImage({
|
|
|
9727
9987
|
abortSignal,
|
|
9728
9988
|
headers
|
|
9729
9989
|
}) {
|
|
9730
|
-
var
|
|
9990
|
+
var _a22, _b;
|
|
9731
9991
|
const model = resolveImageModel(modelArg);
|
|
9732
|
-
const headersWithUserAgent = (0,
|
|
9992
|
+
const headersWithUserAgent = (0, import_provider_utils27.withUserAgentSuffix)(
|
|
9733
9993
|
headers != null ? headers : {},
|
|
9734
9994
|
`ai/${VERSION}`
|
|
9735
9995
|
);
|
|
@@ -9737,7 +9997,7 @@ async function generateImage({
|
|
|
9737
9997
|
maxRetries: maxRetriesArg,
|
|
9738
9998
|
abortSignal
|
|
9739
9999
|
});
|
|
9740
|
-
const maxImagesPerCallWithDefault = (
|
|
10000
|
+
const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 1;
|
|
9741
10001
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
9742
10002
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
9743
10003
|
if (i < callCount - 1) {
|
|
@@ -9778,13 +10038,13 @@ async function generateImage({
|
|
|
9778
10038
|
images.push(
|
|
9779
10039
|
...result.images.map(
|
|
9780
10040
|
(image) => {
|
|
9781
|
-
var
|
|
10041
|
+
var _a23;
|
|
9782
10042
|
return new DefaultGeneratedFile({
|
|
9783
10043
|
data: image,
|
|
9784
|
-
mediaType: (
|
|
10044
|
+
mediaType: (_a23 = detectMediaType({
|
|
9785
10045
|
data: image,
|
|
9786
10046
|
signatures: imageMediaTypeSignatures
|
|
9787
|
-
})) != null ?
|
|
10047
|
+
})) != null ? _a23 : "image/png"
|
|
9788
10048
|
});
|
|
9789
10049
|
}
|
|
9790
10050
|
)
|
|
@@ -9872,7 +10132,7 @@ function toImageModelV3File(dataContent) {
|
|
|
9872
10132
|
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
9873
10133
|
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
9874
10134
|
if (base64Content != null) {
|
|
9875
|
-
const uint8Data2 = (0,
|
|
10135
|
+
const uint8Data2 = (0, import_provider_utils27.convertBase64ToUint8Array)(base64Content);
|
|
9876
10136
|
return {
|
|
9877
10137
|
type: "file",
|
|
9878
10138
|
data: uint8Data2,
|
|
@@ -9898,11 +10158,11 @@ function toImageModelV3File(dataContent) {
|
|
|
9898
10158
|
var experimental_generateImage = generateImage;
|
|
9899
10159
|
|
|
9900
10160
|
// src/generate-object/generate-object.ts
|
|
9901
|
-
var
|
|
10161
|
+
var import_provider_utils30 = require("@ai-sdk/provider-utils");
|
|
9902
10162
|
|
|
9903
10163
|
// src/generate-object/output-strategy.ts
|
|
9904
|
-
var
|
|
9905
|
-
var
|
|
10164
|
+
var import_provider31 = require("@ai-sdk/provider");
|
|
10165
|
+
var import_provider_utils28 = require("@ai-sdk/provider-utils");
|
|
9906
10166
|
var noSchemaOutputStrategy = {
|
|
9907
10167
|
type: "no-schema",
|
|
9908
10168
|
jsonSchema: async () => void 0,
|
|
@@ -9922,7 +10182,7 @@ var noSchemaOutputStrategy = {
|
|
|
9922
10182
|
} : { success: true, value };
|
|
9923
10183
|
},
|
|
9924
10184
|
createElementStream() {
|
|
9925
|
-
throw new
|
|
10185
|
+
throw new import_provider31.UnsupportedFunctionalityError({
|
|
9926
10186
|
functionality: "element streams in no-schema mode"
|
|
9927
10187
|
});
|
|
9928
10188
|
}
|
|
@@ -9941,10 +10201,10 @@ var objectOutputStrategy = (schema) => ({
|
|
|
9941
10201
|
};
|
|
9942
10202
|
},
|
|
9943
10203
|
async validateFinalResult(value) {
|
|
9944
|
-
return (0,
|
|
10204
|
+
return (0, import_provider_utils28.safeValidateTypes)({ value, schema });
|
|
9945
10205
|
},
|
|
9946
10206
|
createElementStream() {
|
|
9947
|
-
throw new
|
|
10207
|
+
throw new import_provider31.UnsupportedFunctionalityError({
|
|
9948
10208
|
functionality: "element streams in object mode"
|
|
9949
10209
|
});
|
|
9950
10210
|
}
|
|
@@ -9973,11 +10233,11 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9973
10233
|
isFirstDelta,
|
|
9974
10234
|
isFinalDelta
|
|
9975
10235
|
}) {
|
|
9976
|
-
var
|
|
9977
|
-
if (!(0,
|
|
10236
|
+
var _a22;
|
|
10237
|
+
if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
|
|
9978
10238
|
return {
|
|
9979
10239
|
success: false,
|
|
9980
|
-
error: new
|
|
10240
|
+
error: new import_provider31.TypeValidationError({
|
|
9981
10241
|
value,
|
|
9982
10242
|
cause: "value must be an object that contains an array of elements"
|
|
9983
10243
|
})
|
|
@@ -9987,7 +10247,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9987
10247
|
const resultArray = [];
|
|
9988
10248
|
for (let i = 0; i < inputArray.length; i++) {
|
|
9989
10249
|
const element = inputArray[i];
|
|
9990
|
-
const result = await (0,
|
|
10250
|
+
const result = await (0, import_provider_utils28.safeValidateTypes)({ value: element, schema });
|
|
9991
10251
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
9992
10252
|
continue;
|
|
9993
10253
|
}
|
|
@@ -9996,7 +10256,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
9996
10256
|
}
|
|
9997
10257
|
resultArray.push(result.value);
|
|
9998
10258
|
}
|
|
9999
|
-
const publishedElementCount = (
|
|
10259
|
+
const publishedElementCount = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 0;
|
|
10000
10260
|
let textDelta = "";
|
|
10001
10261
|
if (isFirstDelta) {
|
|
10002
10262
|
textDelta += "[";
|
|
@@ -10017,10 +10277,10 @@ var arrayOutputStrategy = (schema) => {
|
|
|
10017
10277
|
};
|
|
10018
10278
|
},
|
|
10019
10279
|
async validateFinalResult(value) {
|
|
10020
|
-
if (!(0,
|
|
10280
|
+
if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
|
|
10021
10281
|
return {
|
|
10022
10282
|
success: false,
|
|
10023
|
-
error: new
|
|
10283
|
+
error: new import_provider31.TypeValidationError({
|
|
10024
10284
|
value,
|
|
10025
10285
|
cause: "value must be an object that contains an array of elements"
|
|
10026
10286
|
})
|
|
@@ -10029,7 +10289,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
10029
10289
|
const inputArray = value.elements;
|
|
10030
10290
|
const resultArray = [];
|
|
10031
10291
|
for (const element of inputArray) {
|
|
10032
|
-
const result = await (0,
|
|
10292
|
+
const result = await (0, import_provider_utils28.safeValidateTypes)({ value: element, schema });
|
|
10033
10293
|
if (!result.success) {
|
|
10034
10294
|
return result;
|
|
10035
10295
|
}
|
|
@@ -10085,10 +10345,10 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10085
10345
|
additionalProperties: false
|
|
10086
10346
|
}),
|
|
10087
10347
|
async validateFinalResult(value) {
|
|
10088
|
-
if (!(0,
|
|
10348
|
+
if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10089
10349
|
return {
|
|
10090
10350
|
success: false,
|
|
10091
|
-
error: new
|
|
10351
|
+
error: new import_provider31.TypeValidationError({
|
|
10092
10352
|
value,
|
|
10093
10353
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10094
10354
|
})
|
|
@@ -10097,17 +10357,17 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10097
10357
|
const result = value.result;
|
|
10098
10358
|
return enumValues.includes(result) ? { success: true, value: result } : {
|
|
10099
10359
|
success: false,
|
|
10100
|
-
error: new
|
|
10360
|
+
error: new import_provider31.TypeValidationError({
|
|
10101
10361
|
value,
|
|
10102
10362
|
cause: "value must be a string in the enum"
|
|
10103
10363
|
})
|
|
10104
10364
|
};
|
|
10105
10365
|
},
|
|
10106
10366
|
async validatePartialResult({ value, textDelta }) {
|
|
10107
|
-
if (!(0,
|
|
10367
|
+
if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10108
10368
|
return {
|
|
10109
10369
|
success: false,
|
|
10110
|
-
error: new
|
|
10370
|
+
error: new import_provider31.TypeValidationError({
|
|
10111
10371
|
value,
|
|
10112
10372
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10113
10373
|
})
|
|
@@ -10120,7 +10380,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10120
10380
|
if (value.result.length === 0 || possibleEnumValues.length === 0) {
|
|
10121
10381
|
return {
|
|
10122
10382
|
success: false,
|
|
10123
|
-
error: new
|
|
10383
|
+
error: new import_provider31.TypeValidationError({
|
|
10124
10384
|
value,
|
|
10125
10385
|
cause: "value must be a string in the enum"
|
|
10126
10386
|
})
|
|
@@ -10135,7 +10395,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10135
10395
|
};
|
|
10136
10396
|
},
|
|
10137
10397
|
createElementStream() {
|
|
10138
|
-
throw new
|
|
10398
|
+
throw new import_provider31.UnsupportedFunctionalityError({
|
|
10139
10399
|
functionality: "element streams in enum mode"
|
|
10140
10400
|
});
|
|
10141
10401
|
}
|
|
@@ -10148,9 +10408,9 @@ function getOutputStrategy({
|
|
|
10148
10408
|
}) {
|
|
10149
10409
|
switch (output) {
|
|
10150
10410
|
case "object":
|
|
10151
|
-
return objectOutputStrategy((0,
|
|
10411
|
+
return objectOutputStrategy((0, import_provider_utils28.asSchema)(schema));
|
|
10152
10412
|
case "array":
|
|
10153
|
-
return arrayOutputStrategy((0,
|
|
10413
|
+
return arrayOutputStrategy((0, import_provider_utils28.asSchema)(schema));
|
|
10154
10414
|
case "enum":
|
|
10155
10415
|
return enumOutputStrategy(enumValues);
|
|
10156
10416
|
case "no-schema":
|
|
@@ -10163,10 +10423,10 @@ function getOutputStrategy({
|
|
|
10163
10423
|
}
|
|
10164
10424
|
|
|
10165
10425
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
10166
|
-
var
|
|
10167
|
-
var
|
|
10426
|
+
var import_provider32 = require("@ai-sdk/provider");
|
|
10427
|
+
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
10168
10428
|
async function parseAndValidateObjectResult(result, outputStrategy, context2) {
|
|
10169
|
-
const parseResult = await (0,
|
|
10429
|
+
const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: result });
|
|
10170
10430
|
if (!parseResult.success) {
|
|
10171
10431
|
throw new NoObjectGeneratedError({
|
|
10172
10432
|
message: "No object generated: could not parse the response.",
|
|
@@ -10201,7 +10461,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
|
|
|
10201
10461
|
try {
|
|
10202
10462
|
return await parseAndValidateObjectResult(result, outputStrategy, context2);
|
|
10203
10463
|
} catch (error) {
|
|
10204
|
-
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (
|
|
10464
|
+
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider32.JSONParseError.isInstance(error.cause) || import_provider32.TypeValidationError.isInstance(error.cause))) {
|
|
10205
10465
|
const repairedText = await repairText({
|
|
10206
10466
|
text: result,
|
|
10207
10467
|
error: error.cause
|
|
@@ -10338,7 +10598,7 @@ function validateObjectGenerationInput({
|
|
|
10338
10598
|
}
|
|
10339
10599
|
|
|
10340
10600
|
// src/generate-object/generate-object.ts
|
|
10341
|
-
var originalGenerateId3 = (0,
|
|
10601
|
+
var originalGenerateId3 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
10342
10602
|
async function generateObject(options) {
|
|
10343
10603
|
const {
|
|
10344
10604
|
model: modelArg,
|
|
@@ -10384,7 +10644,7 @@ async function generateObject(options) {
|
|
|
10384
10644
|
enumValues
|
|
10385
10645
|
});
|
|
10386
10646
|
const callSettings = prepareCallSettings(settings);
|
|
10387
|
-
const headersWithUserAgent = (0,
|
|
10647
|
+
const headersWithUserAgent = (0, import_provider_utils30.withUserAgentSuffix)(
|
|
10388
10648
|
headers != null ? headers : {},
|
|
10389
10649
|
`ai/${VERSION}`
|
|
10390
10650
|
);
|
|
@@ -10419,7 +10679,7 @@ async function generateObject(options) {
|
|
|
10419
10679
|
}),
|
|
10420
10680
|
tracer,
|
|
10421
10681
|
fn: async (span) => {
|
|
10422
|
-
var
|
|
10682
|
+
var _a22;
|
|
10423
10683
|
let result;
|
|
10424
10684
|
let finishReason;
|
|
10425
10685
|
let usage;
|
|
@@ -10466,7 +10726,7 @@ async function generateObject(options) {
|
|
|
10466
10726
|
}),
|
|
10467
10727
|
tracer,
|
|
10468
10728
|
fn: async (span2) => {
|
|
10469
|
-
var
|
|
10729
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
10470
10730
|
const result2 = await model.doGenerate({
|
|
10471
10731
|
responseFormat: {
|
|
10472
10732
|
type: "json",
|
|
@@ -10481,7 +10741,7 @@ async function generateObject(options) {
|
|
|
10481
10741
|
headers: headersWithUserAgent
|
|
10482
10742
|
});
|
|
10483
10743
|
const responseData = {
|
|
10484
|
-
id: (_b = (
|
|
10744
|
+
id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
|
|
10485
10745
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
10486
10746
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
10487
10747
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -10537,7 +10797,7 @@ async function generateObject(options) {
|
|
|
10537
10797
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
10538
10798
|
warnings = generateResult.warnings;
|
|
10539
10799
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
10540
|
-
request = (
|
|
10800
|
+
request = (_a22 = generateResult.request) != null ? _a22 : {};
|
|
10541
10801
|
response = generateResult.responseData;
|
|
10542
10802
|
reasoning = generateResult.reasoning;
|
|
10543
10803
|
logWarnings({
|
|
@@ -10600,9 +10860,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
10600
10860
|
this.reasoning = options.reasoning;
|
|
10601
10861
|
}
|
|
10602
10862
|
toJsonResponse(init) {
|
|
10603
|
-
var
|
|
10863
|
+
var _a22;
|
|
10604
10864
|
return new Response(JSON.stringify(this.object), {
|
|
10605
|
-
status: (
|
|
10865
|
+
status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
|
|
10606
10866
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
10607
10867
|
"content-type": "application/json; charset=utf-8"
|
|
10608
10868
|
})
|
|
@@ -10611,7 +10871,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
10611
10871
|
};
|
|
10612
10872
|
|
|
10613
10873
|
// src/generate-object/stream-object.ts
|
|
10614
|
-
var
|
|
10874
|
+
var import_provider_utils32 = require("@ai-sdk/provider-utils");
|
|
10615
10875
|
|
|
10616
10876
|
// src/util/cosine-similarity.ts
|
|
10617
10877
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -10726,15 +10986,15 @@ var SerialJobExecutor = class {
|
|
|
10726
10986
|
};
|
|
10727
10987
|
|
|
10728
10988
|
// src/util/simulate-readable-stream.ts
|
|
10729
|
-
var
|
|
10989
|
+
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
10730
10990
|
function simulateReadableStream({
|
|
10731
10991
|
chunks,
|
|
10732
10992
|
initialDelayInMs = 0,
|
|
10733
10993
|
chunkDelayInMs = 0,
|
|
10734
10994
|
_internal
|
|
10735
10995
|
}) {
|
|
10736
|
-
var
|
|
10737
|
-
const delay2 = (
|
|
10996
|
+
var _a22;
|
|
10997
|
+
const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : import_provider_utils31.delay;
|
|
10738
10998
|
let index = 0;
|
|
10739
10999
|
return new ReadableStream({
|
|
10740
11000
|
async pull(controller) {
|
|
@@ -10749,7 +11009,7 @@ function simulateReadableStream({
|
|
|
10749
11009
|
}
|
|
10750
11010
|
|
|
10751
11011
|
// src/generate-object/stream-object.ts
|
|
10752
|
-
var originalGenerateId4 = (0,
|
|
11012
|
+
var originalGenerateId4 = (0, import_provider_utils32.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
10753
11013
|
function streamObject(options) {
|
|
10754
11014
|
const {
|
|
10755
11015
|
model,
|
|
@@ -10842,13 +11102,13 @@ var DefaultStreamObjectResult = class {
|
|
|
10842
11102
|
currentDate,
|
|
10843
11103
|
now: now2
|
|
10844
11104
|
}) {
|
|
10845
|
-
this._object = new
|
|
10846
|
-
this._usage = new
|
|
10847
|
-
this._providerMetadata = new
|
|
10848
|
-
this._warnings = new
|
|
10849
|
-
this._request = new
|
|
10850
|
-
this._response = new
|
|
10851
|
-
this._finishReason = new
|
|
11105
|
+
this._object = new import_provider_utils32.DelayedPromise();
|
|
11106
|
+
this._usage = new import_provider_utils32.DelayedPromise();
|
|
11107
|
+
this._providerMetadata = new import_provider_utils32.DelayedPromise();
|
|
11108
|
+
this._warnings = new import_provider_utils32.DelayedPromise();
|
|
11109
|
+
this._request = new import_provider_utils32.DelayedPromise();
|
|
11110
|
+
this._response = new import_provider_utils32.DelayedPromise();
|
|
11111
|
+
this._finishReason = new import_provider_utils32.DelayedPromise();
|
|
10852
11112
|
const model = resolveLanguageModel(modelArg);
|
|
10853
11113
|
const { maxRetries, retry } = prepareRetries({
|
|
10854
11114
|
maxRetries: maxRetriesArg,
|
|
@@ -10996,7 +11256,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10996
11256
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
10997
11257
|
new TransformStream({
|
|
10998
11258
|
async transform(chunk, controller) {
|
|
10999
|
-
var
|
|
11259
|
+
var _a22, _b, _c;
|
|
11000
11260
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
11001
11261
|
warnings = chunk.warnings;
|
|
11002
11262
|
return;
|
|
@@ -11046,7 +11306,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11046
11306
|
switch (chunk.type) {
|
|
11047
11307
|
case "response-metadata": {
|
|
11048
11308
|
fullResponse = {
|
|
11049
|
-
id: (
|
|
11309
|
+
id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
|
|
11050
11310
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11051
11311
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11052
11312
|
};
|
|
@@ -11277,7 +11537,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11277
11537
|
};
|
|
11278
11538
|
|
|
11279
11539
|
// src/generate-speech/generate-speech.ts
|
|
11280
|
-
var
|
|
11540
|
+
var import_provider_utils33 = require("@ai-sdk/provider-utils");
|
|
11281
11541
|
|
|
11282
11542
|
// src/generate-speech/generated-audio-file.ts
|
|
11283
11543
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -11318,12 +11578,12 @@ async function generateSpeech({
|
|
|
11318
11578
|
abortSignal,
|
|
11319
11579
|
headers
|
|
11320
11580
|
}) {
|
|
11321
|
-
var
|
|
11581
|
+
var _a22;
|
|
11322
11582
|
const resolvedModel = resolveSpeechModel(model);
|
|
11323
11583
|
if (!resolvedModel) {
|
|
11324
11584
|
throw new Error("Model could not be resolved");
|
|
11325
11585
|
}
|
|
11326
|
-
const headersWithUserAgent = (0,
|
|
11586
|
+
const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
|
|
11327
11587
|
headers != null ? headers : {},
|
|
11328
11588
|
`ai/${VERSION}`
|
|
11329
11589
|
);
|
|
@@ -11355,10 +11615,10 @@ async function generateSpeech({
|
|
|
11355
11615
|
return new DefaultSpeechResult({
|
|
11356
11616
|
audio: new DefaultGeneratedAudioFile({
|
|
11357
11617
|
data: result.audio,
|
|
11358
|
-
mediaType: (
|
|
11618
|
+
mediaType: (_a22 = detectMediaType({
|
|
11359
11619
|
data: result.audio,
|
|
11360
11620
|
signatures: audioMediaTypeSignatures
|
|
11361
|
-
})) != null ?
|
|
11621
|
+
})) != null ? _a22 : "audio/mp3"
|
|
11362
11622
|
}),
|
|
11363
11623
|
warnings: result.warnings,
|
|
11364
11624
|
responses: [result.response],
|
|
@@ -11367,11 +11627,11 @@ async function generateSpeech({
|
|
|
11367
11627
|
}
|
|
11368
11628
|
var DefaultSpeechResult = class {
|
|
11369
11629
|
constructor(options) {
|
|
11370
|
-
var
|
|
11630
|
+
var _a22;
|
|
11371
11631
|
this.audio = options.audio;
|
|
11372
11632
|
this.warnings = options.warnings;
|
|
11373
11633
|
this.responses = options.responses;
|
|
11374
|
-
this.providerMetadata = (
|
|
11634
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
11375
11635
|
}
|
|
11376
11636
|
};
|
|
11377
11637
|
|
|
@@ -11455,8 +11715,8 @@ function pruneMessages({
|
|
|
11455
11715
|
}
|
|
11456
11716
|
|
|
11457
11717
|
// src/generate-text/smooth-stream.ts
|
|
11458
|
-
var
|
|
11459
|
-
var
|
|
11718
|
+
var import_provider_utils34 = require("@ai-sdk/provider-utils");
|
|
11719
|
+
var import_provider33 = require("@ai-sdk/provider");
|
|
11460
11720
|
var CHUNKING_REGEXPS = {
|
|
11461
11721
|
word: /\S+\s+/m,
|
|
11462
11722
|
line: /\n+/m
|
|
@@ -11464,7 +11724,7 @@ var CHUNKING_REGEXPS = {
|
|
|
11464
11724
|
function smoothStream({
|
|
11465
11725
|
delayInMs = 10,
|
|
11466
11726
|
chunking = "word",
|
|
11467
|
-
_internal: { delay: delay2 =
|
|
11727
|
+
_internal: { delay: delay2 = import_provider_utils34.delay } = {}
|
|
11468
11728
|
} = {}) {
|
|
11469
11729
|
let detectChunk;
|
|
11470
11730
|
if (chunking != null && typeof chunking === "object" && "segment" in chunking && typeof chunking.segment === "function") {
|
|
@@ -11495,7 +11755,7 @@ function smoothStream({
|
|
|
11495
11755
|
} else {
|
|
11496
11756
|
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking instanceof RegExp ? chunking : void 0;
|
|
11497
11757
|
if (chunkingRegex == null) {
|
|
11498
|
-
throw new
|
|
11758
|
+
throw new import_provider33.InvalidArgumentError({
|
|
11499
11759
|
argument: "chunking",
|
|
11500
11760
|
message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`
|
|
11501
11761
|
});
|
|
@@ -11553,7 +11813,7 @@ function smoothStream({
|
|
|
11553
11813
|
}
|
|
11554
11814
|
|
|
11555
11815
|
// src/generate-video/generate-video.ts
|
|
11556
|
-
var
|
|
11816
|
+
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
11557
11817
|
var defaultDownload = createDownload();
|
|
11558
11818
|
async function experimental_generateVideo({
|
|
11559
11819
|
model: modelArg,
|
|
@@ -11571,9 +11831,9 @@ async function experimental_generateVideo({
|
|
|
11571
11831
|
headers,
|
|
11572
11832
|
download: downloadFn = defaultDownload
|
|
11573
11833
|
}) {
|
|
11574
|
-
var
|
|
11834
|
+
var _a22;
|
|
11575
11835
|
const model = resolveVideoModel(modelArg);
|
|
11576
|
-
const headersWithUserAgent = (0,
|
|
11836
|
+
const headersWithUserAgent = (0, import_provider_utils35.withUserAgentSuffix)(
|
|
11577
11837
|
headers != null ? headers : {},
|
|
11578
11838
|
`ai/${VERSION}`
|
|
11579
11839
|
);
|
|
@@ -11582,7 +11842,7 @@ async function experimental_generateVideo({
|
|
|
11582
11842
|
abortSignal
|
|
11583
11843
|
});
|
|
11584
11844
|
const { prompt, image } = normalizePrompt2(promptArg);
|
|
11585
|
-
const maxVideosPerCallWithDefault = (
|
|
11845
|
+
const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
|
|
11586
11846
|
const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
|
|
11587
11847
|
const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
|
|
11588
11848
|
const remaining = n - index * maxVideosPerCallWithDefault;
|
|
@@ -11704,7 +11964,7 @@ async function experimental_generateVideo({
|
|
|
11704
11964
|
};
|
|
11705
11965
|
}
|
|
11706
11966
|
function normalizePrompt2(promptArg) {
|
|
11707
|
-
var
|
|
11967
|
+
var _a22, _b;
|
|
11708
11968
|
if (typeof promptArg === "string") {
|
|
11709
11969
|
return {
|
|
11710
11970
|
prompt: promptArg,
|
|
@@ -11725,14 +11985,14 @@ function normalizePrompt2(promptArg) {
|
|
|
11725
11985
|
image = {
|
|
11726
11986
|
type: "file",
|
|
11727
11987
|
mediaType: mediaType != null ? mediaType : "image/png",
|
|
11728
|
-
data: (0,
|
|
11988
|
+
data: (0, import_provider_utils35.convertBase64ToUint8Array)(base64Content != null ? base64Content : "")
|
|
11729
11989
|
};
|
|
11730
11990
|
} else {
|
|
11731
|
-
const bytes = (0,
|
|
11732
|
-
const mediaType = (
|
|
11991
|
+
const bytes = (0, import_provider_utils35.convertBase64ToUint8Array)(dataContent);
|
|
11992
|
+
const mediaType = (_a22 = detectMediaType({
|
|
11733
11993
|
data: bytes,
|
|
11734
11994
|
signatures: imageMediaTypeSignatures
|
|
11735
|
-
})) != null ?
|
|
11995
|
+
})) != null ? _a22 : "image/png";
|
|
11736
11996
|
image = {
|
|
11737
11997
|
type: "file",
|
|
11738
11998
|
mediaType,
|
|
@@ -11792,8 +12052,8 @@ function defaultTransform(text2) {
|
|
|
11792
12052
|
return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
11793
12053
|
}
|
|
11794
12054
|
function extractJsonMiddleware(options) {
|
|
11795
|
-
var
|
|
11796
|
-
const transform = (
|
|
12055
|
+
var _a22;
|
|
12056
|
+
const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
|
|
11797
12057
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
11798
12058
|
return {
|
|
11799
12059
|
specificationVersion: "v3",
|
|
@@ -11814,7 +12074,7 @@ function extractJsonMiddleware(options) {
|
|
|
11814
12074
|
},
|
|
11815
12075
|
wrapStream: async ({ doStream }) => {
|
|
11816
12076
|
const { stream, ...rest } = await doStream();
|
|
11817
|
-
const textBlocks =
|
|
12077
|
+
const textBlocks = createIdMap();
|
|
11818
12078
|
const SUFFIX_BUFFER_SIZE = 12;
|
|
11819
12079
|
return {
|
|
11820
12080
|
stream: stream.pipeThrough(
|
|
@@ -11977,7 +12237,7 @@ function extractReasoningMiddleware({
|
|
|
11977
12237
|
},
|
|
11978
12238
|
wrapStream: async ({ doStream }) => {
|
|
11979
12239
|
const { stream, ...rest } = await doStream();
|
|
11980
|
-
const reasoningExtractions =
|
|
12240
|
+
const reasoningExtractions = createIdMap();
|
|
11981
12241
|
let delayedTextStart;
|
|
11982
12242
|
return {
|
|
11983
12243
|
stream: stream.pipeThrough(
|
|
@@ -12167,13 +12427,13 @@ function addToolInputExamplesMiddleware({
|
|
|
12167
12427
|
return {
|
|
12168
12428
|
specificationVersion: "v3",
|
|
12169
12429
|
transformParams: async ({ params }) => {
|
|
12170
|
-
var
|
|
12171
|
-
if (!((
|
|
12430
|
+
var _a22;
|
|
12431
|
+
if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
|
|
12172
12432
|
return params;
|
|
12173
12433
|
}
|
|
12174
12434
|
const transformedTools = params.tools.map((tool2) => {
|
|
12175
|
-
var
|
|
12176
|
-
if (tool2.type !== "function" || !((
|
|
12435
|
+
var _a23;
|
|
12436
|
+
if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
|
|
12177
12437
|
return tool2;
|
|
12178
12438
|
}
|
|
12179
12439
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -12220,7 +12480,7 @@ var doWrap = ({
|
|
|
12220
12480
|
modelId,
|
|
12221
12481
|
providerId
|
|
12222
12482
|
}) => {
|
|
12223
|
-
var
|
|
12483
|
+
var _a22, _b, _c;
|
|
12224
12484
|
async function doTransform({
|
|
12225
12485
|
params,
|
|
12226
12486
|
type
|
|
@@ -12229,7 +12489,7 @@ var doWrap = ({
|
|
|
12229
12489
|
}
|
|
12230
12490
|
return {
|
|
12231
12491
|
specificationVersion: "v3",
|
|
12232
|
-
provider: (
|
|
12492
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12233
12493
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12234
12494
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
12235
12495
|
async doGenerate(params) {
|
|
@@ -12276,7 +12536,7 @@ var doWrap2 = ({
|
|
|
12276
12536
|
modelId,
|
|
12277
12537
|
providerId
|
|
12278
12538
|
}) => {
|
|
12279
|
-
var
|
|
12539
|
+
var _a22, _b, _c, _d;
|
|
12280
12540
|
async function doTransform({
|
|
12281
12541
|
params
|
|
12282
12542
|
}) {
|
|
@@ -12284,7 +12544,7 @@ var doWrap2 = ({
|
|
|
12284
12544
|
}
|
|
12285
12545
|
return {
|
|
12286
12546
|
specificationVersion: "v3",
|
|
12287
|
-
provider: (
|
|
12547
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12288
12548
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12289
12549
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
12290
12550
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -12323,11 +12583,11 @@ var doWrap3 = ({
|
|
|
12323
12583
|
modelId,
|
|
12324
12584
|
providerId
|
|
12325
12585
|
}) => {
|
|
12326
|
-
var
|
|
12586
|
+
var _a22, _b, _c;
|
|
12327
12587
|
async function doTransform({ params }) {
|
|
12328
12588
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
12329
12589
|
}
|
|
12330
|
-
const maxImagesPerCallRaw = (
|
|
12590
|
+
const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
|
|
12331
12591
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
12332
12592
|
return {
|
|
12333
12593
|
specificationVersion: "v3",
|
|
@@ -12392,7 +12652,7 @@ function wrapProvider({
|
|
|
12392
12652
|
}
|
|
12393
12653
|
|
|
12394
12654
|
// src/registry/custom-provider.ts
|
|
12395
|
-
var
|
|
12655
|
+
var import_provider34 = require("@ai-sdk/provider");
|
|
12396
12656
|
function customProvider({
|
|
12397
12657
|
languageModels,
|
|
12398
12658
|
embeddingModels,
|
|
@@ -12413,7 +12673,7 @@ function customProvider({
|
|
|
12413
12673
|
if (fallbackProvider) {
|
|
12414
12674
|
return fallbackProvider.languageModel(modelId);
|
|
12415
12675
|
}
|
|
12416
|
-
throw new
|
|
12676
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
12417
12677
|
},
|
|
12418
12678
|
embeddingModel(modelId) {
|
|
12419
12679
|
if (embeddingModels != null && modelId in embeddingModels) {
|
|
@@ -12422,7 +12682,7 @@ function customProvider({
|
|
|
12422
12682
|
if (fallbackProvider) {
|
|
12423
12683
|
return fallbackProvider.embeddingModel(modelId);
|
|
12424
12684
|
}
|
|
12425
|
-
throw new
|
|
12685
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
12426
12686
|
},
|
|
12427
12687
|
imageModel(modelId) {
|
|
12428
12688
|
if (imageModels != null && modelId in imageModels) {
|
|
@@ -12431,7 +12691,7 @@ function customProvider({
|
|
|
12431
12691
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
|
12432
12692
|
return fallbackProvider.imageModel(modelId);
|
|
12433
12693
|
}
|
|
12434
|
-
throw new
|
|
12694
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
12435
12695
|
},
|
|
12436
12696
|
transcriptionModel(modelId) {
|
|
12437
12697
|
if (transcriptionModels != null && modelId in transcriptionModels) {
|
|
@@ -12440,7 +12700,7 @@ function customProvider({
|
|
|
12440
12700
|
if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
|
|
12441
12701
|
return fallbackProvider.transcriptionModel(modelId);
|
|
12442
12702
|
}
|
|
12443
|
-
throw new
|
|
12703
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
|
|
12444
12704
|
},
|
|
12445
12705
|
speechModel(modelId) {
|
|
12446
12706
|
if (speechModels != null && modelId in speechModels) {
|
|
@@ -12449,7 +12709,7 @@ function customProvider({
|
|
|
12449
12709
|
if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
|
|
12450
12710
|
return fallbackProvider.speechModel(modelId);
|
|
12451
12711
|
}
|
|
12452
|
-
throw new
|
|
12712
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
12453
12713
|
},
|
|
12454
12714
|
rerankingModel(modelId) {
|
|
12455
12715
|
if (rerankingModels != null && modelId in rerankingModels) {
|
|
@@ -12458,7 +12718,7 @@ function customProvider({
|
|
|
12458
12718
|
if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
|
|
12459
12719
|
return fallbackProvider.rerankingModel(modelId);
|
|
12460
12720
|
}
|
|
12461
|
-
throw new
|
|
12721
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
12462
12722
|
},
|
|
12463
12723
|
videoModel(modelId) {
|
|
12464
12724
|
if (videoModels != null && modelId in videoModels) {
|
|
@@ -12468,19 +12728,19 @@ function customProvider({
|
|
|
12468
12728
|
if (videoModel) {
|
|
12469
12729
|
return videoModel(modelId);
|
|
12470
12730
|
}
|
|
12471
|
-
throw new
|
|
12731
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "videoModel" });
|
|
12472
12732
|
}
|
|
12473
12733
|
};
|
|
12474
12734
|
}
|
|
12475
12735
|
var experimental_customProvider = customProvider;
|
|
12476
12736
|
|
|
12477
12737
|
// src/registry/no-such-provider-error.ts
|
|
12478
|
-
var
|
|
12479
|
-
var
|
|
12480
|
-
var
|
|
12481
|
-
var
|
|
12482
|
-
var
|
|
12483
|
-
var NoSuchProviderError = class extends
|
|
12738
|
+
var import_provider35 = require("@ai-sdk/provider");
|
|
12739
|
+
var name21 = "AI_NoSuchProviderError";
|
|
12740
|
+
var marker21 = `vercel.ai.error.${name21}`;
|
|
12741
|
+
var symbol21 = Symbol.for(marker21);
|
|
12742
|
+
var _a21;
|
|
12743
|
+
var NoSuchProviderError = class extends import_provider35.NoSuchModelError {
|
|
12484
12744
|
constructor({
|
|
12485
12745
|
modelId,
|
|
12486
12746
|
modelType,
|
|
@@ -12488,19 +12748,19 @@ var NoSuchProviderError = class extends import_provider34.NoSuchModelError {
|
|
|
12488
12748
|
availableProviders,
|
|
12489
12749
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
12490
12750
|
}) {
|
|
12491
|
-
super({ errorName:
|
|
12492
|
-
this[
|
|
12751
|
+
super({ errorName: name21, modelId, modelType, message });
|
|
12752
|
+
this[_a21] = true;
|
|
12493
12753
|
this.providerId = providerId;
|
|
12494
12754
|
this.availableProviders = availableProviders;
|
|
12495
12755
|
}
|
|
12496
12756
|
static isInstance(error) {
|
|
12497
|
-
return
|
|
12757
|
+
return import_provider35.AISDKError.hasMarker(error, marker21);
|
|
12498
12758
|
}
|
|
12499
12759
|
};
|
|
12500
|
-
|
|
12760
|
+
_a21 = symbol21;
|
|
12501
12761
|
|
|
12502
12762
|
// src/registry/provider-registry.ts
|
|
12503
|
-
var
|
|
12763
|
+
var import_provider36 = require("@ai-sdk/provider");
|
|
12504
12764
|
function createProviderRegistry(providers, {
|
|
12505
12765
|
separator = ":",
|
|
12506
12766
|
languageModelMiddleware,
|
|
@@ -12549,7 +12809,7 @@ var DefaultProviderRegistry = class {
|
|
|
12549
12809
|
splitId(id, modelType) {
|
|
12550
12810
|
const index = id.indexOf(this.separator);
|
|
12551
12811
|
if (index === -1) {
|
|
12552
|
-
throw new
|
|
12812
|
+
throw new import_provider36.NoSuchModelError({
|
|
12553
12813
|
modelId: id,
|
|
12554
12814
|
modelType,
|
|
12555
12815
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
|
@@ -12558,14 +12818,14 @@ var DefaultProviderRegistry = class {
|
|
|
12558
12818
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
12559
12819
|
}
|
|
12560
12820
|
languageModel(id) {
|
|
12561
|
-
var
|
|
12821
|
+
var _a22, _b;
|
|
12562
12822
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
12563
|
-
let model = (_b = (
|
|
12564
|
-
|
|
12823
|
+
let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
12824
|
+
_a22,
|
|
12565
12825
|
modelId
|
|
12566
12826
|
);
|
|
12567
12827
|
if (model == null) {
|
|
12568
|
-
throw new
|
|
12828
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
|
12569
12829
|
}
|
|
12570
12830
|
if (this.languageModelMiddleware != null) {
|
|
12571
12831
|
model = wrapLanguageModel({
|
|
@@ -12576,12 +12836,12 @@ var DefaultProviderRegistry = class {
|
|
|
12576
12836
|
return model;
|
|
12577
12837
|
}
|
|
12578
12838
|
embeddingModel(id) {
|
|
12579
|
-
var
|
|
12839
|
+
var _a22;
|
|
12580
12840
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
12581
12841
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
12582
|
-
const model = (
|
|
12842
|
+
const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12583
12843
|
if (model == null) {
|
|
12584
|
-
throw new
|
|
12844
|
+
throw new import_provider36.NoSuchModelError({
|
|
12585
12845
|
modelId: id,
|
|
12586
12846
|
modelType: "embeddingModel"
|
|
12587
12847
|
});
|
|
@@ -12589,12 +12849,12 @@ var DefaultProviderRegistry = class {
|
|
|
12589
12849
|
return model;
|
|
12590
12850
|
}
|
|
12591
12851
|
imageModel(id) {
|
|
12592
|
-
var
|
|
12852
|
+
var _a22;
|
|
12593
12853
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
12594
12854
|
const provider = this.getProvider(providerId, "imageModel");
|
|
12595
|
-
let model = (
|
|
12855
|
+
let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12596
12856
|
if (model == null) {
|
|
12597
|
-
throw new
|
|
12857
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
|
12598
12858
|
}
|
|
12599
12859
|
if (this.imageModelMiddleware != null) {
|
|
12600
12860
|
model = wrapImageModel({
|
|
@@ -12605,12 +12865,12 @@ var DefaultProviderRegistry = class {
|
|
|
12605
12865
|
return model;
|
|
12606
12866
|
}
|
|
12607
12867
|
transcriptionModel(id) {
|
|
12608
|
-
var
|
|
12868
|
+
var _a22;
|
|
12609
12869
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
12610
12870
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
12611
|
-
const model = (
|
|
12871
|
+
const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12612
12872
|
if (model == null) {
|
|
12613
|
-
throw new
|
|
12873
|
+
throw new import_provider36.NoSuchModelError({
|
|
12614
12874
|
modelId: id,
|
|
12615
12875
|
modelType: "transcriptionModel"
|
|
12616
12876
|
});
|
|
@@ -12618,22 +12878,22 @@ var DefaultProviderRegistry = class {
|
|
|
12618
12878
|
return model;
|
|
12619
12879
|
}
|
|
12620
12880
|
speechModel(id) {
|
|
12621
|
-
var
|
|
12881
|
+
var _a22;
|
|
12622
12882
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
12623
12883
|
const provider = this.getProvider(providerId, "speechModel");
|
|
12624
|
-
const model = (
|
|
12884
|
+
const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12625
12885
|
if (model == null) {
|
|
12626
|
-
throw new
|
|
12886
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "speechModel" });
|
|
12627
12887
|
}
|
|
12628
12888
|
return model;
|
|
12629
12889
|
}
|
|
12630
12890
|
rerankingModel(id) {
|
|
12631
|
-
var
|
|
12891
|
+
var _a22;
|
|
12632
12892
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
12633
12893
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
12634
|
-
const model = (
|
|
12894
|
+
const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12635
12895
|
if (model == null) {
|
|
12636
|
-
throw new
|
|
12896
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
|
|
12637
12897
|
}
|
|
12638
12898
|
return model;
|
|
12639
12899
|
}
|
|
@@ -12689,7 +12949,7 @@ async function rerank({
|
|
|
12689
12949
|
}),
|
|
12690
12950
|
tracer,
|
|
12691
12951
|
fn: async () => {
|
|
12692
|
-
var
|
|
12952
|
+
var _a22, _b;
|
|
12693
12953
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
12694
12954
|
() => recordSpan({
|
|
12695
12955
|
name: "ai.rerank.doRerank",
|
|
@@ -12753,7 +13013,7 @@ async function rerank({
|
|
|
12753
13013
|
providerMetadata,
|
|
12754
13014
|
response: {
|
|
12755
13015
|
id: response == null ? void 0 : response.id,
|
|
12756
|
-
timestamp: (
|
|
13016
|
+
timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
|
|
12757
13017
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
12758
13018
|
headers: response == null ? void 0 : response.headers,
|
|
12759
13019
|
body: response == null ? void 0 : response.body
|
|
@@ -12775,7 +13035,7 @@ var DefaultRerankResult = class {
|
|
|
12775
13035
|
};
|
|
12776
13036
|
|
|
12777
13037
|
// src/transcribe/transcribe.ts
|
|
12778
|
-
var
|
|
13038
|
+
var import_provider_utils36 = require("@ai-sdk/provider-utils");
|
|
12779
13039
|
var defaultDownload2 = createDownload();
|
|
12780
13040
|
async function transcribe({
|
|
12781
13041
|
model,
|
|
@@ -12794,23 +13054,23 @@ async function transcribe({
|
|
|
12794
13054
|
maxRetries: maxRetriesArg,
|
|
12795
13055
|
abortSignal
|
|
12796
13056
|
});
|
|
12797
|
-
const headersWithUserAgent = (0,
|
|
13057
|
+
const headersWithUserAgent = (0, import_provider_utils36.withUserAgentSuffix)(
|
|
12798
13058
|
headers != null ? headers : {},
|
|
12799
13059
|
`ai/${VERSION}`
|
|
12800
13060
|
);
|
|
12801
13061
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
12802
13062
|
const result = await retry(
|
|
12803
13063
|
() => {
|
|
12804
|
-
var
|
|
13064
|
+
var _a22;
|
|
12805
13065
|
return resolvedModel.doGenerate({
|
|
12806
13066
|
audio: audioData,
|
|
12807
13067
|
abortSignal,
|
|
12808
13068
|
headers: headersWithUserAgent,
|
|
12809
13069
|
providerOptions,
|
|
12810
|
-
mediaType: (
|
|
13070
|
+
mediaType: (_a22 = detectMediaType({
|
|
12811
13071
|
data: audioData,
|
|
12812
13072
|
signatures: audioMediaTypeSignatures
|
|
12813
|
-
})) != null ?
|
|
13073
|
+
})) != null ? _a22 : "audio/wav"
|
|
12814
13074
|
});
|
|
12815
13075
|
}
|
|
12816
13076
|
);
|
|
@@ -12834,19 +13094,19 @@ async function transcribe({
|
|
|
12834
13094
|
}
|
|
12835
13095
|
var DefaultTranscriptionResult = class {
|
|
12836
13096
|
constructor(options) {
|
|
12837
|
-
var
|
|
13097
|
+
var _a22;
|
|
12838
13098
|
this.text = options.text;
|
|
12839
13099
|
this.segments = options.segments;
|
|
12840
13100
|
this.language = options.language;
|
|
12841
13101
|
this.durationInSeconds = options.durationInSeconds;
|
|
12842
13102
|
this.warnings = options.warnings;
|
|
12843
13103
|
this.responses = options.responses;
|
|
12844
|
-
this.providerMetadata = (
|
|
13104
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
12845
13105
|
}
|
|
12846
13106
|
};
|
|
12847
13107
|
|
|
12848
13108
|
// src/ui/call-completion-api.ts
|
|
12849
|
-
var
|
|
13109
|
+
var import_provider_utils37 = require("@ai-sdk/provider-utils");
|
|
12850
13110
|
|
|
12851
13111
|
// src/ui/process-text-stream.ts
|
|
12852
13112
|
async function processTextStream({
|
|
@@ -12880,7 +13140,7 @@ async function callCompletionApi({
|
|
|
12880
13140
|
onError,
|
|
12881
13141
|
fetch: fetch2 = getOriginalFetch()
|
|
12882
13142
|
}) {
|
|
12883
|
-
var
|
|
13143
|
+
var _a22;
|
|
12884
13144
|
try {
|
|
12885
13145
|
setLoading(true);
|
|
12886
13146
|
setError(void 0);
|
|
@@ -12894,13 +13154,13 @@ async function callCompletionApi({
|
|
|
12894
13154
|
...body
|
|
12895
13155
|
}),
|
|
12896
13156
|
credentials,
|
|
12897
|
-
headers: (0,
|
|
13157
|
+
headers: (0, import_provider_utils37.withUserAgentSuffix)(
|
|
12898
13158
|
{
|
|
12899
13159
|
"Content-Type": "application/json",
|
|
12900
13160
|
...headers
|
|
12901
13161
|
},
|
|
12902
13162
|
`ai-sdk/${VERSION}`,
|
|
12903
|
-
(0,
|
|
13163
|
+
(0, import_provider_utils37.getRuntimeEnvironmentUserAgent)()
|
|
12904
13164
|
),
|
|
12905
13165
|
signal: abortController.signal
|
|
12906
13166
|
}).catch((err) => {
|
|
@@ -12908,7 +13168,7 @@ async function callCompletionApi({
|
|
|
12908
13168
|
});
|
|
12909
13169
|
if (!response.ok) {
|
|
12910
13170
|
throw new Error(
|
|
12911
|
-
(
|
|
13171
|
+
(_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
|
|
12912
13172
|
);
|
|
12913
13173
|
}
|
|
12914
13174
|
if (!response.body) {
|
|
@@ -12928,7 +13188,7 @@ async function callCompletionApi({
|
|
|
12928
13188
|
}
|
|
12929
13189
|
case "data": {
|
|
12930
13190
|
await consumeStream({
|
|
12931
|
-
stream: (0,
|
|
13191
|
+
stream: (0, import_provider_utils37.parseJsonEventStream)({
|
|
12932
13192
|
stream: response.body,
|
|
12933
13193
|
schema: uiMessageChunkSchema
|
|
12934
13194
|
}).pipeThrough(
|
|
@@ -12980,7 +13240,7 @@ async function callCompletionApi({
|
|
|
12980
13240
|
}
|
|
12981
13241
|
|
|
12982
13242
|
// src/ui/chat.ts
|
|
12983
|
-
var
|
|
13243
|
+
var import_provider_utils40 = require("@ai-sdk/provider-utils");
|
|
12984
13244
|
|
|
12985
13245
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
12986
13246
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -12992,12 +13252,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12992
13252
|
}
|
|
12993
13253
|
return Promise.all(
|
|
12994
13254
|
Array.from(files).map(async (file) => {
|
|
12995
|
-
const { name:
|
|
13255
|
+
const { name: name22, type } = file;
|
|
12996
13256
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
12997
13257
|
const reader = new FileReader();
|
|
12998
13258
|
reader.onload = (readerEvent) => {
|
|
12999
|
-
var
|
|
13000
|
-
resolve3((
|
|
13259
|
+
var _a22;
|
|
13260
|
+
resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
|
|
13001
13261
|
};
|
|
13002
13262
|
reader.onerror = (error) => reject(error);
|
|
13003
13263
|
reader.readAsDataURL(file);
|
|
@@ -13005,7 +13265,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13005
13265
|
return {
|
|
13006
13266
|
type: "file",
|
|
13007
13267
|
mediaType: type,
|
|
13008
|
-
filename:
|
|
13268
|
+
filename: name22,
|
|
13009
13269
|
url: dataUrl
|
|
13010
13270
|
};
|
|
13011
13271
|
})
|
|
@@ -13013,10 +13273,10 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13013
13273
|
}
|
|
13014
13274
|
|
|
13015
13275
|
// src/ui/default-chat-transport.ts
|
|
13016
|
-
var
|
|
13276
|
+
var import_provider_utils39 = require("@ai-sdk/provider-utils");
|
|
13017
13277
|
|
|
13018
13278
|
// src/ui/http-chat-transport.ts
|
|
13019
|
-
var
|
|
13279
|
+
var import_provider_utils38 = require("@ai-sdk/provider-utils");
|
|
13020
13280
|
var HttpChatTransport = class {
|
|
13021
13281
|
constructor({
|
|
13022
13282
|
api = "/api/chat",
|
|
@@ -13039,15 +13299,15 @@ var HttpChatTransport = class {
|
|
|
13039
13299
|
abortSignal,
|
|
13040
13300
|
...options
|
|
13041
13301
|
}) {
|
|
13042
|
-
var
|
|
13043
|
-
const resolvedBody = await (0,
|
|
13044
|
-
const resolvedHeaders = await (0,
|
|
13045
|
-
const resolvedCredentials = await (0,
|
|
13302
|
+
var _a22, _b, _c, _d, _e;
|
|
13303
|
+
const resolvedBody = await (0, import_provider_utils38.resolve)(this.body);
|
|
13304
|
+
const resolvedHeaders = await (0, import_provider_utils38.resolve)(this.headers);
|
|
13305
|
+
const resolvedCredentials = await (0, import_provider_utils38.resolve)(this.credentials);
|
|
13046
13306
|
const baseHeaders = {
|
|
13047
|
-
...(0,
|
|
13048
|
-
...(0,
|
|
13307
|
+
...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
|
|
13308
|
+
...(0, import_provider_utils38.normalizeHeaders)(options.headers)
|
|
13049
13309
|
};
|
|
13050
|
-
const preparedRequest = await ((
|
|
13310
|
+
const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
|
|
13051
13311
|
api: this.api,
|
|
13052
13312
|
id: options.chatId,
|
|
13053
13313
|
messages: options.messages,
|
|
@@ -13059,7 +13319,7 @@ var HttpChatTransport = class {
|
|
|
13059
13319
|
messageId: options.messageId
|
|
13060
13320
|
}));
|
|
13061
13321
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
|
|
13062
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
13322
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils38.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
13063
13323
|
const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
|
|
13064
13324
|
...resolvedBody,
|
|
13065
13325
|
...options.body,
|
|
@@ -13091,15 +13351,15 @@ var HttpChatTransport = class {
|
|
|
13091
13351
|
return this.processResponseStream(response.body);
|
|
13092
13352
|
}
|
|
13093
13353
|
async reconnectToStream(options) {
|
|
13094
|
-
var
|
|
13095
|
-
const resolvedBody = await (0,
|
|
13096
|
-
const resolvedHeaders = await (0,
|
|
13097
|
-
const resolvedCredentials = await (0,
|
|
13354
|
+
var _a22, _b, _c, _d, _e;
|
|
13355
|
+
const resolvedBody = await (0, import_provider_utils38.resolve)(this.body);
|
|
13356
|
+
const resolvedHeaders = await (0, import_provider_utils38.resolve)(this.headers);
|
|
13357
|
+
const resolvedCredentials = await (0, import_provider_utils38.resolve)(this.credentials);
|
|
13098
13358
|
const baseHeaders = {
|
|
13099
|
-
...(0,
|
|
13100
|
-
...(0,
|
|
13359
|
+
...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
|
|
13360
|
+
...(0, import_provider_utils38.normalizeHeaders)(options.headers)
|
|
13101
13361
|
};
|
|
13102
|
-
const preparedRequest = await ((
|
|
13362
|
+
const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
|
|
13103
13363
|
api: this.api,
|
|
13104
13364
|
id: options.chatId,
|
|
13105
13365
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -13108,7 +13368,7 @@ var HttpChatTransport = class {
|
|
|
13108
13368
|
requestMetadata: options.metadata
|
|
13109
13369
|
}));
|
|
13110
13370
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
|
|
13111
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
13371
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils38.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
13112
13372
|
const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
|
|
13113
13373
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
13114
13374
|
const response = await fetch2(api, {
|
|
@@ -13137,7 +13397,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
13137
13397
|
super(options);
|
|
13138
13398
|
}
|
|
13139
13399
|
processResponseStream(stream) {
|
|
13140
|
-
return (0,
|
|
13400
|
+
return (0, import_provider_utils39.parseJsonEventStream)({
|
|
13141
13401
|
stream,
|
|
13142
13402
|
schema: uiMessageChunkSchema
|
|
13143
13403
|
}).pipeThrough(
|
|
@@ -13156,7 +13416,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
13156
13416
|
// src/ui/chat.ts
|
|
13157
13417
|
var AbstractChat = class {
|
|
13158
13418
|
constructor({
|
|
13159
|
-
generateId: generateId2 =
|
|
13419
|
+
generateId: generateId2 = import_provider_utils40.generateId,
|
|
13160
13420
|
id = generateId2(),
|
|
13161
13421
|
transport = new DefaultChatTransport(),
|
|
13162
13422
|
messageMetadataSchema,
|
|
@@ -13177,11 +13437,11 @@ var AbstractChat = class {
|
|
|
13177
13437
|
* If a messageId is provided, the message will be replaced.
|
|
13178
13438
|
*/
|
|
13179
13439
|
this.sendMessage = async (message, options) => {
|
|
13180
|
-
var
|
|
13440
|
+
var _a22, _b, _c, _d;
|
|
13181
13441
|
if (message == null) {
|
|
13182
13442
|
await this.makeRequest({
|
|
13183
13443
|
trigger: "submit-message",
|
|
13184
|
-
messageId: (
|
|
13444
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13185
13445
|
...options
|
|
13186
13446
|
});
|
|
13187
13447
|
return;
|
|
@@ -13291,11 +13551,11 @@ var AbstractChat = class {
|
|
|
13291
13551
|
}
|
|
13292
13552
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13293
13553
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13294
|
-
var
|
|
13554
|
+
var _a22;
|
|
13295
13555
|
if (shouldSend) {
|
|
13296
13556
|
this.makeRequest({
|
|
13297
13557
|
trigger: "submit-message",
|
|
13298
|
-
messageId: (
|
|
13558
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13299
13559
|
...options
|
|
13300
13560
|
});
|
|
13301
13561
|
}
|
|
@@ -13321,11 +13581,11 @@ var AbstractChat = class {
|
|
|
13321
13581
|
}
|
|
13322
13582
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13323
13583
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13324
|
-
var
|
|
13584
|
+
var _a22;
|
|
13325
13585
|
if (shouldSend) {
|
|
13326
13586
|
this.makeRequest({
|
|
13327
13587
|
trigger: "submit-message",
|
|
13328
|
-
messageId: (
|
|
13588
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13329
13589
|
...options
|
|
13330
13590
|
});
|
|
13331
13591
|
}
|
|
@@ -13338,10 +13598,10 @@ var AbstractChat = class {
|
|
|
13338
13598
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
13339
13599
|
*/
|
|
13340
13600
|
this.stop = async () => {
|
|
13341
|
-
var
|
|
13601
|
+
var _a22;
|
|
13342
13602
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
13343
13603
|
return;
|
|
13344
|
-
if ((
|
|
13604
|
+
if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
|
|
13345
13605
|
this.activeResponse.abortController.abort();
|
|
13346
13606
|
}
|
|
13347
13607
|
};
|
|
@@ -13407,7 +13667,7 @@ var AbstractChat = class {
|
|
|
13407
13667
|
body,
|
|
13408
13668
|
messageId
|
|
13409
13669
|
}) {
|
|
13410
|
-
var
|
|
13670
|
+
var _a22, _b, _c;
|
|
13411
13671
|
let resumeStream;
|
|
13412
13672
|
if (trigger === "resume-stream") {
|
|
13413
13673
|
try {
|
|
@@ -13467,9 +13727,9 @@ var AbstractChat = class {
|
|
|
13467
13727
|
() => job({
|
|
13468
13728
|
state: activeResponse.state,
|
|
13469
13729
|
write: () => {
|
|
13470
|
-
var
|
|
13730
|
+
var _a23;
|
|
13471
13731
|
this.setStatus({ status: "streaming" });
|
|
13472
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
13732
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
|
|
13473
13733
|
if (replaceLastMessage) {
|
|
13474
13734
|
this.state.replaceMessage(
|
|
13475
13735
|
this.state.messages.length - 1,
|
|
@@ -13521,7 +13781,7 @@ var AbstractChat = class {
|
|
|
13521
13781
|
isAbort,
|
|
13522
13782
|
isDisconnect,
|
|
13523
13783
|
isError,
|
|
13524
|
-
finishReason: (
|
|
13784
|
+
finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
|
|
13525
13785
|
});
|
|
13526
13786
|
} catch (err) {
|
|
13527
13787
|
console.error(err);
|
|
@@ -13677,6 +13937,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
13677
13937
|
InvalidResponseDataError,
|
|
13678
13938
|
InvalidStreamPartError,
|
|
13679
13939
|
InvalidToolApprovalError,
|
|
13940
|
+
InvalidToolApprovalSignatureError,
|
|
13680
13941
|
InvalidToolInputError,
|
|
13681
13942
|
JSONParseError,
|
|
13682
13943
|
JsonToSseTransformStream,
|