@mastra/core 0.24.7-alpha.0 → 0.24.7-alpha.2

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 (161) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/agent/index.cjs +13 -13
  3. package/dist/agent/index.js +2 -2
  4. package/dist/agent/input-processor/index.cjs +6 -6
  5. package/dist/agent/input-processor/index.js +1 -1
  6. package/dist/agent/message-list/index.d.ts.map +1 -1
  7. package/dist/ai-tracing/index.cjs +36 -36
  8. package/dist/ai-tracing/index.js +1 -1
  9. package/dist/{chunk-H6SCQEQZ.js → chunk-2BY7C6Y7.js} +145 -19
  10. package/dist/chunk-2BY7C6Y7.js.map +1 -0
  11. package/dist/{chunk-TMGNLNND.cjs → chunk-2YE6RNCZ.cjs} +4 -4
  12. package/dist/{chunk-TMGNLNND.cjs.map → chunk-2YE6RNCZ.cjs.map} +1 -1
  13. package/dist/{chunk-MQOYPEDP.js → chunk-2YN6HGEH.js} +3 -3
  14. package/dist/{chunk-MQOYPEDP.js.map → chunk-2YN6HGEH.js.map} +1 -1
  15. package/dist/{chunk-PAOBGBU7.cjs → chunk-3IDFSGG3.cjs} +4 -4
  16. package/dist/{chunk-PAOBGBU7.cjs.map → chunk-3IDFSGG3.cjs.map} +1 -1
  17. package/dist/{chunk-42RUESSD.cjs → chunk-4YYPQOP7.cjs} +9 -4
  18. package/dist/{chunk-42RUESSD.cjs.map → chunk-4YYPQOP7.cjs.map} +1 -1
  19. package/dist/{chunk-AQGLVU53.cjs → chunk-5PSD3IKG.cjs} +19 -6
  20. package/dist/chunk-5PSD3IKG.cjs.map +1 -0
  21. package/dist/{chunk-6D2K2CAA.js → chunk-6VB52TJV.js} +3 -3
  22. package/dist/{chunk-6D2K2CAA.js.map → chunk-6VB52TJV.js.map} +1 -1
  23. package/dist/{chunk-JVV5LREI.js → chunk-BKBVQTOH.js} +2 -2
  24. package/dist/chunk-BKBVQTOH.js.map +1 -0
  25. package/dist/{chunk-XFEAV36D.cjs → chunk-CNIM7N4E.cjs} +64 -16
  26. package/dist/chunk-CNIM7N4E.cjs.map +1 -0
  27. package/dist/{chunk-DMBN72QF.cjs → chunk-DISETAP2.cjs} +4 -4
  28. package/dist/{chunk-DMBN72QF.cjs.map → chunk-DISETAP2.cjs.map} +1 -1
  29. package/dist/{chunk-BLUDYAPI.js → chunk-DSUKMFZY.js} +19 -6
  30. package/dist/chunk-DSUKMFZY.js.map +1 -0
  31. package/dist/{chunk-NP7A4CAN.js → chunk-E5NCEJEJ.js} +3 -3
  32. package/dist/{chunk-NP7A4CAN.js.map → chunk-E5NCEJEJ.js.map} +1 -1
  33. package/dist/{chunk-VATR2Z2C.cjs → chunk-FQTJPLCW.cjs} +154 -28
  34. package/dist/chunk-FQTJPLCW.cjs.map +1 -0
  35. package/dist/{chunk-Q6LWNLAJ.js → chunk-GIK7MM2K.js} +8 -3
  36. package/dist/{chunk-Q6LWNLAJ.js.map → chunk-GIK7MM2K.js.map} +1 -1
  37. package/dist/{chunk-GSFQAR6S.cjs → chunk-ICICKWAG.cjs} +6 -6
  38. package/dist/{chunk-GSFQAR6S.cjs.map → chunk-ICICKWAG.cjs.map} +1 -1
  39. package/dist/{chunk-7YGCP2UZ.js → chunk-N6P5GJRO.js} +54 -6
  40. package/dist/chunk-N6P5GJRO.js.map +1 -0
  41. package/dist/{chunk-WIMFJ2BA.js → chunk-PPAIPZ6C.js} +51 -13
  42. package/dist/chunk-PPAIPZ6C.js.map +1 -0
  43. package/dist/{chunk-UWTYVVVZ.js → chunk-RLYWCJQ6.js} +3 -3
  44. package/dist/{chunk-UWTYVVVZ.js.map → chunk-RLYWCJQ6.js.map} +1 -1
  45. package/dist/{chunk-HCCXJ5YJ.js → chunk-RP4YCZP7.js} +3 -3
  46. package/dist/{chunk-HCCXJ5YJ.js.map → chunk-RP4YCZP7.js.map} +1 -1
  47. package/dist/{chunk-CYEQK4PM.cjs → chunk-RQPGIUUA.cjs} +6 -6
  48. package/dist/{chunk-CYEQK4PM.cjs.map → chunk-RQPGIUUA.cjs.map} +1 -1
  49. package/dist/{chunk-46XGIEXM.cjs → chunk-RWPKCFZT.cjs} +4 -4
  50. package/dist/{chunk-46XGIEXM.cjs.map → chunk-RWPKCFZT.cjs.map} +1 -1
  51. package/dist/{chunk-NPNGPMT2.js → chunk-V2IMZSNO.js} +3 -3
  52. package/dist/{chunk-NPNGPMT2.js.map → chunk-V2IMZSNO.js.map} +1 -1
  53. package/dist/{chunk-LGKZOO44.cjs → chunk-X5JTTWMF.cjs} +9 -9
  54. package/dist/{chunk-LGKZOO44.cjs.map → chunk-X5JTTWMF.cjs.map} +1 -1
  55. package/dist/{chunk-BMJ6HNP4.js → chunk-Y2BH2LUD.js} +32 -27
  56. package/dist/chunk-Y2BH2LUD.js.map +1 -0
  57. package/dist/{chunk-IAJHRFO4.cjs → chunk-YPYLWTZI.cjs} +60 -21
  58. package/dist/chunk-YPYLWTZI.cjs.map +1 -0
  59. package/dist/{chunk-HJOAX5IQ.cjs → chunk-YYKN3NDZ.cjs} +72 -64
  60. package/dist/chunk-YYKN3NDZ.cjs.map +1 -0
  61. package/dist/{chunk-MHNE743G.js → chunk-Z6ZIJYKK.js} +4 -4
  62. package/dist/{chunk-MHNE743G.js.map → chunk-Z6ZIJYKK.js.map} +1 -1
  63. package/dist/{chunk-TX4TTPYJ.cjs → chunk-ZZ2DSE2G.cjs} +2 -2
  64. package/dist/chunk-ZZ2DSE2G.cjs.map +1 -0
  65. package/dist/index.cjs +88 -56
  66. package/dist/index.js +11 -11
  67. package/dist/loop/index.cjs +2 -2
  68. package/dist/loop/index.js +1 -1
  69. package/dist/loop/workflows/stream.d.ts +1 -1
  70. package/dist/loop/workflows/stream.d.ts.map +1 -1
  71. package/dist/mastra/index.cjs +2 -2
  72. package/dist/mastra/index.d.ts +3 -1
  73. package/dist/mastra/index.d.ts.map +1 -1
  74. package/dist/mastra/index.js +1 -1
  75. package/dist/memory/index.cjs +4 -4
  76. package/dist/memory/index.js +1 -1
  77. package/dist/processors/index.cjs +11 -11
  78. package/dist/processors/index.js +1 -1
  79. package/dist/relevance/index.cjs +4 -4
  80. package/dist/relevance/index.js +1 -1
  81. package/dist/scores/index.cjs +9 -9
  82. package/dist/scores/index.js +2 -2
  83. package/dist/scores/scoreTraces/index.cjs +8 -8
  84. package/dist/scores/scoreTraces/index.js +3 -3
  85. package/dist/server/index.cjs +25 -36
  86. package/dist/server/index.cjs.map +1 -1
  87. package/dist/server/index.js +24 -35
  88. package/dist/server/index.js.map +1 -1
  89. package/dist/server/simple-auth.d.ts +13 -18
  90. package/dist/server/simple-auth.d.ts.map +1 -1
  91. package/dist/storage/base.d.ts +2 -9
  92. package/dist/storage/base.d.ts.map +1 -1
  93. package/dist/storage/domains/workflows/base.d.ts +2 -9
  94. package/dist/storage/domains/workflows/base.d.ts.map +1 -1
  95. package/dist/storage/domains/workflows/inmemory.d.ts +2 -9
  96. package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
  97. package/dist/storage/index.cjs +31 -10
  98. package/dist/storage/index.cjs.map +1 -1
  99. package/dist/storage/index.js +25 -4
  100. package/dist/storage/index.js.map +1 -1
  101. package/dist/storage/types.d.ts +10 -1
  102. package/dist/storage/types.d.ts.map +1 -1
  103. package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
  104. package/dist/stream/index.cjs +11 -11
  105. package/dist/stream/index.js +2 -2
  106. package/dist/telemetry/index.cjs +7 -7
  107. package/dist/telemetry/index.js +1 -1
  108. package/dist/telemetry/telemetry.decorators.d.ts.map +1 -1
  109. package/dist/test-utils/llm-mock.cjs +2 -2
  110. package/dist/test-utils/llm-mock.js +1 -1
  111. package/dist/tts/index.cjs +2 -2
  112. package/dist/tts/index.js +1 -1
  113. package/dist/utils.cjs +37 -17
  114. package/dist/utils.d.ts +32 -0
  115. package/dist/utils.d.ts.map +1 -1
  116. package/dist/utils.js +1 -1
  117. package/dist/voice/index.cjs +6 -6
  118. package/dist/voice/index.js +1 -1
  119. package/dist/workflows/default.d.ts +26 -8
  120. package/dist/workflows/default.d.ts.map +1 -1
  121. package/dist/workflows/evented/execution-engine.d.ts +5 -1
  122. package/dist/workflows/evented/execution-engine.d.ts.map +1 -1
  123. package/dist/workflows/evented/index.cjs +10 -10
  124. package/dist/workflows/evented/index.js +1 -1
  125. package/dist/workflows/evented/workflow-event-processor/index.d.ts +5 -4
  126. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  127. package/dist/workflows/evented/workflow-event-processor/loop.d.ts +1 -1
  128. package/dist/workflows/evented/workflow-event-processor/loop.d.ts.map +1 -1
  129. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts +2 -2
  130. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts.map +1 -1
  131. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts +2 -2
  132. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts.map +1 -1
  133. package/dist/workflows/evented/workflow.d.ts +2 -1
  134. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  135. package/dist/workflows/execution-engine.d.ts +5 -3
  136. package/dist/workflows/execution-engine.d.ts.map +1 -1
  137. package/dist/workflows/index.cjs +26 -14
  138. package/dist/workflows/index.js +1 -1
  139. package/dist/workflows/legacy/index.cjs +22 -22
  140. package/dist/workflows/legacy/index.js +1 -1
  141. package/dist/workflows/step.d.ts +1 -0
  142. package/dist/workflows/step.d.ts.map +1 -1
  143. package/dist/workflows/types.d.ts +51 -1
  144. package/dist/workflows/types.d.ts.map +1 -1
  145. package/dist/workflows/utils.d.ts +20 -0
  146. package/dist/workflows/utils.d.ts.map +1 -1
  147. package/dist/workflows/workflow.d.ts +98 -12
  148. package/dist/workflows/workflow.d.ts.map +1 -1
  149. package/package.json +5 -5
  150. package/dist/chunk-7YGCP2UZ.js.map +0 -1
  151. package/dist/chunk-AQGLVU53.cjs.map +0 -1
  152. package/dist/chunk-BLUDYAPI.js.map +0 -1
  153. package/dist/chunk-BMJ6HNP4.js.map +0 -1
  154. package/dist/chunk-H6SCQEQZ.js.map +0 -1
  155. package/dist/chunk-HJOAX5IQ.cjs.map +0 -1
  156. package/dist/chunk-IAJHRFO4.cjs.map +0 -1
  157. package/dist/chunk-JVV5LREI.js.map +0 -1
  158. package/dist/chunk-TX4TTPYJ.cjs.map +0 -1
  159. package/dist/chunk-VATR2Z2C.cjs.map +0 -1
  160. package/dist/chunk-WIMFJ2BA.js.map +0 -1
  161. package/dist/chunk-XFEAV36D.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { validateStepInput, getStepResult, Workflow, Run, ExecutionEngine } from './chunk-BMJ6HNP4.js';
1
+ import { validateStepInput, getStepResult, createTimeTravelExecutionParams, validateStepResumeData, Workflow, Run, ExecutionEngine } from './chunk-Y2BH2LUD.js';
2
2
  import { STREAM_FORMAT_SYMBOL, EMITTER_SYMBOL } from './chunk-NLNKQD2T.js';
3
3
  import { RuntimeContext } from './chunk-HLRWYUFN.js';
4
4
  import { MastraError } from './chunk-PZUZNPFM.js';
@@ -432,6 +432,7 @@ async function processWorkflowForEach({
432
432
  stepResults,
433
433
  activeSteps,
434
434
  resumeSteps,
435
+ timeTravel,
435
436
  resumeData,
436
437
  parentWorkflow,
437
438
  runtimeContext
@@ -454,6 +455,7 @@ async function processWorkflowForEach({
454
455
  executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1] + 1]),
455
456
  resumeSteps,
456
457
  stepResults,
458
+ timeTravel,
457
459
  prevResult: currentResult,
458
460
  resumeData,
459
461
  activeSteps,
@@ -490,6 +492,7 @@ async function processWorkflowForEach({
490
492
  executionPath: [executionPath[0], i],
491
493
  resumeSteps,
492
494
  stepResults,
495
+ timeTravel,
493
496
  prevResult,
494
497
  resumeData,
495
498
  activeSteps,
@@ -521,6 +524,7 @@ async function processWorkflowForEach({
521
524
  runId,
522
525
  executionPath: [executionPath[0], idx],
523
526
  resumeSteps,
527
+ timeTravel,
524
528
  stepResults,
525
529
  prevResult,
526
530
  resumeData,
@@ -536,6 +540,7 @@ async function processWorkflowParallel({
536
540
  stepResults,
537
541
  activeSteps,
538
542
  resumeSteps,
543
+ timeTravel,
539
544
  prevResult,
540
545
  resumeData,
541
546
  parentWorkflow,
@@ -563,6 +568,7 @@ async function processWorkflowParallel({
563
568
  stepResults,
564
569
  prevResult,
565
570
  resumeData,
571
+ timeTravel,
566
572
  parentWorkflow,
567
573
  activeSteps,
568
574
  runtimeContext
@@ -578,6 +584,7 @@ async function processWorkflowConditional({
578
584
  stepResults,
579
585
  activeSteps,
580
586
  resumeSteps,
587
+ timeTravel,
581
588
  prevResult,
582
589
  resumeData,
583
590
  parentWorkflow,
@@ -620,6 +627,7 @@ async function processWorkflowConditional({
620
627
  executionPath: executionPath.concat([idx]),
621
628
  resumeSteps,
622
629
  stepResults,
630
+ timeTravel,
623
631
  prevResult,
624
632
  resumeData,
625
633
  parentWorkflow,
@@ -686,6 +694,7 @@ async function processWorkflowSleep({
686
694
  stepResults,
687
695
  activeSteps,
688
696
  resumeSteps,
697
+ timeTravel,
689
698
  prevResult,
690
699
  resumeData,
691
700
  parentWorkflow,
@@ -757,6 +766,7 @@ async function processWorkflowSleep({
757
766
  runId,
758
767
  executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1] + 1]),
759
768
  resumeSteps,
769
+ timeTravel,
760
770
  stepResults,
761
771
  prevResult,
762
772
  resumeData,
@@ -776,6 +786,7 @@ async function processWorkflowSleepUntil({
776
786
  stepResults,
777
787
  activeSteps,
778
788
  resumeSteps,
789
+ timeTravel,
779
790
  prevResult,
780
791
  resumeData,
781
792
  parentWorkflow,
@@ -847,6 +858,7 @@ async function processWorkflowSleepUntil({
847
858
  runId,
848
859
  executionPath: executionPath.slice(0, -1).concat([executionPath[executionPath.length - 1] + 1]),
849
860
  resumeSteps,
861
+ timeTravel,
850
862
  stepResults,
851
863
  prevResult,
852
864
  resumeData,
@@ -927,6 +939,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
927
939
  resumeSteps,
928
940
  prevResult,
929
941
  resumeData,
942
+ timeTravel,
930
943
  executionPath,
931
944
  stepResults,
932
945
  runtimeContext
@@ -939,13 +952,14 @@ var WorkflowEventProcessor = class extends EventProcessor {
939
952
  suspendedPaths: {},
940
953
  resumeLabels: {},
941
954
  waitingPaths: {},
955
+ activeStepsPath: {},
942
956
  serializedStepGraph: workflow.serializedStepGraph,
943
957
  timestamp: Date.now(),
944
958
  runId,
945
- status: "running",
946
959
  context: stepResults ?? {
947
960
  input: prevResult?.status === "success" ? prevResult.output : void 0
948
961
  },
962
+ status: "running",
949
963
  value: {}
950
964
  }
951
965
  });
@@ -962,6 +976,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
962
976
  input: prevResult?.status === "success" ? prevResult.output : void 0
963
977
  },
964
978
  prevResult,
979
+ timeTravel,
965
980
  runtimeContext,
966
981
  resumeData,
967
982
  activeSteps: {}
@@ -1012,7 +1027,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1012
1027
  });
1013
1028
  }
1014
1029
  async processWorkflowEnd(args) {
1015
- const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runtimeContext, runId } = args;
1030
+ const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runtimeContext, runId, timeTravel } = args;
1016
1031
  if (parentWorkflow) {
1017
1032
  await this.mastra.pubsub.publish("workflows", {
1018
1033
  type: "workflow.step.end",
@@ -1028,7 +1043,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1028
1043
  activeSteps,
1029
1044
  parentWorkflow: parentWorkflow.parentWorkflow,
1030
1045
  parentContext: parentWorkflow,
1031
- runtimeContext
1046
+ runtimeContext,
1047
+ timeTravel
1032
1048
  }
1033
1049
  });
1034
1050
  }
@@ -1039,7 +1055,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1039
1055
  });
1040
1056
  }
1041
1057
  async processWorkflowSuspend(args) {
1042
- const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runId, runtimeContext } = args;
1058
+ const { resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runId, runtimeContext, timeTravel } = args;
1043
1059
  if (parentWorkflow) {
1044
1060
  await this.mastra.pubsub.publish("workflows", {
1045
1061
  type: "workflow.step.end",
@@ -1060,6 +1076,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1060
1076
  }
1061
1077
  }
1062
1078
  },
1079
+ timeTravel,
1063
1080
  resumeData,
1064
1081
  activeSteps,
1065
1082
  runtimeContext,
@@ -1075,7 +1092,17 @@ var WorkflowEventProcessor = class extends EventProcessor {
1075
1092
  });
1076
1093
  }
1077
1094
  async processWorkflowFail(args) {
1078
- const { workflowId, runId, resumeSteps, prevResult, resumeData, parentWorkflow, activeSteps, runtimeContext } = args;
1095
+ const {
1096
+ workflowId,
1097
+ runId,
1098
+ resumeSteps,
1099
+ prevResult,
1100
+ resumeData,
1101
+ parentWorkflow,
1102
+ activeSteps,
1103
+ runtimeContext,
1104
+ timeTravel
1105
+ } = args;
1079
1106
  await this.mastra.getStorage()?.updateWorkflowState({
1080
1107
  workflowName: workflowId,
1081
1108
  runId,
@@ -1095,6 +1122,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1095
1122
  resumeSteps,
1096
1123
  stepResults: parentWorkflow.stepResults,
1097
1124
  prevResult,
1125
+ timeTravel,
1098
1126
  resumeData,
1099
1127
  activeSteps,
1100
1128
  runtimeContext,
@@ -1117,6 +1145,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1117
1145
  stepResults,
1118
1146
  activeSteps,
1119
1147
  resumeSteps,
1148
+ timeTravel,
1120
1149
  prevResult,
1121
1150
  resumeData,
1122
1151
  parentWorkflow,
@@ -1180,6 +1209,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1180
1209
  stepResults,
1181
1210
  activeSteps,
1182
1211
  resumeSteps,
1212
+ timeTravel,
1183
1213
  prevResult,
1184
1214
  resumeData,
1185
1215
  parentWorkflow,
@@ -1199,6 +1229,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1199
1229
  stepResults,
1200
1230
  activeSteps,
1201
1231
  resumeSteps,
1232
+ timeTravel,
1202
1233
  prevResult,
1203
1234
  resumeData,
1204
1235
  parentWorkflow,
@@ -1219,6 +1250,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1219
1250
  stepResults,
1220
1251
  activeSteps,
1221
1252
  resumeSteps,
1253
+ timeTravel,
1222
1254
  prevResult,
1223
1255
  resumeData,
1224
1256
  parentWorkflow,
@@ -1239,6 +1271,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1239
1271
  stepResults,
1240
1272
  activeSteps,
1241
1273
  resumeSteps,
1274
+ timeTravel,
1242
1275
  prevResult,
1243
1276
  resumeData,
1244
1277
  parentWorkflow,
@@ -1295,6 +1328,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1295
1328
  stepResults,
1296
1329
  activeSteps,
1297
1330
  resumeSteps,
1331
+ timeTravel,
1298
1332
  prevResult,
1299
1333
  resumeData,
1300
1334
  parentWorkflow,
@@ -1387,6 +1421,47 @@ var WorkflowEventProcessor = class extends EventProcessor {
1387
1421
  runtimeContext
1388
1422
  }
1389
1423
  });
1424
+ } else if (timeTravel && timeTravel.steps?.length > 1 && timeTravel.steps[0] === step.step.id) {
1425
+ const snapshot = await this.mastra?.getStorage()?.loadWorkflowSnapshot({
1426
+ workflowName: step.step.id,
1427
+ runId
1428
+ }) ?? { context: {} };
1429
+ const timeTravelParams = createTimeTravelExecutionParams({
1430
+ steps: timeTravel.steps.slice(1),
1431
+ inputData: timeTravel.inputData,
1432
+ resumeData: timeTravel.resumeData,
1433
+ context: timeTravel.nestedStepResults?.[step.step.id] ?? {},
1434
+ nestedStepsContext: timeTravel.nestedStepResults ?? {},
1435
+ snapshot,
1436
+ graph: step.step.buildExecutionGraph()
1437
+ });
1438
+ const nestedPrevStep = getStep(step.step, timeTravelParams.executionPath);
1439
+ const nestedPrevResult = timeTravelParams.stepResults[nestedPrevStep?.id ?? "input"];
1440
+ await this.mastra.pubsub.publish("workflows", {
1441
+ type: "workflow.start",
1442
+ runId,
1443
+ data: {
1444
+ workflowId: step.step.id,
1445
+ parentWorkflow: {
1446
+ stepId: step.step.id,
1447
+ workflowId,
1448
+ runId,
1449
+ executionPath,
1450
+ resumeSteps,
1451
+ stepResults,
1452
+ timeTravel,
1453
+ input: prevResult,
1454
+ parentWorkflow
1455
+ },
1456
+ executionPath: timeTravelParams.executionPath,
1457
+ runId: randomUUID(),
1458
+ stepResults: timeTravelParams.stepResults,
1459
+ prevResult: { status: "success", output: nestedPrevResult?.payload },
1460
+ timeTravel: timeTravelParams,
1461
+ activeSteps,
1462
+ runtimeContext
1463
+ }
1464
+ });
1390
1465
  } else {
1391
1466
  await this.mastra.pubsub.publish("workflows", {
1392
1467
  type: "workflow.start",
@@ -1459,6 +1534,21 @@ var WorkflowEventProcessor = class extends EventProcessor {
1459
1534
  for (const [key, value] of Object.entries(runtimeContext)) {
1460
1535
  rc.set(key, value);
1461
1536
  }
1537
+ const { resumeData: timeTravelResumeData, validationError: timeTravelResumeValidationError } = await validateStepResumeData({
1538
+ resumeData: timeTravel?.stepResults[step.step.id]?.status === "suspended" ? timeTravel?.resumeData : void 0,
1539
+ step: step.step
1540
+ });
1541
+ let resumeDataToUse;
1542
+ if (timeTravelResumeData && !timeTravelResumeValidationError) {
1543
+ resumeDataToUse = timeTravelResumeData;
1544
+ } else if (timeTravelResumeData && timeTravelResumeValidationError) {
1545
+ this.mastra.getLogger()?.warn("Time travel resume data validation failed", {
1546
+ stepId: step.step.id,
1547
+ error: timeTravelResumeValidationError.message
1548
+ });
1549
+ } else if (resumeSteps?.length > 0 && resumeSteps?.[0] === step.step.id || step.type === "waitForEvent") {
1550
+ resumeDataToUse = resumeData;
1551
+ }
1462
1552
  const stepResult = await this.stepExecutor.execute({
1463
1553
  workflowId,
1464
1554
  step: step.step,
@@ -1469,7 +1559,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1469
1559
  emitter: ee,
1470
1560
  runtimeContext: rc,
1471
1561
  input: prevResult?.output,
1472
- resumeData: step.type === "waitForEvent" || resumeSteps?.length === 1 && resumeSteps?.[0] === step.step.id ? resumeData : void 0,
1562
+ resumeData: resumeDataToUse,
1473
1563
  runCount,
1474
1564
  foreachIdx: step.type === "foreach" ? executionPath[1] : void 0,
1475
1565
  validateInputs: workflow.options.validateInputs
@@ -1523,6 +1613,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1523
1613
  executionPath,
1524
1614
  resumeSteps,
1525
1615
  stepResults,
1616
+ timeTravel,
1526
1617
  prevResult,
1527
1618
  activeSteps,
1528
1619
  runtimeContext,
@@ -1563,6 +1654,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1563
1654
  runId,
1564
1655
  executionPath,
1565
1656
  resumeSteps,
1657
+ timeTravel,
1658
+ //timeTravel is passed in as workflow.step.end ends the step, not the workflow, the timeTravel info is passed to the next step to run.
1566
1659
  stepResults,
1567
1660
  prevResult: stepResult,
1568
1661
  activeSteps,
@@ -1577,6 +1670,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1577
1670
  runId,
1578
1671
  executionPath,
1579
1672
  resumeSteps,
1673
+ timeTravel,
1580
1674
  prevResult,
1581
1675
  parentWorkflow,
1582
1676
  stepResults,
@@ -1666,6 +1760,7 @@ var WorkflowEventProcessor = class extends EventProcessor {
1666
1760
  resumeSteps,
1667
1761
  parentWorkflow,
1668
1762
  stepResults,
1763
+ timeTravel,
1669
1764
  prevResult,
1670
1765
  activeSteps,
1671
1766
  runtimeContext
@@ -1699,7 +1794,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1699
1794
  stepResults,
1700
1795
  prevResult,
1701
1796
  activeSteps,
1702
- runtimeContext
1797
+ runtimeContext,
1798
+ timeTravel
1703
1799
  }
1704
1800
  });
1705
1801
  await this.mastra.pubsub.publish(`workflow.events.${runId}`, {
@@ -1808,7 +1904,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1808
1904
  stepResults,
1809
1905
  prevResult: { status: "success", output: allResults },
1810
1906
  activeSteps,
1811
- runtimeContext
1907
+ runtimeContext,
1908
+ timeTravel
1812
1909
  }
1813
1910
  });
1814
1911
  } else if (step?.type === "foreach") {
@@ -1824,7 +1921,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1824
1921
  stepResults,
1825
1922
  prevResult: { ...prevResult, output: prevResult?.payload },
1826
1923
  activeSteps,
1827
- runtimeContext
1924
+ runtimeContext,
1925
+ timeTravel
1828
1926
  }
1829
1927
  });
1830
1928
  } else if (executionPath[0] >= workflow.stepGraph.length - 1) {
@@ -1853,7 +1951,8 @@ var WorkflowEventProcessor = class extends EventProcessor {
1853
1951
  stepResults,
1854
1952
  prevResult,
1855
1953
  activeSteps,
1856
- runtimeContext
1954
+ runtimeContext,
1955
+ timeTravel
1857
1956
  }
1858
1957
  });
1859
1958
  }
@@ -2128,6 +2227,7 @@ function createWorkflow(params) {
2128
2227
  var EventedWorkflow = class extends Workflow {
2129
2228
  constructor(params) {
2130
2229
  super(params);
2230
+ this.engineType = "evented";
2131
2231
  }
2132
2232
  __registerMastra(mastra) {
2133
2233
  super.__registerMastra(mastra);
@@ -2144,7 +2244,9 @@ var EventedWorkflow = class extends Workflow {
2144
2244
  mastra: this.mastra,
2145
2245
  retryConfig: this.retryConfig,
2146
2246
  cleanup: () => this.runs.delete(runIdToUse),
2147
- workflowSteps: this.steps
2247
+ workflowSteps: this.steps,
2248
+ validateInputs: this.options?.validateInputs,
2249
+ workflowEngineType: this.engineType
2148
2250
  });
2149
2251
  this.runs.set(runIdToUse, run);
2150
2252
  const shouldPersistSnapshot = this.options?.shouldPersistSnapshot?.({
@@ -2163,6 +2265,7 @@ var EventedWorkflow = class extends Workflow {
2163
2265
  context: {},
2164
2266
  activePaths: [],
2165
2267
  serializedStepGraph: this.serializedStepGraph,
2268
+ activeStepsPath: {},
2166
2269
  suspendedPaths: {},
2167
2270
  resumeLabels: {},
2168
2271
  waitingPaths: {},
@@ -2201,15 +2304,16 @@ var EventedRun = class extends Run {
2201
2304
  snapshot: {
2202
2305
  runId: this.runId,
2203
2306
  serializedStepGraph: this.serializedStepGraph,
2307
+ status: "running",
2204
2308
  value: {},
2205
2309
  context: {},
2206
2310
  runtimeContext: Object.fromEntries(runtimeContext.entries()),
2207
2311
  activePaths: [],
2312
+ activeStepsPath: {},
2208
2313
  suspendedPaths: {},
2209
2314
  resumeLabels: {},
2210
2315
  waitingPaths: {},
2211
- timestamp: Date.now(),
2212
- status: "running"
2316
+ timestamp: Date.now()
2213
2317
  }
2214
2318
  });
2215
2319
  const inputDataToUse = await this._validateInput(inputData);
@@ -2246,9 +2350,14 @@ var EventedRun = class extends Run {
2246
2350
  }
2247
2351
  // TODO: stream
2248
2352
  async resume(params) {
2249
- const steps = (Array.isArray(params.step) ? params.step : [params.step]).map(
2250
- (step) => typeof step === "string" ? step : step?.id
2251
- );
2353
+ let steps = [];
2354
+ if (typeof params.step === "string") {
2355
+ steps = params.step.split(".");
2356
+ } else {
2357
+ steps = (Array.isArray(params.step) ? params.step : [params.step]).map(
2358
+ (step) => typeof step === "string" ? step : step?.id
2359
+ );
2360
+ }
2252
2361
  if (steps.length === 0) {
2253
2362
  throw new Error("No steps provided to resume");
2254
2363
  }
@@ -2477,6 +2586,23 @@ var EventedExecutionEngine = class extends ExecutionEngine {
2477
2586
  format: params.format
2478
2587
  }
2479
2588
  });
2589
+ } else if (params.timeTravel) {
2590
+ const prevStep = getStep(this.mastra.getWorkflow(params.workflowId), params.timeTravel.executionPath);
2591
+ const prevResult = params.timeTravel.stepResults[prevStep?.id ?? "input"];
2592
+ await pubsub.publish("workflows", {
2593
+ type: "workflow.start",
2594
+ runId: params.runId,
2595
+ data: {
2596
+ workflowId: params.workflowId,
2597
+ runId: params.runId,
2598
+ executionPath: params.timeTravel.executionPath,
2599
+ stepResults: params.timeTravel.stepResults,
2600
+ timeTravel: params.timeTravel,
2601
+ prevResult: { status: "success", output: prevResult?.payload },
2602
+ runtimeContext: Object.fromEntries(params.runtimeContext.entries()),
2603
+ format: params.format
2604
+ }
2605
+ });
2480
2606
  } else {
2481
2607
  await pubsub.publish("workflows", {
2482
2608
  type: "workflow.start",
@@ -2535,5 +2661,5 @@ var EventedExecutionEngine = class extends ExecutionEngine {
2535
2661
  };
2536
2662
 
2537
2663
  export { EventedExecutionEngine, EventedRun, EventedWorkflow, StepExecutor, WorkflowEventProcessor, cloneStep, cloneWorkflow, createStep, createWorkflow };
2538
- //# sourceMappingURL=chunk-H6SCQEQZ.js.map
2539
- //# sourceMappingURL=chunk-H6SCQEQZ.js.map
2664
+ //# sourceMappingURL=chunk-2BY7C6Y7.js.map
2665
+ //# sourceMappingURL=chunk-2BY7C6Y7.js.map