ai 5.0.0-beta.20 → 5.0.0-beta.22
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 +24 -0
- package/dist/bin/ai.js +292 -268
- package/dist/bin/ai.js.map +1 -1
- package/dist/bin/ai.min.js +35 -49
- package/dist/index.d.mts +57 -17
- package/dist/index.d.ts +57 -17
- package/dist/index.js +189 -122
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +187 -121
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs.map +1 -1
- package/dist/test/index.d.mts +17 -2
- package/dist/test/index.d.ts +17 -2
- package/dist/test/index.js +51 -0
- package/dist/test/index.js.map +1 -1
- package/dist/test/index.mjs +52 -0
- package/dist/test/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
@@ -108,7 +108,8 @@ __export(src_exports, {
|
|
108
108
|
tool: () => import_provider_utils23.tool,
|
109
109
|
toolModelMessageSchema: () => toolModelMessageSchema,
|
110
110
|
userModelMessageSchema: () => userModelMessageSchema,
|
111
|
-
wrapLanguageModel: () => wrapLanguageModel
|
111
|
+
wrapLanguageModel: () => wrapLanguageModel,
|
112
|
+
wrapProvider: () => wrapProvider
|
112
113
|
});
|
113
114
|
module.exports = __toCommonJS(src_exports);
|
114
115
|
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
@@ -1874,7 +1875,11 @@ function toResponseMessages({
|
|
1874
1875
|
).filter((part) => part.type !== "text" || part.text.length > 0).map((part) => {
|
1875
1876
|
switch (part.type) {
|
1876
1877
|
case "text":
|
1877
|
-
return
|
1878
|
+
return {
|
1879
|
+
type: "text",
|
1880
|
+
text: part.text,
|
1881
|
+
providerOptions: part.providerMetadata
|
1882
|
+
};
|
1878
1883
|
case "reasoning":
|
1879
1884
|
return {
|
1880
1885
|
type: "reasoning",
|
@@ -2616,16 +2621,19 @@ var import_v47 = require("zod/v4");
|
|
2616
2621
|
var uiMessageChunkSchema = import_v47.z.union([
|
2617
2622
|
import_v47.z.strictObject({
|
2618
2623
|
type: import_v47.z.literal("text-start"),
|
2619
|
-
id: import_v47.z.string()
|
2624
|
+
id: import_v47.z.string(),
|
2625
|
+
providerMetadata: providerMetadataSchema.optional()
|
2620
2626
|
}),
|
2621
2627
|
import_v47.z.strictObject({
|
2622
2628
|
type: import_v47.z.literal("text-delta"),
|
2623
2629
|
id: import_v47.z.string(),
|
2624
|
-
delta: import_v47.z.string()
|
2630
|
+
delta: import_v47.z.string(),
|
2631
|
+
providerMetadata: providerMetadataSchema.optional()
|
2625
2632
|
}),
|
2626
2633
|
import_v47.z.strictObject({
|
2627
2634
|
type: import_v47.z.literal("text-end"),
|
2628
|
-
id: import_v47.z.string()
|
2635
|
+
id: import_v47.z.string(),
|
2636
|
+
providerMetadata: providerMetadataSchema.optional()
|
2629
2637
|
}),
|
2630
2638
|
import_v47.z.strictObject({
|
2631
2639
|
type: import_v47.z.literal("error"),
|
@@ -2647,7 +2655,8 @@ var uiMessageChunkSchema = import_v47.z.union([
|
|
2647
2655
|
toolCallId: import_v47.z.string(),
|
2648
2656
|
toolName: import_v47.z.string(),
|
2649
2657
|
input: import_v47.z.unknown(),
|
2650
|
-
providerExecuted: import_v47.z.boolean().optional()
|
2658
|
+
providerExecuted: import_v47.z.boolean().optional(),
|
2659
|
+
providerMetadata: providerMetadataSchema.optional()
|
2651
2660
|
}),
|
2652
2661
|
import_v47.z.strictObject({
|
2653
2662
|
type: import_v47.z.literal("tool-output-available"),
|
@@ -2664,23 +2673,23 @@ var uiMessageChunkSchema = import_v47.z.union([
|
|
2664
2673
|
import_v47.z.strictObject({
|
2665
2674
|
type: import_v47.z.literal("reasoning"),
|
2666
2675
|
text: import_v47.z.string(),
|
2667
|
-
providerMetadata:
|
2676
|
+
providerMetadata: providerMetadataSchema.optional()
|
2668
2677
|
}),
|
2669
2678
|
import_v47.z.strictObject({
|
2670
2679
|
type: import_v47.z.literal("reasoning-start"),
|
2671
2680
|
id: import_v47.z.string(),
|
2672
|
-
providerMetadata:
|
2681
|
+
providerMetadata: providerMetadataSchema.optional()
|
2673
2682
|
}),
|
2674
2683
|
import_v47.z.strictObject({
|
2675
2684
|
type: import_v47.z.literal("reasoning-delta"),
|
2676
2685
|
id: import_v47.z.string(),
|
2677
2686
|
delta: import_v47.z.string(),
|
2678
|
-
providerMetadata:
|
2687
|
+
providerMetadata: providerMetadataSchema.optional()
|
2679
2688
|
}),
|
2680
2689
|
import_v47.z.strictObject({
|
2681
2690
|
type: import_v47.z.literal("reasoning-end"),
|
2682
2691
|
id: import_v47.z.string(),
|
2683
|
-
providerMetadata:
|
2692
|
+
providerMetadata: providerMetadataSchema.optional()
|
2684
2693
|
}),
|
2685
2694
|
import_v47.z.strictObject({
|
2686
2695
|
type: import_v47.z.literal("reasoning-part-finish")
|
@@ -2690,8 +2699,7 @@ var uiMessageChunkSchema = import_v47.z.union([
|
|
2690
2699
|
sourceId: import_v47.z.string(),
|
2691
2700
|
url: import_v47.z.string(),
|
2692
2701
|
title: import_v47.z.string().optional(),
|
2693
|
-
providerMetadata:
|
2694
|
-
// Use z.any() for generic metadata
|
2702
|
+
providerMetadata: providerMetadataSchema.optional()
|
2695
2703
|
}),
|
2696
2704
|
import_v47.z.strictObject({
|
2697
2705
|
type: import_v47.z.literal("source-document"),
|
@@ -2699,13 +2707,13 @@ var uiMessageChunkSchema = import_v47.z.union([
|
|
2699
2707
|
mediaType: import_v47.z.string(),
|
2700
2708
|
title: import_v47.z.string(),
|
2701
2709
|
filename: import_v47.z.string().optional(),
|
2702
|
-
providerMetadata:
|
2703
|
-
// Use z.any() for generic metadata
|
2710
|
+
providerMetadata: providerMetadataSchema.optional()
|
2704
2711
|
}),
|
2705
2712
|
import_v47.z.strictObject({
|
2706
2713
|
type: import_v47.z.literal("file"),
|
2707
2714
|
url: import_v47.z.string(),
|
2708
|
-
mediaType: import_v47.z.string()
|
2715
|
+
mediaType: import_v47.z.string(),
|
2716
|
+
providerMetadata: providerMetadataSchema.optional()
|
2709
2717
|
}),
|
2710
2718
|
import_v47.z.strictObject({
|
2711
2719
|
type: import_v47.z.string().startsWith("data-"),
|
@@ -3143,22 +3151,25 @@ function processUIMessageStream({
|
|
3143
3151
|
}) {
|
3144
3152
|
return stream.pipeThrough(
|
3145
3153
|
new TransformStream({
|
3146
|
-
async transform(
|
3154
|
+
async transform(chunk, controller) {
|
3147
3155
|
await runUpdateMessageJob(async ({ state, write }) => {
|
3148
|
-
var _a16, _b;
|
3156
|
+
var _a16, _b, _c, _d;
|
3149
3157
|
function updateToolInvocationPart(options) {
|
3150
3158
|
var _a17;
|
3151
|
-
const
|
3152
|
-
(
|
3159
|
+
const part = state.message.parts.find(
|
3160
|
+
(part2) => isToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
3153
3161
|
);
|
3154
3162
|
const anyOptions = options;
|
3155
|
-
const anyPart =
|
3156
|
-
if (
|
3157
|
-
|
3163
|
+
const anyPart = part;
|
3164
|
+
if (part != null) {
|
3165
|
+
part.state = options.state;
|
3158
3166
|
anyPart.input = anyOptions.input;
|
3159
3167
|
anyPart.output = anyOptions.output;
|
3160
3168
|
anyPart.errorText = anyOptions.errorText;
|
3161
|
-
anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 :
|
3169
|
+
anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;
|
3170
|
+
if (anyOptions.providerMetadata != null && part.state === "input-available") {
|
3171
|
+
part.callProviderMetadata = anyOptions.providerMetadata;
|
3172
|
+
}
|
3162
3173
|
} else {
|
3163
3174
|
state.message.parts.push({
|
3164
3175
|
type: `tool-${options.toolName}`,
|
@@ -3167,7 +3178,8 @@ function processUIMessageStream({
|
|
3167
3178
|
input: anyOptions.input,
|
3168
3179
|
output: anyOptions.output,
|
3169
3180
|
errorText: anyOptions.errorText,
|
3170
|
-
providerExecuted: anyOptions.providerExecuted
|
3181
|
+
providerExecuted: anyOptions.providerExecuted,
|
3182
|
+
...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
|
3171
3183
|
});
|
3172
3184
|
}
|
3173
3185
|
}
|
@@ -3183,27 +3195,31 @@ function processUIMessageStream({
|
|
3183
3195
|
state.message.metadata = mergedMetadata;
|
3184
3196
|
}
|
3185
3197
|
}
|
3186
|
-
switch (
|
3198
|
+
switch (chunk.type) {
|
3187
3199
|
case "text-start": {
|
3188
3200
|
const textPart = {
|
3189
3201
|
type: "text",
|
3190
3202
|
text: "",
|
3203
|
+
providerMetadata: chunk.providerMetadata,
|
3191
3204
|
state: "streaming"
|
3192
3205
|
};
|
3193
|
-
state.activeTextParts[
|
3206
|
+
state.activeTextParts[chunk.id] = textPart;
|
3194
3207
|
state.message.parts.push(textPart);
|
3195
3208
|
write();
|
3196
3209
|
break;
|
3197
3210
|
}
|
3198
3211
|
case "text-delta": {
|
3199
|
-
state.activeTextParts[
|
3212
|
+
const textPart = state.activeTextParts[chunk.id];
|
3213
|
+
textPart.text += chunk.delta;
|
3214
|
+
textPart.providerMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textPart.providerMetadata;
|
3200
3215
|
write();
|
3201
3216
|
break;
|
3202
3217
|
}
|
3203
3218
|
case "text-end": {
|
3204
|
-
const textPart = state.activeTextParts[
|
3219
|
+
const textPart = state.activeTextParts[chunk.id];
|
3205
3220
|
textPart.state = "done";
|
3206
|
-
|
3221
|
+
textPart.providerMetadata = (_b = chunk.providerMetadata) != null ? _b : textPart.providerMetadata;
|
3222
|
+
delete state.activeTextParts[chunk.id];
|
3207
3223
|
write();
|
3208
3224
|
break;
|
3209
3225
|
}
|
@@ -3211,34 +3227,34 @@ function processUIMessageStream({
|
|
3211
3227
|
const reasoningPart = {
|
3212
3228
|
type: "reasoning",
|
3213
3229
|
text: "",
|
3214
|
-
providerMetadata:
|
3230
|
+
providerMetadata: chunk.providerMetadata,
|
3215
3231
|
state: "streaming"
|
3216
3232
|
};
|
3217
|
-
state.activeReasoningParts[
|
3233
|
+
state.activeReasoningParts[chunk.id] = reasoningPart;
|
3218
3234
|
state.message.parts.push(reasoningPart);
|
3219
3235
|
write();
|
3220
3236
|
break;
|
3221
3237
|
}
|
3222
3238
|
case "reasoning-delta": {
|
3223
|
-
const reasoningPart = state.activeReasoningParts[
|
3224
|
-
reasoningPart.text +=
|
3225
|
-
reasoningPart.providerMetadata = (
|
3239
|
+
const reasoningPart = state.activeReasoningParts[chunk.id];
|
3240
|
+
reasoningPart.text += chunk.delta;
|
3241
|
+
reasoningPart.providerMetadata = (_c = chunk.providerMetadata) != null ? _c : reasoningPart.providerMetadata;
|
3226
3242
|
write();
|
3227
3243
|
break;
|
3228
3244
|
}
|
3229
3245
|
case "reasoning-end": {
|
3230
|
-
const reasoningPart = state.activeReasoningParts[
|
3231
|
-
reasoningPart.providerMetadata = (
|
3246
|
+
const reasoningPart = state.activeReasoningParts[chunk.id];
|
3247
|
+
reasoningPart.providerMetadata = (_d = chunk.providerMetadata) != null ? _d : reasoningPart.providerMetadata;
|
3232
3248
|
reasoningPart.state = "done";
|
3233
|
-
delete state.activeReasoningParts[
|
3249
|
+
delete state.activeReasoningParts[chunk.id];
|
3234
3250
|
write();
|
3235
3251
|
break;
|
3236
3252
|
}
|
3237
3253
|
case "file": {
|
3238
3254
|
state.message.parts.push({
|
3239
3255
|
type: "file",
|
3240
|
-
mediaType:
|
3241
|
-
url:
|
3256
|
+
mediaType: chunk.mediaType,
|
3257
|
+
url: chunk.url
|
3242
3258
|
});
|
3243
3259
|
write();
|
3244
3260
|
break;
|
@@ -3246,10 +3262,10 @@ function processUIMessageStream({
|
|
3246
3262
|
case "source-url": {
|
3247
3263
|
state.message.parts.push({
|
3248
3264
|
type: "source-url",
|
3249
|
-
sourceId:
|
3250
|
-
url:
|
3251
|
-
title:
|
3252
|
-
providerMetadata:
|
3265
|
+
sourceId: chunk.sourceId,
|
3266
|
+
url: chunk.url,
|
3267
|
+
title: chunk.title,
|
3268
|
+
providerMetadata: chunk.providerMetadata
|
3253
3269
|
});
|
3254
3270
|
write();
|
3255
3271
|
break;
|
@@ -3257,40 +3273,40 @@ function processUIMessageStream({
|
|
3257
3273
|
case "source-document": {
|
3258
3274
|
state.message.parts.push({
|
3259
3275
|
type: "source-document",
|
3260
|
-
sourceId:
|
3261
|
-
mediaType:
|
3262
|
-
title:
|
3263
|
-
filename:
|
3264
|
-
providerMetadata:
|
3276
|
+
sourceId: chunk.sourceId,
|
3277
|
+
mediaType: chunk.mediaType,
|
3278
|
+
title: chunk.title,
|
3279
|
+
filename: chunk.filename,
|
3280
|
+
providerMetadata: chunk.providerMetadata
|
3265
3281
|
});
|
3266
3282
|
write();
|
3267
3283
|
break;
|
3268
3284
|
}
|
3269
3285
|
case "tool-input-start": {
|
3270
3286
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
3271
|
-
state.partialToolCalls[
|
3287
|
+
state.partialToolCalls[chunk.toolCallId] = {
|
3272
3288
|
text: "",
|
3273
|
-
toolName:
|
3289
|
+
toolName: chunk.toolName,
|
3274
3290
|
index: toolInvocations.length
|
3275
3291
|
};
|
3276
3292
|
updateToolInvocationPart({
|
3277
|
-
toolCallId:
|
3278
|
-
toolName:
|
3293
|
+
toolCallId: chunk.toolCallId,
|
3294
|
+
toolName: chunk.toolName,
|
3279
3295
|
state: "input-streaming",
|
3280
3296
|
input: void 0,
|
3281
|
-
providerExecuted:
|
3297
|
+
providerExecuted: chunk.providerExecuted
|
3282
3298
|
});
|
3283
3299
|
write();
|
3284
3300
|
break;
|
3285
3301
|
}
|
3286
3302
|
case "tool-input-delta": {
|
3287
|
-
const partialToolCall = state.partialToolCalls[
|
3288
|
-
partialToolCall.text +=
|
3303
|
+
const partialToolCall = state.partialToolCalls[chunk.toolCallId];
|
3304
|
+
partialToolCall.text += chunk.inputTextDelta;
|
3289
3305
|
const { value: partialArgs } = await parsePartialJson(
|
3290
3306
|
partialToolCall.text
|
3291
3307
|
);
|
3292
3308
|
updateToolInvocationPart({
|
3293
|
-
toolCallId:
|
3309
|
+
toolCallId: chunk.toolCallId,
|
3294
3310
|
toolName: partialToolCall.toolName,
|
3295
3311
|
state: "input-streaming",
|
3296
3312
|
input: partialArgs
|
@@ -3300,23 +3316,24 @@ function processUIMessageStream({
|
|
3300
3316
|
}
|
3301
3317
|
case "tool-input-available": {
|
3302
3318
|
updateToolInvocationPart({
|
3303
|
-
toolCallId:
|
3304
|
-
toolName:
|
3319
|
+
toolCallId: chunk.toolCallId,
|
3320
|
+
toolName: chunk.toolName,
|
3305
3321
|
state: "input-available",
|
3306
|
-
input:
|
3307
|
-
providerExecuted:
|
3322
|
+
input: chunk.input,
|
3323
|
+
providerExecuted: chunk.providerExecuted,
|
3324
|
+
providerMetadata: chunk.providerMetadata
|
3308
3325
|
});
|
3309
3326
|
write();
|
3310
|
-
if (onToolCall && !
|
3327
|
+
if (onToolCall && !chunk.providerExecuted) {
|
3311
3328
|
const result = await onToolCall({
|
3312
|
-
toolCall:
|
3329
|
+
toolCall: chunk
|
3313
3330
|
});
|
3314
3331
|
if (result != null) {
|
3315
3332
|
updateToolInvocationPart({
|
3316
|
-
toolCallId:
|
3317
|
-
toolName:
|
3333
|
+
toolCallId: chunk.toolCallId,
|
3334
|
+
toolName: chunk.toolName,
|
3318
3335
|
state: "output-available",
|
3319
|
-
input:
|
3336
|
+
input: chunk.input,
|
3320
3337
|
output: result
|
3321
3338
|
});
|
3322
3339
|
write();
|
@@ -3330,7 +3347,7 @@ function processUIMessageStream({
|
|
3330
3347
|
throw new Error("tool_result must be preceded by a tool_call");
|
3331
3348
|
}
|
3332
3349
|
const toolInvocationIndex = toolInvocations.findIndex(
|
3333
|
-
(invocation) => invocation.toolCallId ===
|
3350
|
+
(invocation) => invocation.toolCallId === chunk.toolCallId
|
3334
3351
|
);
|
3335
3352
|
if (toolInvocationIndex === -1) {
|
3336
3353
|
throw new Error(
|
@@ -3341,12 +3358,12 @@ function processUIMessageStream({
|
|
3341
3358
|
toolInvocations[toolInvocationIndex]
|
3342
3359
|
);
|
3343
3360
|
updateToolInvocationPart({
|
3344
|
-
toolCallId:
|
3361
|
+
toolCallId: chunk.toolCallId,
|
3345
3362
|
toolName,
|
3346
3363
|
state: "output-available",
|
3347
3364
|
input: toolInvocations[toolInvocationIndex].input,
|
3348
|
-
output:
|
3349
|
-
providerExecuted:
|
3365
|
+
output: chunk.output,
|
3366
|
+
providerExecuted: chunk.providerExecuted
|
3350
3367
|
});
|
3351
3368
|
write();
|
3352
3369
|
break;
|
@@ -3357,7 +3374,7 @@ function processUIMessageStream({
|
|
3357
3374
|
throw new Error("tool_result must be preceded by a tool_call");
|
3358
3375
|
}
|
3359
3376
|
const toolInvocationIndex = toolInvocations.findIndex(
|
3360
|
-
(invocation) => invocation.toolCallId ===
|
3377
|
+
(invocation) => invocation.toolCallId === chunk.toolCallId
|
3361
3378
|
);
|
3362
3379
|
if (toolInvocationIndex === -1) {
|
3363
3380
|
throw new Error(
|
@@ -3368,12 +3385,12 @@ function processUIMessageStream({
|
|
3368
3385
|
toolInvocations[toolInvocationIndex]
|
3369
3386
|
);
|
3370
3387
|
updateToolInvocationPart({
|
3371
|
-
toolCallId:
|
3388
|
+
toolCallId: chunk.toolCallId,
|
3372
3389
|
toolName,
|
3373
3390
|
state: "output-error",
|
3374
3391
|
input: toolInvocations[toolInvocationIndex].input,
|
3375
|
-
errorText:
|
3376
|
-
providerExecuted:
|
3392
|
+
errorText: chunk.errorText,
|
3393
|
+
providerExecuted: chunk.providerExecuted
|
3377
3394
|
});
|
3378
3395
|
write();
|
3379
3396
|
break;
|
@@ -3388,62 +3405,65 @@ function processUIMessageStream({
|
|
3388
3405
|
break;
|
3389
3406
|
}
|
3390
3407
|
case "start": {
|
3391
|
-
if (
|
3392
|
-
state.message.id =
|
3408
|
+
if (chunk.messageId != null) {
|
3409
|
+
state.message.id = chunk.messageId;
|
3393
3410
|
}
|
3394
|
-
await updateMessageMetadata(
|
3395
|
-
if (
|
3411
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3412
|
+
if (chunk.messageId != null || chunk.messageMetadata != null) {
|
3396
3413
|
write();
|
3397
3414
|
}
|
3398
3415
|
break;
|
3399
3416
|
}
|
3400
3417
|
case "finish": {
|
3401
|
-
await updateMessageMetadata(
|
3402
|
-
if (
|
3418
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3419
|
+
if (chunk.messageMetadata != null) {
|
3403
3420
|
write();
|
3404
3421
|
}
|
3405
3422
|
break;
|
3406
3423
|
}
|
3407
3424
|
case "message-metadata": {
|
3408
|
-
await updateMessageMetadata(
|
3409
|
-
if (
|
3425
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3426
|
+
if (chunk.messageMetadata != null) {
|
3410
3427
|
write();
|
3411
3428
|
}
|
3412
3429
|
break;
|
3413
3430
|
}
|
3414
3431
|
case "error": {
|
3415
|
-
onError == null ? void 0 : onError(new Error(
|
3432
|
+
onError == null ? void 0 : onError(new Error(chunk.errorText));
|
3416
3433
|
break;
|
3417
3434
|
}
|
3418
3435
|
default: {
|
3419
|
-
if (isDataUIMessageChunk(
|
3420
|
-
|
3421
|
-
|
3422
|
-
|
3436
|
+
if (isDataUIMessageChunk(chunk)) {
|
3437
|
+
if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {
|
3438
|
+
await (0, import_provider_utils11.validateTypes)({
|
3439
|
+
value: chunk.data,
|
3440
|
+
schema: dataPartSchemas[chunk.type]
|
3441
|
+
});
|
3442
|
+
}
|
3443
|
+
const dataChunk = chunk;
|
3444
|
+
if (dataChunk.transient) {
|
3445
|
+
onData == null ? void 0 : onData(dataChunk);
|
3423
3446
|
break;
|
3424
3447
|
}
|
3425
|
-
const
|
3426
|
-
(
|
3448
|
+
const existingUIPart = dataChunk.id != null ? state.message.parts.find(
|
3449
|
+
(chunkArg) => dataChunk.type === chunkArg.type && dataChunk.id === chunkArg.id
|
3427
3450
|
) : void 0;
|
3428
|
-
if (
|
3429
|
-
|
3451
|
+
if (existingUIPart != null) {
|
3452
|
+
existingUIPart.data = dataChunk.data;
|
3430
3453
|
} else {
|
3431
|
-
state.message.parts.push(
|
3454
|
+
state.message.parts.push(dataChunk);
|
3432
3455
|
}
|
3433
|
-
onData == null ? void 0 : onData(
|
3456
|
+
onData == null ? void 0 : onData(dataChunk);
|
3434
3457
|
write();
|
3435
3458
|
}
|
3436
3459
|
}
|
3437
3460
|
}
|
3438
|
-
controller.enqueue(
|
3461
|
+
controller.enqueue(chunk);
|
3439
3462
|
});
|
3440
3463
|
}
|
3441
3464
|
})
|
3442
3465
|
);
|
3443
3466
|
}
|
3444
|
-
function isObject(value) {
|
3445
|
-
return typeof value === "object" && value !== null;
|
3446
|
-
}
|
3447
3467
|
|
3448
3468
|
// src/ui-message-stream/handle-ui-message-stream-finish.ts
|
3449
3469
|
function handleUIMessageStreamFinish({
|
@@ -4107,7 +4127,7 @@ var DefaultStreamTextResult = class {
|
|
4107
4127
|
let activeReasoningContent = {};
|
4108
4128
|
const eventProcessor = new TransformStream({
|
4109
4129
|
async transform(chunk, controller) {
|
4110
|
-
var _a16, _b;
|
4130
|
+
var _a16, _b, _c;
|
4111
4131
|
controller.enqueue(chunk);
|
4112
4132
|
const { part } = chunk;
|
4113
4133
|
if (part.type === "text" || part.type === "reasoning" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
|
@@ -4137,7 +4157,7 @@ var DefaultStreamTextResult = class {
|
|
4137
4157
|
return;
|
4138
4158
|
}
|
4139
4159
|
activeText.text += part.text;
|
4140
|
-
activeText.providerMetadata = part.providerMetadata;
|
4160
|
+
activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;
|
4141
4161
|
}
|
4142
4162
|
if (part.type === "text-end") {
|
4143
4163
|
delete activeTextContent[part.id];
|
@@ -4163,7 +4183,7 @@ var DefaultStreamTextResult = class {
|
|
4163
4183
|
return;
|
4164
4184
|
}
|
4165
4185
|
activeReasoning.text += part.text;
|
4166
|
-
activeReasoning.providerMetadata = (
|
4186
|
+
activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
|
4167
4187
|
}
|
4168
4188
|
if (part.type === "reasoning-end") {
|
4169
4189
|
const activeReasoning = activeReasoningContent[part.id];
|
@@ -4177,7 +4197,7 @@ var DefaultStreamTextResult = class {
|
|
4177
4197
|
});
|
4178
4198
|
return;
|
4179
4199
|
}
|
4180
|
-
activeReasoning.providerMetadata = (
|
4200
|
+
activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
|
4181
4201
|
delete activeReasoningContent[part.id];
|
4182
4202
|
}
|
4183
4203
|
if (part.type === "file") {
|
@@ -4866,10 +4886,10 @@ var DefaultStreamTextResult = class {
|
|
4866
4886
|
sendFinish = true,
|
4867
4887
|
onError = import_provider22.getErrorMessage
|
4868
4888
|
} = {}) {
|
4869
|
-
const responseMessageId = getResponseUIMessageId({
|
4889
|
+
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
4870
4890
|
originalMessages,
|
4871
|
-
responseMessageId:
|
4872
|
-
});
|
4891
|
+
responseMessageId: generateMessageId
|
4892
|
+
}) : void 0;
|
4873
4893
|
const baseStream = this.fullStream.pipeThrough(
|
4874
4894
|
new TransformStream({
|
4875
4895
|
transform: async (part, controller) => {
|
@@ -4877,26 +4897,35 @@ var DefaultStreamTextResult = class {
|
|
4877
4897
|
const partType = part.type;
|
4878
4898
|
switch (partType) {
|
4879
4899
|
case "text-start": {
|
4880
|
-
controller.enqueue({
|
4900
|
+
controller.enqueue({
|
4901
|
+
type: "text-start",
|
4902
|
+
id: part.id,
|
4903
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4904
|
+
});
|
4881
4905
|
break;
|
4882
4906
|
}
|
4883
4907
|
case "text": {
|
4884
4908
|
controller.enqueue({
|
4885
4909
|
type: "text-delta",
|
4886
4910
|
id: part.id,
|
4887
|
-
delta: part.text
|
4911
|
+
delta: part.text,
|
4912
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4888
4913
|
});
|
4889
4914
|
break;
|
4890
4915
|
}
|
4891
4916
|
case "text-end": {
|
4892
|
-
controller.enqueue({
|
4917
|
+
controller.enqueue({
|
4918
|
+
type: "text-end",
|
4919
|
+
id: part.id,
|
4920
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4921
|
+
});
|
4893
4922
|
break;
|
4894
4923
|
}
|
4895
4924
|
case "reasoning-start": {
|
4896
4925
|
controller.enqueue({
|
4897
4926
|
type: "reasoning-start",
|
4898
4927
|
id: part.id,
|
4899
|
-
providerMetadata: part.providerMetadata
|
4928
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4900
4929
|
});
|
4901
4930
|
break;
|
4902
4931
|
}
|
@@ -4906,7 +4935,7 @@ var DefaultStreamTextResult = class {
|
|
4906
4935
|
type: "reasoning-delta",
|
4907
4936
|
id: part.id,
|
4908
4937
|
delta: part.text,
|
4909
|
-
providerMetadata: part.providerMetadata
|
4938
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4910
4939
|
});
|
4911
4940
|
}
|
4912
4941
|
break;
|
@@ -4915,7 +4944,7 @@ var DefaultStreamTextResult = class {
|
|
4915
4944
|
controller.enqueue({
|
4916
4945
|
type: "reasoning-end",
|
4917
4946
|
id: part.id,
|
4918
|
-
providerMetadata: part.providerMetadata
|
4947
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4919
4948
|
});
|
4920
4949
|
break;
|
4921
4950
|
}
|
@@ -4934,7 +4963,7 @@ var DefaultStreamTextResult = class {
|
|
4934
4963
|
sourceId: part.id,
|
4935
4964
|
url: part.url,
|
4936
4965
|
title: part.title,
|
4937
|
-
providerMetadata: part.providerMetadata
|
4966
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4938
4967
|
});
|
4939
4968
|
}
|
4940
4969
|
if (sendSources && part.sourceType === "document") {
|
@@ -4944,7 +4973,7 @@ var DefaultStreamTextResult = class {
|
|
4944
4973
|
mediaType: part.mediaType,
|
4945
4974
|
title: part.title,
|
4946
4975
|
filename: part.filename,
|
4947
|
-
providerMetadata: part.providerMetadata
|
4976
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4948
4977
|
});
|
4949
4978
|
}
|
4950
4979
|
break;
|
@@ -4972,7 +5001,8 @@ var DefaultStreamTextResult = class {
|
|
4972
5001
|
toolCallId: part.toolCallId,
|
4973
5002
|
toolName: part.toolName,
|
4974
5003
|
input: part.input,
|
4975
|
-
providerExecuted: part.providerExecuted
|
5004
|
+
providerExecuted: part.providerExecuted,
|
5005
|
+
providerMetadata: part.providerMetadata
|
4976
5006
|
});
|
4977
5007
|
break;
|
4978
5008
|
}
|
@@ -5013,8 +5043,8 @@ var DefaultStreamTextResult = class {
|
|
5013
5043
|
if (sendStart) {
|
5014
5044
|
controller.enqueue({
|
5015
5045
|
type: "start",
|
5016
|
-
|
5017
|
-
|
5046
|
+
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
|
5047
|
+
...responseMessageId != null ? { messageId: responseMessageId } : {}
|
5018
5048
|
});
|
5019
5049
|
}
|
5020
5050
|
break;
|
@@ -5023,7 +5053,7 @@ var DefaultStreamTextResult = class {
|
|
5023
5053
|
if (sendFinish) {
|
5024
5054
|
controller.enqueue({
|
5025
5055
|
type: "finish",
|
5026
|
-
messageMetadata: messageMetadataValue
|
5056
|
+
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
|
5027
5057
|
});
|
5028
5058
|
}
|
5029
5059
|
break;
|
@@ -7430,6 +7460,28 @@ var doWrap = ({
|
|
7430
7460
|
};
|
7431
7461
|
};
|
7432
7462
|
|
7463
|
+
// src/middleware/wrap-provider.ts
|
7464
|
+
function wrapProvider({
|
7465
|
+
provider,
|
7466
|
+
languageModelMiddleware
|
7467
|
+
}) {
|
7468
|
+
const wrappedProvider = {
|
7469
|
+
languageModel(modelId) {
|
7470
|
+
let model = provider.languageModel(modelId);
|
7471
|
+
model = wrapLanguageModel({
|
7472
|
+
model,
|
7473
|
+
middleware: languageModelMiddleware
|
7474
|
+
});
|
7475
|
+
return model;
|
7476
|
+
},
|
7477
|
+
textEmbeddingModel: provider.textEmbeddingModel,
|
7478
|
+
imageModel: provider.imageModel,
|
7479
|
+
transcriptionModel: provider.transcriptionModel,
|
7480
|
+
speechModel: provider.speechModel
|
7481
|
+
};
|
7482
|
+
return wrappedProvider;
|
7483
|
+
}
|
7484
|
+
|
7433
7485
|
// src/registry/custom-provider.ts
|
7434
7486
|
var import_provider27 = require("@ai-sdk/provider");
|
7435
7487
|
function customProvider({
|
@@ -7518,10 +7570,12 @@ _a15 = symbol15;
|
|
7518
7570
|
// src/registry/provider-registry.ts
|
7519
7571
|
var import_provider29 = require("@ai-sdk/provider");
|
7520
7572
|
function createProviderRegistry(providers, {
|
7521
|
-
separator = ":"
|
7573
|
+
separator = ":",
|
7574
|
+
languageModelMiddleware
|
7522
7575
|
} = {}) {
|
7523
7576
|
const registry = new DefaultProviderRegistry({
|
7524
|
-
separator
|
7577
|
+
separator,
|
7578
|
+
languageModelMiddleware
|
7525
7579
|
});
|
7526
7580
|
for (const [id, provider] of Object.entries(providers)) {
|
7527
7581
|
registry.registerProvider({ id, provider });
|
@@ -7530,9 +7584,13 @@ function createProviderRegistry(providers, {
|
|
7530
7584
|
}
|
7531
7585
|
var experimental_createProviderRegistry = createProviderRegistry;
|
7532
7586
|
var DefaultProviderRegistry = class {
|
7533
|
-
constructor({
|
7587
|
+
constructor({
|
7588
|
+
separator,
|
7589
|
+
languageModelMiddleware
|
7590
|
+
}) {
|
7534
7591
|
this.providers = {};
|
7535
7592
|
this.separator = separator;
|
7593
|
+
this.languageModelMiddleware = languageModelMiddleware;
|
7536
7594
|
}
|
7537
7595
|
registerProvider({
|
7538
7596
|
id,
|
@@ -7566,13 +7624,19 @@ var DefaultProviderRegistry = class {
|
|
7566
7624
|
languageModel(id) {
|
7567
7625
|
var _a16, _b;
|
7568
7626
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
7569
|
-
|
7627
|
+
let model = (_b = (_a16 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
7570
7628
|
_a16,
|
7571
7629
|
modelId
|
7572
7630
|
);
|
7573
7631
|
if (model == null) {
|
7574
7632
|
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
7575
7633
|
}
|
7634
|
+
if (this.languageModelMiddleware != null) {
|
7635
|
+
model = wrapLanguageModel({
|
7636
|
+
model,
|
7637
|
+
middleware: this.languageModelMiddleware
|
7638
|
+
});
|
7639
|
+
}
|
7576
7640
|
return model;
|
7577
7641
|
}
|
7578
7642
|
textEmbeddingModel(id) {
|
@@ -8951,7 +9015,8 @@ function convertToModelMessages(messages, options) {
|
|
8951
9015
|
if (part.type === "text") {
|
8952
9016
|
content.push({
|
8953
9017
|
type: "text",
|
8954
|
-
text: part.text
|
9018
|
+
text: part.text,
|
9019
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
8955
9020
|
});
|
8956
9021
|
} else if (part.type === "file") {
|
8957
9022
|
content.push({
|
@@ -8978,7 +9043,8 @@ function convertToModelMessages(messages, options) {
|
|
8978
9043
|
toolCallId: part.toolCallId,
|
8979
9044
|
toolName,
|
8980
9045
|
input: part.input,
|
8981
|
-
providerExecuted: part.providerExecuted
|
9046
|
+
providerExecuted: part.providerExecuted,
|
9047
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
8982
9048
|
});
|
8983
9049
|
if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
|
8984
9050
|
content.push({
|
@@ -9309,6 +9375,7 @@ function readUIMessageStream({
|
|
9309
9375
|
tool,
|
9310
9376
|
toolModelMessageSchema,
|
9311
9377
|
userModelMessageSchema,
|
9312
|
-
wrapLanguageModel
|
9378
|
+
wrapLanguageModel,
|
9379
|
+
wrapProvider
|
9313
9380
|
});
|
9314
9381
|
//# sourceMappingURL=index.js.map
|