@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
@@ -2,9 +2,9 @@
2
2
 
3
3
  var chunk4JKEUSCC_cjs = require('./chunk-4JKEUSCC.cjs');
4
4
  var chunkABJOUEVA_cjs = require('./chunk-ABJOUEVA.cjs');
5
- var chunkM7CQULF7_cjs = require('./chunk-M7CQULF7.cjs');
5
+ var chunkKBXFAF37_cjs = require('./chunk-KBXFAF37.cjs');
6
6
  var chunkYBEW5YWC_cjs = require('./chunk-YBEW5YWC.cjs');
7
- var chunkHJNEZRI4_cjs = require('./chunk-HJNEZRI4.cjs');
7
+ var chunk6BYHQ52F_cjs = require('./chunk-6BYHQ52F.cjs');
8
8
  var chunkYUXTDKYN_cjs = require('./chunk-YUXTDKYN.cjs');
9
9
  var chunkMR7ZWBL6_cjs = require('./chunk-MR7ZWBL6.cjs');
10
10
  var chunk6C2PU6J4_cjs = require('./chunk-6C2PU6J4.cjs');
@@ -1005,14 +1005,15 @@ async function validateStepResumeData({ resumeData, step }) {
1005
1005
  }
1006
1006
  async function validateStepSuspendData({
1007
1007
  suspendData,
1008
- step
1008
+ step,
1009
+ validateInputs
1009
1010
  }) {
1010
1011
  if (!suspendData) {
1011
1012
  return { suspendData: void 0, validationError: void 0 };
1012
1013
  }
1013
1014
  let validationError;
1014
1015
  const suspendSchema = step.suspendSchema;
1015
- if (suspendSchema) {
1016
+ if (suspendSchema && validateInputs) {
1016
1017
  const validatedSuspendData = await suspendSchema.safeParseAsync(suspendData);
1017
1018
  if (!validatedSuspendData.success) {
1018
1019
  const errors = getZodErrors(validatedSuspendData.error);
@@ -1024,6 +1025,28 @@ async function validateStepSuspendData({
1024
1025
  }
1025
1026
  return { suspendData, validationError };
1026
1027
  }
1028
+ async function validateStepStateData({
1029
+ stateData,
1030
+ step,
1031
+ validateInputs
1032
+ }) {
1033
+ if (!stateData) {
1034
+ return { stateData: void 0, validationError: void 0 };
1035
+ }
1036
+ let validationError;
1037
+ const stateSchema = step.stateSchema;
1038
+ if (stateSchema && validateInputs) {
1039
+ const validatedStateData = await stateSchema.safeParseAsync(stateData);
1040
+ if (!validatedStateData.success) {
1041
+ const errors = getZodErrors(validatedStateData.error);
1042
+ const errorMessages = errors.map((e) => `- ${e.path?.join(".")}: ${e.message}`).join("\n");
1043
+ validationError = new Error("Step state data validation failed: \n" + errorMessages);
1044
+ } else {
1045
+ stateData = validatedStateData.data;
1046
+ }
1047
+ }
1048
+ return { stateData, validationError };
1049
+ }
1027
1050
  function getResumeLabelsByStepId(resumeLabels, stepId) {
1028
1051
  return Object.entries(resumeLabels).filter(([_, value]) => value.stepId === stepId).reduce(
1029
1052
  (acc, [key, value]) => {
@@ -1343,18 +1366,12 @@ async function executeConditional(engine, params) {
1343
1366
  requestContext,
1344
1367
  inputData: prevOutput,
1345
1368
  state: executionContext.state,
1346
- setState: (state) => {
1347
- executionContext.state = state;
1348
- },
1349
1369
  retryCount: -1,
1350
1370
  tracingContext: {
1351
1371
  currentSpan: evalSpan
1352
1372
  },
1353
1373
  getInitData: () => stepResults?.input,
1354
1374
  getStepResult: getStepResult.bind(null, stepResults),
1355
- // TODO: this function shouldn't have suspend probably?
1356
- suspend: async (_suspendPayload) => {
1357
- },
1358
1375
  bail: () => {
1359
1376
  },
1360
1377
  abort: () => {
@@ -1594,9 +1611,6 @@ async function executeLoop(engine, params) {
1594
1611
  requestContext,
1595
1612
  inputData: result.output,
1596
1613
  state: executionContext.state,
1597
- setState: (state) => {
1598
- executionContext.state = state;
1599
- },
1600
1614
  retryCount: -1,
1601
1615
  tracingContext: {
1602
1616
  currentSpan: evalSpan
@@ -1604,8 +1618,6 @@ async function executeLoop(engine, params) {
1604
1618
  iterationCount: iteration + 1,
1605
1619
  getInitData: () => stepResults?.input,
1606
1620
  getStepResult: getStepResult.bind(null, stepResults),
1607
- suspend: async (_suspendPayload) => {
1608
- },
1609
1621
  bail: () => {
1610
1622
  },
1611
1623
  abort: () => {
@@ -2319,7 +2331,7 @@ async function executeSleep(engine, params) {
2319
2331
  requestContext,
2320
2332
  inputData: prevOutput,
2321
2333
  state: executionContext.state,
2322
- setState: (state) => {
2334
+ setState: async (state) => {
2323
2335
  executionContext.state = state;
2324
2336
  },
2325
2337
  retryCount: -1,
@@ -2400,7 +2412,7 @@ async function executeSleepUntil(engine, params) {
2400
2412
  requestContext,
2401
2413
  inputData: prevOutput,
2402
2414
  state: executionContext.state,
2403
- setState: (state) => {
2415
+ setState: async (state) => {
2404
2416
  executionContext.state = state;
2405
2417
  },
2406
2418
  retryCount: -1,
@@ -2609,9 +2621,16 @@ async function executeStep(engine, params) {
2609
2621
  requestContext,
2610
2622
  inputData,
2611
2623
  state: executionContext.state,
2612
- setState: (state) => {
2613
- executionContext.state = state;
2614
- contextMutations.stateUpdate = state;
2624
+ setState: async (state) => {
2625
+ const { stateData, validationError: stateValidationError } = await validateStepStateData({
2626
+ stateData: state,
2627
+ step,
2628
+ validateInputs: engine.options?.validateInputs ?? true
2629
+ });
2630
+ if (stateValidationError) {
2631
+ throw stateValidationError;
2632
+ }
2633
+ contextMutations.stateUpdate = stateData;
2615
2634
  },
2616
2635
  retryCount,
2617
2636
  resumeData: resumeDataToUse,
@@ -2622,7 +2641,8 @@ async function executeStep(engine, params) {
2622
2641
  suspend: async (suspendPayload, suspendOptions) => {
2623
2642
  const { suspendData, validationError: suspendValidationError } = await validateStepSuspendData({
2624
2643
  suspendData: suspendPayload,
2625
- step
2644
+ step,
2645
+ validateInputs: engine.options?.validateInputs ?? true
2626
2646
  });
2627
2647
  if (suspendValidationError) {
2628
2648
  throw suspendValidationError;
@@ -2697,9 +2717,6 @@ async function executeStep(engine, params) {
2697
2717
  const { result: durableResult } = stepRetryResult;
2698
2718
  Object.assign(executionContext.suspendedPaths, durableResult.contextMutations.suspendedPaths);
2699
2719
  Object.assign(executionContext.resumeLabels, durableResult.contextMutations.resumeLabels);
2700
- if (durableResult.contextMutations.stateUpdate !== null) {
2701
- executionContext.state = durableResult.contextMutations.stateUpdate;
2702
- }
2703
2720
  if (engine.requiresDurableContextSerialization() && durableResult.contextMutations.requestContextUpdate) {
2704
2721
  requestContext.clear();
2705
2722
  for (const [key, value] of Object.entries(durableResult.contextMutations.requestContextUpdate)) {
@@ -2757,7 +2774,10 @@ async function executeStep(engine, params) {
2757
2774
  return {
2758
2775
  result: stepResult,
2759
2776
  stepResults: { [step.id]: stepResult },
2760
- mutableContext: engine.buildMutableContext(executionContext),
2777
+ mutableContext: engine.buildMutableContext({
2778
+ ...executionContext,
2779
+ state: stepRetryResult.ok ? stepRetryResult.result.contextMutations.stateUpdate ?? executionContext.state : executionContext.state
2780
+ }),
2761
2781
  requestContext: engine.serializeRequestContext(requestContext)
2762
2782
  };
2763
2783
  }
@@ -3105,7 +3125,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
3105
3125
  * Apply mutable context changes back to the execution context.
3106
3126
  */
3107
3127
  applyMutableContext(executionContext, mutableContext) {
3108
- executionContext.state = mutableContext.state;
3128
+ Object.assign(executionContext.state, mutableContext.state);
3109
3129
  Object.assign(executionContext.suspendedPaths, mutableContext.suspendedPaths);
3110
3130
  Object.assign(executionContext.resumeLabels, mutableContext.resumeLabels);
3111
3131
  }
@@ -4069,7 +4089,7 @@ var Workflow = class extends chunkDGV2FWB4_cjs.MastraBase {
4069
4089
  return stepRes?.status === "suspended";
4070
4090
  });
4071
4091
  if (res.state) {
4072
- setState(res.state);
4092
+ await setState(res.state);
4073
4093
  }
4074
4094
  if (suspendedSteps?.length) {
4075
4095
  for (const [stepName, stepResult] of suspendedSteps) {
@@ -12962,7 +12982,7 @@ https://mastra.ai/en/docs/memory/semantic-recall`
12962
12982
  );
12963
12983
  }
12964
12984
  if (typeof config.embedder === "string") {
12965
- this.embedder = new chunkHJNEZRI4_cjs.ModelRouterEmbeddingModel(config.embedder);
12985
+ this.embedder = new chunk6BYHQ52F_cjs.ModelRouterEmbeddingModel(config.embedder);
12966
12986
  } else {
12967
12987
  this.embedder = config.embedder;
12968
12988
  }
@@ -13294,7 +13314,7 @@ var MockMemory = class extends MastraMemory {
13294
13314
  } = {}) {
13295
13315
  super({
13296
13316
  name: "mock",
13297
- storage: storage || new chunkM7CQULF7_cjs.InMemoryStore(),
13317
+ storage: storage || new chunkKBXFAF37_cjs.InMemoryStore(),
13298
13318
  options: {
13299
13319
  workingMemory: enableWorkingMemory ? { enabled: true, template: workingMemoryTemplate } : void 0,
13300
13320
  lastMessages: enableMessageHistory ? 10 : void 0
@@ -15240,7 +15260,7 @@ var Agent = class extends chunkDGV2FWB4_cjs.MastraBase {
15240
15260
  */
15241
15261
  async resolveModelConfig(modelConfig, requestContext) {
15242
15262
  try {
15243
- return await chunkHJNEZRI4_cjs.resolveModelConfig(modelConfig, requestContext, this.#mastra);
15263
+ return await chunk6BYHQ52F_cjs.resolveModelConfig(modelConfig, requestContext, this.#mastra);
15244
15264
  } catch (error) {
15245
15265
  const mastraError = new chunkTWH4PTDG_cjs.MastraError({
15246
15266
  id: "AGENT_GET_MODEL_MISSING_MODEL_INSTANCE",
@@ -16049,16 +16069,25 @@ var Agent = class extends chunkDGV2FWB4_cjs.MastraBase {
16049
16069
  threadId,
16050
16070
  resourceId
16051
16071
  });
16052
- const run = await workflow.createRun();
16072
+ const run = await workflow.createRun({ runId });
16053
16073
  const { initialState, inputData: workflowInputData } = inputData;
16074
+ const { resumeData, suspend } = context?.agent ?? {};
16054
16075
  let result = void 0;
16055
16076
  if (methodType === "generate" || methodType === "generateLegacy") {
16056
- result = await run.start({
16057
- inputData: workflowInputData,
16058
- requestContext,
16059
- tracingContext: context?.tracingContext,
16060
- ...initialState && { initialState }
16061
- });
16077
+ if (resumeData) {
16078
+ result = await run.resume({
16079
+ resumeData,
16080
+ requestContext,
16081
+ tracingContext: context?.tracingContext
16082
+ });
16083
+ } else {
16084
+ result = await run.start({
16085
+ inputData: workflowInputData,
16086
+ requestContext,
16087
+ tracingContext: context?.tracingContext,
16088
+ ...initialState && { initialState }
16089
+ });
16090
+ }
16062
16091
  } else if (methodType === "streamLegacy") {
16063
16092
  const streamResult = run.streamLegacy({
16064
16093
  inputData: workflowInputData,
@@ -16073,7 +16102,11 @@ var Agent = class extends chunkDGV2FWB4_cjs.MastraBase {
16073
16102
  }
16074
16103
  result = await streamResult.getWorkflowState();
16075
16104
  } else if (methodType === "stream") {
16076
- const streamResult = run.stream({
16105
+ const streamResult = resumeData ? run.resumeStream({
16106
+ resumeData,
16107
+ requestContext,
16108
+ tracingContext: context?.tracingContext
16109
+ }) : run.stream({
16077
16110
  inputData: workflowInputData,
16078
16111
  requestContext,
16079
16112
  tracingContext: context?.tracingContext,
@@ -16094,10 +16127,12 @@ var Agent = class extends chunkDGV2FWB4_cjs.MastraBase {
16094
16127
  runId: run.runId
16095
16128
  };
16096
16129
  } else if (result?.status === "suspended") {
16097
- return {
16098
- 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.`,
16099
- runId: run.runId
16100
- };
16130
+ const suspendedStep = result?.suspended?.[0]?.[0];
16131
+ const suspendPayload = result?.steps?.[suspendedStep]?.suspendPayload;
16132
+ if (suspendPayload?.__workflow_meta) {
16133
+ delete suspendPayload.__workflow_meta;
16134
+ }
16135
+ return suspend?.(suspendPayload);
16101
16136
  } else {
16102
16137
  return {
16103
16138
  error: `Workflow should never reach this path, workflow returned no status`,
@@ -18875,6 +18910,7 @@ exports.tryGenerateWithJsonFallback = tryGenerateWithJsonFallback;
18875
18910
  exports.tryStreamWithJsonFallback = tryStreamWithJsonFallback;
18876
18911
  exports.validateStepInput = validateStepInput;
18877
18912
  exports.validateStepResumeData = validateStepResumeData;
18913
+ exports.validateStepStateData = validateStepStateData;
18878
18914
  exports.validateStepSuspendData = validateStepSuspendData;
18879
- //# sourceMappingURL=chunk-RBBEMTMA.cjs.map
18880
- //# sourceMappingURL=chunk-RBBEMTMA.cjs.map
18915
+ //# sourceMappingURL=chunk-HP6TRJ2Q.cjs.map
18916
+ //# sourceMappingURL=chunk-HP6TRJ2Q.cjs.map