@mastra/core 1.23.0-alpha.4 → 1.23.0-alpha.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 (219) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/agent/index.cjs +8 -8
  3. package/dist/agent/index.js +1 -1
  4. package/dist/base.cjs +2 -2
  5. package/dist/base.d.ts.map +1 -1
  6. package/dist/base.js +1 -1
  7. package/dist/browser/index.cjs +6 -6
  8. package/dist/browser/index.js +3 -3
  9. package/dist/bundler/index.cjs +2 -2
  10. package/dist/bundler/index.js +1 -1
  11. package/dist/cache/index.cjs +3 -3
  12. package/dist/cache/index.js +1 -1
  13. package/dist/channels/index.cjs +4 -4
  14. package/dist/channels/index.js +1 -1
  15. package/dist/{chunk-CIV5MFO6.cjs → chunk-25EDFTQD.cjs} +4 -4
  16. package/dist/{chunk-CIV5MFO6.cjs.map → chunk-25EDFTQD.cjs.map} +1 -1
  17. package/dist/{chunk-K6W2C7PA.js → chunk-3APK6ZID.js} +3 -3
  18. package/dist/{chunk-K6W2C7PA.js.map → chunk-3APK6ZID.js.map} +1 -1
  19. package/dist/{chunk-YRDMMXBW.cjs → chunk-47RKHZIP.cjs} +34 -2
  20. package/dist/chunk-47RKHZIP.cjs.map +1 -0
  21. package/dist/{chunk-JK5YBBUS.cjs → chunk-4W26D7S6.cjs} +13 -13
  22. package/dist/chunk-4W26D7S6.cjs.map +1 -0
  23. package/dist/{chunk-7273BIRR.js → chunk-6UQKQBIB.js} +3 -3
  24. package/dist/{chunk-7273BIRR.js.map → chunk-6UQKQBIB.js.map} +1 -1
  25. package/dist/{chunk-G5WUD7SF.js → chunk-72EQLBZY.js} +3 -3
  26. package/dist/{chunk-G5WUD7SF.js.map → chunk-72EQLBZY.js.map} +1 -1
  27. package/dist/{chunk-C3G6OQ52.cjs → chunk-7DONY7OL.cjs} +10 -11
  28. package/dist/chunk-7DONY7OL.cjs.map +1 -0
  29. package/dist/{chunk-HBO2PK7W.cjs → chunk-7GW2TQXP.cjs} +4 -3
  30. package/dist/chunk-7GW2TQXP.cjs.map +1 -0
  31. package/dist/{chunk-74IXDLKF.cjs → chunk-7STIIXEL.cjs} +3 -3
  32. package/dist/{chunk-74IXDLKF.cjs.map → chunk-7STIIXEL.cjs.map} +1 -1
  33. package/dist/{chunk-44P7C37G.js → chunk-BMS7MLQV.js} +31 -3
  34. package/dist/chunk-BMS7MLQV.js.map +1 -0
  35. package/dist/{chunk-GEI2HTYE.js → chunk-C77V6J36.js} +3 -3
  36. package/dist/{chunk-GEI2HTYE.js.map → chunk-C77V6J36.js.map} +1 -1
  37. package/dist/{chunk-ANFGVHG2.cjs → chunk-DAQ4JZQA.cjs} +4 -4
  38. package/dist/{chunk-ANFGVHG2.cjs.map → chunk-DAQ4JZQA.cjs.map} +1 -1
  39. package/dist/{chunk-M3LRSDLL.js → chunk-DBBWTK24.js} +4 -3
  40. package/dist/chunk-DBBWTK24.js.map +1 -0
  41. package/dist/{chunk-JSG6FULW.cjs → chunk-DO4JBKMT.cjs} +109 -110
  42. package/dist/chunk-DO4JBKMT.cjs.map +1 -0
  43. package/dist/{chunk-PGXL3YYH.js → chunk-EG3UGEUZ.js} +4 -4
  44. package/dist/{chunk-PGXL3YYH.js.map → chunk-EG3UGEUZ.js.map} +1 -1
  45. package/dist/{chunk-KRDAO5BB.js → chunk-EXORPYDN.js} +3 -3
  46. package/dist/{chunk-KRDAO5BB.js.map → chunk-EXORPYDN.js.map} +1 -1
  47. package/dist/{chunk-DKK77FIJ.cjs → chunk-FCQNDFEW.cjs} +7 -7
  48. package/dist/chunk-FCQNDFEW.cjs.map +1 -0
  49. package/dist/{chunk-SQXNHM6M.cjs → chunk-FSHOQBGF.cjs} +28 -28
  50. package/dist/{chunk-SQXNHM6M.cjs.map → chunk-FSHOQBGF.cjs.map} +1 -1
  51. package/dist/{chunk-3EXOZA2Y.js → chunk-HQXVBGBM.js} +3 -3
  52. package/dist/{chunk-3EXOZA2Y.js.map → chunk-HQXVBGBM.js.map} +1 -1
  53. package/dist/{chunk-UUVQS3OG.js → chunk-HWAEQSOO.js} +12 -12
  54. package/dist/{chunk-UUVQS3OG.js.map → chunk-HWAEQSOO.js.map} +1 -1
  55. package/dist/{chunk-OF675HEC.cjs → chunk-I4YMMVQ3.cjs} +4 -4
  56. package/dist/{chunk-OF675HEC.cjs.map → chunk-I4YMMVQ3.cjs.map} +1 -1
  57. package/dist/{chunk-C264FG5X.js → chunk-I6XSSR4Z.js} +8 -8
  58. package/dist/{chunk-C264FG5X.js.map → chunk-I6XSSR4Z.js.map} +1 -1
  59. package/dist/{chunk-JAAICSXU.cjs → chunk-JF3WPB75.cjs} +32 -32
  60. package/dist/{chunk-JAAICSXU.cjs.map → chunk-JF3WPB75.cjs.map} +1 -1
  61. package/dist/{chunk-R577LMHJ.cjs → chunk-JJFGNYVY.cjs} +7 -7
  62. package/dist/{chunk-R577LMHJ.cjs.map → chunk-JJFGNYVY.cjs.map} +1 -1
  63. package/dist/{chunk-MISEF5LK.js → chunk-JNXWDPCZ.js} +6 -6
  64. package/dist/chunk-JNXWDPCZ.js.map +1 -0
  65. package/dist/{chunk-AQUKI2MV.js → chunk-L2MCWEEX.js} +6 -6
  66. package/dist/{chunk-AQUKI2MV.js.map → chunk-L2MCWEEX.js.map} +1 -1
  67. package/dist/{chunk-6VIWRHC3.js → chunk-QIJFD7ZC.js} +5 -5
  68. package/dist/{chunk-6VIWRHC3.js.map → chunk-QIJFD7ZC.js.map} +1 -1
  69. package/dist/{chunk-7QI6WHSE.js → chunk-QRK2HWHI.js} +8 -8
  70. package/dist/{chunk-7QI6WHSE.js.map → chunk-QRK2HWHI.js.map} +1 -1
  71. package/dist/{chunk-KCVSVDQ2.js → chunk-QYQSXRFZ.js} +13 -14
  72. package/dist/chunk-QYQSXRFZ.js.map +1 -0
  73. package/dist/{chunk-T26CFBWF.cjs → chunk-RAD2NM47.cjs} +4 -4
  74. package/dist/{chunk-T26CFBWF.cjs.map → chunk-RAD2NM47.cjs.map} +1 -1
  75. package/dist/{chunk-NBOTSCZC.js → chunk-TG46FM6X.js} +4 -4
  76. package/dist/{chunk-NBOTSCZC.js.map → chunk-TG46FM6X.js.map} +1 -1
  77. package/dist/{chunk-Y67VWDR7.cjs → chunk-TKH2A57J.cjs} +185 -185
  78. package/dist/{chunk-Y67VWDR7.cjs.map → chunk-TKH2A57J.cjs.map} +1 -1
  79. package/dist/{chunk-DBN5B2LH.cjs → chunk-UENWRQLR.cjs} +18 -18
  80. package/dist/{chunk-DBN5B2LH.cjs.map → chunk-UENWRQLR.cjs.map} +1 -1
  81. package/dist/{chunk-ZOLIH66J.cjs → chunk-V7AX2MSJ.cjs} +20 -20
  82. package/dist/{chunk-ZOLIH66J.cjs.map → chunk-V7AX2MSJ.cjs.map} +1 -1
  83. package/dist/{chunk-Z2IR7J5I.js → chunk-VO6R5RZT.js} +8 -9
  84. package/dist/chunk-VO6R5RZT.js.map +1 -0
  85. package/dist/{chunk-DNW46JHP.js → chunk-WENZPAHS.js} +4 -4
  86. package/dist/chunk-WENZPAHS.js.map +1 -0
  87. package/dist/{chunk-HIC3WGQU.cjs → chunk-X6CDTXAM.cjs} +11 -11
  88. package/dist/{chunk-HIC3WGQU.cjs.map → chunk-X6CDTXAM.cjs.map} +1 -1
  89. package/dist/{chunk-CHY6AP6N.cjs → chunk-XFLQVMNH.cjs} +26 -26
  90. package/dist/{chunk-CHY6AP6N.cjs.map → chunk-XFLQVMNH.cjs.map} +1 -1
  91. package/dist/{chunk-OFABGAOY.cjs → chunk-XZCYFQ4N.cjs} +64 -65
  92. package/dist/chunk-XZCYFQ4N.cjs.map +1 -0
  93. package/dist/{chunk-LBL7GNPF.cjs → chunk-YR7XRMDN.cjs} +10 -10
  94. package/dist/{chunk-LBL7GNPF.cjs.map → chunk-YR7XRMDN.cjs.map} +1 -1
  95. package/dist/{chunk-XGUUUEE4.js → chunk-Z34TVGNZ.js} +4 -4
  96. package/dist/{chunk-XGUUUEE4.js.map → chunk-Z34TVGNZ.js.map} +1 -1
  97. package/dist/{chunk-EHBTASCW.js → chunk-Z63F3XHK.js} +5 -6
  98. package/dist/chunk-Z63F3XHK.js.map +1 -0
  99. package/dist/{chunk-KJDRVBAH.cjs → chunk-Z67JQNEH.cjs} +11 -11
  100. package/dist/{chunk-KJDRVBAH.cjs.map → chunk-Z67JQNEH.cjs.map} +1 -1
  101. package/dist/{chunk-QVTTP5HC.js → chunk-ZCBMZ24O.js} +3 -3
  102. package/dist/{chunk-QVTTP5HC.js.map → chunk-ZCBMZ24O.js.map} +1 -1
  103. package/dist/{chunk-NMO7ITAY.js → chunk-ZHYPWNWS.js} +5 -5
  104. package/dist/{chunk-NMO7ITAY.js.map → chunk-ZHYPWNWS.js.map} +1 -1
  105. package/dist/{chunk-B7JN64YW.cjs → chunk-ZUN5CMDY.cjs} +86 -86
  106. package/dist/{chunk-B7JN64YW.cjs.map → chunk-ZUN5CMDY.cjs.map} +1 -1
  107. package/dist/datasets/index.cjs +17 -17
  108. package/dist/datasets/index.js +2 -2
  109. package/dist/deployer/index.cjs +2 -2
  110. package/dist/deployer/index.js +1 -1
  111. package/dist/docs/SKILL.md +2 -2
  112. package/dist/docs/assets/SOURCE_MAP.json +499 -499
  113. package/dist/docs/references/reference-templates-overview.md +88 -14
  114. package/dist/evals/index.cjs +23 -23
  115. package/dist/evals/index.js +3 -3
  116. package/dist/evals/scoreTraces/index.cjs +7 -7
  117. package/dist/evals/scoreTraces/index.js +3 -3
  118. package/dist/harness/index.cjs +13 -13
  119. package/dist/harness/index.js +7 -7
  120. package/dist/index.cjs +2 -2
  121. package/dist/index.js +1 -1
  122. package/dist/llm/index.cjs +20 -20
  123. package/dist/llm/index.js +5 -5
  124. package/dist/logger/default-logger.d.ts +1 -1
  125. package/dist/logger/default-logger.d.ts.map +1 -1
  126. package/dist/logger/index.cjs +12 -12
  127. package/dist/logger/index.js +2 -2
  128. package/dist/loop/index.cjs +14 -14
  129. package/dist/loop/index.js +1 -1
  130. package/dist/mastra/index.cjs +2 -2
  131. package/dist/mastra/index.js +1 -1
  132. package/dist/mastra-O4WWP6N5.js +3 -0
  133. package/dist/{mastra-5WYO5ZWG.js.map → mastra-O4WWP6N5.js.map} +1 -1
  134. package/dist/mastra-VHS7LVQG.cjs +12 -0
  135. package/dist/{mastra-LIISVKXT.cjs.map → mastra-VHS7LVQG.cjs.map} +1 -1
  136. package/dist/mcp/index.cjs +4 -4
  137. package/dist/mcp/index.js +2 -2
  138. package/dist/memory/index.cjs +17 -17
  139. package/dist/memory/index.js +1 -1
  140. package/dist/models-dev-3IPTEPRM.cjs +12 -0
  141. package/dist/{models-dev-GD4LL56A.cjs.map → models-dev-3IPTEPRM.cjs.map} +1 -1
  142. package/dist/models-dev-4W7JQVWR.js +3 -0
  143. package/dist/{models-dev-CJ7IIPNG.js.map → models-dev-4W7JQVWR.js.map} +1 -1
  144. package/dist/netlify-FZBGNFDI.js +3 -0
  145. package/dist/{netlify-PMGHRONJ.js.map → netlify-FZBGNFDI.js.map} +1 -1
  146. package/dist/netlify-XT32D45G.cjs +12 -0
  147. package/dist/{netlify-6V7UBVTK.cjs.map → netlify-XT32D45G.cjs.map} +1 -1
  148. package/dist/observability/context-storage.cjs +28 -14
  149. package/dist/observability/context-storage.cjs.map +1 -1
  150. package/dist/observability/context-storage.d.ts.map +1 -1
  151. package/dist/observability/context-storage.js +28 -1
  152. package/dist/observability/context-storage.js.map +1 -1
  153. package/dist/observability/index.cjs +26 -10
  154. package/dist/observability/index.js +1 -1
  155. package/dist/observability/utils.d.ts +27 -0
  156. package/dist/observability/utils.d.ts.map +1 -1
  157. package/dist/processor-provider/index.cjs +10 -10
  158. package/dist/processor-provider/index.js +1 -1
  159. package/dist/processors/index.cjs +44 -44
  160. package/dist/processors/index.js +1 -1
  161. package/dist/provider-registry-AWL2JDVF.js +3 -0
  162. package/dist/{provider-registry-JV46DWD7.js.map → provider-registry-AWL2JDVF.js.map} +1 -1
  163. package/dist/provider-registry-X5PBSJ2G.cjs +40 -0
  164. package/dist/{provider-registry-U26G7C4O.cjs.map → provider-registry-X5PBSJ2G.cjs.map} +1 -1
  165. package/dist/relevance/index.cjs +3 -3
  166. package/dist/relevance/index.js +1 -1
  167. package/dist/server/index.cjs +5 -5
  168. package/dist/server/index.js +2 -2
  169. package/dist/storage/constants.cjs +56 -56
  170. package/dist/storage/constants.js +1 -1
  171. package/dist/storage/index.cjs +286 -286
  172. package/dist/storage/index.js +3 -3
  173. package/dist/stream/index.cjs +8 -8
  174. package/dist/stream/index.js +1 -1
  175. package/dist/test-utils/llm-mock.cjs +4 -4
  176. package/dist/test-utils/llm-mock.js +1 -1
  177. package/dist/tool-loop-agent/index.cjs +4 -4
  178. package/dist/tool-loop-agent/index.js +1 -1
  179. package/dist/tts/index.cjs +2 -2
  180. package/dist/tts/index.js +1 -1
  181. package/dist/utils.cjs +25 -25
  182. package/dist/utils.js +1 -1
  183. package/dist/vector/index.cjs +9 -9
  184. package/dist/vector/index.js +2 -2
  185. package/dist/voice/index.cjs +6 -6
  186. package/dist/voice/index.js +1 -1
  187. package/dist/workflows/evented/index.cjs +10 -10
  188. package/dist/workflows/evented/index.js +1 -1
  189. package/dist/workflows/index.cjs +24 -24
  190. package/dist/workflows/index.js +1 -1
  191. package/dist/workspace/index.cjs +68 -68
  192. package/dist/workspace/index.js +1 -1
  193. package/package.json +5 -5
  194. package/dist/chunk-2DKOLMVJ.js +0 -28
  195. package/dist/chunk-2DKOLMVJ.js.map +0 -1
  196. package/dist/chunk-44P7C37G.js.map +0 -1
  197. package/dist/chunk-C3G6OQ52.cjs.map +0 -1
  198. package/dist/chunk-D5FMOLQZ.cjs +0 -32
  199. package/dist/chunk-D5FMOLQZ.cjs.map +0 -1
  200. package/dist/chunk-DKK77FIJ.cjs.map +0 -1
  201. package/dist/chunk-DNW46JHP.js.map +0 -1
  202. package/dist/chunk-EHBTASCW.js.map +0 -1
  203. package/dist/chunk-HBO2PK7W.cjs.map +0 -1
  204. package/dist/chunk-JK5YBBUS.cjs.map +0 -1
  205. package/dist/chunk-JSG6FULW.cjs.map +0 -1
  206. package/dist/chunk-KCVSVDQ2.js.map +0 -1
  207. package/dist/chunk-M3LRSDLL.js.map +0 -1
  208. package/dist/chunk-MISEF5LK.js.map +0 -1
  209. package/dist/chunk-OFABGAOY.cjs.map +0 -1
  210. package/dist/chunk-YRDMMXBW.cjs.map +0 -1
  211. package/dist/chunk-Z2IR7J5I.js.map +0 -1
  212. package/dist/mastra-5WYO5ZWG.js +0 -3
  213. package/dist/mastra-LIISVKXT.cjs +0 -12
  214. package/dist/models-dev-CJ7IIPNG.js +0 -3
  215. package/dist/models-dev-GD4LL56A.cjs +0 -12
  216. package/dist/netlify-6V7UBVTK.cjs +0 -12
  217. package/dist/netlify-PMGHRONJ.js +0 -3
  218. package/dist/provider-registry-JV46DWD7.js +0 -3
  219. package/dist/provider-registry-U26G7C4O.cjs +0 -40
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkJSG6FULW_cjs = require('./chunk-JSG6FULW.cjs');
4
- var chunkJAAICSXU_cjs = require('./chunk-JAAICSXU.cjs');
3
+ var chunkDO4JBKMT_cjs = require('./chunk-DO4JBKMT.cjs');
4
+ var chunkJF3WPB75_cjs = require('./chunk-JF3WPB75.cjs');
5
5
  var chunkB4OOPFD3_cjs = require('./chunk-B4OOPFD3.cjs');
6
- var chunkYRDMMXBW_cjs = require('./chunk-YRDMMXBW.cjs');
6
+ var chunk47RKHZIP_cjs = require('./chunk-47RKHZIP.cjs');
7
7
  var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
8
8
  var pMap = require('p-map');
9
9
 
@@ -14,9 +14,9 @@ var pMap__default = /*#__PURE__*/_interopDefault(pMap);
14
14
  function toScorerTargetEntityType(entityType) {
15
15
  switch (entityType) {
16
16
  case "AGENT":
17
- return chunkYRDMMXBW_cjs.EntityType.AGENT;
17
+ return chunk47RKHZIP_cjs.EntityType.AGENT;
18
18
  case "WORKFLOW":
19
- return chunkYRDMMXBW_cjs.EntityType.WORKFLOW_RUN;
19
+ return chunk47RKHZIP_cjs.EntityType.WORKFLOW_RUN;
20
20
  default:
21
21
  return void 0;
22
22
  }
@@ -134,7 +134,7 @@ async function validateAndSaveScore(storage, payload) {
134
134
  text: "Scores storage domain is not available"
135
135
  });
136
136
  }
137
- const payloadToSave = chunkJAAICSXU_cjs.saveScorePayloadSchema.parse(payload);
137
+ const payloadToSave = chunkJF3WPB75_cjs.saveScorePayloadSchema.parse(payload);
138
138
  await scoresStore.saveScore(payloadToSave);
139
139
  }
140
140
  async function findScorer(mastra, entityId, entityType, scorerId) {
@@ -355,7 +355,7 @@ async function runEvals(config) {
355
355
  };
356
356
  }
357
357
  function isWorkflow(target) {
358
- return target instanceof chunkJSG6FULW_cjs.Workflow;
358
+ return target instanceof chunkDO4JBKMT_cjs.Workflow;
359
359
  }
360
360
  function isWorkflowScorerConfig(scorers) {
361
361
  return typeof scorers === "object" && !Array.isArray(scorers) && ("workflow" in scorers || "steps" in scorers || "trajectory" in scorers && !("agent" in scorers));
@@ -460,7 +460,7 @@ async function executeWorkflow(target, item, targetOptions) {
460
460
  return {
461
461
  traceId: workflowResult.traceId,
462
462
  spanId: workflowResult.spanId,
463
- entityType: chunkYRDMMXBW_cjs.EntityType.WORKFLOW_RUN,
463
+ entityType: chunk47RKHZIP_cjs.EntityType.WORKFLOW_RUN,
464
464
  scoringData: {
465
465
  input: item.input,
466
466
  output: workflowResult.status === "success" ? workflowResult.result : void 0,
@@ -472,7 +472,7 @@ async function executeWorkflow(target, item, targetOptions) {
472
472
  async function executeAgent(agent, item, targetOptions) {
473
473
  const observabilityContext = chunkB4OOPFD3_cjs.resolveObservabilityContext(item);
474
474
  const model = await agent.getModel();
475
- if (chunkJSG6FULW_cjs.isSupportedLanguageModel(model)) {
475
+ if (chunkDO4JBKMT_cjs.isSupportedLanguageModel(model)) {
476
476
  const { structuredOutput, ...restOptions } = targetOptions ?? {};
477
477
  const baseOptions = {
478
478
  ...restOptions,
@@ -484,7 +484,7 @@ async function executeAgent(agent, item, targetOptions) {
484
484
  const result = structuredOutput ? await agent.generate(item.input, { ...baseOptions, structuredOutput }) : await agent.generate(item.input, baseOptions);
485
485
  return {
486
486
  ...result,
487
- entityType: chunkYRDMMXBW_cjs.EntityType.AGENT
487
+ entityType: chunk47RKHZIP_cjs.EntityType.AGENT
488
488
  };
489
489
  } else {
490
490
  const result = await agent.generateLegacy(item.input, {
@@ -495,7 +495,7 @@ async function executeAgent(agent, item, targetOptions) {
495
495
  });
496
496
  return {
497
497
  ...result,
498
- entityType: chunkYRDMMXBW_cjs.EntityType.AGENT
498
+ entityType: chunk47RKHZIP_cjs.EntityType.AGENT
499
499
  };
500
500
  }
501
501
  }
@@ -506,7 +506,7 @@ async function extractTrajectoryFromTraceStore(storage, traceId, spanId) {
506
506
  if (!observabilityStore) return void 0;
507
507
  const trace = await observabilityStore.getTrace({ traceId });
508
508
  if (!trace?.spans?.length) return void 0;
509
- return chunkJAAICSXU_cjs.extractTrajectoryFromTrace(trace.spans, spanId);
509
+ return chunkJF3WPB75_cjs.extractTrajectoryFromTrace(trace.spans, spanId);
510
510
  } catch {
511
511
  return void 0;
512
512
  }
@@ -587,7 +587,7 @@ async function runScorers(scorers, targetResult, item, storage) {
587
587
  const trajectoryScorerResults = {};
588
588
  const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);
589
589
  const rawOutput = targetResult.scoringData?.output;
590
- const trajectory = traceTrajectory ?? (rawOutput ? chunkJAAICSXU_cjs.extractTrajectory(rawOutput) : { steps: [] });
590
+ const trajectory = traceTrajectory ?? (rawOutput ? chunkJF3WPB75_cjs.extractTrajectory(rawOutput) : { steps: [] });
591
591
  for (const scorer of scorers.trajectory) {
592
592
  try {
593
593
  const score = await scorer.run({
@@ -659,7 +659,7 @@ async function runScorers(scorers, targetResult, item, storage) {
659
659
  requestContext: item.requestContext,
660
660
  scoreSource: "experiment",
661
661
  targetScope: "span",
662
- targetEntityType: chunkYRDMMXBW_cjs.EntityType.WORKFLOW_STEP,
662
+ targetEntityType: chunk47RKHZIP_cjs.EntityType.WORKFLOW_STEP,
663
663
  targetTraceId
664
664
  });
665
665
  stepResults[scorer.id] = score;
@@ -695,7 +695,7 @@ async function runScorers(scorers, targetResult, item, storage) {
695
695
  if (!trajectory) {
696
696
  const stepResults = targetResult.scoringData?.stepResults;
697
697
  const stepExecutionPath = targetResult.scoringData?.stepExecutionPath;
698
- trajectory = stepResults ? chunkJAAICSXU_cjs.extractWorkflowTrajectory(stepResults, stepExecutionPath) : { steps: [] };
698
+ trajectory = stepResults ? chunkJF3WPB75_cjs.extractWorkflowTrajectory(stepResults, stepExecutionPath) : { steps: [] };
699
699
  }
700
700
  for (const scorer of scorers.trajectory) {
701
701
  try {
@@ -707,7 +707,7 @@ async function runScorers(scorers, targetResult, item, storage) {
707
707
  requestContext: item.requestContext,
708
708
  scoreSource: "experiment",
709
709
  targetScope: "trajectory",
710
- targetEntityType: chunkYRDMMXBW_cjs.EntityType.TRAJECTORY,
710
+ targetEntityType: chunk47RKHZIP_cjs.EntityType.TRAJECTORY,
711
711
  targetTraceId,
712
712
  targetSpanId: targetResult.spanId
713
713
  });
@@ -898,5 +898,5 @@ async function saveSingleScore({
898
898
  exports.createOnScorerHook = createOnScorerHook;
899
899
  exports.runEvals = runEvals;
900
900
  exports.validateAndSaveScore = validateAndSaveScore;
901
- //# sourceMappingURL=chunk-DBN5B2LH.cjs.map
902
- //# sourceMappingURL=chunk-DBN5B2LH.cjs.map
901
+ //# sourceMappingURL=chunk-UENWRQLR.cjs.map
902
+ //# sourceMappingURL=chunk-UENWRQLR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mastra/hooks.ts","../src/evals/run/scorerAccumulator.ts","../src/evals/run/index.ts"],"names":["EntityType","MastraError","pMap","saveScorePayloadSchema","Workflow","resolveObservabilityContext","isSupportedLanguageModel","extractTrajectoryFromTrace","extractTrajectory","extractWorkflowTrajectory"],"mappings":"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","file":"chunk-DBN5B2LH.cjs","sourcesContent":["import pMap from 'p-map';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport { saveScorePayloadSchema } from '../evals';\nimport type { ScoringHookInput } from '../evals/types';\nimport type { Mastra } from '../mastra';\nimport { EntityType } from '../observability';\nimport type { MastraStorage } from '../storage';\n\nfunction toScorerTargetEntityType(entityType: string): EntityType | undefined {\n switch (entityType) {\n case 'AGENT':\n return EntityType.AGENT;\n case 'WORKFLOW':\n return EntityType.WORKFLOW_RUN;\n default:\n return undefined;\n }\n}\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n const storage = mastra.getStorage();\n\n if (!storage) {\n mastra.getLogger()?.warn('Storage not found, skipping score validation and saving');\n return;\n }\n\n const entityId = hookData.entity.id as string;\n const entityType = hookData.entityType;\n const scorer = hookData.scorer;\n const scorerId = scorer.id as string;\n\n if (!scorerId) {\n mastra.getLogger()?.warn('Scorer ID not found, skipping score validation and saving');\n return;\n }\n\n try {\n const scorerToUse = await findScorer(mastra, entityId, entityType, scorerId);\n\n if (!scorerToUse) {\n throw new MastraError({\n id: 'MASTRA_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ID ${scorerId} not found`,\n });\n }\n\n let input = hookData.input;\n let output = hookData.output;\n\n const { structuredOutput, ...rest } = hookData;\n\n const currentSpan = hookData.tracingContext?.currentSpan;\n const traceId = currentSpan?.isValid ? currentSpan.traceId : undefined;\n const spanId = currentSpan?.isValid ? currentSpan.id : undefined;\n const targetCorrelationContext = currentSpan?.isValid ? currentSpan.getCorrelationContext?.() : undefined;\n const targetMetadata = currentSpan?.isValid && currentSpan.metadata ? { ...currentSpan.metadata } : undefined;\n const runResult = (await scorerToUse.scorer.run({\n ...rest,\n input,\n output,\n scoreSource: 'live',\n targetScope: 'span',\n targetEntityType: toScorerTargetEntityType(entityType),\n targetTraceId: traceId,\n targetSpanId: spanId,\n targetCorrelationContext,\n targetMetadata,\n } as any)) as Record<string, unknown>;\n\n const payload = {\n ...rest,\n ...runResult,\n entityId,\n scorerId: scorerId,\n spanId,\n traceId,\n scorer: {\n ...rest.scorer,\n hasJudge: !!scorerToUse.scorer.judge,\n },\n metadata: {\n structuredOutput: !!structuredOutput,\n },\n };\n // Legacy score-store emission. This path is being deprecated.\n await validateAndSaveScore(storage, payload);\n\n if (currentSpan && spanId && traceId) {\n await pMap(\n currentSpan.observabilityInstance.getExporters(),\n async exporter => {\n if (exporter.addScoreToTrace) {\n try {\n await exporter.addScoreToTrace({\n traceId: traceId,\n spanId: spanId,\n score: runResult.score as number,\n reason: runResult.reason as string,\n scorerName: scorerToUse.scorer.id,\n metadata: {\n ...(currentSpan.metadata ?? {}),\n },\n });\n } catch (error) {\n // Log error but don't fail the hook if exporter fails\n mastra.getLogger()?.error(`Failed to add score to trace via exporter: ${error}`);\n }\n }\n },\n { concurrency: 3 },\n );\n }\n } catch (error) {\n const mastraError = new MastraError(\n {\n id: 'MASTRA_SCORER_FAILED_TO_RUN_HOOK',\n domain: ErrorDomain.SCORER,\n category: ErrorCategory.USER,\n details: {\n scorerId,\n entityId,\n entityType,\n },\n },\n error,\n );\n\n mastra.getLogger()?.trackException(mastraError);\n }\n };\n}\n\n/**\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore()`.\n */\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n const scoresStore = await storage.getStore('scores');\n if (!scoresStore) {\n throw new MastraError({\n id: 'MASTRA_SCORES_STORAGE_NOT_AVAILABLE',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: 'Scores storage domain is not available',\n });\n }\n const payloadToSave = saveScorePayloadSchema.parse(payload);\n await scoresStore.saveScore(payloadToSave);\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n let scorerToUse;\n if (entityType === 'AGENT') {\n // Try code-defined agents first\n try {\n const agent = mastra.getAgentById(entityId);\n const scorers = await agent.listScorers();\n for (const [_, scorer] of Object.entries(scorers)) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n } catch {\n // Agent not found in code-defined agents, try stored agents via editor\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(entityId)) ?? null;\n if (storedAgent) {\n const scorers = await storedAgent.listScorers();\n for (const [_, scorer] of Object.entries(scorers) as [string, any][]) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n }\n } catch {\n // Stored agent also not found, will fall back to mastra-registered scorer\n }\n }\n } else if (entityType === 'WORKFLOW') {\n const scorers = await mastra.getWorkflowById(entityId).listScorers();\n for (const [_, scorer] of Object.entries(scorers)) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n }\n\n // Fallback to mastra-registered scorer\n if (!scorerToUse) {\n const mastraRegisteredScorer = mastra.getScorerById(scorerId);\n scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n }\n\n return scorerToUse;\n}\n","export class ScoreAccumulator {\n private flatScores: Record<string, number[]> = {};\n private workflowScores: Record<string, number[]> = {};\n private stepScores: Record<string, Record<string, number[]>> = {};\n private agentScores: Record<string, number[]> = {};\n private trajectoryScores: Record<string, number[]> = {};\n\n addScores(scorerResults: Record<string, any>) {\n const isWorkflowScores = 'steps' in scorerResults || 'workflow' in scorerResults;\n const isAgentScores = 'agent' in scorerResults;\n const hasTrajectory = 'trajectory' in scorerResults;\n\n // Routing priority: workflow configs take precedence (they may also include\n // trajectory scores), then agent configs (agent or trajectory-only), then\n // flat scores for simple scorer arrays.\n if (isWorkflowScores) {\n this.addWorkflowScores(scorerResults);\n } else if (isAgentScores || hasTrajectory) {\n this.addAgentScores(scorerResults);\n } else {\n this.addFlatScores(scorerResults);\n }\n }\n\n private addFlatScores(scorerResults: Record<string, any>) {\n for (const [scorerName, result] of Object.entries(scorerResults)) {\n if (!this.flatScores[scorerName]) {\n this.flatScores[scorerName] = [];\n }\n this.flatScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n private addWorkflowScores(scorerResults: Record<string, any>) {\n if ('workflow' in scorerResults && scorerResults.workflow) {\n for (const [scorerName, result] of Object.entries(scorerResults.workflow)) {\n if (!this.workflowScores[scorerName]) {\n this.workflowScores[scorerName] = [];\n }\n this.workflowScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n if ('steps' in scorerResults && scorerResults.steps) {\n for (const [stepId, stepResults] of Object.entries(scorerResults.steps)) {\n if (!this.stepScores[stepId]) {\n this.stepScores[stepId] = {};\n }\n for (const [scorerName, result] of Object.entries(stepResults as Record<string, any>)) {\n if (!this.stepScores[stepId][scorerName]) {\n this.stepScores[stepId][scorerName] = [];\n }\n this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n // Trajectory scores can come from workflow scorer configs too\n if ('trajectory' in scorerResults && scorerResults.trajectory) {\n for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n if (!this.trajectoryScores[scorerName]) {\n this.trajectoryScores[scorerName] = [];\n }\n this.trajectoryScores[scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n private addAgentScores(scorerResults: Record<string, any>) {\n if ('agent' in scorerResults && scorerResults.agent) {\n for (const [scorerName, result] of Object.entries(scorerResults.agent)) {\n if (!this.agentScores[scorerName]) {\n this.agentScores[scorerName] = [];\n }\n this.agentScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n if ('trajectory' in scorerResults && scorerResults.trajectory) {\n for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n if (!this.trajectoryScores[scorerName]) {\n this.trajectoryScores[scorerName] = [];\n }\n this.trajectoryScores[scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n addStepScores(stepScorerResults: Record<string, Record<string, any>>) {\n for (const [stepId, stepResults] of Object.entries(stepScorerResults)) {\n if (!this.stepScores[stepId]) {\n this.stepScores[stepId] = {};\n }\n for (const [scorerName, result] of Object.entries(stepResults)) {\n if (!this.stepScores[stepId][scorerName]) {\n this.stepScores[stepId][scorerName] = [];\n }\n this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n getAverageScores(): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const [scorerName, scoreArray] of Object.entries(this.flatScores)) {\n result[scorerName] = this.getAverageScore(scoreArray);\n }\n\n // Add workflow scores\n if (Object.keys(this.workflowScores).length > 0) {\n result.workflow = {};\n for (const [scorerName, scoreArray] of Object.entries(this.workflowScores)) {\n result.workflow[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n if (Object.keys(this.stepScores).length > 0) {\n result.steps = {};\n for (const [stepId, stepScorers] of Object.entries(this.stepScores)) {\n result.steps[stepId] = {};\n for (const [scorerName, scoreArray] of Object.entries(stepScorers)) {\n result.steps[stepId][scorerName] = this.getAverageScore(scoreArray);\n }\n }\n }\n\n // Add agent scores\n if (Object.keys(this.agentScores).length > 0) {\n result.agent = {};\n for (const [scorerName, scoreArray] of Object.entries(this.agentScores)) {\n result.agent[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n // Add trajectory scores\n if (Object.keys(this.trajectoryScores).length > 0) {\n result.trajectory = {};\n for (const [scorerName, scoreArray] of Object.entries(this.trajectoryScores)) {\n result.trajectory[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n return result;\n }\n\n private getAverageScore(scoreArray: number[]): number {\n if (scoreArray.length > 0) {\n return scoreArray.reduce((a, b) => a + b, 0) / scoreArray.length;\n } else {\n return 0;\n }\n }\n}\n","import type { CoreMessage } from '@internal/ai-sdk-v4';\nimport type { Agent, AgentExecutionOptions, AiMessageType, UIMessageWithMetadata } from '../../agent';\nimport { isSupportedLanguageModel } from '../../agent';\nimport { MastraError } from '../../error';\nimport { validateAndSaveScore } from '../../mastra/hooks';\nimport type { ObservabilityContext } from '../../observability';\nimport { EntityType, resolveObservabilityContext } from '../../observability';\nimport type { RequestContext } from '../../request-context';\nimport type { MastraCompositeStore } from '../../storage';\nimport { Workflow } from '../../workflows';\nimport type { AnyWorkflow, WorkflowResult, WorkflowRunStartOptions, StepResult } from '../../workflows';\nimport type { MastraScorer } from '../base';\nimport { extractTrajectory, extractTrajectoryFromTrace, extractWorkflowTrajectory } from '../types';\nimport { ScoreAccumulator } from './scorerAccumulator';\n\ntype WorkflowRunOptions = WorkflowRunStartOptions & {\n initialState?: any;\n};\n\ntype RunEvalsDataItem<TTarget = unknown> = {\n input: TTarget extends Workflow<any, any>\n ? any\n : TTarget extends Agent\n ? string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[]\n : unknown;\n groundTruth?: any;\n expectedTrajectory?: any;\n requestContext?: RequestContext;\n startOptions?: WorkflowRunOptions;\n} & Partial<ObservabilityContext>;\n\nexport type WorkflowScorerConfig = {\n /** Scorers that evaluate the overall workflow input/output */\n workflow?: MastraScorer<any, any, any, any>[];\n /** Scorers that evaluate individual workflow steps by step ID */\n steps?: Record<string, MastraScorer<any, any, any, any>[]>;\n /** Scorers that evaluate the workflow's step execution trajectory */\n trajectory?: MastraScorer<any, any, any, any>[];\n};\n\nexport type AgentScorerConfig = {\n /** Scorers that evaluate the full agent input/output */\n agent?: MastraScorer<any, any, any, any>[];\n /** Scorers that evaluate the agent's tool call trajectory */\n trajectory?: MastraScorer<any, any, any, any>[];\n};\n\ntype RunEvalsResult = {\n scores: Record<string, any>;\n summary: {\n totalItems: number;\n };\n};\n\n// Agent with scorers array\nexport function runEvals<TAgent extends Agent>(config: {\n data: RunEvalsDataItem<TAgent>[];\n scorers: MastraScorer<any, any, any, any>[];\n target: TAgent;\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TAgent>;\n targetResult: Awaited<ReturnType<Agent['generate']>>;\n scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with scorers array\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n data: RunEvalsDataItem<TWorkflow>[];\n scorers: MastraScorer<any, any, any, any>[];\n target: TWorkflow;\n targetOptions?: WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TWorkflow>;\n targetResult: WorkflowResult<any, any, any, any>;\n scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with workflow configuration\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n data: RunEvalsDataItem<TWorkflow>[];\n scorers: WorkflowScorerConfig;\n target: TWorkflow;\n targetOptions?: WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TWorkflow>;\n targetResult: WorkflowResult<any, any, any, any>;\n scorerResults: {\n workflow?: Record<string, any>;\n steps?: Record<string, Record<string, any>>;\n trajectory?: Record<string, any>;\n };\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Agent with agent scorer configuration (agent-level + trajectory scorers)\nexport function runEvals<TAgent extends Agent>(config: {\n data: RunEvalsDataItem<TAgent>[];\n scorers: AgentScorerConfig;\n target: TAgent;\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TAgent>;\n targetResult: Awaited<ReturnType<Agent['generate']>>;\n scorerResults: {\n agent?: Record<string, any>;\n trajectory?: Record<string, any>;\n };\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\nexport async function runEvals(config: {\n data: RunEvalsDataItem<any>[];\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig;\n target: Agent | Workflow;\n targetOptions?:\n | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n | WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<any>;\n targetResult: any;\n scorerResults: any;\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult> {\n const { data, scorers, target, targetOptions, onItemComplete, concurrency = 1 } = config;\n\n validateEvalsInputs(data, scorers, target);\n\n let totalItems = 0;\n const scoreAccumulator = new ScoreAccumulator();\n\n // Get storage from target's Mastra instance if available\n // Agent uses getMastraInstance(), Workflow uses .mastra getter\n const mastra = (target as any).getMastraInstance?.() || (target as any).mastra;\n const storage = mastra?.getStorage();\n\n const pMap = (await import('p-map')).default;\n await pMap(\n data,\n async (item: RunEvalsDataItem<any>) => {\n const targetResult = await executeTarget(target, item, targetOptions);\n const scorerResults = await runScorers(scorers, targetResult, item, storage);\n scoreAccumulator.addScores(scorerResults);\n\n // Save scores to storage if available\n if (storage) {\n await saveScoresToStorage({\n storage,\n scorerResults,\n target,\n item,\n mastra,\n });\n }\n\n if (onItemComplete) {\n await onItemComplete({\n item,\n targetResult: targetResult as any,\n scorerResults: scorerResults as any,\n });\n }\n\n totalItems++;\n },\n { concurrency },\n );\n\n return {\n scores: scoreAccumulator.getAverageScores(),\n summary: {\n totalItems,\n },\n };\n}\n\nfunction isWorkflow(target: Agent | Workflow): target is Workflow {\n return target instanceof Workflow;\n}\n\nfunction isWorkflowScorerConfig(scorers: any): scorers is WorkflowScorerConfig {\n return (\n typeof scorers === 'object' &&\n !Array.isArray(scorers) &&\n ('workflow' in scorers || 'steps' in scorers || ('trajectory' in scorers && !('agent' in scorers)))\n );\n}\n\nfunction isAgentScorerConfig(scorers: any): scorers is AgentScorerConfig {\n return (\n typeof scorers === 'object' &&\n !Array.isArray(scorers) &&\n ('agent' in scorers || ('trajectory' in scorers && !('workflow' in scorers) && !('steps' in scorers)))\n );\n}\n\nfunction validateEvalsInputs(\n data: RunEvalsDataItem<any>[],\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n target: Agent | Workflow,\n): void {\n if (data.length === 0) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED',\n category: 'USER',\n text: 'Failed to run experiment: Data array is empty',\n });\n }\n\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n if (!item || typeof item !== 'object' || !('input' in item)) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'INVALID_DATA_ITEM',\n category: 'USER',\n text: `Invalid data item at index ${i}: must have 'input' properties`,\n });\n }\n }\n\n // Validate scorers\n if (Array.isArray(scorers)) {\n if (scorers.length === 0) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one scorer must be provided',\n });\n }\n } else if (isWorkflow(target) && isWorkflowScorerConfig(scorers)) {\n const hasScorers =\n (scorers.workflow && scorers.workflow.length > 0) ||\n (scorers.steps && Object.keys(scorers.steps).length > 0) ||\n (scorers.trajectory && scorers.trajectory.length > 0);\n\n if (!hasScorers) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one workflow, step, or trajectory scorer must be provided',\n });\n }\n } else if (!isWorkflow(target) && isAgentScorerConfig(scorers)) {\n const hasScorers =\n (scorers.agent && scorers.agent.length > 0) || (scorers.trajectory && scorers.trajectory.length > 0);\n\n if (!hasScorers) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one agent or trajectory scorer must be provided',\n });\n }\n } else if (!isWorkflow(target) && !Array.isArray(scorers) && !isAgentScorerConfig(scorers)) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'INVALID_AGENT_SCORERS',\n category: 'USER',\n text: 'Agent scorers must be an array of scorers or an AgentScorerConfig',\n });\n }\n}\n\nasync function executeTarget(\n target: Agent | Workflow,\n item: RunEvalsDataItem<any>,\n targetOptions?:\n | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n | WorkflowRunOptions,\n) {\n try {\n if (isWorkflow(target)) {\n return await executeWorkflow(target, item, targetOptions as WorkflowRunOptions);\n } else {\n return await executeAgent(\n target,\n item,\n targetOptions as Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n );\n }\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_TARGET_FAILED_TO_GENERATE_RESULT',\n category: 'USER',\n text: 'Failed to run experiment: Error generating result from target',\n details: {\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n}\n\nasync function executeWorkflow(target: Workflow, item: RunEvalsDataItem<any>, targetOptions?: WorkflowRunOptions) {\n const observabilityContext = resolveObservabilityContext(item);\n const run = await target.createRun({ disableScorers: true });\n const workflowResult = await run.start({\n ...targetOptions,\n ...item.startOptions,\n inputData: item.input,\n requestContext: item.requestContext,\n ...observabilityContext,\n });\n\n return {\n traceId: workflowResult.traceId,\n spanId: workflowResult.spanId,\n entityType: EntityType.WORKFLOW_RUN,\n scoringData: {\n input: item.input,\n output: workflowResult.status === 'success' ? workflowResult.result : undefined,\n stepResults: workflowResult.steps as Record<string, StepResult<any, any, any, any>>,\n stepExecutionPath: workflowResult.stepExecutionPath,\n },\n };\n}\n\nasync function executeAgent(\n agent: Agent,\n item: RunEvalsDataItem<any>,\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n) {\n const observabilityContext = resolveObservabilityContext(item);\n const model = await agent.getModel();\n if (isSupportedLanguageModel(model)) {\n const { structuredOutput, ...restOptions } = targetOptions ?? {};\n const baseOptions = {\n ...restOptions,\n ...observabilityContext,\n scorers: {},\n returnScorerData: true,\n requestContext: item.requestContext,\n };\n const result = structuredOutput\n ? await agent.generate(item.input, { ...baseOptions, structuredOutput })\n : await agent.generate(item.input, baseOptions);\n\n return {\n ...result,\n entityType: EntityType.AGENT,\n };\n } else {\n const result = await agent.generateLegacy(item.input, {\n scorers: {},\n returnScorerData: true,\n requestContext: item.requestContext,\n ...observabilityContext,\n });\n return {\n ...result,\n entityType: EntityType.AGENT,\n };\n }\n}\n\n/**\n * Attempts to extract a hierarchical trajectory from observability traces.\n * Falls back to undefined if storage is not available or trace cannot be fetched.\n */\nasync function extractTrajectoryFromTraceStore(\n storage: MastraCompositeStore | undefined,\n traceId: string | undefined,\n spanId: string | undefined,\n): Promise<ReturnType<typeof extractTrajectoryFromTrace> | undefined> {\n if (!storage || !traceId) return undefined;\n\n try {\n const observabilityStore = await storage.getStore('observability');\n if (!observabilityStore) return undefined;\n\n const trace = await observabilityStore.getTrace({ traceId });\n if (!trace?.spans?.length) return undefined;\n\n return extractTrajectoryFromTrace(trace.spans, spanId);\n } catch {\n // Trace-based extraction is best-effort; fall back to existing extraction\n return undefined;\n }\n}\n\n//TODO: Ideally this would run on trace data instead of targetResult data\nasync function runScorers(\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n targetResult: any,\n item: RunEvalsDataItem<any>,\n storage?: MastraCompositeStore,\n): Promise<Record<string, any>> {\n const scorerResults: Record<string, any> = {};\n const targetTraceId = targetResult.traceId;\n const targetEntityType: EntityType = targetResult.entityType;\n\n if (Array.isArray(scorers)) {\n for (const scorer of scorers) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: targetResult.scoringData?.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n\n scorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n } else if (isAgentScorerConfig(scorers)) {\n // Handle agent scorer config (agent-level + trajectory scorers)\n if (scorers.agent) {\n const agentScorerResults: Record<string, any> = {};\n for (const scorer of scorers.agent) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: targetResult.scoringData?.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n agentScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running agent scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(agentScorerResults).length > 0) {\n scorerResults.agent = agentScorerResults;\n }\n }\n\n if (scorers.trajectory) {\n const trajectoryScorerResults: Record<string, any> = {};\n\n // Prefer hierarchical trace-based extraction when storage + traceId are available\n const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n // Fall back to flat extraction from MastraDBMessage[] tool invocations\n const rawOutput = targetResult.scoringData?.output;\n const trajectory = traceTrajectory ?? (rawOutput ? extractTrajectory(rawOutput) : { steps: [] });\n\n for (const scorer of scorers.trajectory) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: trajectory,\n groundTruth: item.groundTruth,\n expectedTrajectory: item.expectedTrajectory,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'trajectory',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n trajectoryScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_TRAJECTORY',\n category: 'USER',\n text: `Failed to run experiment: Error running trajectory scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(trajectoryScorerResults).length > 0) {\n scorerResults.trajectory = trajectoryScorerResults;\n }\n }\n } else {\n // Handle workflow scorer config\n if (scorers.workflow) {\n const workflowScorerResults: Record<string, any> = {};\n for (const scorer of scorers.workflow) {\n const score = await scorer.run({\n input: targetResult.scoringData.input,\n output: targetResult.scoringData.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n workflowScorerResults[scorer.id] = score;\n }\n if (Object.keys(workflowScorerResults).length > 0) {\n scorerResults.workflow = workflowScorerResults;\n }\n }\n\n if (scorers.steps) {\n const stepScorerResults: Record<string, any> = {};\n for (const [stepId, stepScorers] of Object.entries(scorers.steps)) {\n const stepResult = targetResult.scoringData.stepResults?.[stepId];\n // TODO : Ideally this would run on the trace.WORKFLOW_STEP span...\n // then we could directly add the score to that span\n if (stepResult?.status === 'success' && stepResult.output !== undefined) {\n const stepResults: Record<string, any> = {};\n for (const scorer of stepScorers) {\n try {\n const score = await scorer.run({\n input: stepResult.payload !== undefined ? stepResult.payload : targetResult.scoringData.input,\n output: stepResult.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType: EntityType.WORKFLOW_STEP,\n targetTraceId,\n });\n stepResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_STEP_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running scorer ${scorer.id} on step ${stepId}`,\n details: {\n scorerId: scorer.id,\n stepId,\n },\n },\n error,\n );\n }\n }\n if (Object.keys(stepResults).length > 0) {\n stepScorerResults[stepId] = stepResults;\n }\n }\n }\n if (Object.keys(stepScorerResults).length > 0) {\n scorerResults.steps = stepScorerResults;\n }\n }\n\n if (scorers.trajectory) {\n const trajectoryScorerResults: Record<string, any> = {};\n\n // Prefer hierarchical trace-based extraction when storage + traceId are available\n const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n // Fall back to flat extraction from step results\n let trajectory = traceTrajectory;\n if (!trajectory) {\n const stepResults = targetResult.scoringData?.stepResults;\n const stepExecutionPath = targetResult.scoringData?.stepExecutionPath;\n trajectory = stepResults ? extractWorkflowTrajectory(stepResults, stepExecutionPath) : { steps: [] };\n }\n\n for (const scorer of scorers.trajectory) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: trajectory,\n groundTruth: item.groundTruth,\n expectedTrajectory: item.expectedTrajectory,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'trajectory',\n targetEntityType: EntityType.TRAJECTORY,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n trajectoryScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_WORKFLOW_TRAJECTORY',\n category: 'USER',\n text: `Failed to run experiment: Error running workflow trajectory scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(trajectoryScorerResults).length > 0) {\n scorerResults.trajectory = trajectoryScorerResults;\n }\n }\n }\n\n return scorerResults;\n}\n\n/**\n * Saves scorer results to storage when running evaluations.\n * This makes scores visible in Studio's observability section.\n *\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore().\n */\nasync function saveScoresToStorage({\n storage,\n scorerResults,\n target,\n item,\n mastra,\n}: {\n storage: any;\n scorerResults: Record<string, any>;\n target: Agent | Workflow;\n item: RunEvalsDataItem<any>;\n mastra: any;\n}): Promise<void> {\n const entityId = target.id;\n const entityType = isWorkflow(target) ? 'WORKFLOW' : 'AGENT';\n\n const isStructuredWorkflowResult = 'workflow' in scorerResults || 'steps' in scorerResults;\n const isStructuredAgentResult = 'agent' in scorerResults || 'trajectory' in scorerResults;\n\n if (!isStructuredWorkflowResult && !isStructuredAgentResult) {\n // Handle flat scorer results (simple array of scorers for agents or workflows)\n for (const [scorerId, scoreResult] of Object.entries(scorerResults)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType,\n mastra,\n target,\n item,\n });\n }\n }\n } else if (isStructuredAgentResult) {\n // Handle agent scorer config with agent-level and trajectory scorers\n if (scorerResults.agent) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.agent)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'AGENT',\n mastra,\n target,\n item,\n });\n }\n }\n }\n\n if (scorerResults.trajectory) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.trajectory)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'TRAJECTORY',\n mastra,\n target,\n item,\n });\n }\n }\n }\n } else {\n // Handle workflow scorer config with workflow and step scorers\n if (scorerResults.workflow) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.workflow)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'WORKFLOW',\n mastra,\n target,\n item,\n });\n }\n }\n }\n\n if (scorerResults.steps) {\n for (const [stepId, stepScorers] of Object.entries(scorerResults.steps)) {\n for (const [scorerId, scoreResult] of Object.entries(stepScorers as Record<string, any>)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId: stepId,\n entityType: 'STEP',\n mastra,\n target,\n item,\n });\n }\n }\n }\n }\n }\n}\n\n/**\n * Saves a single scorer result to storage\n */\nasync function saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType,\n mastra,\n target,\n item,\n}: {\n storage: any;\n scoreResult: any;\n scorerId: string;\n entityId: string;\n entityType: string;\n mastra: any;\n target: Agent | Workflow;\n item: RunEvalsDataItem<any>;\n}): Promise<void> {\n try {\n // Get scorer information\n let scorer = mastra?.getScorerById?.(scorerId);\n\n if (!scorer) {\n // Try to get from target's scorers\n const targetScorers = await (target as any).listScorers?.();\n if (targetScorers) {\n for (const [_, scorerEntry] of Object.entries(targetScorers)) {\n if ((scorerEntry as any).scorer?.id === scorerId) {\n scorer = (scorerEntry as any).scorer;\n break;\n }\n }\n }\n }\n\n // Extract tracing context if available\n let traceId: string | undefined;\n let spanId: string | undefined;\n if (item.tracingContext?.currentSpan && item.tracingContext.currentSpan.isValid) {\n spanId = item.tracingContext.currentSpan.id;\n traceId = item.tracingContext.currentSpan.traceId;\n }\n\n // Build additional context with groundTruth if available\n const additionalContext: Record<string, any> = {};\n if (item.groundTruth !== undefined) {\n additionalContext.groundTruth = item.groundTruth;\n }\n\n const payload = {\n ...scoreResult,\n scorerId,\n entityId,\n entityType,\n source: 'TEST' as const,\n scorer: {\n id: scorer?.id || scorerId,\n name: scorer?.name || scorerId,\n description: scorer?.description || '',\n type: scorer?.type || 'unknown',\n ...(scorer ? { hasJudge: !!scorer.judge } : {}),\n },\n entity: {\n id: target.id,\n name: (target as any).name || target.id,\n },\n // Include requestContext from item\n requestContext: item.requestContext ? Object.fromEntries(item.requestContext.entries()) : undefined,\n // Include additionalContext with groundTruth\n additionalContext: Object.keys(additionalContext).length > 0 ? additionalContext : undefined,\n // Include tracing information\n traceId,\n spanId,\n };\n\n // Legacy score-store emission. This path is being deprecated.\n await validateAndSaveScore(storage, payload);\n } catch (error) {\n // Log error but don't fail the evaluation\n mastra?.getLogger?.()?.warn?.(`Failed to save score for scorer ${scorerId}:`, error);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/mastra/hooks.ts","../src/evals/run/scorerAccumulator.ts","../src/evals/run/index.ts"],"names":["EntityType","MastraError","pMap","saveScorePayloadSchema","Workflow","resolveObservabilityContext","isSupportedLanguageModel","extractTrajectoryFromTrace","extractTrajectory","extractWorkflowTrajectory"],"mappings":";;;;;;;;;;;;;AAQA,SAAS,yBAAyB,UAAA,EAA4C;AAC5E,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,OAAA;AACH,MAAA,OAAOA,4BAAA,CAAW,KAAA;AAAA,IACpB,KAAK,UAAA;AACH,MAAA,OAAOA,4BAAA,CAAW,YAAA;AAAA,IACpB;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEO,SAAS,mBAAmB,MAAA,EAAgB;AACjD,EAAA,OAAO,OAAO,QAAA,KAA+B;AAC3C,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAElC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA,CAAK,yDAAyD,CAAA;AAClF,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,SAAS,MAAA,CAAO,EAAA;AACjC,IAAA,MAAM,aAAa,QAAA,CAAS,UAAA;AAC5B,IAAA,MAAM,SAAS,QAAA,CAAS,MAAA;AACxB,IAAA,MAAM,WAAW,MAAA,CAAO,EAAA;AAExB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA,CAAK,2DAA2D,CAAA;AACpF,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,cAAc,MAAM,UAAA,CAAW,MAAA,EAAQ,QAAA,EAAU,YAAY,QAAQ,CAAA;AAE3E,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAIC,6BAAA,CAAY;AAAA,UACpB,EAAA,EAAI,yBAAA;AAAA,UACJ,MAAA,EAAA,QAAA;AAAA,UACA,QAAA,EAAA,MAAA;AAAA,UACA,IAAA,EAAM,kBAAkB,QAAQ,CAAA,UAAA;AAAA,SACjC,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,QAAQ,QAAA,CAAS,KAAA;AACrB,MAAA,IAAI,SAAS,QAAA,CAAS,MAAA;AAEtB,MAAA,MAAM,EAAE,gBAAA,EAAkB,GAAG,IAAA,EAAK,GAAI,QAAA;AAEtC,MAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAgB,WAAA;AAC7C,MAAA,MAAM,OAAA,GAAU,WAAA,EAAa,OAAA,GAAU,WAAA,CAAY,OAAA,GAAU,MAAA;AAC7D,MAAA,MAAM,MAAA,GAAS,WAAA,EAAa,OAAA,GAAU,WAAA,CAAY,EAAA,GAAK,MAAA;AACvD,MAAA,MAAM,wBAAA,GAA2B,WAAA,EAAa,OAAA,GAAU,WAAA,CAAY,yBAAwB,GAAI,MAAA;AAChG,MAAA,MAAM,cAAA,GAAiB,aAAa,OAAA,IAAW,WAAA,CAAY,WAAW,EAAE,GAAG,WAAA,CAAY,QAAA,EAAS,GAAI,MAAA;AACpG,MAAA,MAAM,SAAA,GAAa,MAAM,WAAA,CAAY,MAAA,CAAO,GAAA,CAAI;AAAA,QAC9C,GAAG,IAAA;AAAA,QACH,KAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA,EAAa,MAAA;AAAA,QACb,WAAA,EAAa,MAAA;AAAA,QACb,gBAAA,EAAkB,yBAAyB,UAAU,CAAA;AAAA,QACrD,aAAA,EAAe,OAAA;AAAA,QACf,YAAA,EAAc,MAAA;AAAA,QACd,wBAAA;AAAA,QACA;AAAA,OACM,CAAA;AAER,MAAA,MAAM,OAAA,GAAU;AAAA,QACd,GAAG,IAAA;AAAA,QACH,GAAG,SAAA;AAAA,QACH,QAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,GAAG,IAAA,CAAK,MAAA;AAAA,UACR,QAAA,EAAU,CAAC,CAAC,WAAA,CAAY,MAAA,CAAO;AAAA,SACjC;AAAA,QACA,QAAA,EAAU;AAAA,UACR,gBAAA,EAAkB,CAAC,CAAC;AAAA;AACtB,OACF;AAEA,MAAA,MAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AAE3C,MAAA,IAAI,WAAA,IAAe,UAAU,OAAA,EAAS;AACpC,QAAA,MAAMC,qBAAA;AAAA,UACJ,WAAA,CAAY,sBAAsB,YAAA,EAAa;AAAA,UAC/C,OAAM,QAAA,KAAY;AAChB,YAAA,IAAI,SAAS,eAAA,EAAiB;AAC5B,cAAA,IAAI;AACF,gBAAA,MAAM,SAAS,eAAA,CAAgB;AAAA,kBAC7B,OAAA;AAAA,kBACA,MAAA;AAAA,kBACA,OAAO,SAAA,CAAU,KAAA;AAAA,kBACjB,QAAQ,SAAA,CAAU,MAAA;AAAA,kBAClB,UAAA,EAAY,YAAY,MAAA,CAAO,EAAA;AAAA,kBAC/B,QAAA,EAAU;AAAA,oBACR,GAAI,WAAA,CAAY,QAAA,IAAY;AAAC;AAC/B,iBACD,CAAA;AAAA,cACH,SAAS,KAAA,EAAO;AAEd,gBAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,CAAA,2CAAA,EAA8C,KAAK,CAAA,CAAE,CAAA;AAAA,cACjF;AAAA,YACF;AAAA,UACF,CAAA;AAAA,UACA,EAAE,aAAa,CAAA;AAAE,SACnB;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,cAAc,IAAID,6BAAA;AAAA,QACtB;AAAA,UACE,EAAA,EAAI,kCAAA;AAAA,UACJ,MAAA,EAAA,QAAA;AAAA,UACA,QAAA,EAAA,MAAA;AAAA,UACA,OAAA,EAAS;AAAA,YACP,QAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA,QACA;AAAA,OACF;AAEA,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,cAAA,CAAe,WAAW,CAAA;AAAA,IAChD;AAAA,EACF,CAAA;AACF;AAKA,eAAsB,oBAAA,CAAqB,SAAwB,OAAA,EAAkB;AACnF,EAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AACnD,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,MACpB,EAAA,EAAI,qCAAA;AAAA,MACJ,MAAA,EAAA,SAAA;AAAA,MACA,QAAA,EAAA,QAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AACA,EAAA,MAAM,aAAA,GAAgBE,wCAAA,CAAuB,KAAA,CAAM,OAAO,CAAA;AAC1D,EAAA,MAAM,WAAA,CAAY,UAAU,aAAa,CAAA;AAC3C;AAEA,eAAe,UAAA,CAAW,MAAA,EAAgB,QAAA,EAAkB,UAAA,EAAoB,QAAA,EAAkB;AAChG,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,eAAe,OAAA,EAAS;AAE1B,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,YAAA,CAAa,QAAQ,CAAA;AAC1C,MAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,WAAA,EAAY;AACxC,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACjD,QAAA,IAAI,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,QAAA,EAAU;AACjC,UAAA,WAAA,GAAc,MAAA;AACd,UAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA,CAAA,MAAQ;AAEN,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAe,MAAM,MAAA,CAAO,SAAA,IAAa,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,IAAM,IAAA;AAC3E,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,MAAM,OAAA,GAAU,MAAM,WAAA,CAAY,WAAA,EAAY;AAC9C,UAAA,KAAA,MAAW,CAAC,CAAA,EAAG,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAsB;AACpE,YAAA,IAAI,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,QAAA,EAAU;AACjC,cAAA,WAAA,GAAc,MAAA;AACd,cAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,eAAe,UAAA,EAAY;AACpC,IAAA,MAAM,UAAU,MAAM,MAAA,CAAO,eAAA,CAAgB,QAAQ,EAAE,WAAA,EAAY;AACnE,IAAA,KAAA,MAAW,CAAC,CAAA,EAAG,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACjD,MAAA,IAAI,MAAA,CAAO,MAAA,CAAO,EAAA,KAAO,QAAA,EAAU;AACjC,QAAA,WAAA,GAAc,MAAA;AACd,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,sBAAA,GAAyB,MAAA,CAAO,aAAA,CAAc,QAAQ,CAAA;AAC5D,IAAA,WAAA,GAAc,sBAAA,GAAyB,EAAE,MAAA,EAAQ,sBAAA,EAAuB,GAAI,MAAA;AAAA,EAC9E;AAEA,EAAA,OAAO,WAAA;AACT;;;ACxMO,IAAM,mBAAN,MAAuB;AAAA,EACpB,aAAuC,EAAC;AAAA,EACxC,iBAA2C,EAAC;AAAA,EAC5C,aAAuD,EAAC;AAAA,EACxD,cAAwC,EAAC;AAAA,EACzC,mBAA6C,EAAC;AAAA,EAEtD,UAAU,aAAA,EAAoC;AAC5C,IAAA,MAAM,gBAAA,GAAmB,OAAA,IAAW,aAAA,IAAiB,UAAA,IAAc,aAAA;AACnE,IAAA,MAAM,gBAAgB,OAAA,IAAW,aAAA;AACjC,IAAA,MAAM,gBAAgB,YAAA,IAAgB,aAAA;AAKtC,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,IAAA,CAAK,kBAAkB,aAAa,CAAA;AAAA,IACtC,CAAA,MAAA,IAAW,iBAAiB,aAAA,EAAe;AACzC,MAAA,IAAA,CAAK,eAAe,aAAa,CAAA;AAAA,IACnC,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,cAAc,aAAa,CAAA;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,cAAc,aAAA,EAAoC;AACxD,IAAA,KAAA,MAAW,CAAC,UAAA,EAAY,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG;AAChE,MAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,EAAG;AAChC,QAAA,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,GAAI,EAAC;AAAA,MACjC;AACA,MAAA,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,IACtE;AAAA,EACF;AAAA,EAEQ,kBAAkB,aAAA,EAAoC;AAC5D,IAAA,IAAI,UAAA,IAAc,aAAA,IAAiB,aAAA,CAAc,QAAA,EAAU;AACzD,MAAA,KAAA,MAAW,CAAC,YAAY,MAAM,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,QAAQ,CAAA,EAAG;AACzE,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,GAAI,EAAC;AAAA,QACrC;AACA,QAAA,IAAA,CAAK,cAAA,CAAe,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,MAC1E;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,IAAW,aAAA,IAAiB,aAAA,CAAc,KAAA,EAAO;AACnD,MAAA,KAAA,MAAW,CAAC,QAAQ,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,KAAK,CAAA,EAAG;AACvE,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG;AAC5B,UAAA,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,GAAI,EAAC;AAAA,QAC7B;AACA,QAAA,KAAA,MAAW,CAAC,UAAA,EAAY,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAkC,CAAA,EAAG;AACrF,UAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,CAAE,UAAU,CAAA,EAAG;AACxC,YAAA,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,CAAE,UAAU,IAAI,EAAC;AAAA,UACzC;AACA,UAAA,IAAA,CAAK,WAAW,MAAM,CAAA,CAAE,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAGA,IAAA,IAAI,YAAA,IAAgB,aAAA,IAAiB,aAAA,CAAc,UAAA,EAAY;AAC7D,MAAA,KAAA,MAAW,CAAC,YAAY,MAAM,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,UAAU,CAAA,EAAG;AAC3E,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,EAAG;AACtC,UAAA,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,GAAI,EAAC;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,eAAe,aAAA,EAAoC;AACzD,IAAA,IAAI,OAAA,IAAW,aAAA,IAAiB,aAAA,CAAc,KAAA,EAAO;AACnD,MAAA,KAAA,MAAW,CAAC,YAAY,MAAM,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,KAAK,CAAA,EAAG;AACtE,QAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA,EAAG;AACjC,UAAA,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA,GAAI,EAAC;AAAA,QAClC;AACA,QAAA,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,MACvE;AAAA,IACF;AAEA,IAAA,IAAI,YAAA,IAAgB,aAAA,IAAiB,aAAA,CAAc,UAAA,EAAY;AAC7D,MAAA,KAAA,MAAW,CAAC,YAAY,MAAM,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,UAAU,CAAA,EAAG;AAC3E,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,EAAG;AACtC,UAAA,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,GAAI,EAAC;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,gBAAA,CAAiB,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,cAAc,iBAAA,EAAwD;AACpE,IAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AACrE,MAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG;AAC5B,QAAA,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,GAAI,EAAC;AAAA,MAC7B;AACA,MAAA,KAAA,MAAW,CAAC,UAAA,EAAY,MAAM,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9D,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,CAAE,UAAU,CAAA,EAAG;AACxC,UAAA,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,CAAE,UAAU,IAAI,EAAC;AAAA,QACzC;AACA,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA,CAAE,UAAU,CAAA,CAAE,IAAA,CAAM,OAA6B,KAAK,CAAA;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAA,GAAwC;AACtC,IAAA,MAAM,SAA8B,EAAC;AAErC,IAAA,KAAA,MAAW,CAAC,YAAY,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA,EAAG;AACtE,MAAA,MAAA,CAAO,UAAU,CAAA,GAAI,IAAA,CAAK,eAAA,CAAgB,UAAU,CAAA;AAAA,IACtD;AAGA,IAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,cAAc,CAAA,CAAE,SAAS,CAAA,EAAG;AAC/C,MAAA,MAAA,CAAO,WAAW,EAAC;AACnB,MAAA,KAAA,MAAW,CAAC,YAAY,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,cAAc,CAAA,EAAG;AAC1E,QAAA,MAAA,CAAO,QAAA,CAAS,UAAU,CAAA,GAAI,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA,MAC/D;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,UAAU,CAAA,CAAE,SAAS,CAAA,EAAG;AAC3C,MAAA,MAAA,CAAO,QAAQ,EAAC;AAChB,MAAA,KAAA,MAAW,CAAC,QAAQ,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA,EAAG;AACnE,QAAA,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,GAAI,EAAC;AACxB,QAAA,KAAA,MAAW,CAAC,UAAA,EAAY,UAAU,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAClE,UAAA,MAAA,CAAO,MAAM,MAAM,CAAA,CAAE,UAAU,CAAA,GAAI,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAGA,IAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AAC5C,MAAA,MAAA,CAAO,QAAQ,EAAC;AAChB,MAAA,KAAA,MAAW,CAAC,YAAY,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,WAAW,CAAA,EAAG;AACvE,QAAA,MAAA,CAAO,KAAA,CAAM,UAAU,CAAA,GAAI,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA,MAC5D;AAAA,IACF;AAGA,IAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,gBAAgB,CAAA,CAAE,SAAS,CAAA,EAAG;AACjD,MAAA,MAAA,CAAO,aAAa,EAAC;AACrB,MAAA,KAAA,MAAW,CAAC,YAAY,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,gBAAgB,CAAA,EAAG;AAC5E,QAAA,MAAA,CAAO,UAAA,CAAW,UAAU,CAAA,GAAI,IAAA,CAAK,gBAAgB,UAAU,CAAA;AAAA,MACjE;AAAA,IACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEQ,gBAAgB,UAAA,EAA8B;AACpD,IAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,MAAA,OAAO,UAAA,CAAW,OAAO,CAAC,CAAA,EAAG,MAAM,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA,GAAI,UAAA,CAAW,MAAA;AAAA,IAC5D,CAAA,MAAO;AACL,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AACF,CAAA;;;ACpCA,eAAsB,SAAS,MAAA,EAaH;AAC1B,EAAA,MAAM,EAAE,MAAM,OAAA,EAAS,MAAA,EAAQ,eAAe,cAAA,EAAgB,WAAA,GAAc,GAAE,GAAI,MAAA;AAElF,EAAA,mBAAA,CAAoB,IAAA,EAAM,SAAS,MAAM,CAAA;AAEzC,EAAA,IAAI,UAAA,GAAa,CAAA;AACjB,EAAA,MAAM,gBAAA,GAAmB,IAAI,gBAAA,EAAiB;AAI9C,EAAA,MAAM,MAAA,GAAU,MAAA,CAAe,iBAAA,IAAoB,IAAM,MAAA,CAAe,MAAA;AACxE,EAAA,MAAM,OAAA,GAAU,QAAQ,UAAA,EAAW;AAEnC,EAAA,MAAMD,KAAAA,GAAAA,CAAQ,MAAM,OAAO,OAAO,CAAA,EAAG,OAAA;AACrC,EAAA,MAAMA,KAAAA;AAAA,IACJ,IAAA;AAAA,IACA,OAAO,IAAA,KAAgC;AACrC,MAAA,MAAM,YAAA,GAAe,MAAM,aAAA,CAAc,MAAA,EAAQ,MAAM,aAAa,CAAA;AACpE,MAAA,MAAM,gBAAgB,MAAM,UAAA,CAAW,OAAA,EAAS,YAAA,EAAc,MAAM,OAAO,CAAA;AAC3E,MAAA,gBAAA,CAAiB,UAAU,aAAa,CAAA;AAGxC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,MAAM,mBAAA,CAAoB;AAAA,UACxB,OAAA;AAAA,UACA,aAAA;AAAA,UACA,MAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAEA,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,MAAM,cAAA,CAAe;AAAA,UACnB,IAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAEA,MAAA,UAAA,EAAA;AAAA,IACF,CAAA;AAAA,IACA,EAAE,WAAA;AAAY,GAChB;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,iBAAiB,gBAAA,EAAiB;AAAA,IAC1C,OAAA,EAAS;AAAA,MACP;AAAA;AACF,GACF;AACF;AAEA,SAAS,WAAW,MAAA,EAA8C;AAChE,EAAA,OAAO,MAAA,YAAkBE,0BAAA;AAC3B;AAEA,SAAS,uBAAuB,OAAA,EAA+C;AAC7E,EAAA,OACE,OAAO,OAAA,KAAY,QAAA,IACnB,CAAC,MAAM,OAAA,CAAQ,OAAO,CAAA,KACrB,UAAA,IAAc,WAAW,OAAA,IAAW,OAAA,IAAY,YAAA,IAAgB,OAAA,IAAW,EAAE,OAAA,IAAW,OAAA,CAAA,CAAA;AAE7F;AAEA,SAAS,oBAAoB,OAAA,EAA4C;AACvE,EAAA,OACE,OAAO,OAAA,KAAY,QAAA,IACnB,CAAC,KAAA,CAAM,QAAQ,OAAO,CAAA,KACrB,OAAA,IAAW,OAAA,IAAY,gBAAgB,OAAA,IAAW,EAAE,UAAA,IAAc,OAAA,CAAA,IAAY,EAAE,OAAA,IAAW,OAAA,CAAA,CAAA;AAEhG;AAEA,SAAS,mBAAA,CACP,IAAA,EACA,OAAA,EACA,MAAA,EACM;AACN,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,MAAM,IAAIH,6BAAA,CAAY;AAAA,MACpB,MAAA,EAAQ,QAAA;AAAA,MACR,EAAA,EAAI,wCAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAEA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,IAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,SAAS,QAAA,IAAY,EAAE,WAAW,IAAA,CAAA,EAAO;AAC3D,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,QAAA;AAAA,QACR,EAAA,EAAI,mBAAA;AAAA,QACJ,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM,8BAA8B,CAAC,CAAA,8BAAA;AAAA,OACtC,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,QAAA;AAAA,QACR,EAAA,EAAI,qBAAA;AAAA,QACJ,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAAA,EACF,WAAW,UAAA,CAAW,MAAM,CAAA,IAAK,sBAAA,CAAuB,OAAO,CAAA,EAAG;AAChE,IAAA,MAAM,UAAA,GACH,QAAQ,QAAA,IAAY,OAAA,CAAQ,SAAS,MAAA,GAAS,CAAA,IAC9C,QAAQ,KAAA,IAAS,MAAA,CAAO,KAAK,OAAA,CAAQ,KAAK,EAAE,MAAA,GAAS,CAAA,IACrD,QAAQ,UAAA,IAAc,OAAA,CAAQ,WAAW,MAAA,GAAS,CAAA;AAErD,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,QAAA;AAAA,QACR,EAAA,EAAI,qBAAA;AAAA,QACJ,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAAA,EACF,WAAW,CAAC,UAAA,CAAW,MAAM,CAAA,IAAK,mBAAA,CAAoB,OAAO,CAAA,EAAG;AAC9D,IAAA,MAAM,UAAA,GACH,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,KAAA,CAAM,MAAA,GAAS,CAAA,IAAO,OAAA,CAAQ,UAAA,IAAc,OAAA,CAAQ,UAAA,CAAW,MAAA,GAAS,CAAA;AAEpG,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,QAAA;AAAA,QACR,EAAA,EAAI,qBAAA;AAAA,QACJ,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH;AAAA,EACF,CAAA,MAAA,IAAW,CAAC,UAAA,CAAW,MAAM,CAAA,IAAK,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAK,CAAC,mBAAA,CAAoB,OAAO,CAAA,EAAG;AAC1F,IAAA,MAAM,IAAIA,6BAAA,CAAY;AAAA,MACpB,MAAA,EAAQ,QAAA;AAAA,MACR,EAAA,EAAI,uBAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AACF;AAEA,eAAe,aAAA,CACb,MAAA,EACA,IAAA,EACA,aAAA,EAGA;AACA,EAAA,IAAI;AACF,IAAA,IAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AACtB,MAAA,OAAO,MAAM,eAAA,CAAgB,MAAA,EAAQ,IAAA,EAAM,aAAmC,CAAA;AAAA,IAChF,CAAA,MAAO;AACL,MAAA,OAAO,MAAM,YAAA;AAAA,QACX,MAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAIA,6BAAA;AAAA,MACR;AAAA,QACE,MAAA,EAAQ,QAAA;AAAA,QACR,EAAA,EAAI,iDAAA;AAAA,QACJ,QAAA,EAAU,MAAA;AAAA,QACV,IAAA,EAAM,+DAAA;AAAA,QACN,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,OACF;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF;AAEA,eAAe,eAAA,CAAgB,MAAA,EAAkB,IAAA,EAA6B,aAAA,EAAoC;AAChH,EAAA,MAAM,oBAAA,GAAuBI,8CAA4B,IAAI,CAAA;AAC7D,EAAA,MAAM,MAAM,MAAM,MAAA,CAAO,UAAU,EAAE,cAAA,EAAgB,MAAM,CAAA;AAC3D,EAAA,MAAM,cAAA,GAAiB,MAAM,GAAA,CAAI,KAAA,CAAM;AAAA,IACrC,GAAG,aAAA;AAAA,IACH,GAAG,IAAA,CAAK,YAAA;AAAA,IACR,WAAW,IAAA,CAAK,KAAA;AAAA,IAChB,gBAAgB,IAAA,CAAK,cAAA;AAAA,IACrB,GAAG;AAAA,GACJ,CAAA;AAED,EAAA,OAAO;AAAA,IACL,SAAS,cAAA,CAAe,OAAA;AAAA,IACxB,QAAQ,cAAA,CAAe,MAAA;AAAA,IACvB,YAAYL,4BAAA,CAAW,YAAA;AAAA,IACvB,WAAA,EAAa;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAA,EAAQ,cAAA,CAAe,MAAA,KAAW,SAAA,GAAY,eAAe,MAAA,GAAS,MAAA;AAAA,MACtE,aAAa,cAAA,CAAe,KAAA;AAAA,MAC5B,mBAAmB,cAAA,CAAe;AAAA;AACpC,GACF;AACF;AAEA,eAAe,YAAA,CACb,KAAA,EACA,IAAA,EACA,aAAA,EACA;AACA,EAAA,MAAM,oBAAA,GAAuBK,8CAA4B,IAAI,CAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,CAAM,QAAA,EAAS;AACnC,EAAA,IAAIC,0CAAA,CAAyB,KAAK,CAAA,EAAG;AACnC,IAAA,MAAM,EAAE,gBAAA,EAAkB,GAAG,WAAA,EAAY,GAAI,iBAAiB,EAAC;AAC/D,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,GAAG,WAAA;AAAA,MACH,GAAG,oBAAA;AAAA,MACH,SAAS,EAAC;AAAA,MACV,gBAAA,EAAkB,IAAA;AAAA,MAClB,gBAAgB,IAAA,CAAK;AAAA,KACvB;AACA,IAAA,MAAM,SAAS,gBAAA,GACX,MAAM,MAAM,QAAA,CAAS,IAAA,CAAK,OAAO,EAAE,GAAG,WAAA,EAAa,gBAAA,EAAkB,CAAA,GACrE,MAAM,MAAM,QAAA,CAAS,IAAA,CAAK,OAAO,WAAW,CAAA;AAEhD,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,YAAYN,4BAAA,CAAW;AAAA,KACzB;AAAA,EACF,CAAA,MAAO;AACL,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,cAAA,CAAe,KAAK,KAAA,EAAO;AAAA,MACpD,SAAS,EAAC;AAAA,MACV,gBAAA,EAAkB,IAAA;AAAA,MAClB,gBAAgB,IAAA,CAAK,cAAA;AAAA,MACrB,GAAG;AAAA,KACJ,CAAA;AACD,IAAA,OAAO;AAAA,MACL,GAAG,MAAA;AAAA,MACH,YAAYA,4BAAA,CAAW;AAAA,KACzB;AAAA,EACF;AACF;AAMA,eAAe,+BAAA,CACb,OAAA,EACA,OAAA,EACA,MAAA,EACoE;AACpE,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,EAAS,OAAO,MAAA;AAEjC,EAAA,IAAI;AACF,IAAA,MAAM,kBAAA,GAAqB,MAAM,OAAA,CAAQ,QAAA,CAAS,eAAe,CAAA;AACjE,IAAA,IAAI,CAAC,oBAAoB,OAAO,MAAA;AAEhC,IAAA,MAAM,QAAQ,MAAM,kBAAA,CAAmB,QAAA,CAAS,EAAE,SAAS,CAAA;AAC3D,IAAA,IAAI,CAAC,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,OAAO,MAAA;AAElC,IAAA,OAAOO,4CAAA,CAA2B,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AAAA,EACvD,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAGA,eAAe,UAAA,CACb,OAAA,EACA,YAAA,EACA,IAAA,EACA,OAAA,EAC8B;AAC9B,EAAA,MAAM,gBAAqC,EAAC;AAC5C,EAAA,MAAM,gBAAgB,YAAA,CAAa,OAAA;AACnC,EAAA,MAAM,mBAA+B,YAAA,CAAa,UAAA;AAElD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC1B,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,UAC7B,KAAA,EAAO,aAAa,WAAA,EAAa,KAAA;AAAA,UACjC,MAAA,EAAQ,aAAa,WAAA,EAAa,MAAA;AAAA,UAClC,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,gBAAgB,IAAA,CAAK,cAAA;AAAA,UACrB,WAAA,EAAa,YAAA;AAAA,UACb,WAAA,EAAa,MAAA;AAAA,UACb,gBAAA;AAAA,UACA,aAAA;AAAA,UACA,cAAc,YAAA,CAAa;AAAA,SAC5B,CAAA;AAED,QAAA,aAAA,CAAc,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,MAC7B,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,IAAIN,6BAAA;AAAA,UACR;AAAA,YACE,MAAA,EAAQ,QAAA;AAAA,YACR,EAAA,EAAI,8CAAA;AAAA,YACJ,QAAA,EAAU,MAAA;AAAA,YACV,IAAA,EAAM,CAAA,+CAAA,EAAkD,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,YACjE,OAAA,EAAS;AAAA,cACP,UAAU,MAAA,CAAO,EAAA;AAAA,cACjB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,WACF;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,mBAAA,CAAoB,OAAO,CAAA,EAAG;AAEvC,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,MAAM,qBAA0C,EAAC;AACjD,MAAA,KAAA,MAAW,MAAA,IAAU,QAAQ,KAAA,EAAO;AAClC,QAAA,IAAI;AACF,UAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,YAC7B,KAAA,EAAO,aAAa,WAAA,EAAa,KAAA;AAAA,YACjC,MAAA,EAAQ,aAAa,WAAA,EAAa,MAAA;AAAA,YAClC,aAAa,IAAA,CAAK,WAAA;AAAA,YAClB,gBAAgB,IAAA,CAAK,cAAA;AAAA,YACrB,WAAA,EAAa,YAAA;AAAA,YACb,WAAA,EAAa,MAAA;AAAA,YACb,gBAAA;AAAA,YACA,aAAA;AAAA,YACA,cAAc,YAAA,CAAa;AAAA,WAC5B,CAAA;AACD,UAAA,kBAAA,CAAmB,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,QAClC,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAIA,6BAAA;AAAA,YACR;AAAA,cACE,MAAA,EAAQ,QAAA;AAAA,cACR,EAAA,EAAI,8CAAA;AAAA,cACJ,QAAA,EAAU,MAAA;AAAA,cACV,IAAA,EAAM,CAAA,qDAAA,EAAwD,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,cACvE,OAAA,EAAS;AAAA,gBACP,UAAU,MAAA,CAAO,EAAA;AAAA,gBACjB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,aACF;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,kBAAkB,CAAA,CAAE,SAAS,CAAA,EAAG;AAC9C,QAAA,aAAA,CAAc,KAAA,GAAQ,kBAAA;AAAA,MACxB;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,MAAA,MAAM,0BAA+C,EAAC;AAGtD,MAAA,MAAM,kBAAkB,MAAM,+BAAA,CAAgC,SAAS,YAAA,CAAa,OAAA,EAAS,aAAa,MAAM,CAAA;AAGhH,MAAA,MAAM,SAAA,GAAY,aAAa,WAAA,EAAa,MAAA;AAC5C,MAAA,MAAM,UAAA,GAAa,oBAAoB,SAAA,GAAYO,mCAAA,CAAkB,SAAS,CAAA,GAAI,EAAE,KAAA,EAAO,EAAC,EAAE,CAAA;AAE9F,MAAA,KAAA,MAAW,MAAA,IAAU,QAAQ,UAAA,EAAY;AACvC,QAAA,IAAI;AACF,UAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,YAC7B,KAAA,EAAO,aAAa,WAAA,EAAa,KAAA;AAAA,YACjC,MAAA,EAAQ,UAAA;AAAA,YACR,aAAa,IAAA,CAAK,WAAA;AAAA,YAClB,oBAAoB,IAAA,CAAK,kBAAA;AAAA,YACzB,gBAAgB,IAAA,CAAK,cAAA;AAAA,YACrB,WAAA,EAAa,YAAA;AAAA,YACb,WAAA,EAAa,YAAA;AAAA,YACb,gBAAA;AAAA,YACA,aAAA;AAAA,YACA,cAAc,YAAA,CAAa;AAAA,WAC5B,CAAA;AACD,UAAA,uBAAA,CAAwB,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,QACvC,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAIP,6BAAA;AAAA,YACR;AAAA,cACE,MAAA,EAAQ,QAAA;AAAA,cACR,EAAA,EAAI,kDAAA;AAAA,cACJ,QAAA,EAAU,MAAA;AAAA,cACV,IAAA,EAAM,CAAA,0DAAA,EAA6D,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,cAC5E,OAAA,EAAS;AAAA,gBACP,UAAU,MAAA,CAAO,EAAA;AAAA,gBACjB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,aACF;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,uBAAuB,CAAA,CAAE,SAAS,CAAA,EAAG;AACnD,QAAA,aAAA,CAAc,UAAA,GAAa,uBAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,MAAA,MAAM,wBAA6C,EAAC;AACpD,MAAA,KAAA,MAAW,MAAA,IAAU,QAAQ,QAAA,EAAU;AACrC,QAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,UAC7B,KAAA,EAAO,aAAa,WAAA,CAAY,KAAA;AAAA,UAChC,MAAA,EAAQ,aAAa,WAAA,CAAY,MAAA;AAAA,UACjC,aAAa,IAAA,CAAK,WAAA;AAAA,UAClB,gBAAgB,IAAA,CAAK,cAAA;AAAA,UACrB,WAAA,EAAa,YAAA;AAAA,UACb,WAAA,EAAa,MAAA;AAAA,UACb,gBAAA;AAAA,UACA,aAAA;AAAA,UACA,cAAc,YAAA,CAAa;AAAA,SAC5B,CAAA;AACD,QAAA,qBAAA,CAAsB,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,MACrC;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,qBAAqB,CAAA,CAAE,SAAS,CAAA,EAAG;AACjD,QAAA,aAAA,CAAc,QAAA,GAAW,qBAAA;AAAA,MAC3B;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,KAAA,EAAO;AACjB,MAAA,MAAM,oBAAyC,EAAC;AAChD,MAAA,KAAA,MAAW,CAAC,QAAQ,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,EAAG;AACjE,QAAA,MAAM,UAAA,GAAa,YAAA,CAAa,WAAA,CAAY,WAAA,GAAc,MAAM,CAAA;AAGhE,QAAA,IAAI,UAAA,EAAY,MAAA,KAAW,SAAA,IAAa,UAAA,CAAW,WAAW,MAAA,EAAW;AACvE,UAAA,MAAM,cAAmC,EAAC;AAC1C,UAAA,KAAA,MAAW,UAAU,WAAA,EAAa;AAChC,YAAA,IAAI;AACF,cAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,gBAC7B,OAAO,UAAA,CAAW,OAAA,KAAY,SAAY,UAAA,CAAW,OAAA,GAAU,aAAa,WAAA,CAAY,KAAA;AAAA,gBACxF,QAAQ,UAAA,CAAW,MAAA;AAAA,gBACnB,aAAa,IAAA,CAAK,WAAA;AAAA,gBAClB,gBAAgB,IAAA,CAAK,cAAA;AAAA,gBACrB,WAAA,EAAa,YAAA;AAAA,gBACb,WAAA,EAAa,MAAA;AAAA,gBACb,kBAAkBD,4BAAA,CAAW,aAAA;AAAA,gBAC7B;AAAA,eACD,CAAA;AACD,cAAA,WAAA,CAAY,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,YAC3B,SAAS,KAAA,EAAO;AACd,cAAA,MAAM,IAAIC,6BAAA;AAAA,gBACR;AAAA,kBACE,MAAA,EAAQ,QAAA;AAAA,kBACR,EAAA,EAAI,mDAAA;AAAA,kBACJ,QAAA,EAAU,MAAA;AAAA,kBACV,IAAA,EAAM,CAAA,+CAAA,EAAkD,MAAA,CAAO,EAAE,YAAY,MAAM,CAAA,CAAA;AAAA,kBACnF,OAAA,EAAS;AAAA,oBACP,UAAU,MAAA,CAAO,EAAA;AAAA,oBACjB;AAAA;AACF,iBACF;AAAA,gBACA;AAAA,eACF;AAAA,YACF;AAAA,UACF;AACA,UAAA,IAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AACvC,YAAA,iBAAA,CAAkB,MAAM,CAAA,GAAI,WAAA;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA,CAAE,SAAS,CAAA,EAAG;AAC7C,QAAA,aAAA,CAAc,KAAA,GAAQ,iBAAA;AAAA,MACxB;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,MAAA,MAAM,0BAA+C,EAAC;AAGtD,MAAA,MAAM,kBAAkB,MAAM,+BAAA,CAAgC,SAAS,YAAA,CAAa,OAAA,EAAS,aAAa,MAAM,CAAA;AAGhH,MAAA,IAAI,UAAA,GAAa,eAAA;AACjB,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,MAAM,WAAA,GAAc,aAAa,WAAA,EAAa,WAAA;AAC9C,QAAA,MAAM,iBAAA,GAAoB,aAAa,WAAA,EAAa,iBAAA;AACpD,QAAA,UAAA,GAAa,WAAA,GAAcQ,4CAA0B,WAAA,EAAa,iBAAiB,IAAI,EAAE,KAAA,EAAO,EAAC,EAAE;AAAA,MACrG;AAEA,MAAA,KAAA,MAAW,MAAA,IAAU,QAAQ,UAAA,EAAY;AACvC,QAAA,IAAI;AACF,UAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,GAAA,CAAI;AAAA,YAC7B,KAAA,EAAO,aAAa,WAAA,EAAa,KAAA;AAAA,YACjC,MAAA,EAAQ,UAAA;AAAA,YACR,aAAa,IAAA,CAAK,WAAA;AAAA,YAClB,oBAAoB,IAAA,CAAK,kBAAA;AAAA,YACzB,gBAAgB,IAAA,CAAK,cAAA;AAAA,YACrB,WAAA,EAAa,YAAA;AAAA,YACb,WAAA,EAAa,YAAA;AAAA,YACb,kBAAkBT,4BAAA,CAAW,UAAA;AAAA,YAC7B,aAAA;AAAA,YACA,cAAc,YAAA,CAAa;AAAA,WAC5B,CAAA;AACD,UAAA,uBAAA,CAAwB,MAAA,CAAO,EAAE,CAAA,GAAI,KAAA;AAAA,QACvC,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAIC,6BAAA;AAAA,YACR;AAAA,cACE,MAAA,EAAQ,QAAA;AAAA,cACR,EAAA,EAAI,2DAAA;AAAA,cACJ,QAAA,EAAU,MAAA;AAAA,cACV,IAAA,EAAM,CAAA,mEAAA,EAAsE,MAAA,CAAO,EAAE,CAAA,CAAA;AAAA,cACrF,OAAA,EAAS;AAAA,gBACP,UAAU,MAAA,CAAO,EAAA;AAAA,gBACjB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA;AAC3B,aACF;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,uBAAuB,CAAA,CAAE,SAAS,CAAA,EAAG;AACnD,QAAA,aAAA,CAAc,UAAA,GAAa,uBAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,aAAA;AACT;AAQA,eAAe,mBAAA,CAAoB;AAAA,EACjC,OAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAMkB;AAChB,EAAA,MAAM,WAAW,MAAA,CAAO,EAAA;AACxB,EAAA,MAAM,UAAA,GAAa,UAAA,CAAW,MAAM,CAAA,GAAI,UAAA,GAAa,OAAA;AAErD,EAAA,MAAM,0BAAA,GAA6B,UAAA,IAAc,aAAA,IAAiB,OAAA,IAAW,aAAA;AAC7E,EAAA,MAAM,uBAAA,GAA0B,OAAA,IAAW,aAAA,IAAiB,YAAA,IAAgB,aAAA;AAE5E,EAAA,IAAI,CAAC,0BAAA,IAA8B,CAAC,uBAAA,EAAyB;AAE3D,IAAA,KAAA,MAAW,CAAC,QAAA,EAAU,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG;AACnE,MAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAW,WAAA,EAAa;AAC5E,QAAA,MAAM,eAAA,CAAgB;AAAA,UACpB,OAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,QAAA;AAAA,UACA,UAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF,WAAW,uBAAA,EAAyB;AAElC,IAAA,IAAI,cAAc,KAAA,EAAO;AACvB,MAAA,KAAA,MAAW,CAAC,UAAU,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,KAAK,CAAA,EAAG;AACzE,QAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAW,WAAA,EAAa;AAC5E,UAAA,MAAM,eAAA,CAAgB;AAAA,YACpB,OAAA;AAAA,YACA,WAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY,OAAA;AAAA,YACZ,MAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,cAAc,UAAA,EAAY;AAC5B,MAAA,KAAA,MAAW,CAAC,UAAU,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,UAAU,CAAA,EAAG;AAC9E,QAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAW,WAAA,EAAa;AAC5E,UAAA,MAAM,eAAA,CAAgB;AAAA,YACpB,OAAA;AAAA,YACA,WAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY,YAAA;AAAA,YACZ,MAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,KAAA,MAAW,CAAC,UAAU,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,QAAQ,CAAA,EAAG;AAC5E,QAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAW,WAAA,EAAa;AAC5E,UAAA,MAAM,eAAA,CAAgB;AAAA,YACpB,OAAA;AAAA,YACA,WAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY,UAAA;AAAA,YACZ,MAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,cAAc,KAAA,EAAO;AACvB,MAAA,KAAA,MAAW,CAAC,QAAQ,WAAW,CAAA,IAAK,OAAO,OAAA,CAAQ,aAAA,CAAc,KAAK,CAAA,EAAG;AACvE,QAAA,KAAA,MAAW,CAAC,QAAA,EAAU,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAkC,CAAA,EAAG;AACxF,UAAA,IAAI,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,IAAY,WAAW,WAAA,EAAa;AAC5E,YAAA,MAAM,eAAA,CAAgB;AAAA,cACpB,OAAA;AAAA,cACA,WAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA,EAAU,MAAA;AAAA,cACV,UAAA,EAAY,MAAA;AAAA,cACZ,MAAA;AAAA,cACA,MAAA;AAAA,cACA;AAAA,aACD,CAAA;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAKA,eAAe,eAAA,CAAgB;AAAA,EAC7B,OAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EASkB;AAChB,EAAA,IAAI;AAEF,IAAA,IAAI,MAAA,GAAS,MAAA,EAAQ,aAAA,GAAgB,QAAQ,CAAA;AAE7C,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEX,MAAA,MAAM,aAAA,GAAgB,MAAO,MAAA,CAAe,WAAA,IAAc;AAC1D,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,KAAA,MAAW,CAAC,CAAA,EAAG,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG;AAC5D,UAAA,IAAK,WAAA,CAAoB,MAAA,EAAQ,EAAA,KAAO,QAAA,EAAU;AAChD,YAAA,MAAA,GAAU,WAAA,CAAoB,MAAA;AAC9B,YAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,MAAA;AACJ,IAAA,IAAI,KAAK,cAAA,EAAgB,WAAA,IAAe,IAAA,CAAK,cAAA,CAAe,YAAY,OAAA,EAAS;AAC/E,MAAA,MAAA,GAAS,IAAA,CAAK,eAAe,WAAA,CAAY,EAAA;AACzC,MAAA,OAAA,GAAU,IAAA,CAAK,eAAe,WAAA,CAAY,OAAA;AAAA,IAC5C;AAGA,IAAA,MAAM,oBAAyC,EAAC;AAChD,IAAA,IAAI,IAAA,CAAK,gBAAgB,MAAA,EAAW;AAClC,MAAA,iBAAA,CAAkB,cAAc,IAAA,CAAK,WAAA;AAAA,IACvC;AAEA,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,GAAG,WAAA;AAAA,MACH,QAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,EAAA,EAAI,QAAQ,EAAA,IAAM,QAAA;AAAA,QAClB,IAAA,EAAM,QAAQ,IAAA,IAAQ,QAAA;AAAA,QACtB,WAAA,EAAa,QAAQ,WAAA,IAAe,EAAA;AAAA,QACpC,IAAA,EAAM,QAAQ,IAAA,IAAQ,SAAA;AAAA,QACtB,GAAI,SAAS,EAAE,QAAA,EAAU,CAAC,CAAC,MAAA,CAAO,KAAA,EAAM,GAAI;AAAC,OAC/C;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAI,MAAA,CAAO,EAAA;AAAA,QACX,IAAA,EAAO,MAAA,CAAe,IAAA,IAAQ,MAAA,CAAO;AAAA,OACvC;AAAA;AAAA,MAEA,cAAA,EAAgB,KAAK,cAAA,GAAiB,MAAA,CAAO,YAAY,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS,CAAA,GAAI,MAAA;AAAA;AAAA,MAE1F,mBAAmB,MAAA,CAAO,IAAA,CAAK,iBAAiB,CAAA,CAAE,MAAA,GAAS,IAAI,iBAAA,GAAoB,MAAA;AAAA;AAAA,MAEnF,OAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,MAAM,oBAAA,CAAqB,SAAS,OAAO,CAAA;AAAA,EAC7C,SAAS,KAAA,EAAO;AAEd,IAAA,MAAA,EAAQ,aAAY,EAAG,IAAA,GAAO,CAAA,gCAAA,EAAmC,QAAQ,KAAK,KAAK,CAAA;AAAA,EACrF;AACF","file":"chunk-UENWRQLR.cjs","sourcesContent":["import pMap from 'p-map';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport { saveScorePayloadSchema } from '../evals';\nimport type { ScoringHookInput } from '../evals/types';\nimport type { Mastra } from '../mastra';\nimport { EntityType } from '../observability';\nimport type { MastraStorage } from '../storage';\n\nfunction toScorerTargetEntityType(entityType: string): EntityType | undefined {\n switch (entityType) {\n case 'AGENT':\n return EntityType.AGENT;\n case 'WORKFLOW':\n return EntityType.WORKFLOW_RUN;\n default:\n return undefined;\n }\n}\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n const storage = mastra.getStorage();\n\n if (!storage) {\n mastra.getLogger()?.warn('Storage not found, skipping score validation and saving');\n return;\n }\n\n const entityId = hookData.entity.id as string;\n const entityType = hookData.entityType;\n const scorer = hookData.scorer;\n const scorerId = scorer.id as string;\n\n if (!scorerId) {\n mastra.getLogger()?.warn('Scorer ID not found, skipping score validation and saving');\n return;\n }\n\n try {\n const scorerToUse = await findScorer(mastra, entityId, entityType, scorerId);\n\n if (!scorerToUse) {\n throw new MastraError({\n id: 'MASTRA_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ID ${scorerId} not found`,\n });\n }\n\n let input = hookData.input;\n let output = hookData.output;\n\n const { structuredOutput, ...rest } = hookData;\n\n const currentSpan = hookData.tracingContext?.currentSpan;\n const traceId = currentSpan?.isValid ? currentSpan.traceId : undefined;\n const spanId = currentSpan?.isValid ? currentSpan.id : undefined;\n const targetCorrelationContext = currentSpan?.isValid ? currentSpan.getCorrelationContext?.() : undefined;\n const targetMetadata = currentSpan?.isValid && currentSpan.metadata ? { ...currentSpan.metadata } : undefined;\n const runResult = (await scorerToUse.scorer.run({\n ...rest,\n input,\n output,\n scoreSource: 'live',\n targetScope: 'span',\n targetEntityType: toScorerTargetEntityType(entityType),\n targetTraceId: traceId,\n targetSpanId: spanId,\n targetCorrelationContext,\n targetMetadata,\n } as any)) as Record<string, unknown>;\n\n const payload = {\n ...rest,\n ...runResult,\n entityId,\n scorerId: scorerId,\n spanId,\n traceId,\n scorer: {\n ...rest.scorer,\n hasJudge: !!scorerToUse.scorer.judge,\n },\n metadata: {\n structuredOutput: !!structuredOutput,\n },\n };\n // Legacy score-store emission. This path is being deprecated.\n await validateAndSaveScore(storage, payload);\n\n if (currentSpan && spanId && traceId) {\n await pMap(\n currentSpan.observabilityInstance.getExporters(),\n async exporter => {\n if (exporter.addScoreToTrace) {\n try {\n await exporter.addScoreToTrace({\n traceId: traceId,\n spanId: spanId,\n score: runResult.score as number,\n reason: runResult.reason as string,\n scorerName: scorerToUse.scorer.id,\n metadata: {\n ...(currentSpan.metadata ?? {}),\n },\n });\n } catch (error) {\n // Log error but don't fail the hook if exporter fails\n mastra.getLogger()?.error(`Failed to add score to trace via exporter: ${error}`);\n }\n }\n },\n { concurrency: 3 },\n );\n }\n } catch (error) {\n const mastraError = new MastraError(\n {\n id: 'MASTRA_SCORER_FAILED_TO_RUN_HOOK',\n domain: ErrorDomain.SCORER,\n category: ErrorCategory.USER,\n details: {\n scorerId,\n entityId,\n entityType,\n },\n },\n error,\n );\n\n mastra.getLogger()?.trackException(mastraError);\n }\n };\n}\n\n/**\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore()`.\n */\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n const scoresStore = await storage.getStore('scores');\n if (!scoresStore) {\n throw new MastraError({\n id: 'MASTRA_SCORES_STORAGE_NOT_AVAILABLE',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: 'Scores storage domain is not available',\n });\n }\n const payloadToSave = saveScorePayloadSchema.parse(payload);\n await scoresStore.saveScore(payloadToSave);\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n let scorerToUse;\n if (entityType === 'AGENT') {\n // Try code-defined agents first\n try {\n const agent = mastra.getAgentById(entityId);\n const scorers = await agent.listScorers();\n for (const [_, scorer] of Object.entries(scorers)) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n } catch {\n // Agent not found in code-defined agents, try stored agents via editor\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(entityId)) ?? null;\n if (storedAgent) {\n const scorers = await storedAgent.listScorers();\n for (const [_, scorer] of Object.entries(scorers) as [string, any][]) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n }\n } catch {\n // Stored agent also not found, will fall back to mastra-registered scorer\n }\n }\n } else if (entityType === 'WORKFLOW') {\n const scorers = await mastra.getWorkflowById(entityId).listScorers();\n for (const [_, scorer] of Object.entries(scorers)) {\n if (scorer.scorer.id === scorerId) {\n scorerToUse = scorer;\n break;\n }\n }\n }\n\n // Fallback to mastra-registered scorer\n if (!scorerToUse) {\n const mastraRegisteredScorer = mastra.getScorerById(scorerId);\n scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n }\n\n return scorerToUse;\n}\n","export class ScoreAccumulator {\n private flatScores: Record<string, number[]> = {};\n private workflowScores: Record<string, number[]> = {};\n private stepScores: Record<string, Record<string, number[]>> = {};\n private agentScores: Record<string, number[]> = {};\n private trajectoryScores: Record<string, number[]> = {};\n\n addScores(scorerResults: Record<string, any>) {\n const isWorkflowScores = 'steps' in scorerResults || 'workflow' in scorerResults;\n const isAgentScores = 'agent' in scorerResults;\n const hasTrajectory = 'trajectory' in scorerResults;\n\n // Routing priority: workflow configs take precedence (they may also include\n // trajectory scores), then agent configs (agent or trajectory-only), then\n // flat scores for simple scorer arrays.\n if (isWorkflowScores) {\n this.addWorkflowScores(scorerResults);\n } else if (isAgentScores || hasTrajectory) {\n this.addAgentScores(scorerResults);\n } else {\n this.addFlatScores(scorerResults);\n }\n }\n\n private addFlatScores(scorerResults: Record<string, any>) {\n for (const [scorerName, result] of Object.entries(scorerResults)) {\n if (!this.flatScores[scorerName]) {\n this.flatScores[scorerName] = [];\n }\n this.flatScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n private addWorkflowScores(scorerResults: Record<string, any>) {\n if ('workflow' in scorerResults && scorerResults.workflow) {\n for (const [scorerName, result] of Object.entries(scorerResults.workflow)) {\n if (!this.workflowScores[scorerName]) {\n this.workflowScores[scorerName] = [];\n }\n this.workflowScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n if ('steps' in scorerResults && scorerResults.steps) {\n for (const [stepId, stepResults] of Object.entries(scorerResults.steps)) {\n if (!this.stepScores[stepId]) {\n this.stepScores[stepId] = {};\n }\n for (const [scorerName, result] of Object.entries(stepResults as Record<string, any>)) {\n if (!this.stepScores[stepId][scorerName]) {\n this.stepScores[stepId][scorerName] = [];\n }\n this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n // Trajectory scores can come from workflow scorer configs too\n if ('trajectory' in scorerResults && scorerResults.trajectory) {\n for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n if (!this.trajectoryScores[scorerName]) {\n this.trajectoryScores[scorerName] = [];\n }\n this.trajectoryScores[scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n private addAgentScores(scorerResults: Record<string, any>) {\n if ('agent' in scorerResults && scorerResults.agent) {\n for (const [scorerName, result] of Object.entries(scorerResults.agent)) {\n if (!this.agentScores[scorerName]) {\n this.agentScores[scorerName] = [];\n }\n this.agentScores[scorerName].push((result as { score: number }).score);\n }\n }\n\n if ('trajectory' in scorerResults && scorerResults.trajectory) {\n for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n if (!this.trajectoryScores[scorerName]) {\n this.trajectoryScores[scorerName] = [];\n }\n this.trajectoryScores[scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n addStepScores(stepScorerResults: Record<string, Record<string, any>>) {\n for (const [stepId, stepResults] of Object.entries(stepScorerResults)) {\n if (!this.stepScores[stepId]) {\n this.stepScores[stepId] = {};\n }\n for (const [scorerName, result] of Object.entries(stepResults)) {\n if (!this.stepScores[stepId][scorerName]) {\n this.stepScores[stepId][scorerName] = [];\n }\n this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n }\n }\n }\n\n getAverageScores(): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const [scorerName, scoreArray] of Object.entries(this.flatScores)) {\n result[scorerName] = this.getAverageScore(scoreArray);\n }\n\n // Add workflow scores\n if (Object.keys(this.workflowScores).length > 0) {\n result.workflow = {};\n for (const [scorerName, scoreArray] of Object.entries(this.workflowScores)) {\n result.workflow[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n if (Object.keys(this.stepScores).length > 0) {\n result.steps = {};\n for (const [stepId, stepScorers] of Object.entries(this.stepScores)) {\n result.steps[stepId] = {};\n for (const [scorerName, scoreArray] of Object.entries(stepScorers)) {\n result.steps[stepId][scorerName] = this.getAverageScore(scoreArray);\n }\n }\n }\n\n // Add agent scores\n if (Object.keys(this.agentScores).length > 0) {\n result.agent = {};\n for (const [scorerName, scoreArray] of Object.entries(this.agentScores)) {\n result.agent[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n // Add trajectory scores\n if (Object.keys(this.trajectoryScores).length > 0) {\n result.trajectory = {};\n for (const [scorerName, scoreArray] of Object.entries(this.trajectoryScores)) {\n result.trajectory[scorerName] = this.getAverageScore(scoreArray);\n }\n }\n\n return result;\n }\n\n private getAverageScore(scoreArray: number[]): number {\n if (scoreArray.length > 0) {\n return scoreArray.reduce((a, b) => a + b, 0) / scoreArray.length;\n } else {\n return 0;\n }\n }\n}\n","import type { CoreMessage } from '@internal/ai-sdk-v4';\nimport type { Agent, AgentExecutionOptions, AiMessageType, UIMessageWithMetadata } from '../../agent';\nimport { isSupportedLanguageModel } from '../../agent';\nimport { MastraError } from '../../error';\nimport { validateAndSaveScore } from '../../mastra/hooks';\nimport type { ObservabilityContext } from '../../observability';\nimport { EntityType, resolveObservabilityContext } from '../../observability';\nimport type { RequestContext } from '../../request-context';\nimport type { MastraCompositeStore } from '../../storage';\nimport { Workflow } from '../../workflows';\nimport type { AnyWorkflow, WorkflowResult, WorkflowRunStartOptions, StepResult } from '../../workflows';\nimport type { MastraScorer } from '../base';\nimport { extractTrajectory, extractTrajectoryFromTrace, extractWorkflowTrajectory } from '../types';\nimport { ScoreAccumulator } from './scorerAccumulator';\n\ntype WorkflowRunOptions = WorkflowRunStartOptions & {\n initialState?: any;\n};\n\ntype RunEvalsDataItem<TTarget = unknown> = {\n input: TTarget extends Workflow<any, any>\n ? any\n : TTarget extends Agent\n ? string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[]\n : unknown;\n groundTruth?: any;\n expectedTrajectory?: any;\n requestContext?: RequestContext;\n startOptions?: WorkflowRunOptions;\n} & Partial<ObservabilityContext>;\n\nexport type WorkflowScorerConfig = {\n /** Scorers that evaluate the overall workflow input/output */\n workflow?: MastraScorer<any, any, any, any>[];\n /** Scorers that evaluate individual workflow steps by step ID */\n steps?: Record<string, MastraScorer<any, any, any, any>[]>;\n /** Scorers that evaluate the workflow's step execution trajectory */\n trajectory?: MastraScorer<any, any, any, any>[];\n};\n\nexport type AgentScorerConfig = {\n /** Scorers that evaluate the full agent input/output */\n agent?: MastraScorer<any, any, any, any>[];\n /** Scorers that evaluate the agent's tool call trajectory */\n trajectory?: MastraScorer<any, any, any, any>[];\n};\n\ntype RunEvalsResult = {\n scores: Record<string, any>;\n summary: {\n totalItems: number;\n };\n};\n\n// Agent with scorers array\nexport function runEvals<TAgent extends Agent>(config: {\n data: RunEvalsDataItem<TAgent>[];\n scorers: MastraScorer<any, any, any, any>[];\n target: TAgent;\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TAgent>;\n targetResult: Awaited<ReturnType<Agent['generate']>>;\n scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with scorers array\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n data: RunEvalsDataItem<TWorkflow>[];\n scorers: MastraScorer<any, any, any, any>[];\n target: TWorkflow;\n targetOptions?: WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TWorkflow>;\n targetResult: WorkflowResult<any, any, any, any>;\n scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with workflow configuration\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n data: RunEvalsDataItem<TWorkflow>[];\n scorers: WorkflowScorerConfig;\n target: TWorkflow;\n targetOptions?: WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TWorkflow>;\n targetResult: WorkflowResult<any, any, any, any>;\n scorerResults: {\n workflow?: Record<string, any>;\n steps?: Record<string, Record<string, any>>;\n trajectory?: Record<string, any>;\n };\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Agent with agent scorer configuration (agent-level + trajectory scorers)\nexport function runEvals<TAgent extends Agent>(config: {\n data: RunEvalsDataItem<TAgent>[];\n scorers: AgentScorerConfig;\n target: TAgent;\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<TAgent>;\n targetResult: Awaited<ReturnType<Agent['generate']>>;\n scorerResults: {\n agent?: Record<string, any>;\n trajectory?: Record<string, any>;\n };\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult>;\n\nexport async function runEvals(config: {\n data: RunEvalsDataItem<any>[];\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig;\n target: Agent | Workflow;\n targetOptions?:\n | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n | WorkflowRunOptions;\n onItemComplete?: (params: {\n item: RunEvalsDataItem<any>;\n targetResult: any;\n scorerResults: any;\n }) => void | Promise<void>;\n concurrency?: number;\n}): Promise<RunEvalsResult> {\n const { data, scorers, target, targetOptions, onItemComplete, concurrency = 1 } = config;\n\n validateEvalsInputs(data, scorers, target);\n\n let totalItems = 0;\n const scoreAccumulator = new ScoreAccumulator();\n\n // Get storage from target's Mastra instance if available\n // Agent uses getMastraInstance(), Workflow uses .mastra getter\n const mastra = (target as any).getMastraInstance?.() || (target as any).mastra;\n const storage = mastra?.getStorage();\n\n const pMap = (await import('p-map')).default;\n await pMap(\n data,\n async (item: RunEvalsDataItem<any>) => {\n const targetResult = await executeTarget(target, item, targetOptions);\n const scorerResults = await runScorers(scorers, targetResult, item, storage);\n scoreAccumulator.addScores(scorerResults);\n\n // Save scores to storage if available\n if (storage) {\n await saveScoresToStorage({\n storage,\n scorerResults,\n target,\n item,\n mastra,\n });\n }\n\n if (onItemComplete) {\n await onItemComplete({\n item,\n targetResult: targetResult as any,\n scorerResults: scorerResults as any,\n });\n }\n\n totalItems++;\n },\n { concurrency },\n );\n\n return {\n scores: scoreAccumulator.getAverageScores(),\n summary: {\n totalItems,\n },\n };\n}\n\nfunction isWorkflow(target: Agent | Workflow): target is Workflow {\n return target instanceof Workflow;\n}\n\nfunction isWorkflowScorerConfig(scorers: any): scorers is WorkflowScorerConfig {\n return (\n typeof scorers === 'object' &&\n !Array.isArray(scorers) &&\n ('workflow' in scorers || 'steps' in scorers || ('trajectory' in scorers && !('agent' in scorers)))\n );\n}\n\nfunction isAgentScorerConfig(scorers: any): scorers is AgentScorerConfig {\n return (\n typeof scorers === 'object' &&\n !Array.isArray(scorers) &&\n ('agent' in scorers || ('trajectory' in scorers && !('workflow' in scorers) && !('steps' in scorers)))\n );\n}\n\nfunction validateEvalsInputs(\n data: RunEvalsDataItem<any>[],\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n target: Agent | Workflow,\n): void {\n if (data.length === 0) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED',\n category: 'USER',\n text: 'Failed to run experiment: Data array is empty',\n });\n }\n\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n if (!item || typeof item !== 'object' || !('input' in item)) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'INVALID_DATA_ITEM',\n category: 'USER',\n text: `Invalid data item at index ${i}: must have 'input' properties`,\n });\n }\n }\n\n // Validate scorers\n if (Array.isArray(scorers)) {\n if (scorers.length === 0) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one scorer must be provided',\n });\n }\n } else if (isWorkflow(target) && isWorkflowScorerConfig(scorers)) {\n const hasScorers =\n (scorers.workflow && scorers.workflow.length > 0) ||\n (scorers.steps && Object.keys(scorers.steps).length > 0) ||\n (scorers.trajectory && scorers.trajectory.length > 0);\n\n if (!hasScorers) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one workflow, step, or trajectory scorer must be provided',\n });\n }\n } else if (!isWorkflow(target) && isAgentScorerConfig(scorers)) {\n const hasScorers =\n (scorers.agent && scorers.agent.length > 0) || (scorers.trajectory && scorers.trajectory.length > 0);\n\n if (!hasScorers) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'NO_SCORERS_PROVIDED',\n category: 'USER',\n text: 'At least one agent or trajectory scorer must be provided',\n });\n }\n } else if (!isWorkflow(target) && !Array.isArray(scorers) && !isAgentScorerConfig(scorers)) {\n throw new MastraError({\n domain: 'SCORER',\n id: 'INVALID_AGENT_SCORERS',\n category: 'USER',\n text: 'Agent scorers must be an array of scorers or an AgentScorerConfig',\n });\n }\n}\n\nasync function executeTarget(\n target: Agent | Workflow,\n item: RunEvalsDataItem<any>,\n targetOptions?:\n | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n | WorkflowRunOptions,\n) {\n try {\n if (isWorkflow(target)) {\n return await executeWorkflow(target, item, targetOptions as WorkflowRunOptions);\n } else {\n return await executeAgent(\n target,\n item,\n targetOptions as Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n );\n }\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_TARGET_FAILED_TO_GENERATE_RESULT',\n category: 'USER',\n text: 'Failed to run experiment: Error generating result from target',\n details: {\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n}\n\nasync function executeWorkflow(target: Workflow, item: RunEvalsDataItem<any>, targetOptions?: WorkflowRunOptions) {\n const observabilityContext = resolveObservabilityContext(item);\n const run = await target.createRun({ disableScorers: true });\n const workflowResult = await run.start({\n ...targetOptions,\n ...item.startOptions,\n inputData: item.input,\n requestContext: item.requestContext,\n ...observabilityContext,\n });\n\n return {\n traceId: workflowResult.traceId,\n spanId: workflowResult.spanId,\n entityType: EntityType.WORKFLOW_RUN,\n scoringData: {\n input: item.input,\n output: workflowResult.status === 'success' ? workflowResult.result : undefined,\n stepResults: workflowResult.steps as Record<string, StepResult<any, any, any, any>>,\n stepExecutionPath: workflowResult.stepExecutionPath,\n },\n };\n}\n\nasync function executeAgent(\n agent: Agent,\n item: RunEvalsDataItem<any>,\n targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n) {\n const observabilityContext = resolveObservabilityContext(item);\n const model = await agent.getModel();\n if (isSupportedLanguageModel(model)) {\n const { structuredOutput, ...restOptions } = targetOptions ?? {};\n const baseOptions = {\n ...restOptions,\n ...observabilityContext,\n scorers: {},\n returnScorerData: true,\n requestContext: item.requestContext,\n };\n const result = structuredOutput\n ? await agent.generate(item.input, { ...baseOptions, structuredOutput })\n : await agent.generate(item.input, baseOptions);\n\n return {\n ...result,\n entityType: EntityType.AGENT,\n };\n } else {\n const result = await agent.generateLegacy(item.input, {\n scorers: {},\n returnScorerData: true,\n requestContext: item.requestContext,\n ...observabilityContext,\n });\n return {\n ...result,\n entityType: EntityType.AGENT,\n };\n }\n}\n\n/**\n * Attempts to extract a hierarchical trajectory from observability traces.\n * Falls back to undefined if storage is not available or trace cannot be fetched.\n */\nasync function extractTrajectoryFromTraceStore(\n storage: MastraCompositeStore | undefined,\n traceId: string | undefined,\n spanId: string | undefined,\n): Promise<ReturnType<typeof extractTrajectoryFromTrace> | undefined> {\n if (!storage || !traceId) return undefined;\n\n try {\n const observabilityStore = await storage.getStore('observability');\n if (!observabilityStore) return undefined;\n\n const trace = await observabilityStore.getTrace({ traceId });\n if (!trace?.spans?.length) return undefined;\n\n return extractTrajectoryFromTrace(trace.spans, spanId);\n } catch {\n // Trace-based extraction is best-effort; fall back to existing extraction\n return undefined;\n }\n}\n\n//TODO: Ideally this would run on trace data instead of targetResult data\nasync function runScorers(\n scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n targetResult: any,\n item: RunEvalsDataItem<any>,\n storage?: MastraCompositeStore,\n): Promise<Record<string, any>> {\n const scorerResults: Record<string, any> = {};\n const targetTraceId = targetResult.traceId;\n const targetEntityType: EntityType = targetResult.entityType;\n\n if (Array.isArray(scorers)) {\n for (const scorer of scorers) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: targetResult.scoringData?.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n\n scorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n } else if (isAgentScorerConfig(scorers)) {\n // Handle agent scorer config (agent-level + trajectory scorers)\n if (scorers.agent) {\n const agentScorerResults: Record<string, any> = {};\n for (const scorer of scorers.agent) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: targetResult.scoringData?.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n agentScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running agent scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(agentScorerResults).length > 0) {\n scorerResults.agent = agentScorerResults;\n }\n }\n\n if (scorers.trajectory) {\n const trajectoryScorerResults: Record<string, any> = {};\n\n // Prefer hierarchical trace-based extraction when storage + traceId are available\n const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n // Fall back to flat extraction from MastraDBMessage[] tool invocations\n const rawOutput = targetResult.scoringData?.output;\n const trajectory = traceTrajectory ?? (rawOutput ? extractTrajectory(rawOutput) : { steps: [] });\n\n for (const scorer of scorers.trajectory) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: trajectory,\n groundTruth: item.groundTruth,\n expectedTrajectory: item.expectedTrajectory,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'trajectory',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n trajectoryScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_TRAJECTORY',\n category: 'USER',\n text: `Failed to run experiment: Error running trajectory scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(trajectoryScorerResults).length > 0) {\n scorerResults.trajectory = trajectoryScorerResults;\n }\n }\n } else {\n // Handle workflow scorer config\n if (scorers.workflow) {\n const workflowScorerResults: Record<string, any> = {};\n for (const scorer of scorers.workflow) {\n const score = await scorer.run({\n input: targetResult.scoringData.input,\n output: targetResult.scoringData.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n workflowScorerResults[scorer.id] = score;\n }\n if (Object.keys(workflowScorerResults).length > 0) {\n scorerResults.workflow = workflowScorerResults;\n }\n }\n\n if (scorers.steps) {\n const stepScorerResults: Record<string, any> = {};\n for (const [stepId, stepScorers] of Object.entries(scorers.steps)) {\n const stepResult = targetResult.scoringData.stepResults?.[stepId];\n // TODO : Ideally this would run on the trace.WORKFLOW_STEP span...\n // then we could directly add the score to that span\n if (stepResult?.status === 'success' && stepResult.output !== undefined) {\n const stepResults: Record<string, any> = {};\n for (const scorer of stepScorers) {\n try {\n const score = await scorer.run({\n input: stepResult.payload !== undefined ? stepResult.payload : targetResult.scoringData.input,\n output: stepResult.output,\n groundTruth: item.groundTruth,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'span',\n targetEntityType: EntityType.WORKFLOW_STEP,\n targetTraceId,\n });\n stepResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_STEP_RESULT',\n category: 'USER',\n text: `Failed to run experiment: Error running scorer ${scorer.id} on step ${stepId}`,\n details: {\n scorerId: scorer.id,\n stepId,\n },\n },\n error,\n );\n }\n }\n if (Object.keys(stepResults).length > 0) {\n stepScorerResults[stepId] = stepResults;\n }\n }\n }\n if (Object.keys(stepScorerResults).length > 0) {\n scorerResults.steps = stepScorerResults;\n }\n }\n\n if (scorers.trajectory) {\n const trajectoryScorerResults: Record<string, any> = {};\n\n // Prefer hierarchical trace-based extraction when storage + traceId are available\n const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n // Fall back to flat extraction from step results\n let trajectory = traceTrajectory;\n if (!trajectory) {\n const stepResults = targetResult.scoringData?.stepResults;\n const stepExecutionPath = targetResult.scoringData?.stepExecutionPath;\n trajectory = stepResults ? extractWorkflowTrajectory(stepResults, stepExecutionPath) : { steps: [] };\n }\n\n for (const scorer of scorers.trajectory) {\n try {\n const score = await scorer.run({\n input: targetResult.scoringData?.input,\n output: trajectory,\n groundTruth: item.groundTruth,\n expectedTrajectory: item.expectedTrajectory,\n requestContext: item.requestContext,\n scoreSource: 'experiment',\n targetScope: 'trajectory',\n targetEntityType: EntityType.TRAJECTORY,\n targetTraceId,\n targetSpanId: targetResult.spanId,\n });\n trajectoryScorerResults[scorer.id] = score;\n } catch (error) {\n throw new MastraError(\n {\n domain: 'SCORER',\n id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_WORKFLOW_TRAJECTORY',\n category: 'USER',\n text: `Failed to run experiment: Error running workflow trajectory scorer ${scorer.id}`,\n details: {\n scorerId: scorer.id,\n item: JSON.stringify(item),\n },\n },\n error,\n );\n }\n }\n if (Object.keys(trajectoryScorerResults).length > 0) {\n scorerResults.trajectory = trajectoryScorerResults;\n }\n }\n }\n\n return scorerResults;\n}\n\n/**\n * Saves scorer results to storage when running evaluations.\n * This makes scores visible in Studio's observability section.\n *\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore().\n */\nasync function saveScoresToStorage({\n storage,\n scorerResults,\n target,\n item,\n mastra,\n}: {\n storage: any;\n scorerResults: Record<string, any>;\n target: Agent | Workflow;\n item: RunEvalsDataItem<any>;\n mastra: any;\n}): Promise<void> {\n const entityId = target.id;\n const entityType = isWorkflow(target) ? 'WORKFLOW' : 'AGENT';\n\n const isStructuredWorkflowResult = 'workflow' in scorerResults || 'steps' in scorerResults;\n const isStructuredAgentResult = 'agent' in scorerResults || 'trajectory' in scorerResults;\n\n if (!isStructuredWorkflowResult && !isStructuredAgentResult) {\n // Handle flat scorer results (simple array of scorers for agents or workflows)\n for (const [scorerId, scoreResult] of Object.entries(scorerResults)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType,\n mastra,\n target,\n item,\n });\n }\n }\n } else if (isStructuredAgentResult) {\n // Handle agent scorer config with agent-level and trajectory scorers\n if (scorerResults.agent) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.agent)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'AGENT',\n mastra,\n target,\n item,\n });\n }\n }\n }\n\n if (scorerResults.trajectory) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.trajectory)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'TRAJECTORY',\n mastra,\n target,\n item,\n });\n }\n }\n }\n } else {\n // Handle workflow scorer config with workflow and step scorers\n if (scorerResults.workflow) {\n for (const [scorerId, scoreResult] of Object.entries(scorerResults.workflow)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType: 'WORKFLOW',\n mastra,\n target,\n item,\n });\n }\n }\n }\n\n if (scorerResults.steps) {\n for (const [stepId, stepScorers] of Object.entries(scorerResults.steps)) {\n for (const [scorerId, scoreResult] of Object.entries(stepScorers as Record<string, any>)) {\n if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n await saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId: stepId,\n entityType: 'STEP',\n mastra,\n target,\n item,\n });\n }\n }\n }\n }\n }\n}\n\n/**\n * Saves a single scorer result to storage\n */\nasync function saveSingleScore({\n storage,\n scoreResult,\n scorerId,\n entityId,\n entityType,\n mastra,\n target,\n item,\n}: {\n storage: any;\n scoreResult: any;\n scorerId: string;\n entityId: string;\n entityType: string;\n mastra: any;\n target: Agent | Workflow;\n item: RunEvalsDataItem<any>;\n}): Promise<void> {\n try {\n // Get scorer information\n let scorer = mastra?.getScorerById?.(scorerId);\n\n if (!scorer) {\n // Try to get from target's scorers\n const targetScorers = await (target as any).listScorers?.();\n if (targetScorers) {\n for (const [_, scorerEntry] of Object.entries(targetScorers)) {\n if ((scorerEntry as any).scorer?.id === scorerId) {\n scorer = (scorerEntry as any).scorer;\n break;\n }\n }\n }\n }\n\n // Extract tracing context if available\n let traceId: string | undefined;\n let spanId: string | undefined;\n if (item.tracingContext?.currentSpan && item.tracingContext.currentSpan.isValid) {\n spanId = item.tracingContext.currentSpan.id;\n traceId = item.tracingContext.currentSpan.traceId;\n }\n\n // Build additional context with groundTruth if available\n const additionalContext: Record<string, any> = {};\n if (item.groundTruth !== undefined) {\n additionalContext.groundTruth = item.groundTruth;\n }\n\n const payload = {\n ...scoreResult,\n scorerId,\n entityId,\n entityType,\n source: 'TEST' as const,\n scorer: {\n id: scorer?.id || scorerId,\n name: scorer?.name || scorerId,\n description: scorer?.description || '',\n type: scorer?.type || 'unknown',\n ...(scorer ? { hasJudge: !!scorer.judge } : {}),\n },\n entity: {\n id: target.id,\n name: (target as any).name || target.id,\n },\n // Include requestContext from item\n requestContext: item.requestContext ? Object.fromEntries(item.requestContext.entries()) : undefined,\n // Include additionalContext with groundTruth\n additionalContext: Object.keys(additionalContext).length > 0 ? additionalContext : undefined,\n // Include tracing information\n traceId,\n spanId,\n };\n\n // Legacy score-store emission. This path is being deprecated.\n await validateAndSaveScore(storage, payload);\n } catch (error) {\n // Log error but don't fail the evaluation\n mastra?.getLogger?.()?.warn?.(`Failed to save score for scorer ${scorerId}:`, error);\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkY67VWDR7_cjs = require('./chunk-Y67VWDR7.cjs');
4
- var chunkKJDRVBAH_cjs = require('./chunk-KJDRVBAH.cjs');
5
- var chunk74IXDLKF_cjs = require('./chunk-74IXDLKF.cjs');
3
+ var chunkTKH2A57J_cjs = require('./chunk-TKH2A57J.cjs');
4
+ var chunkZ67JQNEH_cjs = require('./chunk-Z67JQNEH.cjs');
5
+ var chunk7STIIXEL_cjs = require('./chunk-7STIIXEL.cjs');
6
6
  var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
7
7
  var fs = require('fs');
8
8
  var module$1 = require('module');
@@ -17,7 +17,7 @@ var os__default = /*#__PURE__*/_interopDefault(os);
17
17
  var path__default = /*#__PURE__*/_interopDefault(path);
18
18
 
19
19
  // src/llm/model/gateways/mastra.ts
20
- var MastraGateway = class extends chunk74IXDLKF_cjs.MastraModelGateway {
20
+ var MastraGateway = class extends chunk7STIIXEL_cjs.MastraModelGateway {
21
21
  constructor(config) {
22
22
  super();
23
23
  this.config = config;
@@ -73,34 +73,34 @@ var MastraGateway = class extends chunk74IXDLKF_cjs.MastraModelGateway {
73
73
  const baseURL = `${this.getBaseUrl()}/v1`;
74
74
  const fullModelId = `${providerId}/${modelId}`;
75
75
  if (this.config?.customFetch && providerId === "anthropic") {
76
- return chunk74IXDLKF_cjs.createAnthropic({
76
+ return chunk7STIIXEL_cjs.createAnthropic({
77
77
  apiKey: "oauth-gateway-placeholder",
78
78
  baseURL,
79
79
  headers: {
80
- "User-Agent": chunk74IXDLKF_cjs.MASTRA_USER_AGENT,
81
- [chunk74IXDLKF_cjs.GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,
80
+ "User-Agent": chunk7STIIXEL_cjs.MASTRA_USER_AGENT,
81
+ [chunk7STIIXEL_cjs.GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,
82
82
  ...headers
83
83
  },
84
84
  fetch: this.config.customFetch
85
85
  })(modelId);
86
86
  }
87
87
  if (this.config?.customFetch) {
88
- return chunkY67VWDR7_cjs.createOpenRouter({
88
+ return chunkTKH2A57J_cjs.createOpenRouter({
89
89
  apiKey: "oauth-gateway-placeholder",
90
90
  baseURL,
91
91
  headers: {
92
- "User-Agent": chunk74IXDLKF_cjs.MASTRA_USER_AGENT,
93
- [chunk74IXDLKF_cjs.GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,
92
+ "User-Agent": chunk7STIIXEL_cjs.MASTRA_USER_AGENT,
93
+ [chunk7STIIXEL_cjs.GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,
94
94
  ...headers
95
95
  },
96
96
  fetch: this.config.customFetch
97
97
  }).chat(fullModelId);
98
98
  }
99
- return chunkY67VWDR7_cjs.createOpenRouter({
99
+ return chunkTKH2A57J_cjs.createOpenRouter({
100
100
  apiKey,
101
101
  baseURL,
102
102
  headers: {
103
- "User-Agent": chunk74IXDLKF_cjs.MASTRA_USER_AGENT,
103
+ "User-Agent": chunk7STIIXEL_cjs.MASTRA_USER_AGENT,
104
104
  ...headers
105
105
  }
106
106
  }).chat(fullModelId);
@@ -8417,7 +8417,7 @@ function saveLastRefreshTimeToDisk(date) {
8417
8417
  }
8418
8418
  function getPackageRoot() {
8419
8419
  try {
8420
- const require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-ZOLIH66J.cjs', document.baseURI).href)) || "file://");
8420
+ const require2 = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-V7AX2MSJ.cjs', document.baseURI).href)) || "file://");
8421
8421
  const packageJsonPath = require2.resolve("@mastra/core/package.json");
8422
8422
  return path__default.default.dirname(packageJsonPath);
8423
8423
  } catch {
@@ -8426,8 +8426,8 @@ function getPackageRoot() {
8426
8426
  }
8427
8427
  function loadRegistry(useDynamicLoading, customGateways = []) {
8428
8428
  const enabledGatewayIds = getEnabledGatewayIds([
8429
- new chunkY67VWDR7_cjs.ModelsDevGateway({}),
8430
- new chunkKJDRVBAH_cjs.NetlifyGateway(),
8429
+ new chunkTKH2A57J_cjs.ModelsDevGateway({}),
8430
+ new chunkZ67JQNEH_cjs.NetlifyGateway(),
8431
8431
  new MastraGateway(),
8432
8432
  ...customGateways
8433
8433
  ]);
@@ -8624,9 +8624,9 @@ var GatewayRegistry = class _GatewayRegistry {
8624
8624
  }
8625
8625
  this.isRefreshing = true;
8626
8626
  try {
8627
- const { ModelsDevGateway: ModelsDevGateway2 } = await import('./models-dev-GD4LL56A.cjs');
8628
- const { NetlifyGateway: NetlifyGateway2 } = await import('./netlify-6V7UBVTK.cjs');
8629
- const { MastraGateway: MastraGateway2 } = await import('./mastra-LIISVKXT.cjs');
8627
+ const { ModelsDevGateway: ModelsDevGateway2 } = await import('./models-dev-3IPTEPRM.cjs');
8628
+ const { NetlifyGateway: NetlifyGateway2 } = await import('./netlify-XT32D45G.cjs');
8629
+ const { MastraGateway: MastraGateway2 } = await import('./mastra-VHS7LVQG.cjs');
8630
8630
  const { fetchProvidersFromGateways, writeRegistryFiles } = await import('./registry-generator-VNYH6GDH.cjs');
8631
8631
  const defaultGateways = [
8632
8632
  new ModelsDevGateway2({}),
@@ -8756,5 +8756,5 @@ exports.getRegisteredProviders = getRegisteredProviders;
8756
8756
  exports.isProviderRegistered = isProviderRegistered;
8757
8757
  exports.isValidModelId = isValidModelId;
8758
8758
  exports.parseModelString = parseModelString;
8759
- //# sourceMappingURL=chunk-ZOLIH66J.cjs.map
8760
- //# sourceMappingURL=chunk-ZOLIH66J.cjs.map
8759
+ //# sourceMappingURL=chunk-V7AX2MSJ.cjs.map
8760
+ //# sourceMappingURL=chunk-V7AX2MSJ.cjs.map