@mastra/core 0.17.0-alpha.8 → 0.17.0
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.
- package/CHANGELOG.md +122 -0
- package/dist/agent/index.cjs +11 -11
- package/dist/agent/index.js +2 -2
- package/dist/agent/input-processor/index.cjs +6 -6
- package/dist/agent/input-processor/index.js +1 -1
- package/dist/ai-tracing/index.cjs +32 -32
- package/dist/ai-tracing/index.js +1 -1
- package/dist/{chunk-PPDAGFR2.cjs → chunk-5OH5VHX5.cjs} +4 -4
- package/dist/{chunk-PPDAGFR2.cjs.map → chunk-5OH5VHX5.cjs.map} +1 -1
- package/dist/{chunk-BBI6HIN2.cjs → chunk-6TQSVAUZ.cjs} +7 -7
- package/dist/{chunk-BBI6HIN2.cjs.map → chunk-6TQSVAUZ.cjs.map} +1 -1
- package/dist/{chunk-MTJXEZUV.cjs → chunk-B2ZNJ7EW.cjs} +6 -6
- package/dist/{chunk-MTJXEZUV.cjs.map → chunk-B2ZNJ7EW.cjs.map} +1 -1
- package/dist/{chunk-H272TL2F.js → chunk-B6WB5A6U.js} +4 -4
- package/dist/{chunk-H272TL2F.js.map → chunk-B6WB5A6U.js.map} +1 -1
- package/dist/{chunk-BZ4AOVOL.cjs → chunk-BL44ZRZT.cjs} +6 -6
- package/dist/{chunk-BZ4AOVOL.cjs.map → chunk-BL44ZRZT.cjs.map} +1 -1
- package/dist/{chunk-GWSHTBQY.js → chunk-CD4WDS4V.js} +4 -4
- package/dist/{chunk-GWSHTBQY.js.map → chunk-CD4WDS4V.js.map} +1 -1
- package/dist/{chunk-WQEATYNS.cjs → chunk-DOARUBVA.cjs} +35 -35
- package/dist/{chunk-WQEATYNS.cjs.map → chunk-DOARUBVA.cjs.map} +1 -1
- package/dist/{chunk-BJLIYOUK.js → chunk-EMPBDL5C.js} +3 -3
- package/dist/{chunk-BJLIYOUK.js.map → chunk-EMPBDL5C.js.map} +1 -1
- package/dist/{chunk-DDINE7CK.js → chunk-GS2TSJOZ.js} +3 -3
- package/dist/{chunk-DDINE7CK.js.map → chunk-GS2TSJOZ.js.map} +1 -1
- package/dist/{chunk-N4YXCARN.cjs → chunk-HQFRMWRB.cjs} +4 -4
- package/dist/{chunk-N4YXCARN.cjs.map → chunk-HQFRMWRB.cjs.map} +1 -1
- package/dist/{chunk-WYBYCVS3.cjs → chunk-ICE3AMTD.cjs} +4 -4
- package/dist/{chunk-WYBYCVS3.cjs.map → chunk-ICE3AMTD.cjs.map} +1 -1
- package/dist/{chunk-VRRY6NGC.js → chunk-ISQ7LHV6.js} +4 -4
- package/dist/{chunk-VRRY6NGC.js.map → chunk-ISQ7LHV6.js.map} +1 -1
- package/dist/{chunk-AWH4VWOH.js → chunk-K4ROJXAQ.js} +3 -3
- package/dist/{chunk-AWH4VWOH.js.map → chunk-K4ROJXAQ.js.map} +1 -1
- package/dist/{chunk-CWG4ACYX.js → chunk-KE5KVIPQ.js} +5 -5
- package/dist/{chunk-CWG4ACYX.js.map → chunk-KE5KVIPQ.js.map} +1 -1
- package/dist/{chunk-2LYMBKNF.cjs → chunk-LIVKDHYX.cjs} +8 -8
- package/dist/{chunk-2LYMBKNF.cjs.map → chunk-LIVKDHYX.cjs.map} +1 -1
- package/dist/{chunk-QSDYWMXU.js → chunk-M65NZ6EW.js} +7 -7
- package/dist/{chunk-QSDYWMXU.js.map → chunk-M65NZ6EW.js.map} +1 -1
- package/dist/{chunk-CIPXOPLS.js → chunk-PUQCQUH7.js} +3 -3
- package/dist/{chunk-CIPXOPLS.js.map → chunk-PUQCQUH7.js.map} +1 -1
- package/dist/{chunk-E42ZTCWN.cjs → chunk-RUZBKNXG.cjs} +12 -12
- package/dist/{chunk-E42ZTCWN.cjs.map → chunk-RUZBKNXG.cjs.map} +1 -1
- package/dist/index.cjs +39 -39
- package/dist/index.js +8 -8
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/vNext/index.cjs +29 -29
- package/dist/network/vNext/index.js +2 -2
- package/dist/processors/index.cjs +8 -8
- package/dist/processors/index.js +2 -2
- package/dist/relevance/index.cjs +4 -4
- package/dist/relevance/index.js +1 -1
- package/dist/scores/index.cjs +8 -8
- package/dist/scores/index.js +1 -1
- package/dist/storage/index.cjs +3 -3
- package/dist/storage/index.js +1 -1
- package/dist/stream/index.cjs +4 -4
- package/dist/stream/index.js +1 -1
- package/dist/test-utils/llm-mock.cjs +2 -2
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/utils.cjs +17 -17
- package/dist/utils.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +10 -10
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/legacy/index.cjs +22 -22
- package/dist/workflows/legacy/index.js +1 -1
- package/package.json +3 -3
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkLIVKDHYX_cjs = require('./chunk-LIVKDHYX.cjs');
|
|
4
|
+
var chunk6TQSVAUZ_cjs = require('./chunk-6TQSVAUZ.cjs');
|
|
5
5
|
var chunkV3VLOOSW_cjs = require('./chunk-V3VLOOSW.cjs');
|
|
6
6
|
var chunkKTCBGNCZ_cjs = require('./chunk-KTCBGNCZ.cjs');
|
|
7
7
|
var chunk4D4KB75Y_cjs = require('./chunk-4D4KB75Y.cjs');
|
|
8
8
|
var chunkTKFLL33F_cjs = require('./chunk-TKFLL33F.cjs');
|
|
9
9
|
var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
|
|
10
|
-
var
|
|
10
|
+
var chunkHQFRMWRB_cjs = require('./chunk-HQFRMWRB.cjs');
|
|
11
11
|
var chunk6TEQIYXV_cjs = require('./chunk-6TEQIYXV.cjs');
|
|
12
12
|
var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
|
|
13
13
|
var chunkWVCEJBDR_cjs = require('./chunk-WVCEJBDR.cjs');
|
|
@@ -106,7 +106,7 @@ function createOnScorerHook(mastra) {
|
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
108
|
async function validateAndSaveScore(storage, payload) {
|
|
109
|
-
const payloadToSave =
|
|
109
|
+
const payloadToSave = chunk6TQSVAUZ_cjs.saveScorePayloadSchema.parse(payload);
|
|
110
110
|
await storage?.saveScore(payloadToSave);
|
|
111
111
|
}
|
|
112
112
|
async function findScorer(mastra, entityId, entityType, scorerId) {
|
|
@@ -224,7 +224,7 @@ exports.Mastra = class Mastra {
|
|
|
224
224
|
this.#events[topic] = config?.events?.[topic] ?? [];
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
|
-
const workflowEventProcessor = new
|
|
227
|
+
const workflowEventProcessor = new chunkLIVKDHYX_cjs.WorkflowEventProcessor({
|
|
228
228
|
mastra: this
|
|
229
229
|
});
|
|
230
230
|
const workflowEventCb = async (event, cb) => {
|
|
@@ -264,7 +264,7 @@ exports.Mastra = class Mastra {
|
|
|
264
264
|
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.`);
|
|
265
265
|
}
|
|
266
266
|
if (config?.observability) {
|
|
267
|
-
|
|
267
|
+
chunkHQFRMWRB_cjs.setupAITracing(config.observability);
|
|
268
268
|
}
|
|
269
269
|
if (this.#telemetry && storage) {
|
|
270
270
|
this.#storage = this.#telemetry.traceClass(storage, {
|
|
@@ -431,7 +431,7 @@ do:
|
|
|
431
431
|
* Register this Mastra instance with AI tracing exporters that need it
|
|
432
432
|
*/
|
|
433
433
|
registerAITracingExporters() {
|
|
434
|
-
const allTracingInstances =
|
|
434
|
+
const allTracingInstances = chunkHQFRMWRB_cjs.getAllAITracing();
|
|
435
435
|
allTracingInstances.forEach(tracing => {
|
|
436
436
|
const exporters = tracing.getExporters();
|
|
437
437
|
exporters.forEach(exporter => {
|
|
@@ -445,7 +445,7 @@ do:
|
|
|
445
445
|
* Initialize all AI tracing exporters after registration is complete
|
|
446
446
|
*/
|
|
447
447
|
initAITracingExporters() {
|
|
448
|
-
const allTracingInstances =
|
|
448
|
+
const allTracingInstances = chunkHQFRMWRB_cjs.getAllAITracing();
|
|
449
449
|
allTracingInstances.forEach(tracing => {
|
|
450
450
|
const exporters = tracing.getExporters();
|
|
451
451
|
exporters.forEach(exporter => {
|
|
@@ -703,7 +703,7 @@ do:
|
|
|
703
703
|
this.#mcpServers?.[key]?.__setLogger(this.#logger);
|
|
704
704
|
});
|
|
705
705
|
}
|
|
706
|
-
const allTracingInstances =
|
|
706
|
+
const allTracingInstances = chunkHQFRMWRB_cjs.getAllAITracing();
|
|
707
707
|
allTracingInstances.forEach(instance => {
|
|
708
708
|
instance.__setLogger(this.#logger);
|
|
709
709
|
});
|
|
@@ -989,7 +989,7 @@ do:
|
|
|
989
989
|
* Shutdown Mastra and clean up all resources
|
|
990
990
|
*/
|
|
991
991
|
async shutdown() {
|
|
992
|
-
await
|
|
992
|
+
await chunkHQFRMWRB_cjs.shutdownAITracingRegistry();
|
|
993
993
|
await this.stopEventEngine();
|
|
994
994
|
this.#logger?.info("Mastra shutdown completed");
|
|
995
995
|
}
|
|
@@ -1004,5 +1004,5 @@ exports.Mastra = /*@__PURE__*/(_ => {
|
|
|
1004
1004
|
chunkEBVYYC2Q_cjs.__runInitializers(_init, 1, exports.Mastra);
|
|
1005
1005
|
return exports.Mastra;
|
|
1006
1006
|
})();
|
|
1007
|
-
//# sourceMappingURL=chunk-
|
|
1008
|
-
//# sourceMappingURL=chunk-
|
|
1007
|
+
//# sourceMappingURL=chunk-RUZBKNXG.cjs.map
|
|
1008
|
+
//# sourceMappingURL=chunk-RUZBKNXG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","saveScorePayloadSchema","InstrumentClass","Mastra","InMemoryServerCache","WorkflowEventProcessor","noopLogger","LogLevel","ConsoleLogger","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-E42ZTCWN.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 { saveScorePayloadSchema } from '../scores';\nimport type { ScoringHookInput } from '../scores/types';\nimport type { MastraStorage } from '../storage';\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n const storage = mastra.getStorage();\n\n if (!storage) {\n mastra.getLogger()?.warn('Storage not found, skipping score validation and saving');\n return;\n }\n\n const entityId = hookData.entity.id;\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\n await validateAndSaveScore(storage, 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\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n const payloadToSave = saveScorePayloadSchema.parse(payload);\n await storage?.saveScore(payloadToSave);\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 { ObservabilityRegistryConfig } from '../ai-tracing';\nimport type { BundlerConfig } from '../bundler/types';\nimport { InMemoryServerCache } from '../cache';\nimport type { MastraServerCache } from '../cache';\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 { 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 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 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?: ObservabilityRegistryConfig;\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 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 #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 // This is only used internally for server handlers that require temporary persistence\n #serverCache: MastraServerCache;\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 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 Server Cache\n */\n\n // This is only used internally for server handlers that require temporary persistence\n this.#serverCache = new InMemoryServerCache();\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?.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.#vnext_networks = {} as TVNextNetworks;\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 getServerCache() {\n return this.#serverCache;\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 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 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 // This method is only used internally for server hnadlers that require temporary persistence\n public get serverCache() {\n return this.#serverCache;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","saveScorePayloadSchema","InstrumentClass","Mastra","InMemoryServerCache","WorkflowEventProcessor","noopLogger","LogLevel","ConsoleLogger","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-RUZBKNXG.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 { saveScorePayloadSchema } from '../scores';\nimport type { ScoringHookInput } from '../scores/types';\nimport type { MastraStorage } from '../storage';\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n const storage = mastra.getStorage();\n\n if (!storage) {\n mastra.getLogger()?.warn('Storage not found, skipping score validation and saving');\n return;\n }\n\n const entityId = hookData.entity.id;\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\n await validateAndSaveScore(storage, 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\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n const payloadToSave = saveScorePayloadSchema.parse(payload);\n await storage?.saveScore(payloadToSave);\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 { ObservabilityRegistryConfig } from '../ai-tracing';\nimport type { BundlerConfig } from '../bundler/types';\nimport { InMemoryServerCache } from '../cache';\nimport type { MastraServerCache } from '../cache';\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 { 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 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 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?: ObservabilityRegistryConfig;\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 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 #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 // This is only used internally for server handlers that require temporary persistence\n #serverCache: MastraServerCache;\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 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 Server Cache\n */\n\n // This is only used internally for server handlers that require temporary persistence\n this.#serverCache = new InMemoryServerCache();\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?.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.#vnext_networks = {} as TVNextNetworks;\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 getServerCache() {\n return this.#serverCache;\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 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 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 // This method is only used internally for server hnadlers that require temporary persistence\n public get serverCache() {\n return this.#serverCache;\n }\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
var chunk2TQHRYRK_cjs = require('./chunk-2TQHRYRK.cjs');
|
|
4
4
|
var chunkYWXSGDDO_cjs = require('./chunk-YWXSGDDO.cjs');
|
|
5
5
|
var chunkO6PQYYT6_cjs = require('./chunk-O6PQYYT6.cjs');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
6
|
+
var chunkWOC5SCZF_cjs = require('./chunk-WOC5SCZF.cjs');
|
|
7
|
+
var chunkRUZBKNXG_cjs = require('./chunk-RUZBKNXG.cjs');
|
|
8
|
+
var chunkB2ZNJ7EW_cjs = require('./chunk-B2ZNJ7EW.cjs');
|
|
9
|
+
var chunk5OH5VHX5_cjs = require('./chunk-5OH5VHX5.cjs');
|
|
9
10
|
var chunkQLYANYE2_cjs = require('./chunk-QLYANYE2.cjs');
|
|
10
11
|
var chunkSW7WPHZ2_cjs = require('./chunk-SW7WPHZ2.cjs');
|
|
11
|
-
var
|
|
12
|
-
var chunkWQEATYNS_cjs = require('./chunk-WQEATYNS.cjs');
|
|
12
|
+
var chunkDOARUBVA_cjs = require('./chunk-DOARUBVA.cjs');
|
|
13
13
|
var chunkTKFLL33F_cjs = require('./chunk-TKFLL33F.cjs');
|
|
14
14
|
var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
|
|
15
|
-
var
|
|
15
|
+
var chunkHQFRMWRB_cjs = require('./chunk-HQFRMWRB.cjs');
|
|
16
16
|
var chunkPRVMPHNQ_cjs = require('./chunk-PRVMPHNQ.cjs');
|
|
17
17
|
var chunk4L3P3PCP_cjs = require('./chunk-4L3P3PCP.cjs');
|
|
18
18
|
|
|
19
19
|
// src/agent/index.warning.ts
|
|
20
|
-
var Agent2 = class extends
|
|
20
|
+
var Agent2 = class extends chunkDOARUBVA_cjs.Agent {
|
|
21
21
|
constructor(config) {
|
|
22
22
|
super(config);
|
|
23
23
|
this.logger.warn('Please import "Agent from "@mastra/core/agent" instead of "@mastra/core"');
|
|
@@ -67,7 +67,7 @@ var OpenAPIToolset2 = class extends chunkWOC5SCZF_cjs.OpenAPIToolset {
|
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
// src/memory/index.warning.ts
|
|
70
|
-
var MastraMemory2 = class extends
|
|
70
|
+
var MastraMemory2 = class extends chunkB2ZNJ7EW_cjs.MastraMemory {
|
|
71
71
|
constructor(_arg) {
|
|
72
72
|
super({ name: `Deprecated memory` });
|
|
73
73
|
this.logger.warn('Please import "MastraMemory" from "@mastra/core/memory" instead of "@mastra/core"');
|
|
@@ -99,7 +99,7 @@ var MastraVector2 = class extends chunkYWXSGDDO_cjs.MastraVector {
|
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
// src/workflows/workflow.warning.ts
|
|
102
|
-
var Workflow2 = class extends
|
|
102
|
+
var Workflow2 = class extends chunkDOARUBVA_cjs.Workflow {
|
|
103
103
|
constructor(args) {
|
|
104
104
|
super(args);
|
|
105
105
|
this.logger.warn('Please import "Workflow" from "@mastra/core/workflows" instead of "@mastra/core"');
|
|
@@ -128,27 +128,27 @@ Object.defineProperty(exports, "serializeDate", {
|
|
|
128
128
|
});
|
|
129
129
|
Object.defineProperty(exports, "Mastra", {
|
|
130
130
|
enumerable: true,
|
|
131
|
-
get: function () { return
|
|
131
|
+
get: function () { return chunkRUZBKNXG_cjs.Mastra; }
|
|
132
132
|
});
|
|
133
133
|
Object.defineProperty(exports, "MemoryProcessor", {
|
|
134
134
|
enumerable: true,
|
|
135
|
-
get: function () { return
|
|
135
|
+
get: function () { return chunkB2ZNJ7EW_cjs.MemoryProcessor; }
|
|
136
136
|
});
|
|
137
137
|
Object.defineProperty(exports, "memoryDefaultOptions", {
|
|
138
138
|
enumerable: true,
|
|
139
|
-
get: function () { return
|
|
139
|
+
get: function () { return chunkB2ZNJ7EW_cjs.memoryDefaultOptions; }
|
|
140
140
|
});
|
|
141
141
|
Object.defineProperty(exports, "CohereRelevanceScorer", {
|
|
142
142
|
enumerable: true,
|
|
143
|
-
get: function () { return
|
|
143
|
+
get: function () { return chunk5OH5VHX5_cjs.CohereRelevanceScorer; }
|
|
144
144
|
});
|
|
145
145
|
Object.defineProperty(exports, "MastraAgentRelevanceScorer", {
|
|
146
146
|
enumerable: true,
|
|
147
|
-
get: function () { return
|
|
147
|
+
get: function () { return chunk5OH5VHX5_cjs.MastraAgentRelevanceScorer; }
|
|
148
148
|
});
|
|
149
149
|
Object.defineProperty(exports, "createSimilarityPrompt", {
|
|
150
150
|
enumerable: true,
|
|
151
|
-
get: function () { return
|
|
151
|
+
get: function () { return chunk5OH5VHX5_cjs.createSimilarityPrompt; }
|
|
152
152
|
});
|
|
153
153
|
Object.defineProperty(exports, "Metric", {
|
|
154
154
|
enumerable: true,
|
|
@@ -160,35 +160,35 @@ Object.defineProperty(exports, "evaluate", {
|
|
|
160
160
|
});
|
|
161
161
|
Object.defineProperty(exports, "DefaultExecutionEngine", {
|
|
162
162
|
enumerable: true,
|
|
163
|
-
get: function () { return
|
|
163
|
+
get: function () { return chunkDOARUBVA_cjs.DefaultExecutionEngine; }
|
|
164
164
|
});
|
|
165
165
|
Object.defineProperty(exports, "ExecutionEngine", {
|
|
166
166
|
enumerable: true,
|
|
167
|
-
get: function () { return
|
|
167
|
+
get: function () { return chunkDOARUBVA_cjs.ExecutionEngine; }
|
|
168
168
|
});
|
|
169
169
|
Object.defineProperty(exports, "Run", {
|
|
170
170
|
enumerable: true,
|
|
171
|
-
get: function () { return
|
|
171
|
+
get: function () { return chunkDOARUBVA_cjs.Run; }
|
|
172
172
|
});
|
|
173
173
|
Object.defineProperty(exports, "cloneStep", {
|
|
174
174
|
enumerable: true,
|
|
175
|
-
get: function () { return
|
|
175
|
+
get: function () { return chunkDOARUBVA_cjs.cloneStep; }
|
|
176
176
|
});
|
|
177
177
|
Object.defineProperty(exports, "cloneWorkflow", {
|
|
178
178
|
enumerable: true,
|
|
179
|
-
get: function () { return
|
|
179
|
+
get: function () { return chunkDOARUBVA_cjs.cloneWorkflow; }
|
|
180
180
|
});
|
|
181
181
|
Object.defineProperty(exports, "createStep", {
|
|
182
182
|
enumerable: true,
|
|
183
|
-
get: function () { return
|
|
183
|
+
get: function () { return chunkDOARUBVA_cjs.createStep; }
|
|
184
184
|
});
|
|
185
185
|
Object.defineProperty(exports, "createWorkflow", {
|
|
186
186
|
enumerable: true,
|
|
187
|
-
get: function () { return
|
|
187
|
+
get: function () { return chunkDOARUBVA_cjs.createWorkflow; }
|
|
188
188
|
});
|
|
189
189
|
Object.defineProperty(exports, "mapVariable", {
|
|
190
190
|
enumerable: true,
|
|
191
|
-
get: function () { return
|
|
191
|
+
get: function () { return chunkDOARUBVA_cjs.mapVariable; }
|
|
192
192
|
});
|
|
193
193
|
Object.defineProperty(exports, "InstrumentClass", {
|
|
194
194
|
enumerable: true,
|
|
@@ -228,67 +228,67 @@ Object.defineProperty(exports, "registerHook", {
|
|
|
228
228
|
});
|
|
229
229
|
Object.defineProperty(exports, "checkEvalStorageFields", {
|
|
230
230
|
enumerable: true,
|
|
231
|
-
get: function () { return
|
|
231
|
+
get: function () { return chunkHQFRMWRB_cjs.checkEvalStorageFields; }
|
|
232
232
|
});
|
|
233
233
|
Object.defineProperty(exports, "createMastraProxy", {
|
|
234
234
|
enumerable: true,
|
|
235
|
-
get: function () { return
|
|
235
|
+
get: function () { return chunkHQFRMWRB_cjs.createMastraProxy; }
|
|
236
236
|
});
|
|
237
237
|
Object.defineProperty(exports, "deepMerge", {
|
|
238
238
|
enumerable: true,
|
|
239
|
-
get: function () { return
|
|
239
|
+
get: function () { return chunkHQFRMWRB_cjs.deepMerge; }
|
|
240
240
|
});
|
|
241
241
|
Object.defineProperty(exports, "delay", {
|
|
242
242
|
enumerable: true,
|
|
243
|
-
get: function () { return
|
|
243
|
+
get: function () { return chunkHQFRMWRB_cjs.delay; }
|
|
244
244
|
});
|
|
245
245
|
Object.defineProperty(exports, "ensureToolProperties", {
|
|
246
246
|
enumerable: true,
|
|
247
|
-
get: function () { return
|
|
247
|
+
get: function () { return chunkHQFRMWRB_cjs.ensureToolProperties; }
|
|
248
248
|
});
|
|
249
249
|
Object.defineProperty(exports, "fetchWithRetry", {
|
|
250
250
|
enumerable: true,
|
|
251
|
-
get: function () { return
|
|
251
|
+
get: function () { return chunkHQFRMWRB_cjs.fetchWithRetry; }
|
|
252
252
|
});
|
|
253
253
|
Object.defineProperty(exports, "generateEmptyFromSchema", {
|
|
254
254
|
enumerable: true,
|
|
255
|
-
get: function () { return
|
|
255
|
+
get: function () { return chunkHQFRMWRB_cjs.generateEmptyFromSchema; }
|
|
256
256
|
});
|
|
257
257
|
Object.defineProperty(exports, "isCoreMessage", {
|
|
258
258
|
enumerable: true,
|
|
259
|
-
get: function () { return
|
|
259
|
+
get: function () { return chunkHQFRMWRB_cjs.isCoreMessage; }
|
|
260
260
|
});
|
|
261
261
|
Object.defineProperty(exports, "isUiMessage", {
|
|
262
262
|
enumerable: true,
|
|
263
|
-
get: function () { return
|
|
263
|
+
get: function () { return chunkHQFRMWRB_cjs.isUiMessage; }
|
|
264
264
|
});
|
|
265
265
|
Object.defineProperty(exports, "isZodType", {
|
|
266
266
|
enumerable: true,
|
|
267
|
-
get: function () { return
|
|
267
|
+
get: function () { return chunkHQFRMWRB_cjs.isZodType; }
|
|
268
268
|
});
|
|
269
269
|
Object.defineProperty(exports, "makeCoreTool", {
|
|
270
270
|
enumerable: true,
|
|
271
|
-
get: function () { return
|
|
271
|
+
get: function () { return chunkHQFRMWRB_cjs.makeCoreTool; }
|
|
272
272
|
});
|
|
273
273
|
Object.defineProperty(exports, "makeCoreToolV5", {
|
|
274
274
|
enumerable: true,
|
|
275
|
-
get: function () { return
|
|
275
|
+
get: function () { return chunkHQFRMWRB_cjs.makeCoreToolV5; }
|
|
276
276
|
});
|
|
277
277
|
Object.defineProperty(exports, "maskStreamTags", {
|
|
278
278
|
enumerable: true,
|
|
279
|
-
get: function () { return
|
|
279
|
+
get: function () { return chunkHQFRMWRB_cjs.maskStreamTags; }
|
|
280
280
|
});
|
|
281
281
|
Object.defineProperty(exports, "parseFieldKey", {
|
|
282
282
|
enumerable: true,
|
|
283
|
-
get: function () { return
|
|
283
|
+
get: function () { return chunkHQFRMWRB_cjs.parseFieldKey; }
|
|
284
284
|
});
|
|
285
285
|
Object.defineProperty(exports, "parseSqlIdentifier", {
|
|
286
286
|
enumerable: true,
|
|
287
|
-
get: function () { return
|
|
287
|
+
get: function () { return chunkHQFRMWRB_cjs.parseSqlIdentifier; }
|
|
288
288
|
});
|
|
289
289
|
Object.defineProperty(exports, "resolveSerializedZodOutput", {
|
|
290
290
|
enumerable: true,
|
|
291
|
-
get: function () { return
|
|
291
|
+
get: function () { return chunkHQFRMWRB_cjs.resolveSerializedZodOutput; }
|
|
292
292
|
});
|
|
293
293
|
Object.defineProperty(exports, "createTool", {
|
|
294
294
|
enumerable: true,
|