@mastra/core 0.10.4 → 0.10.5

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 (103) hide show
  1. package/dist/agent/index.cjs +4 -4
  2. package/dist/agent/index.d.cts +1 -1
  3. package/dist/agent/index.d.ts +1 -1
  4. package/dist/agent/index.js +2 -2
  5. package/dist/{base-icHjkcs-.d.ts → base-CmIdgTSq.d.ts} +37 -31
  6. package/dist/{base-Bdc5hWla.d.cts → base-_mZ6e_qo.d.cts} +37 -31
  7. package/dist/chunk-2RZXEVWT.js +68 -0
  8. package/dist/{chunk-UFQERGWG.js → chunk-32XBQVNY.js} +117 -28
  9. package/dist/{chunk-TRJIWZKM.js → chunk-3SY7GRSA.js} +1 -1
  10. package/dist/{chunk-PUG7THT5.cjs → chunk-6EMFDXAQ.cjs} +4 -4
  11. package/dist/{chunk-36UICULV.js → chunk-6PQRSQZF.js} +35 -5
  12. package/dist/{chunk-VB4S54R3.cjs → chunk-7L56W43N.cjs} +118 -29
  13. package/dist/{chunk-62ZSDIUK.js → chunk-BMED2N3R.js} +1 -1
  14. package/dist/{chunk-I2KL5KMY.js → chunk-CMEK3A3W.js} +2 -2
  15. package/dist/{chunk-HGPLTKJA.cjs → chunk-D2ULEJL3.cjs} +2 -2
  16. package/dist/{chunk-AX6IHSGY.js → chunk-DPKEVI6Q.js} +1 -1
  17. package/dist/{chunk-ZKUUYDOQ.cjs → chunk-EFJIVMMM.cjs} +21 -21
  18. package/dist/{chunk-SI2ENZ3O.js → chunk-F2DBWJK3.js} +1 -1
  19. package/dist/{chunk-Z37B4W7B.js → chunk-HIQ3FPBN.js} +1 -1
  20. package/dist/{chunk-RO5VPM3P.cjs → chunk-HVI3SKIH.cjs} +278 -55
  21. package/dist/{chunk-GV6P24NY.cjs → chunk-ISRXIKDS.cjs} +4 -4
  22. package/dist/{chunk-QVROTSA5.cjs → chunk-J7MLMW6O.cjs} +2 -2
  23. package/dist/{chunk-PVGSY24V.js → chunk-LDNCERLU.js} +7 -0
  24. package/dist/{chunk-S6WRT7GI.cjs → chunk-LRMKKZ6M.cjs} +2 -2
  25. package/dist/{chunk-BBAQW23O.cjs → chunk-OLSQRA2V.cjs} +7 -0
  26. package/dist/chunk-Q65UGFQK.cjs +70 -0
  27. package/dist/{chunk-ZAXPU6F2.cjs → chunk-QQ3KHYKE.cjs} +35 -5
  28. package/dist/{chunk-ZWYZGIV3.cjs → chunk-QQT4XTOG.cjs} +279 -73
  29. package/dist/{chunk-XUODQRSL.cjs → chunk-TGK6JO2D.cjs} +3 -3
  30. package/dist/{chunk-JYLH5IY3.cjs → chunk-VRDDTY4O.cjs} +87 -16
  31. package/dist/{chunk-SWJKOFCU.js → chunk-VZDPK54I.js} +262 -56
  32. package/dist/{chunk-HFEELWJO.js → chunk-YDGX5LRI.js} +274 -51
  33. package/dist/{chunk-7UNDRBOU.js → chunk-YLCFUSJ4.js} +86 -15
  34. package/dist/{chunk-IZGRJXUQ.js → chunk-Z7SBZ7XB.js} +1 -1
  35. package/dist/error/index.cjs +5 -5
  36. package/dist/error/index.d.cts +7 -0
  37. package/dist/error/index.d.ts +7 -0
  38. package/dist/error/index.js +1 -1
  39. package/dist/eval/index.d.cts +1 -1
  40. package/dist/eval/index.d.ts +1 -1
  41. package/dist/index.cjs +48 -48
  42. package/dist/index.d.cts +2 -2
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.js +12 -12
  45. package/dist/integration/index.d.cts +1 -1
  46. package/dist/integration/index.d.ts +1 -1
  47. package/dist/llm/index.d.cts +1 -1
  48. package/dist/llm/index.d.ts +1 -1
  49. package/dist/mastra/index.cjs +2 -2
  50. package/dist/mastra/index.d.cts +1 -1
  51. package/dist/mastra/index.d.ts +1 -1
  52. package/dist/mastra/index.js +1 -1
  53. package/dist/mcp/index.d.cts +1 -1
  54. package/dist/mcp/index.d.ts +1 -1
  55. package/dist/memory/index.cjs +4 -4
  56. package/dist/memory/index.d.cts +1 -1
  57. package/dist/memory/index.d.ts +1 -1
  58. package/dist/memory/index.js +1 -1
  59. package/dist/network/index.cjs +11 -5
  60. package/dist/network/index.d.cts +1 -1
  61. package/dist/network/index.d.ts +1 -1
  62. package/dist/network/index.js +10 -4
  63. package/dist/relevance/index.cjs +4 -4
  64. package/dist/relevance/index.d.cts +1 -1
  65. package/dist/relevance/index.d.ts +1 -1
  66. package/dist/relevance/index.js +1 -1
  67. package/dist/server/index.cjs +9 -3
  68. package/dist/server/index.d.cts +2 -2
  69. package/dist/server/index.d.ts +2 -2
  70. package/dist/server/index.js +8 -2
  71. package/dist/storage/index.cjs +12 -12
  72. package/dist/storage/index.d.cts +2 -2
  73. package/dist/storage/index.d.ts +2 -2
  74. package/dist/storage/index.js +4 -4
  75. package/dist/telemetry/index.cjs +7 -7
  76. package/dist/telemetry/index.d.cts +1 -1
  77. package/dist/telemetry/index.d.ts +1 -1
  78. package/dist/telemetry/index.js +1 -1
  79. package/dist/tools/index.d.cts +2 -2
  80. package/dist/tools/index.d.ts +2 -2
  81. package/dist/tts/index.cjs +2 -2
  82. package/dist/tts/index.js +1 -1
  83. package/dist/utils.cjs +14 -14
  84. package/dist/utils.d.cts +2 -2
  85. package/dist/utils.d.ts +2 -2
  86. package/dist/utils.js +1 -1
  87. package/dist/vector/index.cjs +2 -2
  88. package/dist/vector/index.js +1 -1
  89. package/dist/voice/index.cjs +4 -4
  90. package/dist/voice/index.d.cts +1 -1
  91. package/dist/voice/index.d.ts +1 -1
  92. package/dist/voice/index.js +1 -1
  93. package/dist/workflows/index.cjs +9 -9
  94. package/dist/workflows/index.d.cts +14 -7
  95. package/dist/workflows/index.d.ts +14 -7
  96. package/dist/workflows/index.js +1 -1
  97. package/dist/workflows/legacy/index.cjs +22 -22
  98. package/dist/workflows/legacy/index.d.cts +2 -2
  99. package/dist/workflows/legacy/index.d.ts +2 -2
  100. package/dist/workflows/legacy/index.js +1 -1
  101. package/package.json +2 -2
  102. package/dist/chunk-IM7CLVLZ.js +0 -43
  103. package/dist/chunk-LEK3J7YN.cjs +0 -45
@@ -1,6 +1,7 @@
1
1
  import { EMITTER_SYMBOL } from './chunk-Y7D2JLKS.js';
2
- import { Agent } from './chunk-SWJKOFCU.js';
2
+ import { Agent } from './chunk-VZDPK54I.js';
3
3
  import { Tool } from './chunk-C4LMN2IR.js';
4
+ import { MastraError } from './chunk-LDNCERLU.js';
4
5
  import { MastraBase } from './chunk-5IEKR756.js';
5
6
  import { RegisteredLogger } from './chunk-5YDTZN2X.js';
6
7
  import { RuntimeContext } from './chunk-SGGPJWRQ.js';
@@ -91,7 +92,12 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
91
92
  const { attempts = 0, delay = 0 } = retryConfig ?? {};
92
93
  const steps = graph.steps;
93
94
  if (steps.length === 0) {
94
- throw new Error("Workflow must have at least one step");
95
+ throw new MastraError({
96
+ id: "WORKFLOW_EXECUTE_EMPTY_GRAPH",
97
+ text: "Workflow must have at least one step",
98
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
99
+ category: "USER" /* USER */
100
+ });
95
101
  }
96
102
  const executionSpan = this.mastra?.getTelemetry()?.tracer.startSpan(`workflow.${workflowId}.execute`, {
97
103
  attributes: { componentName: workflowId, runId }
@@ -125,15 +131,69 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
125
131
  emitter: params.emitter,
126
132
  runtimeContext: params.runtimeContext
127
133
  });
128
- if (lastOutput.status !== "success") {
129
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput);
134
+ if (lastOutput.result.status !== "success") {
135
+ const result2 = await this.fmtReturnValue(
136
+ executionSpan,
137
+ params.emitter,
138
+ stepResults,
139
+ lastOutput.result
140
+ );
141
+ await this.persistStepUpdate({
142
+ workflowId,
143
+ runId,
144
+ stepResults: lastOutput.stepResults,
145
+ serializedStepGraph: params.serializedStepGraph,
146
+ executionContext: lastOutput.executionContext,
147
+ workflowStatus: result2.status,
148
+ result: result2.result,
149
+ error: result2.error
150
+ });
151
+ return result2;
130
152
  }
131
153
  } catch (e) {
132
- this.logger.error("Error executing step: " + (e?.stack ?? e));
133
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput, e);
154
+ const error = e instanceof MastraError ? e : new MastraError(
155
+ {
156
+ id: "WORKFLOW_ENGINE_STEP_EXECUTION_FAILED",
157
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
158
+ category: "USER" /* USER */,
159
+ details: { workflowId, runId }
160
+ },
161
+ e
162
+ );
163
+ this.logger?.trackException(error);
164
+ this.logger?.error(`Error executing step: ${error?.stack}`);
165
+ const result2 = await this.fmtReturnValue(
166
+ executionSpan,
167
+ params.emitter,
168
+ stepResults,
169
+ lastOutput.result,
170
+ e
171
+ );
172
+ await this.persistStepUpdate({
173
+ workflowId,
174
+ runId,
175
+ stepResults: lastOutput.stepResults,
176
+ serializedStepGraph: params.serializedStepGraph,
177
+ executionContext: lastOutput.executionContext,
178
+ workflowStatus: result2.status,
179
+ result: result2.result,
180
+ error: result2.error
181
+ });
182
+ return result2;
134
183
  }
135
184
  }
136
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput);
185
+ const result = await this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput.result);
186
+ await this.persistStepUpdate({
187
+ workflowId,
188
+ runId,
189
+ stepResults: lastOutput.stepResults,
190
+ serializedStepGraph: params.serializedStepGraph,
191
+ executionContext: lastOutput.executionContext,
192
+ workflowStatus: result.status,
193
+ result: result.result,
194
+ error: result.error
195
+ });
196
+ return result;
137
197
  }
138
198
  getStepOutput(stepResults, step) {
139
199
  if (!step) {
@@ -272,10 +332,20 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
272
332
  }
273
333
  break;
274
334
  } catch (e) {
275
- this.logger.error("Error executing step: " + (e?.stack ?? e));
335
+ const error = e instanceof MastraError ? e : new MastraError(
336
+ {
337
+ id: "WORKFLOW_STEP_INVOKE_FAILED",
338
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
339
+ category: "USER" /* USER */,
340
+ details: { workflowId, runId, stepId: step.id }
341
+ },
342
+ e
343
+ );
344
+ this.logger.trackException(error);
345
+ this.logger.error("Error executing step: " + error?.stack);
276
346
  execResults = {
277
347
  status: "failed",
278
- error: e instanceof Error ? e?.stack ?? e : typeof e === "string" ? e : new Error("Unknown error: " + e)?.stack ?? new Error("Unknown error: " + e),
348
+ error: error?.stack,
279
349
  endedAt: Date.now()
280
350
  };
281
351
  }
@@ -366,18 +436,18 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
366
436
  })
367
437
  )
368
438
  );
369
- const hasFailed = results.find((result) => result.status === "failed");
370
- const hasSuspended = results.find((result) => result.status === "suspended");
439
+ const hasFailed = results.find((result) => result.result.status === "failed");
440
+ const hasSuspended = results.find((result) => result.result.status === "suspended");
371
441
  if (hasFailed) {
372
- execResults = { status: "failed", error: hasFailed.error };
442
+ execResults = { status: "failed", error: hasFailed.result.error };
373
443
  } else if (hasSuspended) {
374
- execResults = { status: "suspended", payload: hasSuspended.suspendPayload };
444
+ execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
375
445
  } else {
376
446
  execResults = {
377
447
  status: "success",
378
448
  output: results.reduce((acc, result, index) => {
379
- if (result.status === "success") {
380
- acc[entry.steps[index].step.id] = result.output;
449
+ if (result.result.status === "success") {
450
+ acc[entry.steps[index].step.id] = result.result.output;
381
451
  }
382
452
  return acc;
383
453
  }, {})
@@ -421,11 +491,22 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
421
491
  // TODO: this function shouldn't have suspend probably?
422
492
  suspend: async (_suspendPayload) => {
423
493
  },
424
- [EMITTER_SYMBOL]: emitter
494
+ [EMITTER_SYMBOL]: emitter,
495
+ engine: {}
425
496
  });
426
497
  return result ? index : null;
427
498
  } catch (e) {
428
- this.logger.error("Error evaluating condition: " + (e?.stack ?? e));
499
+ const error = e instanceof MastraError ? e : new MastraError(
500
+ {
501
+ id: "WORKFLOW_CONDITION_EVALUATION_FAILED",
502
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
503
+ category: "USER" /* USER */,
504
+ details: { workflowId, runId }
505
+ },
506
+ e
507
+ );
508
+ this.logger.trackException(error);
509
+ this.logger.error("Error evaluating condition: " + error?.stack);
429
510
  return null;
430
511
  }
431
512
  })
@@ -454,18 +535,18 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
454
535
  })
455
536
  )
456
537
  );
457
- const hasFailed = results.find((result) => result.status === "failed");
458
- const hasSuspended = results.find((result) => result.status === "suspended");
538
+ const hasFailed = results.find((result) => result.result.status === "failed");
539
+ const hasSuspended = results.find((result) => result.result.status === "suspended");
459
540
  if (hasFailed) {
460
- execResults = { status: "failed", error: hasFailed.error };
541
+ execResults = { status: "failed", error: hasFailed.result.error };
461
542
  } else if (hasSuspended) {
462
- execResults = { status: "suspended", payload: hasSuspended.suspendPayload };
543
+ execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
463
544
  } else {
464
545
  execResults = {
465
546
  status: "success",
466
547
  output: results.reduce((acc, result, index) => {
467
- if (result.status === "success") {
468
- acc[stepsToRun[index].step.id] = result.output;
548
+ if (result.result.status === "success") {
549
+ acc[stepsToRun[index].step.id] = result.result.output;
469
550
  }
470
551
  return acc;
471
552
  }, {})
@@ -517,7 +598,8 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
517
598
  },
518
599
  suspend: async (_suspendPayload) => {
519
600
  },
520
- [EMITTER_SYMBOL]: emitter
601
+ [EMITTER_SYMBOL]: emitter,
602
+ engine: {}
521
603
  });
522
604
  } while (entry.loopType === "dowhile" ? isTrue : !isTrue);
523
605
  return result;
@@ -579,18 +661,24 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
579
661
  runId,
580
662
  stepResults,
581
663
  serializedStepGraph,
582
- executionContext
664
+ executionContext,
665
+ workflowStatus,
666
+ result,
667
+ error
583
668
  }) {
584
669
  await this.mastra?.getStorage()?.persistWorkflowSnapshot({
585
670
  workflowName: workflowId,
586
671
  runId,
587
672
  snapshot: {
588
673
  runId,
674
+ status: workflowStatus,
589
675
  value: {},
590
676
  context: stepResults,
591
677
  activePaths: [],
592
678
  serializedStepGraph,
593
679
  suspendedPaths: executionContext.suspendedPaths,
680
+ result,
681
+ error,
594
682
  // @ts-ignore
595
683
  timestamp: Date.now()
596
684
  }
@@ -706,9 +794,10 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
706
794
  runId,
707
795
  serializedStepGraph,
708
796
  stepResults,
709
- executionContext
797
+ executionContext,
798
+ workflowStatus: "running"
710
799
  });
711
- return execResults;
800
+ return { result: execResults, stepResults, executionContext };
712
801
  }
713
802
  };
714
803
 
@@ -1378,7 +1467,7 @@ var Run = class {
1378
1467
  const steps = (Array.isArray(params.step) ? params.step : [params.step]).map(
1379
1468
  (step) => typeof step === "string" ? step : step?.id
1380
1469
  );
1381
- const snapshot = await this.#mastra?.storage?.loadWorkflowSnapshot({
1470
+ const snapshot = await this.#mastra?.getStorage()?.loadWorkflowSnapshot({
1382
1471
  workflowName: this.workflowId,
1383
1472
  runId: this.runId
1384
1473
  });
@@ -1,5 +1,5 @@
1
- import { MastraError } from './chunk-PVGSY24V.js';
2
1
  import { isVercelTool } from './chunk-C4LMN2IR.js';
2
+ import { MastraError } from './chunk-LDNCERLU.js';
3
3
  import { MastraBase } from './chunk-5IEKR756.js';
4
4
  import { RuntimeContext } from './chunk-SGGPJWRQ.js';
5
5
  import { createHash } from 'crypto';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkLXFZUKP3_cjs = require('./chunk-LXFZUKP3.cjs');
4
- var chunkXUODQRSL_cjs = require('./chunk-XUODQRSL.cjs');
5
- var chunkQVROTSA5_cjs = require('./chunk-QVROTSA5.cjs');
4
+ var chunkTGK6JO2D_cjs = require('./chunk-TGK6JO2D.cjs');
5
+ var chunkJ7MLMW6O_cjs = require('./chunk-J7MLMW6O.cjs');
6
6
  var chunkP3Q73CAW_cjs = require('./chunk-P3Q73CAW.cjs');
7
7
 
8
8
  // src/memory/memory.ts
@@ -130,7 +130,7 @@ https://mastra.ai/en/docs/memory/overview`
130
130
  if (config?.workingMemory && "use" in config.workingMemory) {
131
131
  throw new Error("The workingMemory.use option has been removed. Working memory always uses tool-call mode.");
132
132
  }
133
- return chunkQVROTSA5_cjs.deepMerge(this.threadConfig, config || {});
133
+ return chunkJ7MLMW6O_cjs.deepMerge(this.threadConfig, config || {});
134
134
  }
135
135
  /**
136
136
  * Apply all configured message processors to a list of messages.
@@ -221,7 +221,7 @@ https://mastra.ai/en/docs/memory/overview`
221
221
  toolCallIds
222
222
  };
223
223
  const savedMessages = await this.saveMessages({ messages: [message], memoryConfig: config });
224
- const list = new chunkXUODQRSL_cjs.MessageList({ threadId, resourceId }).add(savedMessages[0], "memory");
224
+ const list = new chunkTGK6JO2D_cjs.MessageList({ threadId, resourceId }).add(savedMessages[0], "memory");
225
225
  return list.get.all.v1()[0];
226
226
  }
227
227
  /**
@@ -1,8 +1,8 @@
1
+ import { MastraError } from './chunk-LDNCERLU.js';
1
2
  import { trace, propagation, context, SpanStatusCode, SpanKind } from '@opentelemetry/api';
2
3
  import { ExportResultCode } from '@opentelemetry/core';
3
4
  import { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';
4
5
 
5
- // src/telemetry/telemetry.decorators.ts
6
6
  function hasActiveTelemetry(tracerName = "default-tracer") {
7
7
  try {
8
8
  return !!trace.getTracer(tracerName);
@@ -315,7 +315,24 @@ var OTLPTraceExporter = class {
315
315
  code: ExportResultCode.SUCCESS
316
316
  });
317
317
  }).catch((e) => {
318
- this.logger.error("span err:" + e?.message);
318
+ const mastraError = new MastraError(
319
+ {
320
+ id: "OTLP_TRACE_EXPORT_FAILURE",
321
+ text: "Failed to export telemetry spans",
322
+ domain: "MASTRA_TELEMETRY" /* MASTRA_TELEMETRY */,
323
+ category: "SYSTEM" /* SYSTEM */,
324
+ details: {
325
+ attemptedSpanCount: allSpans.length,
326
+ targetTable: TABLE_TRACES,
327
+ firstSpanName: allSpans.length > 0 ? allSpans[0].name : "",
328
+ firstSpanKind: allSpans.length > 0 ? allSpans[0].kind : "",
329
+ firstSpanScope: allSpans.length > 0 ? allSpans[0].scope : ""
330
+ }
331
+ },
332
+ e
333
+ );
334
+ this.logger.trackException(mastraError);
335
+ this.logger.error("span err:" + mastraError.toString());
319
336
  items.resultCallback({
320
337
  code: ExportResultCode.FAILED,
321
338
  error: e
@@ -361,8 +378,16 @@ var Telemetry = class _Telemetry {
361
378
  }
362
379
  return global.__TELEMETRY__;
363
380
  } catch (error) {
364
- console.error("Failed to initialize telemetry:", error);
365
- throw error;
381
+ const wrappedError = new MastraError(
382
+ {
383
+ id: "TELEMETRY_INIT_FAILED",
384
+ text: "Failed to initialize telemetry",
385
+ domain: "MASTRA_TELEMETRY" /* MASTRA_TELEMETRY */,
386
+ category: "SYSTEM" /* SYSTEM */
387
+ },
388
+ error
389
+ );
390
+ throw wrappedError;
366
391
  }
367
392
  }
368
393
  static getActiveSpan() {
@@ -376,7 +401,12 @@ var Telemetry = class _Telemetry {
376
401
  */
377
402
  static get() {
378
403
  if (!global.__TELEMETRY__) {
379
- throw new Error("Telemetry not initialized");
404
+ throw new MastraError({
405
+ id: "TELEMETRY_GETTER_FAILED_GLOBAL_TELEMETRY_NOT_INITIALIZED",
406
+ text: "Telemetry not initialized",
407
+ domain: "MASTRA_TELEMETRY" /* MASTRA_TELEMETRY */,
408
+ category: "USER" /* USER */
409
+ });
380
410
  }
381
411
  return global.__TELEMETRY__;
382
412
  }
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkBB6DPGIV_cjs = require('./chunk-BB6DPGIV.cjs');
4
- var chunkZWYZGIV3_cjs = require('./chunk-ZWYZGIV3.cjs');
4
+ var chunkQQT4XTOG_cjs = require('./chunk-QQT4XTOG.cjs');
5
5
  var chunk4Z3OU5RY_cjs = require('./chunk-4Z3OU5RY.cjs');
6
+ var chunkOLSQRA2V_cjs = require('./chunk-OLSQRA2V.cjs');
6
7
  var chunkP3Q73CAW_cjs = require('./chunk-P3Q73CAW.cjs');
7
8
  var chunkZIZ3CVHN_cjs = require('./chunk-ZIZ3CVHN.cjs');
8
9
  var chunkLABUWBKX_cjs = require('./chunk-LABUWBKX.cjs');
@@ -97,7 +98,12 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
97
98
  const { attempts = 0, delay = 0 } = retryConfig ?? {};
98
99
  const steps = graph.steps;
99
100
  if (steps.length === 0) {
100
- throw new Error("Workflow must have at least one step");
101
+ throw new chunkOLSQRA2V_cjs.MastraError({
102
+ id: "WORKFLOW_EXECUTE_EMPTY_GRAPH",
103
+ text: "Workflow must have at least one step",
104
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
105
+ category: "USER" /* USER */
106
+ });
101
107
  }
102
108
  const executionSpan = this.mastra?.getTelemetry()?.tracer.startSpan(`workflow.${workflowId}.execute`, {
103
109
  attributes: { componentName: workflowId, runId }
@@ -131,15 +137,69 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
131
137
  emitter: params.emitter,
132
138
  runtimeContext: params.runtimeContext
133
139
  });
134
- if (lastOutput.status !== "success") {
135
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput);
140
+ if (lastOutput.result.status !== "success") {
141
+ const result2 = await this.fmtReturnValue(
142
+ executionSpan,
143
+ params.emitter,
144
+ stepResults,
145
+ lastOutput.result
146
+ );
147
+ await this.persistStepUpdate({
148
+ workflowId,
149
+ runId,
150
+ stepResults: lastOutput.stepResults,
151
+ serializedStepGraph: params.serializedStepGraph,
152
+ executionContext: lastOutput.executionContext,
153
+ workflowStatus: result2.status,
154
+ result: result2.result,
155
+ error: result2.error
156
+ });
157
+ return result2;
136
158
  }
137
159
  } catch (e) {
138
- this.logger.error("Error executing step: " + (e?.stack ?? e));
139
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput, e);
160
+ const error = e instanceof chunkOLSQRA2V_cjs.MastraError ? e : new chunkOLSQRA2V_cjs.MastraError(
161
+ {
162
+ id: "WORKFLOW_ENGINE_STEP_EXECUTION_FAILED",
163
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
164
+ category: "USER" /* USER */,
165
+ details: { workflowId, runId }
166
+ },
167
+ e
168
+ );
169
+ this.logger?.trackException(error);
170
+ this.logger?.error(`Error executing step: ${error?.stack}`);
171
+ const result2 = await this.fmtReturnValue(
172
+ executionSpan,
173
+ params.emitter,
174
+ stepResults,
175
+ lastOutput.result,
176
+ e
177
+ );
178
+ await this.persistStepUpdate({
179
+ workflowId,
180
+ runId,
181
+ stepResults: lastOutput.stepResults,
182
+ serializedStepGraph: params.serializedStepGraph,
183
+ executionContext: lastOutput.executionContext,
184
+ workflowStatus: result2.status,
185
+ result: result2.result,
186
+ error: result2.error
187
+ });
188
+ return result2;
140
189
  }
141
190
  }
142
- return this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput);
191
+ const result = await this.fmtReturnValue(executionSpan, params.emitter, stepResults, lastOutput.result);
192
+ await this.persistStepUpdate({
193
+ workflowId,
194
+ runId,
195
+ stepResults: lastOutput.stepResults,
196
+ serializedStepGraph: params.serializedStepGraph,
197
+ executionContext: lastOutput.executionContext,
198
+ workflowStatus: result.status,
199
+ result: result.result,
200
+ error: result.error
201
+ });
202
+ return result;
143
203
  }
144
204
  getStepOutput(stepResults, step) {
145
205
  if (!step) {
@@ -278,10 +338,20 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
278
338
  }
279
339
  break;
280
340
  } catch (e) {
281
- this.logger.error("Error executing step: " + (e?.stack ?? e));
341
+ const error = e instanceof chunkOLSQRA2V_cjs.MastraError ? e : new chunkOLSQRA2V_cjs.MastraError(
342
+ {
343
+ id: "WORKFLOW_STEP_INVOKE_FAILED",
344
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
345
+ category: "USER" /* USER */,
346
+ details: { workflowId, runId, stepId: step.id }
347
+ },
348
+ e
349
+ );
350
+ this.logger.trackException(error);
351
+ this.logger.error("Error executing step: " + error?.stack);
282
352
  execResults = {
283
353
  status: "failed",
284
- error: e instanceof Error ? e?.stack ?? e : typeof e === "string" ? e : new Error("Unknown error: " + e)?.stack ?? new Error("Unknown error: " + e),
354
+ error: error?.stack,
285
355
  endedAt: Date.now()
286
356
  };
287
357
  }
@@ -372,18 +442,18 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
372
442
  })
373
443
  )
374
444
  );
375
- const hasFailed = results.find((result) => result.status === "failed");
376
- const hasSuspended = results.find((result) => result.status === "suspended");
445
+ const hasFailed = results.find((result) => result.result.status === "failed");
446
+ const hasSuspended = results.find((result) => result.result.status === "suspended");
377
447
  if (hasFailed) {
378
- execResults = { status: "failed", error: hasFailed.error };
448
+ execResults = { status: "failed", error: hasFailed.result.error };
379
449
  } else if (hasSuspended) {
380
- execResults = { status: "suspended", payload: hasSuspended.suspendPayload };
450
+ execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
381
451
  } else {
382
452
  execResults = {
383
453
  status: "success",
384
454
  output: results.reduce((acc, result, index) => {
385
- if (result.status === "success") {
386
- acc[entry.steps[index].step.id] = result.output;
455
+ if (result.result.status === "success") {
456
+ acc[entry.steps[index].step.id] = result.result.output;
387
457
  }
388
458
  return acc;
389
459
  }, {})
@@ -427,11 +497,22 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
427
497
  // TODO: this function shouldn't have suspend probably?
428
498
  suspend: async (_suspendPayload) => {
429
499
  },
430
- [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter
500
+ [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
501
+ engine: {}
431
502
  });
432
503
  return result ? index : null;
433
504
  } catch (e) {
434
- this.logger.error("Error evaluating condition: " + (e?.stack ?? e));
505
+ const error = e instanceof chunkOLSQRA2V_cjs.MastraError ? e : new chunkOLSQRA2V_cjs.MastraError(
506
+ {
507
+ id: "WORKFLOW_CONDITION_EVALUATION_FAILED",
508
+ domain: "MASTRA_WORKFLOW" /* MASTRA_WORKFLOW */,
509
+ category: "USER" /* USER */,
510
+ details: { workflowId, runId }
511
+ },
512
+ e
513
+ );
514
+ this.logger.trackException(error);
515
+ this.logger.error("Error evaluating condition: " + error?.stack);
435
516
  return null;
436
517
  }
437
518
  })
@@ -460,18 +541,18 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
460
541
  })
461
542
  )
462
543
  );
463
- const hasFailed = results.find((result) => result.status === "failed");
464
- const hasSuspended = results.find((result) => result.status === "suspended");
544
+ const hasFailed = results.find((result) => result.result.status === "failed");
545
+ const hasSuspended = results.find((result) => result.result.status === "suspended");
465
546
  if (hasFailed) {
466
- execResults = { status: "failed", error: hasFailed.error };
547
+ execResults = { status: "failed", error: hasFailed.result.error };
467
548
  } else if (hasSuspended) {
468
- execResults = { status: "suspended", payload: hasSuspended.suspendPayload };
549
+ execResults = { status: "suspended", payload: hasSuspended.result.suspendPayload };
469
550
  } else {
470
551
  execResults = {
471
552
  status: "success",
472
553
  output: results.reduce((acc, result, index) => {
473
- if (result.status === "success") {
474
- acc[stepsToRun[index].step.id] = result.output;
554
+ if (result.result.status === "success") {
555
+ acc[stepsToRun[index].step.id] = result.result.output;
475
556
  }
476
557
  return acc;
477
558
  }, {})
@@ -523,7 +604,8 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
523
604
  },
524
605
  suspend: async (_suspendPayload) => {
525
606
  },
526
- [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter
607
+ [chunkBB6DPGIV_cjs.EMITTER_SYMBOL]: emitter,
608
+ engine: {}
527
609
  });
528
610
  } while (entry.loopType === "dowhile" ? isTrue : !isTrue);
529
611
  return result;
@@ -585,18 +667,24 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
585
667
  runId,
586
668
  stepResults,
587
669
  serializedStepGraph,
588
- executionContext
670
+ executionContext,
671
+ workflowStatus,
672
+ result,
673
+ error
589
674
  }) {
590
675
  await this.mastra?.getStorage()?.persistWorkflowSnapshot({
591
676
  workflowName: workflowId,
592
677
  runId,
593
678
  snapshot: {
594
679
  runId,
680
+ status: workflowStatus,
595
681
  value: {},
596
682
  context: stepResults,
597
683
  activePaths: [],
598
684
  serializedStepGraph,
599
685
  suspendedPaths: executionContext.suspendedPaths,
686
+ result,
687
+ error,
600
688
  // @ts-ignore
601
689
  timestamp: Date.now()
602
690
  }
@@ -712,15 +800,16 @@ var DefaultExecutionEngine = class extends ExecutionEngine {
712
800
  runId,
713
801
  serializedStepGraph,
714
802
  stepResults,
715
- executionContext
803
+ executionContext,
804
+ workflowStatus: "running"
716
805
  });
717
- return execResults;
806
+ return { result: execResults, stepResults, executionContext };
718
807
  }
719
808
  };
720
809
 
721
810
  // src/workflows/workflow.ts
722
811
  function createStep(params) {
723
- if (params instanceof chunkZWYZGIV3_cjs.Agent) {
812
+ if (params instanceof chunkQQT4XTOG_cjs.Agent) {
724
813
  return {
725
814
  id: params.name,
726
815
  // @ts-ignore
@@ -1384,7 +1473,7 @@ var Run = class {
1384
1473
  const steps = (Array.isArray(params.step) ? params.step : [params.step]).map(
1385
1474
  (step) => typeof step === "string" ? step : step?.id
1386
1475
  );
1387
- const snapshot = await this.#mastra?.storage?.loadWorkflowSnapshot({
1476
+ const snapshot = await this.#mastra?.getStorage()?.loadWorkflowSnapshot({
1388
1477
  workflowName: this.workflowId,
1389
1478
  runId: this.runId
1390
1479
  });
@@ -1,4 +1,4 @@
1
- import { TABLE_WORKFLOW_SNAPSHOT, TABLE_EVALS, TABLE_MESSAGES, TABLE_THREADS, TABLE_TRACES, TABLE_SCHEMAS } from './chunk-36UICULV.js';
1
+ import { TABLE_WORKFLOW_SNAPSHOT, TABLE_EVALS, TABLE_MESSAGES, TABLE_THREADS, TABLE_TRACES, TABLE_SCHEMAS } from './chunk-6PQRSQZF.js';
2
2
  import { MastraBase } from './chunk-5IEKR756.js';
3
3
 
4
4
  // src/storage/base.ts
@@ -1,6 +1,6 @@
1
1
  import { augmentWithInit } from './chunk-YOQP5T77.js';
2
- import { MessageList } from './chunk-AX6IHSGY.js';
3
- import { deepMerge } from './chunk-TRJIWZKM.js';
2
+ import { MessageList } from './chunk-DPKEVI6Q.js';
3
+ import { deepMerge } from './chunk-3SY7GRSA.js';
4
4
  import { MastraBase } from './chunk-5IEKR756.js';
5
5
 
6
6
  // src/memory/memory.ts
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZWYZGIV3_cjs = require('./chunk-ZWYZGIV3.cjs');
3
+ var chunkQQT4XTOG_cjs = require('./chunk-QQT4XTOG.cjs');
4
4
  var cohereAi = require('cohere-ai');
5
5
 
6
6
  var CohereRelevanceScorer = class {
@@ -38,7 +38,7 @@ Relevance score (0-1):`;
38
38
  var MastraAgentRelevanceScorer = class {
39
39
  agent;
40
40
  constructor(name, model) {
41
- this.agent = new chunkZWYZGIV3_cjs.Agent({
41
+ this.agent = new chunkQQT4XTOG_cjs.Agent({
42
42
  name: `Relevance Scorer ${name}`,
43
43
  instructions: `You are a specialized agent for evaluating the relevance of text to queries.
44
44
  Your task is to rate how well a text passage answers a given query.
@@ -1,4 +1,4 @@
1
- import { isUiMessage, isCoreMessage } from './chunk-TRJIWZKM.js';
1
+ import { isUiMessage, isCoreMessage } from './chunk-3SY7GRSA.js';
2
2
  import { randomUUID } from 'crypto';
3
3
  import { convertToCoreMessages } from 'ai';
4
4
  import { convertUint8ArrayToBase64, convertBase64ToUint8Array } from '@ai-sdk/provider-utils';