@mastra/core 0.15.3-alpha.4 → 0.15.3-alpha.6

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 (147) hide show
  1. package/CHANGELOG.md +3215 -0
  2. package/dist/agent/agent.types.d.ts +1 -0
  3. package/dist/agent/agent.types.d.ts.map +1 -1
  4. package/dist/agent/index.cjs +11 -11
  5. package/dist/agent/index.d.ts +2 -1
  6. package/dist/agent/index.d.ts.map +1 -1
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/input-processor/index.cjs +6 -6
  9. package/dist/agent/input-processor/index.js +1 -1
  10. package/dist/agent/message-list/prompt/convert-to-mastra-v1.d.ts.map +1 -1
  11. package/dist/ai-tracing/exporters/default.d.ts.map +1 -1
  12. package/dist/ai-tracing/index.cjs +30 -30
  13. package/dist/ai-tracing/index.js +1 -1
  14. package/dist/{chunk-KUNWELBC.cjs → chunk-25VRTGOH.cjs} +311 -161
  15. package/dist/chunk-25VRTGOH.cjs.map +1 -0
  16. package/dist/{chunk-XM2ASGWH.js → chunk-4VU6A5XE.js} +3 -3
  17. package/dist/{chunk-XM2ASGWH.js.map → chunk-4VU6A5XE.js.map} +1 -1
  18. package/dist/{chunk-FQRDHVZC.cjs → chunk-5KIEN3HX.cjs} +4 -4
  19. package/dist/{chunk-FQRDHVZC.cjs.map → chunk-5KIEN3HX.cjs.map} +1 -1
  20. package/dist/{chunk-VVTB47UG.cjs → chunk-626FLQPT.cjs} +4 -4
  21. package/dist/{chunk-VVTB47UG.cjs.map → chunk-626FLQPT.cjs.map} +1 -1
  22. package/dist/{chunk-W5CF7DLB.cjs → chunk-6C6CR7JZ.cjs} +87 -47
  23. package/dist/chunk-6C6CR7JZ.cjs.map +1 -0
  24. package/dist/{chunk-YVIYEC6R.js → chunk-7S5FYPH7.js} +5 -5
  25. package/dist/{chunk-YVIYEC6R.js.map → chunk-7S5FYPH7.js.map} +1 -1
  26. package/dist/{chunk-5CJDO3UO.cjs → chunk-AAJF7WLJ.cjs} +3 -4
  27. package/dist/chunk-AAJF7WLJ.cjs.map +1 -0
  28. package/dist/{chunk-NMDRUT3Q.cjs → chunk-AWES6LTC.cjs} +4 -4
  29. package/dist/{chunk-NMDRUT3Q.cjs.map → chunk-AWES6LTC.cjs.map} +1 -1
  30. package/dist/{chunk-F4SQXAXR.js → chunk-BGE27UEX.js} +3 -4
  31. package/dist/chunk-BGE27UEX.js.map +1 -0
  32. package/dist/chunk-GXSERFAG.js +3 -0
  33. package/dist/{chunk-ZPQQN52E.js.map → chunk-GXSERFAG.js.map} +1 -1
  34. package/dist/{chunk-CKM2ESZF.js → chunk-HGYL2SSF.js} +14 -24
  35. package/dist/chunk-HGYL2SSF.js.map +1 -0
  36. package/dist/{chunk-P2IJ74UW.js → chunk-IH5UAO56.js} +280 -130
  37. package/dist/chunk-IH5UAO56.js.map +1 -0
  38. package/dist/{chunk-DZADAEAF.cjs → chunk-IQ5ISXGO.cjs} +14 -14
  39. package/dist/{chunk-DZADAEAF.cjs.map → chunk-IQ5ISXGO.cjs.map} +1 -1
  40. package/dist/{chunk-YAWYQH3N.js → chunk-JWURNPTP.js} +3 -3
  41. package/dist/{chunk-YAWYQH3N.js.map → chunk-JWURNPTP.js.map} +1 -1
  42. package/dist/{chunk-F2CAC2R2.cjs → chunk-MNDKBEEQ.cjs} +14 -24
  43. package/dist/chunk-MNDKBEEQ.cjs.map +1 -0
  44. package/dist/{chunk-OFPVAPUH.js → chunk-NHAHPLS5.js} +83 -43
  45. package/dist/chunk-NHAHPLS5.js.map +1 -0
  46. package/dist/{chunk-XPFWOBV4.js → chunk-POFCBVHG.js} +3 -3
  47. package/dist/{chunk-XPFWOBV4.js.map → chunk-POFCBVHG.js.map} +1 -1
  48. package/dist/{chunk-76MWMAR7.js → chunk-R7K2QO7M.js} +3 -2
  49. package/dist/chunk-R7K2QO7M.js.map +1 -0
  50. package/dist/{chunk-I7OAONIW.cjs → chunk-UFCYMOYH.cjs} +12 -2
  51. package/dist/chunk-UFCYMOYH.cjs.map +1 -0
  52. package/dist/{chunk-J35ULAQT.js → chunk-VZS4UVKF.js} +3 -3
  53. package/dist/{chunk-J35ULAQT.js.map → chunk-VZS4UVKF.js.map} +1 -1
  54. package/dist/{chunk-FBBP67MQ.cjs → chunk-VZYIKGJ6.cjs} +4 -4
  55. package/dist/{chunk-FBBP67MQ.cjs.map → chunk-VZYIKGJ6.cjs.map} +1 -1
  56. package/dist/{chunk-LOYT3WUA.js → chunk-WEPWZHE4.js} +12 -2
  57. package/dist/chunk-WEPWZHE4.js.map +1 -0
  58. package/dist/chunk-X4RMXTXF.cjs +4 -0
  59. package/dist/{chunk-F37IQKBQ.cjs.map → chunk-X4RMXTXF.cjs.map} +1 -1
  60. package/dist/{chunk-ZOU4K5MI.cjs → chunk-Z637KSJF.cjs} +3 -2
  61. package/dist/chunk-Z637KSJF.cjs.map +1 -0
  62. package/dist/index.cjs +30 -30
  63. package/dist/index.js +8 -8
  64. package/dist/llm/model/model.d.ts.map +1 -1
  65. package/dist/llm/model/model.loop.d.ts +1 -1
  66. package/dist/llm/model/model.loop.d.ts.map +1 -1
  67. package/dist/llm/model/model.loop.types.d.ts +1 -0
  68. package/dist/llm/model/model.loop.types.d.ts.map +1 -1
  69. package/dist/loop/index.cjs +2 -2
  70. package/dist/loop/index.js +1 -1
  71. package/dist/loop/loop.d.ts +1 -1
  72. package/dist/loop/loop.d.ts.map +1 -1
  73. package/dist/loop/types.d.ts +2 -0
  74. package/dist/loop/types.d.ts.map +1 -1
  75. package/dist/loop/workflow/llm-execution.d.ts.map +1 -1
  76. package/dist/loop/workflow/stream.d.ts.map +1 -1
  77. package/dist/mastra/index.cjs +2 -2
  78. package/dist/mastra/index.js +1 -1
  79. package/dist/memory/index.cjs +4 -4
  80. package/dist/memory/index.js +1 -1
  81. package/dist/network/index.cjs +2 -2
  82. package/dist/network/index.js +1 -1
  83. package/dist/network/vNext/index.cjs +17 -17
  84. package/dist/network/vNext/index.cjs.map +1 -1
  85. package/dist/network/vNext/index.d.ts.map +1 -1
  86. package/dist/network/vNext/index.js +3 -3
  87. package/dist/network/vNext/index.js.map +1 -1
  88. package/dist/processors/index.cjs +8 -8
  89. package/dist/processors/index.js +2 -2
  90. package/dist/relevance/index.cjs +4 -4
  91. package/dist/relevance/index.js +1 -1
  92. package/dist/scores/index.cjs +5 -5
  93. package/dist/scores/index.js +1 -1
  94. package/dist/server/index.cjs +2 -2
  95. package/dist/server/index.js +1 -1
  96. package/dist/storage/domains/workflows/inmemory.d.ts +1 -1
  97. package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
  98. package/dist/storage/index.cjs +13 -14
  99. package/dist/storage/index.cjs.map +1 -1
  100. package/dist/storage/index.js +11 -12
  101. package/dist/storage/index.js.map +1 -1
  102. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  103. package/dist/stream/base/output.d.ts +6 -0
  104. package/dist/stream/base/output.d.ts.map +1 -1
  105. package/dist/stream/index.cjs +3 -3
  106. package/dist/stream/index.js +1 -1
  107. package/dist/stream/types.d.ts +2 -1
  108. package/dist/stream/types.d.ts.map +1 -1
  109. package/dist/telemetry/index.cjs +7 -7
  110. package/dist/telemetry/index.js +1 -1
  111. package/dist/telemetry/telemetry.decorators.d.ts.map +1 -1
  112. package/dist/test-utils/llm-mock.cjs +2 -2
  113. package/dist/test-utils/llm-mock.js +1 -1
  114. package/dist/tools/index.cjs +4 -0
  115. package/dist/tools/index.d.ts +1 -0
  116. package/dist/tools/index.d.ts.map +1 -1
  117. package/dist/tools/index.js +1 -1
  118. package/dist/tts/index.cjs +2 -2
  119. package/dist/tts/index.js +1 -1
  120. package/dist/voice/index.cjs +4 -4
  121. package/dist/voice/index.js +1 -1
  122. package/dist/workflows/evented/index.cjs +10 -10
  123. package/dist/workflows/evented/index.js +1 -1
  124. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  125. package/dist/workflows/index.cjs +10 -10
  126. package/dist/workflows/index.js +1 -1
  127. package/dist/workflows/legacy/index.cjs +22 -22
  128. package/dist/workflows/legacy/index.js +1 -1
  129. package/dist/workflows/types.d.ts +64 -9
  130. package/dist/workflows/types.d.ts.map +1 -1
  131. package/dist/workflows/workflow.d.ts +8 -3
  132. package/dist/workflows/workflow.d.ts.map +1 -1
  133. package/package.json +12 -2
  134. package/dist/chunk-5CJDO3UO.cjs.map +0 -1
  135. package/dist/chunk-76MWMAR7.js.map +0 -1
  136. package/dist/chunk-CKM2ESZF.js.map +0 -1
  137. package/dist/chunk-F2CAC2R2.cjs.map +0 -1
  138. package/dist/chunk-F37IQKBQ.cjs +0 -4
  139. package/dist/chunk-F4SQXAXR.js.map +0 -1
  140. package/dist/chunk-I7OAONIW.cjs.map +0 -1
  141. package/dist/chunk-KUNWELBC.cjs.map +0 -1
  142. package/dist/chunk-LOYT3WUA.js.map +0 -1
  143. package/dist/chunk-OFPVAPUH.js.map +0 -1
  144. package/dist/chunk-P2IJ74UW.js.map +0 -1
  145. package/dist/chunk-W5CF7DLB.cjs.map +0 -1
  146. package/dist/chunk-ZOU4K5MI.cjs.map +0 -1
  147. package/dist/chunk-ZPQQN52E.js +0 -3
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkW5CF7DLB_cjs = require('./chunk-W5CF7DLB.cjs');
3
+ var chunk6C6CR7JZ_cjs = require('./chunk-6C6CR7JZ.cjs');
4
4
  var chunkV3VLOOSW_cjs = require('./chunk-V3VLOOSW.cjs');
5
5
  var chunk4D4KB75Y_cjs = require('./chunk-4D4KB75Y.cjs');
6
- var chunkZOU4K5MI_cjs = require('./chunk-ZOU4K5MI.cjs');
6
+ var chunkZ637KSJF_cjs = require('./chunk-Z637KSJF.cjs');
7
7
  var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
8
- var chunkI7OAONIW_cjs = require('./chunk-I7OAONIW.cjs');
8
+ var chunkUFCYMOYH_cjs = require('./chunk-UFCYMOYH.cjs');
9
9
  var chunk6TEQIYXV_cjs = require('./chunk-6TEQIYXV.cjs');
10
10
  var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
11
11
  var chunkV5WKCX3G_cjs = require('./chunk-V5WKCX3G.cjs');
@@ -122,7 +122,7 @@ async function findScorer(mastra, entityId, entityType, scorerId) {
122
122
 
123
123
  // src/mastra/index.ts
124
124
  var _Mastra_decorators, _init;
125
- _Mastra_decorators = [chunkZOU4K5MI_cjs.InstrumentClass({
125
+ _Mastra_decorators = [chunkZ637KSJF_cjs.InstrumentClass({
126
126
  prefix: "mastra",
127
127
  excludeMethods: ["getLogger", "getTelemetry"]
128
128
  })];
@@ -215,7 +215,7 @@ exports.Mastra = class Mastra {
215
215
  this.#events[topic] = config?.events?.[topic] ?? [];
216
216
  }
217
217
  }
218
- const workflowEventProcessor = new chunkW5CF7DLB_cjs.WorkflowEventProcessor({
218
+ const workflowEventProcessor = new chunk6C6CR7JZ_cjs.WorkflowEventProcessor({
219
219
  mastra: this
220
220
  });
221
221
  const workflowEventCb = async (event, cb) => {
@@ -250,12 +250,12 @@ exports.Mastra = class Mastra {
250
250
  if (storage) {
251
251
  storage = chunkV3VLOOSW_cjs.augmentWithInit(storage);
252
252
  }
253
- this.#telemetry = chunkZOU4K5MI_cjs.Telemetry.init(config?.telemetry);
253
+ this.#telemetry = chunkZ637KSJF_cjs.Telemetry.init(config?.telemetry);
254
254
  if (config?.telemetry?.enabled !== false && typeof globalThis !== "undefined" && globalThis.___MASTRA_TELEMETRY___ !== true) {
255
255
  this.#logger?.warn(`Mastra telemetry is enabled, but the required instrumentation file was not loaded. If you are using Mastra outside of the mastra server environment, see: https://mastra.ai/en/docs/observability/tracing#tracing-outside-mastra-server-environment`, `If you are using a custom instrumentation file or want to disable this warning, set the globalThis.___MASTRA_TELEMETRY___ variable to true in your instrumentation file.`);
256
256
  }
257
257
  if (config?.observability) {
258
- chunkI7OAONIW_cjs.setupAITracing(config.observability);
258
+ chunkUFCYMOYH_cjs.setupAITracing(config.observability);
259
259
  }
260
260
  if (this.#telemetry && storage) {
261
261
  this.#storage = this.#telemetry.traceClass(storage, {
@@ -432,7 +432,7 @@ do:
432
432
  * Register this Mastra instance with AI tracing exporters that need it
433
433
  */
434
434
  registerAITracingExporters() {
435
- const allTracingInstances = chunkI7OAONIW_cjs.getAllAITracing();
435
+ const allTracingInstances = chunkUFCYMOYH_cjs.getAllAITracing();
436
436
  allTracingInstances.forEach(tracing => {
437
437
  const exporters = tracing.getExporters();
438
438
  exporters.forEach(exporter => {
@@ -446,7 +446,7 @@ do:
446
446
  * Initialize all AI tracing exporters after registration is complete
447
447
  */
448
448
  initAITracingExporters() {
449
- const allTracingInstances = chunkI7OAONIW_cjs.getAllAITracing();
449
+ const allTracingInstances = chunkUFCYMOYH_cjs.getAllAITracing();
450
450
  allTracingInstances.forEach(tracing => {
451
451
  const exporters = tracing.getExporters();
452
452
  exporters.forEach(exporter => {
@@ -704,13 +704,13 @@ do:
704
704
  this.#mcpServers?.[key]?.__setLogger(this.#logger);
705
705
  });
706
706
  }
707
- const allTracingInstances = chunkI7OAONIW_cjs.getAllAITracing();
707
+ const allTracingInstances = chunkUFCYMOYH_cjs.getAllAITracing();
708
708
  allTracingInstances.forEach(instance => {
709
709
  instance.__setLogger(this.#logger);
710
710
  });
711
711
  }
712
712
  setTelemetry(telemetry) {
713
- this.#telemetry = chunkZOU4K5MI_cjs.Telemetry.init(telemetry);
713
+ this.#telemetry = chunkZ637KSJF_cjs.Telemetry.init(telemetry);
714
714
  if (this.#agents) {
715
715
  Object.keys(this.#agents).forEach(key => {
716
716
  if (this.#telemetry) {
@@ -1002,7 +1002,7 @@ do:
1002
1002
  * Shutdown Mastra and clean up all resources
1003
1003
  */
1004
1004
  async shutdown() {
1005
- await chunkI7OAONIW_cjs.shutdownAITracingRegistry();
1005
+ await chunkUFCYMOYH_cjs.shutdownAITracingRegistry();
1006
1006
  await this.stopEventEngine();
1007
1007
  this.#logger?.info("Mastra shutdown completed");
1008
1008
  }
@@ -1013,5 +1013,5 @@ exports.Mastra = /*@__PURE__*/(_ => {
1013
1013
  chunkEBVYYC2Q_cjs.__runInitializers(_init, 1, exports.Mastra);
1014
1014
  return exports.Mastra;
1015
1015
  })();
1016
- //# sourceMappingURL=chunk-DZADAEAF.cjs.map
1017
- //# sourceMappingURL=chunk-DZADAEAF.cjs.map
1016
+ //# sourceMappingURL=chunk-IQ5ISXGO.cjs.map
1017
+ //# sourceMappingURL=chunk-IQ5ISXGO.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","InstrumentClass","Mastra","WorkflowEventProcessor","noopLogger","LogLevel","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-DZADAEAF.cjs","sourcesContent":["import EventEmitter from 'events';\nimport { PubSub } from './pubsub';\nimport type { Event } from './types';\n\nexport class EventEmitterPubSub extends PubSub {\n private emitter: EventEmitter;\n\n constructor() {\n super();\n this.emitter = new EventEmitter();\n }\n\n async publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void> {\n const id = crypto.randomUUID();\n const createdAt = new Date();\n this.emitter.emit(topic, {\n ...event,\n id,\n createdAt,\n });\n }\n\n async subscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.on(topic, cb);\n }\n\n async unsubscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.off(topic, cb);\n }\n\n async flush(): Promise<void> {\n // no-op\n }\n}\n","import type { Mastra } from '..';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport type { ScoringHookInput } from '../scores';\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n if (!mastra.getStorage()) {\n return;\n }\n\n const storage = mastra.getStorage();\n const entityId = hookData.entity.id;\n const entityType = hookData.entityType;\n const scorer = hookData.scorer;\n try {\n const scorerToUse = await findScorer(mastra, entityId, entityType, scorer.id);\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 ${hookData.scorer.id} not found`,\n });\n }\n\n let input = hookData.input;\n let output = hookData.output;\n\n if (entityType !== 'AGENT') {\n output = { object: hookData.output };\n }\n\n const { structuredOutput, ...rest } = hookData;\n\n const runResult = await scorerToUse.scorer.run({\n ...rest,\n input,\n output,\n });\n\n const payload = {\n ...rest,\n ...runResult,\n entityId,\n scorerId: hookData.scorer.id,\n metadata: {\n structuredOutput: !!structuredOutput,\n },\n };\n await storage?.saveScore(payload);\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: scorer.id,\n entityId,\n entityType,\n },\n },\n error,\n );\n\n mastra.getLogger()?.trackException(mastraError);\n mastra.getLogger()?.error(mastraError.toString());\n }\n };\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n let scorerToUse;\n if (entityType === 'AGENT') {\n const scorers = await mastra.getAgentById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n } else if (entityType === 'WORKFLOW') {\n const scorers = await mastra.getWorkflowById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n }\n\n // Fallback to mastra-registered scorer\n if (!scorerToUse) {\n const mastraRegisteredScorer = mastra.getScorerByName(scorerId);\n scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n }\n\n return scorerToUse;\n}\n","import type { Agent } from '../agent';\nimport { getAllAITracing, setupAITracing, shutdownAITracingRegistry } from '../ai-tracing';\nimport type { AITracingConfig } from '../ai-tracing';\nimport type { BundlerConfig } from '../bundler/types';\nimport type { MastraDeployer } from '../deployer';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { EventEmitterPubSub } from '../events/event-emitter';\nimport type { PubSub } from '../events/pubsub';\nimport type { Event } from '../events/types';\nimport { AvailableHooks, registerHook } from '../hooks';\nimport { LogLevel, noopLogger, ConsoleLogger } from '../logger';\nimport type { IMastraLogger } from '../logger';\nimport type { MCPServerBase } from '../mcp';\nimport type { MastraMemory } from '../memory/memory';\nimport type { AgentNetwork } from '../network';\nimport type { NewAgentNetwork } from '../network/vNext';\nimport type { MastraScorer } from '../scores';\nimport type { Middleware, ServerConfig } from '../server/types';\nimport type { MastraStorage } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport { InstrumentClass, Telemetry } from '../telemetry';\nimport type { OtelConfig } from '../telemetry';\nimport type { MastraTTS } from '../tts';\nimport type { MastraIdGenerator } from '../types';\nimport type { MastraVector } from '../vector';\nimport type { Workflow } from '../workflows';\nimport { WorkflowEventProcessor } from '../workflows/evented/workflow-event-processor';\nimport type { LegacyWorkflow } from '../workflows/legacy';\nimport { createOnScorerHook } from './hooks';\n\nexport interface Config<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TNetworks extends Record<string, AgentNetwork> = Record<string, AgentNetwork>,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n agents?: TAgents;\n networks?: TNetworks;\n vnext_networks?: TVNextNetworks;\n storage?: MastraStorage;\n vectors?: TVectors;\n logger?: TLogger | false;\n legacy_workflows?: TLegacyWorkflows;\n workflows?: TWorkflows;\n tts?: TTTS;\n telemetry?: OtelConfig;\n observability?: AITracingConfig;\n idGenerator?: MastraIdGenerator;\n deployer?: MastraDeployer;\n server?: ServerConfig;\n mcpServers?: TMCPServers;\n bundler?: BundlerConfig;\n pubsub?: PubSub;\n scorers?: TScorers;\n\n /**\n * Server middleware functions to be applied to API routes\n * Each middleware can specify a path pattern (defaults to '/api/*')\n * @deprecated use server.middleware instead\n */\n serverMiddleware?: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path?: string;\n }>;\n\n // @deprecated add memory to your Agent directly instead\n memory?: never;\n\n events?: {\n [topic: string]: (\n event: Event,\n cb?: () => Promise<void>,\n ) => Promise<void> | ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n };\n}\n\n@InstrumentClass({\n prefix: 'mastra',\n excludeMethods: ['getLogger', 'getTelemetry'],\n})\nexport class Mastra<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TNetworks extends Record<string, AgentNetwork> = Record<string, AgentNetwork>,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n #vectors?: TVectors;\n #agents: TAgents;\n #logger: TLogger;\n #legacy_workflows: TLegacyWorkflows;\n #workflows: TWorkflows;\n #tts?: TTTS;\n #deployer?: MastraDeployer;\n #serverMiddleware: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path: string;\n }> = [];\n #telemetry?: Telemetry;\n #storage?: MastraStorage;\n #memory?: MastraMemory;\n #networks?: TNetworks;\n #vnext_networks?: TVNextNetworks;\n #scorers?: TScorers;\n #server?: ServerConfig;\n #mcpServers?: TMCPServers;\n #bundler?: BundlerConfig;\n #idGenerator?: MastraIdGenerator;\n #pubsub: PubSub;\n #events: {\n [topic: string]: ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n } = {};\n\n /**\n * @deprecated use getTelemetry() instead\n */\n get telemetry() {\n return this.#telemetry;\n }\n\n /**\n * @deprecated use getStorage() instead\n */\n get storage() {\n return this.#storage;\n }\n\n /**\n * @deprecated use getMemory() instead\n */\n get memory() {\n return this.#memory;\n }\n\n get pubsub() {\n return this.#pubsub;\n }\n\n public getIdGenerator() {\n return this.#idGenerator;\n }\n\n /**\n * Generate a unique identifier using the configured generator or default to crypto.randomUUID()\n * @returns A unique string ID\n */\n public generateId(): string {\n if (this.#idGenerator) {\n const id = this.#idGenerator();\n if (!id) {\n const error = new MastraError({\n id: 'MASTRA_ID_GENERATOR_RETURNED_EMPTY_STRING',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'ID generator returned an empty string, which is not allowed',\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return id;\n }\n return crypto.randomUUID();\n }\n\n public setIdGenerator(idGenerator: MastraIdGenerator) {\n this.#idGenerator = idGenerator;\n }\n\n constructor(\n config?: Config<\n TAgents,\n TLegacyWorkflows,\n TWorkflows,\n TVectors,\n TTTS,\n TLogger,\n TNetworks,\n TVNextNetworks,\n TMCPServers,\n TScorers\n >,\n ) {\n // Store server middleware with default path\n if (config?.serverMiddleware) {\n this.#serverMiddleware = config.serverMiddleware.map(m => ({\n handler: m.handler,\n path: m.path || '/api/*',\n }));\n }\n\n /*\n Events\n */\n if (config?.pubsub) {\n this.#pubsub = config.pubsub;\n } else {\n this.#pubsub = new EventEmitterPubSub();\n }\n\n this.#events = {};\n for (const topic in config?.events ?? {}) {\n if (!Array.isArray(config?.events?.[topic])) {\n this.#events[topic] = [config?.events?.[topic] as any];\n } else {\n this.#events[topic] = config?.events?.[topic] ?? [];\n }\n }\n\n const workflowEventProcessor = new WorkflowEventProcessor({ mastra: this });\n const workflowEventCb = async (event: Event, cb?: () => Promise<void>): Promise<void> => {\n try {\n await workflowEventProcessor.process(event, cb);\n } catch (e) {\n console.error('Error processing event', e);\n }\n };\n if (this.#events.workflows) {\n this.#events.workflows.push(workflowEventCb);\n } else {\n this.#events.workflows = [workflowEventCb];\n }\n\n /*\n Logger\n */\n\n let logger: TLogger;\n if (config?.logger === false) {\n logger = noopLogger as unknown as TLogger;\n } else {\n if (config?.logger) {\n logger = config.logger;\n } else {\n const levelOnEnv =\n process.env.NODE_ENV === 'production' && process.env.MASTRA_DEV !== 'true' ? LogLevel.WARN : LogLevel.INFO;\n logger = new ConsoleLogger({ name: 'Mastra', level: levelOnEnv }) as unknown as TLogger;\n }\n }\n this.#logger = logger;\n\n this.#idGenerator = config?.idGenerator;\n\n let storage = config?.storage;\n\n if (storage) {\n storage = augmentWithInit(storage);\n }\n\n /*\n Telemetry\n */\n\n this.#telemetry = Telemetry.init(config?.telemetry);\n\n // Warn if telemetry is enabled but the instrumentation global is not set\n if (\n config?.telemetry?.enabled !== false &&\n typeof globalThis !== 'undefined' &&\n (globalThis as any).___MASTRA_TELEMETRY___ !== true\n ) {\n this.#logger?.warn(\n `Mastra telemetry is enabled, but the required instrumentation file was not loaded. ` +\n `If you are using Mastra outside of the mastra server environment, see: https://mastra.ai/en/docs/observability/tracing#tracing-outside-mastra-server-environment`,\n `If you are using a custom instrumentation file or want to disable this warning, set the globalThis.___MASTRA_TELEMETRY___ variable to true in your instrumentation file.`,\n );\n }\n\n /*\n AI Tracing\n */\n\n if (config?.observability) {\n setupAITracing(config.observability);\n }\n\n /*\n Storage\n */\n if (this.#telemetry && storage) {\n this.#storage = this.#telemetry.traceClass(storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry', 'batchTraceInsert', 'getTraces', 'getEvalsByAgentName'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n } else {\n this.#storage = storage;\n }\n\n /*\n Vectors\n */\n if (config?.vectors) {\n let vectors: Record<string, MastraVector> = {};\n Object.entries(config.vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n } else {\n vectors[key] = vector;\n }\n });\n\n this.#vectors = vectors as TVectors;\n }\n\n if (config?.networks) {\n this.#networks = config.networks;\n }\n\n if (config?.vnext_networks) {\n this.#vnext_networks = config.vnext_networks;\n }\n\n if (config?.mcpServers) {\n this.#mcpServers = config.mcpServers;\n\n // Set logger/telemetry/Mastra instance/id for MCP servers\n Object.entries(this.#mcpServers).forEach(([key, server]) => {\n server.setId(key);\n if (this.#telemetry) {\n server.__setTelemetry(this.#telemetry);\n }\n\n server.__registerMastra(this);\n server.__setLogger(this.getLogger());\n });\n }\n\n if (config && `memory` in config) {\n const error = new MastraError({\n id: 'MASTRA_CONSTRUCTOR_INVALID_MEMORY_CONFIG',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `\n Memory should be added to Agents, not to Mastra.\n\nInstead of:\n new Mastra({ memory: new Memory() })\n\ndo:\n new Agent({ memory: new Memory() })\n`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (config?.tts) {\n this.#tts = config.tts;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#tts?.[key]) {\n if (this.#telemetry) {\n // @ts-ignore\n this.#tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#tts[key].__setTelemetry(this.#telemetry);\n }\n }\n });\n }\n\n /*\n Agents\n */\n const agents: Record<string, Agent> = {};\n if (config?.agents) {\n Object.entries(config.agents).forEach(([key, agent]) => {\n if (agents[key]) {\n const error = new MastraError({\n id: 'MASTRA_AGENT_REGISTRATION_DUPLICATE_ID',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ID:${key} already exists`,\n details: {\n agentId: key,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n agent.__registerMastra(this);\n\n agent.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n\n agents[key] = agent;\n });\n }\n\n this.#agents = agents as TAgents;\n\n /*\n Networks\n */\n this.#networks = {} as TNetworks;\n this.#vnext_networks = {} as TVNextNetworks;\n\n if (config?.networks) {\n Object.entries(config.networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#networks[key] = network;\n });\n }\n\n if (config?.vnext_networks) {\n Object.entries(config.vnext_networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#vnext_networks[key] = network;\n });\n }\n\n /**\n * Scorers\n */\n\n const scorers = {} as Record<string, MastraScorer<any, any, any, any>>;\n if (config?.scorers) {\n Object.entries(config.scorers).forEach(([key, scorer]) => {\n scorers[key] = scorer;\n });\n }\n this.#scorers = scorers as TScorers;\n\n /*\n Legacy Workflows\n */\n this.#legacy_workflows = {} as TLegacyWorkflows;\n\n if (config?.legacy_workflows) {\n Object.entries(config.legacy_workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#legacy_workflows[key] = workflow;\n\n const workflowSteps = Object.values(workflow.steps).filter(step => !!step.workflowId && !!step.workflow);\n if (workflowSteps.length > 0) {\n workflowSteps.forEach(step => {\n // @ts-ignore\n this.#legacy_workflows[step.workflowId] = step.workflow;\n });\n }\n });\n }\n\n this.#workflows = {} as TWorkflows;\n if (config?.workflows) {\n Object.entries(config.workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#workflows[key] = workflow;\n });\n }\n\n if (config?.server) {\n this.#server = config.server;\n }\n\n registerHook(AvailableHooks.ON_SCORER_RUN, createOnScorerHook(this));\n\n /*\n Register Mastra instance with AI tracing exporters and initialize them\n */\n if (config?.observability) {\n this.registerAITracingExporters();\n this.initAITracingExporters();\n }\n\n this.setLogger({ logger });\n }\n\n /**\n * Register this Mastra instance with AI tracing exporters that need it\n */\n private registerAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Check if exporter has __registerMastra method\n if ('__registerMastra' in exporter && typeof (exporter as any).__registerMastra === 'function') {\n (exporter as any).__registerMastra(this);\n }\n });\n });\n }\n\n /**\n * Initialize all AI tracing exporters after registration is complete\n */\n private initAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Initialize exporter if it has an init method\n if ('init' in exporter && typeof exporter.init === 'function') {\n try {\n exporter.init();\n } catch (error) {\n this.#logger?.warn('Failed to initialize AI tracing exporter', {\n exporterName: exporter.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n });\n });\n }\n\n public getAgent<TAgentName extends keyof TAgents>(name: TAgentName): TAgents[TAgentName] {\n const agent = this.#agents?.[name];\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ${String(name)} not found`,\n details: {\n status: 404,\n agentName: String(name),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return this.#agents[name];\n }\n\n public getAgentById(id: string): Agent {\n let agent = Object.values(this.#agents).find(a => a.id === id);\n\n if (!agent) {\n try {\n agent = this.getAgent(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_AGENT_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with id ${String(id)} not found`,\n details: {\n status: 404,\n agentId: String(id),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return agent;\n }\n\n public getAgents() {\n return this.#agents;\n }\n\n public getVector<TVectorName extends keyof TVectors>(name: TVectorName): TVectors[TVectorName] {\n const vector = this.#vectors?.[name];\n if (!vector) {\n const error = new MastraError({\n id: 'MASTRA_GET_VECTOR_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Vector with name ${String(name)} not found`,\n details: {\n status: 404,\n vectorName: String(name),\n vectors: Object.keys(this.#vectors ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return vector;\n }\n\n public getVectors() {\n return this.#vectors;\n }\n\n public getDeployer() {\n return this.#deployer;\n }\n\n public legacy_getWorkflow<TWorkflowId extends keyof TLegacyWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TLegacyWorkflows[TWorkflowId] {\n const workflow = this.#legacy_workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_LEGACY_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#legacy_workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TLegacyWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflow<TWorkflowId extends keyof TWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TWorkflows[TWorkflowId] {\n const workflow = this.#workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflowById(id: string): Workflow {\n let workflow = Object.values(this.#workflows).find(a => a.id === id);\n\n if (!workflow) {\n try {\n workflow = this.getWorkflow(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with id ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return workflow;\n }\n\n public legacy_getWorkflows(props: { serialized?: boolean } = {}): Record<string, LegacyWorkflow> {\n if (props.serialized) {\n return Object.entries(this.#legacy_workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#legacy_workflows;\n }\n\n public getScorers() {\n return this.#scorers;\n }\n\n public getScorer<TScorerKey extends keyof TScorers>(key: TScorerKey): TScorers[TScorerKey] {\n const scorer = this.#scorers?.[key];\n if (!scorer) {\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ${String(key)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return scorer;\n }\n\n public getScorerByName(name: string): MastraScorer<any, any, any, any> {\n for (const [_key, value] of Object.entries(this.#scorers ?? {})) {\n if (value.name === name) {\n return value;\n }\n }\n\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with name ${String(name)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n public getWorkflows(props: { serialized?: boolean } = {}): Record<string, Workflow> {\n if (props.serialized) {\n return Object.entries(this.#workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#workflows;\n }\n\n public setStorage(storage: MastraStorage) {\n this.#storage = augmentWithInit(storage);\n }\n\n public setLogger({ logger }: { logger: TLogger }) {\n this.#logger = logger;\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n this.#agents?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#memory) {\n this.#memory.__setLogger(this.#logger);\n }\n\n if (this.#deployer) {\n this.#deployer.__setLogger(this.#logger);\n }\n\n if (this.#tts) {\n Object.keys(this.#tts).forEach(key => {\n this.#tts?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#storage) {\n this.#storage.__setLogger(this.#logger);\n }\n\n if (this.#vectors) {\n Object.keys(this.#vectors).forEach(key => {\n this.#vectors?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#mcpServers) {\n Object.keys(this.#mcpServers).forEach(key => {\n this.#mcpServers?.[key]?.__setLogger(this.#logger);\n });\n }\n\n // Set logger for AI tracing instances\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(instance => {\n instance.__setLogger(this.#logger);\n });\n }\n\n public setTelemetry(telemetry: OtelConfig) {\n this.#telemetry = Telemetry.init(telemetry);\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n if (this.#telemetry) {\n this.#agents?.[key]?.__setTelemetry(this.#telemetry);\n }\n });\n }\n\n if (this.#memory) {\n this.#memory = this.#telemetry.traceClass(this.#memory, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#memory.__setTelemetry(this.#telemetry);\n }\n\n if (this.#deployer) {\n this.#deployer = this.#telemetry.traceClass(this.#deployer, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#deployer.__setTelemetry(this.#telemetry);\n }\n\n if (this.#tts) {\n let tts = {} as Record<string, MastraTTS>;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#telemetry) {\n tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n tts[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#tts = tts as TTTS;\n }\n\n if (this.#storage) {\n this.#storage = this.#telemetry.traceClass(this.#storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n }\n\n if (this.#vectors) {\n let vectors = {} as Record<string, MastraVector>;\n Object.entries(this.#vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#vectors = vectors as TVectors;\n }\n }\n\n public getTTS() {\n return this.#tts;\n }\n\n public getLogger() {\n return this.#logger;\n }\n\n public getTelemetry() {\n return this.#telemetry;\n }\n\n public getMemory() {\n return this.#memory;\n }\n\n public getStorage() {\n return this.#storage;\n }\n\n public getServerMiddleware() {\n return this.#serverMiddleware;\n }\n\n public setServerMiddleware(serverMiddleware: Middleware | Middleware[]) {\n if (typeof serverMiddleware === 'function') {\n this.#serverMiddleware = [\n {\n handler: serverMiddleware,\n path: '/api/*',\n },\n ];\n return;\n }\n\n if (!Array.isArray(serverMiddleware)) {\n const error = new MastraError({\n id: 'MASTRA_SET_SERVER_MIDDLEWARE_INVALID_TYPE',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Invalid middleware: expected a function or array, received ${typeof serverMiddleware}`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n this.#serverMiddleware = serverMiddleware.map(m => {\n if (typeof m === 'function') {\n return {\n handler: m,\n path: '/api/*',\n };\n }\n return {\n handler: m.handler,\n path: m.path || '/api/*',\n };\n });\n }\n\n public getNetworks() {\n return Object.values(this.#networks || {});\n }\n\n public vnext_getNetworks() {\n return Object.values(this.#vnext_networks || {});\n }\n\n public getServer() {\n return this.#server;\n }\n\n public getBundlerConfig() {\n return this.#bundler;\n }\n\n /**\n * Get a specific network by ID\n * @param networkId - The ID of the network to retrieve\n * @returns The network with the specified ID, or undefined if not found\n */\n public getNetwork(networkId: string): AgentNetwork | undefined {\n const networks = this.getNetworks();\n return networks.find(network => {\n const routingAgent = network.getRoutingAgent();\n return network.formatAgentId(routingAgent.name) === networkId;\n });\n }\n\n public vnext_getNetwork(networkId: string): NewAgentNetwork | undefined {\n const networks = this.vnext_getNetworks();\n return networks.find(network => network.id === networkId);\n }\n\n public async getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n runId: string;\n transportId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger?.getLogsByRunId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not configured or does not support getLogsByRunId operation',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return await this.#logger.getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n });\n }\n\n public async getLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not set',\n details: {\n transportId,\n },\n });\n throw error;\n }\n\n return await this.#logger.getLogs(transportId, params);\n }\n\n /**\n * Get all registered MCP server instances.\n * @returns A record of MCP server ID to MCPServerBase instance, or undefined if none are registered.\n */\n public getMCPServers(): Record<string, MCPServerBase> | undefined {\n return this.#mcpServers;\n }\n\n /**\n * Get a specific MCP server instance.\n * If a version is provided, it attempts to find the server with that exact logical ID and version.\n * If no version is provided, it returns the server with the specified logical ID that has the most recent releaseDate.\n * The logical ID should match the `id` property of the MCPServer instance (typically set via MCPServerConfig.id).\n * @param serverId - The logical ID of the MCP server to retrieve.\n * @param version - Optional specific version of the MCP server to retrieve.\n * @returns The MCP server instance, or undefined if not found or if the specific version is not found.\n */\n public getMCPServer(serverId: string, version?: string): MCPServerBase | undefined {\n if (!this.#mcpServers) {\n return undefined;\n }\n\n const allRegisteredServers = Object.values(this.#mcpServers || {});\n\n const matchingLogicalIdServers = allRegisteredServers.filter(server => server.id === serverId);\n\n if (matchingLogicalIdServers.length === 0) {\n this.#logger?.debug(`No MCP servers found with logical ID: ${serverId}`);\n return undefined;\n }\n\n if (version) {\n const specificVersionServer = matchingLogicalIdServers.find(server => server.version === version);\n if (!specificVersionServer) {\n this.#logger?.debug(`MCP server with logical ID '${serverId}' found, but not version '${version}'.`);\n }\n return specificVersionServer;\n } else {\n // No version specified, find the one with the most recent releaseDate\n if (matchingLogicalIdServers.length === 1) {\n return matchingLogicalIdServers[0];\n }\n\n matchingLogicalIdServers.sort((a, b) => {\n // Ensure releaseDate exists and is a string before creating a Date object\n const dateAVal = a.releaseDate && typeof a.releaseDate === 'string' ? new Date(a.releaseDate).getTime() : NaN;\n const dateBVal = b.releaseDate && typeof b.releaseDate === 'string' ? new Date(b.releaseDate).getTime() : NaN;\n\n if (isNaN(dateAVal) && isNaN(dateBVal)) return 0;\n if (isNaN(dateAVal)) return 1; // Treat invalid/missing dates as older\n if (isNaN(dateBVal)) return -1; // Treat invalid/missing dates as older\n\n return dateBVal - dateAVal; // Sorts in descending order of time (latest first)\n });\n\n // After sorting, the first element should be the latest if its date is valid\n if (matchingLogicalIdServers.length > 0) {\n const latestServer = matchingLogicalIdServers[0];\n if (\n latestServer &&\n latestServer.releaseDate &&\n typeof latestServer.releaseDate === 'string' &&\n !isNaN(new Date(latestServer.releaseDate).getTime())\n ) {\n return latestServer;\n }\n }\n this.#logger?.warn(\n `Could not determine the latest server for logical ID '${serverId}' due to invalid or missing release dates, or no servers left after filtering.`,\n );\n return undefined;\n }\n }\n\n public async addTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.subscribe(topic, listener);\n }\n\n public async removeTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n\n public async startEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.subscribe(topic, listener);\n }\n }\n }\n\n public async stopEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n }\n\n await this.#pubsub.flush();\n }\n\n /**\n * Shutdown Mastra and clean up all resources\n */\n async shutdown(): Promise<void> {\n // Shutdown AI tracing registry and all instances\n await shutdownAITracingRegistry();\n await this.stopEventEngine();\n\n this.#logger?.info('Mastra shutdown completed');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","InstrumentClass","Mastra","WorkflowEventProcessor","noopLogger","LogLevel","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-IQ5ISXGO.cjs","sourcesContent":["import EventEmitter from 'events';\nimport { PubSub } from './pubsub';\nimport type { Event } from './types';\n\nexport class EventEmitterPubSub extends PubSub {\n private emitter: EventEmitter;\n\n constructor() {\n super();\n this.emitter = new EventEmitter();\n }\n\n async publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void> {\n const id = crypto.randomUUID();\n const createdAt = new Date();\n this.emitter.emit(topic, {\n ...event,\n id,\n createdAt,\n });\n }\n\n async subscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.on(topic, cb);\n }\n\n async unsubscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.off(topic, cb);\n }\n\n async flush(): Promise<void> {\n // no-op\n }\n}\n","import type { Mastra } from '..';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport type { ScoringHookInput } from '../scores';\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n if (!mastra.getStorage()) {\n return;\n }\n\n const storage = mastra.getStorage();\n const entityId = hookData.entity.id;\n const entityType = hookData.entityType;\n const scorer = hookData.scorer;\n try {\n const scorerToUse = await findScorer(mastra, entityId, entityType, scorer.id);\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 ${hookData.scorer.id} not found`,\n });\n }\n\n let input = hookData.input;\n let output = hookData.output;\n\n if (entityType !== 'AGENT') {\n output = { object: hookData.output };\n }\n\n const { structuredOutput, ...rest } = hookData;\n\n const runResult = await scorerToUse.scorer.run({\n ...rest,\n input,\n output,\n });\n\n const payload = {\n ...rest,\n ...runResult,\n entityId,\n scorerId: hookData.scorer.id,\n metadata: {\n structuredOutput: !!structuredOutput,\n },\n };\n await storage?.saveScore(payload);\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: scorer.id,\n entityId,\n entityType,\n },\n },\n error,\n );\n\n mastra.getLogger()?.trackException(mastraError);\n mastra.getLogger()?.error(mastraError.toString());\n }\n };\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n let scorerToUse;\n if (entityType === 'AGENT') {\n const scorers = await mastra.getAgentById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n } else if (entityType === 'WORKFLOW') {\n const scorers = await mastra.getWorkflowById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n }\n\n // Fallback to mastra-registered scorer\n if (!scorerToUse) {\n const mastraRegisteredScorer = mastra.getScorerByName(scorerId);\n scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n }\n\n return scorerToUse;\n}\n","import type { Agent } from '../agent';\nimport { getAllAITracing, setupAITracing, shutdownAITracingRegistry } from '../ai-tracing';\nimport type { AITracingConfig } from '../ai-tracing';\nimport type { BundlerConfig } from '../bundler/types';\nimport type { MastraDeployer } from '../deployer';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { EventEmitterPubSub } from '../events/event-emitter';\nimport type { PubSub } from '../events/pubsub';\nimport type { Event } from '../events/types';\nimport { AvailableHooks, registerHook } from '../hooks';\nimport { LogLevel, noopLogger, ConsoleLogger } from '../logger';\nimport type { IMastraLogger } from '../logger';\nimport type { MCPServerBase } from '../mcp';\nimport type { MastraMemory } from '../memory/memory';\nimport type { AgentNetwork } from '../network';\nimport type { NewAgentNetwork } from '../network/vNext';\nimport type { MastraScorer } from '../scores';\nimport type { Middleware, ServerConfig } from '../server/types';\nimport type { MastraStorage } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport { InstrumentClass, Telemetry } from '../telemetry';\nimport type { OtelConfig } from '../telemetry';\nimport type { MastraTTS } from '../tts';\nimport type { MastraIdGenerator } from '../types';\nimport type { MastraVector } from '../vector';\nimport type { Workflow } from '../workflows';\nimport { WorkflowEventProcessor } from '../workflows/evented/workflow-event-processor';\nimport type { LegacyWorkflow } from '../workflows/legacy';\nimport { createOnScorerHook } from './hooks';\n\nexport interface Config<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TNetworks extends Record<string, AgentNetwork> = Record<string, AgentNetwork>,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n agents?: TAgents;\n networks?: TNetworks;\n vnext_networks?: TVNextNetworks;\n storage?: MastraStorage;\n vectors?: TVectors;\n logger?: TLogger | false;\n legacy_workflows?: TLegacyWorkflows;\n workflows?: TWorkflows;\n tts?: TTTS;\n telemetry?: OtelConfig;\n observability?: AITracingConfig;\n idGenerator?: MastraIdGenerator;\n deployer?: MastraDeployer;\n server?: ServerConfig;\n mcpServers?: TMCPServers;\n bundler?: BundlerConfig;\n pubsub?: PubSub;\n scorers?: TScorers;\n\n /**\n * Server middleware functions to be applied to API routes\n * Each middleware can specify a path pattern (defaults to '/api/*')\n * @deprecated use server.middleware instead\n */\n serverMiddleware?: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path?: string;\n }>;\n\n // @deprecated add memory to your Agent directly instead\n memory?: never;\n\n events?: {\n [topic: string]: (\n event: Event,\n cb?: () => Promise<void>,\n ) => Promise<void> | ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n };\n}\n\n@InstrumentClass({\n prefix: 'mastra',\n excludeMethods: ['getLogger', 'getTelemetry'],\n})\nexport class Mastra<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TNetworks extends Record<string, AgentNetwork> = Record<string, AgentNetwork>,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n #vectors?: TVectors;\n #agents: TAgents;\n #logger: TLogger;\n #legacy_workflows: TLegacyWorkflows;\n #workflows: TWorkflows;\n #tts?: TTTS;\n #deployer?: MastraDeployer;\n #serverMiddleware: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path: string;\n }> = [];\n #telemetry?: Telemetry;\n #storage?: MastraStorage;\n #memory?: MastraMemory;\n #networks?: TNetworks;\n #vnext_networks?: TVNextNetworks;\n #scorers?: TScorers;\n #server?: ServerConfig;\n #mcpServers?: TMCPServers;\n #bundler?: BundlerConfig;\n #idGenerator?: MastraIdGenerator;\n #pubsub: PubSub;\n #events: {\n [topic: string]: ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n } = {};\n\n /**\n * @deprecated use getTelemetry() instead\n */\n get telemetry() {\n return this.#telemetry;\n }\n\n /**\n * @deprecated use getStorage() instead\n */\n get storage() {\n return this.#storage;\n }\n\n /**\n * @deprecated use getMemory() instead\n */\n get memory() {\n return this.#memory;\n }\n\n get pubsub() {\n return this.#pubsub;\n }\n\n public getIdGenerator() {\n return this.#idGenerator;\n }\n\n /**\n * Generate a unique identifier using the configured generator or default to crypto.randomUUID()\n * @returns A unique string ID\n */\n public generateId(): string {\n if (this.#idGenerator) {\n const id = this.#idGenerator();\n if (!id) {\n const error = new MastraError({\n id: 'MASTRA_ID_GENERATOR_RETURNED_EMPTY_STRING',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'ID generator returned an empty string, which is not allowed',\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return id;\n }\n return crypto.randomUUID();\n }\n\n public setIdGenerator(idGenerator: MastraIdGenerator) {\n this.#idGenerator = idGenerator;\n }\n\n constructor(\n config?: Config<\n TAgents,\n TLegacyWorkflows,\n TWorkflows,\n TVectors,\n TTTS,\n TLogger,\n TNetworks,\n TVNextNetworks,\n TMCPServers,\n TScorers\n >,\n ) {\n // Store server middleware with default path\n if (config?.serverMiddleware) {\n this.#serverMiddleware = config.serverMiddleware.map(m => ({\n handler: m.handler,\n path: m.path || '/api/*',\n }));\n }\n\n /*\n Events\n */\n if (config?.pubsub) {\n this.#pubsub = config.pubsub;\n } else {\n this.#pubsub = new EventEmitterPubSub();\n }\n\n this.#events = {};\n for (const topic in config?.events ?? {}) {\n if (!Array.isArray(config?.events?.[topic])) {\n this.#events[topic] = [config?.events?.[topic] as any];\n } else {\n this.#events[topic] = config?.events?.[topic] ?? [];\n }\n }\n\n const workflowEventProcessor = new WorkflowEventProcessor({ mastra: this });\n const workflowEventCb = async (event: Event, cb?: () => Promise<void>): Promise<void> => {\n try {\n await workflowEventProcessor.process(event, cb);\n } catch (e) {\n console.error('Error processing event', e);\n }\n };\n if (this.#events.workflows) {\n this.#events.workflows.push(workflowEventCb);\n } else {\n this.#events.workflows = [workflowEventCb];\n }\n\n /*\n Logger\n */\n\n let logger: TLogger;\n if (config?.logger === false) {\n logger = noopLogger as unknown as TLogger;\n } else {\n if (config?.logger) {\n logger = config.logger;\n } else {\n const levelOnEnv =\n process.env.NODE_ENV === 'production' && process.env.MASTRA_DEV !== 'true' ? LogLevel.WARN : LogLevel.INFO;\n logger = new ConsoleLogger({ name: 'Mastra', level: levelOnEnv }) as unknown as TLogger;\n }\n }\n this.#logger = logger;\n\n this.#idGenerator = config?.idGenerator;\n\n let storage = config?.storage;\n\n if (storage) {\n storage = augmentWithInit(storage);\n }\n\n /*\n Telemetry\n */\n\n this.#telemetry = Telemetry.init(config?.telemetry);\n\n // Warn if telemetry is enabled but the instrumentation global is not set\n if (\n config?.telemetry?.enabled !== false &&\n typeof globalThis !== 'undefined' &&\n (globalThis as any).___MASTRA_TELEMETRY___ !== true\n ) {\n this.#logger?.warn(\n `Mastra telemetry is enabled, but the required instrumentation file was not loaded. ` +\n `If you are using Mastra outside of the mastra server environment, see: https://mastra.ai/en/docs/observability/tracing#tracing-outside-mastra-server-environment`,\n `If you are using a custom instrumentation file or want to disable this warning, set the globalThis.___MASTRA_TELEMETRY___ variable to true in your instrumentation file.`,\n );\n }\n\n /*\n AI Tracing\n */\n\n if (config?.observability) {\n setupAITracing(config.observability);\n }\n\n /*\n Storage\n */\n if (this.#telemetry && storage) {\n this.#storage = this.#telemetry.traceClass(storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry', 'batchTraceInsert', 'getTraces', 'getEvalsByAgentName'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n } else {\n this.#storage = storage;\n }\n\n /*\n Vectors\n */\n if (config?.vectors) {\n let vectors: Record<string, MastraVector> = {};\n Object.entries(config.vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n } else {\n vectors[key] = vector;\n }\n });\n\n this.#vectors = vectors as TVectors;\n }\n\n if (config?.networks) {\n this.#networks = config.networks;\n }\n\n if (config?.vnext_networks) {\n this.#vnext_networks = config.vnext_networks;\n }\n\n if (config?.mcpServers) {\n this.#mcpServers = config.mcpServers;\n\n // Set logger/telemetry/Mastra instance/id for MCP servers\n Object.entries(this.#mcpServers).forEach(([key, server]) => {\n server.setId(key);\n if (this.#telemetry) {\n server.__setTelemetry(this.#telemetry);\n }\n\n server.__registerMastra(this);\n server.__setLogger(this.getLogger());\n });\n }\n\n if (config && `memory` in config) {\n const error = new MastraError({\n id: 'MASTRA_CONSTRUCTOR_INVALID_MEMORY_CONFIG',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `\n Memory should be added to Agents, not to Mastra.\n\nInstead of:\n new Mastra({ memory: new Memory() })\n\ndo:\n new Agent({ memory: new Memory() })\n`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (config?.tts) {\n this.#tts = config.tts;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#tts?.[key]) {\n if (this.#telemetry) {\n // @ts-ignore\n this.#tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#tts[key].__setTelemetry(this.#telemetry);\n }\n }\n });\n }\n\n /*\n Agents\n */\n const agents: Record<string, Agent> = {};\n if (config?.agents) {\n Object.entries(config.agents).forEach(([key, agent]) => {\n if (agents[key]) {\n const error = new MastraError({\n id: 'MASTRA_AGENT_REGISTRATION_DUPLICATE_ID',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ID:${key} already exists`,\n details: {\n agentId: key,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n agent.__registerMastra(this);\n\n agent.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n\n agents[key] = agent;\n });\n }\n\n this.#agents = agents as TAgents;\n\n /*\n Networks\n */\n this.#networks = {} as TNetworks;\n this.#vnext_networks = {} as TVNextNetworks;\n\n if (config?.networks) {\n Object.entries(config.networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#networks[key] = network;\n });\n }\n\n if (config?.vnext_networks) {\n Object.entries(config.vnext_networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#vnext_networks[key] = network;\n });\n }\n\n /**\n * Scorers\n */\n\n const scorers = {} as Record<string, MastraScorer<any, any, any, any>>;\n if (config?.scorers) {\n Object.entries(config.scorers).forEach(([key, scorer]) => {\n scorers[key] = scorer;\n });\n }\n this.#scorers = scorers as TScorers;\n\n /*\n Legacy Workflows\n */\n this.#legacy_workflows = {} as TLegacyWorkflows;\n\n if (config?.legacy_workflows) {\n Object.entries(config.legacy_workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#legacy_workflows[key] = workflow;\n\n const workflowSteps = Object.values(workflow.steps).filter(step => !!step.workflowId && !!step.workflow);\n if (workflowSteps.length > 0) {\n workflowSteps.forEach(step => {\n // @ts-ignore\n this.#legacy_workflows[step.workflowId] = step.workflow;\n });\n }\n });\n }\n\n this.#workflows = {} as TWorkflows;\n if (config?.workflows) {\n Object.entries(config.workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#workflows[key] = workflow;\n });\n }\n\n if (config?.server) {\n this.#server = config.server;\n }\n\n registerHook(AvailableHooks.ON_SCORER_RUN, createOnScorerHook(this));\n\n /*\n Register Mastra instance with AI tracing exporters and initialize them\n */\n if (config?.observability) {\n this.registerAITracingExporters();\n this.initAITracingExporters();\n }\n\n this.setLogger({ logger });\n }\n\n /**\n * Register this Mastra instance with AI tracing exporters that need it\n */\n private registerAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Check if exporter has __registerMastra method\n if ('__registerMastra' in exporter && typeof (exporter as any).__registerMastra === 'function') {\n (exporter as any).__registerMastra(this);\n }\n });\n });\n }\n\n /**\n * Initialize all AI tracing exporters after registration is complete\n */\n private initAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Initialize exporter if it has an init method\n if ('init' in exporter && typeof exporter.init === 'function') {\n try {\n exporter.init();\n } catch (error) {\n this.#logger?.warn('Failed to initialize AI tracing exporter', {\n exporterName: exporter.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n });\n });\n }\n\n public getAgent<TAgentName extends keyof TAgents>(name: TAgentName): TAgents[TAgentName] {\n const agent = this.#agents?.[name];\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ${String(name)} not found`,\n details: {\n status: 404,\n agentName: String(name),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return this.#agents[name];\n }\n\n public getAgentById(id: string): Agent {\n let agent = Object.values(this.#agents).find(a => a.id === id);\n\n if (!agent) {\n try {\n agent = this.getAgent(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_AGENT_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with id ${String(id)} not found`,\n details: {\n status: 404,\n agentId: String(id),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return agent;\n }\n\n public getAgents() {\n return this.#agents;\n }\n\n public getVector<TVectorName extends keyof TVectors>(name: TVectorName): TVectors[TVectorName] {\n const vector = this.#vectors?.[name];\n if (!vector) {\n const error = new MastraError({\n id: 'MASTRA_GET_VECTOR_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Vector with name ${String(name)} not found`,\n details: {\n status: 404,\n vectorName: String(name),\n vectors: Object.keys(this.#vectors ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return vector;\n }\n\n public getVectors() {\n return this.#vectors;\n }\n\n public getDeployer() {\n return this.#deployer;\n }\n\n public legacy_getWorkflow<TWorkflowId extends keyof TLegacyWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TLegacyWorkflows[TWorkflowId] {\n const workflow = this.#legacy_workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_LEGACY_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#legacy_workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TLegacyWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflow<TWorkflowId extends keyof TWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TWorkflows[TWorkflowId] {\n const workflow = this.#workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflowById(id: string): Workflow {\n let workflow = Object.values(this.#workflows).find(a => a.id === id);\n\n if (!workflow) {\n try {\n workflow = this.getWorkflow(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with id ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return workflow;\n }\n\n public legacy_getWorkflows(props: { serialized?: boolean } = {}): Record<string, LegacyWorkflow> {\n if (props.serialized) {\n return Object.entries(this.#legacy_workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#legacy_workflows;\n }\n\n public getScorers() {\n return this.#scorers;\n }\n\n public getScorer<TScorerKey extends keyof TScorers>(key: TScorerKey): TScorers[TScorerKey] {\n const scorer = this.#scorers?.[key];\n if (!scorer) {\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ${String(key)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return scorer;\n }\n\n public getScorerByName(name: string): MastraScorer<any, any, any, any> {\n for (const [_key, value] of Object.entries(this.#scorers ?? {})) {\n if (value.name === name) {\n return value;\n }\n }\n\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with name ${String(name)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n public getWorkflows(props: { serialized?: boolean } = {}): Record<string, Workflow> {\n if (props.serialized) {\n return Object.entries(this.#workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#workflows;\n }\n\n public setStorage(storage: MastraStorage) {\n this.#storage = augmentWithInit(storage);\n }\n\n public setLogger({ logger }: { logger: TLogger }) {\n this.#logger = logger;\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n this.#agents?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#memory) {\n this.#memory.__setLogger(this.#logger);\n }\n\n if (this.#deployer) {\n this.#deployer.__setLogger(this.#logger);\n }\n\n if (this.#tts) {\n Object.keys(this.#tts).forEach(key => {\n this.#tts?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#storage) {\n this.#storage.__setLogger(this.#logger);\n }\n\n if (this.#vectors) {\n Object.keys(this.#vectors).forEach(key => {\n this.#vectors?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#mcpServers) {\n Object.keys(this.#mcpServers).forEach(key => {\n this.#mcpServers?.[key]?.__setLogger(this.#logger);\n });\n }\n\n // Set logger for AI tracing instances\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(instance => {\n instance.__setLogger(this.#logger);\n });\n }\n\n public setTelemetry(telemetry: OtelConfig) {\n this.#telemetry = Telemetry.init(telemetry);\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n if (this.#telemetry) {\n this.#agents?.[key]?.__setTelemetry(this.#telemetry);\n }\n });\n }\n\n if (this.#memory) {\n this.#memory = this.#telemetry.traceClass(this.#memory, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#memory.__setTelemetry(this.#telemetry);\n }\n\n if (this.#deployer) {\n this.#deployer = this.#telemetry.traceClass(this.#deployer, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#deployer.__setTelemetry(this.#telemetry);\n }\n\n if (this.#tts) {\n let tts = {} as Record<string, MastraTTS>;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#telemetry) {\n tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n tts[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#tts = tts as TTTS;\n }\n\n if (this.#storage) {\n this.#storage = this.#telemetry.traceClass(this.#storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n }\n\n if (this.#vectors) {\n let vectors = {} as Record<string, MastraVector>;\n Object.entries(this.#vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#vectors = vectors as TVectors;\n }\n }\n\n public getTTS() {\n return this.#tts;\n }\n\n public getLogger() {\n return this.#logger;\n }\n\n public getTelemetry() {\n return this.#telemetry;\n }\n\n public getMemory() {\n return this.#memory;\n }\n\n public getStorage() {\n return this.#storage;\n }\n\n public getServerMiddleware() {\n return this.#serverMiddleware;\n }\n\n public setServerMiddleware(serverMiddleware: Middleware | Middleware[]) {\n if (typeof serverMiddleware === 'function') {\n this.#serverMiddleware = [\n {\n handler: serverMiddleware,\n path: '/api/*',\n },\n ];\n return;\n }\n\n if (!Array.isArray(serverMiddleware)) {\n const error = new MastraError({\n id: 'MASTRA_SET_SERVER_MIDDLEWARE_INVALID_TYPE',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Invalid middleware: expected a function or array, received ${typeof serverMiddleware}`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n this.#serverMiddleware = serverMiddleware.map(m => {\n if (typeof m === 'function') {\n return {\n handler: m,\n path: '/api/*',\n };\n }\n return {\n handler: m.handler,\n path: m.path || '/api/*',\n };\n });\n }\n\n public getNetworks() {\n return Object.values(this.#networks || {});\n }\n\n public vnext_getNetworks() {\n return Object.values(this.#vnext_networks || {});\n }\n\n public getServer() {\n return this.#server;\n }\n\n public getBundlerConfig() {\n return this.#bundler;\n }\n\n /**\n * Get a specific network by ID\n * @param networkId - The ID of the network to retrieve\n * @returns The network with the specified ID, or undefined if not found\n */\n public getNetwork(networkId: string): AgentNetwork | undefined {\n const networks = this.getNetworks();\n return networks.find(network => {\n const routingAgent = network.getRoutingAgent();\n return network.formatAgentId(routingAgent.name) === networkId;\n });\n }\n\n public vnext_getNetwork(networkId: string): NewAgentNetwork | undefined {\n const networks = this.vnext_getNetworks();\n return networks.find(network => network.id === networkId);\n }\n\n public async getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n runId: string;\n transportId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger?.getLogsByRunId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not configured or does not support getLogsByRunId operation',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return await this.#logger.getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n });\n }\n\n public async getLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not set',\n details: {\n transportId,\n },\n });\n throw error;\n }\n\n return await this.#logger.getLogs(transportId, params);\n }\n\n /**\n * Get all registered MCP server instances.\n * @returns A record of MCP server ID to MCPServerBase instance, or undefined if none are registered.\n */\n public getMCPServers(): Record<string, MCPServerBase> | undefined {\n return this.#mcpServers;\n }\n\n /**\n * Get a specific MCP server instance.\n * If a version is provided, it attempts to find the server with that exact logical ID and version.\n * If no version is provided, it returns the server with the specified logical ID that has the most recent releaseDate.\n * The logical ID should match the `id` property of the MCPServer instance (typically set via MCPServerConfig.id).\n * @param serverId - The logical ID of the MCP server to retrieve.\n * @param version - Optional specific version of the MCP server to retrieve.\n * @returns The MCP server instance, or undefined if not found or if the specific version is not found.\n */\n public getMCPServer(serverId: string, version?: string): MCPServerBase | undefined {\n if (!this.#mcpServers) {\n return undefined;\n }\n\n const allRegisteredServers = Object.values(this.#mcpServers || {});\n\n const matchingLogicalIdServers = allRegisteredServers.filter(server => server.id === serverId);\n\n if (matchingLogicalIdServers.length === 0) {\n this.#logger?.debug(`No MCP servers found with logical ID: ${serverId}`);\n return undefined;\n }\n\n if (version) {\n const specificVersionServer = matchingLogicalIdServers.find(server => server.version === version);\n if (!specificVersionServer) {\n this.#logger?.debug(`MCP server with logical ID '${serverId}' found, but not version '${version}'.`);\n }\n return specificVersionServer;\n } else {\n // No version specified, find the one with the most recent releaseDate\n if (matchingLogicalIdServers.length === 1) {\n return matchingLogicalIdServers[0];\n }\n\n matchingLogicalIdServers.sort((a, b) => {\n // Ensure releaseDate exists and is a string before creating a Date object\n const dateAVal = a.releaseDate && typeof a.releaseDate === 'string' ? new Date(a.releaseDate).getTime() : NaN;\n const dateBVal = b.releaseDate && typeof b.releaseDate === 'string' ? new Date(b.releaseDate).getTime() : NaN;\n\n if (isNaN(dateAVal) && isNaN(dateBVal)) return 0;\n if (isNaN(dateAVal)) return 1; // Treat invalid/missing dates as older\n if (isNaN(dateBVal)) return -1; // Treat invalid/missing dates as older\n\n return dateBVal - dateAVal; // Sorts in descending order of time (latest first)\n });\n\n // After sorting, the first element should be the latest if its date is valid\n if (matchingLogicalIdServers.length > 0) {\n const latestServer = matchingLogicalIdServers[0];\n if (\n latestServer &&\n latestServer.releaseDate &&\n typeof latestServer.releaseDate === 'string' &&\n !isNaN(new Date(latestServer.releaseDate).getTime())\n ) {\n return latestServer;\n }\n }\n this.#logger?.warn(\n `Could not determine the latest server for logical ID '${serverId}' due to invalid or missing release dates, or no servers left after filtering.`,\n );\n return undefined;\n }\n }\n\n public async addTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.subscribe(topic, listener);\n }\n\n public async removeTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n\n public async startEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.subscribe(topic, listener);\n }\n }\n }\n\n public async stopEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n }\n\n await this.#pubsub.flush();\n }\n\n /**\n * Shutdown Mastra and clean up all resources\n */\n async shutdown(): Promise<void> {\n // Shutdown AI tracing registry and all instances\n await shutdownAITracingRegistry();\n await this.stopEventEngine();\n\n this.#logger?.info('Mastra shutdown completed');\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Agent } from './chunk-P2IJ74UW.js';
1
+ import { Agent } from './chunk-IH5UAO56.js';
2
2
 
3
3
  // src/relevance/cohere/index.ts
4
4
  var CohereRelevanceScorer = class {
@@ -83,5 +83,5 @@ Always return just the number, no explanation.`,
83
83
  };
84
84
 
85
85
  export { CohereRelevanceScorer, MastraAgentRelevanceScorer, createSimilarityPrompt };
86
- //# sourceMappingURL=chunk-YAWYQH3N.js.map
87
- //# sourceMappingURL=chunk-YAWYQH3N.js.map
86
+ //# sourceMappingURL=chunk-JWURNPTP.js.map
87
+ //# sourceMappingURL=chunk-JWURNPTP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/relevance/cohere/index.ts","../src/relevance/relevance-score-provider.ts","../src/relevance/mastra-agent/index.ts"],"names":[],"mappings":";;;AAoBO,IAAM,wBAAN,MAA8D;AAAA,EAC3D,KAAA;AAAA,EACA,MAAA;AAAA,EACR,WAAA,CAAY,OAAe,MAAA,EAAiB;AAC1C,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EACA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,gCAAA,CAAA,EAAoC;AAAA,MAC/D,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACnB,KAAA;AAAA,QACA,SAAA,EAAW,CAAC,IAAI,CAAA;AAAA,QAChB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,KACF,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAA,CAAS,MAAM,IAAI,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACjF;AAEA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,eAAA;AAExC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,cAAA;AAAA,EACT;AACF;;;ACpDO,SAAS,sBAAA,CAAuB,OAAe,IAAA,EAAsB;AAC1E,EAAA,OAAO,CAAA;;AAAA,OAAA,EAEA,KAAK;;AAAA,MAAA,EAEN,IAAI;;AAAA,sBAAA,CAAA;AAGZ;;;ACRO,IAAM,6BAAN,MAAmE;AAAA,EAChE,KAAA;AAAA,EAER,WAAA,CAAY,MAAc,KAAA,EAA4B;AACpD,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM;AAAA,MACrB,IAAA,EAAM,oBAAoB,IAAI,CAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAAA,CAAA;AAAA,MAUd;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,KAAA,EAAO,IAAI,CAAA;AAEjD,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS;AAExC,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,KAAA,CAAM,yBAAyB,IAAA,EAAM;AACvC,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,cAAc,MAAM,CAAA;AAC1D,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,SAAS,MAAM,CAAA;AACrD,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B;AACA,IAAA,OAAO,WAAW,QAAQ,CAAA;AAAA,EAC5B;AACF","file":"chunk-YAWYQH3N.js","sourcesContent":["import type { RelevanceScoreProvider } from '../relevance-score-provider';\n\ninterface CohereRerankingResponse {\n results: Array<{\n index: number;\n relevance_score: number;\n }>;\n id: string;\n meta: {\n api_version: {\n version: string;\n is_experimental: boolean;\n };\n billed_units: {\n search_units: number;\n };\n };\n}\n\n/** @deprecated Import from `@mastra/rag` instead */\nexport class CohereRelevanceScorer implements RelevanceScoreProvider {\n private model: string;\n private apiKey?: string;\n constructor(model: string, apiKey?: string) {\n console.warn(\n 'CohereRelevanceScorer exported from @mastra/core is deprecated. Please import from \"@mastra/rag\" instead.',\n );\n this.apiKey = apiKey;\n this.model = model;\n }\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const response = await fetch(`https://api.cohere.com/v2/rerank`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({\n query,\n documents: [text],\n model: this.model,\n top_n: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Cohere API error: ${response.status} ${await response.text()}`);\n }\n\n const data = (await response.json()) as CohereRerankingResponse;\n const relevanceScore = data.results[0]?.relevance_score;\n\n if (!relevanceScore) {\n throw new Error('No relevance score found on Cohere response');\n }\n\n return relevanceScore;\n }\n}\n","// Provider interfaces\nexport interface RelevanceScoreProvider {\n getRelevanceScore(text1: string, text2: string): Promise<number>;\n}\n\n// Helper function used by providers\nexport function createSimilarityPrompt(query: string, text: string): string {\n return `Rate the semantic similarity between the following the query and the text on a scale from 0 to 1 (decimals allowed), where 1 means exactly the same meaning and 0 means completely different:\n\nQuery: ${query}\n\nText: ${text}\n\nRelevance score (0-1):`;\n}\n","import { Agent } from '../../agent';\nimport type { MastraLanguageModel } from '../../llm/model/shared.types';\nimport { createSimilarityPrompt } from '../relevance-score-provider';\nimport type { RelevanceScoreProvider } from '../relevance-score-provider';\n\n// Mastra Agent implementation\nexport class MastraAgentRelevanceScorer implements RelevanceScoreProvider {\n private agent: Agent;\n\n constructor(name: string, model: MastraLanguageModel) {\n this.agent = new Agent({\n name: `Relevance Scorer ${name}`,\n instructions: `You are a specialized agent for evaluating the relevance of text to queries.\nYour task is to rate how well a text passage answers a given query.\nOutput only a number between 0 and 1, where:\n1.0 = Perfectly relevant, directly answers the query\n0.0 = Completely irrelevant\nConsider:\n- Direct relevance to the question\n- Completeness of information\n- Quality and specificity\nAlways return just the number, no explanation.`,\n model,\n });\n }\n\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const prompt = createSimilarityPrompt(query, text);\n\n const model = await this.agent.getModel();\n\n let response: string;\n if (model.specificationVersion === 'v2') {\n const responseText = await this.agent.generateVNext(prompt);\n response = responseText.text;\n } else {\n const responseText = await this.agent.generate(prompt);\n response = responseText.text;\n }\n return parseFloat(response);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/relevance/cohere/index.ts","../src/relevance/relevance-score-provider.ts","../src/relevance/mastra-agent/index.ts"],"names":[],"mappings":";;;AAoBO,IAAM,wBAAN,MAA8D;AAAA,EAC3D,KAAA;AAAA,EACA,MAAA;AAAA,EACR,WAAA,CAAY,OAAe,MAAA,EAAiB;AAC1C,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AAAA,EACA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,gCAAA,CAAA,EAAoC;AAAA,MAC/D,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB,kBAAA;AAAA,QAChB,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,QACnB,KAAA;AAAA,QACA,SAAA,EAAW,CAAC,IAAI,CAAA;AAAA,QAChB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,KACF,CAAA;AAED,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAA,CAAS,MAAM,IAAI,MAAM,QAAA,CAAS,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,IACjF;AAEA,IAAA,MAAM,IAAA,GAAQ,MAAM,QAAA,CAAS,IAAA,EAAK;AAClC,IAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,EAAG,eAAA;AAExC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D;AAEA,IAAA,OAAO,cAAA;AAAA,EACT;AACF;;;ACpDO,SAAS,sBAAA,CAAuB,OAAe,IAAA,EAAsB;AAC1E,EAAA,OAAO,CAAA;;AAAA,OAAA,EAEA,KAAK;;AAAA,MAAA,EAEN,IAAI;;AAAA,sBAAA,CAAA;AAGZ;;;ACRO,IAAM,6BAAN,MAAmE;AAAA,EAChE,KAAA;AAAA,EAER,WAAA,CAAY,MAAc,KAAA,EAA4B;AACpD,IAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM;AAAA,MACrB,IAAA,EAAM,oBAAoB,IAAI,CAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAAA,CAAA;AAAA,MAUd;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,iBAAA,CAAkB,KAAA,EAAe,IAAA,EAA+B;AACpE,IAAA,MAAM,MAAA,GAAS,sBAAA,CAAuB,KAAA,EAAO,IAAI,CAAA;AAEjD,IAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,KAAA,CAAM,QAAA,EAAS;AAExC,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,KAAA,CAAM,yBAAyB,IAAA,EAAM;AACvC,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,cAAc,MAAM,CAAA;AAC1D,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,KAAA,CAAM,SAAS,MAAM,CAAA;AACrD,MAAA,QAAA,GAAW,YAAA,CAAa,IAAA;AAAA,IAC1B;AACA,IAAA,OAAO,WAAW,QAAQ,CAAA;AAAA,EAC5B;AACF","file":"chunk-JWURNPTP.js","sourcesContent":["import type { RelevanceScoreProvider } from '../relevance-score-provider';\n\ninterface CohereRerankingResponse {\n results: Array<{\n index: number;\n relevance_score: number;\n }>;\n id: string;\n meta: {\n api_version: {\n version: string;\n is_experimental: boolean;\n };\n billed_units: {\n search_units: number;\n };\n };\n}\n\n/** @deprecated Import from `@mastra/rag` instead */\nexport class CohereRelevanceScorer implements RelevanceScoreProvider {\n private model: string;\n private apiKey?: string;\n constructor(model: string, apiKey?: string) {\n console.warn(\n 'CohereRelevanceScorer exported from @mastra/core is deprecated. Please import from \"@mastra/rag\" instead.',\n );\n this.apiKey = apiKey;\n this.model = model;\n }\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const response = await fetch(`https://api.cohere.com/v2/rerank`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: JSON.stringify({\n query,\n documents: [text],\n model: this.model,\n top_n: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Cohere API error: ${response.status} ${await response.text()}`);\n }\n\n const data = (await response.json()) as CohereRerankingResponse;\n const relevanceScore = data.results[0]?.relevance_score;\n\n if (!relevanceScore) {\n throw new Error('No relevance score found on Cohere response');\n }\n\n return relevanceScore;\n }\n}\n","// Provider interfaces\nexport interface RelevanceScoreProvider {\n getRelevanceScore(text1: string, text2: string): Promise<number>;\n}\n\n// Helper function used by providers\nexport function createSimilarityPrompt(query: string, text: string): string {\n return `Rate the semantic similarity between the following the query and the text on a scale from 0 to 1 (decimals allowed), where 1 means exactly the same meaning and 0 means completely different:\n\nQuery: ${query}\n\nText: ${text}\n\nRelevance score (0-1):`;\n}\n","import { Agent } from '../../agent';\nimport type { MastraLanguageModel } from '../../llm/model/shared.types';\nimport { createSimilarityPrompt } from '../relevance-score-provider';\nimport type { RelevanceScoreProvider } from '../relevance-score-provider';\n\n// Mastra Agent implementation\nexport class MastraAgentRelevanceScorer implements RelevanceScoreProvider {\n private agent: Agent;\n\n constructor(name: string, model: MastraLanguageModel) {\n this.agent = new Agent({\n name: `Relevance Scorer ${name}`,\n instructions: `You are a specialized agent for evaluating the relevance of text to queries.\nYour task is to rate how well a text passage answers a given query.\nOutput only a number between 0 and 1, where:\n1.0 = Perfectly relevant, directly answers the query\n0.0 = Completely irrelevant\nConsider:\n- Direct relevance to the question\n- Completeness of information\n- Quality and specificity\nAlways return just the number, no explanation.`,\n model,\n });\n }\n\n async getRelevanceScore(query: string, text: string): Promise<number> {\n const prompt = createSimilarityPrompt(query, text);\n\n const model = await this.agent.getModel();\n\n let response: string;\n if (model.specificationVersion === 'v2') {\n const responseText = await this.agent.generateVNext(prompt);\n response = responseText.text;\n } else {\n const responseText = await this.agent.generate(prompt);\n response = responseText.text;\n }\n return parseFloat(response);\n }\n}\n"]}
@@ -4,9 +4,9 @@ var chunkLVGGMWSE_cjs = require('./chunk-LVGGMWSE.cjs');
4
4
  var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
5
5
  var chunkKXCUCBEI_cjs = require('./chunk-KXCUCBEI.cjs');
6
6
  var schemaCompat = require('@mastra/schema-compat');
7
+ var zodToJson = require('@mastra/schema-compat/zod-to-json');
7
8
  var ai = require('ai');
8
9
  var zod = require('zod');
9
- var zodToJsonSchema = require('zod-to-json-schema');
10
10
 
11
11
  var MastraLLMV1 = class extends chunkKXCUCBEI_cjs.MastraBase {
12
12
  #model;
@@ -128,23 +128,19 @@ var MastraLLMV1 = class extends chunkKXCUCBEI_cjs.MastraBase {
128
128
  const originalStream = result.stream;
129
129
  let finishReason;
130
130
  let finalUsage = null;
131
+ let textOutput = "";
131
132
  const wrappedStream = originalStream.pipeThrough(
132
133
  new TransformStream({
133
134
  // this gets called on each chunk output
134
135
  transform(chunk, controller) {
135
- if (chunk.type === "text-delta") {
136
- llmSpan?.createEventSpan({
137
- type: "llm_chunk" /* LLM_CHUNK */,
138
- name: `llm chunk: ${chunk.type}`,
139
- output: chunk.textDelta,
140
- attributes: {
141
- chunkType: chunk.type
142
- }
143
- });
144
- }
145
- if (chunk.type === "finish") {
146
- finishReason = chunk.finishReason;
147
- finalUsage = chunk.usage;
136
+ switch (chunk.type) {
137
+ case "text-delta":
138
+ textOutput += chunk.textDelta;
139
+ break;
140
+ case "finish":
141
+ finishReason = chunk.finishReason;
142
+ finalUsage = chunk.usage;
143
+ break;
148
144
  }
149
145
  controller.enqueue(chunk);
150
146
  },
@@ -152,6 +148,7 @@ var MastraLLMV1 = class extends chunkKXCUCBEI_cjs.MastraBase {
152
148
  flush() {
153
149
  llmSpan?.end({
154
150
  attributes: {
151
+ output: textOutput,
155
152
  usage: finalUsage ? {
156
153
  promptTokens: finalUsage.promptTokens,
157
154
  completionTokens: finalUsage.completionTokens,
@@ -218,14 +215,7 @@ var MastraLLMV1 = class extends chunkKXCUCBEI_cjs.MastraBase {
218
215
  schema = schema._def.type;
219
216
  }
220
217
  let jsonSchemaToUse;
221
- if ("toJSONSchema" in zod.z) {
222
- jsonSchemaToUse = zod.z["toJSONSchema"](schema);
223
- } else {
224
- jsonSchemaToUse = zodToJsonSchema.zodToJsonSchema(schema, {
225
- $refStrategy: "none",
226
- target: "jsonSchema7"
227
- });
228
- }
218
+ jsonSchemaToUse = zodToJson.zodToJsonSchema(schema, "jsonSchema7");
229
219
  schema = ai.jsonSchema(jsonSchemaToUse);
230
220
  } else {
231
221
  schema = ai.jsonSchema(experimental_output);
@@ -716,5 +706,5 @@ var MastraLLMV1 = class extends chunkKXCUCBEI_cjs.MastraBase {
716
706
  };
717
707
 
718
708
  exports.MastraLLMV1 = MastraLLMV1;
719
- //# sourceMappingURL=chunk-F2CAC2R2.cjs.map
720
- //# sourceMappingURL=chunk-F2CAC2R2.cjs.map
709
+ //# sourceMappingURL=chunk-MNDKBEEQ.cjs.map
710
+ //# sourceMappingURL=chunk-MNDKBEEQ.cjs.map