ai 6.0.200 → 6.0.202
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/index.d.mts +58 -13
- package/dist/index.d.ts +58 -13
- package/dist/index.js +839 -576
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +677 -409
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +32 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +20 -2
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +1 -1
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-signature-error.mdx +31 -0
- package/package.json +6 -6
- package/src/error/index.ts +1 -0
- package/src/error/invalid-tool-approval-signature-error.ts +35 -0
- package/src/generate-object/output-strategy.ts +3 -1
- package/src/generate-text/generate-text.ts +48 -6
- package/src/generate-text/run-tools-transformation.ts +14 -1
- package/src/generate-text/stream-text.ts +41 -6
- package/src/generate-text/to-response-messages.ts +1 -0
- package/src/generate-text/tool-approval-request-output.ts +5 -0
- package/src/generate-text/tool-approval-signature.ts +125 -0
- package/src/generate-text/validate-tool-approvals.ts +124 -0
- package/src/ui/convert-to-model-messages.ts +3 -0
- package/src/ui/process-ui-message-stream.ts +6 -1
- package/src/ui/ui-messages.ts +10 -0
- package/src/ui/validate-ui-messages.ts +10 -0
- package/src/ui-message-stream/ui-message-chunks.ts +2 -0
package/dist/index.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.202" : "0.0.0-test";
|
|
1258
1285
|
|
|
1259
1286
|
// src/util/download/download.ts
|
|
1260
1287
|
var download = async ({
|
|
@@ -1262,7 +1289,7 @@ var download = async ({
|
|
|
1262
1289
|
maxBytes,
|
|
1263
1290
|
abortSignal
|
|
1264
1291
|
}) => {
|
|
1265
|
-
var
|
|
1292
|
+
var _a22;
|
|
1266
1293
|
const urlText = url.toString();
|
|
1267
1294
|
(0, import_provider_utils3.validateDownloadUrl)(urlText);
|
|
1268
1295
|
try {
|
|
@@ -1291,7 +1318,7 @@ var download = async ({
|
|
|
1291
1318
|
});
|
|
1292
1319
|
return {
|
|
1293
1320
|
data,
|
|
1294
|
-
mediaType: (
|
|
1321
|
+
mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
|
|
1295
1322
|
};
|
|
1296
1323
|
} catch (error) {
|
|
1297
1324
|
if (import_provider_utils3.DownloadError.isInstance(error)) {
|
|
@@ -1309,7 +1336,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
1309
1336
|
);
|
|
1310
1337
|
|
|
1311
1338
|
// src/prompt/data-content.ts
|
|
1312
|
-
var
|
|
1339
|
+
var import_provider23 = require("@ai-sdk/provider");
|
|
1313
1340
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
1314
1341
|
var import_v4 = require("zod/v4");
|
|
1315
1342
|
|
|
@@ -1337,8 +1364,8 @@ var dataContentSchema = import_v4.z.union([
|
|
|
1337
1364
|
import_v4.z.custom(
|
|
1338
1365
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
1339
1366
|
(value) => {
|
|
1340
|
-
var
|
|
1341
|
-
return (_b = (
|
|
1367
|
+
var _a22, _b;
|
|
1368
|
+
return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
|
|
1342
1369
|
},
|
|
1343
1370
|
{ message: "Must be a Buffer" }
|
|
1344
1371
|
)
|
|
@@ -1361,7 +1388,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1361
1388
|
content.toString()
|
|
1362
1389
|
);
|
|
1363
1390
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
1364
|
-
throw new
|
|
1391
|
+
throw new import_provider23.AISDKError({
|
|
1365
1392
|
name: "InvalidDataContentError",
|
|
1366
1393
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
1367
1394
|
});
|
|
@@ -1644,7 +1671,7 @@ function convertToLanguageModelMessage({
|
|
|
1644
1671
|
}
|
|
1645
1672
|
}
|
|
1646
1673
|
async function downloadAssets(messages, download2, supportedUrls) {
|
|
1647
|
-
var
|
|
1674
|
+
var _a22;
|
|
1648
1675
|
const downloadableFiles = [];
|
|
1649
1676
|
for (const message of messages) {
|
|
1650
1677
|
if (message.role === "user" && Array.isArray(message.content)) {
|
|
@@ -1652,7 +1679,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1652
1679
|
if (part.type === "image" || part.type === "file") {
|
|
1653
1680
|
downloadableFiles.push({
|
|
1654
1681
|
data: part.type === "image" ? part.image : part.data,
|
|
1655
|
-
mediaType: (
|
|
1682
|
+
mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
|
|
1656
1683
|
});
|
|
1657
1684
|
}
|
|
1658
1685
|
}
|
|
@@ -1704,7 +1731,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1704
1731
|
);
|
|
1705
1732
|
}
|
|
1706
1733
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1707
|
-
var
|
|
1734
|
+
var _a22;
|
|
1708
1735
|
if (part.type === "text") {
|
|
1709
1736
|
return {
|
|
1710
1737
|
type: "text",
|
|
@@ -1737,7 +1764,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1737
1764
|
switch (type) {
|
|
1738
1765
|
case "image": {
|
|
1739
1766
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1740
|
-
mediaType = (
|
|
1767
|
+
mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
|
|
1741
1768
|
}
|
|
1742
1769
|
return {
|
|
1743
1770
|
type: "file",
|
|
@@ -1772,14 +1799,14 @@ function mapToolResultOutput({
|
|
|
1772
1799
|
return {
|
|
1773
1800
|
type: "content",
|
|
1774
1801
|
value: output.value.map((item) => {
|
|
1775
|
-
var
|
|
1802
|
+
var _a22, _b;
|
|
1776
1803
|
if (item.type === "image-url") {
|
|
1777
1804
|
const downloadedFile = downloadedAssets[new URL(item.url).toString()];
|
|
1778
1805
|
if (downloadedFile) {
|
|
1779
1806
|
return {
|
|
1780
1807
|
type: "image-data",
|
|
1781
1808
|
data: convertDataContentToBase64String(downloadedFile.data),
|
|
1782
|
-
mediaType: (
|
|
1809
|
+
mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
|
|
1783
1810
|
providerOptions: item.providerOptions
|
|
1784
1811
|
};
|
|
1785
1812
|
}
|
|
@@ -1817,7 +1844,7 @@ function mapToolResultOutput({
|
|
|
1817
1844
|
}
|
|
1818
1845
|
|
|
1819
1846
|
// src/prompt/create-tool-model-output.ts
|
|
1820
|
-
var
|
|
1847
|
+
var import_provider24 = require("@ai-sdk/provider");
|
|
1821
1848
|
async function createToolModelOutput({
|
|
1822
1849
|
toolCallId,
|
|
1823
1850
|
input,
|
|
@@ -1826,7 +1853,7 @@ async function createToolModelOutput({
|
|
|
1826
1853
|
errorMode
|
|
1827
1854
|
}) {
|
|
1828
1855
|
if (errorMode === "text") {
|
|
1829
|
-
return { type: "error-text", value: (0,
|
|
1856
|
+
return { type: "error-text", value: (0, import_provider24.getErrorMessage)(output) };
|
|
1830
1857
|
} else if (errorMode === "json") {
|
|
1831
1858
|
return { type: "error-json", value: toJSONValue(output) };
|
|
1832
1859
|
}
|
|
@@ -1953,10 +1980,10 @@ async function prepareToolsAndToolChoice({
|
|
|
1953
1980
|
};
|
|
1954
1981
|
}
|
|
1955
1982
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
1956
|
-
([
|
|
1983
|
+
([name22]) => activeTools.includes(name22)
|
|
1957
1984
|
) : Object.entries(tools);
|
|
1958
1985
|
const languageModelTools = [];
|
|
1959
|
-
for (const [
|
|
1986
|
+
for (const [name22, tool2] of filteredTools) {
|
|
1960
1987
|
const toolType = tool2.type;
|
|
1961
1988
|
switch (toolType) {
|
|
1962
1989
|
case void 0:
|
|
@@ -1964,7 +1991,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1964
1991
|
case "function":
|
|
1965
1992
|
languageModelTools.push({
|
|
1966
1993
|
type: "function",
|
|
1967
|
-
name:
|
|
1994
|
+
name: name22,
|
|
1968
1995
|
description: tool2.description,
|
|
1969
1996
|
inputSchema: await (0, import_provider_utils6.asSchema)(tool2.inputSchema).jsonSchema,
|
|
1970
1997
|
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
@@ -1975,7 +2002,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1975
2002
|
case "provider":
|
|
1976
2003
|
languageModelTools.push({
|
|
1977
2004
|
type: "provider",
|
|
1978
|
-
name:
|
|
2005
|
+
name: name22,
|
|
1979
2006
|
id: tool2.id,
|
|
1980
2007
|
args: tool2.args
|
|
1981
2008
|
});
|
|
@@ -1993,7 +2020,7 @@ async function prepareToolsAndToolChoice({
|
|
|
1993
2020
|
}
|
|
1994
2021
|
|
|
1995
2022
|
// src/prompt/standardize-prompt.ts
|
|
1996
|
-
var
|
|
2023
|
+
var import_provider25 = require("@ai-sdk/provider");
|
|
1997
2024
|
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
1998
2025
|
var import_v46 = require("zod/v4");
|
|
1999
2026
|
|
|
@@ -2211,19 +2238,19 @@ async function standardizePrompt({
|
|
|
2211
2238
|
messages
|
|
2212
2239
|
}) {
|
|
2213
2240
|
if (prompt == null && messages == null) {
|
|
2214
|
-
throw new
|
|
2241
|
+
throw new import_provider25.InvalidPromptError({
|
|
2215
2242
|
prompt,
|
|
2216
2243
|
message: "prompt or messages must be defined"
|
|
2217
2244
|
});
|
|
2218
2245
|
}
|
|
2219
2246
|
if (prompt != null && messages != null) {
|
|
2220
|
-
throw new
|
|
2247
|
+
throw new import_provider25.InvalidPromptError({
|
|
2221
2248
|
prompt,
|
|
2222
2249
|
message: "prompt and messages cannot be defined at the same time"
|
|
2223
2250
|
});
|
|
2224
2251
|
}
|
|
2225
2252
|
if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
|
|
2226
|
-
throw new
|
|
2253
|
+
throw new import_provider25.InvalidPromptError({
|
|
2227
2254
|
prompt,
|
|
2228
2255
|
message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
|
|
2229
2256
|
});
|
|
@@ -2233,20 +2260,20 @@ async function standardizePrompt({
|
|
|
2233
2260
|
} else if (prompt != null && Array.isArray(prompt)) {
|
|
2234
2261
|
messages = prompt;
|
|
2235
2262
|
} else if (messages == null) {
|
|
2236
|
-
throw new
|
|
2263
|
+
throw new import_provider25.InvalidPromptError({
|
|
2237
2264
|
prompt,
|
|
2238
2265
|
message: "prompt or messages must be defined"
|
|
2239
2266
|
});
|
|
2240
2267
|
}
|
|
2241
2268
|
if (messages.length === 0) {
|
|
2242
|
-
throw new
|
|
2269
|
+
throw new import_provider25.InvalidPromptError({
|
|
2243
2270
|
prompt,
|
|
2244
2271
|
message: "messages must not be empty"
|
|
2245
2272
|
});
|
|
2246
2273
|
}
|
|
2247
2274
|
if (messages.some((message) => message.role === "system")) {
|
|
2248
2275
|
if (allowSystemInMessages === false) {
|
|
2249
|
-
throw new
|
|
2276
|
+
throw new import_provider25.InvalidPromptError({
|
|
2250
2277
|
prompt,
|
|
2251
2278
|
message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
|
|
2252
2279
|
});
|
|
@@ -2262,7 +2289,7 @@ async function standardizePrompt({
|
|
|
2262
2289
|
schema: import_v46.z.array(modelMessageSchema)
|
|
2263
2290
|
});
|
|
2264
2291
|
if (!validationResult.success) {
|
|
2265
|
-
throw new
|
|
2292
|
+
throw new import_provider25.InvalidPromptError({
|
|
2266
2293
|
prompt,
|
|
2267
2294
|
message: "The messages do not match the ModelMessage[] schema.",
|
|
2268
2295
|
cause: validationResult.error
|
|
@@ -2273,14 +2300,14 @@ async function standardizePrompt({
|
|
|
2273
2300
|
|
|
2274
2301
|
// src/prompt/wrap-gateway-error.ts
|
|
2275
2302
|
var import_gateway2 = require("@ai-sdk/gateway");
|
|
2276
|
-
var
|
|
2303
|
+
var import_provider26 = require("@ai-sdk/provider");
|
|
2277
2304
|
function wrapGatewayError(error) {
|
|
2278
2305
|
if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
|
|
2279
2306
|
return error;
|
|
2280
2307
|
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
2281
2308
|
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
2282
2309
|
if (isProductionEnv) {
|
|
2283
|
-
return new
|
|
2310
|
+
return new import_provider26.AISDKError({
|
|
2284
2311
|
name: "GatewayError",
|
|
2285
2312
|
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
2286
2313
|
});
|
|
@@ -2321,7 +2348,7 @@ function getBaseTelemetryAttributes({
|
|
|
2321
2348
|
telemetry,
|
|
2322
2349
|
headers
|
|
2323
2350
|
}) {
|
|
2324
|
-
var
|
|
2351
|
+
var _a22;
|
|
2325
2352
|
return {
|
|
2326
2353
|
"ai.model.provider": model.provider,
|
|
2327
2354
|
"ai.model.id": model.modelId,
|
|
@@ -2340,7 +2367,7 @@ function getBaseTelemetryAttributes({
|
|
|
2340
2367
|
return attributes;
|
|
2341
2368
|
}, {}),
|
|
2342
2369
|
// add metadata as attributes:
|
|
2343
|
-
...Object.entries((
|
|
2370
|
+
...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
|
|
2344
2371
|
(attributes, [key, value]) => {
|
|
2345
2372
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
2346
2373
|
return attributes;
|
|
@@ -2365,7 +2392,7 @@ var noopTracer = {
|
|
|
2365
2392
|
startSpan() {
|
|
2366
2393
|
return noopSpan;
|
|
2367
2394
|
},
|
|
2368
|
-
startActiveSpan(
|
|
2395
|
+
startActiveSpan(name22, arg1, arg2, arg3) {
|
|
2369
2396
|
if (typeof arg1 === "function") {
|
|
2370
2397
|
return arg1(noopSpan);
|
|
2371
2398
|
}
|
|
@@ -2435,14 +2462,14 @@ function getTracer({
|
|
|
2435
2462
|
// src/telemetry/record-span.ts
|
|
2436
2463
|
var import_api2 = require("@opentelemetry/api");
|
|
2437
2464
|
async function recordSpan({
|
|
2438
|
-
name:
|
|
2465
|
+
name: name22,
|
|
2439
2466
|
tracer,
|
|
2440
2467
|
attributes,
|
|
2441
2468
|
fn,
|
|
2442
2469
|
endWhenDone = true
|
|
2443
2470
|
}) {
|
|
2444
2471
|
return tracer.startActiveSpan(
|
|
2445
|
-
|
|
2472
|
+
name22,
|
|
2446
2473
|
{ attributes: await attributes },
|
|
2447
2474
|
async (span) => {
|
|
2448
2475
|
const ctx = import_api2.context.active();
|
|
@@ -2540,15 +2567,15 @@ function registerTelemetryIntegration(integration) {
|
|
|
2540
2567
|
globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
|
|
2541
2568
|
}
|
|
2542
2569
|
function getGlobalTelemetryIntegrations() {
|
|
2543
|
-
var
|
|
2544
|
-
return (
|
|
2570
|
+
var _a22;
|
|
2571
|
+
return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
|
|
2545
2572
|
}
|
|
2546
2573
|
|
|
2547
2574
|
// src/telemetry/get-global-telemetry-integration.ts
|
|
2548
2575
|
function bindTelemetryIntegration(integration) {
|
|
2549
|
-
var
|
|
2576
|
+
var _a22, _b, _c, _d, _e, _f;
|
|
2550
2577
|
return {
|
|
2551
|
-
onStart: (
|
|
2578
|
+
onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
|
|
2552
2579
|
onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
|
|
2553
2580
|
onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
|
|
2554
2581
|
onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
|
|
@@ -2632,12 +2659,12 @@ function createNullLanguageModelUsage() {
|
|
|
2632
2659
|
};
|
|
2633
2660
|
}
|
|
2634
2661
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2635
|
-
var
|
|
2662
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2636
2663
|
return {
|
|
2637
2664
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2638
2665
|
inputTokenDetails: {
|
|
2639
2666
|
noCacheTokens: addTokenCounts(
|
|
2640
|
-
(
|
|
2667
|
+
(_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
2641
2668
|
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2642
2669
|
),
|
|
2643
2670
|
cacheReadTokens: addTokenCounts(
|
|
@@ -2719,14 +2746,14 @@ function mergeObjects(base, overrides) {
|
|
|
2719
2746
|
}
|
|
2720
2747
|
|
|
2721
2748
|
// src/util/retry-with-exponential-backoff.ts
|
|
2722
|
-
var
|
|
2749
|
+
var import_provider27 = require("@ai-sdk/provider");
|
|
2723
2750
|
var import_gateway3 = require("@ai-sdk/gateway");
|
|
2724
2751
|
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
2725
2752
|
function getRetryDelayInMs({
|
|
2726
2753
|
error,
|
|
2727
2754
|
exponentialBackoffDelay
|
|
2728
2755
|
}) {
|
|
2729
|
-
const headers =
|
|
2756
|
+
const headers = import_provider27.APICallError.isInstance(error) ? error.responseHeaders : import_provider27.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
|
|
2730
2757
|
if (!headers)
|
|
2731
2758
|
return exponentialBackoffDelay;
|
|
2732
2759
|
let ms;
|
|
@@ -2787,7 +2814,7 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
2787
2814
|
errors: newErrors
|
|
2788
2815
|
});
|
|
2789
2816
|
}
|
|
2790
|
-
if (error instanceof Error && (
|
|
2817
|
+
if (error instanceof Error && (import_provider27.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true) && tryNumber <= maxRetries) {
|
|
2791
2818
|
await (0, import_provider_utils8.delay)(
|
|
2792
2819
|
getRetryDelayInMs({
|
|
2793
2820
|
error,
|
|
@@ -2928,8 +2955,8 @@ var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
|
|
2928
2955
|
|
|
2929
2956
|
// src/util/now.ts
|
|
2930
2957
|
function now() {
|
|
2931
|
-
var
|
|
2932
|
-
return (_b = (
|
|
2958
|
+
var _a22, _b;
|
|
2959
|
+
return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
|
|
2933
2960
|
}
|
|
2934
2961
|
|
|
2935
2962
|
// src/generate-text/execute-tool-call.ts
|
|
@@ -3139,6 +3166,170 @@ async function isApprovalNeeded({
|
|
|
3139
3166
|
});
|
|
3140
3167
|
}
|
|
3141
3168
|
|
|
3169
|
+
// src/generate-text/tool-approval-signature.ts
|
|
3170
|
+
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
|
3171
|
+
var encoder = new TextEncoder();
|
|
3172
|
+
function canonicalJSON(value) {
|
|
3173
|
+
if (value === null || value === void 0) {
|
|
3174
|
+
return JSON.stringify(value);
|
|
3175
|
+
}
|
|
3176
|
+
if (typeof value !== "object") {
|
|
3177
|
+
return JSON.stringify(value);
|
|
3178
|
+
}
|
|
3179
|
+
if (Array.isArray(value)) {
|
|
3180
|
+
return `[${value.map(canonicalJSON).join(",")}]`;
|
|
3181
|
+
}
|
|
3182
|
+
const keys = Object.keys(value).sort();
|
|
3183
|
+
const entries = keys.map(
|
|
3184
|
+
(k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`
|
|
3185
|
+
);
|
|
3186
|
+
return `{${entries.join(",")}}`;
|
|
3187
|
+
}
|
|
3188
|
+
function toBase64url(bytes) {
|
|
3189
|
+
return (0, import_provider_utils11.convertUint8ArrayToBase64)(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
3190
|
+
}
|
|
3191
|
+
function fromBase64url(str) {
|
|
3192
|
+
return (0, import_provider_utils11.convertBase64ToUint8Array)(str);
|
|
3193
|
+
}
|
|
3194
|
+
async function importKey(secret) {
|
|
3195
|
+
const keyData = typeof secret === "string" ? encoder.encode(secret) : secret;
|
|
3196
|
+
return crypto.subtle.importKey(
|
|
3197
|
+
"raw",
|
|
3198
|
+
keyData,
|
|
3199
|
+
{ name: "HMAC", hash: "SHA-256" },
|
|
3200
|
+
false,
|
|
3201
|
+
["sign", "verify"]
|
|
3202
|
+
);
|
|
3203
|
+
}
|
|
3204
|
+
async function hashInput(input) {
|
|
3205
|
+
const canonical = canonicalJSON(input);
|
|
3206
|
+
const digest = await crypto.subtle.digest(
|
|
3207
|
+
"SHA-256",
|
|
3208
|
+
encoder.encode(canonical)
|
|
3209
|
+
);
|
|
3210
|
+
return toBase64url(new Uint8Array(digest));
|
|
3211
|
+
}
|
|
3212
|
+
function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
|
|
3213
|
+
return encoder.encode(
|
|
3214
|
+
`${approvalId}
|
|
3215
|
+
${toolCallId}
|
|
3216
|
+
${toolName}
|
|
3217
|
+
${inputDigest}`
|
|
3218
|
+
);
|
|
3219
|
+
}
|
|
3220
|
+
async function signToolApproval({
|
|
3221
|
+
secret,
|
|
3222
|
+
approvalId,
|
|
3223
|
+
toolCallId,
|
|
3224
|
+
toolName,
|
|
3225
|
+
input
|
|
3226
|
+
}) {
|
|
3227
|
+
const key = await importKey(secret);
|
|
3228
|
+
const inputDigest = await hashInput(input);
|
|
3229
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3230
|
+
const sig = await crypto.subtle.sign("HMAC", key, payload);
|
|
3231
|
+
return toBase64url(new Uint8Array(sig));
|
|
3232
|
+
}
|
|
3233
|
+
async function verifyToolApprovalSignature({
|
|
3234
|
+
secret,
|
|
3235
|
+
signature,
|
|
3236
|
+
approvalId,
|
|
3237
|
+
toolCallId,
|
|
3238
|
+
toolName,
|
|
3239
|
+
input
|
|
3240
|
+
}) {
|
|
3241
|
+
const key = await importKey(secret);
|
|
3242
|
+
const inputDigest = await hashInput(input);
|
|
3243
|
+
const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
|
|
3244
|
+
const sigBytes = fromBase64url(signature);
|
|
3245
|
+
return crypto.subtle.verify("HMAC", key, sigBytes, payload);
|
|
3246
|
+
}
|
|
3247
|
+
async function maybeSignApproval({
|
|
3248
|
+
secret,
|
|
3249
|
+
approvalId,
|
|
3250
|
+
toolCallId,
|
|
3251
|
+
toolName,
|
|
3252
|
+
input
|
|
3253
|
+
}) {
|
|
3254
|
+
if (secret == null)
|
|
3255
|
+
return void 0;
|
|
3256
|
+
return signToolApproval({ secret, approvalId, toolCallId, toolName, input });
|
|
3257
|
+
}
|
|
3258
|
+
|
|
3259
|
+
// src/generate-text/validate-tool-approvals.ts
|
|
3260
|
+
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
3261
|
+
async function validateApprovedToolApprovals({
|
|
3262
|
+
approvedToolApprovals,
|
|
3263
|
+
tools,
|
|
3264
|
+
messages,
|
|
3265
|
+
experimental_context,
|
|
3266
|
+
toolApprovalSecret
|
|
3267
|
+
}) {
|
|
3268
|
+
var _a22;
|
|
3269
|
+
const approved = [];
|
|
3270
|
+
const denied = [];
|
|
3271
|
+
for (const approval of approvedToolApprovals) {
|
|
3272
|
+
const { toolCall, approvalRequest } = approval;
|
|
3273
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3274
|
+
if (toolApprovalSecret != null) {
|
|
3275
|
+
if (approvalRequest.signature == null) {
|
|
3276
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3277
|
+
approvalId: approvalRequest.approvalId,
|
|
3278
|
+
toolCallId: toolCall.toolCallId,
|
|
3279
|
+
reason: "missing signature"
|
|
3280
|
+
});
|
|
3281
|
+
}
|
|
3282
|
+
const valid = await verifyToolApprovalSignature({
|
|
3283
|
+
secret: toolApprovalSecret,
|
|
3284
|
+
signature: approvalRequest.signature,
|
|
3285
|
+
approvalId: approvalRequest.approvalId,
|
|
3286
|
+
toolCallId: toolCall.toolCallId,
|
|
3287
|
+
toolName: toolCall.toolName,
|
|
3288
|
+
input: toolCall.input
|
|
3289
|
+
});
|
|
3290
|
+
if (!valid) {
|
|
3291
|
+
throw new InvalidToolApprovalSignatureError({
|
|
3292
|
+
approvalId: approvalRequest.approvalId,
|
|
3293
|
+
toolCallId: toolCall.toolCallId,
|
|
3294
|
+
reason: "invalid signature"
|
|
3295
|
+
});
|
|
3296
|
+
}
|
|
3297
|
+
}
|
|
3298
|
+
if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
|
|
3299
|
+
const validation = await (0, import_provider_utils12.safeValidateTypes)({
|
|
3300
|
+
value: toolCall.input,
|
|
3301
|
+
schema: (0, import_provider_utils12.asSchema)(tool2.inputSchema)
|
|
3302
|
+
});
|
|
3303
|
+
if (!validation.success) {
|
|
3304
|
+
throw new InvalidToolInputError({
|
|
3305
|
+
toolName: toolCall.toolName,
|
|
3306
|
+
toolInput: JSON.stringify(toolCall.input),
|
|
3307
|
+
cause: validation.error
|
|
3308
|
+
});
|
|
3309
|
+
}
|
|
3310
|
+
}
|
|
3311
|
+
const approvalNeeded = tool2 != null && await isApprovalNeeded({
|
|
3312
|
+
tool: tool2,
|
|
3313
|
+
toolCall,
|
|
3314
|
+
messages,
|
|
3315
|
+
experimental_context
|
|
3316
|
+
});
|
|
3317
|
+
if (approvalNeeded) {
|
|
3318
|
+
approved.push(approval);
|
|
3319
|
+
} else {
|
|
3320
|
+
denied.push({
|
|
3321
|
+
...approval,
|
|
3322
|
+
approvalResponse: {
|
|
3323
|
+
...approval.approvalResponse,
|
|
3324
|
+
approved: false,
|
|
3325
|
+
reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
|
|
3326
|
+
}
|
|
3327
|
+
});
|
|
3328
|
+
}
|
|
3329
|
+
}
|
|
3330
|
+
return { approvedToolApprovals: approved, deniedToolApprovals: denied };
|
|
3331
|
+
}
|
|
3332
|
+
|
|
3142
3333
|
// src/generate-text/output.ts
|
|
3143
3334
|
var output_exports = {};
|
|
3144
3335
|
__export(output_exports, {
|
|
@@ -3148,11 +3339,11 @@ __export(output_exports, {
|
|
|
3148
3339
|
object: () => object,
|
|
3149
3340
|
text: () => text
|
|
3150
3341
|
});
|
|
3151
|
-
var
|
|
3152
|
-
var
|
|
3342
|
+
var import_provider28 = require("@ai-sdk/provider");
|
|
3343
|
+
var import_provider_utils14 = require("@ai-sdk/provider-utils");
|
|
3153
3344
|
|
|
3154
3345
|
// src/util/parse-partial-json.ts
|
|
3155
|
-
var
|
|
3346
|
+
var import_provider_utils13 = require("@ai-sdk/provider-utils");
|
|
3156
3347
|
|
|
3157
3348
|
// src/util/fix-json.ts
|
|
3158
3349
|
function fixJson(input) {
|
|
@@ -3477,11 +3668,11 @@ async function parsePartialJson(jsonText) {
|
|
|
3477
3668
|
if (jsonText === void 0) {
|
|
3478
3669
|
return { value: void 0, state: "undefined-input" };
|
|
3479
3670
|
}
|
|
3480
|
-
let result = await (0,
|
|
3671
|
+
let result = await (0, import_provider_utils13.safeParseJSON)({ text: jsonText });
|
|
3481
3672
|
if (result.success) {
|
|
3482
3673
|
return { value: result.value, state: "successful-parse" };
|
|
3483
3674
|
}
|
|
3484
|
-
result = await (0,
|
|
3675
|
+
result = await (0, import_provider_utils13.safeParseJSON)({ text: fixJson(jsonText) });
|
|
3485
3676
|
if (result.success) {
|
|
3486
3677
|
return { value: result.value, state: "repaired-parse" };
|
|
3487
3678
|
}
|
|
@@ -3504,20 +3695,20 @@ var text = () => ({
|
|
|
3504
3695
|
});
|
|
3505
3696
|
var object = ({
|
|
3506
3697
|
schema: inputSchema,
|
|
3507
|
-
name:
|
|
3698
|
+
name: name22,
|
|
3508
3699
|
description
|
|
3509
3700
|
}) => {
|
|
3510
|
-
const schema = (0,
|
|
3701
|
+
const schema = (0, import_provider_utils14.asSchema)(inputSchema);
|
|
3511
3702
|
return {
|
|
3512
3703
|
name: "object",
|
|
3513
|
-
responseFormat: (0,
|
|
3704
|
+
responseFormat: (0, import_provider_utils14.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
|
|
3514
3705
|
type: "json",
|
|
3515
3706
|
schema: jsonSchema2,
|
|
3516
|
-
...
|
|
3707
|
+
...name22 != null && { name: name22 },
|
|
3517
3708
|
...description != null && { description }
|
|
3518
3709
|
})),
|
|
3519
3710
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3520
|
-
const parseResult = await (0,
|
|
3711
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3521
3712
|
if (!parseResult.success) {
|
|
3522
3713
|
throw new NoObjectGeneratedError({
|
|
3523
3714
|
message: "No object generated: could not parse the response.",
|
|
@@ -3528,7 +3719,7 @@ var object = ({
|
|
|
3528
3719
|
finishReason: context2.finishReason
|
|
3529
3720
|
});
|
|
3530
3721
|
}
|
|
3531
|
-
const validationResult = await (0,
|
|
3722
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3532
3723
|
value: parseResult.value,
|
|
3533
3724
|
schema
|
|
3534
3725
|
});
|
|
@@ -3567,14 +3758,14 @@ var object = ({
|
|
|
3567
3758
|
};
|
|
3568
3759
|
var array = ({
|
|
3569
3760
|
element: inputElementSchema,
|
|
3570
|
-
name:
|
|
3761
|
+
name: name22,
|
|
3571
3762
|
description
|
|
3572
3763
|
}) => {
|
|
3573
|
-
const elementSchema = (0,
|
|
3764
|
+
const elementSchema = (0, import_provider_utils14.asSchema)(inputElementSchema);
|
|
3574
3765
|
return {
|
|
3575
3766
|
name: "array",
|
|
3576
3767
|
// JSON schema that describes an array of elements:
|
|
3577
|
-
responseFormat: (0,
|
|
3768
|
+
responseFormat: (0, import_provider_utils14.resolve)(elementSchema.jsonSchema).then((jsonSchema2) => {
|
|
3578
3769
|
const { $schema, ...itemSchema } = jsonSchema2;
|
|
3579
3770
|
return {
|
|
3580
3771
|
type: "json",
|
|
@@ -3587,12 +3778,12 @@ var array = ({
|
|
|
3587
3778
|
required: ["elements"],
|
|
3588
3779
|
additionalProperties: false
|
|
3589
3780
|
},
|
|
3590
|
-
...
|
|
3781
|
+
...name22 != null && { name: name22 },
|
|
3591
3782
|
...description != null && { description }
|
|
3592
3783
|
};
|
|
3593
3784
|
}),
|
|
3594
3785
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3595
|
-
const parseResult = await (0,
|
|
3786
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3596
3787
|
if (!parseResult.success) {
|
|
3597
3788
|
throw new NoObjectGeneratedError({
|
|
3598
3789
|
message: "No object generated: could not parse the response.",
|
|
@@ -3607,7 +3798,7 @@ var array = ({
|
|
|
3607
3798
|
if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
|
|
3608
3799
|
throw new NoObjectGeneratedError({
|
|
3609
3800
|
message: "No object generated: response did not match schema.",
|
|
3610
|
-
cause: new
|
|
3801
|
+
cause: new import_provider28.TypeValidationError({
|
|
3611
3802
|
value: outerValue,
|
|
3612
3803
|
cause: "response must be an object with an elements array"
|
|
3613
3804
|
}),
|
|
@@ -3618,7 +3809,7 @@ var array = ({
|
|
|
3618
3809
|
});
|
|
3619
3810
|
}
|
|
3620
3811
|
for (const element of outerValue.elements) {
|
|
3621
|
-
const validationResult = await (0,
|
|
3812
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3622
3813
|
value: element,
|
|
3623
3814
|
schema: elementSchema
|
|
3624
3815
|
});
|
|
@@ -3651,7 +3842,7 @@ var array = ({
|
|
|
3651
3842
|
const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
|
|
3652
3843
|
const parsedElements = [];
|
|
3653
3844
|
for (const rawElement of rawElements) {
|
|
3654
|
-
const validationResult = await (0,
|
|
3845
|
+
const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
|
|
3655
3846
|
value: rawElement,
|
|
3656
3847
|
schema: elementSchema
|
|
3657
3848
|
});
|
|
@@ -3679,7 +3870,7 @@ var array = ({
|
|
|
3679
3870
|
};
|
|
3680
3871
|
var choice = ({
|
|
3681
3872
|
options: choiceOptions,
|
|
3682
|
-
name:
|
|
3873
|
+
name: name22,
|
|
3683
3874
|
description
|
|
3684
3875
|
}) => {
|
|
3685
3876
|
return {
|
|
@@ -3696,11 +3887,11 @@ var choice = ({
|
|
|
3696
3887
|
required: ["result"],
|
|
3697
3888
|
additionalProperties: false
|
|
3698
3889
|
},
|
|
3699
|
-
...
|
|
3890
|
+
...name22 != null && { name: name22 },
|
|
3700
3891
|
...description != null && { description }
|
|
3701
3892
|
}),
|
|
3702
3893
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3703
|
-
const parseResult = await (0,
|
|
3894
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3704
3895
|
if (!parseResult.success) {
|
|
3705
3896
|
throw new NoObjectGeneratedError({
|
|
3706
3897
|
message: "No object generated: could not parse the response.",
|
|
@@ -3715,7 +3906,7 @@ var choice = ({
|
|
|
3715
3906
|
if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
|
|
3716
3907
|
throw new NoObjectGeneratedError({
|
|
3717
3908
|
message: "No object generated: response did not match schema.",
|
|
3718
|
-
cause: new
|
|
3909
|
+
cause: new import_provider28.TypeValidationError({
|
|
3719
3910
|
value: outerValue,
|
|
3720
3911
|
cause: "response must be an object that contains a choice value."
|
|
3721
3912
|
}),
|
|
@@ -3757,18 +3948,18 @@ var choice = ({
|
|
|
3757
3948
|
};
|
|
3758
3949
|
};
|
|
3759
3950
|
var json = ({
|
|
3760
|
-
name:
|
|
3951
|
+
name: name22,
|
|
3761
3952
|
description
|
|
3762
3953
|
} = {}) => {
|
|
3763
3954
|
return {
|
|
3764
3955
|
name: "json",
|
|
3765
3956
|
responseFormat: Promise.resolve({
|
|
3766
3957
|
type: "json",
|
|
3767
|
-
...
|
|
3958
|
+
...name22 != null && { name: name22 },
|
|
3768
3959
|
...description != null && { description }
|
|
3769
3960
|
}),
|
|
3770
3961
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
3771
|
-
const parseResult = await (0,
|
|
3962
|
+
const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
|
|
3772
3963
|
if (!parseResult.success) {
|
|
3773
3964
|
throw new NoObjectGeneratedError({
|
|
3774
3965
|
message: "No object generated: could not parse the response.",
|
|
@@ -3801,7 +3992,7 @@ var json = ({
|
|
|
3801
3992
|
};
|
|
3802
3993
|
|
|
3803
3994
|
// src/generate-text/parse-tool-call.ts
|
|
3804
|
-
var
|
|
3995
|
+
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
|
3805
3996
|
async function parseToolCall({
|
|
3806
3997
|
toolCall,
|
|
3807
3998
|
tools,
|
|
@@ -3829,7 +4020,7 @@ async function parseToolCall({
|
|
|
3829
4020
|
tools,
|
|
3830
4021
|
inputSchema: async ({ toolName }) => {
|
|
3831
4022
|
const { inputSchema } = tools[toolName];
|
|
3832
|
-
return await (0,
|
|
4023
|
+
return await (0, import_provider_utils15.asSchema)(inputSchema).jsonSchema;
|
|
3833
4024
|
},
|
|
3834
4025
|
system,
|
|
3835
4026
|
messages,
|
|
@@ -3847,7 +4038,7 @@ async function parseToolCall({
|
|
|
3847
4038
|
return await doParseToolCall({ toolCall: repairedToolCall, tools });
|
|
3848
4039
|
}
|
|
3849
4040
|
} catch (error) {
|
|
3850
|
-
const parsedInput = await (0,
|
|
4041
|
+
const parsedInput = await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
|
|
3851
4042
|
const input = parsedInput.success ? parsedInput.value : toolCall.input;
|
|
3852
4043
|
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3853
4044
|
return {
|
|
@@ -3866,7 +4057,7 @@ async function parseToolCall({
|
|
|
3866
4057
|
}
|
|
3867
4058
|
}
|
|
3868
4059
|
async function parseProviderExecutedDynamicToolCall(toolCall) {
|
|
3869
|
-
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0,
|
|
4060
|
+
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
|
|
3870
4061
|
if (parseResult.success === false) {
|
|
3871
4062
|
throw new InvalidToolInputError({
|
|
3872
4063
|
toolName: toolCall.toolName,
|
|
@@ -3899,8 +4090,8 @@ async function doParseToolCall({
|
|
|
3899
4090
|
availableTools: Object.keys(tools)
|
|
3900
4091
|
});
|
|
3901
4092
|
}
|
|
3902
|
-
const schema = (0,
|
|
3903
|
-
const parseResult = toolCall.input.trim() === "" ? await (0,
|
|
4093
|
+
const schema = (0, import_provider_utils15.asSchema)(tool2.inputSchema);
|
|
4094
|
+
const parseResult = toolCall.input.trim() === "" ? await (0, import_provider_utils15.safeValidateTypes)({ value: {}, schema }) : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input, schema });
|
|
3904
4095
|
if (parseResult.success === false) {
|
|
3905
4096
|
throw new InvalidToolInputError({
|
|
3906
4097
|
toolName,
|
|
@@ -4013,8 +4204,8 @@ function isLoopFinished() {
|
|
|
4013
4204
|
}
|
|
4014
4205
|
function hasToolCall(toolName) {
|
|
4015
4206
|
return ({ steps }) => {
|
|
4016
|
-
var
|
|
4017
|
-
return (_c = (_b = (
|
|
4207
|
+
var _a22, _b, _c;
|
|
4208
|
+
return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
|
|
4018
4209
|
(toolCall) => toolCall.toolName === toolName
|
|
4019
4210
|
)) != null ? _c : false;
|
|
4020
4211
|
};
|
|
@@ -4114,7 +4305,8 @@ async function toResponseMessages({
|
|
|
4114
4305
|
content.push({
|
|
4115
4306
|
type: "tool-approval-request",
|
|
4116
4307
|
approvalId: part.approvalId,
|
|
4117
|
-
toolCallId: part.toolCall.toolCallId
|
|
4308
|
+
toolCallId: part.toolCall.toolCallId,
|
|
4309
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
4118
4310
|
});
|
|
4119
4311
|
break;
|
|
4120
4312
|
}
|
|
@@ -4183,7 +4375,7 @@ function mergeAbortSignals(...signals) {
|
|
|
4183
4375
|
}
|
|
4184
4376
|
|
|
4185
4377
|
// src/generate-text/generate-text.ts
|
|
4186
|
-
var originalGenerateId = (0,
|
|
4378
|
+
var originalGenerateId = (0, import_provider_utils16.createIdGenerator)({
|
|
4187
4379
|
prefix: "aitxt",
|
|
4188
4380
|
size: 24
|
|
4189
4381
|
});
|
|
@@ -4211,6 +4403,7 @@ async function generateText({
|
|
|
4211
4403
|
experimental_repairToolCall: repairToolCall,
|
|
4212
4404
|
experimental_download: download2,
|
|
4213
4405
|
experimental_context,
|
|
4406
|
+
experimental_toolApprovalSecret,
|
|
4214
4407
|
experimental_include: include,
|
|
4215
4408
|
_internal: { generateId: generateId2 = originalGenerateId } = {},
|
|
4216
4409
|
experimental_onStart: onStart,
|
|
@@ -4237,7 +4430,7 @@ async function generateText({
|
|
|
4237
4430
|
abortSignal: mergedAbortSignal
|
|
4238
4431
|
});
|
|
4239
4432
|
const callSettings = prepareCallSettings(settings);
|
|
4240
|
-
const headersWithUserAgent = (0,
|
|
4433
|
+
const headersWithUserAgent = (0, import_provider_utils16.withUserAgentSuffix)(
|
|
4241
4434
|
headers != null ? headers : {},
|
|
4242
4435
|
`ai/${VERSION}`
|
|
4243
4436
|
);
|
|
@@ -4312,13 +4505,29 @@ async function generateText({
|
|
|
4312
4505
|
}),
|
|
4313
4506
|
tracer,
|
|
4314
4507
|
fn: async (span) => {
|
|
4315
|
-
var
|
|
4508
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
4316
4509
|
const initialMessages = initialPrompt.messages;
|
|
4317
4510
|
const responseMessages = [];
|
|
4318
|
-
const {
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
);
|
|
4511
|
+
const {
|
|
4512
|
+
approvedToolApprovals,
|
|
4513
|
+
deniedToolApprovals: collectedDeniedToolApprovals
|
|
4514
|
+
} = collectToolApprovals({ messages: initialMessages });
|
|
4515
|
+
const {
|
|
4516
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
4517
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
4518
|
+
} = await validateApprovedToolApprovals({
|
|
4519
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
4520
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
4521
|
+
),
|
|
4522
|
+
tools,
|
|
4523
|
+
messages: initialMessages,
|
|
4524
|
+
experimental_context,
|
|
4525
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
4526
|
+
});
|
|
4527
|
+
const deniedToolApprovals = [
|
|
4528
|
+
...collectedDeniedToolApprovals,
|
|
4529
|
+
...revalidationDeniedToolApprovals
|
|
4530
|
+
];
|
|
4322
4531
|
if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
|
|
4323
4532
|
const toolOutputs = await executeTools({
|
|
4324
4533
|
toolCalls: localApprovedToolApprovals.map(
|
|
@@ -4399,7 +4608,7 @@ async function generateText({
|
|
|
4399
4608
|
experimental_context
|
|
4400
4609
|
}));
|
|
4401
4610
|
const stepModel = resolveLanguageModel(
|
|
4402
|
-
(
|
|
4611
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
4403
4612
|
);
|
|
4404
4613
|
const stepModelInfo = {
|
|
4405
4614
|
provider: stepModel.provider,
|
|
@@ -4454,7 +4663,7 @@ async function generateText({
|
|
|
4454
4663
|
});
|
|
4455
4664
|
currentModelResponse = await retry(
|
|
4456
4665
|
() => {
|
|
4457
|
-
var
|
|
4666
|
+
var _a23;
|
|
4458
4667
|
return recordSpan({
|
|
4459
4668
|
name: "ai.generateText.doGenerate",
|
|
4460
4669
|
attributes: selectTelemetryAttributes({
|
|
@@ -4486,14 +4695,14 @@ async function generateText({
|
|
|
4486
4695
|
"gen_ai.request.max_tokens": settings.maxOutputTokens,
|
|
4487
4696
|
"gen_ai.request.presence_penalty": settings.presencePenalty,
|
|
4488
4697
|
"gen_ai.request.stop_sequences": settings.stopSequences,
|
|
4489
|
-
"gen_ai.request.temperature": (
|
|
4698
|
+
"gen_ai.request.temperature": (_a23 = settings.temperature) != null ? _a23 : void 0,
|
|
4490
4699
|
"gen_ai.request.top_k": settings.topK,
|
|
4491
4700
|
"gen_ai.request.top_p": settings.topP
|
|
4492
4701
|
}
|
|
4493
4702
|
}),
|
|
4494
4703
|
tracer,
|
|
4495
4704
|
fn: async (span2) => {
|
|
4496
|
-
var
|
|
4705
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
4497
4706
|
const result = await stepModel.doGenerate({
|
|
4498
4707
|
...callSettings2,
|
|
4499
4708
|
tools: stepTools,
|
|
@@ -4505,7 +4714,7 @@ async function generateText({
|
|
|
4505
4714
|
headers: headersWithUserAgent
|
|
4506
4715
|
});
|
|
4507
4716
|
const responseData = {
|
|
4508
|
-
id: (_b2 = (
|
|
4717
|
+
id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
|
|
4509
4718
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
|
|
4510
4719
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
4511
4720
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
@@ -4598,10 +4807,19 @@ async function generateText({
|
|
|
4598
4807
|
messages: stepInputMessages,
|
|
4599
4808
|
experimental_context
|
|
4600
4809
|
})) {
|
|
4810
|
+
const approvalId = generateId2();
|
|
4811
|
+
const signature = await maybeSignApproval({
|
|
4812
|
+
secret: experimental_toolApprovalSecret,
|
|
4813
|
+
approvalId,
|
|
4814
|
+
toolCallId: toolCall.toolCallId,
|
|
4815
|
+
toolName: toolCall.toolName,
|
|
4816
|
+
input: toolCall.input
|
|
4817
|
+
});
|
|
4601
4818
|
toolApprovalRequests[toolCall.toolCallId] = {
|
|
4602
4819
|
type: "tool-approval-request",
|
|
4603
|
-
approvalId
|
|
4604
|
-
toolCall
|
|
4820
|
+
approvalId,
|
|
4821
|
+
toolCall,
|
|
4822
|
+
...signature != null ? { signature } : {}
|
|
4605
4823
|
};
|
|
4606
4824
|
}
|
|
4607
4825
|
}
|
|
@@ -4615,7 +4833,7 @@ async function generateText({
|
|
|
4615
4833
|
toolCallId: toolCall.toolCallId,
|
|
4616
4834
|
toolName: toolCall.toolName,
|
|
4617
4835
|
input: toolCall.input,
|
|
4618
|
-
error: (0,
|
|
4836
|
+
error: (0, import_provider_utils16.getErrorMessage)(toolCall.error),
|
|
4619
4837
|
dynamic: true
|
|
4620
4838
|
});
|
|
4621
4839
|
}
|
|
@@ -5075,8 +5293,8 @@ function asContent({
|
|
|
5075
5293
|
}
|
|
5076
5294
|
|
|
5077
5295
|
// src/generate-text/stream-text.ts
|
|
5078
|
-
var
|
|
5079
|
-
var
|
|
5296
|
+
var import_provider29 = require("@ai-sdk/provider");
|
|
5297
|
+
var import_provider_utils20 = require("@ai-sdk/provider-utils");
|
|
5080
5298
|
|
|
5081
5299
|
// src/util/prepare-headers.ts
|
|
5082
5300
|
function prepareHeaders(headers, defaultHeaders) {
|
|
@@ -5223,17 +5441,17 @@ function getResponseUIMessageId({
|
|
|
5223
5441
|
}
|
|
5224
5442
|
|
|
5225
5443
|
// src/ui/process-ui-message-stream.ts
|
|
5226
|
-
var
|
|
5444
|
+
var import_provider_utils18 = require("@ai-sdk/provider-utils");
|
|
5227
5445
|
|
|
5228
5446
|
// src/ui-message-stream/ui-message-chunks.ts
|
|
5229
5447
|
var import_v47 = require("zod/v4");
|
|
5230
|
-
var
|
|
5448
|
+
var import_provider_utils17 = require("@ai-sdk/provider-utils");
|
|
5231
5449
|
var toolMetadataSchema = import_v47.z.record(
|
|
5232
5450
|
import_v47.z.string(),
|
|
5233
5451
|
jsonValueSchema.optional()
|
|
5234
5452
|
);
|
|
5235
|
-
var uiMessageChunkSchema = (0,
|
|
5236
|
-
() => (0,
|
|
5453
|
+
var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
|
|
5454
|
+
() => (0, import_provider_utils17.zodSchema)(
|
|
5237
5455
|
import_v47.z.union([
|
|
5238
5456
|
import_v47.z.strictObject({
|
|
5239
5457
|
type: import_v47.z.literal("text-start"),
|
|
@@ -5296,7 +5514,8 @@ var uiMessageChunkSchema = (0, import_provider_utils15.lazySchema)(
|
|
|
5296
5514
|
import_v47.z.strictObject({
|
|
5297
5515
|
type: import_v47.z.literal("tool-approval-request"),
|
|
5298
5516
|
approvalId: import_v47.z.string(),
|
|
5299
|
-
toolCallId: import_v47.z.string()
|
|
5517
|
+
toolCallId: import_v47.z.string(),
|
|
5518
|
+
signature: import_v47.z.string().optional()
|
|
5300
5519
|
}),
|
|
5301
5520
|
import_v47.z.strictObject({
|
|
5302
5521
|
type: import_v47.z.literal("tool-output-available"),
|
|
@@ -5471,7 +5690,7 @@ function processUIMessageStream({
|
|
|
5471
5690
|
new TransformStream({
|
|
5472
5691
|
async transform(chunk, controller) {
|
|
5473
5692
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
5474
|
-
var
|
|
5693
|
+
var _a22, _b, _c, _d;
|
|
5475
5694
|
function getToolInvocation(toolCallId) {
|
|
5476
5695
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
|
5477
5696
|
const toolInvocation = toolInvocations.find(
|
|
@@ -5487,7 +5706,7 @@ function processUIMessageStream({
|
|
|
5487
5706
|
return toolInvocation;
|
|
5488
5707
|
}
|
|
5489
5708
|
function updateToolPart(options) {
|
|
5490
|
-
var
|
|
5709
|
+
var _a23;
|
|
5491
5710
|
const part = state.message.parts.find(
|
|
5492
5711
|
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
5493
5712
|
);
|
|
@@ -5506,7 +5725,7 @@ function processUIMessageStream({
|
|
|
5506
5725
|
if (options.toolMetadata !== void 0) {
|
|
5507
5726
|
anyPart.toolMetadata = options.toolMetadata;
|
|
5508
5727
|
}
|
|
5509
|
-
anyPart.providerExecuted = (
|
|
5728
|
+
anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
|
|
5510
5729
|
const providerMetadata = anyOptions.providerMetadata;
|
|
5511
5730
|
if (providerMetadata != null) {
|
|
5512
5731
|
if (options.state === "output-available" || options.state === "output-error") {
|
|
@@ -5535,7 +5754,7 @@ function processUIMessageStream({
|
|
|
5535
5754
|
}
|
|
5536
5755
|
}
|
|
5537
5756
|
function updateDynamicToolPart(options) {
|
|
5538
|
-
var
|
|
5757
|
+
var _a23, _b2;
|
|
5539
5758
|
const part = state.message.parts.find(
|
|
5540
5759
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
5541
5760
|
);
|
|
@@ -5547,7 +5766,7 @@ function processUIMessageStream({
|
|
|
5547
5766
|
anyPart.input = anyOptions.input;
|
|
5548
5767
|
anyPart.output = anyOptions.output;
|
|
5549
5768
|
anyPart.errorText = anyOptions.errorText;
|
|
5550
|
-
anyPart.rawInput = (
|
|
5769
|
+
anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
|
|
5551
5770
|
anyPart.preliminary = anyOptions.preliminary;
|
|
5552
5771
|
if (options.title !== void 0) {
|
|
5553
5772
|
anyPart.title = options.title;
|
|
@@ -5587,7 +5806,7 @@ function processUIMessageStream({
|
|
|
5587
5806
|
if (metadata != null) {
|
|
5588
5807
|
const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;
|
|
5589
5808
|
if (messageMetadataSchema != null) {
|
|
5590
|
-
await (0,
|
|
5809
|
+
await (0, import_provider_utils18.validateTypes)({
|
|
5591
5810
|
value: mergedMetadata,
|
|
5592
5811
|
schema: messageMetadataSchema,
|
|
5593
5812
|
context: {
|
|
@@ -5622,7 +5841,7 @@ function processUIMessageStream({
|
|
|
5622
5841
|
});
|
|
5623
5842
|
}
|
|
5624
5843
|
textPart.text += chunk.delta;
|
|
5625
|
-
textPart.providerMetadata = (
|
|
5844
|
+
textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
|
|
5626
5845
|
write();
|
|
5627
5846
|
break;
|
|
5628
5847
|
}
|
|
@@ -5851,7 +6070,10 @@ function processUIMessageStream({
|
|
|
5851
6070
|
case "tool-approval-request": {
|
|
5852
6071
|
const toolInvocation = getToolInvocation(chunk.toolCallId);
|
|
5853
6072
|
toolInvocation.state = "approval-requested";
|
|
5854
|
-
toolInvocation.approval = {
|
|
6073
|
+
toolInvocation.approval = {
|
|
6074
|
+
id: chunk.approvalId,
|
|
6075
|
+
...chunk.signature != null ? { signature: chunk.signature } : {}
|
|
6076
|
+
};
|
|
5855
6077
|
write();
|
|
5856
6078
|
break;
|
|
5857
6079
|
}
|
|
@@ -5971,7 +6193,7 @@ function processUIMessageStream({
|
|
|
5971
6193
|
(p) => "id" in p && "data" in p && p.id === chunk.id && p.type === chunk.type
|
|
5972
6194
|
);
|
|
5973
6195
|
const actualPartIdx = partIdx >= 0 ? partIdx : state.message.parts.length;
|
|
5974
|
-
await (0,
|
|
6196
|
+
await (0, import_provider_utils18.validateTypes)({
|
|
5975
6197
|
value: chunk.data,
|
|
5976
6198
|
schema: dataPartSchemas[chunk.type],
|
|
5977
6199
|
context: {
|
|
@@ -6142,13 +6364,13 @@ function createAsyncIterableStream(source) {
|
|
|
6142
6364
|
const reader = this.getReader();
|
|
6143
6365
|
let finished = false;
|
|
6144
6366
|
async function cleanup(cancelStream) {
|
|
6145
|
-
var
|
|
6367
|
+
var _a22;
|
|
6146
6368
|
if (finished)
|
|
6147
6369
|
return;
|
|
6148
6370
|
finished = true;
|
|
6149
6371
|
try {
|
|
6150
6372
|
if (cancelStream) {
|
|
6151
|
-
await ((
|
|
6373
|
+
await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
|
|
6152
6374
|
}
|
|
6153
6375
|
} finally {
|
|
6154
6376
|
try {
|
|
@@ -6313,7 +6535,7 @@ function createStitchableStream() {
|
|
|
6313
6535
|
}
|
|
6314
6536
|
|
|
6315
6537
|
// src/generate-text/run-tools-transformation.ts
|
|
6316
|
-
var
|
|
6538
|
+
var import_provider_utils19 = require("@ai-sdk/provider-utils");
|
|
6317
6539
|
function runToolsTransformation({
|
|
6318
6540
|
tools,
|
|
6319
6541
|
generatorStream,
|
|
@@ -6324,6 +6546,7 @@ function runToolsTransformation({
|
|
|
6324
6546
|
abortSignal,
|
|
6325
6547
|
repairToolCall,
|
|
6326
6548
|
experimental_context,
|
|
6549
|
+
toolApprovalSecret,
|
|
6327
6550
|
generateId: generateId2,
|
|
6328
6551
|
stepNumber,
|
|
6329
6552
|
model,
|
|
@@ -6427,7 +6650,7 @@ function runToolsTransformation({
|
|
|
6427
6650
|
toolCallId: toolCall.toolCallId,
|
|
6428
6651
|
toolName: toolCall.toolName,
|
|
6429
6652
|
input: toolCall.input,
|
|
6430
|
-
error: (0,
|
|
6653
|
+
error: (0, import_provider_utils19.getErrorMessage)(toolCall.error),
|
|
6431
6654
|
dynamic: true,
|
|
6432
6655
|
title: toolCall.title,
|
|
6433
6656
|
...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}
|
|
@@ -6453,10 +6676,19 @@ function runToolsTransformation({
|
|
|
6453
6676
|
messages,
|
|
6454
6677
|
experimental_context
|
|
6455
6678
|
})) {
|
|
6679
|
+
const approvalId = generateId2();
|
|
6680
|
+
const signature = await maybeSignApproval({
|
|
6681
|
+
secret: toolApprovalSecret,
|
|
6682
|
+
approvalId,
|
|
6683
|
+
toolCallId: toolCall.toolCallId,
|
|
6684
|
+
toolName: toolCall.toolName,
|
|
6685
|
+
input: toolCall.input
|
|
6686
|
+
});
|
|
6456
6687
|
toolResultsStreamController.enqueue({
|
|
6457
6688
|
type: "tool-approval-request",
|
|
6458
|
-
approvalId
|
|
6459
|
-
toolCall
|
|
6689
|
+
approvalId,
|
|
6690
|
+
toolCall,
|
|
6691
|
+
...signature != null ? { signature } : {}
|
|
6460
6692
|
});
|
|
6461
6693
|
break;
|
|
6462
6694
|
}
|
|
@@ -6565,7 +6797,7 @@ function runToolsTransformation({
|
|
|
6565
6797
|
}
|
|
6566
6798
|
|
|
6567
6799
|
// src/generate-text/stream-text.ts
|
|
6568
|
-
var originalGenerateId2 = (0,
|
|
6800
|
+
var originalGenerateId2 = (0, import_provider_utils20.createIdGenerator)({
|
|
6569
6801
|
prefix: "aitxt",
|
|
6570
6802
|
size: 24
|
|
6571
6803
|
});
|
|
@@ -6627,6 +6859,7 @@ function streamText({
|
|
|
6627
6859
|
experimental_onToolCallStart: onToolCallStart,
|
|
6628
6860
|
experimental_onToolCallFinish: onToolCallFinish,
|
|
6629
6861
|
experimental_context,
|
|
6862
|
+
experimental_toolApprovalSecret,
|
|
6630
6863
|
experimental_include: include,
|
|
6631
6864
|
_internal: { now: now2 = now, generateId: generateId2 = originalGenerateId2 } = {},
|
|
6632
6865
|
...settings
|
|
@@ -6681,6 +6914,7 @@ function streamText({
|
|
|
6681
6914
|
now: now2,
|
|
6682
6915
|
generateId: generateId2,
|
|
6683
6916
|
experimental_context,
|
|
6917
|
+
experimental_toolApprovalSecret,
|
|
6684
6918
|
download: download2,
|
|
6685
6919
|
include
|
|
6686
6920
|
});
|
|
@@ -6708,7 +6942,7 @@ function createOutputTransformStream(output) {
|
|
|
6708
6942
|
}
|
|
6709
6943
|
return new TransformStream({
|
|
6710
6944
|
async transform(chunk, controller) {
|
|
6711
|
-
var
|
|
6945
|
+
var _a22;
|
|
6712
6946
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
6713
6947
|
publishTextChunk({ controller });
|
|
6714
6948
|
}
|
|
@@ -6735,7 +6969,7 @@ function createOutputTransformStream(output) {
|
|
|
6735
6969
|
}
|
|
6736
6970
|
text2 += chunk.text;
|
|
6737
6971
|
textChunk += chunk.text;
|
|
6738
|
-
textProviderMetadata = (
|
|
6972
|
+
textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
|
|
6739
6973
|
const result = await output.parsePartialOutput({ text: text2 });
|
|
6740
6974
|
if (result !== void 0) {
|
|
6741
6975
|
const currentValue = typeof result.partial === "string" ? result.partial : JSON.stringify(result.partial);
|
|
@@ -6788,13 +7022,14 @@ var DefaultStreamTextResult = class {
|
|
|
6788
7022
|
onToolCallStart,
|
|
6789
7023
|
onToolCallFinish,
|
|
6790
7024
|
experimental_context,
|
|
7025
|
+
experimental_toolApprovalSecret,
|
|
6791
7026
|
download: download2,
|
|
6792
7027
|
include
|
|
6793
7028
|
}) {
|
|
6794
|
-
this._totalUsage = new
|
|
6795
|
-
this._finishReason = new
|
|
6796
|
-
this._rawFinishReason = new
|
|
6797
|
-
this._steps = new
|
|
7029
|
+
this._totalUsage = new import_provider_utils20.DelayedPromise();
|
|
7030
|
+
this._finishReason = new import_provider_utils20.DelayedPromise();
|
|
7031
|
+
this._rawFinishReason = new import_provider_utils20.DelayedPromise();
|
|
7032
|
+
this._steps = new import_provider_utils20.DelayedPromise();
|
|
6798
7033
|
this.outputSpecification = output;
|
|
6799
7034
|
this.includeRawChunks = includeRawChunks;
|
|
6800
7035
|
this.tools = tools;
|
|
@@ -6816,7 +7051,7 @@ var DefaultStreamTextResult = class {
|
|
|
6816
7051
|
let activeReasoningContent = {};
|
|
6817
7052
|
const eventProcessor = new TransformStream({
|
|
6818
7053
|
async transform(chunk, controller) {
|
|
6819
|
-
var
|
|
7054
|
+
var _a22, _b, _c, _d;
|
|
6820
7055
|
controller.enqueue(chunk);
|
|
6821
7056
|
const { part } = chunk;
|
|
6822
7057
|
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 +7085,7 @@ var DefaultStreamTextResult = class {
|
|
|
6850
7085
|
return;
|
|
6851
7086
|
}
|
|
6852
7087
|
activeText.text += part.text;
|
|
6853
|
-
activeText.providerMetadata = (
|
|
7088
|
+
activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
|
|
6854
7089
|
}
|
|
6855
7090
|
if (part.type === "text-end") {
|
|
6856
7091
|
const activeText = activeTextContent[part.id];
|
|
@@ -6976,7 +7211,7 @@ var DefaultStreamTextResult = class {
|
|
|
6976
7211
|
}
|
|
6977
7212
|
},
|
|
6978
7213
|
async flush(controller) {
|
|
6979
|
-
var
|
|
7214
|
+
var _a22, _b, _c, _d, _e, _f, _g;
|
|
6980
7215
|
try {
|
|
6981
7216
|
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
6982
7217
|
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
@@ -7040,15 +7275,15 @@ var DefaultStreamTextResult = class {
|
|
|
7040
7275
|
},
|
|
7041
7276
|
"ai.response.toolCalls": {
|
|
7042
7277
|
output: () => {
|
|
7043
|
-
var
|
|
7044
|
-
return ((
|
|
7278
|
+
var _a23;
|
|
7279
|
+
return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
7045
7280
|
}
|
|
7046
7281
|
},
|
|
7047
7282
|
"ai.response.providerMetadata": JSON.stringify(
|
|
7048
7283
|
finalStep.providerMetadata
|
|
7049
7284
|
),
|
|
7050
7285
|
"ai.usage.inputTokens": totalUsage.inputTokens,
|
|
7051
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7286
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
|
|
7052
7287
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
|
|
7053
7288
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
|
|
7054
7289
|
"ai.usage.outputTokens": totalUsage.outputTokens,
|
|
@@ -7083,7 +7318,7 @@ var DefaultStreamTextResult = class {
|
|
|
7083
7318
|
// The `reason` is usually of type DOMException, but it can also be of any type,
|
|
7084
7319
|
// so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.
|
|
7085
7320
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason
|
|
7086
|
-
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0,
|
|
7321
|
+
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider29.getErrorMessage)(abortSignal.reason) } : {}
|
|
7087
7322
|
});
|
|
7088
7323
|
controller.close();
|
|
7089
7324
|
}
|
|
@@ -7099,7 +7334,7 @@ var DefaultStreamTextResult = class {
|
|
|
7099
7334
|
}
|
|
7100
7335
|
controller.enqueue(value);
|
|
7101
7336
|
} catch (error) {
|
|
7102
|
-
if ((0,
|
|
7337
|
+
if ((0, import_provider_utils20.isAbortError)(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {
|
|
7103
7338
|
abort();
|
|
7104
7339
|
} else {
|
|
7105
7340
|
controller.error(error);
|
|
@@ -7199,12 +7434,24 @@ var DefaultStreamTextResult = class {
|
|
|
7199
7434
|
const initialResponseMessages = [];
|
|
7200
7435
|
const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
|
|
7201
7436
|
if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
|
|
7202
|
-
const
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7437
|
+
const {
|
|
7438
|
+
approvedToolApprovals: localApprovedToolApprovals,
|
|
7439
|
+
deniedToolApprovals: revalidationDeniedToolApprovals
|
|
7440
|
+
} = await validateApprovedToolApprovals({
|
|
7441
|
+
approvedToolApprovals: approvedToolApprovals.filter(
|
|
7442
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7443
|
+
),
|
|
7444
|
+
tools,
|
|
7445
|
+
messages: initialMessages,
|
|
7446
|
+
experimental_context,
|
|
7447
|
+
toolApprovalSecret: experimental_toolApprovalSecret
|
|
7448
|
+
});
|
|
7449
|
+
const localDeniedToolApprovals = [
|
|
7450
|
+
...deniedToolApprovals.filter(
|
|
7451
|
+
(toolApproval) => !toolApproval.toolCall.providerExecuted
|
|
7452
|
+
),
|
|
7453
|
+
...revalidationDeniedToolApprovals
|
|
7454
|
+
];
|
|
7208
7455
|
const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
|
|
7209
7456
|
(toolApproval) => toolApproval.toolCall.providerExecuted
|
|
7210
7457
|
);
|
|
@@ -7299,7 +7546,7 @@ var DefaultStreamTextResult = class {
|
|
|
7299
7546
|
responseMessages,
|
|
7300
7547
|
usage
|
|
7301
7548
|
}) {
|
|
7302
|
-
var
|
|
7549
|
+
var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7303
7550
|
const includeRawChunks2 = self.includeRawChunks;
|
|
7304
7551
|
const stepTimeoutId = stepTimeoutMs != null ? setTimeout(() => stepAbortController.abort(), stepTimeoutMs) : void 0;
|
|
7305
7552
|
let chunkTimeoutId = void 0;
|
|
@@ -7326,7 +7573,7 @@ var DefaultStreamTextResult = class {
|
|
|
7326
7573
|
}
|
|
7327
7574
|
}
|
|
7328
7575
|
try {
|
|
7329
|
-
stepFinish = new
|
|
7576
|
+
stepFinish = new import_provider_utils20.DelayedPromise();
|
|
7330
7577
|
const stepInputMessages = [...initialMessages, ...responseMessages];
|
|
7331
7578
|
const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
|
|
7332
7579
|
model,
|
|
@@ -7336,7 +7583,7 @@ var DefaultStreamTextResult = class {
|
|
|
7336
7583
|
experimental_context
|
|
7337
7584
|
}));
|
|
7338
7585
|
const stepModel = resolveLanguageModel(
|
|
7339
|
-
(
|
|
7586
|
+
(_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
|
|
7340
7587
|
);
|
|
7341
7588
|
const stepModelInfo = {
|
|
7342
7589
|
provider: stepModel.provider,
|
|
@@ -7459,6 +7706,7 @@ var DefaultStreamTextResult = class {
|
|
|
7459
7706
|
repairToolCall,
|
|
7460
7707
|
abortSignal,
|
|
7461
7708
|
experimental_context,
|
|
7709
|
+
toolApprovalSecret: experimental_toolApprovalSecret,
|
|
7462
7710
|
generateId: generateId2,
|
|
7463
7711
|
stepNumber: recordedSteps.length,
|
|
7464
7712
|
model: stepModelInfo,
|
|
@@ -7493,7 +7741,7 @@ var DefaultStreamTextResult = class {
|
|
|
7493
7741
|
streamWithToolResults.pipeThrough(
|
|
7494
7742
|
new TransformStream({
|
|
7495
7743
|
async transform(chunk, controller) {
|
|
7496
|
-
var
|
|
7744
|
+
var _a23, _b2, _c2, _d2, _e2;
|
|
7497
7745
|
resetChunkTimeout();
|
|
7498
7746
|
if (chunk.type === "stream-start") {
|
|
7499
7747
|
warnings = chunk.warnings;
|
|
@@ -7570,7 +7818,7 @@ var DefaultStreamTextResult = class {
|
|
|
7570
7818
|
}
|
|
7571
7819
|
case "response-metadata": {
|
|
7572
7820
|
stepResponse = {
|
|
7573
|
-
id: (
|
|
7821
|
+
id: (_a23 = chunk.id) != null ? _a23 : stepResponse.id,
|
|
7574
7822
|
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
|
7575
7823
|
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
|
7576
7824
|
};
|
|
@@ -7658,7 +7906,7 @@ var DefaultStreamTextResult = class {
|
|
|
7658
7906
|
},
|
|
7659
7907
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
7660
7908
|
async flush(controller) {
|
|
7661
|
-
var
|
|
7909
|
+
var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
7662
7910
|
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
7663
7911
|
controller.enqueue({
|
|
7664
7912
|
type: "error",
|
|
@@ -7686,7 +7934,7 @@ var DefaultStreamTextResult = class {
|
|
|
7686
7934
|
"ai.response.model": stepResponse.modelId,
|
|
7687
7935
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
|
7688
7936
|
"ai.usage.inputTokens": stepUsage.inputTokens,
|
|
7689
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7937
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
7690
7938
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
|
|
7691
7939
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
|
|
7692
7940
|
"ai.usage.outputTokens": stepUsage.outputTokens,
|
|
@@ -7960,19 +8208,19 @@ var DefaultStreamTextResult = class {
|
|
|
7960
8208
|
this._steps.reject(error);
|
|
7961
8209
|
}
|
|
7962
8210
|
async consumeStream(options) {
|
|
7963
|
-
var
|
|
8211
|
+
var _a22;
|
|
7964
8212
|
try {
|
|
7965
8213
|
await consumeStream({
|
|
7966
8214
|
stream: this.fullStream,
|
|
7967
8215
|
onError: (error) => {
|
|
7968
|
-
var
|
|
8216
|
+
var _a23;
|
|
7969
8217
|
this.rejectResultPromises(error);
|
|
7970
|
-
(
|
|
8218
|
+
(_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
|
|
7971
8219
|
}
|
|
7972
8220
|
});
|
|
7973
8221
|
} catch (error) {
|
|
7974
8222
|
this.rejectResultPromises(error);
|
|
7975
|
-
(
|
|
8223
|
+
(_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
|
|
7976
8224
|
}
|
|
7977
8225
|
}
|
|
7978
8226
|
get experimental_partialOutputStream() {
|
|
@@ -7992,10 +8240,10 @@ var DefaultStreamTextResult = class {
|
|
|
7992
8240
|
);
|
|
7993
8241
|
}
|
|
7994
8242
|
get elementStream() {
|
|
7995
|
-
var
|
|
7996
|
-
const transform = (
|
|
8243
|
+
var _a22, _b, _c;
|
|
8244
|
+
const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
|
|
7997
8245
|
if (transform == null) {
|
|
7998
|
-
throw new
|
|
8246
|
+
throw new import_provider29.UnsupportedFunctionalityError({
|
|
7999
8247
|
functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
|
|
8000
8248
|
});
|
|
8001
8249
|
}
|
|
@@ -8003,8 +8251,8 @@ var DefaultStreamTextResult = class {
|
|
|
8003
8251
|
}
|
|
8004
8252
|
get output() {
|
|
8005
8253
|
return this.finalStep.then((step) => {
|
|
8006
|
-
var
|
|
8007
|
-
const output = (
|
|
8254
|
+
var _a22;
|
|
8255
|
+
const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
|
|
8008
8256
|
return output.parseCompleteOutput(
|
|
8009
8257
|
{ text: step.text },
|
|
8010
8258
|
{
|
|
@@ -8024,15 +8272,15 @@ var DefaultStreamTextResult = class {
|
|
|
8024
8272
|
sendSources = false,
|
|
8025
8273
|
sendStart = true,
|
|
8026
8274
|
sendFinish = true,
|
|
8027
|
-
onError =
|
|
8275
|
+
onError = import_provider29.getErrorMessage
|
|
8028
8276
|
} = {}) {
|
|
8029
8277
|
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
|
8030
8278
|
originalMessages,
|
|
8031
8279
|
responseMessageId: generateMessageId
|
|
8032
8280
|
}) : void 0;
|
|
8033
8281
|
const isDynamic = (part) => {
|
|
8034
|
-
var
|
|
8035
|
-
const tool2 = (
|
|
8282
|
+
var _a22;
|
|
8283
|
+
const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
|
|
8036
8284
|
if (tool2 == null) {
|
|
8037
8285
|
return part.dynamic;
|
|
8038
8286
|
}
|
|
@@ -8178,7 +8426,8 @@ var DefaultStreamTextResult = class {
|
|
|
8178
8426
|
controller.enqueue({
|
|
8179
8427
|
type: "tool-approval-request",
|
|
8180
8428
|
approvalId: part.approvalId,
|
|
8181
|
-
toolCallId: part.toolCall.toolCallId
|
|
8429
|
+
toolCallId: part.toolCall.toolCallId,
|
|
8430
|
+
...part.signature != null ? { signature: part.signature } : {}
|
|
8182
8431
|
});
|
|
8183
8432
|
break;
|
|
8184
8433
|
}
|
|
@@ -8374,9 +8623,9 @@ var ToolLoopAgent = class {
|
|
|
8374
8623
|
return this.settings.tools;
|
|
8375
8624
|
}
|
|
8376
8625
|
async prepareCall(options) {
|
|
8377
|
-
var
|
|
8626
|
+
var _a22, _b, _c, _d;
|
|
8378
8627
|
if (this.settings.callOptionsSchema != null && options.options !== void 0) {
|
|
8379
|
-
const validatedOptions = await (0,
|
|
8628
|
+
const validatedOptions = await (0, import_provider_utils21.validateTypes)({
|
|
8380
8629
|
value: options.options,
|
|
8381
8630
|
schema: this.settings.callOptionsSchema,
|
|
8382
8631
|
context: { field: "options" }
|
|
@@ -8386,7 +8635,7 @@ var ToolLoopAgent = class {
|
|
|
8386
8635
|
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
|
|
8387
8636
|
const baseCallArgs = {
|
|
8388
8637
|
...settingsWithoutCallback,
|
|
8389
|
-
stopWhen: (
|
|
8638
|
+
stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
|
|
8390
8639
|
...options
|
|
8391
8640
|
};
|
|
8392
8641
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
|
|
@@ -8458,14 +8707,14 @@ var ToolLoopAgent = class {
|
|
|
8458
8707
|
};
|
|
8459
8708
|
|
|
8460
8709
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
8461
|
-
var
|
|
8710
|
+
var import_provider_utils22 = require("@ai-sdk/provider-utils");
|
|
8462
8711
|
function createUIMessageStream({
|
|
8463
8712
|
execute,
|
|
8464
|
-
onError =
|
|
8713
|
+
onError = import_provider_utils22.getErrorMessage,
|
|
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,23 +10277,25 @@ 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
|
})
|
|
10027
10287
|
};
|
|
10028
10288
|
}
|
|
10029
10289
|
const inputArray = value.elements;
|
|
10290
|
+
const resultArray = [];
|
|
10030
10291
|
for (const element of inputArray) {
|
|
10031
|
-
const result = await (0,
|
|
10292
|
+
const result = await (0, import_provider_utils28.safeValidateTypes)({ value: element, schema });
|
|
10032
10293
|
if (!result.success) {
|
|
10033
10294
|
return result;
|
|
10034
10295
|
}
|
|
10296
|
+
resultArray.push(result.value);
|
|
10035
10297
|
}
|
|
10036
|
-
return { success: true, value:
|
|
10298
|
+
return { success: true, value: resultArray };
|
|
10037
10299
|
},
|
|
10038
10300
|
createElementStream(originalStream) {
|
|
10039
10301
|
let publishedElements = 0;
|
|
@@ -10083,10 +10345,10 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10083
10345
|
additionalProperties: false
|
|
10084
10346
|
}),
|
|
10085
10347
|
async validateFinalResult(value) {
|
|
10086
|
-
if (!(0,
|
|
10348
|
+
if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10087
10349
|
return {
|
|
10088
10350
|
success: false,
|
|
10089
|
-
error: new
|
|
10351
|
+
error: new import_provider31.TypeValidationError({
|
|
10090
10352
|
value,
|
|
10091
10353
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10092
10354
|
})
|
|
@@ -10095,17 +10357,17 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10095
10357
|
const result = value.result;
|
|
10096
10358
|
return enumValues.includes(result) ? { success: true, value: result } : {
|
|
10097
10359
|
success: false,
|
|
10098
|
-
error: new
|
|
10360
|
+
error: new import_provider31.TypeValidationError({
|
|
10099
10361
|
value,
|
|
10100
10362
|
cause: "value must be a string in the enum"
|
|
10101
10363
|
})
|
|
10102
10364
|
};
|
|
10103
10365
|
},
|
|
10104
10366
|
async validatePartialResult({ value, textDelta }) {
|
|
10105
|
-
if (!(0,
|
|
10367
|
+
if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10106
10368
|
return {
|
|
10107
10369
|
success: false,
|
|
10108
|
-
error: new
|
|
10370
|
+
error: new import_provider31.TypeValidationError({
|
|
10109
10371
|
value,
|
|
10110
10372
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10111
10373
|
})
|
|
@@ -10118,7 +10380,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10118
10380
|
if (value.result.length === 0 || possibleEnumValues.length === 0) {
|
|
10119
10381
|
return {
|
|
10120
10382
|
success: false,
|
|
10121
|
-
error: new
|
|
10383
|
+
error: new import_provider31.TypeValidationError({
|
|
10122
10384
|
value,
|
|
10123
10385
|
cause: "value must be a string in the enum"
|
|
10124
10386
|
})
|
|
@@ -10133,7 +10395,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10133
10395
|
};
|
|
10134
10396
|
},
|
|
10135
10397
|
createElementStream() {
|
|
10136
|
-
throw new
|
|
10398
|
+
throw new import_provider31.UnsupportedFunctionalityError({
|
|
10137
10399
|
functionality: "element streams in enum mode"
|
|
10138
10400
|
});
|
|
10139
10401
|
}
|
|
@@ -10146,9 +10408,9 @@ function getOutputStrategy({
|
|
|
10146
10408
|
}) {
|
|
10147
10409
|
switch (output) {
|
|
10148
10410
|
case "object":
|
|
10149
|
-
return objectOutputStrategy((0,
|
|
10411
|
+
return objectOutputStrategy((0, import_provider_utils28.asSchema)(schema));
|
|
10150
10412
|
case "array":
|
|
10151
|
-
return arrayOutputStrategy((0,
|
|
10413
|
+
return arrayOutputStrategy((0, import_provider_utils28.asSchema)(schema));
|
|
10152
10414
|
case "enum":
|
|
10153
10415
|
return enumOutputStrategy(enumValues);
|
|
10154
10416
|
case "no-schema":
|
|
@@ -10161,10 +10423,10 @@ function getOutputStrategy({
|
|
|
10161
10423
|
}
|
|
10162
10424
|
|
|
10163
10425
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
10164
|
-
var
|
|
10165
|
-
var
|
|
10426
|
+
var import_provider32 = require("@ai-sdk/provider");
|
|
10427
|
+
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
10166
10428
|
async function parseAndValidateObjectResult(result, outputStrategy, context2) {
|
|
10167
|
-
const parseResult = await (0,
|
|
10429
|
+
const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: result });
|
|
10168
10430
|
if (!parseResult.success) {
|
|
10169
10431
|
throw new NoObjectGeneratedError({
|
|
10170
10432
|
message: "No object generated: could not parse the response.",
|
|
@@ -10199,7 +10461,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
|
|
|
10199
10461
|
try {
|
|
10200
10462
|
return await parseAndValidateObjectResult(result, outputStrategy, context2);
|
|
10201
10463
|
} catch (error) {
|
|
10202
|
-
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))) {
|
|
10203
10465
|
const repairedText = await repairText({
|
|
10204
10466
|
text: result,
|
|
10205
10467
|
error: error.cause
|
|
@@ -10336,7 +10598,7 @@ function validateObjectGenerationInput({
|
|
|
10336
10598
|
}
|
|
10337
10599
|
|
|
10338
10600
|
// src/generate-object/generate-object.ts
|
|
10339
|
-
var originalGenerateId3 = (0,
|
|
10601
|
+
var originalGenerateId3 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
10340
10602
|
async function generateObject(options) {
|
|
10341
10603
|
const {
|
|
10342
10604
|
model: modelArg,
|
|
@@ -10382,7 +10644,7 @@ async function generateObject(options) {
|
|
|
10382
10644
|
enumValues
|
|
10383
10645
|
});
|
|
10384
10646
|
const callSettings = prepareCallSettings(settings);
|
|
10385
|
-
const headersWithUserAgent = (0,
|
|
10647
|
+
const headersWithUserAgent = (0, import_provider_utils30.withUserAgentSuffix)(
|
|
10386
10648
|
headers != null ? headers : {},
|
|
10387
10649
|
`ai/${VERSION}`
|
|
10388
10650
|
);
|
|
@@ -10417,7 +10679,7 @@ async function generateObject(options) {
|
|
|
10417
10679
|
}),
|
|
10418
10680
|
tracer,
|
|
10419
10681
|
fn: async (span) => {
|
|
10420
|
-
var
|
|
10682
|
+
var _a22;
|
|
10421
10683
|
let result;
|
|
10422
10684
|
let finishReason;
|
|
10423
10685
|
let usage;
|
|
@@ -10464,7 +10726,7 @@ async function generateObject(options) {
|
|
|
10464
10726
|
}),
|
|
10465
10727
|
tracer,
|
|
10466
10728
|
fn: async (span2) => {
|
|
10467
|
-
var
|
|
10729
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
10468
10730
|
const result2 = await model.doGenerate({
|
|
10469
10731
|
responseFormat: {
|
|
10470
10732
|
type: "json",
|
|
@@ -10479,7 +10741,7 @@ async function generateObject(options) {
|
|
|
10479
10741
|
headers: headersWithUserAgent
|
|
10480
10742
|
});
|
|
10481
10743
|
const responseData = {
|
|
10482
|
-
id: (_b = (
|
|
10744
|
+
id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
|
|
10483
10745
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
10484
10746
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
10485
10747
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -10535,7 +10797,7 @@ async function generateObject(options) {
|
|
|
10535
10797
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
10536
10798
|
warnings = generateResult.warnings;
|
|
10537
10799
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
10538
|
-
request = (
|
|
10800
|
+
request = (_a22 = generateResult.request) != null ? _a22 : {};
|
|
10539
10801
|
response = generateResult.responseData;
|
|
10540
10802
|
reasoning = generateResult.reasoning;
|
|
10541
10803
|
logWarnings({
|
|
@@ -10598,9 +10860,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
10598
10860
|
this.reasoning = options.reasoning;
|
|
10599
10861
|
}
|
|
10600
10862
|
toJsonResponse(init) {
|
|
10601
|
-
var
|
|
10863
|
+
var _a22;
|
|
10602
10864
|
return new Response(JSON.stringify(this.object), {
|
|
10603
|
-
status: (
|
|
10865
|
+
status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
|
|
10604
10866
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
10605
10867
|
"content-type": "application/json; charset=utf-8"
|
|
10606
10868
|
})
|
|
@@ -10609,7 +10871,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
10609
10871
|
};
|
|
10610
10872
|
|
|
10611
10873
|
// src/generate-object/stream-object.ts
|
|
10612
|
-
var
|
|
10874
|
+
var import_provider_utils32 = require("@ai-sdk/provider-utils");
|
|
10613
10875
|
|
|
10614
10876
|
// src/util/cosine-similarity.ts
|
|
10615
10877
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -10724,15 +10986,15 @@ var SerialJobExecutor = class {
|
|
|
10724
10986
|
};
|
|
10725
10987
|
|
|
10726
10988
|
// src/util/simulate-readable-stream.ts
|
|
10727
|
-
var
|
|
10989
|
+
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
10728
10990
|
function simulateReadableStream({
|
|
10729
10991
|
chunks,
|
|
10730
10992
|
initialDelayInMs = 0,
|
|
10731
10993
|
chunkDelayInMs = 0,
|
|
10732
10994
|
_internal
|
|
10733
10995
|
}) {
|
|
10734
|
-
var
|
|
10735
|
-
const delay2 = (
|
|
10996
|
+
var _a22;
|
|
10997
|
+
const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : import_provider_utils31.delay;
|
|
10736
10998
|
let index = 0;
|
|
10737
10999
|
return new ReadableStream({
|
|
10738
11000
|
async pull(controller) {
|
|
@@ -10747,7 +11009,7 @@ function simulateReadableStream({
|
|
|
10747
11009
|
}
|
|
10748
11010
|
|
|
10749
11011
|
// src/generate-object/stream-object.ts
|
|
10750
|
-
var originalGenerateId4 = (0,
|
|
11012
|
+
var originalGenerateId4 = (0, import_provider_utils32.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
10751
11013
|
function streamObject(options) {
|
|
10752
11014
|
const {
|
|
10753
11015
|
model,
|
|
@@ -10840,13 +11102,13 @@ var DefaultStreamObjectResult = class {
|
|
|
10840
11102
|
currentDate,
|
|
10841
11103
|
now: now2
|
|
10842
11104
|
}) {
|
|
10843
|
-
this._object = new
|
|
10844
|
-
this._usage = new
|
|
10845
|
-
this._providerMetadata = new
|
|
10846
|
-
this._warnings = new
|
|
10847
|
-
this._request = new
|
|
10848
|
-
this._response = new
|
|
10849
|
-
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();
|
|
10850
11112
|
const model = resolveLanguageModel(modelArg);
|
|
10851
11113
|
const { maxRetries, retry } = prepareRetries({
|
|
10852
11114
|
maxRetries: maxRetriesArg,
|
|
@@ -10994,7 +11256,7 @@ var DefaultStreamObjectResult = class {
|
|
|
10994
11256
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
10995
11257
|
new TransformStream({
|
|
10996
11258
|
async transform(chunk, controller) {
|
|
10997
|
-
var
|
|
11259
|
+
var _a22, _b, _c;
|
|
10998
11260
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
10999
11261
|
warnings = chunk.warnings;
|
|
11000
11262
|
return;
|
|
@@ -11044,7 +11306,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11044
11306
|
switch (chunk.type) {
|
|
11045
11307
|
case "response-metadata": {
|
|
11046
11308
|
fullResponse = {
|
|
11047
|
-
id: (
|
|
11309
|
+
id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
|
|
11048
11310
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11049
11311
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11050
11312
|
};
|
|
@@ -11275,7 +11537,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11275
11537
|
};
|
|
11276
11538
|
|
|
11277
11539
|
// src/generate-speech/generate-speech.ts
|
|
11278
|
-
var
|
|
11540
|
+
var import_provider_utils33 = require("@ai-sdk/provider-utils");
|
|
11279
11541
|
|
|
11280
11542
|
// src/generate-speech/generated-audio-file.ts
|
|
11281
11543
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -11316,12 +11578,12 @@ async function generateSpeech({
|
|
|
11316
11578
|
abortSignal,
|
|
11317
11579
|
headers
|
|
11318
11580
|
}) {
|
|
11319
|
-
var
|
|
11581
|
+
var _a22;
|
|
11320
11582
|
const resolvedModel = resolveSpeechModel(model);
|
|
11321
11583
|
if (!resolvedModel) {
|
|
11322
11584
|
throw new Error("Model could not be resolved");
|
|
11323
11585
|
}
|
|
11324
|
-
const headersWithUserAgent = (0,
|
|
11586
|
+
const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
|
|
11325
11587
|
headers != null ? headers : {},
|
|
11326
11588
|
`ai/${VERSION}`
|
|
11327
11589
|
);
|
|
@@ -11353,10 +11615,10 @@ async function generateSpeech({
|
|
|
11353
11615
|
return new DefaultSpeechResult({
|
|
11354
11616
|
audio: new DefaultGeneratedAudioFile({
|
|
11355
11617
|
data: result.audio,
|
|
11356
|
-
mediaType: (
|
|
11618
|
+
mediaType: (_a22 = detectMediaType({
|
|
11357
11619
|
data: result.audio,
|
|
11358
11620
|
signatures: audioMediaTypeSignatures
|
|
11359
|
-
})) != null ?
|
|
11621
|
+
})) != null ? _a22 : "audio/mp3"
|
|
11360
11622
|
}),
|
|
11361
11623
|
warnings: result.warnings,
|
|
11362
11624
|
responses: [result.response],
|
|
@@ -11365,11 +11627,11 @@ async function generateSpeech({
|
|
|
11365
11627
|
}
|
|
11366
11628
|
var DefaultSpeechResult = class {
|
|
11367
11629
|
constructor(options) {
|
|
11368
|
-
var
|
|
11630
|
+
var _a22;
|
|
11369
11631
|
this.audio = options.audio;
|
|
11370
11632
|
this.warnings = options.warnings;
|
|
11371
11633
|
this.responses = options.responses;
|
|
11372
|
-
this.providerMetadata = (
|
|
11634
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
11373
11635
|
}
|
|
11374
11636
|
};
|
|
11375
11637
|
|
|
@@ -11453,8 +11715,8 @@ function pruneMessages({
|
|
|
11453
11715
|
}
|
|
11454
11716
|
|
|
11455
11717
|
// src/generate-text/smooth-stream.ts
|
|
11456
|
-
var
|
|
11457
|
-
var
|
|
11718
|
+
var import_provider_utils34 = require("@ai-sdk/provider-utils");
|
|
11719
|
+
var import_provider33 = require("@ai-sdk/provider");
|
|
11458
11720
|
var CHUNKING_REGEXPS = {
|
|
11459
11721
|
word: /\S+\s+/m,
|
|
11460
11722
|
line: /\n+/m
|
|
@@ -11462,7 +11724,7 @@ var CHUNKING_REGEXPS = {
|
|
|
11462
11724
|
function smoothStream({
|
|
11463
11725
|
delayInMs = 10,
|
|
11464
11726
|
chunking = "word",
|
|
11465
|
-
_internal: { delay: delay2 =
|
|
11727
|
+
_internal: { delay: delay2 = import_provider_utils34.delay } = {}
|
|
11466
11728
|
} = {}) {
|
|
11467
11729
|
let detectChunk;
|
|
11468
11730
|
if (chunking != null && typeof chunking === "object" && "segment" in chunking && typeof chunking.segment === "function") {
|
|
@@ -11493,7 +11755,7 @@ function smoothStream({
|
|
|
11493
11755
|
} else {
|
|
11494
11756
|
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking instanceof RegExp ? chunking : void 0;
|
|
11495
11757
|
if (chunkingRegex == null) {
|
|
11496
|
-
throw new
|
|
11758
|
+
throw new import_provider33.InvalidArgumentError({
|
|
11497
11759
|
argument: "chunking",
|
|
11498
11760
|
message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`
|
|
11499
11761
|
});
|
|
@@ -11551,7 +11813,7 @@ function smoothStream({
|
|
|
11551
11813
|
}
|
|
11552
11814
|
|
|
11553
11815
|
// src/generate-video/generate-video.ts
|
|
11554
|
-
var
|
|
11816
|
+
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
11555
11817
|
var defaultDownload = createDownload();
|
|
11556
11818
|
async function experimental_generateVideo({
|
|
11557
11819
|
model: modelArg,
|
|
@@ -11569,9 +11831,9 @@ async function experimental_generateVideo({
|
|
|
11569
11831
|
headers,
|
|
11570
11832
|
download: downloadFn = defaultDownload
|
|
11571
11833
|
}) {
|
|
11572
|
-
var
|
|
11834
|
+
var _a22;
|
|
11573
11835
|
const model = resolveVideoModel(modelArg);
|
|
11574
|
-
const headersWithUserAgent = (0,
|
|
11836
|
+
const headersWithUserAgent = (0, import_provider_utils35.withUserAgentSuffix)(
|
|
11575
11837
|
headers != null ? headers : {},
|
|
11576
11838
|
`ai/${VERSION}`
|
|
11577
11839
|
);
|
|
@@ -11580,7 +11842,7 @@ async function experimental_generateVideo({
|
|
|
11580
11842
|
abortSignal
|
|
11581
11843
|
});
|
|
11582
11844
|
const { prompt, image } = normalizePrompt2(promptArg);
|
|
11583
|
-
const maxVideosPerCallWithDefault = (
|
|
11845
|
+
const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
|
|
11584
11846
|
const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
|
|
11585
11847
|
const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
|
|
11586
11848
|
const remaining = n - index * maxVideosPerCallWithDefault;
|
|
@@ -11702,7 +11964,7 @@ async function experimental_generateVideo({
|
|
|
11702
11964
|
};
|
|
11703
11965
|
}
|
|
11704
11966
|
function normalizePrompt2(promptArg) {
|
|
11705
|
-
var
|
|
11967
|
+
var _a22, _b;
|
|
11706
11968
|
if (typeof promptArg === "string") {
|
|
11707
11969
|
return {
|
|
11708
11970
|
prompt: promptArg,
|
|
@@ -11723,14 +11985,14 @@ function normalizePrompt2(promptArg) {
|
|
|
11723
11985
|
image = {
|
|
11724
11986
|
type: "file",
|
|
11725
11987
|
mediaType: mediaType != null ? mediaType : "image/png",
|
|
11726
|
-
data: (0,
|
|
11988
|
+
data: (0, import_provider_utils35.convertBase64ToUint8Array)(base64Content != null ? base64Content : "")
|
|
11727
11989
|
};
|
|
11728
11990
|
} else {
|
|
11729
|
-
const bytes = (0,
|
|
11730
|
-
const mediaType = (
|
|
11991
|
+
const bytes = (0, import_provider_utils35.convertBase64ToUint8Array)(dataContent);
|
|
11992
|
+
const mediaType = (_a22 = detectMediaType({
|
|
11731
11993
|
data: bytes,
|
|
11732
11994
|
signatures: imageMediaTypeSignatures
|
|
11733
|
-
})) != null ?
|
|
11995
|
+
})) != null ? _a22 : "image/png";
|
|
11734
11996
|
image = {
|
|
11735
11997
|
type: "file",
|
|
11736
11998
|
mediaType,
|
|
@@ -11790,8 +12052,8 @@ function defaultTransform(text2) {
|
|
|
11790
12052
|
return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
|
|
11791
12053
|
}
|
|
11792
12054
|
function extractJsonMiddleware(options) {
|
|
11793
|
-
var
|
|
11794
|
-
const transform = (
|
|
12055
|
+
var _a22;
|
|
12056
|
+
const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
|
|
11795
12057
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
11796
12058
|
return {
|
|
11797
12059
|
specificationVersion: "v3",
|
|
@@ -12165,13 +12427,13 @@ function addToolInputExamplesMiddleware({
|
|
|
12165
12427
|
return {
|
|
12166
12428
|
specificationVersion: "v3",
|
|
12167
12429
|
transformParams: async ({ params }) => {
|
|
12168
|
-
var
|
|
12169
|
-
if (!((
|
|
12430
|
+
var _a22;
|
|
12431
|
+
if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
|
|
12170
12432
|
return params;
|
|
12171
12433
|
}
|
|
12172
12434
|
const transformedTools = params.tools.map((tool2) => {
|
|
12173
|
-
var
|
|
12174
|
-
if (tool2.type !== "function" || !((
|
|
12435
|
+
var _a23;
|
|
12436
|
+
if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
|
|
12175
12437
|
return tool2;
|
|
12176
12438
|
}
|
|
12177
12439
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -12218,7 +12480,7 @@ var doWrap = ({
|
|
|
12218
12480
|
modelId,
|
|
12219
12481
|
providerId
|
|
12220
12482
|
}) => {
|
|
12221
|
-
var
|
|
12483
|
+
var _a22, _b, _c;
|
|
12222
12484
|
async function doTransform({
|
|
12223
12485
|
params,
|
|
12224
12486
|
type
|
|
@@ -12227,7 +12489,7 @@ var doWrap = ({
|
|
|
12227
12489
|
}
|
|
12228
12490
|
return {
|
|
12229
12491
|
specificationVersion: "v3",
|
|
12230
|
-
provider: (
|
|
12492
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12231
12493
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12232
12494
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
12233
12495
|
async doGenerate(params) {
|
|
@@ -12274,7 +12536,7 @@ var doWrap2 = ({
|
|
|
12274
12536
|
modelId,
|
|
12275
12537
|
providerId
|
|
12276
12538
|
}) => {
|
|
12277
|
-
var
|
|
12539
|
+
var _a22, _b, _c, _d;
|
|
12278
12540
|
async function doTransform({
|
|
12279
12541
|
params
|
|
12280
12542
|
}) {
|
|
@@ -12282,7 +12544,7 @@ var doWrap2 = ({
|
|
|
12282
12544
|
}
|
|
12283
12545
|
return {
|
|
12284
12546
|
specificationVersion: "v3",
|
|
12285
|
-
provider: (
|
|
12547
|
+
provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
|
|
12286
12548
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
12287
12549
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
12288
12550
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -12321,11 +12583,11 @@ var doWrap3 = ({
|
|
|
12321
12583
|
modelId,
|
|
12322
12584
|
providerId
|
|
12323
12585
|
}) => {
|
|
12324
|
-
var
|
|
12586
|
+
var _a22, _b, _c;
|
|
12325
12587
|
async function doTransform({ params }) {
|
|
12326
12588
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
12327
12589
|
}
|
|
12328
|
-
const maxImagesPerCallRaw = (
|
|
12590
|
+
const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
|
|
12329
12591
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
12330
12592
|
return {
|
|
12331
12593
|
specificationVersion: "v3",
|
|
@@ -12390,7 +12652,7 @@ function wrapProvider({
|
|
|
12390
12652
|
}
|
|
12391
12653
|
|
|
12392
12654
|
// src/registry/custom-provider.ts
|
|
12393
|
-
var
|
|
12655
|
+
var import_provider34 = require("@ai-sdk/provider");
|
|
12394
12656
|
function customProvider({
|
|
12395
12657
|
languageModels,
|
|
12396
12658
|
embeddingModels,
|
|
@@ -12411,7 +12673,7 @@ function customProvider({
|
|
|
12411
12673
|
if (fallbackProvider) {
|
|
12412
12674
|
return fallbackProvider.languageModel(modelId);
|
|
12413
12675
|
}
|
|
12414
|
-
throw new
|
|
12676
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
12415
12677
|
},
|
|
12416
12678
|
embeddingModel(modelId) {
|
|
12417
12679
|
if (embeddingModels != null && modelId in embeddingModels) {
|
|
@@ -12420,7 +12682,7 @@ function customProvider({
|
|
|
12420
12682
|
if (fallbackProvider) {
|
|
12421
12683
|
return fallbackProvider.embeddingModel(modelId);
|
|
12422
12684
|
}
|
|
12423
|
-
throw new
|
|
12685
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
12424
12686
|
},
|
|
12425
12687
|
imageModel(modelId) {
|
|
12426
12688
|
if (imageModels != null && modelId in imageModels) {
|
|
@@ -12429,7 +12691,7 @@ function customProvider({
|
|
|
12429
12691
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
|
12430
12692
|
return fallbackProvider.imageModel(modelId);
|
|
12431
12693
|
}
|
|
12432
|
-
throw new
|
|
12694
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
12433
12695
|
},
|
|
12434
12696
|
transcriptionModel(modelId) {
|
|
12435
12697
|
if (transcriptionModels != null && modelId in transcriptionModels) {
|
|
@@ -12438,7 +12700,7 @@ function customProvider({
|
|
|
12438
12700
|
if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
|
|
12439
12701
|
return fallbackProvider.transcriptionModel(modelId);
|
|
12440
12702
|
}
|
|
12441
|
-
throw new
|
|
12703
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
|
|
12442
12704
|
},
|
|
12443
12705
|
speechModel(modelId) {
|
|
12444
12706
|
if (speechModels != null && modelId in speechModels) {
|
|
@@ -12447,7 +12709,7 @@ function customProvider({
|
|
|
12447
12709
|
if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
|
|
12448
12710
|
return fallbackProvider.speechModel(modelId);
|
|
12449
12711
|
}
|
|
12450
|
-
throw new
|
|
12712
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
12451
12713
|
},
|
|
12452
12714
|
rerankingModel(modelId) {
|
|
12453
12715
|
if (rerankingModels != null && modelId in rerankingModels) {
|
|
@@ -12456,7 +12718,7 @@ function customProvider({
|
|
|
12456
12718
|
if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
|
|
12457
12719
|
return fallbackProvider.rerankingModel(modelId);
|
|
12458
12720
|
}
|
|
12459
|
-
throw new
|
|
12721
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
12460
12722
|
},
|
|
12461
12723
|
videoModel(modelId) {
|
|
12462
12724
|
if (videoModels != null && modelId in videoModels) {
|
|
@@ -12466,19 +12728,19 @@ function customProvider({
|
|
|
12466
12728
|
if (videoModel) {
|
|
12467
12729
|
return videoModel(modelId);
|
|
12468
12730
|
}
|
|
12469
|
-
throw new
|
|
12731
|
+
throw new import_provider34.NoSuchModelError({ modelId, modelType: "videoModel" });
|
|
12470
12732
|
}
|
|
12471
12733
|
};
|
|
12472
12734
|
}
|
|
12473
12735
|
var experimental_customProvider = customProvider;
|
|
12474
12736
|
|
|
12475
12737
|
// src/registry/no-such-provider-error.ts
|
|
12476
|
-
var
|
|
12477
|
-
var
|
|
12478
|
-
var
|
|
12479
|
-
var
|
|
12480
|
-
var
|
|
12481
|
-
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 {
|
|
12482
12744
|
constructor({
|
|
12483
12745
|
modelId,
|
|
12484
12746
|
modelType,
|
|
@@ -12486,19 +12748,19 @@ var NoSuchProviderError = class extends import_provider34.NoSuchModelError {
|
|
|
12486
12748
|
availableProviders,
|
|
12487
12749
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
12488
12750
|
}) {
|
|
12489
|
-
super({ errorName:
|
|
12490
|
-
this[
|
|
12751
|
+
super({ errorName: name21, modelId, modelType, message });
|
|
12752
|
+
this[_a21] = true;
|
|
12491
12753
|
this.providerId = providerId;
|
|
12492
12754
|
this.availableProviders = availableProviders;
|
|
12493
12755
|
}
|
|
12494
12756
|
static isInstance(error) {
|
|
12495
|
-
return
|
|
12757
|
+
return import_provider35.AISDKError.hasMarker(error, marker21);
|
|
12496
12758
|
}
|
|
12497
12759
|
};
|
|
12498
|
-
|
|
12760
|
+
_a21 = symbol21;
|
|
12499
12761
|
|
|
12500
12762
|
// src/registry/provider-registry.ts
|
|
12501
|
-
var
|
|
12763
|
+
var import_provider36 = require("@ai-sdk/provider");
|
|
12502
12764
|
function createProviderRegistry(providers, {
|
|
12503
12765
|
separator = ":",
|
|
12504
12766
|
languageModelMiddleware,
|
|
@@ -12547,7 +12809,7 @@ var DefaultProviderRegistry = class {
|
|
|
12547
12809
|
splitId(id, modelType) {
|
|
12548
12810
|
const index = id.indexOf(this.separator);
|
|
12549
12811
|
if (index === -1) {
|
|
12550
|
-
throw new
|
|
12812
|
+
throw new import_provider36.NoSuchModelError({
|
|
12551
12813
|
modelId: id,
|
|
12552
12814
|
modelType,
|
|
12553
12815
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
|
@@ -12556,14 +12818,14 @@ var DefaultProviderRegistry = class {
|
|
|
12556
12818
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
12557
12819
|
}
|
|
12558
12820
|
languageModel(id) {
|
|
12559
|
-
var
|
|
12821
|
+
var _a22, _b;
|
|
12560
12822
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
12561
|
-
let model = (_b = (
|
|
12562
|
-
|
|
12823
|
+
let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
12824
|
+
_a22,
|
|
12563
12825
|
modelId
|
|
12564
12826
|
);
|
|
12565
12827
|
if (model == null) {
|
|
12566
|
-
throw new
|
|
12828
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
|
12567
12829
|
}
|
|
12568
12830
|
if (this.languageModelMiddleware != null) {
|
|
12569
12831
|
model = wrapLanguageModel({
|
|
@@ -12574,12 +12836,12 @@ var DefaultProviderRegistry = class {
|
|
|
12574
12836
|
return model;
|
|
12575
12837
|
}
|
|
12576
12838
|
embeddingModel(id) {
|
|
12577
|
-
var
|
|
12839
|
+
var _a22;
|
|
12578
12840
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
12579
12841
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
12580
|
-
const model = (
|
|
12842
|
+
const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12581
12843
|
if (model == null) {
|
|
12582
|
-
throw new
|
|
12844
|
+
throw new import_provider36.NoSuchModelError({
|
|
12583
12845
|
modelId: id,
|
|
12584
12846
|
modelType: "embeddingModel"
|
|
12585
12847
|
});
|
|
@@ -12587,12 +12849,12 @@ var DefaultProviderRegistry = class {
|
|
|
12587
12849
|
return model;
|
|
12588
12850
|
}
|
|
12589
12851
|
imageModel(id) {
|
|
12590
|
-
var
|
|
12852
|
+
var _a22;
|
|
12591
12853
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
12592
12854
|
const provider = this.getProvider(providerId, "imageModel");
|
|
12593
|
-
let model = (
|
|
12855
|
+
let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12594
12856
|
if (model == null) {
|
|
12595
|
-
throw new
|
|
12857
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
|
12596
12858
|
}
|
|
12597
12859
|
if (this.imageModelMiddleware != null) {
|
|
12598
12860
|
model = wrapImageModel({
|
|
@@ -12603,12 +12865,12 @@ var DefaultProviderRegistry = class {
|
|
|
12603
12865
|
return model;
|
|
12604
12866
|
}
|
|
12605
12867
|
transcriptionModel(id) {
|
|
12606
|
-
var
|
|
12868
|
+
var _a22;
|
|
12607
12869
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
12608
12870
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
12609
|
-
const model = (
|
|
12871
|
+
const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12610
12872
|
if (model == null) {
|
|
12611
|
-
throw new
|
|
12873
|
+
throw new import_provider36.NoSuchModelError({
|
|
12612
12874
|
modelId: id,
|
|
12613
12875
|
modelType: "transcriptionModel"
|
|
12614
12876
|
});
|
|
@@ -12616,22 +12878,22 @@ var DefaultProviderRegistry = class {
|
|
|
12616
12878
|
return model;
|
|
12617
12879
|
}
|
|
12618
12880
|
speechModel(id) {
|
|
12619
|
-
var
|
|
12881
|
+
var _a22;
|
|
12620
12882
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
12621
12883
|
const provider = this.getProvider(providerId, "speechModel");
|
|
12622
|
-
const model = (
|
|
12884
|
+
const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12623
12885
|
if (model == null) {
|
|
12624
|
-
throw new
|
|
12886
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "speechModel" });
|
|
12625
12887
|
}
|
|
12626
12888
|
return model;
|
|
12627
12889
|
}
|
|
12628
12890
|
rerankingModel(id) {
|
|
12629
|
-
var
|
|
12891
|
+
var _a22;
|
|
12630
12892
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
12631
12893
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
12632
|
-
const model = (
|
|
12894
|
+
const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
|
|
12633
12895
|
if (model == null) {
|
|
12634
|
-
throw new
|
|
12896
|
+
throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
|
|
12635
12897
|
}
|
|
12636
12898
|
return model;
|
|
12637
12899
|
}
|
|
@@ -12687,7 +12949,7 @@ async function rerank({
|
|
|
12687
12949
|
}),
|
|
12688
12950
|
tracer,
|
|
12689
12951
|
fn: async () => {
|
|
12690
|
-
var
|
|
12952
|
+
var _a22, _b;
|
|
12691
12953
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
12692
12954
|
() => recordSpan({
|
|
12693
12955
|
name: "ai.rerank.doRerank",
|
|
@@ -12751,7 +13013,7 @@ async function rerank({
|
|
|
12751
13013
|
providerMetadata,
|
|
12752
13014
|
response: {
|
|
12753
13015
|
id: response == null ? void 0 : response.id,
|
|
12754
|
-
timestamp: (
|
|
13016
|
+
timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
|
|
12755
13017
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
12756
13018
|
headers: response == null ? void 0 : response.headers,
|
|
12757
13019
|
body: response == null ? void 0 : response.body
|
|
@@ -12773,7 +13035,7 @@ var DefaultRerankResult = class {
|
|
|
12773
13035
|
};
|
|
12774
13036
|
|
|
12775
13037
|
// src/transcribe/transcribe.ts
|
|
12776
|
-
var
|
|
13038
|
+
var import_provider_utils36 = require("@ai-sdk/provider-utils");
|
|
12777
13039
|
var defaultDownload2 = createDownload();
|
|
12778
13040
|
async function transcribe({
|
|
12779
13041
|
model,
|
|
@@ -12792,23 +13054,23 @@ async function transcribe({
|
|
|
12792
13054
|
maxRetries: maxRetriesArg,
|
|
12793
13055
|
abortSignal
|
|
12794
13056
|
});
|
|
12795
|
-
const headersWithUserAgent = (0,
|
|
13057
|
+
const headersWithUserAgent = (0, import_provider_utils36.withUserAgentSuffix)(
|
|
12796
13058
|
headers != null ? headers : {},
|
|
12797
13059
|
`ai/${VERSION}`
|
|
12798
13060
|
);
|
|
12799
13061
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
12800
13062
|
const result = await retry(
|
|
12801
13063
|
() => {
|
|
12802
|
-
var
|
|
13064
|
+
var _a22;
|
|
12803
13065
|
return resolvedModel.doGenerate({
|
|
12804
13066
|
audio: audioData,
|
|
12805
13067
|
abortSignal,
|
|
12806
13068
|
headers: headersWithUserAgent,
|
|
12807
13069
|
providerOptions,
|
|
12808
|
-
mediaType: (
|
|
13070
|
+
mediaType: (_a22 = detectMediaType({
|
|
12809
13071
|
data: audioData,
|
|
12810
13072
|
signatures: audioMediaTypeSignatures
|
|
12811
|
-
})) != null ?
|
|
13073
|
+
})) != null ? _a22 : "audio/wav"
|
|
12812
13074
|
});
|
|
12813
13075
|
}
|
|
12814
13076
|
);
|
|
@@ -12832,19 +13094,19 @@ async function transcribe({
|
|
|
12832
13094
|
}
|
|
12833
13095
|
var DefaultTranscriptionResult = class {
|
|
12834
13096
|
constructor(options) {
|
|
12835
|
-
var
|
|
13097
|
+
var _a22;
|
|
12836
13098
|
this.text = options.text;
|
|
12837
13099
|
this.segments = options.segments;
|
|
12838
13100
|
this.language = options.language;
|
|
12839
13101
|
this.durationInSeconds = options.durationInSeconds;
|
|
12840
13102
|
this.warnings = options.warnings;
|
|
12841
13103
|
this.responses = options.responses;
|
|
12842
|
-
this.providerMetadata = (
|
|
13104
|
+
this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
|
|
12843
13105
|
}
|
|
12844
13106
|
};
|
|
12845
13107
|
|
|
12846
13108
|
// src/ui/call-completion-api.ts
|
|
12847
|
-
var
|
|
13109
|
+
var import_provider_utils37 = require("@ai-sdk/provider-utils");
|
|
12848
13110
|
|
|
12849
13111
|
// src/ui/process-text-stream.ts
|
|
12850
13112
|
async function processTextStream({
|
|
@@ -12878,7 +13140,7 @@ async function callCompletionApi({
|
|
|
12878
13140
|
onError,
|
|
12879
13141
|
fetch: fetch2 = getOriginalFetch()
|
|
12880
13142
|
}) {
|
|
12881
|
-
var
|
|
13143
|
+
var _a22;
|
|
12882
13144
|
try {
|
|
12883
13145
|
setLoading(true);
|
|
12884
13146
|
setError(void 0);
|
|
@@ -12892,13 +13154,13 @@ async function callCompletionApi({
|
|
|
12892
13154
|
...body
|
|
12893
13155
|
}),
|
|
12894
13156
|
credentials,
|
|
12895
|
-
headers: (0,
|
|
13157
|
+
headers: (0, import_provider_utils37.withUserAgentSuffix)(
|
|
12896
13158
|
{
|
|
12897
13159
|
"Content-Type": "application/json",
|
|
12898
13160
|
...headers
|
|
12899
13161
|
},
|
|
12900
13162
|
`ai-sdk/${VERSION}`,
|
|
12901
|
-
(0,
|
|
13163
|
+
(0, import_provider_utils37.getRuntimeEnvironmentUserAgent)()
|
|
12902
13164
|
),
|
|
12903
13165
|
signal: abortController.signal
|
|
12904
13166
|
}).catch((err) => {
|
|
@@ -12906,7 +13168,7 @@ async function callCompletionApi({
|
|
|
12906
13168
|
});
|
|
12907
13169
|
if (!response.ok) {
|
|
12908
13170
|
throw new Error(
|
|
12909
|
-
(
|
|
13171
|
+
(_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
|
|
12910
13172
|
);
|
|
12911
13173
|
}
|
|
12912
13174
|
if (!response.body) {
|
|
@@ -12926,7 +13188,7 @@ async function callCompletionApi({
|
|
|
12926
13188
|
}
|
|
12927
13189
|
case "data": {
|
|
12928
13190
|
await consumeStream({
|
|
12929
|
-
stream: (0,
|
|
13191
|
+
stream: (0, import_provider_utils37.parseJsonEventStream)({
|
|
12930
13192
|
stream: response.body,
|
|
12931
13193
|
schema: uiMessageChunkSchema
|
|
12932
13194
|
}).pipeThrough(
|
|
@@ -12978,7 +13240,7 @@ async function callCompletionApi({
|
|
|
12978
13240
|
}
|
|
12979
13241
|
|
|
12980
13242
|
// src/ui/chat.ts
|
|
12981
|
-
var
|
|
13243
|
+
var import_provider_utils40 = require("@ai-sdk/provider-utils");
|
|
12982
13244
|
|
|
12983
13245
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
12984
13246
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -12990,12 +13252,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
12990
13252
|
}
|
|
12991
13253
|
return Promise.all(
|
|
12992
13254
|
Array.from(files).map(async (file) => {
|
|
12993
|
-
const { name:
|
|
13255
|
+
const { name: name22, type } = file;
|
|
12994
13256
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
12995
13257
|
const reader = new FileReader();
|
|
12996
13258
|
reader.onload = (readerEvent) => {
|
|
12997
|
-
var
|
|
12998
|
-
resolve3((
|
|
13259
|
+
var _a22;
|
|
13260
|
+
resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
|
|
12999
13261
|
};
|
|
13000
13262
|
reader.onerror = (error) => reject(error);
|
|
13001
13263
|
reader.readAsDataURL(file);
|
|
@@ -13003,7 +13265,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13003
13265
|
return {
|
|
13004
13266
|
type: "file",
|
|
13005
13267
|
mediaType: type,
|
|
13006
|
-
filename:
|
|
13268
|
+
filename: name22,
|
|
13007
13269
|
url: dataUrl
|
|
13008
13270
|
};
|
|
13009
13271
|
})
|
|
@@ -13011,10 +13273,10 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13011
13273
|
}
|
|
13012
13274
|
|
|
13013
13275
|
// src/ui/default-chat-transport.ts
|
|
13014
|
-
var
|
|
13276
|
+
var import_provider_utils39 = require("@ai-sdk/provider-utils");
|
|
13015
13277
|
|
|
13016
13278
|
// src/ui/http-chat-transport.ts
|
|
13017
|
-
var
|
|
13279
|
+
var import_provider_utils38 = require("@ai-sdk/provider-utils");
|
|
13018
13280
|
var HttpChatTransport = class {
|
|
13019
13281
|
constructor({
|
|
13020
13282
|
api = "/api/chat",
|
|
@@ -13037,15 +13299,15 @@ var HttpChatTransport = class {
|
|
|
13037
13299
|
abortSignal,
|
|
13038
13300
|
...options
|
|
13039
13301
|
}) {
|
|
13040
|
-
var
|
|
13041
|
-
const resolvedBody = await (0,
|
|
13042
|
-
const resolvedHeaders = await (0,
|
|
13043
|
-
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);
|
|
13044
13306
|
const baseHeaders = {
|
|
13045
|
-
...(0,
|
|
13046
|
-
...(0,
|
|
13307
|
+
...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
|
|
13308
|
+
...(0, import_provider_utils38.normalizeHeaders)(options.headers)
|
|
13047
13309
|
};
|
|
13048
|
-
const preparedRequest = await ((
|
|
13310
|
+
const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
|
|
13049
13311
|
api: this.api,
|
|
13050
13312
|
id: options.chatId,
|
|
13051
13313
|
messages: options.messages,
|
|
@@ -13057,7 +13319,7 @@ var HttpChatTransport = class {
|
|
|
13057
13319
|
messageId: options.messageId
|
|
13058
13320
|
}));
|
|
13059
13321
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
|
|
13060
|
-
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;
|
|
13061
13323
|
const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
|
|
13062
13324
|
...resolvedBody,
|
|
13063
13325
|
...options.body,
|
|
@@ -13089,15 +13351,15 @@ var HttpChatTransport = class {
|
|
|
13089
13351
|
return this.processResponseStream(response.body);
|
|
13090
13352
|
}
|
|
13091
13353
|
async reconnectToStream(options) {
|
|
13092
|
-
var
|
|
13093
|
-
const resolvedBody = await (0,
|
|
13094
|
-
const resolvedHeaders = await (0,
|
|
13095
|
-
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);
|
|
13096
13358
|
const baseHeaders = {
|
|
13097
|
-
...(0,
|
|
13098
|
-
...(0,
|
|
13359
|
+
...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
|
|
13360
|
+
...(0, import_provider_utils38.normalizeHeaders)(options.headers)
|
|
13099
13361
|
};
|
|
13100
|
-
const preparedRequest = await ((
|
|
13362
|
+
const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
|
|
13101
13363
|
api: this.api,
|
|
13102
13364
|
id: options.chatId,
|
|
13103
13365
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -13106,7 +13368,7 @@ var HttpChatTransport = class {
|
|
|
13106
13368
|
requestMetadata: options.metadata
|
|
13107
13369
|
}));
|
|
13108
13370
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
|
|
13109
|
-
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;
|
|
13110
13372
|
const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
|
|
13111
13373
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
13112
13374
|
const response = await fetch2(api, {
|
|
@@ -13135,7 +13397,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
13135
13397
|
super(options);
|
|
13136
13398
|
}
|
|
13137
13399
|
processResponseStream(stream) {
|
|
13138
|
-
return (0,
|
|
13400
|
+
return (0, import_provider_utils39.parseJsonEventStream)({
|
|
13139
13401
|
stream,
|
|
13140
13402
|
schema: uiMessageChunkSchema
|
|
13141
13403
|
}).pipeThrough(
|
|
@@ -13154,7 +13416,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
13154
13416
|
// src/ui/chat.ts
|
|
13155
13417
|
var AbstractChat = class {
|
|
13156
13418
|
constructor({
|
|
13157
|
-
generateId: generateId2 =
|
|
13419
|
+
generateId: generateId2 = import_provider_utils40.generateId,
|
|
13158
13420
|
id = generateId2(),
|
|
13159
13421
|
transport = new DefaultChatTransport(),
|
|
13160
13422
|
messageMetadataSchema,
|
|
@@ -13175,11 +13437,11 @@ var AbstractChat = class {
|
|
|
13175
13437
|
* If a messageId is provided, the message will be replaced.
|
|
13176
13438
|
*/
|
|
13177
13439
|
this.sendMessage = async (message, options) => {
|
|
13178
|
-
var
|
|
13440
|
+
var _a22, _b, _c, _d;
|
|
13179
13441
|
if (message == null) {
|
|
13180
13442
|
await this.makeRequest({
|
|
13181
13443
|
trigger: "submit-message",
|
|
13182
|
-
messageId: (
|
|
13444
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13183
13445
|
...options
|
|
13184
13446
|
});
|
|
13185
13447
|
return;
|
|
@@ -13289,11 +13551,11 @@ var AbstractChat = class {
|
|
|
13289
13551
|
}
|
|
13290
13552
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13291
13553
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13292
|
-
var
|
|
13554
|
+
var _a22;
|
|
13293
13555
|
if (shouldSend) {
|
|
13294
13556
|
this.makeRequest({
|
|
13295
13557
|
trigger: "submit-message",
|
|
13296
|
-
messageId: (
|
|
13558
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13297
13559
|
...options
|
|
13298
13560
|
});
|
|
13299
13561
|
}
|
|
@@ -13319,11 +13581,11 @@ var AbstractChat = class {
|
|
|
13319
13581
|
}
|
|
13320
13582
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
13321
13583
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
13322
|
-
var
|
|
13584
|
+
var _a22;
|
|
13323
13585
|
if (shouldSend) {
|
|
13324
13586
|
this.makeRequest({
|
|
13325
13587
|
trigger: "submit-message",
|
|
13326
|
-
messageId: (
|
|
13588
|
+
messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
|
|
13327
13589
|
...options
|
|
13328
13590
|
});
|
|
13329
13591
|
}
|
|
@@ -13336,10 +13598,10 @@ var AbstractChat = class {
|
|
|
13336
13598
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
13337
13599
|
*/
|
|
13338
13600
|
this.stop = async () => {
|
|
13339
|
-
var
|
|
13601
|
+
var _a22;
|
|
13340
13602
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
13341
13603
|
return;
|
|
13342
|
-
if ((
|
|
13604
|
+
if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
|
|
13343
13605
|
this.activeResponse.abortController.abort();
|
|
13344
13606
|
}
|
|
13345
13607
|
};
|
|
@@ -13405,7 +13667,7 @@ var AbstractChat = class {
|
|
|
13405
13667
|
body,
|
|
13406
13668
|
messageId
|
|
13407
13669
|
}) {
|
|
13408
|
-
var
|
|
13670
|
+
var _a22, _b, _c;
|
|
13409
13671
|
let resumeStream;
|
|
13410
13672
|
if (trigger === "resume-stream") {
|
|
13411
13673
|
try {
|
|
@@ -13465,9 +13727,9 @@ var AbstractChat = class {
|
|
|
13465
13727
|
() => job({
|
|
13466
13728
|
state: activeResponse.state,
|
|
13467
13729
|
write: () => {
|
|
13468
|
-
var
|
|
13730
|
+
var _a23;
|
|
13469
13731
|
this.setStatus({ status: "streaming" });
|
|
13470
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
13732
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
|
|
13471
13733
|
if (replaceLastMessage) {
|
|
13472
13734
|
this.state.replaceMessage(
|
|
13473
13735
|
this.state.messages.length - 1,
|
|
@@ -13519,7 +13781,7 @@ var AbstractChat = class {
|
|
|
13519
13781
|
isAbort,
|
|
13520
13782
|
isDisconnect,
|
|
13521
13783
|
isError,
|
|
13522
|
-
finishReason: (
|
|
13784
|
+
finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
|
|
13523
13785
|
});
|
|
13524
13786
|
} catch (err) {
|
|
13525
13787
|
console.error(err);
|
|
@@ -13675,6 +13937,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
13675
13937
|
InvalidResponseDataError,
|
|
13676
13938
|
InvalidStreamPartError,
|
|
13677
13939
|
InvalidToolApprovalError,
|
|
13940
|
+
InvalidToolApprovalSignatureError,
|
|
13678
13941
|
InvalidToolInputError,
|
|
13679
13942
|
JSONParseError,
|
|
13680
13943
|
JsonToSseTransformStream,
|