ai 6.0.288 → 6.0.290
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 +35 -0
- package/dist/index.d.mts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +377 -281
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +314 -213
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +20 -5
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +20 -5
- package/dist/internal/index.mjs.map +1 -1
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +57 -0
- package/docs/03-ai-sdk-core/40-middleware.mdx +92 -7
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +7 -0
- package/package.json +5 -4
- package/src/embed/embed-many.ts +19 -3
- package/src/generate-speech/generated-audio-file.ts +0 -8
- package/src/generate-text/generated-file.ts +0 -4
- package/src/generate-text/parse-tool-call.ts +30 -23
- package/src/generate-text/run-tools-transformation.ts +37 -3
- package/src/generate-text/stream-text.ts +9 -28
- package/src/generate-text/to-response-messages.ts +7 -0
- package/src/generate-text/tool-call.ts +26 -0
- package/src/generate-text/validate-tool-approvals.ts +20 -2
- package/src/middleware/extract-reasoning-middleware.ts +1 -1
- package/src/middleware/wrap-embedding-model.ts +12 -2
- package/src/model/get-embedding-model-provider-options-transformer.ts +17 -0
- package/src/prompt/content-part.ts +2 -0
- package/src/prompt/convert-to-language-model-prompt.ts +7 -2
- package/src/prompt/data-content.ts +11 -2
- package/src/ui/chat.ts +108 -17
- package/src/ui/convert-to-model-messages.ts +8 -0
- package/src/ui/http-chat-transport.ts +1 -1
- package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +1 -1
- package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +2 -1
- package/src/ui/process-ui-message-stream.ts +6 -0
- package/src/ui/ui-messages.ts +10 -0
- package/src/ui/validate-ui-messages.ts +79 -114
- package/src/ui-message-stream/ui-message-chunks.ts +2 -0
- package/src/util/write-to-server-response.ts +0 -2
package/dist/index.js
CHANGED
|
@@ -70,7 +70,7 @@ __export(src_exports, {
|
|
|
70
70
|
UnsupportedFunctionalityError: () => import_provider23.UnsupportedFunctionalityError,
|
|
71
71
|
UnsupportedModelVersionError: () => UnsupportedModelVersionError,
|
|
72
72
|
addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
|
|
73
|
-
asSchema: () =>
|
|
73
|
+
asSchema: () => import_provider_utils44.asSchema,
|
|
74
74
|
assistantModelMessageSchema: () => assistantModelMessageSchema,
|
|
75
75
|
bindTelemetryIntegration: () => bindTelemetryIntegration,
|
|
76
76
|
callCompletionApi: () => callCompletionApi,
|
|
@@ -82,7 +82,7 @@ __export(src_exports, {
|
|
|
82
82
|
createAgentUIStreamResponse: () => createAgentUIStreamResponse,
|
|
83
83
|
createDownload: () => createDownload,
|
|
84
84
|
createGateway: () => import_gateway4.createGateway,
|
|
85
|
-
createIdGenerator: () =>
|
|
85
|
+
createIdGenerator: () => import_provider_utils44.createIdGenerator,
|
|
86
86
|
createProviderRegistry: () => createProviderRegistry,
|
|
87
87
|
createTextStreamResponse: () => createTextStreamResponse,
|
|
88
88
|
createUIMessageStream: () => createUIMessageStream,
|
|
@@ -90,7 +90,7 @@ __export(src_exports, {
|
|
|
90
90
|
customProvider: () => customProvider,
|
|
91
91
|
defaultEmbeddingSettingsMiddleware: () => defaultEmbeddingSettingsMiddleware,
|
|
92
92
|
defaultSettingsMiddleware: () => defaultSettingsMiddleware,
|
|
93
|
-
dynamicTool: () =>
|
|
93
|
+
dynamicTool: () => import_provider_utils44.dynamicTool,
|
|
94
94
|
embed: () => embed,
|
|
95
95
|
embedMany: () => embedMany,
|
|
96
96
|
experimental_createProviderRegistry: () => experimental_createProviderRegistry,
|
|
@@ -102,7 +102,7 @@ __export(src_exports, {
|
|
|
102
102
|
extractJsonMiddleware: () => extractJsonMiddleware,
|
|
103
103
|
extractReasoningMiddleware: () => extractReasoningMiddleware,
|
|
104
104
|
gateway: () => import_gateway4.gateway,
|
|
105
|
-
generateId: () =>
|
|
105
|
+
generateId: () => import_provider_utils44.generateId,
|
|
106
106
|
generateImage: () => generateImage,
|
|
107
107
|
generateObject: () => generateObject,
|
|
108
108
|
generateText: () => generateText,
|
|
@@ -121,11 +121,11 @@ __export(src_exports, {
|
|
|
121
121
|
isTextUIPart: () => isTextUIPart,
|
|
122
122
|
isToolOrDynamicToolUIPart: () => isToolOrDynamicToolUIPart,
|
|
123
123
|
isToolUIPart: () => isToolUIPart,
|
|
124
|
-
jsonSchema: () =>
|
|
124
|
+
jsonSchema: () => import_provider_utils44.jsonSchema,
|
|
125
125
|
lastAssistantMessageIsCompleteWithApprovalResponses: () => lastAssistantMessageIsCompleteWithApprovalResponses,
|
|
126
126
|
lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
|
|
127
127
|
modelMessageSchema: () => modelMessageSchema,
|
|
128
|
-
parseJsonEventStream: () =>
|
|
128
|
+
parseJsonEventStream: () => import_provider_utils44.parseJsonEventStream,
|
|
129
129
|
parsePartialJson: () => parsePartialJson,
|
|
130
130
|
pipeAgentUIStreamToResponse: () => pipeAgentUIStreamToResponse,
|
|
131
131
|
pipeTextStreamToResponse: () => pipeTextStreamToResponse,
|
|
@@ -142,7 +142,7 @@ __export(src_exports, {
|
|
|
142
142
|
streamObject: () => streamObject,
|
|
143
143
|
streamText: () => streamText,
|
|
144
144
|
systemModelMessageSchema: () => systemModelMessageSchema,
|
|
145
|
-
tool: () =>
|
|
145
|
+
tool: () => import_provider_utils44.tool,
|
|
146
146
|
toolModelMessageSchema: () => toolModelMessageSchema,
|
|
147
147
|
uiMessageChunkSchema: () => uiMessageChunkSchema,
|
|
148
148
|
userModelMessageSchema: () => userModelMessageSchema,
|
|
@@ -151,11 +151,11 @@ __export(src_exports, {
|
|
|
151
151
|
wrapImageModel: () => wrapImageModel,
|
|
152
152
|
wrapLanguageModel: () => wrapLanguageModel,
|
|
153
153
|
wrapProvider: () => wrapProvider,
|
|
154
|
-
zodSchema: () =>
|
|
154
|
+
zodSchema: () => import_provider_utils44.zodSchema
|
|
155
155
|
});
|
|
156
156
|
module.exports = __toCommonJS(src_exports);
|
|
157
157
|
var import_gateway4 = require("@ai-sdk/gateway");
|
|
158
|
-
var
|
|
158
|
+
var import_provider_utils44 = require("@ai-sdk/provider-utils");
|
|
159
159
|
|
|
160
160
|
// src/agent/tool-loop-agent.ts
|
|
161
161
|
var import_provider_utils21 = require("@ai-sdk/provider-utils");
|
|
@@ -1334,7 +1334,7 @@ function detectMediaType({
|
|
|
1334
1334
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
1335
1335
|
|
|
1336
1336
|
// src/version.ts
|
|
1337
|
-
var VERSION = true ? "6.0.
|
|
1337
|
+
var VERSION = true ? "6.0.290" : "0.0.0-test";
|
|
1338
1338
|
|
|
1339
1339
|
// src/util/download/download.ts
|
|
1340
1340
|
var download = async ({
|
|
@@ -1459,6 +1459,7 @@ var dataContentSchema = import_v4.z.union([
|
|
|
1459
1459
|
)
|
|
1460
1460
|
]);
|
|
1461
1461
|
function convertToLanguageModelV3DataContent(content) {
|
|
1462
|
+
let originalUrl;
|
|
1462
1463
|
if (content instanceof Uint8Array) {
|
|
1463
1464
|
return { data: content, mediaType: void 0 };
|
|
1464
1465
|
}
|
|
@@ -1467,7 +1468,9 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1467
1468
|
}
|
|
1468
1469
|
if (typeof content === "string") {
|
|
1469
1470
|
try {
|
|
1470
|
-
|
|
1471
|
+
const url = new URL(content);
|
|
1472
|
+
originalUrl = url.toString() !== content ? content : void 0;
|
|
1473
|
+
content = url;
|
|
1471
1474
|
} catch (error) {
|
|
1472
1475
|
}
|
|
1473
1476
|
}
|
|
@@ -1483,7 +1486,11 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1483
1486
|
}
|
|
1484
1487
|
return { data: base64Content, mediaType: dataUrlMediaType };
|
|
1485
1488
|
}
|
|
1486
|
-
return {
|
|
1489
|
+
return {
|
|
1490
|
+
data: content,
|
|
1491
|
+
mediaType: void 0,
|
|
1492
|
+
...originalUrl != null ? { originalUrl } : {}
|
|
1493
|
+
};
|
|
1487
1494
|
}
|
|
1488
1495
|
function convertDataContentToBase64String(content) {
|
|
1489
1496
|
if (typeof content === "string") {
|
|
@@ -1848,7 +1855,11 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1848
1855
|
default:
|
|
1849
1856
|
throw new Error(`Unsupported part type: ${type}`);
|
|
1850
1857
|
}
|
|
1851
|
-
const {
|
|
1858
|
+
const {
|
|
1859
|
+
data: convertedData,
|
|
1860
|
+
mediaType: convertedMediaType,
|
|
1861
|
+
originalUrl
|
|
1862
|
+
} = convertToLanguageModelV3DataContent(originalData);
|
|
1852
1863
|
let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
|
|
1853
1864
|
let data = convertedData;
|
|
1854
1865
|
if (data instanceof URL) {
|
|
@@ -1869,6 +1880,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1869
1880
|
// any image
|
|
1870
1881
|
filename: void 0,
|
|
1871
1882
|
data,
|
|
1883
|
+
...data instanceof URL && originalUrl != null ? { originalUrl } : {},
|
|
1872
1884
|
providerOptions: part.providerOptions
|
|
1873
1885
|
};
|
|
1874
1886
|
}
|
|
@@ -1881,6 +1893,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1881
1893
|
mediaType,
|
|
1882
1894
|
filename: part.filename,
|
|
1883
1895
|
data,
|
|
1896
|
+
...data instanceof URL && originalUrl != null ? { originalUrl } : {},
|
|
1884
1897
|
providerOptions: part.providerOptions
|
|
1885
1898
|
};
|
|
1886
1899
|
}
|
|
@@ -2273,7 +2286,9 @@ var toolResultPartSchema = import_v44.z.object({
|
|
|
2273
2286
|
var toolApprovalRequestSchema = import_v44.z.object({
|
|
2274
2287
|
type: import_v44.z.literal("tool-approval-request"),
|
|
2275
2288
|
approvalId: import_v44.z.string(),
|
|
2276
|
-
toolCallId: import_v44.z.string()
|
|
2289
|
+
toolCallId: import_v44.z.string(),
|
|
2290
|
+
signature: import_v44.z.string().optional(),
|
|
2291
|
+
inputSchemaInput: import_v44.z.unknown().optional()
|
|
2277
2292
|
});
|
|
2278
2293
|
var toolApprovalResponseSchema = import_v44.z.object({
|
|
2279
2294
|
type: import_v44.z.literal("tool-approval-response"),
|
|
@@ -3231,8 +3246,8 @@ var DefaultGeneratedFile = class {
|
|
|
3231
3246
|
}
|
|
3232
3247
|
};
|
|
3233
3248
|
var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
|
|
3234
|
-
constructor(
|
|
3235
|
-
super(
|
|
3249
|
+
constructor() {
|
|
3250
|
+
super(...arguments);
|
|
3236
3251
|
this.type = "file";
|
|
3237
3252
|
}
|
|
3238
3253
|
};
|
|
@@ -3354,6 +3369,43 @@ async function maybeSignApproval({
|
|
|
3354
3369
|
|
|
3355
3370
|
// src/generate-text/validate-tool-approvals.ts
|
|
3356
3371
|
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
3372
|
+
|
|
3373
|
+
// src/util/is-deep-equal-data.ts
|
|
3374
|
+
function isDeepEqualData(obj1, obj2) {
|
|
3375
|
+
if (obj1 === obj2)
|
|
3376
|
+
return true;
|
|
3377
|
+
if (obj1 == null || obj2 == null)
|
|
3378
|
+
return false;
|
|
3379
|
+
if (typeof obj1 !== "object" && typeof obj2 !== "object")
|
|
3380
|
+
return obj1 === obj2;
|
|
3381
|
+
if (obj1.constructor !== obj2.constructor)
|
|
3382
|
+
return false;
|
|
3383
|
+
if (obj1 instanceof Date && obj2 instanceof Date) {
|
|
3384
|
+
return obj1.getTime() === obj2.getTime();
|
|
3385
|
+
}
|
|
3386
|
+
if (Array.isArray(obj1)) {
|
|
3387
|
+
if (obj1.length !== obj2.length)
|
|
3388
|
+
return false;
|
|
3389
|
+
for (let i = 0; i < obj1.length; i++) {
|
|
3390
|
+
if (!isDeepEqualData(obj1[i], obj2[i]))
|
|
3391
|
+
return false;
|
|
3392
|
+
}
|
|
3393
|
+
return true;
|
|
3394
|
+
}
|
|
3395
|
+
const keys1 = Object.keys(obj1);
|
|
3396
|
+
const keys2 = Object.keys(obj2);
|
|
3397
|
+
if (keys1.length !== keys2.length)
|
|
3398
|
+
return false;
|
|
3399
|
+
for (const key of keys1) {
|
|
3400
|
+
if (!keys2.includes(key))
|
|
3401
|
+
return false;
|
|
3402
|
+
if (!isDeepEqualData(obj1[key], obj2[key]))
|
|
3403
|
+
return false;
|
|
3404
|
+
}
|
|
3405
|
+
return true;
|
|
3406
|
+
}
|
|
3407
|
+
|
|
3408
|
+
// src/generate-text/validate-tool-approvals.ts
|
|
3357
3409
|
async function validateApprovedToolApprovals({
|
|
3358
3410
|
approvedToolApprovals,
|
|
3359
3411
|
tools,
|
|
@@ -3393,17 +3445,29 @@ async function validateApprovedToolApprovals({
|
|
|
3393
3445
|
}
|
|
3394
3446
|
}
|
|
3395
3447
|
if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
|
|
3448
|
+
const hasInputSchemaInput = Object.prototype.hasOwnProperty.call(
|
|
3449
|
+
approvalRequest,
|
|
3450
|
+
"inputSchemaInput"
|
|
3451
|
+
);
|
|
3396
3452
|
const validation = await (0, import_provider_utils12.safeValidateTypes)({
|
|
3397
|
-
value: toolCall.input,
|
|
3453
|
+
value: hasInputSchemaInput ? approvalRequest.inputSchemaInput : toolCall.input,
|
|
3398
3454
|
schema: (0, import_provider_utils12.asSchema)(tool2.inputSchema)
|
|
3399
3455
|
});
|
|
3456
|
+
let validationError;
|
|
3400
3457
|
if (!validation.success) {
|
|
3458
|
+
validationError = validation.error;
|
|
3459
|
+
} else if (!isDeepEqualData(validation.value, toolCall.input)) {
|
|
3460
|
+
validationError = new Error(
|
|
3461
|
+
"Approved tool input does not match the validated schema output."
|
|
3462
|
+
);
|
|
3463
|
+
}
|
|
3464
|
+
if (validationError != null) {
|
|
3401
3465
|
invalid.push({
|
|
3402
3466
|
...approval,
|
|
3403
3467
|
error: new InvalidToolInputError({
|
|
3404
3468
|
toolName: toolCall.toolName,
|
|
3405
3469
|
toolInput: JSON.stringify(toolCall.input),
|
|
3406
|
-
cause:
|
|
3470
|
+
cause: validationError
|
|
3407
3471
|
})
|
|
3408
3472
|
});
|
|
3409
3473
|
continue;
|
|
@@ -4119,6 +4183,22 @@ var json = ({
|
|
|
4119
4183
|
|
|
4120
4184
|
// src/generate-text/parse-tool-call.ts
|
|
4121
4185
|
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
|
4186
|
+
|
|
4187
|
+
// src/generate-text/tool-call.ts
|
|
4188
|
+
var inputSchemaInputSymbol = Symbol("ai-sdk-tool-call-input-schema-input");
|
|
4189
|
+
function setToolCallInputSchemaInput(toolCall, inputSchemaInput) {
|
|
4190
|
+
Object.defineProperty(toolCall, inputSchemaInputSymbol, {
|
|
4191
|
+
value: inputSchemaInput
|
|
4192
|
+
});
|
|
4193
|
+
return toolCall;
|
|
4194
|
+
}
|
|
4195
|
+
function getToolCallInputSchemaInput(toolCall) {
|
|
4196
|
+
return inputSchemaInputSymbol in toolCall ? {
|
|
4197
|
+
value: toolCall[inputSchemaInputSymbol]
|
|
4198
|
+
} : void 0;
|
|
4199
|
+
}
|
|
4200
|
+
|
|
4201
|
+
// src/generate-text/parse-tool-call.ts
|
|
4122
4202
|
async function parseToolCall({
|
|
4123
4203
|
toolCall,
|
|
4124
4204
|
tools,
|
|
@@ -4225,26 +4305,29 @@ async function doParseToolCall({
|
|
|
4225
4305
|
cause: parseResult.error
|
|
4226
4306
|
});
|
|
4227
4307
|
}
|
|
4228
|
-
return
|
|
4229
|
-
type
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4308
|
+
return setToolCallInputSchemaInput(
|
|
4309
|
+
tool2.type === "dynamic" ? {
|
|
4310
|
+
type: "tool-call",
|
|
4311
|
+
toolCallId: toolCall.toolCallId,
|
|
4312
|
+
toolName: toolCall.toolName,
|
|
4313
|
+
input: parseResult.value,
|
|
4314
|
+
providerExecuted: toolCall.providerExecuted,
|
|
4315
|
+
providerMetadata: toolCall.providerMetadata,
|
|
4316
|
+
...tool2.metadata != null ? { toolMetadata: tool2.metadata } : {},
|
|
4317
|
+
dynamic: true,
|
|
4318
|
+
title: tool2.title
|
|
4319
|
+
} : {
|
|
4320
|
+
type: "tool-call",
|
|
4321
|
+
toolCallId: toolCall.toolCallId,
|
|
4322
|
+
toolName,
|
|
4323
|
+
input: parseResult.value,
|
|
4324
|
+
providerExecuted: toolCall.providerExecuted,
|
|
4325
|
+
providerMetadata: toolCall.providerMetadata,
|
|
4326
|
+
...tool2.metadata != null ? { toolMetadata: tool2.metadata } : {},
|
|
4327
|
+
title: tool2.title
|
|
4328
|
+
},
|
|
4329
|
+
parseResult.rawValue
|
|
4330
|
+
);
|
|
4248
4331
|
}
|
|
4249
4332
|
|
|
4250
4333
|
// src/generate-text/prepare-step-call-settings.ts
|
|
@@ -4450,11 +4533,13 @@ async function toResponseMessages({
|
|
|
4450
4533
|
break;
|
|
4451
4534
|
}
|
|
4452
4535
|
case "tool-approval-request":
|
|
4536
|
+
const inputSchemaInput = getToolCallInputSchemaInput(part.toolCall);
|
|
4453
4537
|
content.push({
|
|
4454
4538
|
type: "tool-approval-request",
|
|
4455
4539
|
approvalId: part.approvalId,
|
|
4456
4540
|
toolCallId: part.toolCall.toolCallId,
|
|
4457
|
-
...part.signature != null ? { signature: part.signature } : {}
|
|
4541
|
+
...part.signature != null ? { signature: part.signature } : {},
|
|
4542
|
+
...inputSchemaInput != null && !isDeepEqualData(inputSchemaInput.value, part.toolCall.input) ? { inputSchemaInput: inputSchemaInput.value } : {}
|
|
4458
4543
|
});
|
|
4459
4544
|
break;
|
|
4460
4545
|
}
|
|
@@ -5575,8 +5660,6 @@ function writeToServerResponse({
|
|
|
5575
5660
|
});
|
|
5576
5661
|
}
|
|
5577
5662
|
}
|
|
5578
|
-
} catch (error) {
|
|
5579
|
-
throw error;
|
|
5580
5663
|
} finally {
|
|
5581
5664
|
response.end();
|
|
5582
5665
|
}
|
|
@@ -5740,6 +5823,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
|
|
|
5740
5823
|
approvalId: import_v47.z.string(),
|
|
5741
5824
|
toolCallId: import_v47.z.string(),
|
|
5742
5825
|
approvalDescriptor: import_v47.z.unknown().optional(),
|
|
5826
|
+
inputSchemaInput: import_v47.z.unknown().optional(),
|
|
5743
5827
|
signature: import_v47.z.string().optional()
|
|
5744
5828
|
}),
|
|
5745
5829
|
import_v47.z.looseObject({
|
|
@@ -6320,6 +6404,10 @@ function processUIMessageStream({
|
|
|
6320
6404
|
toolInvocation.approval = {
|
|
6321
6405
|
id: chunk.approvalId,
|
|
6322
6406
|
...chunk.approvalDescriptor != null ? { descriptor: chunk.approvalDescriptor } : {},
|
|
6407
|
+
...Object.prototype.hasOwnProperty.call(
|
|
6408
|
+
chunk,
|
|
6409
|
+
"inputSchemaInput"
|
|
6410
|
+
) ? { inputSchemaInput: chunk.inputSchemaInput } : {},
|
|
6323
6411
|
...chunk.signature != null ? { signature: chunk.signature } : {}
|
|
6324
6412
|
};
|
|
6325
6413
|
write();
|
|
@@ -6963,8 +7051,10 @@ function runToolsTransformation({
|
|
|
6963
7051
|
attemptClose();
|
|
6964
7052
|
});
|
|
6965
7053
|
}
|
|
7054
|
+
const activeToolCallToolNames = /* @__PURE__ */ new Map();
|
|
6966
7055
|
const forwardStream = new TransformStream({
|
|
6967
7056
|
async transform(chunk, controller) {
|
|
7057
|
+
var _a23, _b, _c, _d;
|
|
6968
7058
|
const chunkType = chunk.type;
|
|
6969
7059
|
switch (chunkType) {
|
|
6970
7060
|
case "stream-start":
|
|
@@ -6974,9 +7064,6 @@ function runToolsTransformation({
|
|
|
6974
7064
|
case "reasoning-start":
|
|
6975
7065
|
case "reasoning-delta":
|
|
6976
7066
|
case "reasoning-end":
|
|
6977
|
-
case "tool-input-start":
|
|
6978
|
-
case "tool-input-delta":
|
|
6979
|
-
case "tool-input-end":
|
|
6980
7067
|
case "source":
|
|
6981
7068
|
case "response-metadata":
|
|
6982
7069
|
case "error":
|
|
@@ -6984,6 +7071,36 @@ function runToolsTransformation({
|
|
|
6984
7071
|
controller.enqueue(chunk);
|
|
6985
7072
|
break;
|
|
6986
7073
|
}
|
|
7074
|
+
case "tool-input-start": {
|
|
7075
|
+
activeToolCallToolNames.set(chunk.id, chunk.toolName);
|
|
7076
|
+
await ((_b = (_a23 = tools == null ? void 0 : tools[chunk.toolName]) == null ? void 0 : _a23.onInputStart) == null ? void 0 : _b.call(_a23, {
|
|
7077
|
+
toolCallId: chunk.id,
|
|
7078
|
+
messages,
|
|
7079
|
+
abortSignal,
|
|
7080
|
+
experimental_context
|
|
7081
|
+
}));
|
|
7082
|
+
controller.enqueue(chunk);
|
|
7083
|
+
break;
|
|
7084
|
+
}
|
|
7085
|
+
case "tool-input-delta": {
|
|
7086
|
+
const toolName = activeToolCallToolNames.get(chunk.id);
|
|
7087
|
+
if (toolName != null) {
|
|
7088
|
+
await ((_d = (_c = tools == null ? void 0 : tools[toolName]) == null ? void 0 : _c.onInputDelta) == null ? void 0 : _d.call(_c, {
|
|
7089
|
+
inputTextDelta: chunk.delta,
|
|
7090
|
+
toolCallId: chunk.id,
|
|
7091
|
+
messages,
|
|
7092
|
+
abortSignal,
|
|
7093
|
+
experimental_context
|
|
7094
|
+
}));
|
|
7095
|
+
}
|
|
7096
|
+
controller.enqueue(chunk);
|
|
7097
|
+
break;
|
|
7098
|
+
}
|
|
7099
|
+
case "tool-input-end": {
|
|
7100
|
+
activeToolCallToolNames.delete(chunk.id);
|
|
7101
|
+
controller.enqueue(chunk);
|
|
7102
|
+
break;
|
|
7103
|
+
}
|
|
6987
7104
|
case "file": {
|
|
6988
7105
|
controller.enqueue({
|
|
6989
7106
|
type: "file",
|
|
@@ -8205,7 +8322,6 @@ var DefaultStreamTextResult = class {
|
|
|
8205
8322
|
const stepToolCalls = [];
|
|
8206
8323
|
const stepToolOutputs = [];
|
|
8207
8324
|
let warnings;
|
|
8208
|
-
const activeToolCallToolNames = {};
|
|
8209
8325
|
let stepFinishReason = "other";
|
|
8210
8326
|
let stepRawFinishReason = void 0;
|
|
8211
8327
|
let hasReceivedTerminalChunk = false;
|
|
@@ -8352,16 +8468,7 @@ var DefaultStreamTextResult = class {
|
|
|
8352
8468
|
break;
|
|
8353
8469
|
}
|
|
8354
8470
|
case "tool-input-start": {
|
|
8355
|
-
activeToolCallToolNames[chunk.id] = chunk.toolName;
|
|
8356
8471
|
const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
|
|
8357
|
-
if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
|
|
8358
|
-
await tool2.onInputStart({
|
|
8359
|
-
toolCallId: chunk.id,
|
|
8360
|
-
messages: stepInputMessages,
|
|
8361
|
-
abortSignal,
|
|
8362
|
-
experimental_context
|
|
8363
|
-
});
|
|
8364
|
-
}
|
|
8365
8472
|
controller.enqueue({
|
|
8366
8473
|
...chunk,
|
|
8367
8474
|
dynamic: (_i2 = chunk.dynamic) != null ? _i2 : (tool2 == null ? void 0 : tool2.type) === "dynamic",
|
|
@@ -8370,22 +8477,10 @@ var DefaultStreamTextResult = class {
|
|
|
8370
8477
|
break;
|
|
8371
8478
|
}
|
|
8372
8479
|
case "tool-input-end": {
|
|
8373
|
-
delete activeToolCallToolNames[chunk.id];
|
|
8374
8480
|
controller.enqueue(chunk);
|
|
8375
8481
|
break;
|
|
8376
8482
|
}
|
|
8377
8483
|
case "tool-input-delta": {
|
|
8378
|
-
const toolName = activeToolCallToolNames[chunk.id];
|
|
8379
|
-
const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
|
|
8380
|
-
if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
|
|
8381
|
-
await tool2.onInputDelta({
|
|
8382
|
-
inputTextDelta: chunk.delta,
|
|
8383
|
-
toolCallId: chunk.id,
|
|
8384
|
-
messages: stepInputMessages,
|
|
8385
|
-
abortSignal,
|
|
8386
|
-
experimental_context
|
|
8387
|
-
});
|
|
8388
|
-
}
|
|
8389
8484
|
controller.enqueue(chunk);
|
|
8390
8485
|
break;
|
|
8391
8486
|
}
|
|
@@ -8992,10 +9087,14 @@ var DefaultStreamTextResult = class {
|
|
|
8992
9087
|
break;
|
|
8993
9088
|
}
|
|
8994
9089
|
case "tool-approval-request": {
|
|
9090
|
+
const inputSchemaInput = getToolCallInputSchemaInput(
|
|
9091
|
+
part.toolCall
|
|
9092
|
+
);
|
|
8995
9093
|
controller.enqueue({
|
|
8996
9094
|
type: "tool-approval-request",
|
|
8997
9095
|
approvalId: part.approvalId,
|
|
8998
9096
|
toolCallId: part.toolCall.toolCallId,
|
|
9097
|
+
...inputSchemaInput != null && !isDeepEqualData(inputSchemaInput.value, part.toolCall.input) ? { inputSchemaInput: inputSchemaInput.value } : {},
|
|
8999
9098
|
...part.signature != null ? { signature: part.signature } : {}
|
|
9000
9099
|
});
|
|
9001
9100
|
break;
|
|
@@ -9586,6 +9685,12 @@ async function convertToModelMessages(messages, options) {
|
|
|
9586
9685
|
type: "tool-approval-request",
|
|
9587
9686
|
approvalId: part.approval.id,
|
|
9588
9687
|
toolCallId: part.toolCallId,
|
|
9688
|
+
...Object.prototype.hasOwnProperty.call(
|
|
9689
|
+
part.approval,
|
|
9690
|
+
"inputSchemaInput"
|
|
9691
|
+
) ? {
|
|
9692
|
+
inputSchemaInput: part.approval.inputSchemaInput
|
|
9693
|
+
} : {},
|
|
9589
9694
|
...part.approval.signature != null ? { signature: part.approval.signature } : {}
|
|
9590
9695
|
});
|
|
9591
9696
|
}
|
|
@@ -9734,8 +9839,29 @@ function asDynamicToolPart(toolPart) {
|
|
|
9734
9839
|
toolName: type.slice(5)
|
|
9735
9840
|
};
|
|
9736
9841
|
}
|
|
9737
|
-
|
|
9738
|
-
|
|
9842
|
+
function getToolPartInputSchemaInput(toolPart) {
|
|
9843
|
+
return toolPart.approval != null && Object.prototype.hasOwnProperty.call(toolPart.approval, "inputSchemaInput") ? { value: toolPart.approval.inputSchemaInput } : void 0;
|
|
9844
|
+
}
|
|
9845
|
+
var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(() => {
|
|
9846
|
+
const approvalRequestedSchema = import_v48.z.object({
|
|
9847
|
+
id: import_v48.z.string(),
|
|
9848
|
+
approved: import_v48.z.never().optional(),
|
|
9849
|
+
descriptor: import_v48.z.unknown().optional(),
|
|
9850
|
+
reason: import_v48.z.never().optional(),
|
|
9851
|
+
signature: import_v48.z.string().optional(),
|
|
9852
|
+
inputSchemaInput: import_v48.z.unknown().optional()
|
|
9853
|
+
});
|
|
9854
|
+
const approvalRespondedSchema = approvalRequestedSchema.extend({
|
|
9855
|
+
approved: import_v48.z.boolean(),
|
|
9856
|
+
reason: import_v48.z.string().optional()
|
|
9857
|
+
});
|
|
9858
|
+
const approvalGrantedSchema = approvalRespondedSchema.extend({
|
|
9859
|
+
approved: import_v48.z.literal(true)
|
|
9860
|
+
});
|
|
9861
|
+
const approvalDeniedSchema = approvalRespondedSchema.extend({
|
|
9862
|
+
approved: import_v48.z.literal(false)
|
|
9863
|
+
});
|
|
9864
|
+
return (0, import_provider_utils24.zodSchema)(
|
|
9739
9865
|
import_v48.z.array(
|
|
9740
9866
|
import_v48.z.object({
|
|
9741
9867
|
id: import_v48.z.string(),
|
|
@@ -9823,13 +9949,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9823
9949
|
output: import_v48.z.never().optional(),
|
|
9824
9950
|
errorText: import_v48.z.never().optional(),
|
|
9825
9951
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9826
|
-
approval:
|
|
9827
|
-
id: import_v48.z.string(),
|
|
9828
|
-
approved: import_v48.z.never().optional(),
|
|
9829
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9830
|
-
reason: import_v48.z.never().optional(),
|
|
9831
|
-
signature: import_v48.z.string().optional()
|
|
9832
|
-
})
|
|
9952
|
+
approval: approvalRequestedSchema
|
|
9833
9953
|
}),
|
|
9834
9954
|
import_v48.z.object({
|
|
9835
9955
|
type: import_v48.z.literal("dynamic-tool"),
|
|
@@ -9842,13 +9962,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9842
9962
|
output: import_v48.z.never().optional(),
|
|
9843
9963
|
errorText: import_v48.z.never().optional(),
|
|
9844
9964
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9845
|
-
approval:
|
|
9846
|
-
id: import_v48.z.string(),
|
|
9847
|
-
approved: import_v48.z.boolean(),
|
|
9848
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9849
|
-
reason: import_v48.z.string().optional(),
|
|
9850
|
-
signature: import_v48.z.string().optional()
|
|
9851
|
-
})
|
|
9965
|
+
approval: approvalRespondedSchema
|
|
9852
9966
|
}),
|
|
9853
9967
|
import_v48.z.object({
|
|
9854
9968
|
type: import_v48.z.literal("dynamic-tool"),
|
|
@@ -9863,13 +9977,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9863
9977
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9864
9978
|
resultProviderMetadata: providerMetadataSchema.optional(),
|
|
9865
9979
|
preliminary: import_v48.z.boolean().optional(),
|
|
9866
|
-
approval:
|
|
9867
|
-
id: import_v48.z.string(),
|
|
9868
|
-
approved: import_v48.z.literal(true),
|
|
9869
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9870
|
-
reason: import_v48.z.string().optional(),
|
|
9871
|
-
signature: import_v48.z.string().optional()
|
|
9872
|
-
}).optional()
|
|
9980
|
+
approval: approvalGrantedSchema.optional()
|
|
9873
9981
|
}),
|
|
9874
9982
|
import_v48.z.object({
|
|
9875
9983
|
type: import_v48.z.literal("dynamic-tool"),
|
|
@@ -9884,13 +9992,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9884
9992
|
errorText: import_v48.z.string(),
|
|
9885
9993
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9886
9994
|
resultProviderMetadata: providerMetadataSchema.optional(),
|
|
9887
|
-
approval:
|
|
9888
|
-
id: import_v48.z.string(),
|
|
9889
|
-
approved: import_v48.z.literal(true),
|
|
9890
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9891
|
-
reason: import_v48.z.string().optional(),
|
|
9892
|
-
signature: import_v48.z.string().optional()
|
|
9893
|
-
}).optional()
|
|
9995
|
+
approval: approvalGrantedSchema.optional()
|
|
9894
9996
|
}),
|
|
9895
9997
|
import_v48.z.object({
|
|
9896
9998
|
type: import_v48.z.literal("dynamic-tool"),
|
|
@@ -9903,13 +10005,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9903
10005
|
output: import_v48.z.never().optional(),
|
|
9904
10006
|
errorText: import_v48.z.never().optional(),
|
|
9905
10007
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9906
|
-
approval:
|
|
9907
|
-
id: import_v48.z.string(),
|
|
9908
|
-
approved: import_v48.z.literal(false),
|
|
9909
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9910
|
-
reason: import_v48.z.string().optional(),
|
|
9911
|
-
signature: import_v48.z.string().optional()
|
|
9912
|
-
})
|
|
10008
|
+
approval: approvalDeniedSchema
|
|
9913
10009
|
}),
|
|
9914
10010
|
import_v48.z.object({
|
|
9915
10011
|
type: import_v48.z.string().startsWith("tool-"),
|
|
@@ -9945,13 +10041,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9945
10041
|
output: import_v48.z.never().optional(),
|
|
9946
10042
|
errorText: import_v48.z.never().optional(),
|
|
9947
10043
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9948
|
-
approval:
|
|
9949
|
-
id: import_v48.z.string(),
|
|
9950
|
-
approved: import_v48.z.never().optional(),
|
|
9951
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9952
|
-
reason: import_v48.z.never().optional(),
|
|
9953
|
-
signature: import_v48.z.string().optional()
|
|
9954
|
-
})
|
|
10044
|
+
approval: approvalRequestedSchema
|
|
9955
10045
|
}),
|
|
9956
10046
|
import_v48.z.object({
|
|
9957
10047
|
type: import_v48.z.string().startsWith("tool-"),
|
|
@@ -9963,13 +10053,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9963
10053
|
output: import_v48.z.never().optional(),
|
|
9964
10054
|
errorText: import_v48.z.never().optional(),
|
|
9965
10055
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9966
|
-
approval:
|
|
9967
|
-
id: import_v48.z.string(),
|
|
9968
|
-
approved: import_v48.z.boolean(),
|
|
9969
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9970
|
-
reason: import_v48.z.string().optional(),
|
|
9971
|
-
signature: import_v48.z.string().optional()
|
|
9972
|
-
})
|
|
10056
|
+
approval: approvalRespondedSchema
|
|
9973
10057
|
}),
|
|
9974
10058
|
import_v48.z.object({
|
|
9975
10059
|
type: import_v48.z.string().startsWith("tool-"),
|
|
@@ -9983,13 +10067,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9983
10067
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
9984
10068
|
resultProviderMetadata: providerMetadataSchema.optional(),
|
|
9985
10069
|
preliminary: import_v48.z.boolean().optional(),
|
|
9986
|
-
approval:
|
|
9987
|
-
id: import_v48.z.string(),
|
|
9988
|
-
approved: import_v48.z.literal(true),
|
|
9989
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
9990
|
-
reason: import_v48.z.string().optional(),
|
|
9991
|
-
signature: import_v48.z.string().optional()
|
|
9992
|
-
}).optional()
|
|
10070
|
+
approval: approvalGrantedSchema.optional()
|
|
9993
10071
|
}),
|
|
9994
10072
|
import_v48.z.object({
|
|
9995
10073
|
type: import_v48.z.string().startsWith("tool-"),
|
|
@@ -10003,13 +10081,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
10003
10081
|
errorText: import_v48.z.string(),
|
|
10004
10082
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
10005
10083
|
resultProviderMetadata: providerMetadataSchema.optional(),
|
|
10006
|
-
approval:
|
|
10007
|
-
id: import_v48.z.string(),
|
|
10008
|
-
approved: import_v48.z.literal(true),
|
|
10009
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
10010
|
-
reason: import_v48.z.string().optional(),
|
|
10011
|
-
signature: import_v48.z.string().optional()
|
|
10012
|
-
}).optional()
|
|
10084
|
+
approval: approvalGrantedSchema.optional()
|
|
10013
10085
|
}),
|
|
10014
10086
|
import_v48.z.object({
|
|
10015
10087
|
type: import_v48.z.string().startsWith("tool-"),
|
|
@@ -10021,13 +10093,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
10021
10093
|
output: import_v48.z.never().optional(),
|
|
10022
10094
|
errorText: import_v48.z.never().optional(),
|
|
10023
10095
|
callProviderMetadata: providerMetadataSchema.optional(),
|
|
10024
|
-
approval:
|
|
10025
|
-
id: import_v48.z.string(),
|
|
10026
|
-
approved: import_v48.z.literal(false),
|
|
10027
|
-
descriptor: import_v48.z.unknown().optional(),
|
|
10028
|
-
reason: import_v48.z.string().optional(),
|
|
10029
|
-
signature: import_v48.z.string().optional()
|
|
10030
|
-
})
|
|
10096
|
+
approval: approvalDeniedSchema
|
|
10031
10097
|
})
|
|
10032
10098
|
])
|
|
10033
10099
|
)
|
|
@@ -10045,8 +10111,8 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
10045
10111
|
}
|
|
10046
10112
|
})
|
|
10047
10113
|
).nonempty("Messages array must not be empty")
|
|
10048
|
-
)
|
|
10049
|
-
);
|
|
10114
|
+
);
|
|
10115
|
+
});
|
|
10050
10116
|
async function safeValidateUIMessagesInternal({
|
|
10051
10117
|
messages,
|
|
10052
10118
|
metadataSchema,
|
|
@@ -10072,7 +10138,7 @@ async function safeValidateUIMessagesInternal({
|
|
|
10072
10138
|
});
|
|
10073
10139
|
if (metadataSchema) {
|
|
10074
10140
|
for (const [msgIdx, message] of validatedMessages.entries()) {
|
|
10075
|
-
await (0, import_provider_utils24.validateTypes)({
|
|
10141
|
+
message.metadata = await (0, import_provider_utils24.validateTypes)({
|
|
10076
10142
|
value: message.metadata,
|
|
10077
10143
|
schema: metadataSchema,
|
|
10078
10144
|
context: {
|
|
@@ -10104,7 +10170,7 @@ async function safeValidateUIMessagesInternal({
|
|
|
10104
10170
|
})
|
|
10105
10171
|
};
|
|
10106
10172
|
}
|
|
10107
|
-
await (0, import_provider_utils24.validateTypes)({
|
|
10173
|
+
dataPart.data = await (0, import_provider_utils24.validateTypes)({
|
|
10108
10174
|
value: dataPart.data,
|
|
10109
10175
|
schema: dataSchema,
|
|
10110
10176
|
context: {
|
|
@@ -10146,35 +10212,34 @@ async function safeValidateUIMessagesInternal({
|
|
|
10146
10212
|
entityName: toolName,
|
|
10147
10213
|
entityId: toolPart.toolCallId
|
|
10148
10214
|
};
|
|
10215
|
+
const inputSchemaInput = getToolPartInputSchemaInput(toolPart);
|
|
10216
|
+
const inputToValidate = inputSchemaInput == null ? toolPart.input : inputSchemaInput.value;
|
|
10149
10217
|
let convertToDynamic = false;
|
|
10150
|
-
if (toolPart.state
|
|
10151
|
-
if (toolPart.input !== void 0) {
|
|
10152
|
-
const result = await (0, import_provider_utils24.safeValidateTypes)({
|
|
10153
|
-
value: toolPart.input,
|
|
10154
|
-
schema: tool2.inputSchema,
|
|
10155
|
-
context: inputValidationContext
|
|
10156
|
-
});
|
|
10157
|
-
convertToDynamic = !result.success;
|
|
10158
|
-
}
|
|
10159
|
-
} else if (toolPart.state === "output-available") {
|
|
10218
|
+
if (toolPart.state !== "input-streaming" && (toolPart.state !== "output-error" || inputSchemaInput != null || toolPart.input !== void 0)) {
|
|
10160
10219
|
const result = await (0, import_provider_utils24.safeValidateTypes)({
|
|
10161
|
-
value:
|
|
10220
|
+
value: inputToValidate,
|
|
10162
10221
|
schema: tool2.inputSchema,
|
|
10163
10222
|
context: inputValidationContext
|
|
10164
10223
|
});
|
|
10224
|
+
let inputError;
|
|
10165
10225
|
if (!result.success) {
|
|
10166
|
-
|
|
10226
|
+
inputError = result.error;
|
|
10227
|
+
} else if (inputSchemaInput != null) {
|
|
10228
|
+
if (!isDeepEqualData(result.value, toolPart.input)) {
|
|
10229
|
+
inputError = new import_provider31.TypeValidationError({
|
|
10230
|
+
value: toolPart.input,
|
|
10231
|
+
cause: "Tool input does not match the output reconstructed from inputSchemaInput.",
|
|
10232
|
+
context: inputValidationContext
|
|
10233
|
+
});
|
|
10234
|
+
}
|
|
10235
|
+
}
|
|
10236
|
+
if (inputError != null) {
|
|
10237
|
+
if (toolPart.state === "output-error" || toolPart.state === "output-available" && isEmptyObject(toolPart.input)) {
|
|
10167
10238
|
convertToDynamic = true;
|
|
10168
10239
|
} else {
|
|
10169
|
-
throw
|
|
10240
|
+
throw inputError;
|
|
10170
10241
|
}
|
|
10171
10242
|
}
|
|
10172
|
-
} else if (toolPart.state === "input-available" || toolPart.state === "approval-requested" || toolPart.state === "approval-responded" || toolPart.state === "output-denied") {
|
|
10173
|
-
await (0, import_provider_utils24.validateTypes)({
|
|
10174
|
-
value: toolPart.input,
|
|
10175
|
-
schema: tool2.inputSchema,
|
|
10176
|
-
context: inputValidationContext
|
|
10177
|
-
});
|
|
10178
10243
|
}
|
|
10179
10244
|
if (toolPart.state === "output-available" && tool2.outputSchema) {
|
|
10180
10245
|
await (0, import_provider_utils24.validateTypes)({
|
|
@@ -10431,7 +10496,7 @@ var DefaultEmbedResult = class {
|
|
|
10431
10496
|
};
|
|
10432
10497
|
|
|
10433
10498
|
// src/embed/embed-many.ts
|
|
10434
|
-
var
|
|
10499
|
+
var import_provider_utils28 = require("@ai-sdk/provider-utils");
|
|
10435
10500
|
|
|
10436
10501
|
// src/model/get-embedding-model-max-input-bytes-per-call.ts
|
|
10437
10502
|
var import_provider_utils26 = require("@ai-sdk/provider-utils");
|
|
@@ -10439,6 +10504,12 @@ function getEmbeddingModelMaxInputBytesPerCall(model) {
|
|
|
10439
10504
|
return model[import_provider_utils26.EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL];
|
|
10440
10505
|
}
|
|
10441
10506
|
|
|
10507
|
+
// src/model/get-embedding-model-provider-options-transformer.ts
|
|
10508
|
+
var import_provider_utils27 = require("@ai-sdk/provider-utils");
|
|
10509
|
+
function getEmbeddingModelProviderOptionsTransformer(model) {
|
|
10510
|
+
return model[import_provider_utils27.EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER];
|
|
10511
|
+
}
|
|
10512
|
+
|
|
10442
10513
|
// src/util/split-array.ts
|
|
10443
10514
|
function splitArray(array2, chunkSize) {
|
|
10444
10515
|
if (chunkSize <= 0) {
|
|
@@ -10467,7 +10538,7 @@ async function embedMany({
|
|
|
10467
10538
|
maxRetries: maxRetriesArg,
|
|
10468
10539
|
abortSignal
|
|
10469
10540
|
});
|
|
10470
|
-
const headersWithUserAgent = (0,
|
|
10541
|
+
const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
|
|
10471
10542
|
headers != null ? headers : {},
|
|
10472
10543
|
`ai/${VERSION}`
|
|
10473
10544
|
);
|
|
@@ -10493,7 +10564,6 @@ async function embedMany({
|
|
|
10493
10564
|
}),
|
|
10494
10565
|
tracer,
|
|
10495
10566
|
fn: async (span) => {
|
|
10496
|
-
var _a23;
|
|
10497
10567
|
const [
|
|
10498
10568
|
maxEmbeddingsPerCall,
|
|
10499
10569
|
maxInputBytesPerCall,
|
|
@@ -10525,7 +10595,7 @@ async function embedMany({
|
|
|
10525
10595
|
}),
|
|
10526
10596
|
tracer,
|
|
10527
10597
|
fn: async (doEmbedSpan) => {
|
|
10528
|
-
var
|
|
10598
|
+
var _a23, _b;
|
|
10529
10599
|
const modelResponse = await model.doEmbed({
|
|
10530
10600
|
values,
|
|
10531
10601
|
abortSignal,
|
|
@@ -10533,7 +10603,7 @@ async function embedMany({
|
|
|
10533
10603
|
providerOptions
|
|
10534
10604
|
});
|
|
10535
10605
|
const embeddings3 = modelResponse.embeddings;
|
|
10536
|
-
const usage2 = (
|
|
10606
|
+
const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
10537
10607
|
doEmbedSpan.setAttributes(
|
|
10538
10608
|
await selectTelemetryAttributes({
|
|
10539
10609
|
telemetry,
|
|
@@ -10587,6 +10657,7 @@ async function embedMany({
|
|
|
10587
10657
|
maxEmbeddingsPerCall: hasEmbeddingLimit ? maxEmbeddingsPerCall : Infinity,
|
|
10588
10658
|
maxInputBytesPerCall: hasInputByteLimit ? maxInputBytesPerCall : Infinity
|
|
10589
10659
|
});
|
|
10660
|
+
const providerOptionsTransformer = getEmbeddingModelProviderOptionsTransformer(model);
|
|
10590
10661
|
const embeddings = [];
|
|
10591
10662
|
const warnings = [];
|
|
10592
10663
|
const responses = [];
|
|
@@ -10596,9 +10667,18 @@ async function embedMany({
|
|
|
10596
10667
|
valueChunks,
|
|
10597
10668
|
supportsParallelCalls ? maxParallelCalls : 1
|
|
10598
10669
|
);
|
|
10670
|
+
let nextChunkStartIndex = 0;
|
|
10599
10671
|
for (const parallelChunk of parallelChunks) {
|
|
10600
10672
|
const results = await Promise.all(
|
|
10601
|
-
parallelChunk.map((chunk) => {
|
|
10673
|
+
parallelChunk.map(async (chunk) => {
|
|
10674
|
+
const startIndex = nextChunkStartIndex;
|
|
10675
|
+
nextChunkStartIndex += chunk.length;
|
|
10676
|
+
const chunkProviderOptions = providerOptionsTransformer ? await providerOptionsTransformer({
|
|
10677
|
+
providerOptions,
|
|
10678
|
+
values,
|
|
10679
|
+
startIndex,
|
|
10680
|
+
endIndex: startIndex + chunk.length
|
|
10681
|
+
}) : providerOptions;
|
|
10602
10682
|
return retry(() => {
|
|
10603
10683
|
return recordSpan({
|
|
10604
10684
|
name: "ai.embedMany.doEmbed",
|
|
@@ -10618,15 +10698,15 @@ async function embedMany({
|
|
|
10618
10698
|
}),
|
|
10619
10699
|
tracer,
|
|
10620
10700
|
fn: async (doEmbedSpan) => {
|
|
10621
|
-
var
|
|
10701
|
+
var _a23, _b;
|
|
10622
10702
|
const modelResponse = await model.doEmbed({
|
|
10623
10703
|
values: chunk,
|
|
10624
10704
|
abortSignal,
|
|
10625
10705
|
headers: headersWithUserAgent,
|
|
10626
|
-
providerOptions
|
|
10706
|
+
providerOptions: chunkProviderOptions
|
|
10627
10707
|
});
|
|
10628
10708
|
const embeddings2 = modelResponse.embeddings;
|
|
10629
|
-
const usage = (
|
|
10709
|
+
const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
10630
10710
|
doEmbedSpan.setAttributes(
|
|
10631
10711
|
await selectTelemetryAttributes({
|
|
10632
10712
|
telemetry,
|
|
@@ -10665,7 +10745,7 @@ async function embedMany({
|
|
|
10665
10745
|
result.providerMetadata
|
|
10666
10746
|
)) {
|
|
10667
10747
|
providerMetadata[providerName] = {
|
|
10668
|
-
...
|
|
10748
|
+
...providerMetadata[providerName],
|
|
10669
10749
|
...metadata
|
|
10670
10750
|
};
|
|
10671
10751
|
}
|
|
@@ -10743,7 +10823,7 @@ var DefaultEmbedManyResult = class {
|
|
|
10743
10823
|
};
|
|
10744
10824
|
|
|
10745
10825
|
// src/generate-image/generate-image.ts
|
|
10746
|
-
var
|
|
10826
|
+
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
10747
10827
|
var RetryableNoImageResultError = class extends Error {
|
|
10748
10828
|
constructor() {
|
|
10749
10829
|
super("No image generated.");
|
|
@@ -10765,7 +10845,7 @@ async function generateImage({
|
|
|
10765
10845
|
}) {
|
|
10766
10846
|
var _a23, _b;
|
|
10767
10847
|
const model = resolveImageModel(modelArg);
|
|
10768
|
-
const headersWithUserAgent = (0,
|
|
10848
|
+
const headersWithUserAgent = (0, import_provider_utils29.withUserAgentSuffix)(
|
|
10769
10849
|
headers != null ? headers : {},
|
|
10770
10850
|
`ai/${VERSION}`
|
|
10771
10851
|
);
|
|
@@ -10925,7 +11005,7 @@ function toImageModelV3File(dataContent) {
|
|
|
10925
11005
|
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
10926
11006
|
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
10927
11007
|
if (base64Content != null) {
|
|
10928
|
-
const uint8Data2 = (0,
|
|
11008
|
+
const uint8Data2 = (0, import_provider_utils29.convertBase64ToUint8Array)(base64Content);
|
|
10929
11009
|
return {
|
|
10930
11010
|
type: "file",
|
|
10931
11011
|
data: uint8Data2,
|
|
@@ -10951,11 +11031,11 @@ function toImageModelV3File(dataContent) {
|
|
|
10951
11031
|
var experimental_generateImage = generateImage;
|
|
10952
11032
|
|
|
10953
11033
|
// src/generate-object/generate-object.ts
|
|
10954
|
-
var
|
|
11034
|
+
var import_provider_utils32 = require("@ai-sdk/provider-utils");
|
|
10955
11035
|
|
|
10956
11036
|
// src/generate-object/output-strategy.ts
|
|
10957
11037
|
var import_provider32 = require("@ai-sdk/provider");
|
|
10958
|
-
var
|
|
11038
|
+
var import_provider_utils30 = require("@ai-sdk/provider-utils");
|
|
10959
11039
|
var noSchemaOutputStrategy = {
|
|
10960
11040
|
type: "no-schema",
|
|
10961
11041
|
jsonSchema: async () => void 0,
|
|
@@ -10994,7 +11074,7 @@ var objectOutputStrategy = (schema) => ({
|
|
|
10994
11074
|
};
|
|
10995
11075
|
},
|
|
10996
11076
|
async validateFinalResult(value) {
|
|
10997
|
-
return (0,
|
|
11077
|
+
return (0, import_provider_utils30.safeValidateTypes)({ value, schema });
|
|
10998
11078
|
},
|
|
10999
11079
|
createElementStream() {
|
|
11000
11080
|
throw new import_provider32.UnsupportedFunctionalityError({
|
|
@@ -11040,7 +11120,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
11040
11120
|
const resultArray = [];
|
|
11041
11121
|
for (let i = 0; i < inputArray.length; i++) {
|
|
11042
11122
|
const element = inputArray[i];
|
|
11043
|
-
const result = await (0,
|
|
11123
|
+
const result = await (0, import_provider_utils30.safeValidateTypes)({ value: element, schema });
|
|
11044
11124
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
11045
11125
|
continue;
|
|
11046
11126
|
}
|
|
@@ -11082,7 +11162,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
11082
11162
|
const inputArray = value.elements;
|
|
11083
11163
|
const resultArray = [];
|
|
11084
11164
|
for (const element of inputArray) {
|
|
11085
|
-
const result = await (0,
|
|
11165
|
+
const result = await (0, import_provider_utils30.safeValidateTypes)({ value: element, schema });
|
|
11086
11166
|
if (!result.success) {
|
|
11087
11167
|
return result;
|
|
11088
11168
|
}
|
|
@@ -11201,9 +11281,9 @@ function getOutputStrategy({
|
|
|
11201
11281
|
}) {
|
|
11202
11282
|
switch (output) {
|
|
11203
11283
|
case "object":
|
|
11204
|
-
return objectOutputStrategy((0,
|
|
11284
|
+
return objectOutputStrategy((0, import_provider_utils30.asSchema)(schema));
|
|
11205
11285
|
case "array":
|
|
11206
|
-
return arrayOutputStrategy((0,
|
|
11286
|
+
return arrayOutputStrategy((0, import_provider_utils30.asSchema)(schema));
|
|
11207
11287
|
case "enum":
|
|
11208
11288
|
return enumOutputStrategy(enumValues);
|
|
11209
11289
|
case "no-schema":
|
|
@@ -11217,9 +11297,9 @@ function getOutputStrategy({
|
|
|
11217
11297
|
|
|
11218
11298
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
11219
11299
|
var import_provider33 = require("@ai-sdk/provider");
|
|
11220
|
-
var
|
|
11300
|
+
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
11221
11301
|
async function parseAndValidateObjectResult(result, outputStrategy, context2) {
|
|
11222
|
-
const parseResult = await (0,
|
|
11302
|
+
const parseResult = await (0, import_provider_utils31.safeParseJSON)({ text: result });
|
|
11223
11303
|
if (!parseResult.success) {
|
|
11224
11304
|
throw new NoObjectGeneratedError({
|
|
11225
11305
|
message: "No object generated: could not parse the response.",
|
|
@@ -11391,7 +11471,7 @@ function validateObjectGenerationInput({
|
|
|
11391
11471
|
}
|
|
11392
11472
|
|
|
11393
11473
|
// src/generate-object/generate-object.ts
|
|
11394
|
-
var originalGenerateId3 = (0,
|
|
11474
|
+
var originalGenerateId3 = (0, import_provider_utils32.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
11395
11475
|
async function generateObject(options) {
|
|
11396
11476
|
const {
|
|
11397
11477
|
model: modelArg,
|
|
@@ -11437,7 +11517,7 @@ async function generateObject(options) {
|
|
|
11437
11517
|
enumValues
|
|
11438
11518
|
});
|
|
11439
11519
|
const callSettings = prepareCallSettings(settings);
|
|
11440
|
-
const headersWithUserAgent = (0,
|
|
11520
|
+
const headersWithUserAgent = (0, import_provider_utils32.withUserAgentSuffix)(
|
|
11441
11521
|
headers != null ? headers : {},
|
|
11442
11522
|
`ai/${VERSION}`
|
|
11443
11523
|
);
|
|
@@ -11665,7 +11745,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
11665
11745
|
};
|
|
11666
11746
|
|
|
11667
11747
|
// src/generate-object/stream-object.ts
|
|
11668
|
-
var
|
|
11748
|
+
var import_provider_utils34 = require("@ai-sdk/provider-utils");
|
|
11669
11749
|
|
|
11670
11750
|
// src/util/cosine-similarity.ts
|
|
11671
11751
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -11713,41 +11793,6 @@ function getTextFromDataUrl(dataUrl) {
|
|
|
11713
11793
|
}
|
|
11714
11794
|
}
|
|
11715
11795
|
|
|
11716
|
-
// src/util/is-deep-equal-data.ts
|
|
11717
|
-
function isDeepEqualData(obj1, obj2) {
|
|
11718
|
-
if (obj1 === obj2)
|
|
11719
|
-
return true;
|
|
11720
|
-
if (obj1 == null || obj2 == null)
|
|
11721
|
-
return false;
|
|
11722
|
-
if (typeof obj1 !== "object" && typeof obj2 !== "object")
|
|
11723
|
-
return obj1 === obj2;
|
|
11724
|
-
if (obj1.constructor !== obj2.constructor)
|
|
11725
|
-
return false;
|
|
11726
|
-
if (obj1 instanceof Date && obj2 instanceof Date) {
|
|
11727
|
-
return obj1.getTime() === obj2.getTime();
|
|
11728
|
-
}
|
|
11729
|
-
if (Array.isArray(obj1)) {
|
|
11730
|
-
if (obj1.length !== obj2.length)
|
|
11731
|
-
return false;
|
|
11732
|
-
for (let i = 0; i < obj1.length; i++) {
|
|
11733
|
-
if (!isDeepEqualData(obj1[i], obj2[i]))
|
|
11734
|
-
return false;
|
|
11735
|
-
}
|
|
11736
|
-
return true;
|
|
11737
|
-
}
|
|
11738
|
-
const keys1 = Object.keys(obj1);
|
|
11739
|
-
const keys2 = Object.keys(obj2);
|
|
11740
|
-
if (keys1.length !== keys2.length)
|
|
11741
|
-
return false;
|
|
11742
|
-
for (const key of keys1) {
|
|
11743
|
-
if (!keys2.includes(key))
|
|
11744
|
-
return false;
|
|
11745
|
-
if (!isDeepEqualData(obj1[key], obj2[key]))
|
|
11746
|
-
return false;
|
|
11747
|
-
}
|
|
11748
|
-
return true;
|
|
11749
|
-
}
|
|
11750
|
-
|
|
11751
11796
|
// src/util/serial-job-executor.ts
|
|
11752
11797
|
var SerialJobExecutor = class {
|
|
11753
11798
|
constructor() {
|
|
@@ -11781,7 +11826,7 @@ var SerialJobExecutor = class {
|
|
|
11781
11826
|
};
|
|
11782
11827
|
|
|
11783
11828
|
// src/util/simulate-readable-stream.ts
|
|
11784
|
-
var
|
|
11829
|
+
var import_provider_utils33 = require("@ai-sdk/provider-utils");
|
|
11785
11830
|
function simulateReadableStream({
|
|
11786
11831
|
chunks,
|
|
11787
11832
|
initialDelayInMs = 0,
|
|
@@ -11789,7 +11834,7 @@ function simulateReadableStream({
|
|
|
11789
11834
|
_internal
|
|
11790
11835
|
}) {
|
|
11791
11836
|
var _a23;
|
|
11792
|
-
const delay = (_a23 = _internal == null ? void 0 : _internal.delay) != null ? _a23 :
|
|
11837
|
+
const delay = (_a23 = _internal == null ? void 0 : _internal.delay) != null ? _a23 : import_provider_utils33.delay;
|
|
11793
11838
|
let index = 0;
|
|
11794
11839
|
return new ReadableStream({
|
|
11795
11840
|
async pull(controller) {
|
|
@@ -11804,7 +11849,7 @@ function simulateReadableStream({
|
|
|
11804
11849
|
}
|
|
11805
11850
|
|
|
11806
11851
|
// src/generate-object/stream-object.ts
|
|
11807
|
-
var originalGenerateId4 = (0,
|
|
11852
|
+
var originalGenerateId4 = (0, import_provider_utils34.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
11808
11853
|
async function markPromiseAsHandled(promise) {
|
|
11809
11854
|
try {
|
|
11810
11855
|
await promise;
|
|
@@ -11903,13 +11948,13 @@ var DefaultStreamObjectResult = class {
|
|
|
11903
11948
|
currentDate,
|
|
11904
11949
|
now: now2
|
|
11905
11950
|
}) {
|
|
11906
|
-
this._object = new
|
|
11907
|
-
this._usage = new
|
|
11908
|
-
this._providerMetadata = new
|
|
11909
|
-
this._warnings = new
|
|
11910
|
-
this._request = new
|
|
11911
|
-
this._response = new
|
|
11912
|
-
this._finishReason = new
|
|
11951
|
+
this._object = new import_provider_utils34.DelayedPromise();
|
|
11952
|
+
this._usage = new import_provider_utils34.DelayedPromise();
|
|
11953
|
+
this._providerMetadata = new import_provider_utils34.DelayedPromise();
|
|
11954
|
+
this._warnings = new import_provider_utils34.DelayedPromise();
|
|
11955
|
+
this._request = new import_provider_utils34.DelayedPromise();
|
|
11956
|
+
this._response = new import_provider_utils34.DelayedPromise();
|
|
11957
|
+
this._finishReason = new import_provider_utils34.DelayedPromise();
|
|
11913
11958
|
const model = resolveLanguageModel(modelArg);
|
|
11914
11959
|
const { maxRetries, retry } = prepareRetries({
|
|
11915
11960
|
maxRetries: maxRetriesArg,
|
|
@@ -12387,7 +12432,7 @@ var DefaultStreamObjectResult = class {
|
|
|
12387
12432
|
};
|
|
12388
12433
|
|
|
12389
12434
|
// src/generate-speech/generate-speech.ts
|
|
12390
|
-
var
|
|
12435
|
+
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
12391
12436
|
|
|
12392
12437
|
// src/generate-speech/generated-audio-file.ts
|
|
12393
12438
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -12433,7 +12478,7 @@ async function generateSpeech({
|
|
|
12433
12478
|
if (!resolvedModel) {
|
|
12434
12479
|
throw new Error("Model could not be resolved");
|
|
12435
12480
|
}
|
|
12436
|
-
const headersWithUserAgent = (0,
|
|
12481
|
+
const headersWithUserAgent = (0, import_provider_utils35.withUserAgentSuffix)(
|
|
12437
12482
|
headers != null ? headers : {},
|
|
12438
12483
|
`ai/${VERSION}`
|
|
12439
12484
|
);
|
|
@@ -12588,7 +12633,7 @@ function pruneMessages({
|
|
|
12588
12633
|
}
|
|
12589
12634
|
|
|
12590
12635
|
// src/generate-text/smooth-stream.ts
|
|
12591
|
-
var
|
|
12636
|
+
var import_provider_utils36 = require("@ai-sdk/provider-utils");
|
|
12592
12637
|
var import_provider34 = require("@ai-sdk/provider");
|
|
12593
12638
|
var CHUNKING_REGEXPS = {
|
|
12594
12639
|
word: /\S+\s+/m,
|
|
@@ -12600,7 +12645,7 @@ function isDocumentHidden() {
|
|
|
12600
12645
|
function smoothStream({
|
|
12601
12646
|
delayInMs = 10,
|
|
12602
12647
|
chunking = "word",
|
|
12603
|
-
_internal: { delay =
|
|
12648
|
+
_internal: { delay = import_provider_utils36.delay } = {}
|
|
12604
12649
|
} = {}) {
|
|
12605
12650
|
let detectChunk;
|
|
12606
12651
|
if (chunking != null && typeof chunking === "object" && "segment" in chunking && typeof chunking.segment === "function") {
|
|
@@ -12689,7 +12734,7 @@ function smoothStream({
|
|
|
12689
12734
|
}
|
|
12690
12735
|
|
|
12691
12736
|
// src/generate-video/generate-video.ts
|
|
12692
|
-
var
|
|
12737
|
+
var import_provider_utils37 = require("@ai-sdk/provider-utils");
|
|
12693
12738
|
var defaultDownload = createDownload();
|
|
12694
12739
|
async function experimental_generateVideo({
|
|
12695
12740
|
model: modelArg,
|
|
@@ -12712,7 +12757,7 @@ async function experimental_generateVideo({
|
|
|
12712
12757
|
}) {
|
|
12713
12758
|
var _a23, _b;
|
|
12714
12759
|
const model = resolveVideoModel(modelArg);
|
|
12715
|
-
const headersWithUserAgent = (0,
|
|
12760
|
+
const headersWithUserAgent = (0, import_provider_utils37.withUserAgentSuffix)(
|
|
12716
12761
|
headers != null ? headers : {},
|
|
12717
12762
|
`ai/${VERSION}`
|
|
12718
12763
|
);
|
|
@@ -12897,14 +12942,14 @@ function normalizeImageData(dataContent, { restrictToImages = true } = {}) {
|
|
|
12897
12942
|
}
|
|
12898
12943
|
if (dataContent.startsWith("data:")) {
|
|
12899
12944
|
const { mediaType, base64Content } = splitDataUrl(dataContent);
|
|
12900
|
-
const data = (0,
|
|
12945
|
+
const data = (0, import_provider_utils37.convertBase64ToUint8Array)(base64Content != null ? base64Content : "");
|
|
12901
12946
|
return {
|
|
12902
12947
|
type: "file",
|
|
12903
12948
|
mediaType: mediaType != null ? mediaType : detectFileMediaType(data, restrictToImages),
|
|
12904
12949
|
data
|
|
12905
12950
|
};
|
|
12906
12951
|
}
|
|
12907
|
-
const bytes = (0,
|
|
12952
|
+
const bytes = (0, import_provider_utils37.convertBase64ToUint8Array)(dataContent);
|
|
12908
12953
|
return {
|
|
12909
12954
|
type: "file",
|
|
12910
12955
|
mediaType: detectFileMediaType(bytes, restrictToImages),
|
|
@@ -13445,7 +13490,7 @@ var doWrap = ({
|
|
|
13445
13490
|
};
|
|
13446
13491
|
|
|
13447
13492
|
// src/middleware/wrap-embedding-model.ts
|
|
13448
|
-
var
|
|
13493
|
+
var import_provider_utils38 = require("@ai-sdk/provider-utils");
|
|
13449
13494
|
var wrapEmbeddingModel = ({
|
|
13450
13495
|
model,
|
|
13451
13496
|
middleware: middlewareArg,
|
|
@@ -13480,7 +13525,8 @@ var doWrap2 = ({
|
|
|
13480
13525
|
provider: (_a23 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a23 : model.provider,
|
|
13481
13526
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
13482
13527
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
13483
|
-
[
|
|
13528
|
+
[import_provider_utils38.EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL]: getEmbeddingModelMaxInputBytesPerCall(model),
|
|
13529
|
+
[import_provider_utils38.EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER]: getEmbeddingModelProviderOptionsTransformer(model),
|
|
13484
13530
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
13485
13531
|
async doEmbed(params) {
|
|
13486
13532
|
const transformedParams = await doTransform({ params });
|
|
@@ -13984,7 +14030,7 @@ var DefaultRerankResult = class {
|
|
|
13984
14030
|
};
|
|
13985
14031
|
|
|
13986
14032
|
// src/transcribe/transcribe.ts
|
|
13987
|
-
var
|
|
14033
|
+
var import_provider_utils39 = require("@ai-sdk/provider-utils");
|
|
13988
14034
|
var defaultDownload2 = createDownload();
|
|
13989
14035
|
async function transcribe({
|
|
13990
14036
|
model,
|
|
@@ -14003,7 +14049,7 @@ async function transcribe({
|
|
|
14003
14049
|
maxRetries: maxRetriesArg,
|
|
14004
14050
|
abortSignal
|
|
14005
14051
|
});
|
|
14006
|
-
const headersWithUserAgent = (0,
|
|
14052
|
+
const headersWithUserAgent = (0, import_provider_utils39.withUserAgentSuffix)(
|
|
14007
14053
|
headers != null ? headers : {},
|
|
14008
14054
|
`ai/${VERSION}`
|
|
14009
14055
|
);
|
|
@@ -14055,7 +14101,7 @@ var DefaultTranscriptionResult = class {
|
|
|
14055
14101
|
};
|
|
14056
14102
|
|
|
14057
14103
|
// src/ui/call-completion-api.ts
|
|
14058
|
-
var
|
|
14104
|
+
var import_provider_utils40 = require("@ai-sdk/provider-utils");
|
|
14059
14105
|
|
|
14060
14106
|
// src/ui/process-text-stream.ts
|
|
14061
14107
|
async function processTextStream({
|
|
@@ -14103,13 +14149,13 @@ async function callCompletionApi({
|
|
|
14103
14149
|
...body
|
|
14104
14150
|
}),
|
|
14105
14151
|
credentials,
|
|
14106
|
-
headers: (0,
|
|
14152
|
+
headers: (0, import_provider_utils40.withUserAgentSuffix)(
|
|
14107
14153
|
{
|
|
14108
14154
|
"Content-Type": "application/json",
|
|
14109
14155
|
...headers
|
|
14110
14156
|
},
|
|
14111
14157
|
`ai-sdk/${VERSION}`,
|
|
14112
|
-
(0,
|
|
14158
|
+
(0, import_provider_utils40.getRuntimeEnvironmentUserAgent)()
|
|
14113
14159
|
),
|
|
14114
14160
|
signal: abortController.signal
|
|
14115
14161
|
}).catch((err) => {
|
|
@@ -14137,7 +14183,7 @@ async function callCompletionApi({
|
|
|
14137
14183
|
}
|
|
14138
14184
|
case "data": {
|
|
14139
14185
|
await consumeStream({
|
|
14140
|
-
stream: (0,
|
|
14186
|
+
stream: (0, import_provider_utils40.parseJsonEventStream)({
|
|
14141
14187
|
stream: response.body,
|
|
14142
14188
|
schema: uiMessageChunkSchema
|
|
14143
14189
|
}).pipeThrough(
|
|
@@ -14189,7 +14235,7 @@ async function callCompletionApi({
|
|
|
14189
14235
|
}
|
|
14190
14236
|
|
|
14191
14237
|
// src/ui/chat.ts
|
|
14192
|
-
var
|
|
14238
|
+
var import_provider_utils43 = require("@ai-sdk/provider-utils");
|
|
14193
14239
|
|
|
14194
14240
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
14195
14241
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -14222,10 +14268,10 @@ async function convertFileListToFileUIParts(files) {
|
|
|
14222
14268
|
}
|
|
14223
14269
|
|
|
14224
14270
|
// src/ui/default-chat-transport.ts
|
|
14225
|
-
var
|
|
14271
|
+
var import_provider_utils42 = require("@ai-sdk/provider-utils");
|
|
14226
14272
|
|
|
14227
14273
|
// src/ui/http-chat-transport.ts
|
|
14228
|
-
var
|
|
14274
|
+
var import_provider_utils41 = require("@ai-sdk/provider-utils");
|
|
14229
14275
|
var HttpChatTransport = class {
|
|
14230
14276
|
constructor({
|
|
14231
14277
|
api = "/api/chat",
|
|
@@ -14249,12 +14295,12 @@ var HttpChatTransport = class {
|
|
|
14249
14295
|
...options
|
|
14250
14296
|
}) {
|
|
14251
14297
|
var _a23, _b, _c, _d, _e;
|
|
14252
|
-
const resolvedBody = await (0,
|
|
14253
|
-
const resolvedHeaders = await (0,
|
|
14254
|
-
const resolvedCredentials = await (0,
|
|
14298
|
+
const resolvedBody = await (0, import_provider_utils41.resolve)(this.body);
|
|
14299
|
+
const resolvedHeaders = await (0, import_provider_utils41.resolve)(this.headers);
|
|
14300
|
+
const resolvedCredentials = await (0, import_provider_utils41.resolve)(this.credentials);
|
|
14255
14301
|
const baseHeaders = {
|
|
14256
|
-
...(0,
|
|
14257
|
-
...(0,
|
|
14302
|
+
...(0, import_provider_utils41.normalizeHeaders)(resolvedHeaders),
|
|
14303
|
+
...(0, import_provider_utils41.normalizeHeaders)(options.headers)
|
|
14258
14304
|
};
|
|
14259
14305
|
const preparedRequest = await ((_a23 = this.prepareSendMessagesRequest) == null ? void 0 : _a23.call(this, {
|
|
14260
14306
|
api: this.api,
|
|
@@ -14268,7 +14314,7 @@ var HttpChatTransport = class {
|
|
|
14268
14314
|
messageId: options.messageId
|
|
14269
14315
|
}));
|
|
14270
14316
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
|
|
14271
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
14317
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils41.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
14272
14318
|
const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
|
|
14273
14319
|
...resolvedBody,
|
|
14274
14320
|
...options.body,
|
|
@@ -14282,7 +14328,7 @@ var HttpChatTransport = class {
|
|
|
14282
14328
|
const response = await fetch2(api, {
|
|
14283
14329
|
method: "POST",
|
|
14284
14330
|
headers: {
|
|
14285
|
-
"
|
|
14331
|
+
"content-type": "application/json",
|
|
14286
14332
|
...headers
|
|
14287
14333
|
},
|
|
14288
14334
|
body: JSON.stringify(body),
|
|
@@ -14301,12 +14347,12 @@ var HttpChatTransport = class {
|
|
|
14301
14347
|
}
|
|
14302
14348
|
async reconnectToStream(options) {
|
|
14303
14349
|
var _a23, _b, _c, _d, _e;
|
|
14304
|
-
const resolvedBody = await (0,
|
|
14305
|
-
const resolvedHeaders = await (0,
|
|
14306
|
-
const resolvedCredentials = await (0,
|
|
14350
|
+
const resolvedBody = await (0, import_provider_utils41.resolve)(this.body);
|
|
14351
|
+
const resolvedHeaders = await (0, import_provider_utils41.resolve)(this.headers);
|
|
14352
|
+
const resolvedCredentials = await (0, import_provider_utils41.resolve)(this.credentials);
|
|
14307
14353
|
const baseHeaders = {
|
|
14308
|
-
...(0,
|
|
14309
|
-
...(0,
|
|
14354
|
+
...(0, import_provider_utils41.normalizeHeaders)(resolvedHeaders),
|
|
14355
|
+
...(0, import_provider_utils41.normalizeHeaders)(options.headers)
|
|
14310
14356
|
};
|
|
14311
14357
|
const preparedRequest = await ((_a23 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a23.call(this, {
|
|
14312
14358
|
api: this.api,
|
|
@@ -14317,7 +14363,7 @@ var HttpChatTransport = class {
|
|
|
14317
14363
|
requestMetadata: options.metadata
|
|
14318
14364
|
}));
|
|
14319
14365
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
|
|
14320
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
14366
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils41.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
14321
14367
|
const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
|
|
14322
14368
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
14323
14369
|
const response = await fetch2(api, {
|
|
@@ -14347,7 +14393,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
14347
14393
|
super(options);
|
|
14348
14394
|
}
|
|
14349
14395
|
processResponseStream(stream) {
|
|
14350
|
-
return (0,
|
|
14396
|
+
return (0, import_provider_utils42.parseJsonEventStream)({
|
|
14351
14397
|
stream,
|
|
14352
14398
|
schema: uiMessageChunkSchema
|
|
14353
14399
|
}).pipeThrough(
|
|
@@ -14366,7 +14412,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
14366
14412
|
// src/ui/chat.ts
|
|
14367
14413
|
var AbstractChat = class {
|
|
14368
14414
|
constructor({
|
|
14369
|
-
generateId: generateId2 =
|
|
14415
|
+
generateId: generateId2 = import_provider_utils43.generateId,
|
|
14370
14416
|
id = generateId2(),
|
|
14371
14417
|
transport = new DefaultChatTransport(),
|
|
14372
14418
|
messageMetadataSchema,
|
|
@@ -14390,9 +14436,24 @@ var AbstractChat = class {
|
|
|
14390
14436
|
this.sendMessage = async (message, options) => {
|
|
14391
14437
|
var _a23, _b, _c, _d;
|
|
14392
14438
|
if (message == null) {
|
|
14393
|
-
|
|
14394
|
-
|
|
14395
|
-
messageId
|
|
14439
|
+
let messageId = this.pendingApprovalMessageId;
|
|
14440
|
+
if (messageId == null) {
|
|
14441
|
+
messageId = (_a23 = this.lastMessage) == null ? void 0 : _a23.id;
|
|
14442
|
+
for (let i = this.state.messages.length - 1; i >= 0; i--) {
|
|
14443
|
+
const candidate = this.state.messages[i];
|
|
14444
|
+
if (candidate.role === "assistant" && candidate.parts.some(
|
|
14445
|
+
(part) => isToolUIPart(part) && part.state === "approval-responded"
|
|
14446
|
+
)) {
|
|
14447
|
+
messageId = candidate.id;
|
|
14448
|
+
break;
|
|
14449
|
+
}
|
|
14450
|
+
}
|
|
14451
|
+
}
|
|
14452
|
+
const consumesPendingApproval = messageId != null && messageId === this.pendingApprovalMessageId;
|
|
14453
|
+
const pendingApprovalMessageIndex = consumesPendingApproval ? this.state.messages.findIndex((message2) => message2.id === messageId) : -1;
|
|
14454
|
+
await this.makeRequestForToolApproval({
|
|
14455
|
+
messageId,
|
|
14456
|
+
messageIndex: pendingApprovalMessageIndex,
|
|
14396
14457
|
...options
|
|
14397
14458
|
});
|
|
14398
14459
|
return;
|
|
@@ -14487,16 +14548,24 @@ var AbstractChat = class {
|
|
|
14487
14548
|
options
|
|
14488
14549
|
}) => this.jobExecutor.run(async () => {
|
|
14489
14550
|
const messages = this.state.messages;
|
|
14490
|
-
const lastMessage = messages[messages.length - 1];
|
|
14491
14551
|
const updatePart = (part) => isToolUIPart(part) && part.state === "approval-requested" && part.approval.id === id ? {
|
|
14492
14552
|
...part,
|
|
14493
14553
|
state: "approval-responded",
|
|
14494
14554
|
approval: { ...part.approval, id, approved, reason }
|
|
14495
14555
|
} : part;
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
14499
|
-
|
|
14556
|
+
const messageIndex = messages.findIndex(
|
|
14557
|
+
(message) => message.parts.some(
|
|
14558
|
+
(part) => isToolUIPart(part) && part.state === "approval-requested" && part.approval.id === id
|
|
14559
|
+
)
|
|
14560
|
+
);
|
|
14561
|
+
if (messageIndex !== -1) {
|
|
14562
|
+
const message = messages[messageIndex];
|
|
14563
|
+
this.state.replaceMessage(messageIndex, {
|
|
14564
|
+
...message,
|
|
14565
|
+
parts: message.parts.map(updatePart)
|
|
14566
|
+
});
|
|
14567
|
+
this.pendingApprovalMessageId = message.id;
|
|
14568
|
+
}
|
|
14500
14569
|
if (this.activeResponse) {
|
|
14501
14570
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
|
|
14502
14571
|
}
|
|
@@ -14504,9 +14573,10 @@ var AbstractChat = class {
|
|
|
14504
14573
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
14505
14574
|
var _a23;
|
|
14506
14575
|
if (shouldSend) {
|
|
14507
|
-
this.
|
|
14508
|
-
|
|
14509
|
-
messageId
|
|
14576
|
+
const messageId = messageIndex === -1 ? (_a23 = this.lastMessage) == null ? void 0 : _a23.id : messages[messageIndex].id;
|
|
14577
|
+
this.makeRequestForToolApproval({
|
|
14578
|
+
messageId,
|
|
14579
|
+
messageIndex,
|
|
14510
14580
|
...options
|
|
14511
14581
|
});
|
|
14512
14582
|
}
|
|
@@ -14608,6 +14678,25 @@ var AbstractChat = class {
|
|
|
14608
14678
|
}
|
|
14609
14679
|
return result;
|
|
14610
14680
|
}
|
|
14681
|
+
async makeRequestForToolApproval({
|
|
14682
|
+
messageId,
|
|
14683
|
+
messageIndex,
|
|
14684
|
+
...options
|
|
14685
|
+
}) {
|
|
14686
|
+
var _a23, _b;
|
|
14687
|
+
const consumesPendingApproval = messageId != null && messageId === this.pendingApprovalMessageId;
|
|
14688
|
+
if (consumesPendingApproval) {
|
|
14689
|
+
this.pendingApprovalMessageId = void 0;
|
|
14690
|
+
}
|
|
14691
|
+
await this.makeRequest({
|
|
14692
|
+
trigger: "submit-message",
|
|
14693
|
+
messageId,
|
|
14694
|
+
...options
|
|
14695
|
+
});
|
|
14696
|
+
if (consumesPendingApproval && this.status === "error" && this.pendingApprovalMessageId == null) {
|
|
14697
|
+
this.pendingApprovalMessageId = (_b = (_a23 = this.state.messages[messageIndex]) == null ? void 0 : _a23.id) != null ? _b : messageId;
|
|
14698
|
+
}
|
|
14699
|
+
}
|
|
14611
14700
|
async makeRequest({
|
|
14612
14701
|
trigger,
|
|
14613
14702
|
metadata,
|
|
@@ -14674,6 +14763,9 @@ var AbstractChat = class {
|
|
|
14674
14763
|
}
|
|
14675
14764
|
this.setStatus({ status: "submitted", error: void 0 });
|
|
14676
14765
|
const lastMessage = this.lastMessage;
|
|
14766
|
+
const responseMessageIndex = trigger === "submit-message" && messageId != null ? this.state.messages.findIndex((message) => message.id === messageId) : this.state.messages.length - 1;
|
|
14767
|
+
const responseMessage = responseMessageIndex === -1 ? lastMessage : this.state.messages[responseMessageIndex];
|
|
14768
|
+
const usesEarlierAssistantMessage = responseMessageIndex !== -1 && responseMessageIndex < this.state.messages.length - 1 && (responseMessage == null ? void 0 : responseMessage.role) === "assistant";
|
|
14677
14769
|
let isAbort = false;
|
|
14678
14770
|
let isDisconnect = false;
|
|
14679
14771
|
let isError = false;
|
|
@@ -14681,7 +14773,7 @@ var AbstractChat = class {
|
|
|
14681
14773
|
try {
|
|
14682
14774
|
const response = {
|
|
14683
14775
|
state: createStreamingUIMessageState({
|
|
14684
|
-
lastMessage: trigger === "resume-stream" || trigger === "regenerate-message" ? void 0 : this.state.snapshot(
|
|
14776
|
+
lastMessage: trigger === "resume-stream" || trigger === "regenerate-message" ? void 0 : this.state.snapshot(responseMessage),
|
|
14685
14777
|
messageId: this.generateId()
|
|
14686
14778
|
}),
|
|
14687
14779
|
abortController
|
|
@@ -14722,8 +14814,12 @@ var AbstractChat = class {
|
|
|
14722
14814
|
if (updateStatus) {
|
|
14723
14815
|
this.setStatus({ status: "streaming" });
|
|
14724
14816
|
}
|
|
14725
|
-
|
|
14726
|
-
|
|
14817
|
+
if (usesEarlierAssistantMessage) {
|
|
14818
|
+
this.state.replaceMessage(
|
|
14819
|
+
responseMessageIndex,
|
|
14820
|
+
response.state.message
|
|
14821
|
+
);
|
|
14822
|
+
} else if (response.state.message.id === ((_a24 = this.lastMessage) == null ? void 0 : _a24.id)) {
|
|
14727
14823
|
this.state.replaceMessage(
|
|
14728
14824
|
this.state.messages.length - 1,
|
|
14729
14825
|
response.state.message
|
|
@@ -14870,7 +14966,7 @@ function lastAssistantMessageIsCompleteWithApprovalResponses({
|
|
|
14870
14966
|
// has at least one tool approval response
|
|
14871
14967
|
lastStepToolInvocations.filter((part) => part.state === "approval-responded").length > 0 && // all tool approvals must have a response
|
|
14872
14968
|
lastStepToolInvocations.every(
|
|
14873
|
-
(part) => part.state === "output-available" || part.state === "output-error" || part.state === "output-denied" || part.state === "approval-responded"
|
|
14969
|
+
(part) => part.state === "output-available" && part.preliminary !== true || part.state === "output-error" || part.state === "output-denied" || part.state === "approval-responded"
|
|
14874
14970
|
)
|
|
14875
14971
|
);
|
|
14876
14972
|
}
|
|
@@ -14891,7 +14987,7 @@ function lastAssistantMessageIsCompleteWithToolCalls({
|
|
|
14891
14987
|
}, -1);
|
|
14892
14988
|
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart).filter((part) => !part.providerExecuted);
|
|
14893
14989
|
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
|
|
14894
|
-
(part) => part.state === "output-available" || part.state === "output-error"
|
|
14990
|
+
(part) => part.state === "output-available" && part.preliminary !== true || part.state === "output-error"
|
|
14895
14991
|
);
|
|
14896
14992
|
}
|
|
14897
14993
|
|