@mastra/core 0.17.0-alpha.3 → 0.17.0-alpha.4

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 (149) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/index.cjs +11 -11
  4. package/dist/agent/index.js +2 -2
  5. package/dist/agent/input-processor/index.cjs +6 -6
  6. package/dist/agent/input-processor/index.js +1 -1
  7. package/dist/agent/message-list/index.d.ts +1 -1
  8. package/dist/agent/message-list/index.d.ts.map +1 -1
  9. package/dist/agent/types.d.ts +5 -1
  10. package/dist/agent/types.d.ts.map +1 -1
  11. package/dist/ai-tracing/exporters/default.d.ts +1 -0
  12. package/dist/ai-tracing/exporters/default.d.ts.map +1 -1
  13. package/dist/ai-tracing/index.cjs +35 -31
  14. package/dist/ai-tracing/index.js +1 -1
  15. package/dist/ai-tracing/spans/base.d.ts +2 -1
  16. package/dist/ai-tracing/spans/base.d.ts.map +1 -1
  17. package/dist/ai-tracing/types.d.ts +35 -4
  18. package/dist/ai-tracing/types.d.ts.map +1 -1
  19. package/dist/ai-tracing/utils.d.ts +3 -2
  20. package/dist/ai-tracing/utils.d.ts.map +1 -1
  21. package/dist/{chunk-MEAE636Z.js → chunk-4OT7CXAS.js} +17 -4
  22. package/dist/chunk-4OT7CXAS.js.map +1 -0
  23. package/dist/{chunk-6DGBFJVJ.js → chunk-4VHC2F5H.js} +10 -8
  24. package/dist/chunk-4VHC2F5H.js.map +1 -0
  25. package/dist/{chunk-DFG5DYBU.cjs → chunk-6MDSS7WL.cjs} +4 -4
  26. package/dist/{chunk-DFG5DYBU.cjs.map → chunk-6MDSS7WL.cjs.map} +1 -1
  27. package/dist/{chunk-NHXCRP73.cjs → chunk-BGAJ72HJ.cjs} +92 -79
  28. package/dist/chunk-BGAJ72HJ.cjs.map +1 -0
  29. package/dist/{chunk-O5ZQXW2Z.js → chunk-BY37WSX5.js} +5 -5
  30. package/dist/{chunk-O5ZQXW2Z.js.map → chunk-BY37WSX5.js.map} +1 -1
  31. package/dist/{chunk-CUL4XPO7.cjs → chunk-CP4TZ4HO.cjs} +119 -46
  32. package/dist/chunk-CP4TZ4HO.cjs.map +1 -0
  33. package/dist/{chunk-FJRTJO6A.cjs → chunk-F3XF7MEZ.cjs} +12 -12
  34. package/dist/{chunk-FJRTJO6A.cjs.map → chunk-F3XF7MEZ.cjs.map} +1 -1
  35. package/dist/{chunk-7GC52IJO.cjs → chunk-HBQSSMAD.cjs} +13 -11
  36. package/dist/chunk-HBQSSMAD.cjs.map +1 -0
  37. package/dist/{chunk-VFSLYB2P.cjs → chunk-HZGYVRVN.cjs} +21 -8
  38. package/dist/chunk-HZGYVRVN.cjs.map +1 -0
  39. package/dist/{chunk-AZW77RIZ.cjs → chunk-MRZHPP3G.cjs} +103 -5
  40. package/dist/chunk-MRZHPP3G.cjs.map +1 -0
  41. package/dist/{chunk-UIOXAMCE.js → chunk-PL3B3FZM.js} +119 -47
  42. package/dist/chunk-PL3B3FZM.js.map +1 -0
  43. package/dist/{chunk-PGJPVLDZ.cjs → chunk-RNJ4GD7U.cjs} +6 -6
  44. package/dist/{chunk-PGJPVLDZ.cjs.map → chunk-RNJ4GD7U.cjs.map} +1 -1
  45. package/dist/{chunk-HN446TOQ.js → chunk-TUXCO343.js} +17 -6
  46. package/dist/chunk-TUXCO343.js.map +1 -0
  47. package/dist/{chunk-6ER2C5KK.js → chunk-UWUM3F3X.js} +72 -59
  48. package/dist/chunk-UWUM3F3X.js.map +1 -0
  49. package/dist/{chunk-YUSC7Q6Y.js → chunk-VXJFKEON.js} +4 -4
  50. package/dist/{chunk-YUSC7Q6Y.js.map → chunk-VXJFKEON.js.map} +1 -1
  51. package/dist/{chunk-4UUBZNVD.cjs → chunk-X3MOJJYH.cjs} +20 -9
  52. package/dist/chunk-X3MOJJYH.cjs.map +1 -0
  53. package/dist/{chunk-RYRLZO4M.js → chunk-XKVDOO2O.js} +3 -3
  54. package/dist/{chunk-RYRLZO4M.js.map → chunk-XKVDOO2O.js.map} +1 -1
  55. package/dist/{chunk-A6DPQCNR.js → chunk-XRJDA7BI.js} +102 -4
  56. package/dist/chunk-XRJDA7BI.js.map +1 -0
  57. package/dist/index.cjs +38 -38
  58. package/dist/index.js +7 -7
  59. package/dist/llm/model/model.d.ts +3 -1
  60. package/dist/llm/model/model.d.ts.map +1 -1
  61. package/dist/llm/model/model.loop.d.ts +3 -1
  62. package/dist/llm/model/model.loop.d.ts.map +1 -1
  63. package/dist/llm/model/shared.types.d.ts +4 -0
  64. package/dist/llm/model/shared.types.d.ts.map +1 -1
  65. package/dist/loop/index.cjs +2 -2
  66. package/dist/loop/index.js +1 -1
  67. package/dist/loop/test-utils/options.d.ts.map +1 -1
  68. package/dist/loop/workflows/agentic-execution/index.d.ts +836 -0
  69. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -0
  70. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +559 -0
  71. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -0
  72. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +311 -0
  73. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -0
  74. package/dist/loop/{workflow → workflows/agentic-execution}/tool-call-step.d.ts +16 -16
  75. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -0
  76. package/dist/loop/workflows/agentic-loop/index.d.ts +842 -0
  77. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -0
  78. package/dist/loop/workflows/run-state.d.ts.map +1 -0
  79. package/dist/loop/workflows/schema.d.ts +439 -0
  80. package/dist/loop/workflows/schema.d.ts.map +1 -0
  81. package/dist/loop/{workflow → workflows}/stream.d.ts +1 -1
  82. package/dist/loop/workflows/stream.d.ts.map +1 -0
  83. package/dist/mastra/index.cjs +2 -2
  84. package/dist/mastra/index.js +1 -1
  85. package/dist/memory/index.cjs +4 -4
  86. package/dist/memory/index.js +1 -1
  87. package/dist/network/index.cjs +2 -2
  88. package/dist/network/index.js +1 -1
  89. package/dist/network/vNext/index.cjs +34 -34
  90. package/dist/network/vNext/index.cjs.map +1 -1
  91. package/dist/network/vNext/index.js +7 -7
  92. package/dist/network/vNext/index.js.map +1 -1
  93. package/dist/processors/index.cjs +8 -8
  94. package/dist/processors/index.js +2 -2
  95. package/dist/relevance/index.cjs +4 -4
  96. package/dist/relevance/index.js +1 -1
  97. package/dist/scores/base.d.ts.map +1 -1
  98. package/dist/scores/index.cjs +8 -8
  99. package/dist/scores/index.js +1 -1
  100. package/dist/storage/index.cjs +3 -3
  101. package/dist/storage/index.js +1 -1
  102. package/dist/stream/base/output.d.ts.map +1 -1
  103. package/dist/stream/index.cjs +3 -3
  104. package/dist/stream/index.js +1 -1
  105. package/dist/stream/types.d.ts +1 -1
  106. package/dist/stream/types.d.ts.map +1 -1
  107. package/dist/test-utils/llm-mock.cjs +2 -2
  108. package/dist/test-utils/llm-mock.js +1 -1
  109. package/dist/utils.cjs +17 -17
  110. package/dist/utils.d.ts +2 -1
  111. package/dist/utils.d.ts.map +1 -1
  112. package/dist/utils.js +1 -1
  113. package/dist/workflows/default.d.ts.map +1 -1
  114. package/dist/workflows/evented/index.cjs +10 -10
  115. package/dist/workflows/evented/index.js +1 -1
  116. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  117. package/dist/workflows/execution-engine.d.ts +7 -2
  118. package/dist/workflows/execution-engine.d.ts.map +1 -1
  119. package/dist/workflows/index.cjs +10 -10
  120. package/dist/workflows/index.js +1 -1
  121. package/dist/workflows/legacy/index.cjs +22 -22
  122. package/dist/workflows/legacy/index.js +1 -1
  123. package/dist/workflows/types.d.ts +6 -1
  124. package/dist/workflows/types.d.ts.map +1 -1
  125. package/dist/workflows/workflow.d.ts +12 -10
  126. package/dist/workflows/workflow.d.ts.map +1 -1
  127. package/package.json +1 -1
  128. package/dist/chunk-4UUBZNVD.cjs.map +0 -1
  129. package/dist/chunk-6DGBFJVJ.js.map +0 -1
  130. package/dist/chunk-6ER2C5KK.js.map +0 -1
  131. package/dist/chunk-7GC52IJO.cjs.map +0 -1
  132. package/dist/chunk-A6DPQCNR.js.map +0 -1
  133. package/dist/chunk-AZW77RIZ.cjs.map +0 -1
  134. package/dist/chunk-CUL4XPO7.cjs.map +0 -1
  135. package/dist/chunk-HN446TOQ.js.map +0 -1
  136. package/dist/chunk-MEAE636Z.js.map +0 -1
  137. package/dist/chunk-NHXCRP73.cjs.map +0 -1
  138. package/dist/chunk-UIOXAMCE.js.map +0 -1
  139. package/dist/chunk-VFSLYB2P.cjs.map +0 -1
  140. package/dist/loop/workflow/llm-execution.d.ts +0 -81
  141. package/dist/loop/workflow/llm-execution.d.ts.map +0 -1
  142. package/dist/loop/workflow/outer-llm-step.d.ts +0 -44
  143. package/dist/loop/workflow/outer-llm-step.d.ts.map +0 -1
  144. package/dist/loop/workflow/run-state.d.ts.map +0 -1
  145. package/dist/loop/workflow/schema.d.ts +0 -92
  146. package/dist/loop/workflow/schema.d.ts.map +0 -1
  147. package/dist/loop/workflow/stream.d.ts.map +0 -1
  148. package/dist/loop/workflow/tool-call-step.d.ts.map +0 -1
  149. /package/dist/loop/{workflow → workflows}/run-state.d.ts +0 -0
@@ -9,7 +9,79 @@ import jsonSchemaToZod from 'json-schema-to-zod';
9
9
  import { z } from 'zod';
10
10
  import { convertZodSchemaToAISDKSchema, OpenAIReasoningSchemaCompatLayer, OpenAISchemaCompatLayer, GoogleSchemaCompatLayer, AnthropicSchemaCompatLayer, DeepSeekSchemaCompatLayer, MetaSchemaCompatLayer, applyCompatLayer } from '@mastra/schema-compat';
11
11
 
12
+ // src/ai-tracing/types.ts
13
+ var AISpanType = /* @__PURE__ */ ((AISpanType2) => {
14
+ AISpanType2["AGENT_RUN"] = "agent_run";
15
+ AISpanType2["GENERIC"] = "generic";
16
+ AISpanType2["LLM_GENERATION"] = "llm_generation";
17
+ AISpanType2["LLM_CHUNK"] = "llm_chunk";
18
+ AISpanType2["MCP_TOOL_CALL"] = "mcp_tool_call";
19
+ AISpanType2["TOOL_CALL"] = "tool_call";
20
+ AISpanType2["WORKFLOW_RUN"] = "workflow_run";
21
+ AISpanType2["WORKFLOW_STEP"] = "workflow_step";
22
+ AISpanType2["WORKFLOW_CONDITIONAL"] = "workflow_conditional";
23
+ AISpanType2["WORKFLOW_CONDITIONAL_EVAL"] = "workflow_conditional_eval";
24
+ AISpanType2["WORKFLOW_PARALLEL"] = "workflow_parallel";
25
+ AISpanType2["WORKFLOW_LOOP"] = "workflow_loop";
26
+ AISpanType2["WORKFLOW_SLEEP"] = "workflow_sleep";
27
+ AISpanType2["WORKFLOW_WAIT_EVENT"] = "workflow_wait_event";
28
+ return AISpanType2;
29
+ })(AISpanType || {});
30
+ var InternalSpans = /* @__PURE__ */ ((InternalSpans2) => {
31
+ InternalSpans2[InternalSpans2["NONE"] = 0] = "NONE";
32
+ InternalSpans2[InternalSpans2["WORKFLOW"] = 1] = "WORKFLOW";
33
+ InternalSpans2[InternalSpans2["AGENT"] = 2] = "AGENT";
34
+ InternalSpans2[InternalSpans2["TOOL"] = 4] = "TOOL";
35
+ InternalSpans2[InternalSpans2["LLM"] = 8] = "LLM";
36
+ InternalSpans2[InternalSpans2["ALL"] = 15] = "ALL";
37
+ return InternalSpans2;
38
+ })(InternalSpans || {});
39
+ var SamplingStrategyType = /* @__PURE__ */ ((SamplingStrategyType2) => {
40
+ SamplingStrategyType2["ALWAYS"] = "always";
41
+ SamplingStrategyType2["NEVER"] = "never";
42
+ SamplingStrategyType2["RATIO"] = "ratio";
43
+ SamplingStrategyType2["CUSTOM"] = "custom";
44
+ return SamplingStrategyType2;
45
+ })(SamplingStrategyType || {});
46
+ var AITracingEventType = /* @__PURE__ */ ((AITracingEventType2) => {
47
+ AITracingEventType2["SPAN_STARTED"] = "span_started";
48
+ AITracingEventType2["SPAN_UPDATED"] = "span_updated";
49
+ AITracingEventType2["SPAN_ENDED"] = "span_ended";
50
+ return AITracingEventType2;
51
+ })(AITracingEventType || {});
52
+
12
53
  // src/ai-tracing/spans/base.ts
54
+ function isSpanInternal(spanType, flags) {
55
+ if (flags === void 0 || flags === 0 /* NONE */) {
56
+ return false;
57
+ }
58
+ switch (spanType) {
59
+ // Workflow-related spans
60
+ case "workflow_run" /* WORKFLOW_RUN */:
61
+ case "workflow_step" /* WORKFLOW_STEP */:
62
+ case "workflow_conditional" /* WORKFLOW_CONDITIONAL */:
63
+ case "workflow_conditional_eval" /* WORKFLOW_CONDITIONAL_EVAL */:
64
+ case "workflow_parallel" /* WORKFLOW_PARALLEL */:
65
+ case "workflow_loop" /* WORKFLOW_LOOP */:
66
+ case "workflow_sleep" /* WORKFLOW_SLEEP */:
67
+ case "workflow_wait_event" /* WORKFLOW_WAIT_EVENT */:
68
+ return (flags & 1 /* WORKFLOW */) !== 0;
69
+ // Agent-related spans
70
+ case "agent_run" /* AGENT_RUN */:
71
+ return (flags & 2 /* AGENT */) !== 0;
72
+ // Tool-related spans
73
+ case "tool_call" /* TOOL_CALL */:
74
+ case "mcp_tool_call" /* MCP_TOOL_CALL */:
75
+ return (flags & 4 /* TOOL */) !== 0;
76
+ // LLM-related spans
77
+ case "llm_generation" /* LLM_GENERATION */:
78
+ case "llm_chunk" /* LLM_CHUNK */:
79
+ return (flags & 8 /* LLM */) !== 0;
80
+ // Default: never internal
81
+ default:
82
+ return false;
83
+ }
84
+ }
13
85
  var BaseAISpan = class {
14
86
  name;
15
87
  type;
@@ -33,7 +105,7 @@ var BaseAISpan = class {
33
105
  this.startTime = /* @__PURE__ */ new Date();
34
106
  this.aiTracing = aiTracing;
35
107
  this.isEvent = options.isEvent ?? false;
36
- this.isInternal = options.isInternal ?? false;
108
+ this.isInternal = isSpanInternal(this.type, options.tracingPolicy?.internal);
37
109
  if (this.isEvent) {
38
110
  this.output = deepClean(options.output);
39
111
  } else {
@@ -246,38 +318,6 @@ var NoOpAISpan = class extends BaseAISpan {
246
318
  }
247
319
  };
248
320
 
249
- // src/ai-tracing/types.ts
250
- var AISpanType = /* @__PURE__ */ ((AISpanType2) => {
251
- AISpanType2["AGENT_RUN"] = "agent_run";
252
- AISpanType2["GENERIC"] = "generic";
253
- AISpanType2["LLM_GENERATION"] = "llm_generation";
254
- AISpanType2["LLM_CHUNK"] = "llm_chunk";
255
- AISpanType2["MCP_TOOL_CALL"] = "mcp_tool_call";
256
- AISpanType2["TOOL_CALL"] = "tool_call";
257
- AISpanType2["WORKFLOW_RUN"] = "workflow_run";
258
- AISpanType2["WORKFLOW_STEP"] = "workflow_step";
259
- AISpanType2["WORKFLOW_CONDITIONAL"] = "workflow_conditional";
260
- AISpanType2["WORKFLOW_CONDITIONAL_EVAL"] = "workflow_conditional_eval";
261
- AISpanType2["WORKFLOW_PARALLEL"] = "workflow_parallel";
262
- AISpanType2["WORKFLOW_LOOP"] = "workflow_loop";
263
- AISpanType2["WORKFLOW_SLEEP"] = "workflow_sleep";
264
- AISpanType2["WORKFLOW_WAIT_EVENT"] = "workflow_wait_event";
265
- return AISpanType2;
266
- })(AISpanType || {});
267
- var SamplingStrategyType = /* @__PURE__ */ ((SamplingStrategyType2) => {
268
- SamplingStrategyType2["ALWAYS"] = "always";
269
- SamplingStrategyType2["NEVER"] = "never";
270
- SamplingStrategyType2["RATIO"] = "ratio";
271
- SamplingStrategyType2["CUSTOM"] = "custom";
272
- return SamplingStrategyType2;
273
- })(SamplingStrategyType || {});
274
- var AITracingEventType = /* @__PURE__ */ ((AITracingEventType2) => {
275
- AITracingEventType2["SPAN_STARTED"] = "span_started";
276
- AITracingEventType2["SPAN_UPDATED"] = "span_updated";
277
- AITracingEventType2["SPAN_ENDED"] = "span_ended";
278
- return AITracingEventType2;
279
- })(AITracingEventType || {});
280
-
281
321
  // src/ai-tracing/tracers/base.ts
282
322
  var BaseAITracing = class extends MastraBase {
283
323
  config;
@@ -594,7 +634,7 @@ var CoreToolBuilder = class extends MastraBase {
594
634
  toolDescription: options.description,
595
635
  toolType: logType || "tool"
596
636
  },
597
- isInternal: options.tracingContext?.isInternal
637
+ tracingPolicy: options.tracingPolicy
598
638
  });
599
639
  try {
600
640
  let result;
@@ -1345,6 +1385,8 @@ var DefaultExporter = class {
1345
1385
  resolvedStrategy;
1346
1386
  buffer;
1347
1387
  flushTimer = null;
1388
+ // Track all spans that have been created, persists across flushes
1389
+ allCreatedSpans = /* @__PURE__ */ new Set();
1348
1390
  constructor(config = {}, logger) {
1349
1391
  if (logger) {
1350
1392
  this.logger = logger;
@@ -1365,6 +1407,7 @@ var DefaultExporter = class {
1365
1407
  insertOnly: [],
1366
1408
  seenSpans: /* @__PURE__ */ new Set(),
1367
1409
  spanSequences: /* @__PURE__ */ new Map(),
1410
+ completedSpans: /* @__PURE__ */ new Set(),
1368
1411
  outOfOrderCount: 0,
1369
1412
  totalSize: 0
1370
1413
  };
@@ -1428,6 +1471,7 @@ var DefaultExporter = class {
1428
1471
  this.logger.warn("Out-of-order span update detected - skipping event", {
1429
1472
  spanId: event.exportedSpan.id,
1430
1473
  traceId: event.exportedSpan.traceId,
1474
+ spanName: event.exportedSpan.name,
1431
1475
  eventType: event.type
1432
1476
  });
1433
1477
  }
@@ -1451,11 +1495,12 @@ var DefaultExporter = class {
1451
1495
  };
1452
1496
  this.buffer.creates.push(createRecord);
1453
1497
  this.buffer.seenSpans.add(spanKey);
1498
+ this.allCreatedSpans.add(spanKey);
1454
1499
  }
1455
1500
  break;
1456
1501
  case "span_updated" /* SPAN_UPDATED */:
1457
1502
  if (this.resolvedStrategy === "batch-with-updates") {
1458
- if (this.buffer.seenSpans.has(spanKey)) {
1503
+ if (this.allCreatedSpans.has(spanKey)) {
1459
1504
  this.buffer.updates.push({
1460
1505
  traceId: event.exportedSpan.traceId,
1461
1506
  spanId: event.exportedSpan.id,
@@ -1473,7 +1518,7 @@ var DefaultExporter = class {
1473
1518
  break;
1474
1519
  case "span_ended" /* SPAN_ENDED */:
1475
1520
  if (this.resolvedStrategy === "batch-with-updates") {
1476
- if (this.buffer.seenSpans.has(spanKey)) {
1521
+ if (this.allCreatedSpans.has(spanKey)) {
1477
1522
  this.buffer.updates.push({
1478
1523
  traceId: event.exportedSpan.traceId,
1479
1524
  spanId: event.exportedSpan.id,
@@ -1483,6 +1528,7 @@ var DefaultExporter = class {
1483
1528
  },
1484
1529
  sequenceNumber: this.getNextSequence(spanKey)
1485
1530
  });
1531
+ this.buffer.completedSpans.add(spanKey);
1486
1532
  } else if (event.exportedSpan.isEvent) {
1487
1533
  const createRecord = {
1488
1534
  traceId: event.exportedSpan.traceId,
@@ -1493,6 +1539,8 @@ var DefaultExporter = class {
1493
1539
  };
1494
1540
  this.buffer.creates.push(createRecord);
1495
1541
  this.buffer.seenSpans.add(spanKey);
1542
+ this.allCreatedSpans.add(spanKey);
1543
+ this.buffer.completedSpans.add(spanKey);
1496
1544
  } else {
1497
1545
  this.handleOutOfOrderUpdate(event);
1498
1546
  this.buffer.outOfOrderCount++;
@@ -1506,6 +1554,8 @@ var DefaultExporter = class {
1506
1554
  updatedAt: null
1507
1555
  };
1508
1556
  this.buffer.insertOnly.push(createRecord);
1557
+ this.buffer.completedSpans.add(spanKey);
1558
+ this.allCreatedSpans.add(spanKey);
1509
1559
  }
1510
1560
  break;
1511
1561
  }
@@ -1532,15 +1582,19 @@ var DefaultExporter = class {
1532
1582
  /**
1533
1583
  * Resets the buffer after successful flush
1534
1584
  */
1535
- resetBuffer() {
1585
+ resetBuffer(completedSpansToCleanup = /* @__PURE__ */ new Set()) {
1536
1586
  this.buffer.creates = [];
1537
1587
  this.buffer.updates = [];
1538
1588
  this.buffer.insertOnly = [];
1539
1589
  this.buffer.seenSpans.clear();
1540
1590
  this.buffer.spanSequences.clear();
1591
+ this.buffer.completedSpans.clear();
1541
1592
  this.buffer.outOfOrderCount = 0;
1542
1593
  this.buffer.firstEventTime = void 0;
1543
1594
  this.buffer.totalSize = 0;
1595
+ for (const spanKey of completedSpansToCleanup) {
1596
+ this.allCreatedSpans.delete(spanKey);
1597
+ }
1544
1598
  }
1545
1599
  /**
1546
1600
  * Schedules a flush using setTimeout
@@ -1621,6 +1675,7 @@ var DefaultExporter = class {
1621
1675
  */
1622
1676
  async handleRealtimeEvent(event, storage) {
1623
1677
  const span = event.exportedSpan;
1678
+ const spanKey = this.buildSpanKey(span.traceId, span.id);
1624
1679
  if (span.isEvent) {
1625
1680
  if (event.type === "span_ended" /* SPAN_ENDED */) {
1626
1681
  await storage.createAISpan({
@@ -1643,8 +1698,18 @@ var DefaultExporter = class {
1643
1698
  createdAt: /* @__PURE__ */ new Date(),
1644
1699
  updatedAt: null
1645
1700
  });
1701
+ this.allCreatedSpans.add(spanKey);
1646
1702
  break;
1647
1703
  case "span_updated" /* SPAN_UPDATED */:
1704
+ await storage.updateAISpan({
1705
+ traceId: span.traceId,
1706
+ spanId: span.id,
1707
+ updates: {
1708
+ ...this.buildUpdateRecord(span),
1709
+ updatedAt: /* @__PURE__ */ new Date()
1710
+ }
1711
+ });
1712
+ break;
1648
1713
  case "span_ended" /* SPAN_ENDED */:
1649
1714
  await storage.updateAISpan({
1650
1715
  traceId: span.traceId,
@@ -1654,6 +1719,7 @@ var DefaultExporter = class {
1654
1719
  updatedAt: /* @__PURE__ */ new Date()
1655
1720
  }
1656
1721
  });
1722
+ this.allCreatedSpans.delete(spanKey);
1657
1723
  break;
1658
1724
  default:
1659
1725
  this.logger.warn(`Tracing event type not implemented for span spans: ${event.type}`);
@@ -1726,6 +1792,7 @@ var DefaultExporter = class {
1726
1792
  insertOnly: [...this.buffer.insertOnly],
1727
1793
  seenSpans: new Set(this.buffer.seenSpans),
1728
1794
  spanSequences: new Map(this.buffer.spanSequences),
1795
+ completedSpans: new Set(this.buffer.completedSpans),
1729
1796
  outOfOrderCount: this.buffer.outOfOrderCount,
1730
1797
  firstEventTime: this.buffer.firstEventTime,
1731
1798
  totalSize: this.buffer.totalSize
@@ -1765,6 +1832,9 @@ var DefaultExporter = class {
1765
1832
  await storage.batchCreateAISpans({ records: buffer.insertOnly });
1766
1833
  }
1767
1834
  }
1835
+ for (const spanKey of buffer.completedSpans) {
1836
+ this.allCreatedSpans.delete(spanKey);
1837
+ }
1768
1838
  } catch (error) {
1769
1839
  if (attempt < this.config.maxRetries) {
1770
1840
  const retryDelay = this.calculateRetryDelay(attempt);
@@ -1783,6 +1853,9 @@ var DefaultExporter = class {
1783
1853
  droppedBatchSize: buffer.totalSize,
1784
1854
  error: error instanceof Error ? error.message : String(error)
1785
1855
  });
1856
+ for (const spanKey of buffer.completedSpans) {
1857
+ this.allCreatedSpans.delete(spanKey);
1858
+ }
1786
1859
  }
1787
1860
  }
1788
1861
  }
@@ -2140,18 +2213,17 @@ function getValidTraceId(span) {
2140
2213
  return span?.isValid ? span.traceId : void 0;
2141
2214
  }
2142
2215
  function getOrCreateSpan(options) {
2143
- const { type, attributes, tracingContext, tracingOptions, runtimeContext, ...rest } = options;
2216
+ const { type, attributes, tracingContext, runtimeContext, ...rest } = options;
2144
2217
  const metadata = {
2145
2218
  ...rest.metadata ?? {},
2146
- ...tracingOptions?.metadata ?? {}
2219
+ ...rest.tracingOptions?.metadata ?? {}
2147
2220
  };
2148
2221
  if (tracingContext?.currentSpan) {
2149
2222
  return tracingContext.currentSpan.createChildSpan({
2150
2223
  type,
2151
2224
  attributes,
2152
2225
  ...rest,
2153
- metadata,
2154
- isInternal: tracingContext?.isInternal
2226
+ metadata
2155
2227
  });
2156
2228
  }
2157
2229
  const aiTracing = getSelectedAITracing({
@@ -2160,12 +2232,12 @@ function getOrCreateSpan(options) {
2160
2232
  return aiTracing?.startSpan({
2161
2233
  type,
2162
2234
  attributes,
2235
+ ...rest,
2236
+ metadata,
2163
2237
  customSamplerOptions: {
2164
2238
  runtimeContext,
2165
2239
  metadata
2166
- },
2167
- ...rest,
2168
- metadata
2240
+ }
2169
2241
  });
2170
2242
  }
2171
2243
 
@@ -2316,6 +2388,6 @@ function wrapRun(run, tracingContext) {
2316
2388
  }
2317
2389
  }
2318
2390
 
2319
- export { AISpanType, AITracingEventType, BaseAISpan, BaseAITracing, CloudExporter, ConsoleExporter, DefaultAISpan, DefaultAITracing, DefaultExporter, NoOpAISpan, SamplingStrategyType, SensitiveDataFilter, checkEvalStorageFields, clearAITracingRegistry, createMastraProxy, deepClean, deepMerge, delay, ensureToolProperties, fetchWithRetry, generateEmptyFromSchema, getAITracing, getAllAITracing, getDefaultAITracing, getOrCreateSpan, getSelectedAITracing, getValidTraceId, hasAITracing, isCoreMessage, isMastra, isUiMessage, isZodType, makeCoreTool, makeCoreToolV5, maskStreamTags, omitKeys, parseFieldKey, parseSqlIdentifier, registerAITracing, resolveSerializedZodOutput, selectFields, setSelector, setupAITracing, shutdownAITracingRegistry, unregisterAITracing, wrapMastra };
2320
- //# sourceMappingURL=chunk-UIOXAMCE.js.map
2321
- //# sourceMappingURL=chunk-UIOXAMCE.js.map
2391
+ export { AISpanType, AITracingEventType, BaseAISpan, BaseAITracing, CloudExporter, ConsoleExporter, DefaultAISpan, DefaultAITracing, DefaultExporter, InternalSpans, NoOpAISpan, SamplingStrategyType, SensitiveDataFilter, checkEvalStorageFields, clearAITracingRegistry, createMastraProxy, deepClean, deepMerge, delay, ensureToolProperties, fetchWithRetry, generateEmptyFromSchema, getAITracing, getAllAITracing, getDefaultAITracing, getOrCreateSpan, getSelectedAITracing, getValidTraceId, hasAITracing, isCoreMessage, isMastra, isUiMessage, isZodType, makeCoreTool, makeCoreToolV5, maskStreamTags, omitKeys, parseFieldKey, parseSqlIdentifier, registerAITracing, resolveSerializedZodOutput, selectFields, setSelector, setupAITracing, shutdownAITracingRegistry, unregisterAITracing, wrapMastra };
2392
+ //# sourceMappingURL=chunk-PL3B3FZM.js.map
2393
+ //# sourceMappingURL=chunk-PL3B3FZM.js.map