@mastra/core 0.17.1 → 0.17.2-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/CHANGELOG.md +10 -0
- package/dist/agent/agent.d.ts +4 -4
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.types.d.ts +15 -13
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +8 -8
- 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/agent/types.d.ts +8 -6
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/index.d.ts +89 -13
- package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +39 -2
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +44 -8
- package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +45 -5
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/schema.d.ts +177 -0
- package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -0
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts +4 -3
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
- package/dist/{chunk-IWX7LVOC.cjs → chunk-3N57EBJB.cjs} +6 -6
- package/dist/{chunk-IWX7LVOC.cjs.map → chunk-3N57EBJB.cjs.map} +1 -1
- package/dist/{chunk-ZV3G5C6V.cjs → chunk-DK7N45JH.cjs} +14 -12
- package/dist/chunk-DK7N45JH.cjs.map +1 -0
- package/dist/{chunk-M2JGKIUZ.cjs → chunk-HBOOZ4W3.cjs} +7 -7
- package/dist/{chunk-M2JGKIUZ.cjs.map → chunk-HBOOZ4W3.cjs.map} +1 -1
- package/dist/{chunk-ZP2FDJMD.js → chunk-JXKSCEDW.js} +4 -4
- package/dist/{chunk-ZP2FDJMD.js.map → chunk-JXKSCEDW.js.map} +1 -1
- package/dist/{chunk-WYMPYP4G.js → chunk-L77INLRG.js} +3 -3
- package/dist/{chunk-WYMPYP4G.js.map → chunk-L77INLRG.js.map} +1 -1
- package/dist/{chunk-L5FY7VP5.js → chunk-R655GQ3Z.js} +14 -12
- package/dist/chunk-R655GQ3Z.js.map +1 -0
- package/dist/{chunk-UWKCUNHP.js → chunk-RF32ODBL.js} +3 -3
- package/dist/{chunk-UWKCUNHP.js.map → chunk-RF32ODBL.js.map} +1 -1
- package/dist/{chunk-UPFFSRA4.cjs → chunk-RGJ7F32F.cjs} +7 -7
- package/dist/{chunk-UPFFSRA4.cjs.map → chunk-RGJ7F32F.cjs.map} +1 -1
- package/dist/{chunk-GH7NHMTJ.cjs → chunk-TD2CGJTC.cjs} +4 -4
- package/dist/{chunk-GH7NHMTJ.cjs.map → chunk-TD2CGJTC.cjs.map} +1 -1
- package/dist/{chunk-2B4M56ZH.js → chunk-XSZYAAUC.js} +3 -3
- package/dist/{chunk-2B4M56ZH.js.map → chunk-XSZYAAUC.js.map} +1 -1
- package/dist/index.cjs +17 -17
- package/dist/index.js +4 -4
- package/dist/llm/model/model.loop.d.ts +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/llm/model/model.loop.types.d.ts +3 -3
- package/dist/llm/model/model.loop.types.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/loop.d.ts +1 -1
- package/dist/loop/loop.d.ts.map +1 -1
- package/dist/loop/network/index.d.ts +2 -4
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/types.d.ts +3 -3
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +1 -1
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +1 -1
- package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts +2 -2
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/loop/workflows/stream.d.ts +1 -1
- package/dist/loop/workflows/stream.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/types.d.ts +9 -8
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/network/vNext/index.cjs +27 -27
- package/dist/network/vNext/index.js +1 -1
- package/dist/processors/index.cjs +10 -10
- package/dist/processors/index.js +1 -1
- package/dist/processors/processors/structured-output.d.ts +4 -4
- package/dist/processors/processors/structured-output.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/stream/aisdk/v5/execute.d.ts +2 -2
- package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
- package/dist/stream/base/schema.d.ts +1 -1
- package/dist/stream/base/schema.d.ts.map +1 -1
- package/dist/stream/index.cjs +4 -4
- package/dist/stream/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +10 -10
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/legacy/index.cjs +22 -22
- package/dist/workflows/legacy/index.js +1 -1
- package/package.json +1 -1
- package/dist/agent/workflows/prepare-stream/types.d.ts +0 -23
- package/dist/agent/workflows/prepare-stream/types.d.ts.map +0 -1
- package/dist/chunk-L5FY7VP5.js.map +0 -1
- package/dist/chunk-ZV3G5C6V.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","saveScorePayloadSchema","InstrumentClass","Mastra","InMemoryServerCache","WorkflowEventProcessor","noopLogger","LogLevel","ConsoleLogger","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-IWX7LVOC.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<any, any, any, any, any, any>> = Record<\n string,\n Workflow<any, any, any, any, any, any>\n >,\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<any, any, any, any, any, any>> = Record<\n string,\n Workflow<any, any, any, any, any, any>\n >,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n #vectors?: TVectors;\n #agents: TAgents;\n #logger: TLogger;\n #legacy_workflows: TLegacyWorkflows;\n #workflows: TWorkflows;\n #tts?: TTTS;\n #deployer?: MastraDeployer;\n #serverMiddleware: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path: string;\n }> = [];\n #telemetry?: Telemetry;\n #storage?: MastraStorage;\n #memory?: MastraMemory;\n #vnext_networks?: TVNextNetworks;\n #scorers?: TScorers;\n #server?: ServerConfig;\n #mcpServers?: TMCPServers;\n #bundler?: BundlerConfig;\n #idGenerator?: MastraIdGenerator;\n #pubsub: PubSub;\n #events: {\n [topic: string]: ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n } = {};\n // This is only used internally for server handlers that require temporary persistence\n #serverCache: MastraServerCache;\n\n /**\n * @deprecated use getTelemetry() instead\n */\n get telemetry() {\n return this.#telemetry;\n }\n\n /**\n * @deprecated use getStorage() instead\n */\n get storage() {\n return this.#storage;\n }\n\n /**\n * @deprecated use getMemory() instead\n */\n get memory() {\n return this.#memory;\n }\n\n get pubsub() {\n return this.#pubsub;\n }\n\n public getIdGenerator() {\n return this.#idGenerator;\n }\n\n /**\n * Generate a unique identifier using the configured generator or default to crypto.randomUUID()\n * @returns A unique string ID\n */\n public generateId(): string {\n if (this.#idGenerator) {\n const id = this.#idGenerator();\n if (!id) {\n const error = new MastraError({\n id: 'MASTRA_ID_GENERATOR_RETURNED_EMPTY_STRING',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'ID generator returned an empty string, which is not allowed',\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return id;\n }\n return crypto.randomUUID();\n }\n\n public setIdGenerator(idGenerator: MastraIdGenerator) {\n this.#idGenerator = idGenerator;\n }\n\n constructor(\n config?: Config<\n TAgents,\n TLegacyWorkflows,\n TWorkflows,\n TVectors,\n TTTS,\n TLogger,\n TVNextNetworks,\n TMCPServers,\n TScorers\n >,\n ) {\n // Store server middleware with default path\n if (config?.serverMiddleware) {\n this.#serverMiddleware = config.serverMiddleware.map(m => ({\n handler: m.handler,\n path: m.path || '/api/*',\n }));\n }\n\n /*\n Server Cache\n */\n\n // This is only used internally for server handlers that require temporary persistence\n this.#serverCache = new InMemoryServerCache();\n\n /*\n Events\n */\n if (config?.pubsub) {\n this.#pubsub = config.pubsub;\n } else {\n this.#pubsub = new EventEmitterPubSub();\n }\n\n this.#events = {};\n for (const topic in config?.events ?? {}) {\n if (!Array.isArray(config?.events?.[topic])) {\n this.#events[topic] = [config?.events?.[topic] as any];\n } else {\n this.#events[topic] = config?.events?.[topic] ?? [];\n }\n }\n\n const workflowEventProcessor = new WorkflowEventProcessor({ mastra: this });\n const workflowEventCb = async (event: Event, cb?: () => Promise<void>): Promise<void> => {\n try {\n await workflowEventProcessor.process(event, cb);\n } catch (e) {\n console.error('Error processing event', e);\n }\n };\n if (this.#events.workflows) {\n this.#events.workflows.push(workflowEventCb);\n } else {\n this.#events.workflows = [workflowEventCb];\n }\n\n /*\n Logger\n */\n\n let logger: TLogger;\n if (config?.logger === false) {\n logger = noopLogger as unknown as TLogger;\n } else {\n if (config?.logger) {\n logger = config.logger;\n } else {\n const levelOnEnv =\n process.env.NODE_ENV === 'production' && process.env.MASTRA_DEV !== 'true' ? LogLevel.WARN : LogLevel.INFO;\n logger = new ConsoleLogger({ name: 'Mastra', level: levelOnEnv }) as unknown as TLogger;\n }\n }\n this.#logger = logger;\n\n this.#idGenerator = config?.idGenerator;\n\n let storage = config?.storage;\n\n if (storage) {\n storage = augmentWithInit(storage);\n }\n\n /*\n Telemetry\n */\n\n this.#telemetry = Telemetry.init(config?.telemetry);\n\n // Warn if telemetry is enabled but the instrumentation global is not set\n if (\n config?.telemetry?.enabled !== false &&\n typeof globalThis !== 'undefined' &&\n (globalThis as any).___MASTRA_TELEMETRY___ !== true\n ) {\n this.#logger?.warn(\n `Mastra telemetry is enabled, but the required instrumentation file was not loaded. ` +\n `If you are using Mastra outside of the mastra server environment, see: https://mastra.ai/en/docs/observability/tracing#tracing-outside-mastra-server-environment`,\n `If you are using a custom instrumentation file or want to disable this warning, set the globalThis.___MASTRA_TELEMETRY___ variable to true in your instrumentation file.`,\n );\n }\n\n /*\n AI Tracing\n */\n\n if (config?.observability) {\n setupAITracing(config.observability);\n }\n\n /*\n Storage\n */\n if (this.#telemetry && storage) {\n this.#storage = this.#telemetry.traceClass(storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry', 'batchTraceInsert', 'getTraces', 'getEvalsByAgentName'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n } else {\n this.#storage = storage;\n }\n\n /*\n Vectors\n */\n if (config?.vectors) {\n let vectors: Record<string, MastraVector> = {};\n Object.entries(config.vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n } else {\n vectors[key] = vector;\n }\n });\n\n this.#vectors = vectors as TVectors;\n }\n\n if (config?.vnext_networks) {\n this.#vnext_networks = config.vnext_networks;\n }\n\n if (config?.mcpServers) {\n this.#mcpServers = config.mcpServers;\n\n // Set logger/telemetry/Mastra instance/id for MCP servers\n Object.entries(this.#mcpServers).forEach(([key, server]) => {\n server.setId(key);\n if (this.#telemetry) {\n server.__setTelemetry(this.#telemetry);\n }\n\n server.__registerMastra(this);\n server.__setLogger(this.getLogger());\n });\n }\n\n if (config && `memory` in config) {\n const error = new MastraError({\n id: 'MASTRA_CONSTRUCTOR_INVALID_MEMORY_CONFIG',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `\n Memory should be added to Agents, not to Mastra.\n\nInstead of:\n new Mastra({ memory: new Memory() })\n\ndo:\n new Agent({ memory: new Memory() })\n`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (config?.tts) {\n this.#tts = config.tts;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#tts?.[key]) {\n if (this.#telemetry) {\n // @ts-ignore\n this.#tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#tts[key].__setTelemetry(this.#telemetry);\n }\n }\n });\n }\n\n /*\n Agents\n */\n const agents: Record<string, Agent> = {};\n if (config?.agents) {\n Object.entries(config.agents).forEach(([key, agent]) => {\n if (agents[key]) {\n const error = new MastraError({\n id: 'MASTRA_AGENT_REGISTRATION_DUPLICATE_ID',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ID:${key} already exists`,\n details: {\n agentId: key,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n agent.__registerMastra(this);\n\n agent.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n\n agents[key] = agent;\n });\n }\n\n this.#agents = agents as TAgents;\n\n /*\n Networks\n */\n this.#vnext_networks = {} as TVNextNetworks;\n\n if (config?.vnext_networks) {\n Object.entries(config.vnext_networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#vnext_networks[key] = network;\n });\n }\n\n /**\n * Scorers\n */\n\n const scorers = {} as Record<string, MastraScorer<any, any, any, any>>;\n if (config?.scorers) {\n Object.entries(config.scorers).forEach(([key, scorer]) => {\n scorers[key] = scorer;\n });\n }\n this.#scorers = scorers as TScorers;\n\n /*\n Legacy Workflows\n */\n this.#legacy_workflows = {} as TLegacyWorkflows;\n\n if (config?.legacy_workflows) {\n Object.entries(config.legacy_workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#legacy_workflows[key] = workflow;\n\n const workflowSteps = Object.values(workflow.steps).filter(step => !!step.workflowId && !!step.workflow);\n if (workflowSteps.length > 0) {\n workflowSteps.forEach(step => {\n // @ts-ignore\n this.#legacy_workflows[step.workflowId] = step.workflow;\n });\n }\n });\n }\n\n this.#workflows = {} as TWorkflows;\n if (config?.workflows) {\n Object.entries(config.workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#workflows[key] = workflow;\n });\n }\n\n if (config?.server) {\n this.#server = config.server;\n }\n\n registerHook(AvailableHooks.ON_SCORER_RUN, createOnScorerHook(this));\n\n /*\n Register Mastra instance with AI tracing exporters and initialize them\n */\n if (config?.observability) {\n this.registerAITracingExporters();\n this.initAITracingExporters();\n }\n\n this.setLogger({ logger });\n }\n\n /**\n * Register this Mastra instance with AI tracing exporters that need it\n */\n private registerAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Check if exporter has __registerMastra method\n if ('__registerMastra' in exporter && typeof (exporter as any).__registerMastra === 'function') {\n (exporter as any).__registerMastra(this);\n }\n });\n });\n }\n\n /**\n * Initialize all AI tracing exporters after registration is complete\n */\n private initAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Initialize exporter if it has an init method\n if ('init' in exporter && typeof exporter.init === 'function') {\n try {\n exporter.init();\n } catch (error) {\n this.#logger?.warn('Failed to initialize AI tracing exporter', {\n exporterName: exporter.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n });\n });\n }\n\n public getAgent<TAgentName extends keyof TAgents>(name: TAgentName): TAgents[TAgentName] {\n const agent = this.#agents?.[name];\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ${String(name)} not found`,\n details: {\n status: 404,\n agentName: String(name),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return this.#agents[name];\n }\n\n public getAgentById(id: string): Agent {\n let agent = Object.values(this.#agents).find(a => a.id === id);\n\n if (!agent) {\n try {\n agent = this.getAgent(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_AGENT_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with id ${String(id)} not found`,\n details: {\n status: 404,\n agentId: String(id),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return agent;\n }\n\n public getAgents() {\n return this.#agents;\n }\n\n public getVector<TVectorName extends keyof TVectors>(name: TVectorName): TVectors[TVectorName] {\n const vector = this.#vectors?.[name];\n if (!vector) {\n const error = new MastraError({\n id: 'MASTRA_GET_VECTOR_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Vector with name ${String(name)} not found`,\n details: {\n status: 404,\n vectorName: String(name),\n vectors: Object.keys(this.#vectors ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return vector;\n }\n\n public getVectors() {\n return this.#vectors;\n }\n\n public getDeployer() {\n return this.#deployer;\n }\n\n public legacy_getWorkflow<TWorkflowId extends keyof TLegacyWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TLegacyWorkflows[TWorkflowId] {\n const workflow = this.#legacy_workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_LEGACY_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#legacy_workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TLegacyWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflow<TWorkflowId extends keyof TWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TWorkflows[TWorkflowId] {\n const workflow = this.#workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflowById(id: string): Workflow {\n let workflow = Object.values(this.#workflows).find(a => a.id === id);\n\n if (!workflow) {\n try {\n workflow = this.getWorkflow(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with id ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return workflow;\n }\n\n public legacy_getWorkflows(props: { serialized?: boolean } = {}): Record<string, LegacyWorkflow> {\n if (props.serialized) {\n return Object.entries(this.#legacy_workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#legacy_workflows;\n }\n\n public getScorers() {\n return this.#scorers;\n }\n\n public getScorer<TScorerKey extends keyof TScorers>(key: TScorerKey): TScorers[TScorerKey] {\n const scorer = this.#scorers?.[key];\n if (!scorer) {\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ${String(key)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return scorer;\n }\n\n public getScorerByName(name: string): MastraScorer<any, any, any, any> {\n for (const [_key, value] of Object.entries(this.#scorers ?? {})) {\n if (value.name === name) {\n return value;\n }\n }\n\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with name ${String(name)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n public getWorkflows(props: { serialized?: boolean } = {}): Record<string, Workflow> {\n if (props.serialized) {\n return Object.entries(this.#workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#workflows;\n }\n\n public setStorage(storage: MastraStorage) {\n this.#storage = augmentWithInit(storage);\n }\n\n public setLogger({ logger }: { logger: TLogger }) {\n this.#logger = logger;\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n this.#agents?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#memory) {\n this.#memory.__setLogger(this.#logger);\n }\n\n if (this.#deployer) {\n this.#deployer.__setLogger(this.#logger);\n }\n\n if (this.#tts) {\n Object.keys(this.#tts).forEach(key => {\n this.#tts?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#storage) {\n this.#storage.__setLogger(this.#logger);\n }\n\n if (this.#vectors) {\n Object.keys(this.#vectors).forEach(key => {\n this.#vectors?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#mcpServers) {\n Object.keys(this.#mcpServers).forEach(key => {\n this.#mcpServers?.[key]?.__setLogger(this.#logger);\n });\n }\n\n // Set logger for AI tracing instances\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(instance => {\n instance.__setLogger(this.#logger);\n });\n }\n\n public setTelemetry(telemetry: OtelConfig) {\n this.#telemetry = Telemetry.init(telemetry);\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n if (this.#telemetry) {\n this.#agents?.[key]?.__setTelemetry(this.#telemetry);\n }\n });\n }\n\n if (this.#memory) {\n this.#memory = this.#telemetry.traceClass(this.#memory, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#memory.__setTelemetry(this.#telemetry);\n }\n\n if (this.#deployer) {\n this.#deployer = this.#telemetry.traceClass(this.#deployer, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#deployer.__setTelemetry(this.#telemetry);\n }\n\n if (this.#tts) {\n let tts = {} as Record<string, MastraTTS>;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#telemetry) {\n tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n tts[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#tts = tts as TTTS;\n }\n\n if (this.#storage) {\n this.#storage = this.#telemetry.traceClass(this.#storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n }\n\n if (this.#vectors) {\n let vectors = {} as Record<string, MastraVector>;\n Object.entries(this.#vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#vectors = vectors as TVectors;\n }\n }\n\n public getTTS() {\n return this.#tts;\n }\n\n public getLogger() {\n return this.#logger;\n }\n\n public getTelemetry() {\n return this.#telemetry;\n }\n\n public getMemory() {\n return this.#memory;\n }\n\n public getStorage() {\n return this.#storage;\n }\n\n public getServerMiddleware() {\n return this.#serverMiddleware;\n }\n\n public getServerCache() {\n return this.#serverCache;\n }\n\n public setServerMiddleware(serverMiddleware: Middleware | Middleware[]) {\n if (typeof serverMiddleware === 'function') {\n this.#serverMiddleware = [\n {\n handler: serverMiddleware,\n path: '/api/*',\n },\n ];\n return;\n }\n\n if (!Array.isArray(serverMiddleware)) {\n const error = new MastraError({\n id: 'MASTRA_SET_SERVER_MIDDLEWARE_INVALID_TYPE',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Invalid middleware: expected a function or array, received ${typeof serverMiddleware}`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n this.#serverMiddleware = serverMiddleware.map(m => {\n if (typeof m === 'function') {\n return {\n handler: m,\n path: '/api/*',\n };\n }\n return {\n handler: m.handler,\n path: m.path || '/api/*',\n };\n });\n }\n\n public vnext_getNetworks() {\n return Object.values(this.#vnext_networks || {});\n }\n\n public getServer() {\n return this.#server;\n }\n\n public getBundlerConfig() {\n return this.#bundler;\n }\n\n public vnext_getNetwork(networkId: string): NewAgentNetwork | undefined {\n const networks = this.vnext_getNetworks();\n return networks.find(network => network.id === networkId);\n }\n\n public async getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n runId: string;\n transportId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger?.getLogsByRunId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not configured or does not support getLogsByRunId operation',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return await this.#logger.getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n });\n }\n\n public async getLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not set',\n details: {\n transportId,\n },\n });\n throw error;\n }\n\n return await this.#logger.getLogs(transportId, params);\n }\n\n /**\n * Get all registered MCP server instances.\n * @returns A record of MCP server ID to MCPServerBase instance, or undefined if none are registered.\n */\n public getMCPServers(): Record<string, MCPServerBase> | undefined {\n return this.#mcpServers;\n }\n\n /**\n * Get a specific MCP server instance.\n * If a version is provided, it attempts to find the server with that exact logical ID and version.\n * If no version is provided, it returns the server with the specified logical ID that has the most recent releaseDate.\n * The logical ID should match the `id` property of the MCPServer instance (typically set via MCPServerConfig.id).\n * @param serverId - The logical ID of the MCP server to retrieve.\n * @param version - Optional specific version of the MCP server to retrieve.\n * @returns The MCP server instance, or undefined if not found or if the specific version is not found.\n */\n public getMCPServer(serverId: string, version?: string): MCPServerBase | undefined {\n if (!this.#mcpServers) {\n return undefined;\n }\n\n const allRegisteredServers = Object.values(this.#mcpServers || {});\n\n const matchingLogicalIdServers = allRegisteredServers.filter(server => server.id === serverId);\n\n if (matchingLogicalIdServers.length === 0) {\n this.#logger?.debug(`No MCP servers found with logical ID: ${serverId}`);\n return undefined;\n }\n\n if (version) {\n const specificVersionServer = matchingLogicalIdServers.find(server => server.version === version);\n if (!specificVersionServer) {\n this.#logger?.debug(`MCP server with logical ID '${serverId}' found, but not version '${version}'.`);\n }\n return specificVersionServer;\n } else {\n // No version specified, find the one with the most recent releaseDate\n if (matchingLogicalIdServers.length === 1) {\n return matchingLogicalIdServers[0];\n }\n\n matchingLogicalIdServers.sort((a, b) => {\n // Ensure releaseDate exists and is a string before creating a Date object\n const dateAVal = a.releaseDate && typeof a.releaseDate === 'string' ? new Date(a.releaseDate).getTime() : NaN;\n const dateBVal = b.releaseDate && typeof b.releaseDate === 'string' ? new Date(b.releaseDate).getTime() : NaN;\n\n if (isNaN(dateAVal) && isNaN(dateBVal)) return 0;\n if (isNaN(dateAVal)) return 1; // Treat invalid/missing dates as older\n if (isNaN(dateBVal)) return -1; // Treat invalid/missing dates as older\n\n return dateBVal - dateAVal; // Sorts in descending order of time (latest first)\n });\n\n // After sorting, the first element should be the latest if its date is valid\n if (matchingLogicalIdServers.length > 0) {\n const latestServer = matchingLogicalIdServers[0];\n if (\n latestServer &&\n latestServer.releaseDate &&\n typeof latestServer.releaseDate === 'string' &&\n !isNaN(new Date(latestServer.releaseDate).getTime())\n ) {\n return latestServer;\n }\n }\n this.#logger?.warn(\n `Could not determine the latest server for logical ID '${serverId}' due to invalid or missing release dates, or no servers left after filtering.`,\n );\n return undefined;\n }\n }\n\n public async addTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.subscribe(topic, listener);\n }\n\n public async removeTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n\n public async startEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.subscribe(topic, listener);\n }\n }\n }\n\n public async stopEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n }\n\n await this.#pubsub.flush();\n }\n\n /**\n * Shutdown Mastra and clean up all resources\n */\n async shutdown(): Promise<void> {\n // Shutdown AI tracing registry and all instances\n await shutdownAITracingRegistry();\n await this.stopEventEngine();\n\n this.#logger?.info('Mastra shutdown completed');\n }\n\n // This method is only used internally for server hnadlers that require temporary persistence\n public get serverCache() {\n return this.#serverCache;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":["MastraError","saveScorePayloadSchema","InstrumentClass","Mastra","InMemoryServerCache","WorkflowEventProcessor","noopLogger","LogLevel","ConsoleLogger","augmentWithInit","Telemetry","setupAITracing","registerHook","getAllAITracing","shutdownAITracingRegistry","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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","file":"chunk-3N57EBJB.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<any, any, any, any, any, any>> = Record<\n string,\n Workflow<any, any, any, any, any, any>\n >,\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<any, any, any, any, any, any>> = Record<\n string,\n Workflow<any, any, any, any, any, any>\n >,\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"]}
|
|
@@ -242,10 +242,9 @@ function mapVariable(config){return config;}function createStep(params){if(param
|
|
|
242
242
|
inputSchema:z5.z.object({prompt:z5.z.string()// resourceId: z.string().optional(),
|
|
243
243
|
// threadId: z.string().optional(),
|
|
244
244
|
}),// @ts-ignore
|
|
245
|
-
outputSchema:z5.z.object({text:z5.z.string()}),execute:async({inputData,[chunkABJOUEVA_cjs.EMITTER_SYMBOL]:emitter,[chunkABJOUEVA_cjs.STREAM_FORMAT_SYMBOL]:streamFormat,runtimeContext,abortSignal,abort,writer})=>{let streamPromise={};streamPromise.promise=new Promise((resolve,reject)=>{streamPromise.resolve=resolve;streamPromise.reject=reject;});const toolData={name:params.name,args:inputData};let stream;if(
|
|
245
|
+
outputSchema:z5.z.object({text:z5.z.string()}),execute:async({inputData,[chunkABJOUEVA_cjs.EMITTER_SYMBOL]:emitter,[chunkABJOUEVA_cjs.STREAM_FORMAT_SYMBOL]:streamFormat,runtimeContext,abortSignal,abort,writer})=>{let streamPromise={};streamPromise.promise=new Promise((resolve,reject)=>{streamPromise.resolve=resolve;streamPromise.reject=reject;});const toolData={name:params.name,args:inputData};let stream;if((await params.getModel()).specificationVersion==="v1"){const{fullStream}=await params.stream(inputData.prompt,{// resourceId: inputData.resourceId,
|
|
246
246
|
// threadId: inputData.threadId,
|
|
247
|
-
runtimeContext,onFinish:result=>{streamPromise.resolve(result.text);},abortSignal});stream=fullStream;await emitter.emit("watch-v2",{type:"tool-call-streaming-start",...(toolData??{})});for await(const chunk of stream){if(chunk.type==="text-delta"){await emitter.emit("watch-v2",{type:"tool-call-delta",...(toolData??{}),argsTextDelta:chunk.textDelta});}}await emitter.emit("watch-v2",{type:"tool-call-streaming-finish",...(toolData??{})});}else {const
|
|
248
|
-
});stream=modelOutput.fullStream;for await(const chunk of stream){await writer.write(chunk);}}if(abortSignal.aborted){return abort();}return {text:await streamPromise.promise};}};}if(params instanceof chunkPRVMPHNQ_cjs.Tool){if(!params.inputSchema||!params.outputSchema){throw new Error("Tool must have input and output schemas defined");}return {// TODO: tool probably should have strong id type
|
|
247
|
+
runtimeContext,onFinish:result=>{streamPromise.resolve(result.text);},abortSignal});stream=fullStream;}else {const modelOutput=await params.streamVNext(inputData.prompt,{runtimeContext,onFinish:result=>{streamPromise.resolve(result.text);},abortSignal});stream=modelOutput.fullStream;}if(streamFormat==="aisdk"){await emitter.emit("watch-v2",{type:"tool-call-streaming-start",...(toolData??{})});for await(const chunk of stream){if(chunk.type==="text-delta"){await emitter.emit("watch-v2",{type:"tool-call-delta",...(toolData??{}),argsTextDelta:chunk.textDelta});}}await emitter.emit("watch-v2",{type:"tool-call-streaming-finish",...(toolData??{})});}else {for await(const chunk of stream){await writer.write(chunk);}}if(abortSignal.aborted){return abort();}return {text:await streamPromise.promise};}};}if(params instanceof chunkPRVMPHNQ_cjs.Tool){if(!params.inputSchema||!params.outputSchema){throw new Error("Tool must have input and output schemas defined");}return {// TODO: tool probably should have strong id type
|
|
249
248
|
// @ts-ignore
|
|
250
249
|
id:params.id,inputSchema:params.inputSchema,outputSchema:params.outputSchema,execute:async({inputData,mastra,runtimeContext,tracingContext})=>{return params.execute({context:inputData,mastra,runtimeContext,tracingContext});}};}return {id:params.id,description:params.description,inputSchema:params.inputSchema,outputSchema:params.outputSchema,resumeSchema:params.resumeSchema,suspendSchema:params.suspendSchema,scorers:params.scorers,retries:params.retries,execute:params.execute.bind(params)};}function cloneStep(step,opts){return {id:opts.id,description:step.description,inputSchema:step.inputSchema,outputSchema:step.outputSchema,execute:step.execute,retries:step.retries};}function createWorkflow(params){return new Workflow(params);}function cloneWorkflow(workflow,opts){const wf=new Workflow({id:opts.id,inputSchema:workflow.inputSchema,outputSchema:workflow.outputSchema,steps:workflow.stepDefs,mastra:workflow.mastra});wf.setStepFlow(workflow.stepGraph);wf.commit();return wf;}var Workflow=class extends chunk4L3P3PCP_cjs.MastraBase{id;description;inputSchema;outputSchema;steps;stepDefs;stepFlow;serializedStepFlow;executionEngine;executionGraph;options;retryConfig;#mastra;#runs=/* @__PURE__ */new Map();constructor({mastra,id,inputSchema,outputSchema,description,executionEngine,retryConfig,steps,options}){super({name:id,component:chunkWVCEJBDR_cjs.RegisteredLogger.WORKFLOW});this.id=id;this.description=description;this.inputSchema=inputSchema;this.outputSchema=outputSchema;this.retryConfig=retryConfig??{attempts:0,delay:0};this.executionGraph=this.buildExecutionGraph();this.stepFlow=[];this.serializedStepFlow=[];this.#mastra=mastra;this.steps={};this.stepDefs=steps;this.options=options;if(!executionEngine){this.executionEngine=new DefaultExecutionEngine({mastra:this.#mastra,options:{tracingPolicy:options?.tracingPolicy}});}else {this.executionEngine=executionEngine;}this.#runs=/* @__PURE__ */new Map();}get runs(){return this.#runs;}get mastra(){return this.#mastra;}__registerMastra(mastra){this.#mastra=mastra;this.executionEngine.__registerMastra(mastra);}__registerPrimitives(p){if(p.telemetry){this.__setTelemetry(p.telemetry);}if(p.logger){this.__setLogger(p.logger);}}setStepFlow(stepFlow){this.stepFlow=stepFlow;}/**
|
|
251
250
|
* Adds a step to the workflow
|
|
@@ -704,8 +703,11 @@ Look for:
|
|
|
704
703
|
${this.customPatterns.length>0?`Additional custom patterns to detect: ${this.customPatterns.join(", ")}`:""}
|
|
705
704
|
|
|
706
705
|
Be thorough but avoid false positives. Only flag content that genuinely represents a security risk.`;}};// src/agent/workflows/prepare-stream/map-results-step.ts
|
|
707
|
-
function createMapResultsStep({capabilities,options,resourceId,runId,runtimeContext,memory,memoryConfig,saveQueueManager,agentAISpan,instructions}){return async({inputData,bail})=>{const toolsData=inputData["prepare-tools-step"];const memoryData=inputData["prepare-memory-step"];const result={...options,tools:toolsData.convertedTools,runId,toolChoice:options.toolChoice,thread:memoryData.thread,threadId:memoryData.thread?.id,resourceId,runtimeContext,onStepFinish:async props=>{if(options.savePerStep){if(!memoryData.threadExists&&memory&&memoryData.thread){await memory.createThread({threadId:memoryData.thread?.id,title:memoryData.thread?.title,metadata:memoryData.thread?.metadata,resourceId:memoryData.thread?.resourceId,memoryConfig});memoryData.threadExists=true;}await capabilities.saveStepMessages({saveQueueManager,result:props,messageList:memoryData.messageList,threadId:memoryData.thread?.id,memoryConfig,runId});}return options.onStepFinish?.({...props,runId});},...(memoryData.tripwire&&{tripwire:memoryData.tripwire,tripwireReason:memoryData.tripwireReason})};if(result.tripwire){const emptyResult={textStream:async function*(){}(),fullStream:new globalThis.ReadableStream({start(controller){controller.enqueue({type:"tripwire",runId:result.runId,from:"AGENT"/* AGENT */,payload:{tripwireReason:result.tripwireReason}});controller.close();}}),objectStream:new globalThis.ReadableStream({start(controller){controller.close();}}),text:Promise.resolve(""),usage:Promise.resolve({inputTokens:0,outputTokens:0,totalTokens:0}),finishReason:Promise.resolve("other"),tripwire:true,tripwireReason:result.tripwireReason,response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},toolCalls:Promise.resolve([]),toolResults:Promise.resolve([]),warnings:Promise.resolve(void 0),request:{body:JSON.stringify({messages:[]})},object:void 0,experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0};return bail(emptyResult);}let effectiveOutputProcessors=options.outputProcessors||(capabilities.outputProcessors?typeof capabilities.outputProcessors==="function"?await capabilities.outputProcessors({runtimeContext:result.runtimeContext}):capabilities.outputProcessors:[]);if(options.structuredOutput){const agentModel=await capabilities.getModel({runtimeContext:result.runtimeContext});const structuredProcessor=new StructuredOutputProcessor(options.structuredOutput,agentModel);effectiveOutputProcessors=effectiveOutputProcessors?[...effectiveOutputProcessors,structuredProcessor]:[structuredProcessor];}const messageList=memoryData.messageList;const loopOptions={runtimeContext:result.runtimeContext,tracingContext:{currentSpan:agentAISpan},runId,toolChoice:result.toolChoice,tools:result.tools,resourceId:result.resourceId,threadId:result.threadId,structuredOutput:result.structuredOutput,stopWhen:result.stopWhen,maxSteps:result.maxSteps,providerOptions:result.providerOptions,options:{...(options.prepareStep&&{prepareStep:options.prepareStep}),onFinish:async payload=>{if(payload.finishReason==="error"){capabilities.logger.error("Error in agent stream",{error:payload.error,runId});return;}try{const outputText=messageList.get.all.core().map(m=>m.content).join("\n");await capabilities.executeOnFinish({result:payload,outputText,instructions,thread:result.thread,threadId:result.threadId,readOnlyMemory:options.memory?.readOnly,resourceId,memoryConfig,runtimeContext,agentAISpan,runId,messageList,threadExists:memoryData.threadExists,structuredOutput:!!options.output,saveQueueManager,overrideScorers:options.scorers});}catch(e){capabilities.logger.error("Error saving memory on finish",{error:e,runId});}await options?.onFinish?.({...payload,runId,messages:messageList.get.response.aiV5.model(),usage:payload.usage,totalUsage:payload.totalUsage});},onStepFinish:result.onStepFinish,onChunk:options.onChunk,onError:options.onError,onAbort:options.onAbort,activeTools:options.activeTools,abortSignal:options.abortSignal},output:options.output,outputProcessors:effectiveOutputProcessors,modelSettings:{temperature:0,...(options.modelSettings||{})},messageList:memoryData.messageList};return loopOptions;};}// src/agent/workflows/prepare-stream/prepare-memory-step.ts
|
|
708
|
-
var import_fast_deep_equal=chunkEBVYYC2Q_cjs.__toESM(require_fast_deep_equal(),1);
|
|
706
|
+
function createMapResultsStep({capabilities,options,resourceId,runId,runtimeContext,memory,memoryConfig,saveQueueManager,agentAISpan,instructions}){return async({inputData,bail})=>{const toolsData=inputData["prepare-tools-step"];const memoryData=inputData["prepare-memory-step"];const result={...options,tools:toolsData.convertedTools,runId,toolChoice:options.toolChoice,thread:memoryData.thread,threadId:memoryData.thread?.id,resourceId,runtimeContext,onStepFinish:async props=>{if(options.savePerStep){if(!memoryData.threadExists&&memory&&memoryData.thread){await memory.createThread({threadId:memoryData.thread?.id,title:memoryData.thread?.title,metadata:memoryData.thread?.metadata,resourceId:memoryData.thread?.resourceId,memoryConfig});memoryData.threadExists=true;}await capabilities.saveStepMessages({saveQueueManager,result:props,messageList:memoryData.messageList,threadId:memoryData.thread?.id,memoryConfig,runId});}return options.onStepFinish?.({...props,runId});},...(memoryData.tripwire&&{tripwire:memoryData.tripwire,tripwireReason:memoryData.tripwireReason})};if(result.tripwire){const emptyResult={textStream:async function*(){}(),fullStream:new globalThis.ReadableStream({start(controller){controller.enqueue({type:"tripwire",runId:result.runId,from:"AGENT"/* AGENT */,payload:{tripwireReason:result.tripwireReason||""}});controller.close();}}),objectStream:new globalThis.ReadableStream({start(controller){controller.close();}}),text:Promise.resolve(""),usage:Promise.resolve({inputTokens:0,outputTokens:0,totalTokens:0}),finishReason:Promise.resolve("other"),tripwire:true,tripwireReason:result.tripwireReason,response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},toolCalls:Promise.resolve([]),toolResults:Promise.resolve([]),warnings:Promise.resolve(void 0),request:{body:JSON.stringify({messages:[]})},object:void 0,experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0};return bail(emptyResult);}let effectiveOutputProcessors=options.outputProcessors||(capabilities.outputProcessors?typeof capabilities.outputProcessors==="function"?await capabilities.outputProcessors({runtimeContext:result.runtimeContext}):capabilities.outputProcessors:[]);if(options.structuredOutput){const agentModel=await capabilities.getModel({runtimeContext:result.runtimeContext});const structuredProcessor=new StructuredOutputProcessor(options.structuredOutput,agentModel);effectiveOutputProcessors=effectiveOutputProcessors?[...effectiveOutputProcessors,structuredProcessor]:[structuredProcessor];}const messageList=memoryData.messageList;const loopOptions={runtimeContext:result.runtimeContext,tracingContext:{currentSpan:agentAISpan},runId,toolChoice:result.toolChoice,tools:result.tools,resourceId:result.resourceId,threadId:result.threadId,structuredOutput:result.structuredOutput,stopWhen:result.stopWhen,maxSteps:result.maxSteps,providerOptions:result.providerOptions,options:{...(options.prepareStep&&{prepareStep:options.prepareStep}),onFinish:async payload=>{if(payload.finishReason==="error"){capabilities.logger.error("Error in agent stream",{error:payload.error,runId});return;}try{const outputText=messageList.get.all.core().map(m=>m.content).join("\n");await capabilities.executeOnFinish({result:payload,outputText,instructions,thread:result.thread,threadId:result.threadId,readOnlyMemory:options.memory?.readOnly,resourceId,memoryConfig,runtimeContext,agentAISpan,runId,messageList,threadExists:memoryData.threadExists,structuredOutput:!!options.output,saveQueueManager,overrideScorers:options.scorers});}catch(e){capabilities.logger.error("Error saving memory on finish",{error:e,runId});}await options?.onFinish?.({...payload,runId,messages:messageList.get.response.aiV5.model(),usage:payload.usage,totalUsage:payload.totalUsage});},onStepFinish:result.onStepFinish,onChunk:options.onChunk,onError:options.onError,onAbort:options.onAbort,activeTools:options.activeTools,abortSignal:options.abortSignal},output:options.output,outputProcessors:effectiveOutputProcessors,modelSettings:{temperature:0,...(options.modelSettings||{})},messageList:memoryData.messageList};return loopOptions;};}// src/agent/workflows/prepare-stream/prepare-memory-step.ts
|
|
707
|
+
var import_fast_deep_equal=chunkEBVYYC2Q_cjs.__toESM(require_fast_deep_equal(),1);var coreToolSchema=z5.z.object({id:z5.z.string().optional(),description:z5.z.string().optional(),parameters:z5.z.union([z5.z.record(z5.z.string(),z5.z.any()),// JSON Schema as object
|
|
708
|
+
z5.z.any()// Zod schema or other schema types - validated at tool execution
|
|
709
|
+
]),outputSchema:z5.z.union([z5.z.record(z5.z.string(),z5.z.any()),z5.z.any()]).optional(),execute:z5.z.function(z5.z.tuple([z5.z.any(),z5.z.any()]),z5.z.promise(z5.z.any())).optional(),type:z5.z.union([z5.z.literal("function"),z5.z.literal("provider-defined"),z5.z.undefined()]).optional(),args:z5.z.record(z5.z.string(),z5.z.any()).optional()});var storageThreadSchema=z5.z.object({id:z5.z.string(),title:z5.z.string().optional(),resourceId:z5.z.string(),createdAt:z5.z.date(),updatedAt:z5.z.date(),metadata:z5.z.record(z5.z.string(),z5.z.any()).optional()});var prepareToolsStepOutputSchema=z5.z.object({convertedTools:z5.z.record(z5.z.string(),coreToolSchema)});var prepareMemoryStepOutputSchema=z5.z.object({threadExists:z5.z.boolean(),thread:storageThreadSchema.optional(),messageList:z5.z.instanceof(chunkWYBYCVS3_cjs.MessageList),tripwire:z5.z.boolean().optional(),tripwireReason:z5.z.string().optional()});// src/agent/workflows/prepare-stream/prepare-memory-step.ts
|
|
710
|
+
function addUserSystemMessage(messageList,system){if(!system)return;if(typeof system==="string"){messageList.addSystem(system,"user-provided");}else if(Array.isArray(system)){for(const msg of system){if(typeof msg==="string"){messageList.addSystem(msg,"user-provided");}else if("content"in msg&&msg.content){messageList.addSystem(msg.content,"user-provided");}}}else if("content"in system&&system.content){messageList.addSystem(system.content,"user-provided");}}function createPrepareMemoryStep({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,instructions,memoryConfig,memory}){return createStep({id:"prepare-memory-step",inputSchema:z5.z.object({}),outputSchema:prepareMemoryStepOutputSchema,execute:async({tracingContext})=>{const thread=threadFromArgs;const messageList=new chunkWYBYCVS3_cjs.MessageList({threadId:thread?.id,resourceId,generateMessageId:capabilities.generateMessageId,// @ts-ignore Flag for agent network messages
|
|
709
711
|
_agentNetworkAppend:capabilities._agentNetworkAppend}).addSystem({role:"system",content:instructions}).add(options.context||[],"context");addUserSystemMessage(messageList,options.system);if(!memory||!thread?.id&&!resourceId){messageList.add(options.messages,"user");const{tripwireTriggered:tripwireTriggered2,tripwireReason:tripwireReason2}=await capabilities.runInputProcessors({runtimeContext,tracingContext,messageList});return {threadExists:false,thread:void 0,messageList,...(tripwireTriggered2&&{tripwire:true,tripwireReason:tripwireReason2})};}if(!thread?.id||!resourceId){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_MEMORY_MISSING_RESOURCE_ID",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:capabilities.agentName,threadId:thread?.id||"",resourceId:resourceId||""},text:`A resourceId and a threadId must be provided when using Memory. Saw threadId "${thread?.id}" and resourceId "${resourceId}"`});capabilities.logger.error(mastraError.toString());capabilities.logger.trackException(mastraError);throw mastraError;}const store=memory.constructor.name;capabilities.logger.debug(`[Agent:${capabilities.agentName}] - Memory persistence enabled: store=${store}, resourceId=${resourceId}`,{runId,resourceId,threadId:thread?.id,memoryStore:store});let threadObject=void 0;const existingThread=await memory.getThreadById({threadId:thread?.id});if(existingThread){if(!existingThread.metadata&&thread.metadata||thread.metadata&&!(0, import_fast_deep_equal.default)(existingThread.metadata,thread.metadata)){threadObject=await memory.saveThread({thread:{...existingThread,metadata:thread.metadata},memoryConfig});}else {threadObject=existingThread;}}else {threadObject=await memory.createThread({threadId:thread?.id,metadata:thread.metadata,title:thread.title,memoryConfig,resourceId,saveThread:false});}const config=memory.getMergedThreadConfig(memoryConfig||{});const hasResourceScopeSemanticRecall=typeof config?.semanticRecall==="object"&&config?.semanticRecall?.scope==="resource";let[memoryMessages,memorySystemMessage]=await Promise.all([existingThread||hasResourceScopeSemanticRecall?capabilities.getMemoryMessages({resourceId,threadId:threadObject.id,vectorMessageSearch:new chunkWYBYCVS3_cjs.MessageList().add(options.messages,`user`).getLatestUserContent()||"",memoryConfig,runtimeContext}):[],memory.getSystemMessage({threadId:threadObject.id,resourceId,memoryConfig})]);capabilities.logger.debug("Fetched messages from memory",{threadId:threadObject.id,runId,fetchedCount:memoryMessages.length});const resultsFromOtherThreads=memoryMessages.filter(m=>m.threadId!==threadObject.id);if(resultsFromOtherThreads.length&&!memorySystemMessage){memorySystemMessage=``;}if(resultsFromOtherThreads.length){memorySystemMessage+=`
|
|
710
712
|
The following messages were remembered from a different conversation:
|
|
711
713
|
<remembered_from_other_conversation>
|
|
@@ -715,9 +717,10 @@ the following messages are from ${ymd}
|
|
|
715
717
|
<end_remembered_from_other_conversation>`;}if(memorySystemMessage){messageList.addSystem(memorySystemMessage,"memory");}messageList.add(memoryMessages.filter(m=>m.threadId===threadObject.id),"memory").add(options.messages,"user");const{tripwireTriggered,tripwireReason}=await capabilities.runInputProcessors({runtimeContext,tracingContext,messageList});const systemMessages=messageList.getSystemMessages();const systemMessage=[...systemMessages,...messageList.getSystemMessages("memory")]?.map(m=>m.content)?.join(`
|
|
716
718
|
`)??void 0;const processedMemoryMessages=await memory.processMessages({messages:messageList.get.remembered.v1(),newMessages:messageList.get.input.v1(),systemMessage,memorySystemMessage:memorySystemMessage||void 0});const processedList=new chunkWYBYCVS3_cjs.MessageList({threadId:threadObject.id,resourceId,generateMessageId:capabilities.generateMessageId,// @ts-ignore Flag for agent network messages
|
|
717
719
|
_agentNetworkAppend:capabilities._agentNetworkAppend}).addSystem(instructions).addSystem(memorySystemMessage).addSystem(systemMessages).add(options.context||[],"context");addUserSystemMessage(processedList,options.system);processedList.add(processedMemoryMessages,"memory").add(messageList.get.input.v2(),"user");return {thread:threadObject,messageList:processedList,...(tripwireTriggered&&{tripwire:true,tripwireReason}),threadExists:!!existingThread};}});}// src/agent/workflows/prepare-stream/prepare-tools-step.ts
|
|
718
|
-
function createPrepareToolsStep({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,agentAISpan,methodType,format,memory}){return createStep({id:"prepare-tools-step",inputSchema:z5.z.
|
|
719
|
-
function createStreamStep({capabilities,runId,returnScorerData,format="mastra"}){return createStep({id:"stream-text-step",inputSchema:z5.z.any()
|
|
720
|
-
|
|
720
|
+
function createPrepareToolsStep({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,agentAISpan,methodType,format,memory}){return createStep({id:"prepare-tools-step",inputSchema:z5.z.object({}),outputSchema:prepareToolsStepOutputSchema,execute:async()=>{const toolEnhancements=[options?.toolsets&&Object.keys(options?.toolsets||{}).length>0?`toolsets present (${Object.keys(options?.toolsets||{}).length} tools)`:void 0,memory&&resourceId?"memory and resourceId available":void 0].filter(Boolean).join(", ");capabilities.logger.debug(`[Agent:${capabilities.agentName}] - Enhancing tools: ${toolEnhancements}`,{runId,toolsets:options?.toolsets?Object.keys(options?.toolsets):void 0,clientTools:options?.clientTools?Object.keys(options?.clientTools):void 0,hasMemory:!!memory,hasResourceId:!!resourceId});const threadId=threadFromArgs?.id;const convertedTools=await capabilities.convertTools({toolsets:options?.toolsets,clientTools:options?.clientTools,threadId,resourceId,runId,runtimeContext,tracingContext:{currentSpan:agentAISpan},writableStream:options.writableStream,methodType,format});return {convertedTools};}});}// src/agent/workflows/prepare-stream/stream-step.ts
|
|
721
|
+
function createStreamStep({capabilities,runId,returnScorerData,format="mastra"}){return createStep({id:"stream-text-step",inputSchema:z5.z.any(),// tried to type this in various ways but it's too complex
|
|
722
|
+
outputSchema:z5.z.union([z5.z.instanceof(MastraModelOutput),z5.z.instanceof(AISDKV5OutputStream)]),execute:async({inputData,tracingContext})=>{const validatedInputData=inputData;capabilities.logger.debug(`Starting agent ${capabilities.agentName} llm stream call`,{runId});const processors=validatedInputData.outputProcessors||(capabilities.outputProcessors?typeof capabilities.outputProcessors==="function"?await capabilities.outputProcessors({runtimeContext:validatedInputData.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext()}):capabilities.outputProcessors:[]);const streamResult=capabilities.llm.stream({...validatedInputData,outputProcessors:processors,returnScorerData,tracingContext,_internal:{generateId:capabilities.generateMessageId}});if(format==="aisdk"){return streamResult.aisdk.v5;}return streamResult;}});}// src/agent/workflows/prepare-stream/index.ts
|
|
723
|
+
function createPrepareStreamWorkflow({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,agentAISpan,methodType,format,instructions,memoryConfig,memory,saveQueueManager,returnScorerData}){const prepareToolsStep=createPrepareToolsStep({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,agentAISpan,methodType,format,memory});const prepareMemoryStep2=createPrepareMemoryStep({capabilities,options,threadFromArgs,resourceId,runId,runtimeContext,instructions,memoryConfig,memory});const streamStep=createStreamStep({capabilities,runId,returnScorerData,format});const mapResultsStep=createMapResultsStep({capabilities,options,resourceId,runId,runtimeContext,memory,memoryConfig,saveQueueManager,agentAISpan,instructions});return createWorkflow({id:"execution-workflow",inputSchema:z5.z.object({}),outputSchema:z5.z.union([z5.z.instanceof(MastraModelOutput),z5.z.instanceof(AISDKV5OutputStream)]),steps:[prepareToolsStep,prepareMemoryStep2,streamStep],options:{tracingPolicy:{internal:1/* WORKFLOW */}}}).parallel([prepareToolsStep,prepareMemoryStep2]).map(mapResultsStep).then(streamStep).commit();}// src/agent/agent.ts
|
|
721
724
|
function resolveMaybePromise(value,cb){if(value instanceof Promise){return value.then(cb);}return cb(value);}var streamDeprecationWarningShown=false;var generateDeprecationWarningShown=false;function resolveThreadIdFromArgs(args){if(args?.memory?.thread){if(typeof args.memory.thread==="string")return {id:args.memory.thread};if(typeof args.memory.thread==="object"&&args.memory.thread.id)return args.memory.thread;}if(args?.threadId)return {id:args.threadId};return void 0;}var _Agent_decorators,_init,_a;_Agent_decorators=[chunkTKFLL33F_cjs.InstrumentClass({prefix:"agent",excludeMethods:["hasOwnMemory","getMemory","__primitive","__registerMastra","__registerPrimitives","__runInputProcessors","__runOutputProcessors","_wrapToolsWithAITracing","getProcessorRunner","__setTools","__setLogger","__setTelemetry","log","listAgents","getModel","getInstructions","getTools","getLLM","getWorkflows","getDefaultGenerateOptions","getDefaultStreamOptions","getDescription","getScorers","getVoice"]})];exports.Agent=class Agent extends(_a=chunk4L3P3PCP_cjs.MastraBase){id;name;#instructions;#description;model;maxRetries;#mastra;#memory;#workflows;#defaultGenerateOptions;#defaultStreamOptions;#defaultVNextStreamOptions;#tools;evals;#scorers;#agents;#voice;#inputProcessors;#outputProcessors;#options;// This flag is for agent network messages. We should change the agent network formatting and remove this flag after.
|
|
722
725
|
_agentNetworkAppend=false;constructor(config){super({component:chunkWVCEJBDR_cjs.RegisteredLogger.AGENT});this.name=config.name;this.id=config.id??config.name;this.#instructions=config.instructions;this.#description=config.description;this.#options=config.options;if(!config.model){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_CONSTRUCTOR_MODEL_REQUIRED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:config.name},text:`LanguageModel is required to create an Agent. Please provide the 'model'.`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}if(Array.isArray(config.model)){if(config.model.length===0){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_CONSTRUCTOR_MODEL_ARRAY_EMPTY",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:config.name},text:`Model array is empty. Please provide at least one model.`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}this.model=config.model.map(mdl=>({id:crypto2.randomUUID(),model:mdl.model,maxRetries:mdl.maxRetries??config?.maxRetries??0,enabled:mdl.enabled??true}));}else {this.model=config.model;}this.maxRetries=config.maxRetries??0;if(config.workflows){this.#workflows=config.workflows;}this.#defaultGenerateOptions=config.defaultGenerateOptions||{};this.#defaultStreamOptions=config.defaultStreamOptions||{};this.#defaultVNextStreamOptions=config.defaultVNextStreamOptions||{};this.#tools=config.tools||{};this.evals={};if(config.mastra){this.__registerMastra(config.mastra);this.__registerPrimitives({telemetry:config.mastra.getTelemetry(),logger:config.mastra.getLogger()});}this.#scorers=config.scorers||{};this.#agents=config.agents||{};if(config.evals){this.evals=config.evals;}if(config.memory){this.#memory=config.memory;}if(config.voice){this.#voice=config.voice;if(typeof config.tools!=="function"){this.#voice?.addTools(this.tools);}if(typeof config.instructions==="string"){this.#voice?.addInstructions(config.instructions);}}else {this.#voice=new chunkWECJNCGT_cjs.DefaultVoice();}if(config.inputProcessors){this.#inputProcessors=config.inputProcessors;}if(config.outputProcessors){this.#outputProcessors=config.outputProcessors;}this._agentNetworkAppend=config._agentNetworkAppend||false;}getMastraInstance(){return this.#mastra;}listAgents({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){const agentsToUse=this.#agents?typeof this.#agents==="function"?this.#agents({runtimeContext}):this.#agents:{};return resolveMaybePromise(agentsToUse,agents=>{if(!agents){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_AGENTS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based agents returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return agents;});}async getProcessorRunner({runtimeContext,inputProcessorOverrides,outputProcessorOverrides}){const inputProcessors=inputProcessorOverrides??(this.#inputProcessors?typeof this.#inputProcessors==="function"?await this.#inputProcessors({runtimeContext}):this.#inputProcessors:[]);const outputProcessors=outputProcessorOverrides??(this.#outputProcessors?typeof this.#outputProcessors==="function"?await this.#outputProcessors({runtimeContext}):this.#outputProcessors:[]);this.logger.debug("outputProcessors",outputProcessors);return new ProcessorRunner({inputProcessors,outputProcessors,logger:this.logger,agentName:this.name});}async getResolvedOutputProcessors(runtimeContext){if(!this.#outputProcessors){return [];}if(typeof this.#outputProcessors==="function"){return await this.#outputProcessors({runtimeContext:runtimeContext||new chunkGPWMM745_cjs.RuntimeContext()});}return this.#outputProcessors;}hasOwnMemory(){return Boolean(this.#memory);}async getMemory({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(!this.#memory){return void 0;}let resolvedMemory;if(typeof this.#memory!=="function"){resolvedMemory=this.#memory;}else {const result=this.#memory({runtimeContext,mastra:this.#mastra});resolvedMemory=await Promise.resolve(result);if(!resolvedMemory){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_MEMORY_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based memory returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}}if(this.#mastra&&resolvedMemory){resolvedMemory.__registerMastra(this.#mastra);if(!resolvedMemory.hasOwnStorage){const storage=this.#mastra.getStorage();if(storage){resolvedMemory.setStorage(storage);}}}return resolvedMemory;}get voice(){if(typeof this.#instructions==="function"){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_VOICE_INCOMPATIBLE_WITH_FUNCTION_INSTRUCTIONS",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:"Voice is not compatible when instructions are a function. Please use getVoice() instead."});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return this.#voice;}async getWorkflows({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){let workflowRecord;if(typeof this.#workflows==="function"){workflowRecord=await Promise.resolve(this.#workflows({runtimeContext,mastra:this.#mastra}));}else {workflowRecord=this.#workflows??{};}Object.entries(workflowRecord||{}).forEach(([_workflowName,workflow])=>{if(this.#mastra){workflow.__registerMastra(this.#mastra);}});return workflowRecord;}async getScorers({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#scorers!=="function"){return this.#scorers;}const result=this.#scorers({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,scorers=>{if(!scorers){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_SCORERS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based scorers returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return scorers;});}async getVoice({runtimeContext}={}){if(this.#voice){const voice=this.#voice;voice?.addTools(await this.getTools({runtimeContext}));voice?.addInstructions(await this.getInstructions({runtimeContext}));return voice;}else {return new chunkWECJNCGT_cjs.DefaultVoice();}}get instructions(){this.logger.warn("The instructions property is deprecated. Please use getInstructions() instead.");if(typeof this.#instructions==="function"){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_INSTRUCTIONS_INCOMPATIBLE_WITH_FUNCTION_INSTRUCTIONS",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:"Instructions are not compatible when instructions are a function. Please use getInstructions() instead."});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return this.#instructions;}getInstructions({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#instructions==="string"){return this.#instructions;}const result=this.#instructions({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,instructions=>{if(!instructions){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_INSTRUCTIONS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:"Instructions are required to use an Agent. The function-based instructions returned an empty value."});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return instructions;});}getDescription(){return this.#description??"";}getDefaultGenerateOptions({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#defaultGenerateOptions!=="function"){return this.#defaultGenerateOptions;}const result=this.#defaultGenerateOptions({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,options=>{if(!options){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_DEFAULT_GENERATE_OPTIONS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based default generate options returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return options;});}getDefaultStreamOptions({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#defaultStreamOptions!=="function"){return this.#defaultStreamOptions;}const result=this.#defaultStreamOptions({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,options=>{if(!options){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_DEFAULT_STREAM_OPTIONS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based default stream options returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return options;});}getDefaultVNextStreamOptions({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#defaultVNextStreamOptions!=="function"){return this.#defaultVNextStreamOptions;}const result=this.#defaultVNextStreamOptions({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,options=>{if(!options){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_DEFAULT_VNEXT_STREAM_OPTIONS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based default vnext stream options returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return options;});}get tools(){this.logger.warn("The tools property is deprecated. Please use getTools() instead.");if(typeof this.#tools==="function"){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_TOOLS_FUNCTION_INCOMPATIBLE_WITH_TOOL_FUNCTION_TYPE",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:"Tools are not compatible when tools are a function. Please use getTools() instead."});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return chunkN4YXCARN_cjs.ensureToolProperties(this.#tools);}getTools({runtimeContext=new chunkGPWMM745_cjs.RuntimeContext()}={}){if(typeof this.#tools!=="function"){return chunkN4YXCARN_cjs.ensureToolProperties(this.#tools);}const result=this.#tools({runtimeContext,mastra:this.#mastra});return resolveMaybePromise(result,tools=>{if(!tools){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GET_TOOLS_FUNCTION_EMPTY_RETURN",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:`[Agent:${this.name}] - Function-based tools returned empty value`});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return chunkN4YXCARN_cjs.ensureToolProperties(tools);});}get llm(){this.logger.warn("The llm property is deprecated. Please use getLLM() instead.");if(typeof this.model==="function"){const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_LLM_GETTER_INCOMPATIBLE_WITH_FUNCTION_MODEL",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{agentName:this.name},text:"LLM is not compatible when model is a function. Please use getLLM() instead."});this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}return this.getLLM();}/**
|
|
723
726
|
* Gets or creates an LLM instance based on the current model
|
|
@@ -771,8 +774,7 @@ _agentNetworkAppend:this._agentNetworkAppend}).add(result.response.messages,"res
|
|
|
771
774
|
* Merges telemetry wrapper with default onFinish callback when needed
|
|
772
775
|
*/#mergeOnFinishWithTelemetry(streamOptions,defaultStreamOptions){let finalOnFinish=streamOptions?.onFinish||defaultStreamOptions.onFinish;if(streamOptions?.onFinish&&streamOptions.onFinish.__hasOriginalOnFinish===false&&defaultStreamOptions.onFinish){const telemetryWrapper=streamOptions.onFinish;const defaultCallback=defaultStreamOptions.onFinish;finalOnFinish=async data=>{await telemetryWrapper(data);await defaultCallback(data);};}return finalOnFinish;}async#execute({methodType,format="mastra",...options}){const runtimeContext=options.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext();const threadFromArgs=resolveThreadIdFromArgs({threadId:options.threadId,memory:options.memory});const resourceId=options.memory?.resource||options.resourceId;const memoryConfig=options.memory?.options;if(resourceId&&threadFromArgs&&!this.hasOwnMemory()){this.logger.warn(`[Agent:${this.name}] - No memory is configured but resourceId and threadId were passed in args. This will not work.`);}const llm=await this.getLLM({runtimeContext,model:options.model});const runId=options.runId||this.#mastra?.generateId()||crypto2.randomUUID();const instructions=options.instructions||(await this.getInstructions({runtimeContext}));const agentAISpan=chunkN4YXCARN_cjs.getOrCreateSpan({type:"agent_run"/* AGENT_RUN */,name:`agent run: '${this.id}'`,input:options.messages,attributes:{agentId:this.id,instructions},metadata:{runId,resourceId,threadId:threadFromArgs?.id},tracingPolicy:this.#options?.tracingPolicy,tracingOptions:options.tracingOptions,tracingContext:options.tracingContext,runtimeContext});const activeSpan=chunkTKFLL33F_cjs.Telemetry.getActiveSpan();const baggageEntries={};if(threadFromArgs?.id){if(activeSpan){activeSpan.setAttribute("threadId",threadFromArgs.id);}baggageEntries.threadId={value:threadFromArgs.id};}if(resourceId){if(activeSpan){activeSpan.setAttribute("resourceId",resourceId);}baggageEntries.resourceId={value:resourceId};}if(Object.keys(baggageEntries).length>0){chunkTKFLL33F_cjs.Telemetry.setBaggage(baggageEntries);}const memory=await this.getMemory({runtimeContext});const saveQueueManager=new SaveQueueManager({logger:this.logger,memory});if(process.env.NODE_ENV!=="test"){this.logger.debug(`[Agents:${this.name}] - Starting generation`,{runId});}const capabilities={agentName:this.name,logger:this.logger,getMemory:this.getMemory.bind(this),getModel:this.getModel.bind(this),generateMessageId:this.#mastra?.generateId?.bind(this.#mastra)||(()=>crypto2.randomUUID()),_agentNetworkAppend:"_agentNetworkAppend"in this?Boolean(this._agentNetworkAppend):void 0,saveStepMessages:this.saveStepMessages.bind(this),convertTools:this.convertTools.bind(this),getMemoryMessages:this.getMemoryMessages.bind(this),runInputProcessors:this.__runInputProcessors.bind(this),executeOnFinish:this.#executeOnFinish.bind(this),outputProcessors:this.#outputProcessors,llm};const executionWorkflow=createPrepareStreamWorkflow({capabilities,options:{...options,methodType},threadFromArgs,resourceId,runId,runtimeContext,agentAISpan,methodType,format,instructions,memoryConfig,memory,saveQueueManager,returnScorerData:options.returnScorerData});const run=await executionWorkflow.createRunAsync();const result=await run.start({tracingContext:{currentSpan:agentAISpan}});return result;}async#executeOnFinish({result,instructions,readOnlyMemory,thread:threadAfter,threadId,resourceId,memoryConfig,outputText,runtimeContext,agentAISpan,runId,messageList,threadExists,structuredOutput=false,saveQueueManager,overrideScorers}){const resToLog={text:result?.text,object:result?.object,toolResults:result?.toolResults,toolCalls:result?.toolCalls,usage:result?.usage,steps:result?.steps?.map(s=>{return {stepType:s?.stepType,text:result?.text,object:result?.object,toolResults:result?.toolResults,toolCalls:result?.toolCalls,usage:result?.usage};})};this.logger.debug(`[Agent:${this.name}] - Post processing LLM response`,{runId,result:resToLog,threadId,resourceId});const messageListResponses=messageList.get.response.aiV4.core();const usedWorkingMemory=messageListResponses?.some(m=>m.role==="tool"&&m?.content?.some(c=>c?.toolName==="updateWorkingMemory"));const memory=await this.getMemory({runtimeContext});const thread=usedWorkingMemory?threadId?await memory?.getThreadById({threadId}):void 0:threadAfter;if(memory&&resourceId&&thread&&!readOnlyMemory){try{let responseMessages=result.response.messages;if(!responseMessages&&result.object){responseMessages=[{role:"assistant",content:[{type:"text",text:outputText// outputText contains the stringified object
|
|
773
776
|
}]}];}if(responseMessages){const filteredMessages=responseMessages.filter(m=>m.role!=="user");messageList.add(filteredMessages,"response");}if(!threadExists){await memory.createThread({threadId:thread.id,metadata:thread.metadata,title:thread.title,memoryConfig,resourceId:thread.resourceId});}const promises=[saveQueueManager.flushMessages(messageList,threadId,memoryConfig)];if(thread.title?.startsWith("New Thread")){const config=memory.getMergedThreadConfig(memoryConfig);const userMessage=this.getMostRecentUserMessage(messageList.get.all.ui());const{shouldGenerate,model:titleModel,instructions:titleInstructions}=this.resolveTitleGenerationConfig(config?.threads?.generateTitle);if(shouldGenerate&&userMessage){promises.push(this.genTitle(userMessage,runtimeContext,{currentSpan:agentAISpan},titleModel,titleInstructions).then(title=>{if(title){return memory.createThread({threadId:thread.id,resourceId,memoryConfig,title,metadata:thread.metadata});}}));}}await Promise.all(promises);}catch(e){await saveQueueManager.flushMessages(messageList,threadId,memoryConfig);if(e instanceof chunkC73WLCY3_cjs.MastraError){throw e;}const mastraError=new chunkC73WLCY3_cjs.MastraError({id:"AGENT_MEMORY_PERSIST_RESPONSE_MESSAGES_FAILED",domain:"AGENT"/* AGENT */,category:"SYSTEM"/* SYSTEM */,details:{agentName:this.name,runId:runId||"",threadId:threadId||"",result:JSON.stringify(resToLog)}},e);this.logger.trackException(mastraError);this.logger.error(mastraError.toString());throw mastraError;}}else {let responseMessages=result.response.messages;if(!responseMessages&&result.object){responseMessages=[{role:"assistant",content:[{type:"text",text:outputText// outputText contains the stringified object
|
|
774
|
-
}]}];}if(responseMessages){messageList.add(responseMessages,"response");}}await this.#runScorers({messageList,runId,outputText,instructions,runtimeContext,structuredOutput,overrideScorers,tracingContext:{currentSpan:agentAISpan}});agentAISpan?.end({output:{text:result?.text,object:result?.object,files:result?.files}});}async network(messages,options){const runId=options?.runId||this.#mastra?.generateId()||crypto2.randomUUID();const runtimeContextToUse=options?.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext();return await networkLoop({networkName:this.name,runtimeContext:runtimeContextToUse,runId,routingAgent:this,routingAgentOptions:{telemetry:options?.telemetry,modelSettings:options?.modelSettings},generateId:()=>this.#mastra?.generateId()||crypto2.randomUUID(),maxIterations:options?.maxSteps||1,messages,threadId:typeof options?.memory?.thread==="string"?options?.memory?.thread:options?.memory?.thread?.id,resourceId:options?.memory?.resource});}async generateVNext(messages,options){const result=await this.streamVNext(messages,options);if(result.tripwire){return result;}let fullOutput=await result.getFullOutput();const error=fullOutput.error;if(fullOutput.finishReason==="error"&&error){throw error;}return fullOutput;}async streamVNext(messages,streamOptions){const defaultStreamOptions=await this.getDefaultVNextStreamOptions({runtimeContext:streamOptions?.runtimeContext});let mergedStreamOptions={...defaultStreamOptions,...streamOptions,onFinish:this.#mergeOnFinishWithTelemetry(streamOptions,defaultStreamOptions)};let modelOverride;if(mergedStreamOptions.structuredOutput&&mergedStreamOptions.maxSteps===1){if(mergedStreamOptions.structuredOutput.model){modelOverride=mergedStreamOptions.structuredOutput.model;}mergedStreamOptions={...mergedStreamOptions,output:mergedStreamOptions.structuredOutput.schema,structuredOutput:void 0// Remove structuredOutput to avoid confusion downstream
|
|
775
|
-
};}const llm=await this.getLLM({runtimeContext:mergedStreamOptions.runtimeContext,model:modelOverride});if(llm.getModel().specificationVersion!=="v2"){const modelInfo=llm.getModel();const modelId=modelInfo.modelId||"unknown";const provider=modelInfo.provider||"unknown";throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_V1_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:`Agent "${this.name}" is using AI SDK v4 model (${provider}:${modelId}) which is not compatible with streamVNext. Please use AI SDK v5 models or call the stream() method instead. See https://mastra.ai/en/docs/streaming/overview for more information.`,details:{agentName:this.name,modelId,provider,specificationVersion:modelInfo.specificationVersion}});}const result=await this.#execute({...mergedStreamOptions,messages,methodType:"streamVNext",model:modelOverride});if(result.status!=="success"){if(result.status==="failed"){throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_FAILED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:result.error.message,details:{error:result.error.message}});}throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_UNKNOWN_ERROR",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:"An unknown error occurred while streaming"});}return result.result;}async generate(messages,generateOptions={}){if(!generateDeprecationWarningShown){this.logger.warn("Deprecation NOTICE:\nGenerate method will switch to use generateVNext implementation September 23rd, 2025. Please use generateLegacy if you don't want to upgrade just yet.");generateDeprecationWarningShown=true;}return this.generateLegacy(messages,generateOptions);}async generateLegacy(messages,generateOptions={}){const defaultGenerateOptions=await this.getDefaultGenerateOptions({runtimeContext:generateOptions.runtimeContext});const mergedGenerateOptions={...defaultGenerateOptions,...generateOptions,experimental_generateMessageId:defaultGenerateOptions.experimental_generateMessageId||this.#mastra?.generateId?.bind(this.#mastra)};const{llm,before,after}=await this.prepareLLMOptions(messages,mergedGenerateOptions,"generate");if(llm.getModel().specificationVersion!=="v1"){this.logger.error("V2 models are not supported for the current version of generate. Please use generateVNext instead.",{modelId:llm.getModel().modelId});throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GENERATE_V2_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{modelId:llm.getModel().modelId},text:"V2 models are not supported for the current version of generate. Please use generateVNext instead."});}let llmToUse=llm;const beforeResult=await before();const traceId=chunkN4YXCARN_cjs.getValidTraceId(beforeResult.agentAISpan);if(beforeResult.tripwire){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:beforeResult.tripwireReason,traceId};return tripwireResult;}const{experimental_output,output,agentAISpan,...llmOptions}=beforeResult;const tracingContext={currentSpan:agentAISpan};let finalOutputProcessors=mergedGenerateOptions.outputProcessors;if(mergedGenerateOptions.structuredOutput){const agentModel=await this.getModel({runtimeContext:mergedGenerateOptions.runtimeContext});const structuredProcessor=new StructuredOutputProcessor(mergedGenerateOptions.structuredOutput,agentModel);finalOutputProcessors=finalOutputProcessors?[...finalOutputProcessors,structuredProcessor]:[structuredProcessor];}if(!output||experimental_output){const result2=await llmToUse.__text({...llmOptions,tracingContext,experimental_output});const outputProcessorResult2=await this.__runOutputProcessors({runtimeContext:mergedGenerateOptions.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext(),tracingContext,outputProcessorOverrides:finalOutputProcessors,messageList:new chunkWYBYCVS3_cjs.MessageList({threadId:llmOptions.threadId||"",resourceId:llmOptions.resourceId||""}).add({role:"assistant",content:[{type:"text",text:result2.text}]},"response")});if(outputProcessorResult2.tripwireTriggered){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:outputProcessorResult2.tripwireReason,traceId};return tripwireResult;}const newText2=outputProcessorResult2.messageList.get.response.v2().map(msg=>msg.content.parts.map(part=>part.type==="text"?part.text:"").join("")).join("");result2.text=newText2;if(finalOutputProcessors&&finalOutputProcessors.length>0){const messages2=outputProcessorResult2.messageList.get.response.v2();this.logger.debug("Checking messages for experimentalOutput metadata:",messages2.map(m=>({role:m.role,hasContentMetadata:!!m.content.metadata,contentMetadata:m.content.metadata})));const messagesWithStructuredData=messages2.filter(msg=>msg.content.metadata&&msg.content.metadata.structuredOutput);this.logger.debug("Messages with structured data:",messagesWithStructuredData.length);if(messagesWithStructuredData[0]&&messagesWithStructuredData[0].content.metadata?.structuredOutput){result2.object=messagesWithStructuredData[0].content.metadata.structuredOutput;this.logger.debug("Using structured data from processor metadata for result.object");}else {try{const processedOutput=JSON.parse(newText2);result2.object=processedOutput;this.logger.debug("Using fallback JSON parsing for result.object");}catch(error){this.logger.warn("Failed to parse processed output as JSON, updating text only",{error});}}}const overrideScorers=mergedGenerateOptions.scorers;const afterResult2=await after({result:result2,outputText:newText2,agentAISpan,...(overrideScorers?{overrideScorers}:{})});if(generateOptions.returnScorerData){result2.scoringData=afterResult2.scoringData;}result2.traceId=traceId;return result2;}const result=await llmToUse.__textObject({...llmOptions,tracingContext,structuredOutput:output});const outputText=JSON.stringify(result.object);const outputProcessorResult=await this.__runOutputProcessors({runtimeContext:mergedGenerateOptions.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext(),tracingContext,messageList:new chunkWYBYCVS3_cjs.MessageList({threadId:llmOptions.threadId||"",resourceId:llmOptions.resourceId||""}).add({role:"assistant",content:[{type:"text",text:outputText}]},"response")});if(outputProcessorResult.tripwireTriggered){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:outputProcessorResult.tripwireReason,traceId};return tripwireResult;}const newText=outputProcessorResult.messageList.get.response.v2().map(msg=>msg.content.parts.map(part=>part.type==="text"?part.text:"").join("")).join("");try{const processedObject=JSON.parse(newText);result.object=processedObject;}catch(error){this.logger.warn("Failed to parse processed output as JSON, keeping original result",{error});}const afterResult=await after({result,outputText:newText,...(generateOptions.scorers?{overrideScorers:generateOptions.scorers}:{}),structuredOutput:true,agentAISpan});if(generateOptions.returnScorerData){result.scoringData=afterResult.scoringData;}result.traceId=traceId;return result;}async stream(messages,streamOptions={}){if(!streamDeprecationWarningShown){this.logger.warn("Deprecation NOTICE:\nStream method will switch to use streamVNext implementation September 23rd, 2025. Please use streamLegacy if you don't want to upgrade just yet.");streamDeprecationWarningShown=true;}return this.streamLegacy(messages,streamOptions);}async streamLegacy(messages,streamOptions={}){const defaultStreamOptions=await this.getDefaultStreamOptions({runtimeContext:streamOptions.runtimeContext});const mergedStreamOptions={...defaultStreamOptions,...streamOptions,onFinish:this.#mergeOnFinishWithTelemetry(streamOptions,defaultStreamOptions),experimental_generateMessageId:defaultStreamOptions.experimental_generateMessageId||this.#mastra?.generateId?.bind(this.#mastra)};const{llm,before,after}=await this.prepareLLMOptions(messages,mergedStreamOptions,"stream");if(llm.getModel().specificationVersion!=="v1"){this.logger.error("V2 models are not supported for stream. Please use streamVNext instead.",{modelId:llm.getModel().modelId});throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_V2_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{modelId:llm.getModel().modelId},text:"V2 models are not supported for stream. Please use streamVNext instead."});}const beforeResult=await before();const traceId=chunkN4YXCARN_cjs.getValidTraceId(beforeResult.agentAISpan);if(beforeResult.tripwire){const emptyResult={textStream:async function*(){}(),fullStream:Promise.resolve("").then(()=>{const emptyStream=new globalThis.ReadableStream({start(controller){controller.close();}});return emptyStream;}),text:Promise.resolve(""),usage:Promise.resolve({totalTokens:0,promptTokens:0,completionTokens:0}),finishReason:Promise.resolve("other"),tripwire:true,tripwireReason:beforeResult.tripwireReason,response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},toolCalls:Promise.resolve([]),toolResults:Promise.resolve([]),warnings:Promise.resolve(void 0),request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,traceId,toAIStream:()=>Promise.resolve("").then(()=>{const emptyStream=new globalThis.ReadableStream({start(controller){controller.close();}});return emptyStream;}),get experimental_partialOutputStream(){return async function*(){}();},pipeDataStreamToResponse:()=>Promise.resolve(),pipeTextStreamToResponse:()=>Promise.resolve(),toDataStreamResponse:()=>new Response("",{status:200,headers:{"Content-Type":"text/plain"}}),toTextStreamResponse:()=>new Response("",{status:200,headers:{"Content-Type":"text/plain"}})};return emptyResult;}const{onFinish,runId,output,experimental_output,agentAISpan,...llmOptions}=beforeResult;const overrideScorers=mergedStreamOptions.scorers;const tracingContext={currentSpan:agentAISpan};if(!output||experimental_output){this.logger.debug(`Starting agent ${this.name} llm stream call`,{runId});const streamResult=llm.__stream({...llmOptions,experimental_output,tracingContext,outputProcessors:await this.getResolvedOutputProcessors(mergedStreamOptions.runtimeContext),onFinish:async result=>{try{const outputText=result.text;await after({result,outputText,agentAISpan,...(overrideScorers?{overrideScorers}:{})});}catch(e){this.logger.error("Error saving memory on finish",{error:e,runId});}await onFinish?.({...result,runId});},runId});streamResult.traceId=traceId;return streamResult;}this.logger.debug(`Starting agent ${this.name} llm streamObject call`,{runId});const streamObjectResult=llm.__streamObject({...llmOptions,tracingContext,onFinish:async result=>{try{const outputText=JSON.stringify(result.object);await after({result,outputText,structuredOutput:true,agentAISpan,...(overrideScorers?{overrideScorers}:{})});}catch(e){this.logger.error("Error saving memory on finish",{error:e,runId});}await onFinish?.({...result,runId});},runId,structuredOutput:output});streamObjectResult.traceId=traceId;return streamObjectResult;}/**
|
|
777
|
+
}]}];}if(responseMessages){messageList.add(responseMessages,"response");}}await this.#runScorers({messageList,runId,outputText,instructions,runtimeContext,structuredOutput,overrideScorers,tracingContext:{currentSpan:agentAISpan}});agentAISpan?.end({output:{text:result?.text,object:result?.object,files:result?.files}});}async network(messages,options){const runId=options?.runId||this.#mastra?.generateId()||crypto2.randomUUID();const runtimeContextToUse=options?.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext();return await networkLoop({networkName:this.name,runtimeContext:runtimeContextToUse,runId,routingAgent:this,routingAgentOptions:{telemetry:options?.telemetry,modelSettings:options?.modelSettings},generateId:()=>this.#mastra?.generateId()||crypto2.randomUUID(),maxIterations:options?.maxSteps||1,messages,threadId:typeof options?.memory?.thread==="string"?options?.memory?.thread:options?.memory?.thread?.id,resourceId:options?.memory?.resource});}async generateVNext(messages,options){const result=await this.streamVNext(messages,options);if(result.tripwire){return result;}let fullOutput=await result.getFullOutput();const error=fullOutput.error;if(fullOutput.finishReason==="error"&&error){throw error;}return fullOutput;}async streamVNext(messages,streamOptions){const defaultStreamOptions=await this.getDefaultVNextStreamOptions({runtimeContext:streamOptions?.runtimeContext});if(defaultStreamOptions.structuredOutput&&defaultStreamOptions.output||streamOptions?.structuredOutput&&streamOptions.output){throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_STRUCTURED_OUTPUT_AND_OUTPUT_PROVIDED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:"structuredOutput and output cannot be provided at the same time"});}let adjustedDefaultStreamOptions={...defaultStreamOptions};if(streamOptions?.structuredOutput||streamOptions?.output){const{output,structuredOutput,...restDefaultOptions}=adjustedDefaultStreamOptions;adjustedDefaultStreamOptions=restDefaultOptions;}let mergedStreamOptions={...adjustedDefaultStreamOptions,...(streamOptions??{}),onFinish:this.#mergeOnFinishWithTelemetry(streamOptions,defaultStreamOptions)};let modelOverride;if(mergedStreamOptions.structuredOutput&&mergedStreamOptions.maxSteps===1){if(mergedStreamOptions.structuredOutput.model){modelOverride=mergedStreamOptions.structuredOutput.model;}const{structuredOutput,...optionsWithoutStructuredOutput}=mergedStreamOptions;mergedStreamOptions={...optionsWithoutStructuredOutput,output:structuredOutput.schema};}const llm=await this.getLLM({runtimeContext:mergedStreamOptions.runtimeContext,model:modelOverride});if(llm.getModel().specificationVersion!=="v2"){const modelInfo=llm.getModel();const modelId=modelInfo.modelId||"unknown";const provider=modelInfo.provider||"unknown";throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_V1_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:`Agent "${this.name}" is using AI SDK v4 model (${provider}:${modelId}) which is not compatible with streamVNext. Please use AI SDK v5 models or call the stream() method instead. See https://mastra.ai/en/docs/streaming/overview for more information.`,details:{agentName:this.name,modelId,provider,specificationVersion:modelInfo.specificationVersion}});}const executeOptions={...mergedStreamOptions,messages,methodType:"streamVNext",model:modelOverride};const result=await this.#execute(executeOptions);if(result.status!=="success"){if(result.status==="failed"){throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_FAILED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:result.error.message,details:{error:result.error.message}});}throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_VNEXT_UNKNOWN_ERROR",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,text:"An unknown error occurred while streaming"});}return result.result;}async generate(messages,generateOptions={}){if(!generateDeprecationWarningShown){this.logger.warn("Deprecation NOTICE:\nGenerate method will switch to use generateVNext implementation September 23rd, 2025. Please use generateLegacy if you don't want to upgrade just yet.");generateDeprecationWarningShown=true;}return this.generateLegacy(messages,generateOptions);}async generateLegacy(messages,generateOptions={}){const defaultGenerateOptions=await this.getDefaultGenerateOptions({runtimeContext:generateOptions.runtimeContext});const mergedGenerateOptions={...defaultGenerateOptions,...generateOptions,experimental_generateMessageId:defaultGenerateOptions.experimental_generateMessageId||this.#mastra?.generateId?.bind(this.#mastra)};const{llm,before,after}=await this.prepareLLMOptions(messages,mergedGenerateOptions,"generate");if(llm.getModel().specificationVersion!=="v1"){this.logger.error("V2 models are not supported for the current version of generate. Please use generateVNext instead.",{modelId:llm.getModel().modelId});throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_GENERATE_V2_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{modelId:llm.getModel().modelId},text:"V2 models are not supported for the current version of generate. Please use generateVNext instead."});}let llmToUse=llm;const beforeResult=await before();const traceId=chunkN4YXCARN_cjs.getValidTraceId(beforeResult.agentAISpan);if(beforeResult.tripwire){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:beforeResult.tripwireReason,traceId};return tripwireResult;}const{experimental_output,output,agentAISpan,...llmOptions}=beforeResult;const tracingContext={currentSpan:agentAISpan};let finalOutputProcessors=mergedGenerateOptions.outputProcessors;if(mergedGenerateOptions.structuredOutput){const agentModel=await this.getModel({runtimeContext:mergedGenerateOptions.runtimeContext});const structuredProcessor=new StructuredOutputProcessor(mergedGenerateOptions.structuredOutput,agentModel);finalOutputProcessors=finalOutputProcessors?[...finalOutputProcessors,structuredProcessor]:[structuredProcessor];}if(!output||experimental_output){const result2=await llmToUse.__text({...llmOptions,tracingContext,experimental_output});const outputProcessorResult2=await this.__runOutputProcessors({runtimeContext:mergedGenerateOptions.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext(),tracingContext,outputProcessorOverrides:finalOutputProcessors,messageList:new chunkWYBYCVS3_cjs.MessageList({threadId:llmOptions.threadId||"",resourceId:llmOptions.resourceId||""}).add({role:"assistant",content:[{type:"text",text:result2.text}]},"response")});if(outputProcessorResult2.tripwireTriggered){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:outputProcessorResult2.tripwireReason,traceId};return tripwireResult;}const newText2=outputProcessorResult2.messageList.get.response.v2().map(msg=>msg.content.parts.map(part=>part.type==="text"?part.text:"").join("")).join("");result2.text=newText2;if(finalOutputProcessors&&finalOutputProcessors.length>0){const messages2=outputProcessorResult2.messageList.get.response.v2();this.logger.debug("Checking messages for experimentalOutput metadata:",messages2.map(m=>({role:m.role,hasContentMetadata:!!m.content.metadata,contentMetadata:m.content.metadata})));const messagesWithStructuredData=messages2.filter(msg=>msg.content.metadata&&msg.content.metadata.structuredOutput);this.logger.debug("Messages with structured data:",messagesWithStructuredData.length);if(messagesWithStructuredData[0]&&messagesWithStructuredData[0].content.metadata?.structuredOutput){result2.object=messagesWithStructuredData[0].content.metadata.structuredOutput;this.logger.debug("Using structured data from processor metadata for result.object");}else {try{const processedOutput=JSON.parse(newText2);result2.object=processedOutput;this.logger.debug("Using fallback JSON parsing for result.object");}catch(error){this.logger.warn("Failed to parse processed output as JSON, updating text only",{error});}}}const overrideScorers=mergedGenerateOptions.scorers;const afterResult2=await after({result:result2,outputText:newText2,agentAISpan,...(overrideScorers?{overrideScorers}:{})});if(generateOptions.returnScorerData){result2.scoringData=afterResult2.scoringData;}result2.traceId=traceId;return result2;}const result=await llmToUse.__textObject({...llmOptions,tracingContext,structuredOutput:output});const outputText=JSON.stringify(result.object);const outputProcessorResult=await this.__runOutputProcessors({runtimeContext:mergedGenerateOptions.runtimeContext||new chunkGPWMM745_cjs.RuntimeContext(),tracingContext,messageList:new chunkWYBYCVS3_cjs.MessageList({threadId:llmOptions.threadId||"",resourceId:llmOptions.resourceId||""}).add({role:"assistant",content:[{type:"text",text:outputText}]},"response")});if(outputProcessorResult.tripwireTriggered){const tripwireResult={text:"",object:void 0,usage:{totalTokens:0,promptTokens:0,completionTokens:0},finishReason:"other",response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},responseMessages:[],toolCalls:[],toolResults:[],warnings:void 0,request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,tripwire:true,tripwireReason:outputProcessorResult.tripwireReason,traceId};return tripwireResult;}const newText=outputProcessorResult.messageList.get.response.v2().map(msg=>msg.content.parts.map(part=>part.type==="text"?part.text:"").join("")).join("");try{const processedObject=JSON.parse(newText);result.object=processedObject;}catch(error){this.logger.warn("Failed to parse processed output as JSON, keeping original result",{error});}const afterResult=await after({result,outputText:newText,...(generateOptions.scorers?{overrideScorers:generateOptions.scorers}:{}),structuredOutput:true,agentAISpan});if(generateOptions.returnScorerData){result.scoringData=afterResult.scoringData;}result.traceId=traceId;return result;}async stream(messages,streamOptions={}){if(!streamDeprecationWarningShown){this.logger.warn("Deprecation NOTICE:\nStream method will switch to use streamVNext implementation September 23rd, 2025. Please use streamLegacy if you don't want to upgrade just yet.");streamDeprecationWarningShown=true;}return this.streamLegacy(messages,streamOptions);}async streamLegacy(messages,streamOptions={}){const defaultStreamOptions=await this.getDefaultStreamOptions({runtimeContext:streamOptions.runtimeContext});const mergedStreamOptions={...defaultStreamOptions,...streamOptions,onFinish:this.#mergeOnFinishWithTelemetry(streamOptions,defaultStreamOptions),experimental_generateMessageId:defaultStreamOptions.experimental_generateMessageId||this.#mastra?.generateId?.bind(this.#mastra)};const{llm,before,after}=await this.prepareLLMOptions(messages,mergedStreamOptions,"stream");if(llm.getModel().specificationVersion!=="v1"){this.logger.error("V2 models are not supported for stream. Please use streamVNext instead.",{modelId:llm.getModel().modelId});throw new chunkC73WLCY3_cjs.MastraError({id:"AGENT_STREAM_V2_MODEL_NOT_SUPPORTED",domain:"AGENT"/* AGENT */,category:"USER"/* USER */,details:{modelId:llm.getModel().modelId},text:"V2 models are not supported for stream. Please use streamVNext instead."});}const beforeResult=await before();const traceId=chunkN4YXCARN_cjs.getValidTraceId(beforeResult.agentAISpan);if(beforeResult.tripwire){const emptyResult={textStream:async function*(){}(),fullStream:Promise.resolve("").then(()=>{const emptyStream=new globalThis.ReadableStream({start(controller){controller.close();}});return emptyStream;}),text:Promise.resolve(""),usage:Promise.resolve({totalTokens:0,promptTokens:0,completionTokens:0}),finishReason:Promise.resolve("other"),tripwire:true,tripwireReason:beforeResult.tripwireReason,response:{id:crypto2.randomUUID(),timestamp:/* @__PURE__ */new Date(),modelId:"tripwire",messages:[]},toolCalls:Promise.resolve([]),toolResults:Promise.resolve([]),warnings:Promise.resolve(void 0),request:{body:JSON.stringify({messages:[]})},experimental_output:void 0,steps:void 0,experimental_providerMetadata:void 0,traceId,toAIStream:()=>Promise.resolve("").then(()=>{const emptyStream=new globalThis.ReadableStream({start(controller){controller.close();}});return emptyStream;}),get experimental_partialOutputStream(){return async function*(){}();},pipeDataStreamToResponse:()=>Promise.resolve(),pipeTextStreamToResponse:()=>Promise.resolve(),toDataStreamResponse:()=>new Response("",{status:200,headers:{"Content-Type":"text/plain"}}),toTextStreamResponse:()=>new Response("",{status:200,headers:{"Content-Type":"text/plain"}})};return emptyResult;}const{onFinish,runId,output,experimental_output,agentAISpan,...llmOptions}=beforeResult;const overrideScorers=mergedStreamOptions.scorers;const tracingContext={currentSpan:agentAISpan};if(!output||experimental_output){this.logger.debug(`Starting agent ${this.name} llm stream call`,{runId});const streamResult=llm.__stream({...llmOptions,experimental_output,tracingContext,outputProcessors:await this.getResolvedOutputProcessors(mergedStreamOptions.runtimeContext),onFinish:async result=>{try{const outputText=result.text;await after({result,outputText,agentAISpan,...(overrideScorers?{overrideScorers}:{})});}catch(e){this.logger.error("Error saving memory on finish",{error:e,runId});}await onFinish?.({...result,runId});},runId});streamResult.traceId=traceId;return streamResult;}this.logger.debug(`Starting agent ${this.name} llm streamObject call`,{runId});const streamObjectResult=llm.__streamObject({...llmOptions,tracingContext,onFinish:async result=>{try{const outputText=JSON.stringify(result.object);await after({result,outputText,structuredOutput:true,agentAISpan,...(overrideScorers?{overrideScorers}:{})});}catch(e){this.logger.error("Error saving memory on finish",{error:e,runId});}await onFinish?.({...result,runId});},runId,structuredOutput:output});streamObjectResult.traceId=traceId;return streamObjectResult;}/**
|
|
776
778
|
* Convert text to speech using the configured voice provider
|
|
777
779
|
* @param input Text or text stream to convert to speech
|
|
778
780
|
* @param options Speech options including speaker and provider-specific options
|
|
@@ -888,5 +890,5 @@ exports.recursivelyCheckForFinalState = recursivelyCheckForFinalState;
|
|
|
888
890
|
exports.resolveVariables = resolveVariables;
|
|
889
891
|
exports.updateStepInHierarchy = updateStepInHierarchy;
|
|
890
892
|
exports.workflowToStep = workflowToStep;
|
|
891
|
-
//# sourceMappingURL=chunk-
|
|
892
|
-
//# sourceMappingURL=chunk-
|
|
893
|
+
//# sourceMappingURL=chunk-DK7N45JH.cjs.map
|
|
894
|
+
//# sourceMappingURL=chunk-DK7N45JH.cjs.map
|