@mastra/ai-sdk 1.0.0-beta.12 → 1.0.0-beta.13
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 +63 -0
- package/dist/chat-route.d.ts +2 -0
- package/dist/chat-route.d.ts.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +47 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +48 -21
- package/dist/index.js.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/transformers.d.ts +3 -1
- package/dist/transformers.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as z4 from 'zod/v4';
|
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
import { ZodFirstPartyTypeKind } from 'zod/v3';
|
|
5
5
|
import { convertFullStreamChunkToMastra, DefaultGeneratedFile, DefaultGeneratedFileWithType } from '@mastra/core/stream';
|
|
6
|
-
import { TripWire, MessageList } from '@mastra/core/agent';
|
|
6
|
+
import { TripWire, MessageList, aiV5ModelMessageToV2PromptMessage } from '@mastra/core/agent';
|
|
7
7
|
import { RequestContext } from '@mastra/core/di';
|
|
8
8
|
import { WorkingMemory, MessageHistory, SemanticRecall } from '@mastra/core/processors';
|
|
9
9
|
|
|
@@ -218,7 +218,7 @@ function secureJsonParse(text2) {
|
|
|
218
218
|
Error.stackTraceLimit = stackTraceLimit;
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
|
-
var validatorSymbol = Symbol.for("vercel.ai.validator");
|
|
221
|
+
var validatorSymbol = /* @__PURE__ */ Symbol.for("vercel.ai.validator");
|
|
222
222
|
function validator(validate) {
|
|
223
223
|
return { [validatorSymbol]: true, validate };
|
|
224
224
|
}
|
|
@@ -301,7 +301,7 @@ var getRelativePath = (pathA, pathB) => {
|
|
|
301
301
|
}
|
|
302
302
|
return [(pathA.length - i).toString(), ...pathB.slice(i)].join("/");
|
|
303
303
|
};
|
|
304
|
-
var ignoreOverride = Symbol(
|
|
304
|
+
var ignoreOverride = /* @__PURE__ */ Symbol(
|
|
305
305
|
"Let zodToJsonSchema decide on which parser to use"
|
|
306
306
|
);
|
|
307
307
|
var defaultOptions = {
|
|
@@ -1421,7 +1421,7 @@ function zodSchema(zodSchema2, options) {
|
|
|
1421
1421
|
return zod3Schema(zodSchema2);
|
|
1422
1422
|
}
|
|
1423
1423
|
}
|
|
1424
|
-
var schemaSymbol = Symbol.for("vercel.ai.schema");
|
|
1424
|
+
var schemaSymbol = /* @__PURE__ */ Symbol.for("vercel.ai.schema");
|
|
1425
1425
|
function jsonSchema(jsonSchema2, {
|
|
1426
1426
|
validate
|
|
1427
1427
|
} = {}) {
|
|
@@ -2978,7 +2978,8 @@ function convertMastraChunkToAISDKv5({
|
|
|
2978
2978
|
runId: chunk.runId,
|
|
2979
2979
|
toolCallId: chunk.payload.toolCallId,
|
|
2980
2980
|
toolName: chunk.payload.toolName,
|
|
2981
|
-
args: chunk.payload.args
|
|
2981
|
+
args: chunk.payload.args,
|
|
2982
|
+
resumeSchema: chunk.payload.resumeSchema
|
|
2982
2983
|
}
|
|
2983
2984
|
};
|
|
2984
2985
|
case "tool-call-suspended":
|
|
@@ -2989,7 +2990,8 @@ function convertMastraChunkToAISDKv5({
|
|
|
2989
2990
|
runId: chunk.runId,
|
|
2990
2991
|
toolCallId: chunk.payload.toolCallId,
|
|
2991
2992
|
toolName: chunk.payload.toolName,
|
|
2992
|
-
suspendPayload: chunk.payload.suspendPayload
|
|
2993
|
+
suspendPayload: chunk.payload.suspendPayload,
|
|
2994
|
+
resumeSchema: chunk.payload.resumeSchema
|
|
2993
2995
|
}
|
|
2994
2996
|
};
|
|
2995
2997
|
case "tool-call-input-streaming-start":
|
|
@@ -3327,7 +3329,7 @@ function convertFullStreamChunkToUIMessageStream({
|
|
|
3327
3329
|
}
|
|
3328
3330
|
|
|
3329
3331
|
// src/transformers.ts
|
|
3330
|
-
var PRIMITIVE_CACHE_SYMBOL = Symbol("primitive-cache");
|
|
3332
|
+
var PRIMITIVE_CACHE_SYMBOL = /* @__PURE__ */ Symbol("primitive-cache");
|
|
3331
3333
|
function WorkflowStreamToAISDKTransformer({
|
|
3332
3334
|
includeTextStreamParts
|
|
3333
3335
|
} = {}) {
|
|
@@ -3364,7 +3366,15 @@ function AgentNetworkToAISDKTransformer() {
|
|
|
3364
3366
|
},
|
|
3365
3367
|
transform(chunk, controller) {
|
|
3366
3368
|
const transformed = transformNetwork(chunk, bufferedNetworks);
|
|
3367
|
-
if (transformed)
|
|
3369
|
+
if (transformed) {
|
|
3370
|
+
if (Array.isArray(transformed)) {
|
|
3371
|
+
for (const item of transformed) {
|
|
3372
|
+
controller.enqueue(item);
|
|
3373
|
+
}
|
|
3374
|
+
} else {
|
|
3375
|
+
controller.enqueue(transformed);
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3368
3378
|
}
|
|
3369
3379
|
});
|
|
3370
3380
|
}
|
|
@@ -3709,7 +3719,8 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
3709
3719
|
name: payload.payload.networkId,
|
|
3710
3720
|
steps: [],
|
|
3711
3721
|
usage: null,
|
|
3712
|
-
output: null
|
|
3722
|
+
output: null,
|
|
3723
|
+
hasEmittedText: false
|
|
3713
3724
|
});
|
|
3714
3725
|
}
|
|
3715
3726
|
const current = bufferedNetworks.get(payload.runId);
|
|
@@ -3744,6 +3755,7 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
3744
3755
|
case "routing-agent-text-start": {
|
|
3745
3756
|
const current = bufferedNetworks.get(payload.runId);
|
|
3746
3757
|
if (!current) return null;
|
|
3758
|
+
current.hasEmittedText = true;
|
|
3747
3759
|
return {
|
|
3748
3760
|
type: "text-start",
|
|
3749
3761
|
id: payload.runId
|
|
@@ -3752,6 +3764,7 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
3752
3764
|
case "routing-agent-text-delta": {
|
|
3753
3765
|
const current = bufferedNetworks.get(payload.runId);
|
|
3754
3766
|
if (!current) return null;
|
|
3767
|
+
current.hasEmittedText = true;
|
|
3755
3768
|
return {
|
|
3756
3769
|
type: "text-delta",
|
|
3757
3770
|
id: payload.runId,
|
|
@@ -3926,15 +3939,25 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
3926
3939
|
case "network-execution-event-step-finish": {
|
|
3927
3940
|
const current = bufferedNetworks.get(payload.runId);
|
|
3928
3941
|
if (!current) return null;
|
|
3929
|
-
|
|
3942
|
+
const resultText = payload.payload?.result;
|
|
3943
|
+
const dataNetworkChunk = {
|
|
3930
3944
|
type: isNested ? "data-tool-network" : "data-network",
|
|
3931
3945
|
id: payload.runId,
|
|
3932
3946
|
data: {
|
|
3933
3947
|
...current,
|
|
3934
3948
|
status: "finished",
|
|
3935
|
-
output:
|
|
3949
|
+
output: resultText ?? current.output
|
|
3936
3950
|
}
|
|
3937
3951
|
};
|
|
3952
|
+
if (!current.hasEmittedText && resultText && typeof resultText === "string" && resultText.length > 0) {
|
|
3953
|
+
current.hasEmittedText = true;
|
|
3954
|
+
return [
|
|
3955
|
+
{ type: "text-start", id: payload.runId },
|
|
3956
|
+
{ type: "text-delta", id: payload.runId, delta: resultText },
|
|
3957
|
+
dataNetworkChunk
|
|
3958
|
+
];
|
|
3959
|
+
}
|
|
3960
|
+
return dataNetworkChunk;
|
|
3938
3961
|
}
|
|
3939
3962
|
case "network-execution-event-finish": {
|
|
3940
3963
|
const current = bufferedNetworks.get(payload.runId);
|
|
@@ -4078,7 +4101,7 @@ async function handleChatStream({
|
|
|
4078
4101
|
sendReasoning = false,
|
|
4079
4102
|
sendSources = false
|
|
4080
4103
|
}) {
|
|
4081
|
-
const { messages, resumeData, runId, requestContext, ...rest } = params;
|
|
4104
|
+
const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
|
|
4082
4105
|
if (resumeData && !runId) {
|
|
4083
4106
|
throw new Error("runId is required when resumeData is provided");
|
|
4084
4107
|
}
|
|
@@ -4089,20 +4112,24 @@ async function handleChatStream({
|
|
|
4089
4112
|
if (!Array.isArray(messages)) {
|
|
4090
4113
|
throw new Error("Messages must be an array of UIMessage objects");
|
|
4091
4114
|
}
|
|
4092
|
-
const mergedOptions = {
|
|
4093
|
-
...defaultOptions2,
|
|
4094
|
-
...rest,
|
|
4095
|
-
...runId && { runId },
|
|
4096
|
-
requestContext: requestContext || defaultOptions2?.requestContext
|
|
4097
|
-
};
|
|
4098
|
-
const result = resumeData ? await agentObj.resumeStream(resumeData, mergedOptions) : await agentObj.stream(messages, mergedOptions);
|
|
4099
4115
|
let lastMessageId;
|
|
4100
|
-
|
|
4116
|
+
let messagesToSend = messages;
|
|
4117
|
+
if (messages.length > 0) {
|
|
4101
4118
|
const lastMessage = messages[messages.length - 1];
|
|
4102
4119
|
if (lastMessage?.role === "assistant") {
|
|
4103
4120
|
lastMessageId = lastMessage.id;
|
|
4121
|
+
if (trigger === "regenerate-message") {
|
|
4122
|
+
messagesToSend = messages.slice(0, -1);
|
|
4123
|
+
}
|
|
4104
4124
|
}
|
|
4105
4125
|
}
|
|
4126
|
+
const mergedOptions = {
|
|
4127
|
+
...defaultOptions2,
|
|
4128
|
+
...rest,
|
|
4129
|
+
...runId && { runId },
|
|
4130
|
+
requestContext: requestContext || defaultOptions2?.requestContext
|
|
4131
|
+
};
|
|
4132
|
+
const result = resumeData ? await agentObj.resumeStream(resumeData, mergedOptions) : await agentObj.stream(messagesToSend, mergedOptions);
|
|
4106
4133
|
return createUIMessageStream({
|
|
4107
4134
|
originalMessages: messages,
|
|
4108
4135
|
execute: async ({ writer }) => {
|
|
@@ -4609,7 +4636,7 @@ function createProcessorMiddleware(options) {
|
|
|
4609
4636
|
}
|
|
4610
4637
|
}
|
|
4611
4638
|
}
|
|
4612
|
-
const newPrompt = messageList.get.all.aiV5.prompt().map(
|
|
4639
|
+
const newPrompt = messageList.get.all.aiV5.prompt().map(aiV5ModelMessageToV2PromptMessage);
|
|
4613
4640
|
return {
|
|
4614
4641
|
...params,
|
|
4615
4642
|
prompt: newPrompt
|