@mastra/ai-sdk 1.0.0-beta.12 → 1.0.0-beta.14
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 +88 -0
- package/dist/chat-route.d.ts +2 -0
- package/dist/chat-route.d.ts.map +1 -1
- package/dist/convert-streams.d.ts +1 -1
- package/dist/convert-streams.d.ts.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/index.cjs +51 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +52 -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 +5 -5
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);
|
|
@@ -3950,6 +3973,10 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
|
|
|
3950
3973
|
}
|
|
3951
3974
|
};
|
|
3952
3975
|
}
|
|
3976
|
+
case "network-object":
|
|
3977
|
+
case "network-object-result": {
|
|
3978
|
+
return null;
|
|
3979
|
+
}
|
|
3953
3980
|
default: {
|
|
3954
3981
|
if (isAgentExecutionDataChunkType(payload)) {
|
|
3955
3982
|
if (!("data" in payload.payload)) {
|
|
@@ -4078,7 +4105,7 @@ async function handleChatStream({
|
|
|
4078
4105
|
sendReasoning = false,
|
|
4079
4106
|
sendSources = false
|
|
4080
4107
|
}) {
|
|
4081
|
-
const { messages, resumeData, runId, requestContext, ...rest } = params;
|
|
4108
|
+
const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
|
|
4082
4109
|
if (resumeData && !runId) {
|
|
4083
4110
|
throw new Error("runId is required when resumeData is provided");
|
|
4084
4111
|
}
|
|
@@ -4089,20 +4116,24 @@ async function handleChatStream({
|
|
|
4089
4116
|
if (!Array.isArray(messages)) {
|
|
4090
4117
|
throw new Error("Messages must be an array of UIMessage objects");
|
|
4091
4118
|
}
|
|
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
4119
|
let lastMessageId;
|
|
4100
|
-
|
|
4120
|
+
let messagesToSend = messages;
|
|
4121
|
+
if (messages.length > 0) {
|
|
4101
4122
|
const lastMessage = messages[messages.length - 1];
|
|
4102
4123
|
if (lastMessage?.role === "assistant") {
|
|
4103
4124
|
lastMessageId = lastMessage.id;
|
|
4125
|
+
if (trigger === "regenerate-message") {
|
|
4126
|
+
messagesToSend = messages.slice(0, -1);
|
|
4127
|
+
}
|
|
4104
4128
|
}
|
|
4105
4129
|
}
|
|
4130
|
+
const mergedOptions = {
|
|
4131
|
+
...defaultOptions2,
|
|
4132
|
+
...rest,
|
|
4133
|
+
...runId && { runId },
|
|
4134
|
+
requestContext: requestContext || defaultOptions2?.requestContext
|
|
4135
|
+
};
|
|
4136
|
+
const result = resumeData ? await agentObj.resumeStream(resumeData, mergedOptions) : await agentObj.stream(messagesToSend, mergedOptions);
|
|
4106
4137
|
return createUIMessageStream({
|
|
4107
4138
|
originalMessages: messages,
|
|
4108
4139
|
execute: async ({ writer }) => {
|
|
@@ -4609,7 +4640,7 @@ function createProcessorMiddleware(options) {
|
|
|
4609
4640
|
}
|
|
4610
4641
|
}
|
|
4611
4642
|
}
|
|
4612
|
-
const newPrompt = messageList.get.all.aiV5.prompt().map(
|
|
4643
|
+
const newPrompt = messageList.get.all.aiV5.prompt().map(aiV5ModelMessageToV2PromptMessage);
|
|
4613
4644
|
return {
|
|
4614
4645
|
...params,
|
|
4615
4646
|
prompt: newPrompt
|