@mastra/core 0.15.2 → 0.15.3-alpha.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/dist/agent/agent.types.d.ts +2 -0
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.d.ts +0 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/input-processor/index.cjs +6 -6
- package/dist/agent/input-processor/index.js +1 -1
- package/dist/ai-tracing/base.d.ts +3 -1
- package/dist/ai-tracing/base.d.ts.map +1 -1
- package/dist/ai-tracing/default.d.ts +1 -9
- package/dist/ai-tracing/default.d.ts.map +1 -1
- package/dist/ai-tracing/exporters/console.d.ts +10 -0
- package/dist/ai-tracing/exporters/console.d.ts.map +1 -0
- package/dist/ai-tracing/exporters/default.d.ts +97 -0
- package/dist/ai-tracing/exporters/default.d.ts.map +1 -0
- package/dist/ai-tracing/exporters/index.d.ts +6 -0
- package/dist/ai-tracing/exporters/index.d.ts.map +1 -0
- package/dist/ai-tracing/index.cjs +31 -27
- package/dist/ai-tracing/index.d.ts +1 -0
- package/dist/ai-tracing/index.d.ts.map +1 -1
- package/dist/ai-tracing/index.js +1 -1
- package/dist/ai-tracing/no-op.d.ts +8 -0
- package/dist/ai-tracing/no-op.d.ts.map +1 -1
- package/dist/ai-tracing/types.d.ts +33 -0
- package/dist/ai-tracing/types.d.ts.map +1 -1
- package/dist/{chunk-DPE6K23N.cjs → chunk-2KK7QQH2.cjs} +47 -8
- package/dist/chunk-2KK7QQH2.cjs.map +1 -0
- package/dist/{chunk-EQLCC3M7.cjs → chunk-4DKPMUAC.cjs} +646 -101
- package/dist/chunk-4DKPMUAC.cjs.map +1 -0
- package/dist/{chunk-FCFQE5BD.js → chunk-6JAIHLZY.js} +130 -99
- package/dist/chunk-6JAIHLZY.js.map +1 -0
- package/dist/{chunk-RMEG4MOG.cjs → chunk-6VROHRAR.cjs} +45 -30
- package/dist/chunk-6VROHRAR.cjs.map +1 -0
- package/dist/{chunk-DAJYN7HG.cjs → chunk-7U76TYYN.cjs} +4 -4
- package/dist/{chunk-DAJYN7HG.cjs.map → chunk-7U76TYYN.cjs.map} +1 -1
- package/dist/{chunk-VKJWTAHZ.js → chunk-E3LAPNKY.js} +3 -3
- package/dist/{chunk-VKJWTAHZ.js.map → chunk-E3LAPNKY.js.map} +1 -1
- package/dist/{chunk-QLRALF4I.js → chunk-EEGBKQYC.js} +6 -4
- package/dist/chunk-EEGBKQYC.js.map +1 -0
- package/dist/{chunk-FFGJPMKP.js → chunk-FLXWZUIG.js} +45 -30
- package/dist/chunk-FLXWZUIG.js.map +1 -0
- package/dist/{chunk-SNYSVGIU.cjs → chunk-I2YGYG3Y.cjs} +144 -113
- package/dist/chunk-I2YGYG3Y.cjs.map +1 -0
- package/dist/{chunk-HRPTZGDT.js → chunk-IAOFOXVA.js} +3 -3
- package/dist/{chunk-HRPTZGDT.js.map → chunk-IAOFOXVA.js.map} +1 -1
- package/dist/{chunk-UKQI74TN.cjs → chunk-K6UMYGK5.cjs} +17 -2
- package/dist/chunk-K6UMYGK5.cjs.map +1 -0
- package/dist/{chunk-XJFIB2FO.js → chunk-Q67FV4QB.js} +3 -3
- package/dist/{chunk-XJFIB2FO.js.map → chunk-Q67FV4QB.js.map} +1 -1
- package/dist/{chunk-7EXGDKNQ.cjs → chunk-QBNRMJAN.cjs} +4 -4
- package/dist/{chunk-7EXGDKNQ.cjs.map → chunk-QBNRMJAN.cjs.map} +1 -1
- package/dist/{chunk-G6WYC4SF.cjs → chunk-SFLYVXLG.cjs} +6 -6
- package/dist/{chunk-G6WYC4SF.cjs.map → chunk-SFLYVXLG.cjs.map} +1 -1
- package/dist/{chunk-7TH2KSEC.js → chunk-WOTBMZCN.js} +645 -101
- package/dist/chunk-WOTBMZCN.js.map +1 -0
- package/dist/{chunk-6NYFECSO.js → chunk-Y3WIANDM.js} +43 -4
- package/dist/chunk-Y3WIANDM.js.map +1 -0
- package/dist/{chunk-Y44DK4T5.js → chunk-YGW2WEJ5.js} +17 -2
- package/dist/chunk-YGW2WEJ5.js.map +1 -0
- package/dist/{chunk-ASRKKIW7.cjs → chunk-YPT3YX6U.cjs} +10 -8
- package/dist/chunk-YPT3YX6U.cjs.map +1 -0
- package/dist/index.cjs +42 -42
- package/dist/index.js +9 -9
- package/dist/llm/model/model.loop.d.ts +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/types.d.ts +1 -0
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +8 -0
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/index.cjs +2 -2
- package/dist/network/index.js +1 -1
- package/dist/network/vNext/index.cjs +15 -13
- package/dist/network/vNext/index.cjs.map +1 -1
- package/dist/network/vNext/index.d.ts.map +1 -1
- package/dist/network/vNext/index.js +4 -2
- package/dist/network/vNext/index.js.map +1 -1
- 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 +282 -88
- package/dist/scores/index.cjs.map +1 -1
- package/dist/scores/index.d.ts +1 -1
- package/dist/scores/index.js +279 -85
- package/dist/scores/index.js.map +1 -1
- package/dist/scores/run-experiment/index.d.ts +59 -0
- package/dist/scores/run-experiment/index.d.ts.map +1 -0
- package/dist/scores/run-experiment/scorerAccumulator.d.ts +12 -0
- package/dist/scores/run-experiment/scorerAccumulator.d.ts.map +1 -0
- package/dist/storage/base.d.ts +9 -0
- package/dist/storage/base.d.ts.map +1 -1
- package/dist/storage/domains/observability/base.d.ts +9 -0
- package/dist/storage/domains/observability/base.d.ts.map +1 -1
- package/dist/storage/domains/observability/index.d.ts +1 -0
- package/dist/storage/domains/observability/index.d.ts.map +1 -1
- package/dist/storage/domains/observability/inmemory.d.ts +5 -0
- package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +24 -6
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.js +20 -3
- package/dist/storage/index.js.map +1 -1
- package/dist/stream/index.cjs +3 -3
- 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/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/types.d.ts +2 -2
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils.cjs +16 -16
- package/dist/utils.js +1 -1
- package/dist/workflows/default.d.ts +25 -6
- package/dist/workflows/default.d.ts.map +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/evented/workflow.d.ts.map +1 -1
- package/dist/workflows/execution-engine.d.ts +1 -0
- package/dist/workflows/execution-engine.d.ts.map +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/dist/workflows/workflow.d.ts +7 -0
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6NYFECSO.js.map +0 -1
- package/dist/chunk-7TH2KSEC.js.map +0 -1
- package/dist/chunk-ASRKKIW7.cjs.map +0 -1
- package/dist/chunk-DPE6K23N.cjs.map +0 -1
- package/dist/chunk-EQLCC3M7.cjs.map +0 -1
- package/dist/chunk-FCFQE5BD.js.map +0 -1
- package/dist/chunk-FFGJPMKP.js.map +0 -1
- package/dist/chunk-QLRALF4I.js.map +0 -1
- package/dist/chunk-RMEG4MOG.cjs.map +0 -1
- package/dist/chunk-SNYSVGIU.cjs.map +0 -1
- package/dist/chunk-UKQI74TN.cjs.map +0 -1
- package/dist/chunk-Y44DK4T5.js.map +0 -1
- package/dist/scores/run-experiment.d.ts +0 -35
- package/dist/scores/run-experiment.d.ts.map +0 -1
|
@@ -15,6 +15,8 @@ export declare enum AISpanType {
|
|
|
15
15
|
GENERIC = "generic",
|
|
16
16
|
/** LLM generation with model calls, token usage, prompts, completions */
|
|
17
17
|
LLM_GENERATION = "llm_generation",
|
|
18
|
+
/** Individual LLM streaming chunk/event */
|
|
19
|
+
LLM_CHUNK = "llm_chunk",
|
|
18
20
|
/** MCP (Model Context Protocol) tool execution */
|
|
19
21
|
MCP_TOOL_CALL = "mcp_tool_call",
|
|
20
22
|
/** Function/tool execution with inputs, outputs, errors */
|
|
@@ -85,6 +87,17 @@ export interface LLMGenerationAttributes extends AIBaseAttributes {
|
|
|
85
87
|
};
|
|
86
88
|
/** Whether this was a streaming response */
|
|
87
89
|
streaming?: boolean;
|
|
90
|
+
/** Reason the generation finished */
|
|
91
|
+
finishReason?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* LLM Chunk attributes - for individual streaming chunks/events
|
|
95
|
+
*/
|
|
96
|
+
export interface LLMChunkAttributes extends AIBaseAttributes {
|
|
97
|
+
/** Type of chunk (text-delta, reasoning-delta, tool-call, etc.) */
|
|
98
|
+
chunkType?: string;
|
|
99
|
+
/** Sequence number of this chunk in the stream */
|
|
100
|
+
sequenceNumber?: number;
|
|
88
101
|
}
|
|
89
102
|
/**
|
|
90
103
|
* Tool Call attributes
|
|
@@ -199,6 +212,7 @@ export interface AISpanTypeMap {
|
|
|
199
212
|
[AISpanType.AGENT_RUN]: AgentRunAttributes;
|
|
200
213
|
[AISpanType.WORKFLOW_RUN]: WorkflowRunAttributes;
|
|
201
214
|
[AISpanType.LLM_GENERATION]: LLMGenerationAttributes;
|
|
215
|
+
[AISpanType.LLM_CHUNK]: LLMChunkAttributes;
|
|
202
216
|
[AISpanType.TOOL_CALL]: ToolCallAttributes;
|
|
203
217
|
[AISpanType.MCP_TOOL_CALL]: MCPToolCallAttributes;
|
|
204
218
|
[AISpanType.WORKFLOW_STEP]: WorkflowStepAttributes;
|
|
@@ -228,6 +242,8 @@ export interface AISpan<TType extends AISpanType> {
|
|
|
228
242
|
startTime: Date;
|
|
229
243
|
/** When span ended */
|
|
230
244
|
endTime?: Date;
|
|
245
|
+
/** Is an event span? (event occurs at startTime, has no endTime) */
|
|
246
|
+
isEvent: boolean;
|
|
231
247
|
/** AI-specific attributes - strongly typed based on span type */
|
|
232
248
|
attributes?: AISpanTypeMap[TType];
|
|
233
249
|
/** Parent span reference (undefined for root spans) */
|
|
@@ -280,6 +296,16 @@ export interface AISpan<TType extends AISpanType> {
|
|
|
280
296
|
attributes?: AISpanTypeMap[TChildType];
|
|
281
297
|
metadata?: Record<string, any>;
|
|
282
298
|
}): AISpan<TChildType>;
|
|
299
|
+
/** Create event span - can be any span type independent of parent
|
|
300
|
+
Event spans have no input, and no endTime.
|
|
301
|
+
*/
|
|
302
|
+
createEventSpan<TChildType extends AISpanType>(options: {
|
|
303
|
+
type: TChildType;
|
|
304
|
+
name: string;
|
|
305
|
+
output?: any;
|
|
306
|
+
attributes?: AISpanTypeMap[TChildType];
|
|
307
|
+
metadata?: Record<string, any>;
|
|
308
|
+
}): AISpan<TChildType>;
|
|
283
309
|
/** Returns `TRUE` if the span is the root span of a trace */
|
|
284
310
|
get isRootSpan(): boolean;
|
|
285
311
|
}
|
|
@@ -297,12 +323,16 @@ export interface AISpanOptions<TType extends AISpanType> {
|
|
|
297
323
|
type: TType;
|
|
298
324
|
/** Input data */
|
|
299
325
|
input?: any;
|
|
326
|
+
/** Output data (for event spans) */
|
|
327
|
+
output?: any;
|
|
300
328
|
/** Span attributes */
|
|
301
329
|
attributes?: AISpanTypeMap[TType];
|
|
302
330
|
/** Span metadata */
|
|
303
331
|
metadata?: Record<string, any>;
|
|
304
332
|
/** Parent span */
|
|
305
333
|
parent?: AnyAISpan;
|
|
334
|
+
/** Is an event span? */
|
|
335
|
+
isEvent: boolean;
|
|
306
336
|
}
|
|
307
337
|
/**
|
|
308
338
|
* Sampling strategy types
|
|
@@ -334,6 +364,7 @@ export type SamplingStrategy = {
|
|
|
334
364
|
type: SamplingStrategyType.CUSTOM;
|
|
335
365
|
sampler: (traceContext: TraceContext) => boolean;
|
|
336
366
|
};
|
|
367
|
+
export type TracingStrategy = 'realtime' | 'batch-with-updates' | 'insert-only';
|
|
337
368
|
/**
|
|
338
369
|
* Configuration for a single AI tracing instance
|
|
339
370
|
*/
|
|
@@ -385,6 +416,8 @@ export type AITracingEvent = {
|
|
|
385
416
|
export interface AITracingExporter {
|
|
386
417
|
/** Exporter name */
|
|
387
418
|
name: string;
|
|
419
|
+
/** Initialize exporter (called after all dependencies are ready) */
|
|
420
|
+
init?(): void;
|
|
388
421
|
/** Export tracing events */
|
|
389
422
|
exportEvent(event: AITracingEvent): Promise<void>;
|
|
390
423
|
/** Shutdown exporter */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai-tracing/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAM9C;;GAEG;AACH,oBAAY,UAAU;IACpB,gDAAgD;IAChD,SAAS,cAAc;IACvB,yCAAyC;IACzC,OAAO,YAAY;IACnB,yEAAyE;IACzE,cAAc,mBAAmB;IACjC,kDAAkD;IAClD,aAAa,kBAAkB;IAC/B,2DAA2D;IAC3D,SAAS,cAAc;IACvB,sDAAsD;IACtD,YAAY,iBAAiB;IAC7B,0DAA0D;IAC1D,aAAa,kBAAkB;IAC/B,+DAA+D;IAC/D,oBAAoB,yBAAyB;IAC7C,yDAAyD;IACzD,yBAAyB,8BAA8B;IACvD,kCAAkC;IAClC,iBAAiB,sBAAsB;IACvC,8BAA8B;IAC9B,aAAa,kBAAkB;IAC/B,+BAA+B;IAC/B,cAAc,mBAAmB;IACjC,wCAAwC;IACxC,mBAAmB,wBAAwB;CAC5C;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;CAAG;AAEpC;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,UAAU,CAAC,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC;IACjF,6BAA6B;IAC7B,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,uBAAuB;IACvB,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai-tracing/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkYPT3YX6U_cjs = require('./chunk-YPT3YX6U.cjs');
|
|
4
4
|
var chunkV3VLOOSW_cjs = require('./chunk-V3VLOOSW.cjs');
|
|
5
5
|
var chunk4D4KB75Y_cjs = require('./chunk-4D4KB75Y.cjs');
|
|
6
6
|
var chunkZOU4K5MI_cjs = require('./chunk-ZOU4K5MI.cjs');
|
|
7
7
|
var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunk4DKPMUAC_cjs = require('./chunk-4DKPMUAC.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');
|
|
@@ -208,7 +208,7 @@ exports.Mastra = class Mastra {
|
|
|
208
208
|
this.#events[topic] = config?.events?.[topic] ?? [];
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
const workflowEventProcessor = new
|
|
211
|
+
const workflowEventProcessor = new chunkYPT3YX6U_cjs.WorkflowEventProcessor({
|
|
212
212
|
mastra: this
|
|
213
213
|
});
|
|
214
214
|
const workflowEventCb = async (event, cb) => {
|
|
@@ -248,7 +248,7 @@ exports.Mastra = class Mastra {
|
|
|
248
248
|
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.`);
|
|
249
249
|
}
|
|
250
250
|
if (config?.observability) {
|
|
251
|
-
|
|
251
|
+
chunk4DKPMUAC_cjs.setupAITracing(config.observability);
|
|
252
252
|
}
|
|
253
253
|
if (this.#telemetry && storage) {
|
|
254
254
|
this.#storage = this.#telemetry.traceClass(storage, {
|
|
@@ -406,10 +406,49 @@ do:
|
|
|
406
406
|
this.#server = config.server;
|
|
407
407
|
}
|
|
408
408
|
chunkTSNDVBUU_cjs.registerHook("onScorerRun" /* ON_SCORER_RUN */, createOnScorerHook(this));
|
|
409
|
+
if (config?.observability) {
|
|
410
|
+
this.registerAITracingExporters();
|
|
411
|
+
this.initAITracingExporters();
|
|
412
|
+
}
|
|
409
413
|
this.setLogger({
|
|
410
414
|
logger
|
|
411
415
|
});
|
|
412
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Register this Mastra instance with AI tracing exporters that need it
|
|
419
|
+
*/
|
|
420
|
+
registerAITracingExporters() {
|
|
421
|
+
const allTracingInstances = chunk4DKPMUAC_cjs.getAllAITracing();
|
|
422
|
+
allTracingInstances.forEach(tracing => {
|
|
423
|
+
const exporters = tracing.getExporters();
|
|
424
|
+
exporters.forEach(exporter => {
|
|
425
|
+
if ("__registerMastra" in exporter && typeof exporter.__registerMastra === "function") {
|
|
426
|
+
exporter.__registerMastra(this);
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Initialize all AI tracing exporters after registration is complete
|
|
433
|
+
*/
|
|
434
|
+
initAITracingExporters() {
|
|
435
|
+
const allTracingInstances = chunk4DKPMUAC_cjs.getAllAITracing();
|
|
436
|
+
allTracingInstances.forEach(tracing => {
|
|
437
|
+
const exporters = tracing.getExporters();
|
|
438
|
+
exporters.forEach(exporter => {
|
|
439
|
+
if ("init" in exporter && typeof exporter.init === "function") {
|
|
440
|
+
try {
|
|
441
|
+
exporter.init();
|
|
442
|
+
} catch (error) {
|
|
443
|
+
this.#logger?.warn("Failed to initialize AI tracing exporter", {
|
|
444
|
+
exporterName: exporter.name,
|
|
445
|
+
error: error instanceof Error ? error.message : String(error)
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
}
|
|
413
452
|
getAgent(name) {
|
|
414
453
|
const agent = this.#agents?.[name];
|
|
415
454
|
if (!agent) {
|
|
@@ -619,7 +658,7 @@ do:
|
|
|
619
658
|
this.#mcpServers?.[key]?.__setLogger(this.#logger);
|
|
620
659
|
});
|
|
621
660
|
}
|
|
622
|
-
const allTracingInstances =
|
|
661
|
+
const allTracingInstances = chunk4DKPMUAC_cjs.getAllAITracing();
|
|
623
662
|
allTracingInstances.forEach(instance => {
|
|
624
663
|
instance.__setLogger(this.#logger);
|
|
625
664
|
});
|
|
@@ -917,7 +956,7 @@ do:
|
|
|
917
956
|
* Shutdown Mastra and clean up all resources
|
|
918
957
|
*/
|
|
919
958
|
async shutdown() {
|
|
920
|
-
await
|
|
959
|
+
await chunk4DKPMUAC_cjs.shutdownAITracingRegistry();
|
|
921
960
|
await this.stopEventEngine();
|
|
922
961
|
this.#logger?.info("Mastra shutdown completed");
|
|
923
962
|
}
|
|
@@ -928,5 +967,5 @@ exports.Mastra = /*@__PURE__*/(_ => {
|
|
|
928
967
|
chunkEBVYYC2Q_cjs.__runInitializers(_init, 1, exports.Mastra);
|
|
929
968
|
return exports.Mastra;
|
|
930
969
|
})();
|
|
931
|
-
//# sourceMappingURL=chunk-
|
|
932
|
-
//# sourceMappingURL=chunk-
|
|
970
|
+
//# sourceMappingURL=chunk-2KK7QQH2.cjs.map
|
|
971
|
+
//# sourceMappingURL=chunk-2KK7QQH2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","InstrumentClass","Mastra","WorkflowEventProcessor","LogLevel","ConsoleLogger","Telemetry","setupAITracing","registerHook","getAllAITracing","augmentWithInit","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-2KK7QQH2.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\n let scorerToUse;\n try {\n if (entityType === 'AGENT') {\n const agent = mastra.getAgentById(entityId);\n const scorers = await agent.getScorers();\n scorerToUse = scorers[scorer.id];\n } else if (entityType === 'WORKFLOW') {\n const workflow = mastra.getWorkflowById(entityId);\n const scorers = await workflow.getScorers();\n scorerToUse = scorers[scorer.id];\n } else {\n return;\n }\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 const { structuredOutput, ...rest } = hookData as any; // temporary fix;\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","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 { 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> {\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\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> {\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 #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 >,\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 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 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"]}
|