@mastra/core 0.17.0-alpha.5 → 0.17.0-alpha.7
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 +35 -0
- package/cache.d.ts +1 -0
- package/dist/agent/agent.d.ts +1 -1
- 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/base.cjs +2 -2
- package/dist/base.js +1 -1
- package/dist/bundler/index.cjs +2 -2
- package/dist/bundler/index.js +1 -1
- package/dist/cache/base.d.ts +14 -0
- package/dist/cache/base.d.ts.map +1 -0
- package/dist/cache/index.cjs +16 -0
- package/dist/cache/index.cjs.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +3 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/inmemory.d.ts +13 -0
- package/dist/cache/inmemory.d.ts.map +1 -0
- package/dist/{chunk-XRJDA7BI.js → chunk-2B5DS7ML.js} +3 -3
- package/dist/{chunk-XRJDA7BI.js.map → chunk-2B5DS7ML.js.map} +1 -1
- package/dist/{chunk-IYN65QCO.js → chunk-36QJI2HU.js} +18 -33
- package/dist/chunk-36QJI2HU.js.map +1 -0
- package/dist/chunk-3PQNUWJM.js +62 -0
- package/dist/chunk-3PQNUWJM.js.map +1 -0
- package/dist/{chunk-QHDT3QQC.cjs → chunk-4HWB6PCC.cjs} +4 -4
- package/dist/{chunk-QHDT3QQC.cjs.map → chunk-4HWB6PCC.cjs.map} +1 -1
- package/dist/{chunk-KXCUCBEI.cjs → chunk-4L3P3PCP.cjs} +8 -8
- package/dist/{chunk-KXCUCBEI.cjs.map → chunk-4L3P3PCP.cjs.map} +1 -1
- package/dist/{chunk-VXJFKEON.js → chunk-4LANQQSH.js} +5 -5
- package/dist/{chunk-VXJFKEON.js.map → chunk-4LANQQSH.js.map} +1 -1
- package/dist/{chunk-TLJPVRO5.js → chunk-5QXPHYHO.js} +2 -3
- package/dist/chunk-5QXPHYHO.js.map +1 -0
- package/dist/{chunk-VBBMXF7Z.cjs → chunk-64ONYYLY.cjs} +30 -45
- package/dist/chunk-64ONYYLY.cjs.map +1 -0
- package/dist/{chunk-EXG53YAJ.cjs → chunk-6WEZASFM.cjs} +72 -60
- package/dist/chunk-6WEZASFM.cjs.map +1 -0
- package/dist/{chunk-7NKIBBCV.cjs → chunk-725O36VY.cjs} +6 -6
- package/dist/{chunk-7NKIBBCV.cjs.map → chunk-725O36VY.cjs.map} +1 -1
- package/dist/{chunk-6GF5M4GX.js → chunk-BMVFEBPE.js} +3 -3
- package/dist/{chunk-6GF5M4GX.js.map → chunk-BMVFEBPE.js.map} +1 -1
- package/dist/{chunk-X3GXU6TZ.js → chunk-BN2M4UK5.js} +5 -4
- package/dist/chunk-BN2M4UK5.js.map +1 -0
- package/dist/{chunk-IODUKRQP.js → chunk-C7EN3GVU.js} +3 -3
- package/dist/{chunk-IODUKRQP.js.map → chunk-C7EN3GVU.js.map} +1 -1
- package/dist/{chunk-3DHX2SDR.cjs → chunk-CWTKL7YK.cjs} +7 -7
- package/dist/{chunk-3DHX2SDR.cjs.map → chunk-CWTKL7YK.cjs.map} +1 -1
- package/dist/{chunk-YFAHGS45.js → chunk-DH34KXOJ.js} +4 -4
- package/dist/{chunk-YFAHGS45.js.map → chunk-DH34KXOJ.js.map} +1 -1
- package/dist/{chunk-MRZHPP3G.cjs → chunk-FJWPEAJE.cjs} +4 -4
- package/dist/{chunk-MRZHPP3G.cjs.map → chunk-FJWPEAJE.cjs.map} +1 -1
- package/dist/{chunk-2PQSZI63.js → chunk-GBW5ZDLZ.js} +3 -3
- package/dist/{chunk-2PQSZI63.js.map → chunk-GBW5ZDLZ.js.map} +1 -1
- package/dist/{chunk-CP4TZ4HO.cjs → chunk-GKSWFKHA.cjs} +16 -16
- package/dist/{chunk-CP4TZ4HO.cjs.map → chunk-GKSWFKHA.cjs.map} +1 -1
- package/dist/{chunk-K3JIDVC4.js → chunk-ITD7IHN5.js} +3 -3
- package/dist/{chunk-K3JIDVC4.js.map → chunk-ITD7IHN5.js.map} +1 -1
- package/dist/{chunk-HBQSSMAD.cjs → chunk-K72D7BXB.cjs} +8 -8
- package/dist/{chunk-HBQSSMAD.cjs.map → chunk-K72D7BXB.cjs.map} +1 -1
- package/dist/chunk-KTCBGNCZ.cjs +69 -0
- package/dist/chunk-KTCBGNCZ.cjs.map +1 -0
- package/dist/{chunk-NRGXWM6C.js → chunk-L3EC4ERG.js} +6 -6
- package/dist/{chunk-NRGXWM6C.js.map → chunk-L3EC4ERG.js.map} +1 -1
- package/dist/{chunk-RNJ4GD7U.cjs → chunk-MVBGQHNV.cjs} +9 -9
- package/dist/{chunk-RNJ4GD7U.cjs.map → chunk-MVBGQHNV.cjs.map} +1 -1
- package/dist/{chunk-QQIBOVFQ.js → chunk-NRJQMZLW.js} +4 -4
- package/dist/{chunk-QQIBOVFQ.js.map → chunk-NRJQMZLW.js.map} +1 -1
- package/dist/{chunk-Z73WO76N.js → chunk-NTXNE4YR.js} +3 -3
- package/dist/{chunk-Z73WO76N.js.map → chunk-NTXNE4YR.js.map} +1 -1
- package/dist/{chunk-S5QJEY5X.cjs → chunk-O6PQYYT6.cjs} +4 -4
- package/dist/{chunk-S5QJEY5X.cjs.map → chunk-O6PQYYT6.cjs.map} +1 -1
- package/dist/{chunk-4VHC2F5H.js → chunk-OCKXNBKT.js} +4 -4
- package/dist/{chunk-4VHC2F5H.js.map → chunk-OCKXNBKT.js.map} +1 -1
- package/dist/{chunk-AHJY7RHO.cjs → chunk-OT25QTJ2.cjs} +6 -6
- package/dist/{chunk-AHJY7RHO.cjs.map → chunk-OT25QTJ2.cjs.map} +1 -1
- package/dist/{chunk-666JQVO5.js → chunk-OWYPTFXD.js} +37 -26
- package/dist/chunk-OWYPTFXD.js.map +1 -0
- package/dist/{chunk-ABRPHTOG.cjs → chunk-PRVMPHNQ.cjs} +2 -2
- package/dist/{chunk-ABRPHTOG.cjs.map → chunk-PRVMPHNQ.cjs.map} +1 -1
- package/dist/{chunk-G366B5BY.js → chunk-PYVA36ZV.js} +3 -3
- package/dist/{chunk-G366B5BY.js.map → chunk-PYVA36ZV.js.map} +1 -1
- package/dist/{chunk-PL3B3FZM.js → chunk-QBRFMSMN.js} +6 -6
- package/dist/{chunk-PL3B3FZM.js.map → chunk-QBRFMSMN.js.map} +1 -1
- package/dist/chunk-QLYANYE2.cjs +14 -0
- package/dist/{chunk-QPOJZU26.cjs.map → chunk-QLYANYE2.cjs.map} +1 -1
- package/dist/{chunk-BJGHUKKM.js → chunk-RAQ4VAQ4.js} +2 -2
- package/dist/{chunk-BJGHUKKM.js.map → chunk-RAQ4VAQ4.js.map} +1 -1
- package/dist/{chunk-KYFRWMTX.js → chunk-SW656AYX.js} +3 -3
- package/dist/{chunk-KYFRWMTX.js.map → chunk-SW656AYX.js.map} +1 -1
- package/dist/{chunk-F6XWBVVG.cjs → chunk-WOC5SCZF.cjs} +4 -4
- package/dist/{chunk-F6XWBVVG.cjs.map → chunk-WOC5SCZF.cjs.map} +1 -1
- package/dist/{chunk-V5WKCX3G.cjs → chunk-WVCEJBDR.cjs} +5 -4
- package/dist/chunk-WVCEJBDR.cjs.map +1 -0
- package/dist/{chunk-SZZPFXZ7.cjs → chunk-XNZBDAEX.cjs} +13 -13
- package/dist/{chunk-SZZPFXZ7.cjs.map → chunk-XNZBDAEX.cjs.map} +1 -1
- package/dist/{chunk-7UO6UWCO.cjs → chunk-YISIO2V3.cjs} +4 -4
- package/dist/{chunk-7UO6UWCO.cjs.map → chunk-YISIO2V3.cjs.map} +1 -1
- package/dist/{chunk-GEPX327P.cjs → chunk-YWXSGDDO.cjs} +4 -4
- package/dist/{chunk-GEPX327P.cjs.map → chunk-YWXSGDDO.cjs.map} +1 -1
- package/dist/{chunk-BHB4PDNV.cjs → chunk-ZBINIUJL.cjs} +2 -3
- package/dist/chunk-ZBINIUJL.cjs.map +1 -0
- package/dist/{chunk-D43ZGJR3.js → chunk-ZFD7BUUD.js} +3 -3
- package/dist/{chunk-D43ZGJR3.js.map → chunk-ZFD7BUUD.js.map} +1 -1
- package/dist/deployer/index.cjs +2 -2
- package/dist/deployer/index.js +1 -1
- package/dist/index.cjs +66 -66
- package/dist/index.js +18 -18
- package/dist/integration/index.cjs +3 -3
- package/dist/integration/index.js +1 -1
- package/dist/logger/constants.d.ts +1 -0
- package/dist/logger/constants.d.ts.map +1 -1
- package/dist/logger/index.cjs +6 -6
- package/dist/logger/index.js +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/test-utils/generateText.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +6 -12
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/mcp/index.cjs +4 -4
- package/dist/mcp/index.js +2 -2
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/vNext/index.cjs +34 -34
- package/dist/network/vNext/index.cjs.map +1 -1
- package/dist/network/vNext/index.d.ts +67 -0
- package/dist/network/vNext/index.d.ts.map +1 -1
- package/dist/network/vNext/index.js +5 -5
- 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/processors/processors/prompt-injection-detector.d.ts.map +1 -1
- 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/scores/run-experiment/index.d.ts +2 -2
- package/dist/scores/run-experiment/index.d.ts.map +1 -1
- package/dist/server/index.cjs +4 -4
- package/dist/server/index.js +2 -2
- package/dist/storage/index.cjs +17 -17
- package/dist/storage/index.js +4 -4
- package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
- package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts +5 -4
- package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +7 -3
- package/dist/stream/index.d.ts +1 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +1 -1
- package/dist/telemetry/index.cjs +7 -7
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/telemetry.decorators.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.cjs +2 -2
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tools/index.cjs +4 -4
- package/dist/tools/index.js +1 -1
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/tool.d.ts +2 -4
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/types.d.ts +5 -4
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tts/index.cjs +2 -2
- package/dist/tts/index.js +1 -1
- package/dist/utils.cjs +17 -17
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +4 -4
- package/dist/vector/index.js +1 -1
- package/dist/voice/index.cjs +4 -4
- package/dist/voice/index.js +1 -1
- 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 +2 -2
- package/dist/workflows/evented/workflow.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/types.d.ts +4 -1
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +51 -11
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/chunk-666JQVO5.js.map +0 -1
- package/dist/chunk-BHB4PDNV.cjs.map +0 -1
- package/dist/chunk-EXG53YAJ.cjs.map +0 -1
- package/dist/chunk-IYN65QCO.js.map +0 -1
- package/dist/chunk-QPOJZU26.cjs +0 -14
- package/dist/chunk-TLJPVRO5.js.map +0 -1
- package/dist/chunk-V5WKCX3G.cjs.map +0 -1
- package/dist/chunk-VBBMXF7Z.cjs.map +0 -1
- package/dist/chunk-X3GXU6TZ.js.map +0 -1
- package/dist/network/index.cjs +0 -316
- package/dist/network/index.cjs.map +0 -1
- package/dist/network/index.d.ts +0 -3
- package/dist/network/index.d.ts.map +0 -1
- package/dist/network/index.js +0 -314
- package/dist/network/index.js.map +0 -1
- package/dist/network/network.d.ts +0 -124
- package/dist/network/network.d.ts.map +0 -1
- package/dist/network/types.d.ts +0 -9
- package/dist/network/types.d.ts.map +0 -1
- package/network.d.ts +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/telemetry/utility.ts","../src/telemetry/telemetry.decorators.ts","../src/telemetry/storage-exporter.ts","../src/telemetry/telemetry.ts"],"names":["trace","propagation","acc","otlpContext","context","SpanStatusCode","recordResult","wrappedFn"],"mappings":"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","file":"chunk-5QXPHYHO.js","sourcesContent":["import { propagation, trace } from '@opentelemetry/api';\nimport type { Context } from '@opentelemetry/api';\n\n// Helper function to check if telemetry is active\nexport function hasActiveTelemetry(tracerName: string = 'default-tracer'): boolean {\n try {\n return !!trace.getTracer(tracerName);\n } catch {\n return false;\n }\n}\n\n/**\n * Get baggage values from context\n * @param ctx The context to get baggage values from\n * @returns\n */\nexport function getBaggageValues(ctx: Context) {\n const currentBaggage = propagation.getBaggage(ctx);\n const requestId = currentBaggage?.getEntry('http.request_id')?.value;\n const componentName = currentBaggage?.getEntry('componentName')?.value;\n const runId = currentBaggage?.getEntry('runId')?.value;\n const threadId = currentBaggage?.getEntry('threadId')?.value;\n const resourceId = currentBaggage?.getEntry('resourceId')?.value;\n return {\n requestId,\n componentName,\n runId,\n threadId,\n resourceId,\n };\n}\n","import { trace, context, SpanStatusCode, SpanKind, propagation } from '@opentelemetry/api';\nimport type { Span } from '@opentelemetry/api';\n\nimport { hasActiveTelemetry, getBaggageValues } from './utility';\n\n// Type interfaces for better type safety\ninterface StreamFinishData {\n text?: string;\n usage?: {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n };\n finishReason?: string;\n toolCalls?: unknown[];\n toolResults?: unknown[];\n warnings?: unknown;\n object?: unknown; // For structured output\n}\n\ninterface StreamOptions {\n onFinish?: (data: StreamFinishData) => Promise<void> | void;\n [key: string]: unknown;\n}\n\ninterface EnhancedSpan extends Span {\n __mastraStreamingSpan?: boolean;\n}\n\nfunction isStreamingResult(result: unknown, methodName: string): boolean {\n if (methodName === 'stream' || methodName === 'streamVNext') {\n return true;\n }\n\n if (result && typeof result === 'object' && result !== null) {\n const obj = result as Record<string, unknown>;\n return 'textStream' in obj || 'objectStream' in obj || 'usagePromise' in obj || 'finishReasonPromise' in obj;\n }\n\n return false;\n}\n\nfunction enhanceStreamingArgumentsWithTelemetry(\n args: unknown[],\n span: EnhancedSpan,\n spanName: string,\n methodName: string,\n): unknown[] {\n if (methodName === 'stream' || methodName === 'streamVNext') {\n const enhancedArgs = [...args];\n const streamOptions = (enhancedArgs.length > 1 && (enhancedArgs[1] as StreamOptions)) || ({} as StreamOptions);\n const enhancedStreamOptions: StreamOptions = { ...streamOptions };\n const originalOnFinish = enhancedStreamOptions.onFinish;\n\n enhancedStreamOptions.onFinish = async (finishData: StreamFinishData) => {\n try {\n const telemetryData = {\n text: finishData.text,\n usage: finishData.usage,\n finishReason: finishData.finishReason,\n toolCalls: finishData.toolCalls,\n toolResults: finishData.toolResults,\n warnings: finishData.warnings,\n ...(finishData.object !== undefined && { object: finishData.object }),\n };\n\n span.setAttribute(`${spanName}.result`, JSON.stringify(telemetryData));\n span.setStatus({ code: SpanStatusCode.OK });\n span.end();\n } catch (error) {\n console.warn('Telemetry capture failed:', error);\n span.setAttribute(`${spanName}.result`, '[Telemetry Capture Error]');\n span.setStatus({ code: SpanStatusCode.ERROR });\n span.end();\n }\n\n if (originalOnFinish) {\n return await originalOnFinish(finishData);\n }\n };\n\n // Check if an original onFinish was passed\n (enhancedStreamOptions.onFinish as any).__hasOriginalOnFinish = !!originalOnFinish;\n\n enhancedArgs[1] = enhancedStreamOptions;\n span.__mastraStreamingSpan = true;\n\n return enhancedArgs;\n }\n\n return args;\n}\n\n// Decorator factory that takes optional spanName\nexport function withSpan(options: {\n spanName?: string;\n skipIfNoTelemetry?: boolean;\n spanKind?: SpanKind;\n tracerName?: string;\n}): any {\n return function (_target: any, propertyKey: string | symbol, descriptor?: PropertyDescriptor | number) {\n if (!descriptor || typeof descriptor === 'number') return;\n\n const originalMethod = descriptor.value as Function;\n const methodName = String(propertyKey);\n\n descriptor.value = function (this: unknown, ...args: unknown[]) {\n // Skip if no telemetry is available and skipIfNoTelemetry is true\n if (options?.skipIfNoTelemetry && !hasActiveTelemetry(options?.tracerName)) {\n return originalMethod.apply(this, args);\n }\n\n const tracer = trace.getTracer(options?.tracerName ?? 'default-tracer');\n\n // Determine span name and kind\n let spanName: string;\n let spanKind: SpanKind | undefined;\n\n if (typeof options === 'string') {\n spanName = options;\n } else if (options) {\n spanName = options.spanName || methodName;\n spanKind = options.spanKind;\n } else {\n spanName = methodName;\n }\n\n // Start the span with optional kind\n const span = tracer.startSpan(spanName, { kind: spanKind }) as EnhancedSpan;\n let ctx = trace.setSpan(context.active(), span);\n\n // Record input arguments as span attributes\n args.forEach((arg, index) => {\n try {\n span.setAttribute(`${spanName}.argument.${index}`, JSON.stringify(arg));\n } catch {\n span.setAttribute(`${spanName}.argument.${index}`, '[Not Serializable]');\n }\n });\n\n const { requestId, componentName, runId, threadId, resourceId } = getBaggageValues(ctx);\n if (requestId) {\n span.setAttribute('http.request_id', requestId);\n }\n\n if (threadId) {\n span.setAttribute('threadId', threadId);\n }\n\n if (resourceId) {\n span.setAttribute('resourceId', resourceId);\n }\n\n if (componentName) {\n span.setAttribute('componentName', componentName);\n // @ts-ignore - These properties may exist on the context\n span.setAttribute('runId', runId);\n } else if (this && typeof this === 'object' && 'name' in this) {\n const contextObj = this as { name: string; runId?: string };\n span.setAttribute('componentName', contextObj.name);\n if (contextObj.runId) {\n span.setAttribute('runId', contextObj.runId);\n }\n ctx = propagation.setBaggage(\n ctx,\n propagation.createBaggage({\n // @ts-ignore\n componentName: { value: this.name },\n // @ts-ignore\n runId: { value: this.runId },\n // @ts-ignore\n 'http.request_id': { value: requestId },\n // @ts-ignore\n threadId: { value: threadId },\n // @ts-ignore\n resourceId: { value: resourceId },\n }),\n );\n }\n\n let result: unknown;\n try {\n // For streaming methods, enhance arguments with telemetry capture before calling\n const enhancedArgs = isStreamingResult(result, methodName)\n ? enhanceStreamingArgumentsWithTelemetry(args, span, spanName, methodName)\n : args;\n\n // Call the original method within the context\n result = context.with(ctx, () => originalMethod.apply(this, enhancedArgs));\n\n // Handle promises\n if (result instanceof Promise) {\n return result\n .then(resolvedValue => {\n if (isStreamingResult(resolvedValue, methodName)) {\n return resolvedValue;\n } else {\n try {\n span.setAttribute(`${spanName}.result`, JSON.stringify(resolvedValue));\n } catch {\n span.setAttribute(`${spanName}.result`, '[Not Serializable]');\n }\n return resolvedValue;\n }\n })\n .finally(() => {\n if (!span.__mastraStreamingSpan) {\n span.end();\n }\n });\n }\n\n // Record result for non-promise returns\n if (!isStreamingResult(result, methodName)) {\n try {\n span.setAttribute(`${spanName}.result`, JSON.stringify(result));\n } catch {\n span.setAttribute(`${spanName}.result`, '[Not Serializable]');\n }\n }\n\n // Return regular results\n return result;\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error instanceof Error ? error.message : 'Unknown error',\n });\n if (error instanceof Error) {\n span.recordException(error);\n }\n throw error;\n } finally {\n // End span for non-promise returns\n if (!(result instanceof Promise) && !isStreamingResult(result, methodName)) {\n span.end();\n }\n }\n };\n\n return descriptor;\n };\n}\n\n// class-telemetry.decorator.ts\nexport function InstrumentClass(options?: {\n prefix?: string;\n spanKind?: SpanKind;\n excludeMethods?: string[];\n methodFilter?: (methodName: string) => boolean;\n tracerName?: string;\n}) {\n return function (target: any) {\n const methods = Object.getOwnPropertyNames(target.prototype);\n\n methods.forEach(method => {\n // Skip excluded methods\n if (options?.excludeMethods?.includes(method) || method === 'constructor') return;\n // Apply method filter if provided\n if (options?.methodFilter && !options.methodFilter(method)) return;\n\n const descriptor = Object.getOwnPropertyDescriptor(target.prototype, method);\n if (descriptor && typeof descriptor.value === 'function') {\n Object.defineProperty(\n target.prototype,\n method,\n withSpan({\n spanName: options?.prefix ? `${options.prefix}.${method}` : method,\n skipIfNoTelemetry: true,\n spanKind: options?.spanKind || SpanKind.INTERNAL,\n tracerName: options?.tracerName,\n })(target, method, descriptor),\n );\n }\n });\n\n return target;\n };\n}\n","import { ExportResultCode } from '@opentelemetry/core';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';\n\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport type { IMastraLogger } from '../logger';\nimport type { MastraStorage } from '../storage/base';\nimport { TABLE_TRACES } from '../storage/constants';\n\nexport class OTLPTraceExporter implements SpanExporter {\n private storage: MastraStorage;\n private queue: { data: any[]; resultCallback: (result: ExportResult) => void }[] = [];\n private serializer: typeof JsonTraceSerializer;\n private logger: IMastraLogger;\n private activeFlush: Promise<void> | undefined = undefined;\n\n constructor({ logger, storage }: { logger: IMastraLogger; storage: MastraStorage }) {\n this.storage = storage;\n this.serializer = JsonTraceSerializer;\n this.logger = logger;\n }\n\n export(internalRepresentation: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n const serializedRequest = this.serializer.serializeRequest(internalRepresentation);\n // @ts-ignore\n const payload = JSON.parse(Buffer.from(serializedRequest.buffer, 'utf8'));\n const items = payload?.resourceSpans?.[0]?.scopeSpans;\n this.logger.debug(`Exporting telemetry: ${items.length} scope spans to be processed [trace batch]`);\n\n this.queue.push({ data: items, resultCallback });\n\n if (!this.activeFlush) {\n this.activeFlush = this.flush();\n }\n }\n shutdown(): Promise<void> {\n return this.forceFlush();\n }\n\n flush(): Promise<void> {\n const now = new Date();\n const items = this.queue.shift();\n if (!items) return Promise.resolve();\n\n const allSpans: any[] = items.data.reduce((acc, scopedSpans) => {\n const { scope, spans } = scopedSpans;\n for (const span of spans) {\n const {\n spanId,\n parentSpanId,\n traceId,\n name,\n kind,\n attributes,\n status,\n events,\n links,\n startTimeUnixNano,\n endTimeUnixNano,\n ...rest\n } = span;\n\n const startTime = Number(BigInt(startTimeUnixNano) / 1000n);\n const endTime = Number(BigInt(endTimeUnixNano) / 1000n);\n\n acc.push({\n id: spanId,\n parentSpanId,\n traceId,\n name,\n scope: scope.name,\n kind,\n status: JSON.stringify(status),\n events: JSON.stringify(events),\n links: JSON.stringify(links),\n attributes: JSON.stringify(\n attributes.reduce((acc: Record<string, any>, attr: any) => {\n const valueKey = Object.keys(attr.value)[0];\n if (valueKey) {\n acc[attr.key] = attr.value[valueKey];\n }\n return acc;\n }, {}),\n ),\n startTime,\n endTime,\n other: JSON.stringify(rest),\n createdAt: now,\n });\n }\n return acc;\n }, []);\n\n return this.storage\n .batchInsert({\n tableName: TABLE_TRACES,\n records: allSpans,\n })\n .then(() => {\n items.resultCallback({\n code: ExportResultCode.SUCCESS,\n });\n })\n .catch(e => {\n const mastraError = new MastraError(\n {\n id: 'OTLP_TRACE_EXPORT_FAILURE',\n text: 'Failed to export telemetry spans',\n domain: ErrorDomain.MASTRA_TELEMETRY,\n category: ErrorCategory.SYSTEM,\n details: {\n attemptedSpanCount: allSpans.length,\n targetTable: TABLE_TRACES,\n firstSpanName: allSpans.length > 0 ? allSpans[0].name : '',\n firstSpanKind: allSpans.length > 0 ? allSpans[0].kind : '',\n firstSpanScope: allSpans.length > 0 ? allSpans[0].scope : '',\n },\n },\n e,\n );\n this.logger.trackException(mastraError);\n this.logger.error('span err:' + mastraError.toString());\n items.resultCallback({\n code: ExportResultCode.FAILED,\n error: e,\n });\n })\n .finally(() => {\n this.activeFlush = undefined;\n });\n }\n async forceFlush(): Promise<void> {\n if (!this.queue.length) {\n return;\n }\n\n await this.activeFlush;\n while (this.queue.length) {\n await this.flush();\n }\n }\n\n __setLogger(logger: IMastraLogger) {\n this.logger = logger;\n }\n}\n","import { context as otlpContext, SpanStatusCode, trace, propagation, context } from '@opentelemetry/api';\nimport type { Tracer, SpanOptions, Context, Span, BaggageEntry } from '@opentelemetry/api';\n\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport type { OtelConfig } from './types';\nimport { getBaggageValues, hasActiveTelemetry } from './utility';\n\n// Add type declaration for global namespace\ndeclare global {\n var __TELEMETRY__: Telemetry | undefined;\n}\n\nexport class Telemetry {\n public tracer: Tracer = trace.getTracer('default');\n name: string = 'default-service';\n\n private constructor(config: OtelConfig) {\n this.name = config.serviceName ?? 'default-service';\n\n this.tracer = trace.getTracer(this.name);\n }\n\n /**\n * @deprecated This method does not do anything\n */\n public async shutdown() {}\n\n /**\n * Initialize telemetry with the given configuration\n * @param config - Optional telemetry configuration object\n * @returns Telemetry instance that can be used for tracing\n */\n static init(config: OtelConfig = {}): Telemetry {\n try {\n if (!globalThis.__TELEMETRY__) {\n globalThis.__TELEMETRY__ = new Telemetry(config);\n }\n\n return globalThis.__TELEMETRY__;\n } catch (error) {\n const wrappedError = new MastraError(\n {\n id: 'TELEMETRY_INIT_FAILED',\n text: 'Failed to initialize telemetry',\n domain: ErrorDomain.MASTRA_TELEMETRY,\n category: ErrorCategory.SYSTEM,\n },\n error,\n );\n throw wrappedError;\n }\n }\n\n static getActiveSpan() {\n const span = trace.getActiveSpan();\n return span;\n }\n\n /**\n * Get the global telemetry instance\n * @throws {Error} If telemetry has not been initialized\n * @returns {Telemetry} The global telemetry instance\n */\n static get(): Telemetry {\n if (!globalThis.__TELEMETRY__) {\n throw new MastraError({\n id: 'TELEMETRY_GETTER_FAILED_GLOBAL_TELEMETRY_NOT_INITIALIZED',\n text: 'Telemetry not initialized',\n domain: ErrorDomain.MASTRA_TELEMETRY,\n category: ErrorCategory.USER,\n });\n }\n return globalThis.__TELEMETRY__;\n }\n\n /**\n * Wraps a class instance with telemetry tracing\n * @param instance The class instance to wrap\n * @param options Optional configuration for tracing\n * @returns Wrapped instance with all methods traced\n */\n traceClass<T extends object>(\n instance: T,\n options: {\n /** Base name for spans (e.g. 'integration', 'agent') */\n spanNamePrefix?: string;\n /** Additional attributes to add to all spans */\n attributes?: Record<string, string>;\n /** Methods to exclude from tracing */\n excludeMethods?: string[];\n /** Skip tracing if telemetry is not active */\n skipIfNoTelemetry?: boolean;\n } = {},\n ): T {\n const { skipIfNoTelemetry = true } = options;\n\n // Skip if no telemetry is active and skipIfNoTelemetry is true\n if (skipIfNoTelemetry && !hasActiveTelemetry()) {\n return instance;\n }\n\n const { spanNamePrefix = instance.constructor.name.toLowerCase(), attributes = {}, excludeMethods = [] } = options;\n\n return new Proxy(instance, {\n get: (target, prop: string | symbol) => {\n const value = target[prop as keyof T];\n\n // Skip tracing for excluded methods, constructors, private methods\n if (\n typeof value === 'function' &&\n prop !== 'constructor' &&\n !prop.toString().startsWith('_') &&\n !excludeMethods.includes(prop.toString())\n ) {\n return this.traceMethod(value.bind(target), {\n spanName: `${spanNamePrefix}.${prop.toString()}`,\n attributes: {\n ...attributes,\n [`${spanNamePrefix}.name`]: target.constructor.name,\n [`${spanNamePrefix}.method.name`]: prop.toString(),\n },\n });\n }\n\n return value;\n },\n });\n }\n\n static setBaggage(baggage: Record<string, BaggageEntry>, ctx: Context = otlpContext.active()) {\n const currentBaggage = Object.fromEntries(propagation.getBaggage(ctx)?.getAllEntries() ?? []);\n const newCtx = propagation.setBaggage(\n ctx,\n propagation.createBaggage({\n ...currentBaggage,\n ...baggage,\n }),\n );\n return newCtx;\n }\n\n static withContext(ctx: Context, fn: () => void) {\n return otlpContext.with(ctx, fn);\n }\n\n /**\n * method to trace individual methods with proper context\n * @param method The method to trace\n * @param context Additional context for the trace\n * @returns Wrapped method with tracing\n */\n traceMethod<TMethod extends Function>(\n method: TMethod,\n context: {\n spanName: string;\n attributes?: Record<string, string>;\n skipIfNoTelemetry?: boolean;\n parentSpan?: Span;\n },\n ): TMethod {\n let ctx = otlpContext.active();\n const { skipIfNoTelemetry = true } = context;\n\n // Skip if no telemetry is active and skipIfNoTelemetry is true\n if (skipIfNoTelemetry && !hasActiveTelemetry()) {\n return method;\n }\n\n return ((...args: unknown[]) => {\n const span = this.tracer.startSpan(context.spanName);\n\n function handleError(error: unknown) {\n span.recordException(error as Error);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: (error as Error).message,\n });\n span.end();\n throw error;\n }\n try {\n const { requestId, componentName, runId, threadId, resourceId } = getBaggageValues(ctx);\n\n // Add all context attributes to span\n if (context.attributes) {\n span.setAttributes(context.attributes);\n }\n\n if (requestId) {\n span.setAttribute('http.request_id', requestId);\n }\n\n if (threadId) {\n span.setAttribute('threadId', threadId);\n }\n\n if (resourceId) {\n span.setAttribute('resourceId', resourceId);\n }\n\n if (context.attributes?.componentName) {\n ctx = propagation.setBaggage(\n ctx,\n propagation.createBaggage({\n componentName: { value: context.attributes.componentName },\n // @ts-ignore\n runId: { value: context.attributes.runId },\n // @ts-ignore\n 'http.request_id': { value: requestId },\n }),\n );\n } else {\n if (componentName) {\n span.setAttribute('componentName', componentName);\n // @ts-ignore\n span.setAttribute('runId', runId);\n } else if (this && this.name) {\n span.setAttribute('componentName', this.name);\n // @ts-ignore\n span.setAttribute('runId', this.runId);\n ctx = propagation.setBaggage(\n ctx,\n propagation.createBaggage({\n componentName: { value: this.name },\n // @ts-ignore\n runId: { value: this.runId },\n // @ts-ignore\n 'http.request_id': { value: requestId },\n // @ts-ignore\n threadId: { value: threadId },\n // @ts-ignore\n resourceId: { value: resourceId },\n }),\n );\n }\n }\n\n // Record input arguments as span attributes\n args.forEach((arg, index) => {\n try {\n span.setAttribute(`${context.spanName}.argument.${index}`, JSON.stringify(arg));\n } catch {\n span.setAttribute(`${context.spanName}.argument.${index}`, '[Not Serializable]');\n }\n });\n\n let result: any;\n otlpContext.with(trace.setSpan(ctx, span), () => {\n result = method(...args);\n });\n\n function recordResult(res: any) {\n try {\n span.setAttribute(`${context.spanName}.result`, JSON.stringify(res));\n } catch {\n span.setAttribute(`${context.spanName}.result`, '[Not Serializable]');\n }\n\n span.end();\n\n return res;\n }\n\n if (result instanceof Promise) {\n return result.then(recordResult).catch(handleError);\n } else {\n return recordResult(result);\n }\n } catch (error) {\n handleError(error);\n }\n }) as unknown as TMethod;\n }\n\n getBaggageTracer(): Tracer {\n return new BaggageTracer(this.tracer);\n }\n}\n\nclass BaggageTracer implements Tracer {\n private _tracer: Tracer;\n\n constructor(tracer: Tracer) {\n this._tracer = tracer;\n }\n\n startSpan(name: string, options: SpanOptions = {}, ctx: Context) {\n ctx = ctx ?? otlpContext.active();\n const span = this._tracer.startSpan(name, options, ctx);\n const { componentName, runId, requestId, threadId, resourceId } = getBaggageValues(ctx);\n // @ts-ignore\n span.setAttribute('componentName', componentName);\n // @ts-ignore\n span.setAttribute('runId', runId);\n // @ts-ignore\n span.setAttribute('http.request_id', requestId);\n // @ts-ignore\n span.setAttribute('threadId', threadId);\n // @ts-ignore\n span.setAttribute('resourceId', resourceId);\n\n return span;\n }\n\n startActiveSpan<F extends (span: Span) => unknown>(name: string, fn: F): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(name: string, options: SpanOptions, fn: F): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n options: SpanOptions,\n ctx: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => unknown>(\n name: string,\n optionsOrFn: SpanOptions | F,\n ctxOrFn?: Context | F,\n fn?: F,\n ): ReturnType<F> {\n if (typeof optionsOrFn === 'function') {\n const wrappedFn = (span: Span) => {\n const { componentName, runId, requestId, threadId, resourceId } = getBaggageValues(otlpContext.active());\n // @ts-ignore\n span.setAttribute('componentName', componentName);\n // @ts-ignore\n span.setAttribute('runId', runId);\n // @ts-ignore\n span.setAttribute('http.request_id', requestId);\n // @ts-ignore\n span.setAttribute('threadId', threadId);\n // @ts-ignore\n span.setAttribute('resourceId', resourceId);\n\n return optionsOrFn(span);\n };\n return this._tracer.startActiveSpan(name, {}, context.active(), wrappedFn as F);\n }\n if (typeof ctxOrFn === 'function') {\n const wrappedFn = (span: Span) => {\n const { componentName, runId, requestId, threadId, resourceId } = getBaggageValues(otlpContext.active());\n // @ts-ignore\n span.setAttribute('componentName', componentName);\n // @ts-ignore\n span.setAttribute('runId', runId);\n // @ts-ignore\n span.setAttribute('http.request_id', requestId);\n // @ts-ignore\n span.setAttribute('threadId', threadId);\n // @ts-ignore\n span.setAttribute('resourceId', resourceId);\n\n return ctxOrFn(span);\n };\n return this._tracer.startActiveSpan(name, optionsOrFn, context.active(), wrappedFn as F);\n }\n const wrappedFn = (span: Span) => {\n const { componentName, runId, requestId, threadId, resourceId } = getBaggageValues(\n ctxOrFn ?? otlpContext.active(),\n );\n // @ts-ignore\n span.setAttribute('componentName', componentName);\n // @ts-ignore\n span.setAttribute('runId', runId);\n // @ts-ignore\n span.setAttribute('http.request_id', requestId);\n // @ts-ignore\n span.setAttribute('threadId', threadId);\n // @ts-ignore\n span.setAttribute('resourceId', resourceId);\n\n return fn!(span);\n };\n return this._tracer.startActiveSpan(name, optionsOrFn, ctxOrFn!, wrappedFn as F);\n }\n}\n"]}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkXNZBDAEX_cjs = require('./chunk-XNZBDAEX.cjs');
|
|
4
|
+
var chunkCWTKL7YK_cjs = require('./chunk-CWTKL7YK.cjs');
|
|
5
5
|
var chunkV3VLOOSW_cjs = require('./chunk-V3VLOOSW.cjs');
|
|
6
|
+
var chunkKTCBGNCZ_cjs = require('./chunk-KTCBGNCZ.cjs');
|
|
6
7
|
var chunk4D4KB75Y_cjs = require('./chunk-4D4KB75Y.cjs');
|
|
7
|
-
var
|
|
8
|
+
var chunkZBINIUJL_cjs = require('./chunk-ZBINIUJL.cjs');
|
|
8
9
|
var chunkTSNDVBUU_cjs = require('./chunk-TSNDVBUU.cjs');
|
|
9
|
-
var
|
|
10
|
+
var chunkGKSWFKHA_cjs = require('./chunk-GKSWFKHA.cjs');
|
|
10
11
|
var chunk6TEQIYXV_cjs = require('./chunk-6TEQIYXV.cjs');
|
|
11
12
|
var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
|
|
12
|
-
var
|
|
13
|
+
var chunkWVCEJBDR_cjs = require('./chunk-WVCEJBDR.cjs');
|
|
13
14
|
var chunkEBVYYC2Q_cjs = require('./chunk-EBVYYC2Q.cjs');
|
|
14
15
|
var EventEmitter = require('events');
|
|
15
16
|
|
|
@@ -105,7 +106,7 @@ function createOnScorerHook(mastra) {
|
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
108
|
async function validateAndSaveScore(storage, payload) {
|
|
108
|
-
const payloadToSave =
|
|
109
|
+
const payloadToSave = chunkCWTKL7YK_cjs.saveScorePayloadSchema.parse(payload);
|
|
109
110
|
await storage?.saveScore(payloadToSave);
|
|
110
111
|
}
|
|
111
112
|
async function findScorer(mastra, entityId, entityType, scorerId) {
|
|
@@ -128,7 +129,7 @@ async function findScorer(mastra, entityId, entityType, scorerId) {
|
|
|
128
129
|
|
|
129
130
|
// src/mastra/index.ts
|
|
130
131
|
var _Mastra_decorators, _init;
|
|
131
|
-
_Mastra_decorators = [
|
|
132
|
+
_Mastra_decorators = [chunkZBINIUJL_cjs.InstrumentClass({
|
|
132
133
|
prefix: "mastra",
|
|
133
134
|
excludeMethods: ["getLogger", "getTelemetry"]
|
|
134
135
|
})];
|
|
@@ -144,7 +145,6 @@ exports.Mastra = class Mastra {
|
|
|
144
145
|
#telemetry;
|
|
145
146
|
#storage;
|
|
146
147
|
#memory;
|
|
147
|
-
#networks;
|
|
148
148
|
#vnext_networks;
|
|
149
149
|
#scorers;
|
|
150
150
|
#server;
|
|
@@ -153,6 +153,8 @@ exports.Mastra = class Mastra {
|
|
|
153
153
|
#idGenerator;
|
|
154
154
|
#pubsub;
|
|
155
155
|
#events = {};
|
|
156
|
+
// This is only used internally for server handlers that require temporary persistence
|
|
157
|
+
#serverCache;
|
|
156
158
|
/**
|
|
157
159
|
* @deprecated use getTelemetry() instead
|
|
158
160
|
*/
|
|
@@ -208,6 +210,7 @@ exports.Mastra = class Mastra {
|
|
|
208
210
|
path: m.path || "/api/*"
|
|
209
211
|
}));
|
|
210
212
|
}
|
|
213
|
+
this.#serverCache = new chunkKTCBGNCZ_cjs.InMemoryServerCache();
|
|
211
214
|
if (config?.pubsub) {
|
|
212
215
|
this.#pubsub = config.pubsub;
|
|
213
216
|
} else {
|
|
@@ -221,7 +224,7 @@ exports.Mastra = class Mastra {
|
|
|
221
224
|
this.#events[topic] = config?.events?.[topic] ?? [];
|
|
222
225
|
}
|
|
223
226
|
}
|
|
224
|
-
const workflowEventProcessor = new
|
|
227
|
+
const workflowEventProcessor = new chunkXNZBDAEX_cjs.WorkflowEventProcessor({
|
|
225
228
|
mastra: this
|
|
226
229
|
});
|
|
227
230
|
const workflowEventCb = async (event, cb) => {
|
|
@@ -243,8 +246,8 @@ exports.Mastra = class Mastra {
|
|
|
243
246
|
if (config?.logger) {
|
|
244
247
|
logger = config.logger;
|
|
245
248
|
} else {
|
|
246
|
-
const levelOnEnv = process.env.NODE_ENV === "production" && process.env.MASTRA_DEV !== "true" ?
|
|
247
|
-
logger = new
|
|
249
|
+
const levelOnEnv = process.env.NODE_ENV === "production" && process.env.MASTRA_DEV !== "true" ? chunkWVCEJBDR_cjs.LogLevel.WARN : chunkWVCEJBDR_cjs.LogLevel.INFO;
|
|
250
|
+
logger = new chunkWVCEJBDR_cjs.ConsoleLogger({
|
|
248
251
|
name: "Mastra",
|
|
249
252
|
level: levelOnEnv
|
|
250
253
|
});
|
|
@@ -256,12 +259,12 @@ exports.Mastra = class Mastra {
|
|
|
256
259
|
if (storage) {
|
|
257
260
|
storage = chunkV3VLOOSW_cjs.augmentWithInit(storage);
|
|
258
261
|
}
|
|
259
|
-
this.#telemetry =
|
|
262
|
+
this.#telemetry = chunkZBINIUJL_cjs.Telemetry.init(config?.telemetry);
|
|
260
263
|
if (config?.telemetry?.enabled !== false && typeof globalThis !== "undefined" && globalThis.___MASTRA_TELEMETRY___ !== true) {
|
|
261
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.`);
|
|
262
265
|
}
|
|
263
266
|
if (config?.observability) {
|
|
264
|
-
|
|
267
|
+
chunkGKSWFKHA_cjs.setupAITracing(config.observability);
|
|
265
268
|
}
|
|
266
269
|
if (this.#telemetry && storage) {
|
|
267
270
|
this.#storage = this.#telemetry.traceClass(storage, {
|
|
@@ -285,9 +288,6 @@ exports.Mastra = class Mastra {
|
|
|
285
288
|
});
|
|
286
289
|
this.#vectors = vectors;
|
|
287
290
|
}
|
|
288
|
-
if (config?.networks) {
|
|
289
|
-
this.#networks = config.networks;
|
|
290
|
-
}
|
|
291
291
|
if (config?.vnext_networks) {
|
|
292
292
|
this.#vnext_networks = config.vnext_networks;
|
|
293
293
|
}
|
|
@@ -363,14 +363,7 @@ do:
|
|
|
363
363
|
});
|
|
364
364
|
}
|
|
365
365
|
this.#agents = agents;
|
|
366
|
-
this.#networks = {};
|
|
367
366
|
this.#vnext_networks = {};
|
|
368
|
-
if (config?.networks) {
|
|
369
|
-
Object.entries(config.networks).forEach(([key, network]) => {
|
|
370
|
-
network.__registerMastra(this);
|
|
371
|
-
this.#networks[key] = network;
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
367
|
if (config?.vnext_networks) {
|
|
375
368
|
Object.entries(config.vnext_networks).forEach(([key, network]) => {
|
|
376
369
|
network.__registerMastra(this);
|
|
@@ -438,7 +431,7 @@ do:
|
|
|
438
431
|
* Register this Mastra instance with AI tracing exporters that need it
|
|
439
432
|
*/
|
|
440
433
|
registerAITracingExporters() {
|
|
441
|
-
const allTracingInstances =
|
|
434
|
+
const allTracingInstances = chunkGKSWFKHA_cjs.getAllAITracing();
|
|
442
435
|
allTracingInstances.forEach(tracing => {
|
|
443
436
|
const exporters = tracing.getExporters();
|
|
444
437
|
exporters.forEach(exporter => {
|
|
@@ -452,7 +445,7 @@ do:
|
|
|
452
445
|
* Initialize all AI tracing exporters after registration is complete
|
|
453
446
|
*/
|
|
454
447
|
initAITracingExporters() {
|
|
455
|
-
const allTracingInstances =
|
|
448
|
+
const allTracingInstances = chunkGKSWFKHA_cjs.getAllAITracing();
|
|
456
449
|
allTracingInstances.forEach(tracing => {
|
|
457
450
|
const exporters = tracing.getExporters();
|
|
458
451
|
exporters.forEach(exporter => {
|
|
@@ -710,13 +703,13 @@ do:
|
|
|
710
703
|
this.#mcpServers?.[key]?.__setLogger(this.#logger);
|
|
711
704
|
});
|
|
712
705
|
}
|
|
713
|
-
const allTracingInstances =
|
|
706
|
+
const allTracingInstances = chunkGKSWFKHA_cjs.getAllAITracing();
|
|
714
707
|
allTracingInstances.forEach(instance => {
|
|
715
708
|
instance.__setLogger(this.#logger);
|
|
716
709
|
});
|
|
717
710
|
}
|
|
718
711
|
setTelemetry(telemetry) {
|
|
719
|
-
this.#telemetry =
|
|
712
|
+
this.#telemetry = chunkZBINIUJL_cjs.Telemetry.init(telemetry);
|
|
720
713
|
if (this.#agents) {
|
|
721
714
|
Object.keys(this.#agents).forEach(key => {
|
|
722
715
|
if (this.#telemetry) {
|
|
@@ -785,6 +778,9 @@ do:
|
|
|
785
778
|
getServerMiddleware() {
|
|
786
779
|
return this.#serverMiddleware;
|
|
787
780
|
}
|
|
781
|
+
getServerCache() {
|
|
782
|
+
return this.#serverCache;
|
|
783
|
+
}
|
|
788
784
|
setServerMiddleware(serverMiddleware) {
|
|
789
785
|
if (typeof serverMiddleware === "function") {
|
|
790
786
|
this.#serverMiddleware = [{
|
|
@@ -816,9 +812,6 @@ do:
|
|
|
816
812
|
};
|
|
817
813
|
});
|
|
818
814
|
}
|
|
819
|
-
getNetworks() {
|
|
820
|
-
return Object.values(this.#networks || {});
|
|
821
|
-
}
|
|
822
815
|
vnext_getNetworks() {
|
|
823
816
|
return Object.values(this.#vnext_networks || {});
|
|
824
817
|
}
|
|
@@ -828,18 +821,6 @@ do:
|
|
|
828
821
|
getBundlerConfig() {
|
|
829
822
|
return this.#bundler;
|
|
830
823
|
}
|
|
831
|
-
/**
|
|
832
|
-
* Get a specific network by ID
|
|
833
|
-
* @param networkId - The ID of the network to retrieve
|
|
834
|
-
* @returns The network with the specified ID, or undefined if not found
|
|
835
|
-
*/
|
|
836
|
-
getNetwork(networkId) {
|
|
837
|
-
const networks = this.getNetworks();
|
|
838
|
-
return networks.find(network => {
|
|
839
|
-
const routingAgent = network.getRoutingAgent();
|
|
840
|
-
return network.formatAgentId(routingAgent.name) === networkId;
|
|
841
|
-
});
|
|
842
|
-
}
|
|
843
824
|
vnext_getNetwork(networkId) {
|
|
844
825
|
const networks = this.vnext_getNetworks();
|
|
845
826
|
return networks.find(network => network.id === networkId);
|
|
@@ -1008,10 +989,14 @@ do:
|
|
|
1008
989
|
* Shutdown Mastra and clean up all resources
|
|
1009
990
|
*/
|
|
1010
991
|
async shutdown() {
|
|
1011
|
-
await
|
|
992
|
+
await chunkGKSWFKHA_cjs.shutdownAITracingRegistry();
|
|
1012
993
|
await this.stopEventEngine();
|
|
1013
994
|
this.#logger?.info("Mastra shutdown completed");
|
|
1014
995
|
}
|
|
996
|
+
// This method is only used internally for server hnadlers that require temporary persistence
|
|
997
|
+
get serverCache() {
|
|
998
|
+
return this.#serverCache;
|
|
999
|
+
}
|
|
1015
1000
|
};
|
|
1016
1001
|
exports.Mastra = /*@__PURE__*/(_ => {
|
|
1017
1002
|
_init = chunkEBVYYC2Q_cjs.__decoratorStart(null);
|
|
@@ -1019,5 +1004,5 @@ exports.Mastra = /*@__PURE__*/(_ => {
|
|
|
1019
1004
|
chunkEBVYYC2Q_cjs.__runInitializers(_init, 1, exports.Mastra);
|
|
1020
1005
|
return exports.Mastra;
|
|
1021
1006
|
})();
|
|
1022
|
-
//# sourceMappingURL=chunk-
|
|
1023
|
-
//# sourceMappingURL=chunk-
|
|
1007
|
+
//# sourceMappingURL=chunk-64ONYYLY.cjs.map
|
|
1008
|
+
//# sourceMappingURL=chunk-64ONYYLY.cjs.map
|
|
@@ -0,0 +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-64ONYYLY.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"]}
|