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.mjs
CHANGED
@@ -1804,7 +1804,11 @@ function toResponseMessages({
|
|
1804
1804
|
).filter((part) => part.type !== "text" || part.text.length > 0).map((part) => {
|
1805
1805
|
switch (part.type) {
|
1806
1806
|
case "text":
|
1807
|
-
return
|
1807
|
+
return {
|
1808
|
+
type: "text",
|
1809
|
+
text: part.text,
|
1810
|
+
providerOptions: part.providerMetadata
|
1811
|
+
};
|
1808
1812
|
case "reasoning":
|
1809
1813
|
return {
|
1810
1814
|
type: "reasoning",
|
@@ -2552,16 +2556,19 @@ import { z as z7 } from "zod/v4";
|
|
2552
2556
|
var uiMessageChunkSchema = z7.union([
|
2553
2557
|
z7.strictObject({
|
2554
2558
|
type: z7.literal("text-start"),
|
2555
|
-
id: z7.string()
|
2559
|
+
id: z7.string(),
|
2560
|
+
providerMetadata: providerMetadataSchema.optional()
|
2556
2561
|
}),
|
2557
2562
|
z7.strictObject({
|
2558
2563
|
type: z7.literal("text-delta"),
|
2559
2564
|
id: z7.string(),
|
2560
|
-
delta: z7.string()
|
2565
|
+
delta: z7.string(),
|
2566
|
+
providerMetadata: providerMetadataSchema.optional()
|
2561
2567
|
}),
|
2562
2568
|
z7.strictObject({
|
2563
2569
|
type: z7.literal("text-end"),
|
2564
|
-
id: z7.string()
|
2570
|
+
id: z7.string(),
|
2571
|
+
providerMetadata: providerMetadataSchema.optional()
|
2565
2572
|
}),
|
2566
2573
|
z7.strictObject({
|
2567
2574
|
type: z7.literal("error"),
|
@@ -2583,7 +2590,8 @@ var uiMessageChunkSchema = z7.union([
|
|
2583
2590
|
toolCallId: z7.string(),
|
2584
2591
|
toolName: z7.string(),
|
2585
2592
|
input: z7.unknown(),
|
2586
|
-
providerExecuted: z7.boolean().optional()
|
2593
|
+
providerExecuted: z7.boolean().optional(),
|
2594
|
+
providerMetadata: providerMetadataSchema.optional()
|
2587
2595
|
}),
|
2588
2596
|
z7.strictObject({
|
2589
2597
|
type: z7.literal("tool-output-available"),
|
@@ -2600,23 +2608,23 @@ var uiMessageChunkSchema = z7.union([
|
|
2600
2608
|
z7.strictObject({
|
2601
2609
|
type: z7.literal("reasoning"),
|
2602
2610
|
text: z7.string(),
|
2603
|
-
providerMetadata:
|
2611
|
+
providerMetadata: providerMetadataSchema.optional()
|
2604
2612
|
}),
|
2605
2613
|
z7.strictObject({
|
2606
2614
|
type: z7.literal("reasoning-start"),
|
2607
2615
|
id: z7.string(),
|
2608
|
-
providerMetadata:
|
2616
|
+
providerMetadata: providerMetadataSchema.optional()
|
2609
2617
|
}),
|
2610
2618
|
z7.strictObject({
|
2611
2619
|
type: z7.literal("reasoning-delta"),
|
2612
2620
|
id: z7.string(),
|
2613
2621
|
delta: z7.string(),
|
2614
|
-
providerMetadata:
|
2622
|
+
providerMetadata: providerMetadataSchema.optional()
|
2615
2623
|
}),
|
2616
2624
|
z7.strictObject({
|
2617
2625
|
type: z7.literal("reasoning-end"),
|
2618
2626
|
id: z7.string(),
|
2619
|
-
providerMetadata:
|
2627
|
+
providerMetadata: providerMetadataSchema.optional()
|
2620
2628
|
}),
|
2621
2629
|
z7.strictObject({
|
2622
2630
|
type: z7.literal("reasoning-part-finish")
|
@@ -2626,8 +2634,7 @@ var uiMessageChunkSchema = z7.union([
|
|
2626
2634
|
sourceId: z7.string(),
|
2627
2635
|
url: z7.string(),
|
2628
2636
|
title: z7.string().optional(),
|
2629
|
-
providerMetadata:
|
2630
|
-
// Use z.any() for generic metadata
|
2637
|
+
providerMetadata: providerMetadataSchema.optional()
|
2631
2638
|
}),
|
2632
2639
|
z7.strictObject({
|
2633
2640
|
type: z7.literal("source-document"),
|
@@ -2635,13 +2642,13 @@ var uiMessageChunkSchema = z7.union([
|
|
2635
2642
|
mediaType: z7.string(),
|
2636
2643
|
title: z7.string(),
|
2637
2644
|
filename: z7.string().optional(),
|
2638
|
-
providerMetadata:
|
2639
|
-
// Use z.any() for generic metadata
|
2645
|
+
providerMetadata: providerMetadataSchema.optional()
|
2640
2646
|
}),
|
2641
2647
|
z7.strictObject({
|
2642
2648
|
type: z7.literal("file"),
|
2643
2649
|
url: z7.string(),
|
2644
|
-
mediaType: z7.string()
|
2650
|
+
mediaType: z7.string(),
|
2651
|
+
providerMetadata: providerMetadataSchema.optional()
|
2645
2652
|
}),
|
2646
2653
|
z7.strictObject({
|
2647
2654
|
type: z7.string().startsWith("data-"),
|
@@ -3079,22 +3086,25 @@ function processUIMessageStream({
|
|
3079
3086
|
}) {
|
3080
3087
|
return stream.pipeThrough(
|
3081
3088
|
new TransformStream({
|
3082
|
-
async transform(
|
3089
|
+
async transform(chunk, controller) {
|
3083
3090
|
await runUpdateMessageJob(async ({ state, write }) => {
|
3084
|
-
var _a16, _b;
|
3091
|
+
var _a16, _b, _c, _d;
|
3085
3092
|
function updateToolInvocationPart(options) {
|
3086
3093
|
var _a17;
|
3087
|
-
const
|
3088
|
-
(
|
3094
|
+
const part = state.message.parts.find(
|
3095
|
+
(part2) => isToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
3089
3096
|
);
|
3090
3097
|
const anyOptions = options;
|
3091
|
-
const anyPart =
|
3092
|
-
if (
|
3093
|
-
|
3098
|
+
const anyPart = part;
|
3099
|
+
if (part != null) {
|
3100
|
+
part.state = options.state;
|
3094
3101
|
anyPart.input = anyOptions.input;
|
3095
3102
|
anyPart.output = anyOptions.output;
|
3096
3103
|
anyPart.errorText = anyOptions.errorText;
|
3097
|
-
anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 :
|
3104
|
+
anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;
|
3105
|
+
if (anyOptions.providerMetadata != null && part.state === "input-available") {
|
3106
|
+
part.callProviderMetadata = anyOptions.providerMetadata;
|
3107
|
+
}
|
3098
3108
|
} else {
|
3099
3109
|
state.message.parts.push({
|
3100
3110
|
type: `tool-${options.toolName}`,
|
@@ -3103,7 +3113,8 @@ function processUIMessageStream({
|
|
3103
3113
|
input: anyOptions.input,
|
3104
3114
|
output: anyOptions.output,
|
3105
3115
|
errorText: anyOptions.errorText,
|
3106
|
-
providerExecuted: anyOptions.providerExecuted
|
3116
|
+
providerExecuted: anyOptions.providerExecuted,
|
3117
|
+
...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
|
3107
3118
|
});
|
3108
3119
|
}
|
3109
3120
|
}
|
@@ -3119,27 +3130,31 @@ function processUIMessageStream({
|
|
3119
3130
|
state.message.metadata = mergedMetadata;
|
3120
3131
|
}
|
3121
3132
|
}
|
3122
|
-
switch (
|
3133
|
+
switch (chunk.type) {
|
3123
3134
|
case "text-start": {
|
3124
3135
|
const textPart = {
|
3125
3136
|
type: "text",
|
3126
3137
|
text: "",
|
3138
|
+
providerMetadata: chunk.providerMetadata,
|
3127
3139
|
state: "streaming"
|
3128
3140
|
};
|
3129
|
-
state.activeTextParts[
|
3141
|
+
state.activeTextParts[chunk.id] = textPart;
|
3130
3142
|
state.message.parts.push(textPart);
|
3131
3143
|
write();
|
3132
3144
|
break;
|
3133
3145
|
}
|
3134
3146
|
case "text-delta": {
|
3135
|
-
state.activeTextParts[
|
3147
|
+
const textPart = state.activeTextParts[chunk.id];
|
3148
|
+
textPart.text += chunk.delta;
|
3149
|
+
textPart.providerMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textPart.providerMetadata;
|
3136
3150
|
write();
|
3137
3151
|
break;
|
3138
3152
|
}
|
3139
3153
|
case "text-end": {
|
3140
|
-
const textPart = state.activeTextParts[
|
3154
|
+
const textPart = state.activeTextParts[chunk.id];
|
3141
3155
|
textPart.state = "done";
|
3142
|
-
|
3156
|
+
textPart.providerMetadata = (_b = chunk.providerMetadata) != null ? _b : textPart.providerMetadata;
|
3157
|
+
delete state.activeTextParts[chunk.id];
|
3143
3158
|
write();
|
3144
3159
|
break;
|
3145
3160
|
}
|
@@ -3147,34 +3162,34 @@ function processUIMessageStream({
|
|
3147
3162
|
const reasoningPart = {
|
3148
3163
|
type: "reasoning",
|
3149
3164
|
text: "",
|
3150
|
-
providerMetadata:
|
3165
|
+
providerMetadata: chunk.providerMetadata,
|
3151
3166
|
state: "streaming"
|
3152
3167
|
};
|
3153
|
-
state.activeReasoningParts[
|
3168
|
+
state.activeReasoningParts[chunk.id] = reasoningPart;
|
3154
3169
|
state.message.parts.push(reasoningPart);
|
3155
3170
|
write();
|
3156
3171
|
break;
|
3157
3172
|
}
|
3158
3173
|
case "reasoning-delta": {
|
3159
|
-
const reasoningPart = state.activeReasoningParts[
|
3160
|
-
reasoningPart.text +=
|
3161
|
-
reasoningPart.providerMetadata = (
|
3174
|
+
const reasoningPart = state.activeReasoningParts[chunk.id];
|
3175
|
+
reasoningPart.text += chunk.delta;
|
3176
|
+
reasoningPart.providerMetadata = (_c = chunk.providerMetadata) != null ? _c : reasoningPart.providerMetadata;
|
3162
3177
|
write();
|
3163
3178
|
break;
|
3164
3179
|
}
|
3165
3180
|
case "reasoning-end": {
|
3166
|
-
const reasoningPart = state.activeReasoningParts[
|
3167
|
-
reasoningPart.providerMetadata = (
|
3181
|
+
const reasoningPart = state.activeReasoningParts[chunk.id];
|
3182
|
+
reasoningPart.providerMetadata = (_d = chunk.providerMetadata) != null ? _d : reasoningPart.providerMetadata;
|
3168
3183
|
reasoningPart.state = "done";
|
3169
|
-
delete state.activeReasoningParts[
|
3184
|
+
delete state.activeReasoningParts[chunk.id];
|
3170
3185
|
write();
|
3171
3186
|
break;
|
3172
3187
|
}
|
3173
3188
|
case "file": {
|
3174
3189
|
state.message.parts.push({
|
3175
3190
|
type: "file",
|
3176
|
-
mediaType:
|
3177
|
-
url:
|
3191
|
+
mediaType: chunk.mediaType,
|
3192
|
+
url: chunk.url
|
3178
3193
|
});
|
3179
3194
|
write();
|
3180
3195
|
break;
|
@@ -3182,10 +3197,10 @@ function processUIMessageStream({
|
|
3182
3197
|
case "source-url": {
|
3183
3198
|
state.message.parts.push({
|
3184
3199
|
type: "source-url",
|
3185
|
-
sourceId:
|
3186
|
-
url:
|
3187
|
-
title:
|
3188
|
-
providerMetadata:
|
3200
|
+
sourceId: chunk.sourceId,
|
3201
|
+
url: chunk.url,
|
3202
|
+
title: chunk.title,
|
3203
|
+
providerMetadata: chunk.providerMetadata
|
3189
3204
|
});
|
3190
3205
|
write();
|
3191
3206
|
break;
|
@@ -3193,40 +3208,40 @@ function processUIMessageStream({
|
|
3193
3208
|
case "source-document": {
|
3194
3209
|
state.message.parts.push({
|
3195
3210
|
type: "source-document",
|
3196
|
-
sourceId:
|
3197
|
-
mediaType:
|
3198
|
-
title:
|
3199
|
-
filename:
|
3200
|
-
providerMetadata:
|
3211
|
+
sourceId: chunk.sourceId,
|
3212
|
+
mediaType: chunk.mediaType,
|
3213
|
+
title: chunk.title,
|
3214
|
+
filename: chunk.filename,
|
3215
|
+
providerMetadata: chunk.providerMetadata
|
3201
3216
|
});
|
3202
3217
|
write();
|
3203
3218
|
break;
|
3204
3219
|
}
|
3205
3220
|
case "tool-input-start": {
|
3206
3221
|
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
3207
|
-
state.partialToolCalls[
|
3222
|
+
state.partialToolCalls[chunk.toolCallId] = {
|
3208
3223
|
text: "",
|
3209
|
-
toolName:
|
3224
|
+
toolName: chunk.toolName,
|
3210
3225
|
index: toolInvocations.length
|
3211
3226
|
};
|
3212
3227
|
updateToolInvocationPart({
|
3213
|
-
toolCallId:
|
3214
|
-
toolName:
|
3228
|
+
toolCallId: chunk.toolCallId,
|
3229
|
+
toolName: chunk.toolName,
|
3215
3230
|
state: "input-streaming",
|
3216
3231
|
input: void 0,
|
3217
|
-
providerExecuted:
|
3232
|
+
providerExecuted: chunk.providerExecuted
|
3218
3233
|
});
|
3219
3234
|
write();
|
3220
3235
|
break;
|
3221
3236
|
}
|
3222
3237
|
case "tool-input-delta": {
|
3223
|
-
const partialToolCall = state.partialToolCalls[
|
3224
|
-
partialToolCall.text +=
|
3238
|
+
const partialToolCall = state.partialToolCalls[chunk.toolCallId];
|
3239
|
+
partialToolCall.text += chunk.inputTextDelta;
|
3225
3240
|
const { value: partialArgs } = await parsePartialJson(
|
3226
3241
|
partialToolCall.text
|
3227
3242
|
);
|
3228
3243
|
updateToolInvocationPart({
|
3229
|
-
toolCallId:
|
3244
|
+
toolCallId: chunk.toolCallId,
|
3230
3245
|
toolName: partialToolCall.toolName,
|
3231
3246
|
state: "input-streaming",
|
3232
3247
|
input: partialArgs
|
@@ -3236,23 +3251,24 @@ function processUIMessageStream({
|
|
3236
3251
|
}
|
3237
3252
|
case "tool-input-available": {
|
3238
3253
|
updateToolInvocationPart({
|
3239
|
-
toolCallId:
|
3240
|
-
toolName:
|
3254
|
+
toolCallId: chunk.toolCallId,
|
3255
|
+
toolName: chunk.toolName,
|
3241
3256
|
state: "input-available",
|
3242
|
-
input:
|
3243
|
-
providerExecuted:
|
3257
|
+
input: chunk.input,
|
3258
|
+
providerExecuted: chunk.providerExecuted,
|
3259
|
+
providerMetadata: chunk.providerMetadata
|
3244
3260
|
});
|
3245
3261
|
write();
|
3246
|
-
if (onToolCall && !
|
3262
|
+
if (onToolCall && !chunk.providerExecuted) {
|
3247
3263
|
const result = await onToolCall({
|
3248
|
-
toolCall:
|
3264
|
+
toolCall: chunk
|
3249
3265
|
});
|
3250
3266
|
if (result != null) {
|
3251
3267
|
updateToolInvocationPart({
|
3252
|
-
toolCallId:
|
3253
|
-
toolName:
|
3268
|
+
toolCallId: chunk.toolCallId,
|
3269
|
+
toolName: chunk.toolName,
|
3254
3270
|
state: "output-available",
|
3255
|
-
input:
|
3271
|
+
input: chunk.input,
|
3256
3272
|
output: result
|
3257
3273
|
});
|
3258
3274
|
write();
|
@@ -3266,7 +3282,7 @@ function processUIMessageStream({
|
|
3266
3282
|
throw new Error("tool_result must be preceded by a tool_call");
|
3267
3283
|
}
|
3268
3284
|
const toolInvocationIndex = toolInvocations.findIndex(
|
3269
|
-
(invocation) => invocation.toolCallId ===
|
3285
|
+
(invocation) => invocation.toolCallId === chunk.toolCallId
|
3270
3286
|
);
|
3271
3287
|
if (toolInvocationIndex === -1) {
|
3272
3288
|
throw new Error(
|
@@ -3277,12 +3293,12 @@ function processUIMessageStream({
|
|
3277
3293
|
toolInvocations[toolInvocationIndex]
|
3278
3294
|
);
|
3279
3295
|
updateToolInvocationPart({
|
3280
|
-
toolCallId:
|
3296
|
+
toolCallId: chunk.toolCallId,
|
3281
3297
|
toolName,
|
3282
3298
|
state: "output-available",
|
3283
3299
|
input: toolInvocations[toolInvocationIndex].input,
|
3284
|
-
output:
|
3285
|
-
providerExecuted:
|
3300
|
+
output: chunk.output,
|
3301
|
+
providerExecuted: chunk.providerExecuted
|
3286
3302
|
});
|
3287
3303
|
write();
|
3288
3304
|
break;
|
@@ -3293,7 +3309,7 @@ function processUIMessageStream({
|
|
3293
3309
|
throw new Error("tool_result must be preceded by a tool_call");
|
3294
3310
|
}
|
3295
3311
|
const toolInvocationIndex = toolInvocations.findIndex(
|
3296
|
-
(invocation) => invocation.toolCallId ===
|
3312
|
+
(invocation) => invocation.toolCallId === chunk.toolCallId
|
3297
3313
|
);
|
3298
3314
|
if (toolInvocationIndex === -1) {
|
3299
3315
|
throw new Error(
|
@@ -3304,12 +3320,12 @@ function processUIMessageStream({
|
|
3304
3320
|
toolInvocations[toolInvocationIndex]
|
3305
3321
|
);
|
3306
3322
|
updateToolInvocationPart({
|
3307
|
-
toolCallId:
|
3323
|
+
toolCallId: chunk.toolCallId,
|
3308
3324
|
toolName,
|
3309
3325
|
state: "output-error",
|
3310
3326
|
input: toolInvocations[toolInvocationIndex].input,
|
3311
|
-
errorText:
|
3312
|
-
providerExecuted:
|
3327
|
+
errorText: chunk.errorText,
|
3328
|
+
providerExecuted: chunk.providerExecuted
|
3313
3329
|
});
|
3314
3330
|
write();
|
3315
3331
|
break;
|
@@ -3324,62 +3340,65 @@ function processUIMessageStream({
|
|
3324
3340
|
break;
|
3325
3341
|
}
|
3326
3342
|
case "start": {
|
3327
|
-
if (
|
3328
|
-
state.message.id =
|
3343
|
+
if (chunk.messageId != null) {
|
3344
|
+
state.message.id = chunk.messageId;
|
3329
3345
|
}
|
3330
|
-
await updateMessageMetadata(
|
3331
|
-
if (
|
3346
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3347
|
+
if (chunk.messageId != null || chunk.messageMetadata != null) {
|
3332
3348
|
write();
|
3333
3349
|
}
|
3334
3350
|
break;
|
3335
3351
|
}
|
3336
3352
|
case "finish": {
|
3337
|
-
await updateMessageMetadata(
|
3338
|
-
if (
|
3353
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3354
|
+
if (chunk.messageMetadata != null) {
|
3339
3355
|
write();
|
3340
3356
|
}
|
3341
3357
|
break;
|
3342
3358
|
}
|
3343
3359
|
case "message-metadata": {
|
3344
|
-
await updateMessageMetadata(
|
3345
|
-
if (
|
3360
|
+
await updateMessageMetadata(chunk.messageMetadata);
|
3361
|
+
if (chunk.messageMetadata != null) {
|
3346
3362
|
write();
|
3347
3363
|
}
|
3348
3364
|
break;
|
3349
3365
|
}
|
3350
3366
|
case "error": {
|
3351
|
-
onError == null ? void 0 : onError(new Error(
|
3367
|
+
onError == null ? void 0 : onError(new Error(chunk.errorText));
|
3352
3368
|
break;
|
3353
3369
|
}
|
3354
3370
|
default: {
|
3355
|
-
if (isDataUIMessageChunk(
|
3356
|
-
|
3357
|
-
|
3358
|
-
|
3371
|
+
if (isDataUIMessageChunk(chunk)) {
|
3372
|
+
if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {
|
3373
|
+
await validateTypes({
|
3374
|
+
value: chunk.data,
|
3375
|
+
schema: dataPartSchemas[chunk.type]
|
3376
|
+
});
|
3377
|
+
}
|
3378
|
+
const dataChunk = chunk;
|
3379
|
+
if (dataChunk.transient) {
|
3380
|
+
onData == null ? void 0 : onData(dataChunk);
|
3359
3381
|
break;
|
3360
3382
|
}
|
3361
|
-
const
|
3362
|
-
(
|
3383
|
+
const existingUIPart = dataChunk.id != null ? state.message.parts.find(
|
3384
|
+
(chunkArg) => dataChunk.type === chunkArg.type && dataChunk.id === chunkArg.id
|
3363
3385
|
) : void 0;
|
3364
|
-
if (
|
3365
|
-
|
3386
|
+
if (existingUIPart != null) {
|
3387
|
+
existingUIPart.data = dataChunk.data;
|
3366
3388
|
} else {
|
3367
|
-
state.message.parts.push(
|
3389
|
+
state.message.parts.push(dataChunk);
|
3368
3390
|
}
|
3369
|
-
onData == null ? void 0 : onData(
|
3391
|
+
onData == null ? void 0 : onData(dataChunk);
|
3370
3392
|
write();
|
3371
3393
|
}
|
3372
3394
|
}
|
3373
3395
|
}
|
3374
|
-
controller.enqueue(
|
3396
|
+
controller.enqueue(chunk);
|
3375
3397
|
});
|
3376
3398
|
}
|
3377
3399
|
})
|
3378
3400
|
);
|
3379
3401
|
}
|
3380
|
-
function isObject(value) {
|
3381
|
-
return typeof value === "object" && value !== null;
|
3382
|
-
}
|
3383
3402
|
|
3384
3403
|
// src/ui-message-stream/handle-ui-message-stream-finish.ts
|
3385
3404
|
function handleUIMessageStreamFinish({
|
@@ -4043,7 +4062,7 @@ var DefaultStreamTextResult = class {
|
|
4043
4062
|
let activeReasoningContent = {};
|
4044
4063
|
const eventProcessor = new TransformStream({
|
4045
4064
|
async transform(chunk, controller) {
|
4046
|
-
var _a16, _b;
|
4065
|
+
var _a16, _b, _c;
|
4047
4066
|
controller.enqueue(chunk);
|
4048
4067
|
const { part } = chunk;
|
4049
4068
|
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") {
|
@@ -4073,7 +4092,7 @@ var DefaultStreamTextResult = class {
|
|
4073
4092
|
return;
|
4074
4093
|
}
|
4075
4094
|
activeText.text += part.text;
|
4076
|
-
activeText.providerMetadata = part.providerMetadata;
|
4095
|
+
activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;
|
4077
4096
|
}
|
4078
4097
|
if (part.type === "text-end") {
|
4079
4098
|
delete activeTextContent[part.id];
|
@@ -4099,7 +4118,7 @@ var DefaultStreamTextResult = class {
|
|
4099
4118
|
return;
|
4100
4119
|
}
|
4101
4120
|
activeReasoning.text += part.text;
|
4102
|
-
activeReasoning.providerMetadata = (
|
4121
|
+
activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
|
4103
4122
|
}
|
4104
4123
|
if (part.type === "reasoning-end") {
|
4105
4124
|
const activeReasoning = activeReasoningContent[part.id];
|
@@ -4113,7 +4132,7 @@ var DefaultStreamTextResult = class {
|
|
4113
4132
|
});
|
4114
4133
|
return;
|
4115
4134
|
}
|
4116
|
-
activeReasoning.providerMetadata = (
|
4135
|
+
activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
|
4117
4136
|
delete activeReasoningContent[part.id];
|
4118
4137
|
}
|
4119
4138
|
if (part.type === "file") {
|
@@ -4802,10 +4821,10 @@ var DefaultStreamTextResult = class {
|
|
4802
4821
|
sendFinish = true,
|
4803
4822
|
onError = getErrorMessage5
|
4804
4823
|
} = {}) {
|
4805
|
-
const responseMessageId = getResponseUIMessageId({
|
4824
|
+
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
4806
4825
|
originalMessages,
|
4807
|
-
responseMessageId:
|
4808
|
-
});
|
4826
|
+
responseMessageId: generateMessageId
|
4827
|
+
}) : void 0;
|
4809
4828
|
const baseStream = this.fullStream.pipeThrough(
|
4810
4829
|
new TransformStream({
|
4811
4830
|
transform: async (part, controller) => {
|
@@ -4813,26 +4832,35 @@ var DefaultStreamTextResult = class {
|
|
4813
4832
|
const partType = part.type;
|
4814
4833
|
switch (partType) {
|
4815
4834
|
case "text-start": {
|
4816
|
-
controller.enqueue({
|
4835
|
+
controller.enqueue({
|
4836
|
+
type: "text-start",
|
4837
|
+
id: part.id,
|
4838
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4839
|
+
});
|
4817
4840
|
break;
|
4818
4841
|
}
|
4819
4842
|
case "text": {
|
4820
4843
|
controller.enqueue({
|
4821
4844
|
type: "text-delta",
|
4822
4845
|
id: part.id,
|
4823
|
-
delta: part.text
|
4846
|
+
delta: part.text,
|
4847
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4824
4848
|
});
|
4825
4849
|
break;
|
4826
4850
|
}
|
4827
4851
|
case "text-end": {
|
4828
|
-
controller.enqueue({
|
4852
|
+
controller.enqueue({
|
4853
|
+
type: "text-end",
|
4854
|
+
id: part.id,
|
4855
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4856
|
+
});
|
4829
4857
|
break;
|
4830
4858
|
}
|
4831
4859
|
case "reasoning-start": {
|
4832
4860
|
controller.enqueue({
|
4833
4861
|
type: "reasoning-start",
|
4834
4862
|
id: part.id,
|
4835
|
-
providerMetadata: part.providerMetadata
|
4863
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4836
4864
|
});
|
4837
4865
|
break;
|
4838
4866
|
}
|
@@ -4842,7 +4870,7 @@ var DefaultStreamTextResult = class {
|
|
4842
4870
|
type: "reasoning-delta",
|
4843
4871
|
id: part.id,
|
4844
4872
|
delta: part.text,
|
4845
|
-
providerMetadata: part.providerMetadata
|
4873
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4846
4874
|
});
|
4847
4875
|
}
|
4848
4876
|
break;
|
@@ -4851,7 +4879,7 @@ var DefaultStreamTextResult = class {
|
|
4851
4879
|
controller.enqueue({
|
4852
4880
|
type: "reasoning-end",
|
4853
4881
|
id: part.id,
|
4854
|
-
providerMetadata: part.providerMetadata
|
4882
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4855
4883
|
});
|
4856
4884
|
break;
|
4857
4885
|
}
|
@@ -4870,7 +4898,7 @@ var DefaultStreamTextResult = class {
|
|
4870
4898
|
sourceId: part.id,
|
4871
4899
|
url: part.url,
|
4872
4900
|
title: part.title,
|
4873
|
-
providerMetadata: part.providerMetadata
|
4901
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4874
4902
|
});
|
4875
4903
|
}
|
4876
4904
|
if (sendSources && part.sourceType === "document") {
|
@@ -4880,7 +4908,7 @@ var DefaultStreamTextResult = class {
|
|
4880
4908
|
mediaType: part.mediaType,
|
4881
4909
|
title: part.title,
|
4882
4910
|
filename: part.filename,
|
4883
|
-
providerMetadata: part.providerMetadata
|
4911
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
4884
4912
|
});
|
4885
4913
|
}
|
4886
4914
|
break;
|
@@ -4908,7 +4936,8 @@ var DefaultStreamTextResult = class {
|
|
4908
4936
|
toolCallId: part.toolCallId,
|
4909
4937
|
toolName: part.toolName,
|
4910
4938
|
input: part.input,
|
4911
|
-
providerExecuted: part.providerExecuted
|
4939
|
+
providerExecuted: part.providerExecuted,
|
4940
|
+
providerMetadata: part.providerMetadata
|
4912
4941
|
});
|
4913
4942
|
break;
|
4914
4943
|
}
|
@@ -4949,8 +4978,8 @@ var DefaultStreamTextResult = class {
|
|
4949
4978
|
if (sendStart) {
|
4950
4979
|
controller.enqueue({
|
4951
4980
|
type: "start",
|
4952
|
-
|
4953
|
-
|
4981
|
+
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},
|
4982
|
+
...responseMessageId != null ? { messageId: responseMessageId } : {}
|
4954
4983
|
});
|
4955
4984
|
}
|
4956
4985
|
break;
|
@@ -4959,7 +4988,7 @@ var DefaultStreamTextResult = class {
|
|
4959
4988
|
if (sendFinish) {
|
4960
4989
|
controller.enqueue({
|
4961
4990
|
type: "finish",
|
4962
|
-
messageMetadata: messageMetadataValue
|
4991
|
+
...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}
|
4963
4992
|
});
|
4964
4993
|
}
|
4965
4994
|
break;
|
@@ -7386,6 +7415,28 @@ var doWrap = ({
|
|
7386
7415
|
};
|
7387
7416
|
};
|
7388
7417
|
|
7418
|
+
// src/middleware/wrap-provider.ts
|
7419
|
+
function wrapProvider({
|
7420
|
+
provider,
|
7421
|
+
languageModelMiddleware
|
7422
|
+
}) {
|
7423
|
+
const wrappedProvider = {
|
7424
|
+
languageModel(modelId) {
|
7425
|
+
let model = provider.languageModel(modelId);
|
7426
|
+
model = wrapLanguageModel({
|
7427
|
+
model,
|
7428
|
+
middleware: languageModelMiddleware
|
7429
|
+
});
|
7430
|
+
return model;
|
7431
|
+
},
|
7432
|
+
textEmbeddingModel: provider.textEmbeddingModel,
|
7433
|
+
imageModel: provider.imageModel,
|
7434
|
+
transcriptionModel: provider.transcriptionModel,
|
7435
|
+
speechModel: provider.speechModel
|
7436
|
+
};
|
7437
|
+
return wrappedProvider;
|
7438
|
+
}
|
7439
|
+
|
7389
7440
|
// src/registry/custom-provider.ts
|
7390
7441
|
import {
|
7391
7442
|
NoSuchModelError as NoSuchModelError2
|
@@ -7478,10 +7529,12 @@ import {
|
|
7478
7529
|
NoSuchModelError as NoSuchModelError4
|
7479
7530
|
} from "@ai-sdk/provider";
|
7480
7531
|
function createProviderRegistry(providers, {
|
7481
|
-
separator = ":"
|
7532
|
+
separator = ":",
|
7533
|
+
languageModelMiddleware
|
7482
7534
|
} = {}) {
|
7483
7535
|
const registry = new DefaultProviderRegistry({
|
7484
|
-
separator
|
7536
|
+
separator,
|
7537
|
+
languageModelMiddleware
|
7485
7538
|
});
|
7486
7539
|
for (const [id, provider] of Object.entries(providers)) {
|
7487
7540
|
registry.registerProvider({ id, provider });
|
@@ -7490,9 +7543,13 @@ function createProviderRegistry(providers, {
|
|
7490
7543
|
}
|
7491
7544
|
var experimental_createProviderRegistry = createProviderRegistry;
|
7492
7545
|
var DefaultProviderRegistry = class {
|
7493
|
-
constructor({
|
7546
|
+
constructor({
|
7547
|
+
separator,
|
7548
|
+
languageModelMiddleware
|
7549
|
+
}) {
|
7494
7550
|
this.providers = {};
|
7495
7551
|
this.separator = separator;
|
7552
|
+
this.languageModelMiddleware = languageModelMiddleware;
|
7496
7553
|
}
|
7497
7554
|
registerProvider({
|
7498
7555
|
id,
|
@@ -7526,13 +7583,19 @@ var DefaultProviderRegistry = class {
|
|
7526
7583
|
languageModel(id) {
|
7527
7584
|
var _a16, _b;
|
7528
7585
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
7529
|
-
|
7586
|
+
let model = (_b = (_a16 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
7530
7587
|
_a16,
|
7531
7588
|
modelId
|
7532
7589
|
);
|
7533
7590
|
if (model == null) {
|
7534
7591
|
throw new NoSuchModelError4({ modelId: id, modelType: "languageModel" });
|
7535
7592
|
}
|
7593
|
+
if (this.languageModelMiddleware != null) {
|
7594
|
+
model = wrapLanguageModel({
|
7595
|
+
model,
|
7596
|
+
middleware: this.languageModelMiddleware
|
7597
|
+
});
|
7598
|
+
}
|
7536
7599
|
return model;
|
7537
7600
|
}
|
7538
7601
|
textEmbeddingModel(id) {
|
@@ -8915,7 +8978,8 @@ function convertToModelMessages(messages, options) {
|
|
8915
8978
|
if (part.type === "text") {
|
8916
8979
|
content.push({
|
8917
8980
|
type: "text",
|
8918
|
-
text: part.text
|
8981
|
+
text: part.text,
|
8982
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
8919
8983
|
});
|
8920
8984
|
} else if (part.type === "file") {
|
8921
8985
|
content.push({
|
@@ -8942,7 +9006,8 @@ function convertToModelMessages(messages, options) {
|
|
8942
9006
|
toolCallId: part.toolCallId,
|
8943
9007
|
toolName,
|
8944
9008
|
input: part.input,
|
8945
|
-
providerExecuted: part.providerExecuted
|
9009
|
+
providerExecuted: part.providerExecuted,
|
9010
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
8946
9011
|
});
|
8947
9012
|
if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
|
8948
9013
|
content.push({
|
@@ -9275,6 +9340,7 @@ export {
|
|
9275
9340
|
tool2 as tool,
|
9276
9341
|
toolModelMessageSchema,
|
9277
9342
|
userModelMessageSchema,
|
9278
|
-
wrapLanguageModel
|
9343
|
+
wrapLanguageModel,
|
9344
|
+
wrapProvider
|
9279
9345
|
};
|
9280
9346
|
//# sourceMappingURL=index.mjs.map
|