@mastra/ai-sdk 0.0.0-fix-local-pkg-cwd-20251226155239 → 0.0.0-fix-agent-network-schema-20260119184437

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/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":
@@ -3255,7 +3257,8 @@ function convertFullStreamChunkToUIMessageStream({
3255
3257
  ${JSON.stringify(part)}`
3256
3258
  );
3257
3259
  }
3258
- return part.output;
3260
+ const { type, data, id } = part.output;
3261
+ return { type, data, ...id !== void 0 && { id } };
3259
3262
  }
3260
3263
  return;
3261
3264
  }
@@ -3317,7 +3320,8 @@ function convertFullStreamChunkToUIMessageStream({
3317
3320
  ${JSON.stringify(part)}`
3318
3321
  );
3319
3322
  }
3320
- return part;
3323
+ const { type, data, id } = part;
3324
+ return { type, data, ...id !== void 0 && { id } };
3321
3325
  }
3322
3326
  return;
3323
3327
  }
@@ -3325,7 +3329,7 @@ function convertFullStreamChunkToUIMessageStream({
3325
3329
  }
3326
3330
 
3327
3331
  // src/transformers.ts
3328
- var PRIMITIVE_CACHE_SYMBOL = Symbol("primitive-cache");
3332
+ var PRIMITIVE_CACHE_SYMBOL = /* @__PURE__ */ Symbol("primitive-cache");
3329
3333
  function WorkflowStreamToAISDKTransformer({
3330
3334
  includeTextStreamParts
3331
3335
  } = {}) {
@@ -3362,7 +3366,15 @@ function AgentNetworkToAISDKTransformer() {
3362
3366
  },
3363
3367
  transform(chunk, controller) {
3364
3368
  const transformed = transformNetwork(chunk, bufferedNetworks);
3365
- if (transformed) controller.enqueue(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
+ }
3366
3378
  }
3367
3379
  });
3368
3380
  }
@@ -3675,7 +3687,8 @@ function transformWorkflow(payload, bufferedWorkflows, isNested, includeTextStre
3675
3687
  ${JSON.stringify(output)}`
3676
3688
  );
3677
3689
  }
3678
- return output;
3690
+ const { type, data, id } = output;
3691
+ return { type, data, ...id !== void 0 && { id } };
3679
3692
  }
3680
3693
  return null;
3681
3694
  }
@@ -3687,7 +3700,12 @@ function transformWorkflow(payload, bufferedWorkflows, isNested, includeTextStre
3687
3700
  ${JSON.stringify(payload)}`
3688
3701
  );
3689
3702
  }
3690
- return payload;
3703
+ const { type, data, id } = payload;
3704
+ return {
3705
+ type,
3706
+ data,
3707
+ ...id !== void 0 && { id }
3708
+ };
3691
3709
  }
3692
3710
  return null;
3693
3711
  }
@@ -3701,7 +3719,8 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3701
3719
  name: payload.payload.networkId,
3702
3720
  steps: [],
3703
3721
  usage: null,
3704
- output: null
3722
+ output: null,
3723
+ hasEmittedText: false
3705
3724
  });
3706
3725
  }
3707
3726
  const current = bufferedNetworks.get(payload.runId);
@@ -3736,6 +3755,7 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3736
3755
  case "routing-agent-text-start": {
3737
3756
  const current = bufferedNetworks.get(payload.runId);
3738
3757
  if (!current) return null;
3758
+ current.hasEmittedText = true;
3739
3759
  return {
3740
3760
  type: "text-start",
3741
3761
  id: payload.runId
@@ -3744,6 +3764,7 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3744
3764
  case "routing-agent-text-delta": {
3745
3765
  const current = bufferedNetworks.get(payload.runId);
3746
3766
  if (!current) return null;
3767
+ current.hasEmittedText = true;
3747
3768
  return {
3748
3769
  type: "text-delta",
3749
3770
  id: payload.runId,
@@ -3918,15 +3939,25 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3918
3939
  case "network-execution-event-step-finish": {
3919
3940
  const current = bufferedNetworks.get(payload.runId);
3920
3941
  if (!current) return null;
3921
- return {
3942
+ const resultText = payload.payload?.result;
3943
+ const dataNetworkChunk = {
3922
3944
  type: isNested ? "data-tool-network" : "data-network",
3923
3945
  id: payload.runId,
3924
3946
  data: {
3925
3947
  ...current,
3926
3948
  status: "finished",
3927
- output: payload.payload?.result ?? current.output
3949
+ output: resultText ?? current.output
3928
3950
  }
3929
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;
3930
3961
  }
3931
3962
  case "network-execution-event-finish": {
3932
3963
  const current = bufferedNetworks.get(payload.runId);
@@ -3942,6 +3973,10 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3942
3973
  }
3943
3974
  };
3944
3975
  }
3976
+ case "network-object":
3977
+ case "network-object-result": {
3978
+ return null;
3979
+ }
3945
3980
  default: {
3946
3981
  if (isAgentExecutionDataChunkType(payload)) {
3947
3982
  if (!("data" in payload.payload)) {
@@ -3950,8 +3985,8 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3950
3985
  ${JSON.stringify(payload)}`
3951
3986
  );
3952
3987
  }
3953
- const { type, data } = payload.payload;
3954
- return { type, data };
3988
+ const { type, data, id } = payload.payload;
3989
+ return { type, data, ...id !== void 0 && { id } };
3955
3990
  }
3956
3991
  if (isWorkflowExecutionDataChunkType(payload)) {
3957
3992
  if (!("data" in payload.payload)) {
@@ -3960,8 +3995,8 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
3960
3995
  ${JSON.stringify(payload)}`
3961
3996
  );
3962
3997
  }
3963
- const { type, data } = payload.payload;
3964
- return { type, data };
3998
+ const { type, data, id } = payload.payload;
3999
+ return { type, data, ...id !== void 0 && { id } };
3965
4000
  }
3966
4001
  if (payload.type.startsWith("agent-execution-event-")) {
3967
4002
  const stepId = payload.payload.runId;
@@ -4021,8 +4056,8 @@ function transformNetwork(payload, bufferedNetworks, isNested) {
4021
4056
  ${JSON.stringify(payload)}`
4022
4057
  );
4023
4058
  }
4024
- const { type, data } = payload;
4025
- return { type, data };
4059
+ const { type, data, id } = payload;
4060
+ return { type, data, ...id !== void 0 && { id } };
4026
4061
  }
4027
4062
  return null;
4028
4063
  }
@@ -4070,7 +4105,7 @@ async function handleChatStream({
4070
4105
  sendReasoning = false,
4071
4106
  sendSources = false
4072
4107
  }) {
4073
- const { messages, resumeData, runId, requestContext, ...rest } = params;
4108
+ const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
4074
4109
  if (resumeData && !runId) {
4075
4110
  throw new Error("runId is required when resumeData is provided");
4076
4111
  }
@@ -4081,20 +4116,24 @@ async function handleChatStream({
4081
4116
  if (!Array.isArray(messages)) {
4082
4117
  throw new Error("Messages must be an array of UIMessage objects");
4083
4118
  }
4084
- const mergedOptions = {
4085
- ...defaultOptions2,
4086
- ...rest,
4087
- ...runId && { runId },
4088
- requestContext: requestContext || defaultOptions2?.requestContext
4089
- };
4090
- const result = resumeData ? await agentObj.resumeStream(resumeData, mergedOptions) : await agentObj.stream(messages, mergedOptions);
4091
4119
  let lastMessageId;
4092
- if (messages.length) {
4120
+ let messagesToSend = messages;
4121
+ if (messages.length > 0) {
4093
4122
  const lastMessage = messages[messages.length - 1];
4094
4123
  if (lastMessage?.role === "assistant") {
4095
4124
  lastMessageId = lastMessage.id;
4125
+ if (trigger === "regenerate-message") {
4126
+ messagesToSend = messages.slice(0, -1);
4127
+ }
4096
4128
  }
4097
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);
4098
4137
  return createUIMessageStream({
4099
4138
  originalMessages: messages,
4100
4139
  execute: async ({ writer }) => {
@@ -4601,7 +4640,7 @@ function createProcessorMiddleware(options) {
4601
4640
  }
4602
4641
  }
4603
4642
  }
4604
- const newPrompt = messageList.get.all.aiV5.prompt().map(MessageList.aiV5ModelMessageToV2PromptMessage);
4643
+ const newPrompt = messageList.get.all.aiV5.prompt().map(aiV5ModelMessageToV2PromptMessage);
4605
4644
  return {
4606
4645
  ...params,
4607
4646
  prompt: newPrompt