@mastra/core 0.15.1 → 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 +4 -4
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ai-tracing/no-op.ts","../src/ai-tracing/types.ts","../src/ai-tracing/base.ts","../src/ai-tracing/default.ts","../src/ai-tracing/registry.ts","../src/ai-tracing/utils.ts","../src/ai-tracing/context.ts"],"names":["AISpanType","SamplingStrategyType","AITracingEventType","MastraBase","RegisteredLogger","MastraError","ConsoleLogger","LogLevel"],"mappings":"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","file":"chunk-EQLCC3M7.cjs","sourcesContent":["/**\n * No Op Implementation for MastraAITracing\n */\n\nimport type { MastraAITracing } from './base';\nimport type { AISpanType, AISpan, AISpanOptions, AISpanTypeMap, AnyAISpan } from './types';\n\nexport class NoOpAISpan<TType extends AISpanType = any> implements AISpan<TType> {\n public id: string;\n public name: string;\n public type: TType;\n public attributes: AISpanTypeMap[TType];\n public parent?: AnyAISpan;\n public trace: AnyAISpan;\n public traceId: string;\n public startTime: Date;\n public endTime?: Date;\n public aiTracing: MastraAITracing;\n public input?: any;\n public output?: any;\n public errorInfo?: {\n message: string;\n id?: string;\n domain?: string;\n category?: string;\n details?: Record<string, any>;\n };\n public metadata?: Record<string, any>;\n\n constructor(options: AISpanOptions<TType>, aiTracing: MastraAITracing) {\n this.id = 'no-op';\n this.name = options.name;\n this.type = options.type;\n this.attributes = options.attributes || ({} as AISpanTypeMap[TType]);\n this.metadata = options.metadata;\n this.parent = options.parent;\n this.trace = options.parent ? options.parent.trace : (this as any);\n this.traceId = 'no-op-trace';\n this.startTime = new Date();\n this.aiTracing = aiTracing;\n this.input = options.input;\n }\n\n end(_options?: { output?: any; attributes?: Partial<AISpanTypeMap[TType]>; metadata?: Record<string, any> }): void {}\n\n error(_options: {\n error: any;\n endSpan?: boolean;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }): void {}\n\n createChildSpan<TChildType extends AISpanType>(options: {\n type: TChildType;\n name: string;\n input?: any;\n attributes?: AISpanTypeMap[TChildType];\n metadata?: Record<string, any>;\n }): AISpan<TChildType> {\n return new NoOpAISpan<TChildType>({ ...options, parent: this }, this.aiTracing);\n }\n\n update(_options?: {\n input?: any;\n output?: any;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }): void {}\n\n get isRootSpan(): boolean {\n return !this.parent;\n }\n}\n","/**\n * AI Tracing interfaces\n */\n\nimport type { MastraError } from '../error';\nimport type { RuntimeContext } from '../runtime-context';\nimport type { WorkflowRunStatus, WorkflowStepStatus } from '../workflows';\nimport type { MastraAITracing } from './base';\n\n// ============================================================================\n// Core AI-Specific Span Types\n// ============================================================================\n\n/**\n * AI-specific span types with their associated metadata\n */\nexport enum AISpanType {\n /** Agent run - root span for agent processes */\n AGENT_RUN = 'agent_run',\n /** Generic span for custom operations */\n GENERIC = 'generic',\n /** LLM generation with model calls, token usage, prompts, completions */\n LLM_GENERATION = 'llm_generation',\n /** MCP (Model Context Protocol) tool execution */\n MCP_TOOL_CALL = 'mcp_tool_call',\n /** Function/tool execution with inputs, outputs, errors */\n TOOL_CALL = 'tool_call',\n /** Workflow run - root span for workflow processes */\n WORKFLOW_RUN = 'workflow_run',\n /** Workflow step execution with step status, data flow */\n WORKFLOW_STEP = 'workflow_step',\n /** Workflow conditional execution with condition evaluation */\n WORKFLOW_CONDITIONAL = 'workflow_conditional',\n /** Individual condition evaluation within conditional */\n WORKFLOW_CONDITIONAL_EVAL = 'workflow_conditional_eval',\n /** Workflow parallel execution */\n WORKFLOW_PARALLEL = 'workflow_parallel',\n /** Workflow loop execution */\n WORKFLOW_LOOP = 'workflow_loop',\n /** Workflow sleep operation */\n WORKFLOW_SLEEP = 'workflow_sleep',\n /** Workflow wait for event operation */\n WORKFLOW_WAIT_EVENT = 'workflow_wait_event',\n}\n\n// ============================================================================\n// Type-Specific Attributes Interfaces\n// ============================================================================\n\n/**\n * Base attributes that all spans can have\n */\nexport interface AIBaseAttributes {}\n\n/**\n * Agent Run attributes\n */\nexport interface AgentRunAttributes extends AIBaseAttributes {\n /** Agent identifier */\n agentId: string;\n /** Agent Instructions **/\n instructions?: string;\n /** Agent Prompt **/\n prompt?: string;\n /** Available tools for this execution */\n availableTools?: string[];\n /** Maximum steps allowed */\n maxSteps?: number;\n}\n\n/**\n * LLM Generation attributes\n */\nexport interface LLMGenerationAttributes extends AIBaseAttributes {\n /** Model name (e.g., 'gpt-4', 'claude-3') */\n model?: string;\n /** Model provider (e.g., 'openai', 'anthropic') */\n provider?: string;\n /** Type of result/output this LLM call produced */\n resultType?: 'tool_selection' | 'response_generation' | 'reasoning' | 'planning';\n /** Token usage statistics */\n usage?: {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n promptCacheHitTokens?: number;\n promptCacheMissTokens?: number;\n };\n /** Model parameters */\n parameters?: {\n temperature?: number;\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n presencePenalty?: number;\n stop?: string[];\n };\n /** Whether this was a streaming response */\n streaming?: boolean;\n}\n\n/**\n * Tool Call attributes\n */\nexport interface ToolCallAttributes extends AIBaseAttributes {\n toolId?: string;\n toolType?: string;\n toolDescription?: string;\n success?: boolean;\n}\n\n/**\n * MCP Tool Call attributes\n */\nexport interface MCPToolCallAttributes extends AIBaseAttributes {\n /** Id of the MCP tool/function */\n toolId: string;\n /** MCP server identifier */\n mcpServer: string;\n /** MCP server version */\n serverVersion?: string;\n /** Whether tool execution was successful */\n success?: boolean;\n}\n\n/**\n * Workflow Run attributes\n */\nexport interface WorkflowRunAttributes extends AIBaseAttributes {\n /** Workflow identifier */\n workflowId: string;\n /** Workflow status */\n status?: WorkflowRunStatus;\n}\n\n/**\n * Workflow Step attributes\n */\nexport interface WorkflowStepAttributes extends AIBaseAttributes {\n /** Step identifier */\n stepId: string;\n /** Step status */\n status?: WorkflowStepStatus;\n}\n\n/**\n * Workflow Conditional attributes\n */\nexport interface WorkflowConditionalAttributes extends AIBaseAttributes {\n /** Number of conditions evaluated */\n conditionCount: number;\n /** Which condition indexes evaluated to true */\n truthyIndexes?: number[];\n /** Which steps will be executed */\n selectedSteps?: string[];\n}\n\n/**\n * Workflow Conditional Evaluation attributes\n */\nexport interface WorkflowConditionalEvalAttributes extends AIBaseAttributes {\n /** Index of this condition in the conditional */\n conditionIndex: number;\n /** Result of condition evaluation */\n result?: boolean;\n}\n\n/**\n * Workflow Parallel attributes\n */\nexport interface WorkflowParallelAttributes extends AIBaseAttributes {\n /** Number of parallel branches */\n branchCount: number;\n /** Step IDs being executed in parallel */\n parallelSteps?: string[];\n}\n\n/**\n * Workflow Loop attributes\n */\nexport interface WorkflowLoopAttributes extends AIBaseAttributes {\n /** Type of loop (foreach, dowhile, dountil) */\n loopType?: 'foreach' | 'dowhile' | 'dountil';\n /** Current iteration number (for individual iterations) */\n iteration?: number;\n /** Total iterations (if known) */\n totalIterations?: number;\n /** Number of steps to run concurrently in foreach loop */\n concurrency?: number;\n}\n\n/**\n * Workflow Sleep attributes\n */\nexport interface WorkflowSleepAttributes extends AIBaseAttributes {\n /** Sleep duration in milliseconds */\n durationMs?: number;\n /** Sleep until date */\n untilDate?: Date;\n /** Sleep type */\n sleepType?: 'fixed' | 'dynamic';\n}\n\n/**\n * Workflow Wait Event attributes\n */\nexport interface WorkflowWaitEventAttributes extends AIBaseAttributes {\n /** Event name being waited for */\n eventName?: string;\n /** Timeout in milliseconds */\n timeoutMs?: number;\n /** Whether event was received or timed out */\n eventReceived?: boolean;\n /** Wait duration in milliseconds */\n waitDurationMs?: number;\n}\n\n/**\n * AI-specific span types mapped to their attributes\n */\nexport interface AISpanTypeMap {\n [AISpanType.AGENT_RUN]: AgentRunAttributes;\n [AISpanType.WORKFLOW_RUN]: WorkflowRunAttributes;\n [AISpanType.LLM_GENERATION]: LLMGenerationAttributes;\n [AISpanType.TOOL_CALL]: ToolCallAttributes;\n [AISpanType.MCP_TOOL_CALL]: MCPToolCallAttributes;\n [AISpanType.WORKFLOW_STEP]: WorkflowStepAttributes;\n [AISpanType.WORKFLOW_CONDITIONAL]: WorkflowConditionalAttributes;\n [AISpanType.WORKFLOW_CONDITIONAL_EVAL]: WorkflowConditionalEvalAttributes;\n [AISpanType.WORKFLOW_PARALLEL]: WorkflowParallelAttributes;\n [AISpanType.WORKFLOW_LOOP]: WorkflowLoopAttributes;\n [AISpanType.WORKFLOW_SLEEP]: WorkflowSleepAttributes;\n [AISpanType.WORKFLOW_WAIT_EVENT]: WorkflowWaitEventAttributes;\n [AISpanType.GENERIC]: AIBaseAttributes;\n}\n\n/**\n * Union type for cases that need to handle any span type\n */\nexport type AnyAISpanAttributes = AISpanTypeMap[keyof AISpanTypeMap];\n\n// ============================================================================\n// Span Interfaces\n// ============================================================================\n\n/**\n * AI Span interface with type safety\n */\nexport interface AISpan<TType extends AISpanType> {\n /** Unique span identifier */\n id: string;\n /** Name of the span */\n name: string;\n /** Type of the span */\n type: TType;\n /** When span started */\n startTime: Date;\n /** When span ended */\n endTime?: Date;\n /** AI-specific attributes - strongly typed based on span type */\n attributes?: AISpanTypeMap[TType];\n /** Parent span reference (undefined for root spans) */\n parent?: AnyAISpan;\n /** The top-level span - can be any type */\n trace: AnyAISpan;\n /** OpenTelemetry-compatible trace ID (32 hex chars) - present on all spans */\n traceId: string;\n /** Pointer to the AITracing instance */\n aiTracing: MastraAITracing;\n\n /** Input passed at the start of the span */\n input?: any;\n /** Output generated at the end of the span */\n output?: any;\n\n /** Error information if span failed */\n errorInfo?: {\n message: string;\n id?: string;\n domain?: string;\n category?: string;\n details?: Record<string, any>;\n };\n\n /** User-defined metadata */\n metadata?: Record<string, any>;\n\n // Methods for span lifecycle\n /** End the span */\n end(options?: { output?: any; attributes?: Partial<AISpanTypeMap[TType]>; metadata?: Record<string, any> }): void;\n\n /** Record an error for the span, optionally end the span as well */\n error(options: {\n error: MastraError | Error;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n endSpan?: boolean;\n }): void;\n\n /** Update span attributes */\n update(options?: {\n input?: any;\n output?: any;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }): void;\n\n /** Create child span - can be any span type independent of parent */\n createChildSpan<TChildType extends AISpanType>(options: {\n type: TChildType;\n name: string;\n input?: any;\n attributes?: AISpanTypeMap[TChildType];\n metadata?: Record<string, any>;\n }): AISpan<TChildType>;\n\n /** Returns `TRUE` if the span is the root span of a trace */\n get isRootSpan(): boolean;\n}\n\n/**\n * Union type for cases that need to handle any span\n */\nexport type AnyAISpan = AISpan<keyof AISpanTypeMap>;\n\n/**\n * Options for span creation\n */\nexport interface AISpanOptions<TType extends AISpanType> {\n /** Span name */\n name: string;\n /** Span type */\n type: TType;\n /** Input data */\n input?: any;\n /** Span attributes */\n attributes?: AISpanTypeMap[TType];\n /** Span metadata */\n metadata?: Record<string, any>;\n /** Parent span */\n parent?: AnyAISpan;\n}\n\n// ============================================================================\n// Configuration Types\n// ============================================================================\n\n/**\n * Sampling strategy types\n */\nexport enum SamplingStrategyType {\n ALWAYS = 'always',\n NEVER = 'never',\n RATIO = 'ratio',\n CUSTOM = 'custom',\n}\n\n/**\n * Context for TraceSampling\n */\nexport interface TraceContext {\n runtimeContext?: RuntimeContext;\n metadata?: Record<string, any>;\n}\n\n/**\n * Sampling strategy configuration\n */\nexport type SamplingStrategy =\n | { type: SamplingStrategyType.ALWAYS }\n | { type: SamplingStrategyType.NEVER }\n | { type: SamplingStrategyType.RATIO; probability: number }\n | { type: SamplingStrategyType.CUSTOM; sampler: (traceContext: TraceContext) => boolean };\n\n/**\n * Configuration for a single AI tracing instance\n */\nexport interface AITracingInstanceConfig {\n /** Service name for tracing */\n serviceName: string;\n /** Instance name from the registry */\n instanceName: string;\n /** Sampling strategy - controls whether tracing is collected (defaults to ALWAYS) */\n sampling?: SamplingStrategy;\n /** Custom exporters */\n exporters?: AITracingExporter[];\n /** Custom processors */\n processors?: AISpanProcessor[];\n}\n\n/**\n * Complete AI Tracing configuration\n */\nexport interface AITracingConfig {\n /** Map of tracing instance names to their configurations or pre-instantiated instances */\n instances: Record<string, Omit<AITracingInstanceConfig, 'instanceName'> | MastraAITracing>;\n /** Optional selector function to choose which tracing instance to use */\n selector?: TracingSelector;\n}\n\n// ============================================================================\n// Exporter and Processor Interfaces\n// ============================================================================\n\n/**\n * AI Tracing event types\n */\nexport enum AITracingEventType {\n SPAN_STARTED = 'span_started',\n SPAN_UPDATED = 'span_updated',\n SPAN_ENDED = 'span_ended',\n}\n\n/**\n * Tracing events that can be exported\n */\nexport type AITracingEvent =\n | { type: AITracingEventType.SPAN_STARTED; span: AnyAISpan }\n | { type: AITracingEventType.SPAN_UPDATED; span: AnyAISpan }\n | { type: AITracingEventType.SPAN_ENDED; span: AnyAISpan };\n\n/**\n * Interface for tracing exporters\n */\nexport interface AITracingExporter {\n /** Exporter name */\n name: string;\n\n /** Export tracing events */\n exportEvent(event: AITracingEvent): Promise<void>;\n\n /** Shutdown exporter */\n shutdown(): Promise<void>;\n}\n\n/**\n * Interface for span processors\n */\nexport interface AISpanProcessor {\n /** Processor name */\n name: string;\n /** Process span before export */\n process(span: AnyAISpan): AnyAISpan | null;\n /** Shutdown processor */\n shutdown(): Promise<void>;\n}\n\n// ============================================================================\n// AI Tracing Selection Types\n// ============================================================================\n\n/**\n * Context provided to tracing selector functions\n */\nexport interface AITracingSelectorContext {\n /** Runtime context */\n runtimeContext?: RuntimeContext;\n}\n\n/**\n * Function to select which AI tracing instance to use for a given span\n * Returns the name of the tracing instance, or undefined to use default\n */\nexport type TracingSelector = (\n context: AITracingSelectorContext,\n availableTracers: ReadonlyMap<string, MastraAITracing>,\n) => string | undefined;\n\n/**\n * Context for AI tracing that flows through workflow and agent execution\n */\nexport interface TracingContext {\n /** Current AI span for creating child spans and adding metadata */\n currentSpan?: AnyAISpan;\n}\n","/**\n * MastraAITracing - Abstract base class for AI Tracing implementations\n */\n\nimport { MastraBase } from '../base';\nimport type { IMastraLogger } from '../logger';\nimport { RegisteredLogger } from '../logger/constants';\nimport type { RuntimeContext } from '../runtime-context';\nimport { NoOpAISpan } from './no-op';\nimport type {\n AITracingInstanceConfig,\n AISpan,\n AISpanOptions,\n AISpanType,\n AITracingExporter,\n AISpanProcessor,\n AITracingEvent,\n TraceContext,\n AISpanTypeMap,\n AnyAISpan,\n} from './types';\nimport { SamplingStrategyType, AITracingEventType } from './types';\n\n// ============================================================================\n// Abstract Base Class\n// ============================================================================\n\n/**\n * Abstract base class for all AI Tracing implementations in Mastra.\n *\n */\nexport abstract class MastraAITracing extends MastraBase {\n protected config: Required<AITracingInstanceConfig>;\n\n constructor(config: AITracingInstanceConfig) {\n super({ component: RegisteredLogger.AI_TRACING, name: config.serviceName });\n\n // Apply defaults for optional fields\n this.config = {\n serviceName: config.serviceName,\n instanceName: config.instanceName,\n sampling: config.sampling ?? { type: SamplingStrategyType.ALWAYS },\n exporters: config.exporters ?? [],\n processors: config.processors ?? [],\n };\n }\n\n /**\n * Override setLogger to add AI tracing specific initialization log\n */\n __setLogger(logger: IMastraLogger) {\n super.__setLogger(logger);\n // Log AI tracing initialization details after logger is properly set\n this.logger.debug(\n `[AI Tracing] Initialized [service=${this.config.serviceName}] [instance=${this.config.instanceName}] [sampling=${this.config.sampling.type}]`,\n );\n }\n\n // ============================================================================\n // Protected getters for clean config access\n // ============================================================================\n\n protected get exporters(): AITracingExporter[] {\n return this.config.exporters || [];\n }\n\n protected get processors(): AISpanProcessor[] {\n return this.config.processors || [];\n }\n\n // ============================================================================\n // Public API - Single type-safe span creation method\n // ============================================================================\n\n /**\n * Start a new span of a specific AISpanType\n */\n startSpan<TType extends AISpanType>(options: {\n type: TType;\n name: string;\n input?: any;\n attributes?: AISpanTypeMap[TType];\n metadata?: Record<string, any>;\n parent?: AnyAISpan;\n startOptions?: {\n runtimeContext?: RuntimeContext;\n };\n }): AISpan<TType> {\n const { type, name, input, attributes, metadata, parent, startOptions } = options;\n const { runtimeContext } = startOptions || {};\n\n if (!this.shouldSample({ runtimeContext })) {\n return new NoOpAISpan<TType>({ type, name, input, attributes, metadata, parent }, this);\n }\n\n const spanOptions: AISpanOptions<TType> = {\n type,\n name,\n input,\n attributes,\n metadata,\n parent,\n };\n\n const span = this.createSpan(spanOptions);\n\n // Automatically wire up tracing lifecycle\n this.wireSpanLifecycle(span);\n\n // Emit span started event\n this.emitSpanStarted(span);\n\n return span;\n }\n\n // ============================================================================\n // Abstract Methods - Must be implemented by concrete classes\n // ============================================================================\n\n /**\n * Create a new span (called after sampling)\n *\n * Implementations should:\n * 1. Create a plain span with the provided attributes\n * 2. Return the span - base class handles all tracing lifecycle automatically\n *\n * The base class will automatically:\n * - Set trace relationships\n * - Wire span lifecycle callbacks\n * - Emit span_started event\n */\n protected abstract createSpan<TType extends AISpanType>(options: AISpanOptions<TType>): AISpan<TType>;\n\n // ============================================================================\n // Configuration Management\n // ============================================================================\n\n /**\n * Get current configuration\n */\n getConfig(): Readonly<Required<AITracingInstanceConfig>> {\n return { ...this.config };\n }\n\n // ============================================================================\n // Plugin Access\n // ============================================================================\n\n /**\n * Get all exporters\n */\n getExporters(): readonly AITracingExporter[] {\n return [...this.exporters];\n }\n\n /**\n * Get all processors\n */\n getProcessors(): readonly AISpanProcessor[] {\n return [...this.processors];\n }\n\n /**\n * Get the logger instance (for exporters and other components)\n */\n getLogger() {\n return this.logger;\n }\n\n // ============================================================================\n // Span Lifecycle Management\n // ============================================================================\n\n /**\n * Automatically wires up AI tracing lifecycle events for any span\n * This ensures all spans emit events regardless of implementation\n */\n private wireSpanLifecycle<TType extends AISpanType>(span: AISpan<TType>): void {\n // Store original methods\n const originalEnd = span.end.bind(span);\n const originalUpdate = span.update.bind(span);\n\n // Wrap methods to automatically emit tracing events\n span.end = (options?: {\n output?: any;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }) => {\n originalEnd(options);\n this.emitSpanEnded(span);\n };\n\n span.update = (options?: {\n input?: any;\n output?: any;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }) => {\n originalUpdate(options);\n this.emitSpanUpdated(span);\n };\n }\n\n // ============================================================================\n // Utility Methods\n // ============================================================================\n\n /**\n * Check if an AI trace should be sampled\n */\n protected shouldSample(traceContext: TraceContext): boolean {\n // Check built-in sampling strategy\n const { sampling } = this.config;\n\n switch (sampling.type) {\n case SamplingStrategyType.ALWAYS:\n return true;\n case SamplingStrategyType.NEVER:\n return false;\n case SamplingStrategyType.RATIO:\n if (sampling.probability === undefined || sampling.probability < 0 || sampling.probability > 1) {\n this.logger.warn(\n `Invalid sampling probability: ${sampling.probability}. Expected value between 0 and 1. Defaulting to no sampling.`,\n );\n return false;\n }\n return Math.random() < sampling.probability;\n case SamplingStrategyType.CUSTOM:\n return sampling.sampler(traceContext);\n default:\n throw new Error(`Sampling strategy type not implemented: ${(sampling as any).type}`);\n }\n }\n\n /**\n * Process a span through all processors\n */\n private processSpan(span: AnyAISpan): AnyAISpan | null {\n let processedSpan: AnyAISpan | null = span;\n\n for (const processor of this.processors) {\n if (!processedSpan) {\n break;\n }\n\n try {\n processedSpan = processor.process(processedSpan);\n } catch (error) {\n this.logger.error(`[AI Tracing] Processor error [name=${processor.name}]`, error);\n // Continue with other processors\n }\n }\n\n return processedSpan;\n }\n\n // ============================================================================\n // Event-driven Export Methods\n // ============================================================================\n\n /**\n * Emit a span started event\n */\n protected emitSpanStarted(span: AnyAISpan): void {\n // Process the span before emitting\n const processedSpan = this.processSpan(span);\n if (processedSpan) {\n this.exportEvent({ type: AITracingEventType.SPAN_STARTED, span: processedSpan }).catch(error => {\n this.logger.error('[AI Tracing] Failed to export span_started event', error);\n });\n }\n }\n\n /**\n * Emit a span ended event (called automatically when spans end)\n */\n protected emitSpanEnded(span: AnyAISpan): void {\n // Process the span through all processors\n const processedSpan = this.processSpan(span);\n if (processedSpan) {\n this.exportEvent({ type: AITracingEventType.SPAN_ENDED, span: processedSpan }).catch(error => {\n this.logger.error('[AI Tracing] Failed to export span_ended event', error);\n });\n }\n }\n\n /**\n * Emit a span updated event\n */\n protected emitSpanUpdated(span: AnyAISpan): void {\n // Process the span before emitting\n const processedSpan = this.processSpan(span);\n if (processedSpan) {\n this.exportEvent({ type: AITracingEventType.SPAN_UPDATED, span: processedSpan }).catch(error => {\n this.logger.error('[AI Tracing] Failed to export span_updated event', error);\n });\n }\n }\n\n /**\n * Export tracing event through all exporters (realtime mode)\n */\n protected async exportEvent(event: AITracingEvent): Promise<void> {\n const exportPromises = this.exporters.map(async exporter => {\n try {\n if (exporter.exportEvent) {\n await exporter.exportEvent(event);\n this.logger.debug(`[AI Tracing] Event exported [exporter=${exporter.name}] [type=${event.type}]`);\n }\n } catch (error) {\n this.logger.error(`[AI Tracing] Export error [exporter=${exporter.name}]`, error);\n // Don't rethrow - continue with other exporters\n }\n });\n\n await Promise.allSettled(exportPromises);\n }\n\n // ============================================================================\n // Lifecycle Management\n // ============================================================================\n\n /**\n * Initialize AI tracing (called by Mastra during component registration)\n */\n async init(): Promise<void> {\n this.logger.debug(`[AI Tracing] Initialization started [name=${this.name}]`);\n\n // Any initialization logic for the AI tracing system\n // This could include setting up queues, starting background processes, etc.\n\n this.logger.info(`[AI Tracing] Initialized successfully [name=${this.name}]`);\n }\n\n /**\n * Shutdown AI tracing and clean up resources\n */\n async shutdown(): Promise<void> {\n this.logger.debug(`[AI Tracing] Shutdown started [name=${this.name}]`);\n\n // Shutdown all components\n const shutdownPromises = [...this.exporters.map(e => e.shutdown()), ...this.processors.map(p => p.shutdown())];\n\n await Promise.allSettled(shutdownPromises);\n\n this.logger.info(`[AI Tracing] Shutdown completed [name=${this.name}]`);\n }\n}\n","/**\n * Default Implementation for MastraAITracing\n */\n\nimport { MastraError } from '../error';\nimport type { IMastraLogger } from '../logger';\nimport { ConsoleLogger, LogLevel } from '../logger';\nimport { MastraAITracing } from './base';\nimport type {\n AISpanType,\n AISpan,\n AISpanOptions,\n AITracingExporter,\n AITracingInstanceConfig,\n AITracingEvent,\n AISpanTypeMap,\n AISpanProcessor,\n AnyAISpan,\n} from './types';\nimport { SamplingStrategyType, AITracingEventType } from './types';\n\n// ============================================================================\n// Default AISpan Implementation\n// ============================================================================\n\n/**\n * Generate OpenTelemetry-compatible span ID (64-bit, 16 hex chars)\n */\nfunction generateSpanId(): string {\n // Generate 8 random bytes (64 bits) in hex format\n const bytes = new Uint8Array(8);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n // Fallback for environments without crypto.getRandomValues\n for (let i = 0; i < 8; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n }\n return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join('');\n}\n\n/**\n * Generate OpenTelemetry-compatible trace ID (128-bit, 32 hex chars)\n */\nfunction generateTraceId(): string {\n // Generate 16 random bytes (128 bits) in hex format\n const bytes = new Uint8Array(16);\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(bytes);\n } else {\n // Fallback for environments without crypto.getRandomValues\n for (let i = 0; i < 16; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n }\n return Array.from(bytes, byte => byte.toString(16).padStart(2, '0')).join('');\n}\n\nclass DefaultAISpan<TType extends AISpanType> implements AISpan<TType> {\n public id: string;\n public name: string;\n public type: TType;\n public attributes: AISpanTypeMap[TType];\n public parent?: AnyAISpan;\n public trace: AnyAISpan;\n public traceId: string;\n public startTime: Date;\n public endTime?: Date;\n public aiTracing: MastraAITracing;\n public input?: any;\n public output?: any;\n public errorInfo?: {\n message: string;\n id?: string;\n domain?: string;\n category?: string;\n details?: Record<string, any>;\n };\n public metadata?: Record<string, any>;\n\n constructor(options: AISpanOptions<TType>, aiTracing: MastraAITracing) {\n this.id = generateSpanId();\n this.name = options.name;\n this.type = options.type;\n this.attributes = options.attributes || ({} as AISpanTypeMap[TType]);\n this.metadata = options.metadata;\n this.parent = options.parent;\n this.trace = options.parent ? options.parent.trace : (this as any);\n this.startTime = new Date();\n this.aiTracing = aiTracing;\n this.input = options.input;\n\n // Set trace ID: generate new for root spans, inherit for child spans\n if (!options.parent) {\n // This is a root span, so it becomes its own trace with a new trace ID\n this.traceId = generateTraceId();\n } else {\n // Child span inherits trace ID from root span\n this.traceId = options.parent.trace.traceId;\n }\n }\n\n end(options?: { output?: any; attributes?: Partial<AISpanTypeMap[TType]>; metadata?: Record<string, any> }): void {\n this.endTime = new Date();\n if (options?.output !== undefined) {\n this.output = options.output;\n }\n if (options?.attributes) {\n this.attributes = { ...this.attributes, ...options.attributes };\n }\n if (options?.metadata) {\n this.metadata = { ...this.metadata, ...options.metadata };\n }\n // Tracing events automatically handled by base class\n }\n\n error(options: {\n error: MastraError | Error;\n endSpan?: boolean;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }): void {\n const { error, endSpan = true, attributes, metadata } = options;\n\n this.errorInfo =\n error instanceof MastraError\n ? {\n id: error.id,\n details: error.details,\n category: error.category,\n domain: error.domain,\n message: error.message,\n }\n : {\n message: error.message,\n };\n\n // Update attributes if provided\n if (attributes) {\n this.attributes = { ...this.attributes, ...attributes };\n }\n if (metadata) {\n this.metadata = { ...this.metadata, ...metadata };\n }\n\n if (endSpan) {\n this.end();\n } else {\n // Trigger span update event when not ending the span\n this.update({});\n }\n // Note: errorInfo is now a span property, attributes handled above\n }\n\n createChildSpan<TChildType extends AISpanType>(options: {\n type: TChildType;\n name: string;\n input?: any;\n attributes?: AISpanTypeMap[TChildType];\n metadata?: Record<string, any>;\n }): AISpan<TChildType> {\n return this.aiTracing.startSpan({\n ...options,\n parent: this,\n });\n }\n\n update(options?: {\n input?: any;\n output?: any;\n attributes?: Partial<AISpanTypeMap[TType]>;\n metadata?: Record<string, any>;\n }): void {\n if (options?.input !== undefined) {\n this.input = options.input;\n }\n if (options?.output !== undefined) {\n this.output = options.output;\n }\n if (options?.attributes) {\n this.attributes = { ...this.attributes, ...options.attributes };\n }\n if (options?.metadata) {\n this.metadata = { ...this.metadata, ...options.metadata };\n }\n // Tracing events automatically handled by base class\n }\n\n get isRootSpan(): boolean {\n return !this.parent;\n }\n\n async export(): Promise<string> {\n return JSON.stringify({\n id: this.id,\n attributes: this.attributes,\n metadata: this.metadata,\n startTime: this.startTime,\n endTime: this.endTime,\n traceId: this.traceId, // OpenTelemetry trace ID\n });\n }\n}\n\n// ============================================================================\n// Sensitive Data Filter Processor\n// ============================================================================\n\nexport class SensitiveDataFilter implements AISpanProcessor {\n name = 'sensitive-data-filter';\n private sensitiveFields: string[];\n\n constructor(sensitiveFields?: string[]) {\n // Default sensitive fields with case-insensitive matching\n this.sensitiveFields = (\n sensitiveFields || [\n 'password',\n 'token',\n 'secret',\n 'key',\n 'apiKey',\n 'auth',\n 'authorization',\n 'bearer',\n 'jwt',\n 'credential',\n 'sessionId',\n ]\n ).map(field => field.toLowerCase());\n }\n\n process(span: AnyAISpan): AnyAISpan | null {\n // Deep filter function to recursively handle nested objects\n const deepFilter = (obj: any, seen = new WeakSet()): any => {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n // Handle circular references\n if (seen.has(obj)) {\n return '[Circular Reference]';\n }\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(item => deepFilter(item, seen));\n }\n\n const filtered: any = {};\n Object.keys(obj).forEach(key => {\n if (this.sensitiveFields.includes(key.toLowerCase())) {\n // Only redact primitive values, recurse into objects/arrays\n if (obj[key] && typeof obj[key] === 'object') {\n filtered[key] = deepFilter(obj[key], seen);\n } else {\n filtered[key] = '[REDACTED]';\n }\n } else {\n filtered[key] = deepFilter(obj[key], seen);\n }\n });\n\n return filtered;\n };\n\n try {\n // Create a copy of the span with filtered attributes\n const filteredSpan = { ...span };\n filteredSpan.attributes = deepFilter(span.attributes);\n filteredSpan.metadata = deepFilter(span.metadata);\n filteredSpan.input = deepFilter(span.input);\n filteredSpan.output = deepFilter(span.output);\n filteredSpan.errorInfo = deepFilter(span.errorInfo);\n return filteredSpan;\n } catch (error) {\n // If filtering fails, return heavily redacted span for security\n const safeSpan = { ...span };\n safeSpan.attributes = {\n '[FILTERING_ERROR]': 'Attributes were completely redacted due to filtering error',\n '[ERROR_MESSAGE]': error instanceof Error ? error.message : 'Unknown filtering error',\n } as any;\n return safeSpan;\n }\n }\n\n async shutdown(): Promise<void> {\n // No cleanup needed\n }\n}\n\n// ============================================================================\n// Default Console Exporter\n// ============================================================================\n\nexport class DefaultConsoleExporter implements AITracingExporter {\n name = 'default-console';\n private logger: IMastraLogger;\n\n constructor(logger?: IMastraLogger) {\n if (logger) {\n this.logger = logger;\n } else {\n // Fallback: create a direct ConsoleLogger instance if none provided\n this.logger = new ConsoleLogger({\n name: 'default-console-exporter',\n level: LogLevel.INFO, // Set to INFO so that info() calls actually log\n });\n }\n }\n\n async exportEvent(event: AITracingEvent): Promise<void> {\n const span = event.span;\n\n // Helper to safely stringify attributes (filtering already done by processor)\n const formatAttributes = (attributes: any) => {\n try {\n return JSON.stringify(attributes, null, 2);\n } catch (error) {\n const errMsg = error instanceof Error ? error.message : 'Unknown formatting error';\n return `[Unable to serialize attributes: ${errMsg}]`;\n }\n };\n\n // Helper to format duration\n const formatDuration = (startTime: Date, endTime?: Date) => {\n if (!endTime) return 'N/A';\n const duration = endTime.getTime() - startTime.getTime();\n return `${duration}ms`;\n };\n\n switch (event.type) {\n case AITracingEventType.SPAN_STARTED:\n this.logger.info(`🚀 SPAN_STARTED`);\n this.logger.info(` Type: ${span.type}`);\n this.logger.info(` Name: ${span.name}`);\n this.logger.info(` ID: ${span.id}`);\n this.logger.info(` Trace ID: ${span.traceId}`);\n if (span.input !== undefined) {\n this.logger.info(` Input: ${formatAttributes(span.input)}`);\n }\n this.logger.info(` Attributes: ${formatAttributes(span.attributes)}`);\n this.logger.info('─'.repeat(80));\n break;\n\n case AITracingEventType.SPAN_ENDED:\n const duration = formatDuration(span.startTime, span.endTime);\n this.logger.info(`✅ SPAN_ENDED`);\n this.logger.info(` Type: ${span.type}`);\n this.logger.info(` Name: ${span.name}`);\n this.logger.info(` ID: ${span.id}`);\n this.logger.info(` Duration: ${duration}`);\n this.logger.info(` Trace ID: ${span.traceId}`);\n if (span.input !== undefined) {\n this.logger.info(` Input: ${formatAttributes(span.input)}`);\n }\n if (span.output !== undefined) {\n this.logger.info(` Output: ${formatAttributes(span.output)}`);\n }\n if (span.errorInfo) {\n this.logger.info(` Error: ${formatAttributes(span.errorInfo)}`);\n }\n this.logger.info(` Attributes: ${formatAttributes(span.attributes)}`);\n this.logger.info('─'.repeat(80));\n break;\n\n case AITracingEventType.SPAN_UPDATED:\n this.logger.info(`📝 SPAN_UPDATED`);\n this.logger.info(` Type: ${span.type}`);\n this.logger.info(` Name: ${span.name}`);\n this.logger.info(` ID: ${span.id}`);\n this.logger.info(` Trace ID: ${span.traceId}`);\n if (span.input !== undefined) {\n this.logger.info(` Input: ${formatAttributes(span.input)}`);\n }\n if (span.output !== undefined) {\n this.logger.info(` Output: ${formatAttributes(span.output)}`);\n }\n if (span.errorInfo) {\n this.logger.info(` Error: ${formatAttributes(span.errorInfo)}`);\n }\n this.logger.info(` Updated Attributes: ${formatAttributes(span.attributes)}`);\n this.logger.info('─'.repeat(80));\n break;\n\n default:\n throw new Error(`Tracing event type not implemented: ${(event as any).type}`);\n }\n }\n\n async shutdown(): Promise<void> {\n this.logger.info('DefaultConsoleExporter shutdown');\n }\n}\n\n// ============================================================================\n// Default Configuration (defined after classes to avoid circular dependencies)\n// ============================================================================\n\nexport const aiTracingDefaultConfig: AITracingInstanceConfig = {\n serviceName: 'mastra-ai-service',\n instanceName: 'default',\n sampling: { type: SamplingStrategyType.ALWAYS },\n exporters: [new DefaultConsoleExporter()], // Uses its own fallback logger\n processors: [new SensitiveDataFilter()],\n};\n\n// ============================================================================\n// Default AI Tracing Implementation\n// ============================================================================\n\nexport class DefaultAITracing extends MastraAITracing {\n constructor(config: AITracingInstanceConfig = aiTracingDefaultConfig) {\n super(config);\n }\n\n // ============================================================================\n // Abstract Method Implementations\n // ============================================================================\n\n protected createSpan<TType extends AISpanType>(options: AISpanOptions<TType>): AISpan<TType> {\n // Simple span creation - base class handles all tracing lifecycle automatically\n return new DefaultAISpan<TType>(options, this);\n }\n}\n","/**\n * AI Tracing Registry for Mastra\n *\n * Provides a global registry for AI tracing instances.\n */\n\nimport { MastraAITracing } from './base';\nimport { DefaultAITracing } from './default';\nimport { SamplingStrategyType } from './types';\nimport type { TracingSelector, AITracingSelectorContext, AITracingConfig, AITracingInstanceConfig } from './types';\n\n// ============================================================================\n// Global AI Tracing Registry\n// ============================================================================\n\n/**\n * Global registry for AI Tracing instances.\n */\nclass AITracingRegistry {\n private instances = new Map<string, MastraAITracing>();\n private defaultInstance?: MastraAITracing;\n private selector?: TracingSelector;\n\n /**\n * Register a tracing instance\n */\n register(name: string, instance: MastraAITracing, isDefault = false): void {\n if (this.instances.has(name)) {\n throw new Error(`AI Tracing instance '${name}' already registered`);\n }\n\n this.instances.set(name, instance);\n\n // Set as default if explicitly marked or if it's the first instance\n if (isDefault || !this.defaultInstance) {\n this.defaultInstance = instance;\n }\n }\n\n /**\n * Get a tracing instance by name\n */\n get(name: string): MastraAITracing | undefined {\n return this.instances.get(name);\n }\n\n /**\n * Get the default tracing instance\n */\n getDefault(): MastraAITracing | undefined {\n return this.defaultInstance;\n }\n\n /**\n * Set the tracing selector function\n */\n setSelector(selector: TracingSelector): void {\n this.selector = selector;\n }\n\n /**\n * Get the selected tracing instance based on context\n */\n getSelected(context: AITracingSelectorContext): MastraAITracing | undefined {\n // 1. Try selector function if provided\n if (this.selector) {\n const selected = this.selector(context, this.instances);\n if (selected && this.instances.has(selected)) {\n return this.instances.get(selected);\n }\n }\n\n // 2. Fall back to default\n return this.defaultInstance;\n }\n\n /**\n * Unregister a tracing instance\n */\n unregister(name: string): boolean {\n return this.instances.delete(name);\n }\n\n /**\n * Shutdown all instances and clear the registry\n */\n async shutdown(): Promise<void> {\n const shutdownPromises = Array.from(this.instances.values()).map(instance => instance.shutdown());\n\n await Promise.allSettled(shutdownPromises);\n this.instances.clear();\n }\n\n /**\n * Clear all instances without shutdown\n */\n clear(): void {\n this.instances.clear();\n this.defaultInstance = undefined;\n this.selector = undefined;\n }\n\n /**\n * Get all registered instances\n */\n getAll(): ReadonlyMap<string, MastraAITracing> {\n return new Map(this.instances);\n }\n}\n\nconst aiTracingRegistry = new AITracingRegistry();\n\n// ============================================================================\n// Registry Management Functions\n// ============================================================================\n\n/**\n * Register an AI tracing instance globally\n */\nexport function registerAITracing(name: string, instance: MastraAITracing, isDefault = false): void {\n aiTracingRegistry.register(name, instance, isDefault);\n}\n\n/**\n * Get an AI tracing instance from the registry\n */\nexport function getAITracing(name: string): MastraAITracing | undefined {\n return aiTracingRegistry.get(name);\n}\n\n/**\n * Get the default AI tracing instance\n */\nexport function getDefaultAITracing(): MastraAITracing | undefined {\n return aiTracingRegistry.getDefault();\n}\n\n/**\n * Set the AI tracing selector function\n */\nexport function setAITracingSelector(selector: TracingSelector): void {\n aiTracingRegistry.setSelector(selector);\n}\n\n/**\n * Get the selected AI tracing instance based on context\n */\nexport function getSelectedAITracing(context: AITracingSelectorContext): MastraAITracing | undefined {\n return aiTracingRegistry.getSelected(context);\n}\n\n/**\n * Unregister an AI tracing instance\n */\nexport function unregisterAITracing(name: string): boolean {\n return aiTracingRegistry.unregister(name);\n}\n\n/**\n * Shutdown all AI tracing instances and clear the registry\n */\nexport async function shutdownAITracingRegistry(): Promise<void> {\n await aiTracingRegistry.shutdown();\n}\n\n/**\n * Clear all AI tracing instances without shutdown\n */\nexport function clearAITracingRegistry(): void {\n aiTracingRegistry.clear();\n}\n\n/**\n * Get all registered AI tracing instances\n */\nexport function getAllAITracing(): ReadonlyMap<string, MastraAITracing> {\n return aiTracingRegistry.getAll();\n}\n\n/**\n * Check if AI tracing is available and enabled\n */\nexport function hasAITracing(name: string): boolean {\n const tracing = getAITracing(name);\n if (!tracing) return false;\n\n const config = tracing.getConfig();\n const sampling = config.sampling;\n\n // Check if sampling allows tracing\n return sampling.type !== SamplingStrategyType.NEVER;\n}\n\n/**\n * Type guard to check if an object is a MastraAITracing instance\n */\nfunction isAITracingInstance(\n obj: Omit<AITracingInstanceConfig, 'instanceName'> | MastraAITracing,\n): obj is MastraAITracing {\n return obj instanceof MastraAITracing;\n}\n\n/**\n * Setup AI tracing from the AITracingConfig\n */\nexport function setupAITracing(config: AITracingConfig): void {\n const entries = Object.entries(config.instances);\n\n entries.forEach(([name, tracingDef], index) => {\n const instance = isAITracingInstance(tracingDef)\n ? tracingDef // Pre-instantiated custom implementation\n : new DefaultAITracing({ ...tracingDef, instanceName: name }); // Config -> DefaultAITracing with instance name\n\n // First registered instance becomes default\n const isDefault = index === 0;\n registerAITracing(name, instance, isDefault);\n });\n\n // Set selector function if provided\n if (config.selector) {\n setAITracingSelector(config.selector);\n }\n}\n","/**\n * Utility functions for cleaning and manipulating metadata objects\n * used in AI tracing and observability.\n */\n\n/**\n * Removes non-serializable values from a metadata object.\n * @param metadata - An object with arbitrary values\n * @returns A new object with only serializable entries\n */\nexport function sanitizeMetadata(metadata: Record<string, any> | undefined): Record<string, any> {\n if (!metadata) return {};\n const sanitized: Record<string, any> = {};\n for (const [key, value] of Object.entries(metadata)) {\n if (isSerializable(value)) {\n sanitized[key] = value;\n }\n }\n return sanitized;\n}\n\n/**\n * Checks if a value can be safely JSON-stringified.\n * @param value - Any value\n * @returns true if serializable, false otherwise\n */\nexport function isSerializable(value: any): boolean {\n try {\n JSON.stringify(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Removes specific keys from an object.\n * @param obj - The original object\n * @param keysToOmit - Keys to exclude from the returned object\n * @returns A new object with the specified keys removed\n */\nexport function omitKeys<T extends Record<string, any>>(obj: T, keysToOmit: string[]): Partial<T> {\n return Object.fromEntries(Object.entries(obj).filter(([key]) => !keysToOmit.includes(key))) as Partial<T>;\n}\n","/**\n * AI Tracing Context Integration\n *\n * This module provides automatic AI tracing context propagation throughout Mastra's execution contexts.\n * It uses JavaScript Proxies to transparently wrap Mastra, Agent, and Workflow instances so that\n * tracing context is automatically injected without requiring manual passing by users.\n */\n\nimport type { Agent } from '../agent';\nimport type { Mastra } from '../mastra';\nimport type { Workflow } from '../workflows';\nimport type { TracingContext, AnyAISpan } from './types';\n\nconst AGENT_GETTERS = ['getAgent', 'getAgentById'];\nconst AGENT_METHODS_TO_WRAP = ['generate', 'stream', 'generateVNext', 'streamVNext'];\n\nconst WORKFLOW_GETTERS = ['getWorkflow', 'getWorkflowById'];\nconst WORKFLOW_METHODS_TO_WRAP = ['execute'];\n\n/**\n * Helper function to detect NoOp spans to avoid unnecessary wrapping\n */\nfunction isNoOpSpan(span: AnyAISpan): boolean {\n // Check if this is a NoOp span implementation\n return (\n span.constructor.name === 'NoOpAISpan' || (span as any).__isNoOp === true || !span.aiTracing // NoOp spans might not have aiTracing reference\n );\n}\n\n/**\n * Creates a tracing-aware Mastra proxy that automatically injects\n * AI tracing context into agent and workflow method calls\n */\nexport function wrapMastra<T extends Mastra>(mastra: T, tracingContext: TracingContext): T {\n // Don't wrap if no current span or if using NoOp span\n if (!tracingContext.currentSpan || isNoOpSpan(tracingContext.currentSpan)) {\n return mastra;\n }\n\n try {\n return new Proxy(mastra, {\n get(target, prop) {\n try {\n if (AGENT_GETTERS.includes(prop as string)) {\n return (...args: any[]) => {\n const agent = (target as any)[prop](...args);\n return wrapAgent(agent, tracingContext);\n };\n }\n\n // Wrap workflow getters\n if (WORKFLOW_GETTERS.includes(prop as string)) {\n return (...args: any[]) => {\n const workflow = (target as any)[prop](...args);\n return wrapWorkflow(workflow, tracingContext);\n };\n }\n\n // Pass through all other methods unchanged\n return (target as any)[prop];\n } catch (error) {\n console.warn('AI Tracing: Failed to wrap method, falling back to original', error);\n return (target as any)[prop];\n }\n },\n });\n } catch (error) {\n console.warn('AI Tracing: Failed to create proxy, using original Mastra instance', error);\n return mastra;\n }\n}\n\n/**\n * Creates a tracing-aware Agent proxy that automatically injects\n * AI tracing context into generation method calls\n */\nexport function wrapAgent<T extends Agent>(agent: T, tracingContext: TracingContext): T {\n // Don't wrap if no current span or if using NoOp span\n if (!tracingContext.currentSpan || isNoOpSpan(tracingContext.currentSpan)) {\n return agent;\n }\n\n try {\n return new Proxy(agent, {\n get(target, prop) {\n try {\n if (AGENT_METHODS_TO_WRAP.includes(prop as string)) {\n return (input: any, options: any = {}) => {\n return (target as any)[prop](input, {\n ...options,\n tracingContext,\n });\n };\n }\n\n return (target as any)[prop];\n } catch (error) {\n console.warn('AI Tracing: Failed to wrap agent method, falling back to original', error);\n return (target as any)[prop];\n }\n },\n });\n } catch (error) {\n console.warn('AI Tracing: Failed to create agent proxy, using original instance', error);\n return agent;\n }\n}\n\n/**\n * Creates a tracing-aware Workflow proxy that automatically injects\n * AI tracing context into execution method calls\n */\nexport function wrapWorkflow<T extends Workflow>(workflow: T, tracingContext: TracingContext): T {\n // Don't wrap if no current span or if using NoOp span\n if (!tracingContext.currentSpan || isNoOpSpan(tracingContext.currentSpan)) {\n return workflow;\n }\n\n try {\n return new Proxy(workflow, {\n get(target, prop) {\n try {\n // Wrap workflow execution methods with tracing context\n if (WORKFLOW_METHODS_TO_WRAP.includes(prop as string)) {\n return (input: any, options: any = {}) => {\n return (target as any)[prop](input, {\n ...options,\n tracingContext,\n });\n };\n }\n\n return (target as any)[prop];\n } catch (error) {\n console.warn('AI Tracing: Failed to wrap workflow method, falling back to original', error);\n return (target as any)[prop];\n }\n },\n });\n } catch (error) {\n console.warn('AI Tracing: Failed to create workflow proxy, using original instance', error);\n return workflow;\n }\n}\n"]}
|