@mastra/core 0.10.8 → 0.10.9

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 (93) hide show
  1. package/dist/agent/index.cjs +4 -4
  2. package/dist/agent/index.d.cts +8 -8
  3. package/dist/agent/index.d.ts +8 -8
  4. package/dist/agent/index.js +2 -2
  5. package/dist/{base-DVVTzIQy.d.cts → base-B_y9sMg0.d.cts} +1 -1
  6. package/dist/{base-B_WEJuiR.d.cts → base-Bu9IeyHt.d.cts} +48 -15
  7. package/dist/{base-BbdvunNJ.d.ts → base-ClrXcCRx.d.ts} +1 -1
  8. package/dist/{base-DnSegjq5.d.ts → base-D6PagN3X.d.ts} +48 -15
  9. package/dist/base.d.cts +2 -2
  10. package/dist/base.d.ts +2 -2
  11. package/dist/bundler/index.d.cts +2 -2
  12. package/dist/bundler/index.d.ts +2 -2
  13. package/dist/{chunk-V73Z32LN.js → chunk-5S3K64EU.js} +1 -1
  14. package/dist/{chunk-2D7NOO7S.cjs → chunk-6Y4UL5Z6.cjs} +11 -0
  15. package/dist/{chunk-QZ3VZRUU.cjs → chunk-7H2GET5Z.cjs} +6 -2
  16. package/dist/{chunk-YXQF4U4L.js → chunk-7XQIPES3.js} +5 -1
  17. package/dist/{chunk-CHBIZNA3.cjs → chunk-CWXF3ZG4.cjs} +31 -9
  18. package/dist/{chunk-GKCO24Z4.cjs → chunk-CZGP56Y3.cjs} +2 -2
  19. package/dist/{chunk-WTTYHREJ.js → chunk-HM4AOWTY.js} +1 -1
  20. package/dist/{chunk-DO5R43AJ.js → chunk-JQOMTERC.js} +11 -1
  21. package/dist/{chunk-FBURVKXA.js → chunk-O7YOEBDC.js} +220 -41
  22. package/dist/{chunk-E4A4XDDG.cjs → chunk-SO4GUX3Q.cjs} +221 -42
  23. package/dist/{chunk-EYJXFYUH.cjs → chunk-SUF6QXSI.cjs} +70 -40
  24. package/dist/{chunk-QIQOR45O.js → chunk-VMIMBLH4.js} +31 -9
  25. package/dist/{chunk-U2LC4K7N.cjs → chunk-X73RHIY2.cjs} +2 -2
  26. package/dist/{chunk-WK3SHUOG.js → chunk-Y2FKASKG.js} +61 -31
  27. package/dist/deployer/index.d.cts +2 -2
  28. package/dist/deployer/index.d.ts +2 -2
  29. package/dist/eval/index.d.cts +6 -6
  30. package/dist/eval/index.d.ts +6 -6
  31. package/dist/index.cjs +22 -22
  32. package/dist/index.d.cts +5 -5
  33. package/dist/index.d.ts +5 -5
  34. package/dist/index.js +7 -7
  35. package/dist/integration/index.d.cts +10 -10
  36. package/dist/integration/index.d.ts +10 -10
  37. package/dist/llm/index.d.cts +6 -6
  38. package/dist/llm/index.d.ts +6 -6
  39. package/dist/logger/index.cjs +8 -4
  40. package/dist/logger/index.d.cts +2 -2
  41. package/dist/logger/index.d.ts +2 -2
  42. package/dist/logger/index.js +1 -1
  43. package/dist/{logger-CpL0z5v_.d.cts → logger-B8XXh6ya.d.cts} +2 -1
  44. package/dist/{logger-DtVDdb81.d.ts → logger-Bpa2oLL4.d.ts} +2 -1
  45. package/dist/mastra/index.cjs +2 -2
  46. package/dist/mastra/index.d.cts +4 -4
  47. package/dist/mastra/index.d.ts +4 -4
  48. package/dist/mastra/index.js +1 -1
  49. package/dist/mcp/index.d.cts +8 -8
  50. package/dist/mcp/index.d.ts +8 -8
  51. package/dist/memory/index.cjs +4 -4
  52. package/dist/memory/index.d.cts +6 -6
  53. package/dist/memory/index.d.ts +6 -6
  54. package/dist/memory/index.js +1 -1
  55. package/dist/network/index.cjs +2 -2
  56. package/dist/network/index.d.cts +6 -6
  57. package/dist/network/index.d.ts +6 -6
  58. package/dist/network/index.js +1 -1
  59. package/dist/network/vNext/index.cjs +37 -23
  60. package/dist/network/vNext/index.d.cts +8 -8
  61. package/dist/network/vNext/index.d.ts +8 -8
  62. package/dist/network/vNext/index.js +26 -12
  63. package/dist/relevance/index.cjs +4 -4
  64. package/dist/relevance/index.d.cts +8 -8
  65. package/dist/relevance/index.d.ts +8 -8
  66. package/dist/relevance/index.js +1 -1
  67. package/dist/server/index.d.cts +7 -7
  68. package/dist/server/index.d.ts +7 -7
  69. package/dist/storage/index.cjs +2 -2
  70. package/dist/storage/index.d.cts +7 -7
  71. package/dist/storage/index.d.ts +7 -7
  72. package/dist/storage/index.js +1 -1
  73. package/dist/telemetry/index.d.cts +6 -6
  74. package/dist/telemetry/index.d.ts +6 -6
  75. package/dist/tools/index.d.cts +9 -9
  76. package/dist/tools/index.d.ts +9 -9
  77. package/dist/tts/index.d.cts +2 -2
  78. package/dist/tts/index.d.ts +2 -2
  79. package/dist/utils.d.cts +3 -3
  80. package/dist/utils.d.ts +3 -3
  81. package/dist/vector/index.d.cts +2 -2
  82. package/dist/vector/index.d.ts +2 -2
  83. package/dist/voice/index.d.cts +6 -6
  84. package/dist/voice/index.d.ts +6 -6
  85. package/dist/workflows/index.cjs +10 -10
  86. package/dist/workflows/index.d.cts +34 -13
  87. package/dist/workflows/index.d.ts +34 -13
  88. package/dist/workflows/index.js +1 -1
  89. package/dist/workflows/legacy/index.cjs +22 -22
  90. package/dist/workflows/legacy/index.d.cts +11 -11
  91. package/dist/workflows/legacy/index.d.ts +11 -11
  92. package/dist/workflows/legacy/index.js +1 -1
  93. package/package.json +4 -4
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkBB6DPGIV_cjs = require('./chunk-BB6DPGIV.cjs');
4
- var chunkEYJXFYUH_cjs = require('./chunk-EYJXFYUH.cjs');
4
+ var chunkSUF6QXSI_cjs = require('./chunk-SUF6QXSI.cjs');
5
5
  var chunk4Z3OU5RY_cjs = require('./chunk-4Z3OU5RY.cjs');
6
6
  var chunkB6TOBUS6_cjs = require('./chunk-B6TOBUS6.cjs');
7
7
  var chunkP3Q73CAW_cjs = require('./chunk-P3Q73CAW.cjs');
@@ -29,6 +29,30 @@ var ExecutionEngine = class extends chunkP3Q73CAW_cjs.MastraBase {
29
29
  }
30
30
  };
31
31
  var DefaultExecutionEngine = class extends ExecutionEngine {
32
+ /**
33
+ * The runCounts map is used to keep track of the run count for each step.
34
+ * The step id is used as the key and the run count is the value.
35
+ */
36
+ runCounts = /* @__PURE__ */ new Map();
37
+ /**
38
+ * Get or generate the run count for a step.
39
+ * If the step id is not in the map, it will be added and the run count will be 0.
40
+ * If the step id is in the map, it will return the run count.
41
+ *
42
+ * @param stepId - The id of the step.
43
+ * @returns The run count for the step.
44
+ */
45
+ getOrGenerateRunCount(stepId) {
46
+ if (this.runCounts.has(stepId)) {
47
+ const currentRunCount = this.runCounts.get(stepId);
48
+ const nextRunCount = currentRunCount + 1;
49
+ this.runCounts.set(stepId, nextRunCount);
50
+ return nextRunCount;
51
+ }
52
+ const runCount = 0;
53
+ this.runCounts.set(stepId, runCount);
54
+ return runCount;
55
+ }
32
56
  async fmtReturnValue(executionSpan, emitter, stepResults, lastOutput, error) {
33
57
  const base = {
34
58
  status: lastOutput.status,
@@ -133,6 +157,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
133
157
  retryConfig: { attempts, delay },
134
158
  executionSpan
135
159
  },
160
+ abortController: params.abortController,
136
161
  emitter: params.emitter,
137
162
  runtimeContext: params.runtimeContext
138
163
  });
@@ -265,14 +290,14 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
265
290
  resume,
266
291
  prevOutput,
267
292
  emitter,
293
+ abortController,
268
294
  runtimeContext
269
295
  }) {
270
296
  const startTime = resume?.steps[0] === step.id ? void 0 : Date.now();
271
297
  const resumeTime = resume?.steps[0] === step.id ? Date.now() : void 0;
272
298
  const stepInfo = {
273
299
  ...stepResults[step.id],
274
- payload: prevOutput,
275
- ...resume?.steps[0] === step.id ? { resumePayload: resume?.resumePayload } : {},
300
+ ...resume?.steps[0] === step.id ? { resumePayload: resume?.resumePayload } : { payload: prevOutput },
276
301
  ...startTime ? { startedAt: startTime } : {},
277
302
  ...resumeTime ? { resumedAt: resumeTime } : {}
278
303
  };
@@ -302,7 +327,9 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
302
327
  await emitter.emit("watch-v2", {
303
328
  type: "step-start",
304
329
  payload: {
305
- id: step.id
330
+ id: step.id,
331
+ ...stepInfo,
332
+ status: "running"
306
333
  }
307
334
  });
308
335
  const _runStep = (step2, spanName, attributes) => {
@@ -335,6 +362,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
335
362
  mastra: this.mastra,
336
363
  runtimeContext,
337
364
  inputData: prevOutput,
365
+ runCount: this.getOrGenerateRunCount(step.id),
338
366
  resumeData: resume?.steps[0] === step.id ? resume?.resumePayload : void 0,
339
367
  getInitData: () => stepResults?.input,
340
368
  getStepResult: (step2) => {
@@ -354,6 +382,9 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
354
382
  bail: (result2) => {
355
383
  bailed = { payload: result2 };
356
384
  },
385
+ abort: () => {
386
+ abortController?.abort();
387
+ },
357
388
  resume: {
358
389
  steps: resume?.steps?.slice(1) || [],
359
390
  resumePayload: resume?.resumePayload,
@@ -361,7 +392,8 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
361
392
  runId: stepResults[step.id]?.suspendPayload?.__workflow_meta?.runId
362
393
  },
363
394
  [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
364
- engine: {}
395
+ engine: {},
396
+ abortSignal: abortController?.signal
365
397
  });
366
398
  if (suspended) {
367
399
  execResults = { status: "suspended", suspendPayload: suspended.payload, suspendedAt: Date.now() };
@@ -418,7 +450,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
418
450
  type: "step-suspended",
419
451
  payload: {
420
452
  id: step.id,
421
- output: execResults.output
453
+ ...execResults
422
454
  }
423
455
  });
424
456
  } else {
@@ -426,8 +458,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
426
458
  type: "step-result",
427
459
  payload: {
428
460
  id: step.id,
429
- status: execResults.status,
430
- output: execResults.output
461
+ ...execResults
431
462
  }
432
463
  });
433
464
  await emitter.emit("watch-v2", {
@@ -450,6 +481,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
450
481
  resume,
451
482
  executionContext,
452
483
  emitter,
484
+ abortController,
453
485
  runtimeContext
454
486
  }) {
455
487
  let execResults;
@@ -472,6 +504,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
472
504
  executionSpan: executionContext.executionSpan
473
505
  },
474
506
  emitter,
507
+ abortController,
475
508
  runtimeContext
476
509
  })
477
510
  )
@@ -482,6 +515,8 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
482
515
  execResults = { status: "failed", error: hasFailed.result.error };
483
516
  } else if (hasSuspended) {
484
517
  execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
518
+ } else if (abortController?.signal?.aborted) {
519
+ execResults = { status: "canceled" };
485
520
  } else {
486
521
  execResults = {
487
522
  status: "success",
@@ -506,6 +541,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
506
541
  resume,
507
542
  executionContext,
508
543
  emitter,
544
+ abortController,
509
545
  runtimeContext
510
546
  }) {
511
547
  let execResults;
@@ -517,6 +553,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
517
553
  mastra: this.mastra,
518
554
  runtimeContext,
519
555
  inputData: prevOutput,
556
+ runCount: -1,
520
557
  getInitData: () => stepResults?.input,
521
558
  getStepResult: (step) => {
522
559
  if (!step?.id) {
@@ -533,8 +570,12 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
533
570
  },
534
571
  bail: () => {
535
572
  },
573
+ abort: () => {
574
+ abortController?.abort();
575
+ },
536
576
  [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
537
- engine: {}
577
+ engine: {},
578
+ abortSignal: abortController?.signal
538
579
  });
539
580
  return result ? index : null;
540
581
  } catch (e) {
@@ -573,6 +614,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
573
614
  executionSpan: executionContext.executionSpan
574
615
  },
575
616
  emitter,
617
+ abortController,
576
618
  runtimeContext
577
619
  })
578
620
  )
@@ -583,6 +625,8 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
583
625
  execResults = { status: "failed", error: hasFailed.result.error };
584
626
  } else if (hasSuspended) {
585
627
  execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
628
+ } else if (abortController?.signal?.aborted) {
629
+ execResults = { status: "canceled" };
586
630
  } else {
587
631
  execResults = {
588
632
  status: "success",
@@ -605,6 +649,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
605
649
  resume,
606
650
  executionContext,
607
651
  emitter,
652
+ abortController,
608
653
  runtimeContext
609
654
  }) {
610
655
  const { step, condition } = entry;
@@ -620,6 +665,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
620
665
  resume,
621
666
  prevOutput: result.output,
622
667
  emitter,
668
+ abortController,
623
669
  runtimeContext
624
670
  });
625
671
  if (result.status !== "success") {
@@ -630,6 +676,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
630
676
  mastra: this.mastra,
631
677
  runtimeContext,
632
678
  inputData: result.output,
679
+ runCount: -1,
633
680
  getInitData: () => stepResults?.input,
634
681
  getStepResult: (step2) => {
635
682
  if (!step2?.id) {
@@ -642,8 +689,12 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
642
689
  },
643
690
  bail: () => {
644
691
  },
692
+ abort: () => {
693
+ abortController?.abort();
694
+ },
645
695
  [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
646
- engine: {}
696
+ engine: {},
697
+ abortSignal: abortController?.signal
647
698
  });
648
699
  } while (entry.loopType === "dowhile" ? isTrue : !isTrue);
649
700
  return result;
@@ -657,6 +708,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
657
708
  resume,
658
709
  executionContext,
659
710
  emitter,
711
+ abortController,
660
712
  runtimeContext
661
713
  }) {
662
714
  const { step, opts } = entry;
@@ -677,6 +729,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
677
729
  resume,
678
730
  prevOutput: item,
679
731
  emitter,
732
+ abortController,
680
733
  runtimeContext
681
734
  });
682
735
  })
@@ -738,6 +791,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
738
791
  resume,
739
792
  executionContext,
740
793
  emitter,
794
+ abortController,
741
795
  runtimeContext
742
796
  }) {
743
797
  const prevOutput = this.getStepOutput(stepResults, prevStep);
@@ -753,6 +807,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
753
807
  resume,
754
808
  prevOutput,
755
809
  emitter,
810
+ abortController,
756
811
  runtimeContext
757
812
  });
758
813
  } else if (resume?.resumePath?.length && (entry.type === "parallel" || entry.type === "conditional")) {
@@ -774,6 +829,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
774
829
  executionSpan: executionContext.executionSpan
775
830
  },
776
831
  emitter,
832
+ abortController,
777
833
  runtimeContext
778
834
  });
779
835
  } else if (entry.type === "parallel") {
@@ -787,6 +843,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
787
843
  resume,
788
844
  executionContext,
789
845
  emitter,
846
+ abortController,
790
847
  runtimeContext
791
848
  });
792
849
  } else if (entry.type === "conditional") {
@@ -801,6 +858,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
801
858
  resume,
802
859
  executionContext,
803
860
  emitter,
861
+ abortController,
804
862
  runtimeContext
805
863
  });
806
864
  } else if (entry.type === "loop") {
@@ -814,6 +872,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
814
872
  resume,
815
873
  executionContext,
816
874
  emitter,
875
+ abortController,
817
876
  runtimeContext
818
877
  });
819
878
  } else if (entry.type === "foreach") {
@@ -827,6 +886,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
827
886
  resume,
828
887
  executionContext,
829
888
  emitter,
889
+ abortController,
830
890
  runtimeContext
831
891
  });
832
892
  } else if (entry.type === "sleep") {
@@ -859,7 +919,10 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
859
919
  await emitter.emit("watch-v2", {
860
920
  type: "step-waiting",
861
921
  payload: {
862
- id: entry.id
922
+ id: entry.id,
923
+ payload: prevOutput,
924
+ startedAt,
925
+ status: "waiting"
863
926
  }
864
927
  });
865
928
  await this.persistStepUpdate({
@@ -887,6 +950,41 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
887
950
  };
888
951
  execResults = { ...stepInfo, status: "success", output: prevOutput };
889
952
  stepResults[entry.id] = { ...stepInfo, status: "success", output: prevOutput };
953
+ await emitter.emit("watch", {
954
+ type: "watch",
955
+ payload: {
956
+ currentStep: {
957
+ id: entry.id,
958
+ ...execResults
959
+ },
960
+ workflowState: {
961
+ status: "running",
962
+ steps: {
963
+ ...stepResults,
964
+ [entry.id]: {
965
+ ...execResults
966
+ }
967
+ },
968
+ result: null,
969
+ error: null
970
+ }
971
+ },
972
+ eventTimestamp: Date.now()
973
+ });
974
+ await emitter.emit("watch-v2", {
975
+ type: "step-result",
976
+ payload: {
977
+ id: entry.id,
978
+ ...execResults
979
+ }
980
+ });
981
+ await emitter.emit("watch-v2", {
982
+ type: "step-finish",
983
+ payload: {
984
+ id: entry.id,
985
+ metadata: {}
986
+ }
987
+ });
890
988
  } else if (entry.type === "sleepUntil") {
891
989
  const startedAt = Date.now();
892
990
  await emitter.emit("watch", {
@@ -917,7 +1015,10 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
917
1015
  await emitter.emit("watch-v2", {
918
1016
  type: "step-waiting",
919
1017
  payload: {
920
- id: entry.id
1018
+ id: entry.id,
1019
+ payload: prevOutput,
1020
+ startedAt,
1021
+ status: "waiting"
921
1022
  }
922
1023
  });
923
1024
  await this.persistStepUpdate({
@@ -945,6 +1046,41 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
945
1046
  };
946
1047
  execResults = { ...stepInfo, status: "success", output: prevOutput };
947
1048
  stepResults[entry.id] = { ...stepInfo, status: "success", output: prevOutput };
1049
+ await emitter.emit("watch", {
1050
+ type: "watch",
1051
+ payload: {
1052
+ currentStep: {
1053
+ id: entry.id,
1054
+ ...execResults
1055
+ },
1056
+ workflowState: {
1057
+ status: "running",
1058
+ steps: {
1059
+ ...stepResults,
1060
+ [entry.id]: {
1061
+ ...execResults
1062
+ }
1063
+ },
1064
+ result: null,
1065
+ error: null
1066
+ }
1067
+ },
1068
+ eventTimestamp: Date.now()
1069
+ });
1070
+ await emitter.emit("watch-v2", {
1071
+ type: "step-result",
1072
+ payload: {
1073
+ id: entry.id,
1074
+ ...execResults
1075
+ }
1076
+ });
1077
+ await emitter.emit("watch-v2", {
1078
+ type: "step-finish",
1079
+ payload: {
1080
+ id: entry.id,
1081
+ metadata: {}
1082
+ }
1083
+ });
948
1084
  } else if (entry.type === "waitForEvent") {
949
1085
  const startedAt = Date.now();
950
1086
  let eventData;
@@ -976,7 +1112,10 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
976
1112
  await emitter.emit("watch-v2", {
977
1113
  type: "step-waiting",
978
1114
  payload: {
979
- id: entry.step.id
1115
+ id: entry.step.id,
1116
+ payload: prevOutput,
1117
+ startedAt,
1118
+ status: "waiting"
980
1119
  }
981
1120
  });
982
1121
  await this.persistStepUpdate({
@@ -1010,6 +1149,7 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
1010
1149
  },
1011
1150
  prevOutput,
1012
1151
  emitter,
1152
+ abortController,
1013
1153
  runtimeContext
1014
1154
  });
1015
1155
  } catch (error) {
@@ -1029,6 +1169,9 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
1029
1169
  if (entry.type === "step" || entry.type === "waitForEvent" || entry.type === "loop" || entry.type === "foreach") {
1030
1170
  stepResults[entry.step.id] = execResults;
1031
1171
  }
1172
+ if (abortController?.signal?.aborted) {
1173
+ execResults = { ...execResults, status: "canceled" };
1174
+ }
1032
1175
  await this.persistStepUpdate({
1033
1176
  workflowId,
1034
1177
  runId,
@@ -1044,7 +1187,7 @@ function mapVariable(config) {
1044
1187
  return config;
1045
1188
  }
1046
1189
  function createStep(params) {
1047
- if (params instanceof chunkEYJXFYUH_cjs.Agent) {
1190
+ if (params instanceof chunkSUF6QXSI_cjs.Agent) {
1048
1191
  return {
1049
1192
  id: params.name,
1050
1193
  // @ts-ignore
@@ -1057,7 +1200,7 @@ function createStep(params) {
1057
1200
  outputSchema: zod.z.object({
1058
1201
  text: zod.z.string()
1059
1202
  }),
1060
- execute: async ({ inputData, [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter, runtimeContext }) => {
1203
+ execute: async ({ inputData, [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter, runtimeContext, abortSignal, abort }) => {
1061
1204
  let streamPromise = {};
1062
1205
  streamPromise.promise = new Promise((resolve, reject) => {
1063
1206
  streamPromise.resolve = resolve;
@@ -1077,8 +1220,12 @@ function createStep(params) {
1077
1220
  runtimeContext,
1078
1221
  onFinish: (result) => {
1079
1222
  streamPromise.resolve(result.text);
1080
- }
1223
+ },
1224
+ abortSignal
1081
1225
  });
1226
+ if (abortSignal.aborted) {
1227
+ return abort();
1228
+ }
1082
1229
  for await (const chunk of fullStream) {
1083
1230
  switch (chunk.type) {
1084
1231
  case "text-delta":
@@ -1585,23 +1732,26 @@ var Workflow = class extends chunkP3Q73CAW_cjs.MastraBase {
1585
1732
  cleanup: () => this.#runs.delete(runIdToUse)
1586
1733
  });
1587
1734
  this.#runs.set(runIdToUse, run);
1588
- await this.mastra?.getStorage()?.persistWorkflowSnapshot({
1589
- workflowName: this.id,
1590
- runId: runIdToUse,
1591
- snapshot: {
1735
+ const workflowSnapshotInStorage = await this.getWorkflowRunExecutionResult(runIdToUse);
1736
+ if (!workflowSnapshotInStorage) {
1737
+ await this.mastra?.getStorage()?.persistWorkflowSnapshot({
1738
+ workflowName: this.id,
1592
1739
  runId: runIdToUse,
1593
- status: "pending",
1594
- value: {},
1595
- context: {},
1596
- activePaths: [],
1597
- serializedStepGraph: this.serializedStepGraph,
1598
- suspendedPaths: {},
1599
- result: void 0,
1600
- error: void 0,
1601
- // @ts-ignore
1602
- timestamp: Date.now()
1603
- }
1604
- });
1740
+ snapshot: {
1741
+ runId: runIdToUse,
1742
+ status: "pending",
1743
+ value: {},
1744
+ context: {},
1745
+ activePaths: [],
1746
+ serializedStepGraph: this.serializedStepGraph,
1747
+ suspendedPaths: {},
1748
+ result: void 0,
1749
+ error: void 0,
1750
+ // @ts-ignore
1751
+ timestamp: Date.now()
1752
+ }
1753
+ });
1754
+ }
1605
1755
  return run;
1606
1756
  }
1607
1757
  async execute({
@@ -1611,12 +1761,22 @@ var Workflow = class extends chunkP3Q73CAW_cjs.MastraBase {
1611
1761
  resume,
1612
1762
  [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
1613
1763
  mastra,
1614
- runtimeContext
1764
+ runtimeContext,
1765
+ abort,
1766
+ abortSignal
1615
1767
  }) {
1616
1768
  this.__registerMastra(mastra);
1617
1769
  const run = resume?.steps?.length ? this.createRun({ runId: resume.runId }) : this.createRun();
1770
+ const nestedAbortCb = () => {
1771
+ abort();
1772
+ };
1773
+ run.abortController?.signal.addEventListener("abort", nestedAbortCb);
1774
+ abortSignal.addEventListener("abort", async () => {
1775
+ run.abortController.signal.removeEventListener("abort", nestedAbortCb);
1776
+ await run.cancel();
1777
+ });
1618
1778
  const unwatchV2 = run.watch((event) => {
1619
- emitter.emit("nested-watch-v2", event);
1779
+ emitter.emit("nested-watch-v2", { event, workflowId: this.id });
1620
1780
  }, "watch-v2");
1621
1781
  const unwatch = run.watch((event) => {
1622
1782
  emitter.emit("nested-watch", { event, workflowId: this.id, runId: run.runId, isResume: !!resume?.steps?.length });
@@ -1688,6 +1848,7 @@ var Workflow = class extends chunkP3Q73CAW_cjs.MastraBase {
1688
1848
  }
1689
1849
  };
1690
1850
  var Run = class {
1851
+ abortController;
1691
1852
  emitter;
1692
1853
  /**
1693
1854
  * Unique identifier for this workflow
@@ -1731,8 +1892,15 @@ var Run = class {
1731
1892
  this.emitter = new EventEmitter__default.default();
1732
1893
  this.retryConfig = params.retryConfig;
1733
1894
  this.cleanup = params.cleanup;
1895
+ this.abortController = new AbortController();
1896
+ }
1897
+ /**
1898
+ * Cancels the workflow execution
1899
+ */
1900
+ async cancel() {
1901
+ this.abortController?.abort();
1734
1902
  }
1735
- sendEvent(event, data) {
1903
+ async sendEvent(event, data) {
1736
1904
  this.emitter.emit(`user-event-${event}`, data);
1737
1905
  }
1738
1906
  /**
@@ -1765,9 +1933,12 @@ var Run = class {
1765
1933
  }
1766
1934
  },
1767
1935
  retryConfig: this.retryConfig,
1768
- runtimeContext: runtimeContext ?? new chunkLABUWBKX_cjs.RuntimeContext()
1936
+ runtimeContext: runtimeContext ?? new chunkLABUWBKX_cjs.RuntimeContext(),
1937
+ abortController: this.abortController
1769
1938
  });
1770
- this.cleanup?.();
1939
+ if (result.status !== "suspended") {
1940
+ this.cleanup?.();
1941
+ }
1771
1942
  return result;
1772
1943
  }
1773
1944
  /**
@@ -1843,19 +2014,26 @@ var Run = class {
1843
2014
  console.error(e);
1844
2015
  }
1845
2016
  };
2017
+ const nestedWatchV2Cb = ({
2018
+ event,
2019
+ workflowId
2020
+ }) => {
2021
+ this.emitter.emit("watch-v2", {
2022
+ ...event,
2023
+ ...event.payload?.id ? { payload: { ...event.payload, id: `${workflowId}.${event.payload.id}` } } : {}
2024
+ });
2025
+ };
1846
2026
  if (type === "watch") {
1847
2027
  this.emitter.on("watch", watchCb);
1848
2028
  this.emitter.on("nested-watch", nestedWatchCb);
1849
2029
  } else if (type === "watch-v2") {
1850
2030
  this.emitter.on("watch-v2", cb);
1851
- this.emitter.on("nested-watch-v2", (event) => {
1852
- this.emitter.emit("watch-v2", event);
1853
- });
2031
+ this.emitter.on("nested-watch-v2", nestedWatchV2Cb);
1854
2032
  }
1855
2033
  return () => {
1856
2034
  if (type === "watch-v2") {
1857
2035
  this.emitter.off("watch-v2", cb);
1858
- this.emitter.off("nested-watch-v2", nestedWatchCb);
2036
+ this.emitter.off("nested-watch-v2", nestedWatchV2Cb);
1859
2037
  } else {
1860
2038
  this.emitter.off("watch", watchCb);
1861
2039
  this.emitter.off("nested-watch", nestedWatchCb);
@@ -1898,7 +2076,8 @@ var Run = class {
1898
2076
  this.emitter.once(event, callback);
1899
2077
  }
1900
2078
  },
1901
- runtimeContext: params.runtimeContext ?? new chunkLABUWBKX_cjs.RuntimeContext()
2079
+ runtimeContext: params.runtimeContext ?? new chunkLABUWBKX_cjs.RuntimeContext(),
2080
+ abortController: this.abortController
1902
2081
  }).then((result) => {
1903
2082
  if (result.status !== "suspended") {
1904
2083
  this.closeStreamAction?.().catch(() => {