@mastra/core 1.0.0-beta.7 → 1.0.0-beta.8

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.
Files changed (97) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/index.cjs +6 -6
  4. package/dist/agent/index.js +1 -1
  5. package/dist/{chunk-HJNEZRI4.cjs → chunk-6BYHQ52F.cjs} +5 -5
  6. package/dist/{chunk-HJNEZRI4.cjs.map → chunk-6BYHQ52F.cjs.map} +1 -1
  7. package/dist/{chunk-Z4Y554NX.js → chunk-7PXCGGMO.js} +8 -12
  8. package/dist/chunk-7PXCGGMO.js.map +1 -0
  9. package/dist/{chunk-POM7FCH5.js → chunk-EDNHZZUP.js} +77 -42
  10. package/dist/chunk-EDNHZZUP.js.map +1 -0
  11. package/dist/{chunk-5T53HHNP.js → chunk-GW7BNMGA.js} +4 -4
  12. package/dist/{chunk-5T53HHNP.js.map → chunk-GW7BNMGA.js.map} +1 -1
  13. package/dist/{chunk-G32WDDGV.js → chunk-HDMH5IDV.js} +2 -2
  14. package/dist/{chunk-G32WDDGV.js.map → chunk-HDMH5IDV.js.map} +1 -1
  15. package/dist/{chunk-RBBEMTMA.cjs → chunk-HP6TRJ2Q.cjs} +80 -44
  16. package/dist/chunk-HP6TRJ2Q.cjs.map +1 -0
  17. package/dist/{chunk-M7CQULF7.cjs → chunk-KBXFAF37.cjs} +2 -2
  18. package/dist/{chunk-M7CQULF7.cjs.map → chunk-KBXFAF37.cjs.map} +1 -1
  19. package/dist/{chunk-GZ6MCDK2.js → chunk-QDIYYAA4.js} +10 -2
  20. package/dist/chunk-QDIYYAA4.js.map +1 -0
  21. package/dist/{chunk-NAKPEQEQ.js → chunk-QHJ7YVNX.js} +3 -3
  22. package/dist/{chunk-NAKPEQEQ.js.map → chunk-QHJ7YVNX.js.map} +1 -1
  23. package/dist/{chunk-4AP234N6.cjs → chunk-QYNZAPFE.cjs} +2 -2
  24. package/dist/{chunk-4AP234N6.cjs.map → chunk-QYNZAPFE.cjs.map} +1 -1
  25. package/dist/{chunk-EE5NIGJ4.js → chunk-RWT3XPKO.js} +2 -2
  26. package/dist/{chunk-EE5NIGJ4.js.map → chunk-RWT3XPKO.js.map} +1 -1
  27. package/dist/{chunk-26YAGTXK.cjs → chunk-SD2BDUJ6.cjs} +28 -32
  28. package/dist/chunk-SD2BDUJ6.cjs.map +1 -0
  29. package/dist/{chunk-EPMSC67U.js → chunk-SPIUKQDK.js} +6 -6
  30. package/dist/{chunk-EPMSC67U.js.map → chunk-SPIUKQDK.js.map} +1 -1
  31. package/dist/{chunk-URMN7TTH.cjs → chunk-VWC5AUOQ.cjs} +11 -3
  32. package/dist/chunk-VWC5AUOQ.cjs.map +1 -0
  33. package/dist/{chunk-VBKMNIWK.cjs → chunk-Y5SFNZUK.cjs} +11 -11
  34. package/dist/{chunk-VBKMNIWK.cjs.map → chunk-Y5SFNZUK.cjs.map} +1 -1
  35. package/dist/{chunk-PJ7AYWAX.cjs → chunk-Y7YCQDML.cjs} +10 -10
  36. package/dist/{chunk-PJ7AYWAX.cjs.map → chunk-Y7YCQDML.cjs.map} +1 -1
  37. package/dist/evals/index.cjs +9 -9
  38. package/dist/evals/index.js +2 -2
  39. package/dist/evals/scoreTraces/index.cjs +5 -5
  40. package/dist/evals/scoreTraces/index.js +2 -2
  41. package/dist/evals/types.d.ts +19 -18
  42. package/dist/evals/types.d.ts.map +1 -1
  43. package/dist/index.cjs +2 -2
  44. package/dist/index.js +1 -1
  45. package/dist/llm/index.cjs +9 -9
  46. package/dist/llm/index.js +2 -2
  47. package/dist/llm/model/provider-types.generated.d.ts +4 -0
  48. package/dist/loop/index.cjs +2 -2
  49. package/dist/loop/index.js +1 -1
  50. package/dist/mastra/index.cjs +2 -2
  51. package/dist/mastra/index.js +1 -1
  52. package/dist/memory/index.cjs +6 -6
  53. package/dist/memory/index.js +1 -1
  54. package/dist/processors/index.cjs +17 -17
  55. package/dist/processors/index.js +1 -1
  56. package/dist/provider-registry-A5QZFI2X.js +3 -0
  57. package/dist/{provider-registry-ZTMZMTVV.js.map → provider-registry-A5QZFI2X.js.map} +1 -1
  58. package/dist/provider-registry-V32PGH6F.cjs +40 -0
  59. package/dist/{provider-registry-7IFOXWPR.cjs.map → provider-registry-V32PGH6F.cjs.map} +1 -1
  60. package/dist/provider-registry.json +8 -0
  61. package/dist/relevance/index.cjs +2 -2
  62. package/dist/relevance/index.js +1 -1
  63. package/dist/storage/domains/scores/base.d.ts +2 -2
  64. package/dist/storage/domains/scores/base.d.ts.map +1 -1
  65. package/dist/storage/domains/scores/inmemory.d.ts +2 -2
  66. package/dist/storage/domains/scores/inmemory.d.ts.map +1 -1
  67. package/dist/storage/index.cjs +34 -34
  68. package/dist/storage/index.js +1 -1
  69. package/dist/storage/mock.d.ts +2 -2
  70. package/dist/storage/mock.d.ts.map +1 -1
  71. package/dist/stream/index.cjs +8 -8
  72. package/dist/stream/index.js +1 -1
  73. package/dist/workflows/default.d.ts +2 -2
  74. package/dist/workflows/default.d.ts.map +1 -1
  75. package/dist/workflows/evented/index.cjs +10 -10
  76. package/dist/workflows/evented/index.js +1 -1
  77. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  78. package/dist/workflows/handlers/control-flow.d.ts.map +1 -1
  79. package/dist/workflows/handlers/step.d.ts.map +1 -1
  80. package/dist/workflows/index.cjs +24 -20
  81. package/dist/workflows/index.js +1 -1
  82. package/dist/workflows/step.d.ts +4 -3
  83. package/dist/workflows/step.d.ts.map +1 -1
  84. package/dist/workflows/utils.d.ts +10 -1
  85. package/dist/workflows/utils.d.ts.map +1 -1
  86. package/dist/workflows/workflow.d.ts +1 -1
  87. package/dist/workflows/workflow.d.ts.map +1 -1
  88. package/package.json +3 -3
  89. package/src/llm/model/provider-types.generated.d.ts +4 -0
  90. package/dist/chunk-26YAGTXK.cjs.map +0 -1
  91. package/dist/chunk-GZ6MCDK2.js.map +0 -1
  92. package/dist/chunk-POM7FCH5.js.map +0 -1
  93. package/dist/chunk-RBBEMTMA.cjs.map +0 -1
  94. package/dist/chunk-URMN7TTH.cjs.map +0 -1
  95. package/dist/chunk-Z4Y554NX.js.map +0 -1
  96. package/dist/provider-registry-7IFOXWPR.cjs +0 -40
  97. package/dist/provider-registry-ZTMZMTVV.js +0 -3
@@ -1,8 +1,8 @@
1
1
  import { DefaultVoice } from './chunk-F2GAJSBI.js';
2
2
  import { EMITTER_SYMBOL, STREAM_FORMAT_SYMBOL } from './chunk-NLNKQD2T.js';
3
- import { InMemoryStore } from './chunk-G32WDDGV.js';
3
+ import { InMemoryStore } from './chunk-HDMH5IDV.js';
4
4
  import { MessageList, DefaultGeneratedFile, DefaultGeneratedFileWithType } from './chunk-DMPHPHMU.js';
5
- import { ModelRouterEmbeddingModel, resolveModelConfig } from './chunk-NAKPEQEQ.js';
5
+ import { ModelRouterEmbeddingModel, resolveModelConfig } from './chunk-QHJ7YVNX.js';
6
6
  import { MastraLLMV1 } from './chunk-4GTU7MB2.js';
7
7
  import { executeHook } from './chunk-L54GIUCB.js';
8
8
  import { removeUndefinedValues, deepMerge, ensureToolProperties, makeCoreTool, createMastraProxy, isZodType, selectFields, delay } from './chunk-URBPEE67.js';
@@ -977,14 +977,15 @@ async function validateStepResumeData({ resumeData, step }) {
977
977
  }
978
978
  async function validateStepSuspendData({
979
979
  suspendData,
980
- step
980
+ step,
981
+ validateInputs
981
982
  }) {
982
983
  if (!suspendData) {
983
984
  return { suspendData: void 0, validationError: void 0 };
984
985
  }
985
986
  let validationError;
986
987
  const suspendSchema = step.suspendSchema;
987
- if (suspendSchema) {
988
+ if (suspendSchema && validateInputs) {
988
989
  const validatedSuspendData = await suspendSchema.safeParseAsync(suspendData);
989
990
  if (!validatedSuspendData.success) {
990
991
  const errors = getZodErrors(validatedSuspendData.error);
@@ -996,6 +997,28 @@ async function validateStepSuspendData({
996
997
  }
997
998
  return { suspendData, validationError };
998
999
  }
1000
+ async function validateStepStateData({
1001
+ stateData,
1002
+ step,
1003
+ validateInputs
1004
+ }) {
1005
+ if (!stateData) {
1006
+ return { stateData: void 0, validationError: void 0 };
1007
+ }
1008
+ let validationError;
1009
+ const stateSchema = step.stateSchema;
1010
+ if (stateSchema && validateInputs) {
1011
+ const validatedStateData = await stateSchema.safeParseAsync(stateData);
1012
+ if (!validatedStateData.success) {
1013
+ const errors = getZodErrors(validatedStateData.error);
1014
+ const errorMessages = errors.map((e) => `- ${e.path?.join(".")}: ${e.message}`).join("\n");
1015
+ validationError = new Error("Step state data validation failed: \n" + errorMessages);
1016
+ } else {
1017
+ stateData = validatedStateData.data;
1018
+ }
1019
+ }
1020
+ return { stateData, validationError };
1021
+ }
999
1022
  function getResumeLabelsByStepId(resumeLabels, stepId) {
1000
1023
  return Object.entries(resumeLabels).filter(([_, value]) => value.stepId === stepId).reduce(
1001
1024
  (acc, [key, value]) => {
@@ -1315,18 +1338,12 @@ async function executeConditional(engine, params) {
1315
1338
  requestContext,
1316
1339
  inputData: prevOutput,
1317
1340
  state: executionContext.state,
1318
- setState: (state) => {
1319
- executionContext.state = state;
1320
- },
1321
1341
  retryCount: -1,
1322
1342
  tracingContext: {
1323
1343
  currentSpan: evalSpan
1324
1344
  },
1325
1345
  getInitData: () => stepResults?.input,
1326
1346
  getStepResult: getStepResult.bind(null, stepResults),
1327
- // TODO: this function shouldn't have suspend probably?
1328
- suspend: async (_suspendPayload) => {
1329
- },
1330
1347
  bail: () => {
1331
1348
  },
1332
1349
  abort: () => {
@@ -1566,9 +1583,6 @@ async function executeLoop(engine, params) {
1566
1583
  requestContext,
1567
1584
  inputData: result.output,
1568
1585
  state: executionContext.state,
1569
- setState: (state) => {
1570
- executionContext.state = state;
1571
- },
1572
1586
  retryCount: -1,
1573
1587
  tracingContext: {
1574
1588
  currentSpan: evalSpan
@@ -1576,8 +1590,6 @@ async function executeLoop(engine, params) {
1576
1590
  iterationCount: iteration + 1,
1577
1591
  getInitData: () => stepResults?.input,
1578
1592
  getStepResult: getStepResult.bind(null, stepResults),
1579
- suspend: async (_suspendPayload) => {
1580
- },
1581
1593
  bail: () => {
1582
1594
  },
1583
1595
  abort: () => {
@@ -2291,7 +2303,7 @@ async function executeSleep(engine, params) {
2291
2303
  requestContext,
2292
2304
  inputData: prevOutput,
2293
2305
  state: executionContext.state,
2294
- setState: (state) => {
2306
+ setState: async (state) => {
2295
2307
  executionContext.state = state;
2296
2308
  },
2297
2309
  retryCount: -1,
@@ -2372,7 +2384,7 @@ async function executeSleepUntil(engine, params) {
2372
2384
  requestContext,
2373
2385
  inputData: prevOutput,
2374
2386
  state: executionContext.state,
2375
- setState: (state) => {
2387
+ setState: async (state) => {
2376
2388
  executionContext.state = state;
2377
2389
  },
2378
2390
  retryCount: -1,
@@ -2581,9 +2593,16 @@ async function executeStep(engine, params) {
2581
2593
  requestContext,
2582
2594
  inputData,
2583
2595
  state: executionContext.state,
2584
- setState: (state) => {
2585
- executionContext.state = state;
2586
- contextMutations.stateUpdate = state;
2596
+ setState: async (state) => {
2597
+ const { stateData, validationError: stateValidationError } = await validateStepStateData({
2598
+ stateData: state,
2599
+ step,
2600
+ validateInputs: engine.options?.validateInputs ?? true
2601
+ });
2602
+ if (stateValidationError) {
2603
+ throw stateValidationError;
2604
+ }
2605
+ contextMutations.stateUpdate = stateData;
2587
2606
  },
2588
2607
  retryCount,
2589
2608
  resumeData: resumeDataToUse,
@@ -2594,7 +2613,8 @@ async function executeStep(engine, params) {
2594
2613
  suspend: async (suspendPayload, suspendOptions) => {
2595
2614
  const { suspendData, validationError: suspendValidationError } = await validateStepSuspendData({
2596
2615
  suspendData: suspendPayload,
2597
- step
2616
+ step,
2617
+ validateInputs: engine.options?.validateInputs ?? true
2598
2618
  });
2599
2619
  if (suspendValidationError) {
2600
2620
  throw suspendValidationError;
@@ -2669,9 +2689,6 @@ async function executeStep(engine, params) {
2669
2689
  const { result: durableResult } = stepRetryResult;
2670
2690
  Object.assign(executionContext.suspendedPaths, durableResult.contextMutations.suspendedPaths);
2671
2691
  Object.assign(executionContext.resumeLabels, durableResult.contextMutations.resumeLabels);
2672
- if (durableResult.contextMutations.stateUpdate !== null) {
2673
- executionContext.state = durableResult.contextMutations.stateUpdate;
2674
- }
2675
2692
  if (engine.requiresDurableContextSerialization() && durableResult.contextMutations.requestContextUpdate) {
2676
2693
  requestContext.clear();
2677
2694
  for (const [key, value] of Object.entries(durableResult.contextMutations.requestContextUpdate)) {
@@ -2729,7 +2746,10 @@ async function executeStep(engine, params) {
2729
2746
  return {
2730
2747
  result: stepResult,
2731
2748
  stepResults: { [step.id]: stepResult },
2732
- mutableContext: engine.buildMutableContext(executionContext),
2749
+ mutableContext: engine.buildMutableContext({
2750
+ ...executionContext,
2751
+ state: stepRetryResult.ok ? stepRetryResult.result.contextMutations.stateUpdate ?? executionContext.state : executionContext.state
2752
+ }),
2733
2753
  requestContext: engine.serializeRequestContext(requestContext)
2734
2754
  };
2735
2755
  }
@@ -3077,7 +3097,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
3077
3097
  * Apply mutable context changes back to the execution context.
3078
3098
  */
3079
3099
  applyMutableContext(executionContext, mutableContext) {
3080
- executionContext.state = mutableContext.state;
3100
+ Object.assign(executionContext.state, mutableContext.state);
3081
3101
  Object.assign(executionContext.suspendedPaths, mutableContext.suspendedPaths);
3082
3102
  Object.assign(executionContext.resumeLabels, mutableContext.resumeLabels);
3083
3103
  }
@@ -4041,7 +4061,7 @@ var Workflow = class extends MastraBase {
4041
4061
  return stepRes?.status === "suspended";
4042
4062
  });
4043
4063
  if (res.state) {
4044
- setState(res.state);
4064
+ await setState(res.state);
4045
4065
  }
4046
4066
  if (suspendedSteps?.length) {
4047
4067
  for (const [stepName, stepResult] of suspendedSteps) {
@@ -16021,16 +16041,25 @@ var Agent = class extends MastraBase {
16021
16041
  threadId,
16022
16042
  resourceId
16023
16043
  });
16024
- const run = await workflow.createRun();
16044
+ const run = await workflow.createRun({ runId });
16025
16045
  const { initialState, inputData: workflowInputData } = inputData;
16046
+ const { resumeData, suspend } = context?.agent ?? {};
16026
16047
  let result = void 0;
16027
16048
  if (methodType === "generate" || methodType === "generateLegacy") {
16028
- result = await run.start({
16029
- inputData: workflowInputData,
16030
- requestContext,
16031
- tracingContext: context?.tracingContext,
16032
- ...initialState && { initialState }
16033
- });
16049
+ if (resumeData) {
16050
+ result = await run.resume({
16051
+ resumeData,
16052
+ requestContext,
16053
+ tracingContext: context?.tracingContext
16054
+ });
16055
+ } else {
16056
+ result = await run.start({
16057
+ inputData: workflowInputData,
16058
+ requestContext,
16059
+ tracingContext: context?.tracingContext,
16060
+ ...initialState && { initialState }
16061
+ });
16062
+ }
16034
16063
  } else if (methodType === "streamLegacy") {
16035
16064
  const streamResult = run.streamLegacy({
16036
16065
  inputData: workflowInputData,
@@ -16045,7 +16074,11 @@ var Agent = class extends MastraBase {
16045
16074
  }
16046
16075
  result = await streamResult.getWorkflowState();
16047
16076
  } else if (methodType === "stream") {
16048
- const streamResult = run.stream({
16077
+ const streamResult = resumeData ? run.resumeStream({
16078
+ resumeData,
16079
+ requestContext,
16080
+ tracingContext: context?.tracingContext
16081
+ }) : run.stream({
16049
16082
  inputData: workflowInputData,
16050
16083
  requestContext,
16051
16084
  tracingContext: context?.tracingContext,
@@ -16066,10 +16099,12 @@ var Agent = class extends MastraBase {
16066
16099
  runId: run.runId
16067
16100
  };
16068
16101
  } else if (result?.status === "suspended") {
16069
- return {
16070
- error: `Workflow ended with status: "suspended". This is not currently handled in the basic agent workflow tool transformation. To achieve this you'll need to write your own tool that uses a workflow internally.`,
16071
- runId: run.runId
16072
- };
16102
+ const suspendedStep = result?.suspended?.[0]?.[0];
16103
+ const suspendPayload = result?.steps?.[suspendedStep]?.suspendPayload;
16104
+ if (suspendPayload?.__workflow_meta) {
16105
+ delete suspendPayload.__workflow_meta;
16106
+ }
16107
+ return suspend?.(suspendPayload);
16073
16108
  } else {
16074
16109
  return {
16075
16110
  error: `Workflow should never reach this path, workflow returned no status`,
@@ -18795,6 +18830,6 @@ var MastraModelOutput = class extends MastraBase {
18795
18830
  }
18796
18831
  };
18797
18832
 
18798
- export { AISDKV5OutputStream, Agent, BatchPartsProcessor, ChunkFrom, DefaultExecutionEngine, ExecutionEngine, LanguageDetector, MastraAgentNetworkStream, MastraMemory, MastraModelOutput, MemoryProcessor, MessageHistory, MockMemory, ModerationProcessor, PIIDetector, ProcessorRunner, ProcessorState, PromptInjectionDetector, Run, SemanticRecall, StructuredOutputProcessor, SystemPromptScrubber, TokenLimiterProcessor, ToolCallFilter, TripWire, UnicodeNormalizer, Workflow, WorkflowRunOutput, WorkingMemory, augmentWithInit, cloneStep, cloneWorkflow, convertFullStreamChunkToUIMessageStream, convertMastraChunkToAISDKv5, createDeprecationProxy, createStep, createTimeTravelExecutionParams, createWorkflow, getResumeLabelsByStepId, getStepIds, getStepResult, getZodErrors, loop, mapVariable, memoryDefaultOptions, parseMemoryRuntimeContext, resolveThreadIdFromArgs, runCountDeprecationMessage, tryGenerateWithJsonFallback, tryStreamWithJsonFallback, validateStepInput, validateStepResumeData, validateStepSuspendData };
18799
- //# sourceMappingURL=chunk-POM7FCH5.js.map
18800
- //# sourceMappingURL=chunk-POM7FCH5.js.map
18833
+ export { AISDKV5OutputStream, Agent, BatchPartsProcessor, ChunkFrom, DefaultExecutionEngine, ExecutionEngine, LanguageDetector, MastraAgentNetworkStream, MastraMemory, MastraModelOutput, MemoryProcessor, MessageHistory, MockMemory, ModerationProcessor, PIIDetector, ProcessorRunner, ProcessorState, PromptInjectionDetector, Run, SemanticRecall, StructuredOutputProcessor, SystemPromptScrubber, TokenLimiterProcessor, ToolCallFilter, TripWire, UnicodeNormalizer, Workflow, WorkflowRunOutput, WorkingMemory, augmentWithInit, cloneStep, cloneWorkflow, convertFullStreamChunkToUIMessageStream, convertMastraChunkToAISDKv5, createDeprecationProxy, createStep, createTimeTravelExecutionParams, createWorkflow, getResumeLabelsByStepId, getStepIds, getStepResult, getZodErrors, loop, mapVariable, memoryDefaultOptions, parseMemoryRuntimeContext, resolveThreadIdFromArgs, runCountDeprecationMessage, tryGenerateWithJsonFallback, tryStreamWithJsonFallback, validateStepInput, validateStepResumeData, validateStepStateData, validateStepSuspendData };
18834
+ //# sourceMappingURL=chunk-EDNHZZUP.js.map
18835
+ //# sourceMappingURL=chunk-EDNHZZUP.js.map