{"version":3,"sources":["../src/mastra/hooks.ts","../src/evals/run/scorerAccumulator.ts","../src/evals/run/index.ts"],"names":["EntityType","MastraError","pMap","saveScorePayloadSchema","Workflow","resolveObservabilityContext","isSupportedLanguageModel","extractTrajectoryFromTrace","extractTrajectory","extractWorkflowTrajectory"],"mappings":"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","file":"chunk-2UWJTXGK.cjs","sourcesContent":["import pMap from 'p-map';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport { saveScorePayloadSchema } from '../evals';\nimport type { ScoringHookInput } from '../evals/types';\nimport type { Mastra } from '../mastra';\nimport { EntityType } from '../observability';\nimport type { MastraStorage } from '../storage';\n\nfunction toScorerTargetEntityType(entityType: string): EntityType | undefined {\n  switch (entityType) {\n    case 'AGENT':\n      return EntityType.AGENT;\n    case 'WORKFLOW':\n      return EntityType.WORKFLOW_RUN;\n    default:\n      return undefined;\n  }\n}\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 as string;\n    const entityType = hookData.entityType;\n    const scorer = hookData.scorer;\n    const scorerId = scorer.id as string;\n\n    if (!scorerId) {\n      mastra.getLogger()?.warn('Scorer ID not found, skipping score validation and saving');\n      return;\n    }\n\n    try {\n      const scorerToUse = await findScorer(mastra, entityId, entityType, scorerId);\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 ${scorerId} not found`,\n        });\n      }\n\n      let input = hookData.input;\n      let output = hookData.output;\n\n      const { structuredOutput, ...rest } = hookData;\n\n      const currentSpan = hookData.tracingContext?.currentSpan;\n      const traceId = currentSpan?.isValid ? currentSpan.traceId : undefined;\n      const spanId = currentSpan?.isValid ? currentSpan.id : undefined;\n      const targetCorrelationContext = currentSpan?.isValid ? currentSpan.getCorrelationContext?.() : undefined;\n      const targetMetadata = currentSpan?.isValid && currentSpan.metadata ? { ...currentSpan.metadata } : undefined;\n      const runResult = (await scorerToUse.scorer.run({\n        ...rest,\n        input,\n        output,\n        scoreSource: 'live',\n        targetScope: 'span',\n        targetEntityType: toScorerTargetEntityType(entityType),\n        targetTraceId: traceId,\n        targetSpanId: spanId,\n        targetCorrelationContext,\n        targetMetadata,\n      } as any)) as Record<string, unknown>;\n\n      const payload = {\n        ...rest,\n        ...runResult,\n        entityId,\n        scorerId: scorerId,\n        spanId,\n        traceId,\n        scorer: {\n          ...rest.scorer,\n          hasJudge: !!scorerToUse.scorer.judge,\n        },\n        metadata: {\n          structuredOutput: !!structuredOutput,\n        },\n      };\n      // Legacy score-store emission. This path is being deprecated.\n      await validateAndSaveScore(storage, payload);\n\n      if (currentSpan && spanId && traceId) {\n        await pMap(\n          currentSpan.observabilityInstance.getExporters(),\n          async exporter => {\n            if (exporter.addScoreToTrace) {\n              try {\n                await exporter.addScoreToTrace({\n                  traceId: traceId,\n                  spanId: spanId,\n                  score: runResult.score as number,\n                  reason: runResult.reason as string,\n                  scorerName: scorerToUse.scorer.id,\n                  metadata: {\n                    ...(currentSpan.metadata ?? {}),\n                  },\n                });\n              } catch (error) {\n                // Log error but don't fail the hook if exporter fails\n                mastra.getLogger()?.error(`Failed to add score to trace via exporter: ${error}`);\n              }\n            }\n          },\n          { concurrency: 3 },\n        );\n      }\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,\n            entityId,\n            entityType,\n          },\n        },\n        error,\n      );\n\n      mastra.getLogger()?.trackException(mastraError);\n    }\n  };\n}\n\n/**\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore()`.\n */\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n  const scoresStore = await storage.getStore('scores');\n  if (!scoresStore) {\n    throw new MastraError({\n      id: 'MASTRA_SCORES_STORAGE_NOT_AVAILABLE',\n      domain: ErrorDomain.STORAGE,\n      category: ErrorCategory.SYSTEM,\n      text: 'Scores storage domain is not available',\n    });\n  }\n  const payloadToSave = saveScorePayloadSchema.parse(payload);\n  await scoresStore.saveScore(payloadToSave);\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n  let scorerToUse;\n  if (entityType === 'AGENT') {\n    // Try code-defined agents first\n    try {\n      const agent = mastra.getAgentById(entityId);\n      const scorers = await agent.listScorers();\n      for (const [_, scorer] of Object.entries(scorers)) {\n        if (scorer.scorer.id === scorerId) {\n          scorerToUse = scorer;\n          break;\n        }\n      }\n    } catch {\n      // Agent not found in code-defined agents, try stored agents via editor\n      try {\n        const storedAgent = (await mastra.getEditor()?.agent.getById(entityId)) ?? null;\n        if (storedAgent) {\n          const scorers = await storedAgent.listScorers();\n          for (const [_, scorer] of Object.entries(scorers) as [string, any][]) {\n            if (scorer.scorer.id === scorerId) {\n              scorerToUse = scorer;\n              break;\n            }\n          }\n        }\n      } catch {\n        // Stored agent also not found, will fall back to mastra-registered scorer\n      }\n    }\n  } else if (entityType === 'WORKFLOW') {\n    const scorers = await mastra.getWorkflowById(entityId).listScorers();\n    for (const [_, scorer] of Object.entries(scorers)) {\n      if (scorer.scorer.id === scorerId) {\n        scorerToUse = scorer;\n        break;\n      }\n    }\n  }\n\n  // Fallback to mastra-registered scorer\n  if (!scorerToUse) {\n    const mastraRegisteredScorer = mastra.getScorerById(scorerId);\n    scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n  }\n\n  return scorerToUse;\n}\n","export class ScoreAccumulator {\n  private flatScores: Record<string, number[]> = {};\n  private workflowScores: Record<string, number[]> = {};\n  private stepScores: Record<string, Record<string, number[]>> = {};\n  private agentScores: Record<string, number[]> = {};\n  private trajectoryScores: Record<string, number[]> = {};\n\n  addScores(scorerResults: Record<string, any>) {\n    const isWorkflowScores = 'steps' in scorerResults || 'workflow' in scorerResults;\n    const isAgentScores = 'agent' in scorerResults;\n    const hasTrajectory = 'trajectory' in scorerResults;\n\n    // Routing priority: workflow configs take precedence (they may also include\n    // trajectory scores), then agent configs (agent or trajectory-only), then\n    // flat scores for simple scorer arrays.\n    if (isWorkflowScores) {\n      this.addWorkflowScores(scorerResults);\n    } else if (isAgentScores || hasTrajectory) {\n      this.addAgentScores(scorerResults);\n    } else {\n      this.addFlatScores(scorerResults);\n    }\n  }\n\n  private addFlatScores(scorerResults: Record<string, any>) {\n    for (const [scorerName, result] of Object.entries(scorerResults)) {\n      if (!this.flatScores[scorerName]) {\n        this.flatScores[scorerName] = [];\n      }\n      this.flatScores[scorerName].push((result as { score: number }).score);\n    }\n  }\n\n  private addWorkflowScores(scorerResults: Record<string, any>) {\n    if ('workflow' in scorerResults && scorerResults.workflow) {\n      for (const [scorerName, result] of Object.entries(scorerResults.workflow)) {\n        if (!this.workflowScores[scorerName]) {\n          this.workflowScores[scorerName] = [];\n        }\n        this.workflowScores[scorerName].push((result as { score: number }).score);\n      }\n    }\n\n    if ('steps' in scorerResults && scorerResults.steps) {\n      for (const [stepId, stepResults] of Object.entries(scorerResults.steps)) {\n        if (!this.stepScores[stepId]) {\n          this.stepScores[stepId] = {};\n        }\n        for (const [scorerName, result] of Object.entries(stepResults as Record<string, any>)) {\n          if (!this.stepScores[stepId][scorerName]) {\n            this.stepScores[stepId][scorerName] = [];\n          }\n          this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n        }\n      }\n    }\n\n    // Trajectory scores can come from workflow scorer configs too\n    if ('trajectory' in scorerResults && scorerResults.trajectory) {\n      for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n        if (!this.trajectoryScores[scorerName]) {\n          this.trajectoryScores[scorerName] = [];\n        }\n        this.trajectoryScores[scorerName].push((result as { score: number }).score);\n      }\n    }\n  }\n\n  private addAgentScores(scorerResults: Record<string, any>) {\n    if ('agent' in scorerResults && scorerResults.agent) {\n      for (const [scorerName, result] of Object.entries(scorerResults.agent)) {\n        if (!this.agentScores[scorerName]) {\n          this.agentScores[scorerName] = [];\n        }\n        this.agentScores[scorerName].push((result as { score: number }).score);\n      }\n    }\n\n    if ('trajectory' in scorerResults && scorerResults.trajectory) {\n      for (const [scorerName, result] of Object.entries(scorerResults.trajectory)) {\n        if (!this.trajectoryScores[scorerName]) {\n          this.trajectoryScores[scorerName] = [];\n        }\n        this.trajectoryScores[scorerName].push((result as { score: number }).score);\n      }\n    }\n  }\n\n  addStepScores(stepScorerResults: Record<string, Record<string, any>>) {\n    for (const [stepId, stepResults] of Object.entries(stepScorerResults)) {\n      if (!this.stepScores[stepId]) {\n        this.stepScores[stepId] = {};\n      }\n      for (const [scorerName, result] of Object.entries(stepResults)) {\n        if (!this.stepScores[stepId][scorerName]) {\n          this.stepScores[stepId][scorerName] = [];\n        }\n        this.stepScores[stepId][scorerName].push((result as { score: number }).score);\n      }\n    }\n  }\n\n  getAverageScores(): Record<string, any> {\n    const result: Record<string, any> = {};\n\n    for (const [scorerName, scoreArray] of Object.entries(this.flatScores)) {\n      result[scorerName] = this.getAverageScore(scoreArray);\n    }\n\n    // Add workflow scores\n    if (Object.keys(this.workflowScores).length > 0) {\n      result.workflow = {};\n      for (const [scorerName, scoreArray] of Object.entries(this.workflowScores)) {\n        result.workflow[scorerName] = this.getAverageScore(scoreArray);\n      }\n    }\n\n    if (Object.keys(this.stepScores).length > 0) {\n      result.steps = {};\n      for (const [stepId, stepScorers] of Object.entries(this.stepScores)) {\n        result.steps[stepId] = {};\n        for (const [scorerName, scoreArray] of Object.entries(stepScorers)) {\n          result.steps[stepId][scorerName] = this.getAverageScore(scoreArray);\n        }\n      }\n    }\n\n    // Add agent scores\n    if (Object.keys(this.agentScores).length > 0) {\n      result.agent = {};\n      for (const [scorerName, scoreArray] of Object.entries(this.agentScores)) {\n        result.agent[scorerName] = this.getAverageScore(scoreArray);\n      }\n    }\n\n    // Add trajectory scores\n    if (Object.keys(this.trajectoryScores).length > 0) {\n      result.trajectory = {};\n      for (const [scorerName, scoreArray] of Object.entries(this.trajectoryScores)) {\n        result.trajectory[scorerName] = this.getAverageScore(scoreArray);\n      }\n    }\n\n    return result;\n  }\n\n  private getAverageScore(scoreArray: number[]): number {\n    if (scoreArray.length > 0) {\n      return scoreArray.reduce((a, b) => a + b, 0) / scoreArray.length;\n    } else {\n      return 0;\n    }\n  }\n}\n","import type { CoreMessage } from '@internal/ai-sdk-v4';\nimport type { Agent, AgentExecutionOptions, AiMessageType, UIMessageWithMetadata } from '../../agent';\nimport { isSupportedLanguageModel } from '../../agent';\nimport { MastraError } from '../../error';\nimport { validateAndSaveScore } from '../../mastra/hooks';\nimport type { ObservabilityContext } from '../../observability';\nimport { EntityType, resolveObservabilityContext } from '../../observability';\nimport type { RequestContext } from '../../request-context';\nimport type { MastraCompositeStore } from '../../storage';\nimport { Workflow } from '../../workflows';\nimport type { AnyWorkflow, WorkflowResult, WorkflowRunStartOptions, StepResult } from '../../workflows';\nimport type { MastraScorer } from '../base';\nimport { extractTrajectory, extractTrajectoryFromTrace, extractWorkflowTrajectory } from '../types';\nimport { ScoreAccumulator } from './scorerAccumulator';\n\ntype WorkflowRunOptions = WorkflowRunStartOptions & {\n  initialState?: any;\n};\n\ntype RunEvalsDataItem<TTarget = unknown> = {\n  input: TTarget extends Workflow<any, any>\n    ? any\n    : TTarget extends Agent\n      ? string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[]\n      : unknown;\n  groundTruth?: any;\n  expectedTrajectory?: any;\n  requestContext?: RequestContext;\n  startOptions?: WorkflowRunOptions;\n} & Partial<ObservabilityContext>;\n\nexport type WorkflowScorerConfig = {\n  /** Scorers that evaluate the overall workflow input/output */\n  workflow?: MastraScorer<any, any, any, any>[];\n  /** Scorers that evaluate individual workflow steps by step ID */\n  steps?: Record<string, MastraScorer<any, any, any, any>[]>;\n  /** Scorers that evaluate the workflow's step execution trajectory */\n  trajectory?: MastraScorer<any, any, any, any>[];\n};\n\nexport type AgentScorerConfig = {\n  /** Scorers that evaluate the full agent input/output */\n  agent?: MastraScorer<any, any, any, any>[];\n  /** Scorers that evaluate the agent's tool call trajectory */\n  trajectory?: MastraScorer<any, any, any, any>[];\n};\n\ntype RunEvalsResult = {\n  scores: Record<string, any>;\n  summary: {\n    totalItems: number;\n  };\n};\n\n// Agent with scorers array\nexport function runEvals<TAgent extends Agent>(config: {\n  data: RunEvalsDataItem<TAgent>[];\n  scorers: MastraScorer<any, any, any, any>[];\n  target: TAgent;\n  targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n  onItemComplete?: (params: {\n    item: RunEvalsDataItem<TAgent>;\n    targetResult: Awaited<ReturnType<Agent['generate']>>;\n    scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n  }) => void | Promise<void>;\n  concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with scorers array\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n  data: RunEvalsDataItem<TWorkflow>[];\n  scorers: MastraScorer<any, any, any, any>[];\n  target: TWorkflow;\n  targetOptions?: WorkflowRunOptions;\n  onItemComplete?: (params: {\n    item: RunEvalsDataItem<TWorkflow>;\n    targetResult: WorkflowResult<any, any, any, any>;\n    scorerResults: Record<string, any>; // Flat structure: { scorerName: result }\n  }) => void | Promise<void>;\n  concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Workflow with workflow configuration\nexport function runEvals<TWorkflow extends AnyWorkflow>(config: {\n  data: RunEvalsDataItem<TWorkflow>[];\n  scorers: WorkflowScorerConfig;\n  target: TWorkflow;\n  targetOptions?: WorkflowRunOptions;\n  onItemComplete?: (params: {\n    item: RunEvalsDataItem<TWorkflow>;\n    targetResult: WorkflowResult<any, any, any, any>;\n    scorerResults: {\n      workflow?: Record<string, any>;\n      steps?: Record<string, Record<string, any>>;\n      trajectory?: Record<string, any>;\n    };\n  }) => void | Promise<void>;\n  concurrency?: number;\n}): Promise<RunEvalsResult>;\n\n// Agent with agent scorer configuration (agent-level + trajectory scorers)\nexport function runEvals<TAgent extends Agent>(config: {\n  data: RunEvalsDataItem<TAgent>[];\n  scorers: AgentScorerConfig;\n  target: TAgent;\n  targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>;\n  onItemComplete?: (params: {\n    item: RunEvalsDataItem<TAgent>;\n    targetResult: Awaited<ReturnType<Agent['generate']>>;\n    scorerResults: {\n      agent?: Record<string, any>;\n      trajectory?: Record<string, any>;\n    };\n  }) => void | Promise<void>;\n  concurrency?: number;\n}): Promise<RunEvalsResult>;\n\nexport async function runEvals(config: {\n  data: RunEvalsDataItem<any>[];\n  scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig;\n  target: Agent | Workflow;\n  targetOptions?:\n    | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n    | WorkflowRunOptions;\n  onItemComplete?: (params: {\n    item: RunEvalsDataItem<any>;\n    targetResult: any;\n    scorerResults: any;\n  }) => void | Promise<void>;\n  concurrency?: number;\n}): Promise<RunEvalsResult> {\n  const { data, scorers, target, targetOptions, onItemComplete, concurrency = 1 } = config;\n\n  validateEvalsInputs(data, scorers, target);\n\n  let totalItems = 0;\n  const scoreAccumulator = new ScoreAccumulator();\n\n  // Get storage from target's Mastra instance if available\n  // Agent uses getMastraInstance(), Workflow uses .mastra getter\n  const mastra = (target as any).getMastraInstance?.() || (target as any).mastra;\n  const storage = mastra?.getStorage();\n\n  const pMap = (await import('p-map')).default;\n  await pMap(\n    data,\n    async (item: RunEvalsDataItem<any>) => {\n      const targetResult = await executeTarget(target, item, targetOptions);\n      const scorerResults = await runScorers(scorers, targetResult, item, storage);\n      scoreAccumulator.addScores(scorerResults);\n\n      // Save scores to storage if available\n      if (storage) {\n        await saveScoresToStorage({\n          storage,\n          scorerResults,\n          target,\n          item,\n          mastra,\n        });\n      }\n\n      if (onItemComplete) {\n        await onItemComplete({\n          item,\n          targetResult: targetResult as any,\n          scorerResults: scorerResults as any,\n        });\n      }\n\n      totalItems++;\n    },\n    { concurrency },\n  );\n\n  return {\n    scores: scoreAccumulator.getAverageScores(),\n    summary: {\n      totalItems,\n    },\n  };\n}\n\nfunction isWorkflow(target: Agent | Workflow): target is Workflow {\n  return target instanceof Workflow;\n}\n\nfunction isWorkflowScorerConfig(scorers: any): scorers is WorkflowScorerConfig {\n  return (\n    typeof scorers === 'object' &&\n    !Array.isArray(scorers) &&\n    ('workflow' in scorers || 'steps' in scorers || ('trajectory' in scorers && !('agent' in scorers)))\n  );\n}\n\nfunction isAgentScorerConfig(scorers: any): scorers is AgentScorerConfig {\n  return (\n    typeof scorers === 'object' &&\n    !Array.isArray(scorers) &&\n    ('agent' in scorers || ('trajectory' in scorers && !('workflow' in scorers) && !('steps' in scorers)))\n  );\n}\n\nfunction validateEvalsInputs(\n  data: RunEvalsDataItem<any>[],\n  scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n  target: Agent | Workflow,\n): void {\n  if (data.length === 0) {\n    throw new MastraError({\n      domain: 'SCORER',\n      id: 'RUN_EXPERIMENT_FAILED_NO_DATA_PROVIDED',\n      category: 'USER',\n      text: 'Failed to run experiment: Data array is empty',\n    });\n  }\n\n  for (let i = 0; i < data.length; i++) {\n    const item = data[i];\n    if (!item || typeof item !== 'object' || !('input' in item)) {\n      throw new MastraError({\n        domain: 'SCORER',\n        id: 'INVALID_DATA_ITEM',\n        category: 'USER',\n        text: `Invalid data item at index ${i}: must have 'input' properties`,\n      });\n    }\n  }\n\n  // Validate scorers\n  if (Array.isArray(scorers)) {\n    if (scorers.length === 0) {\n      throw new MastraError({\n        domain: 'SCORER',\n        id: 'NO_SCORERS_PROVIDED',\n        category: 'USER',\n        text: 'At least one scorer must be provided',\n      });\n    }\n  } else if (isWorkflow(target) && isWorkflowScorerConfig(scorers)) {\n    const hasScorers =\n      (scorers.workflow && scorers.workflow.length > 0) ||\n      (scorers.steps && Object.keys(scorers.steps).length > 0) ||\n      (scorers.trajectory && scorers.trajectory.length > 0);\n\n    if (!hasScorers) {\n      throw new MastraError({\n        domain: 'SCORER',\n        id: 'NO_SCORERS_PROVIDED',\n        category: 'USER',\n        text: 'At least one workflow, step, or trajectory scorer must be provided',\n      });\n    }\n  } else if (!isWorkflow(target) && isAgentScorerConfig(scorers)) {\n    const hasScorers =\n      (scorers.agent && scorers.agent.length > 0) || (scorers.trajectory && scorers.trajectory.length > 0);\n\n    if (!hasScorers) {\n      throw new MastraError({\n        domain: 'SCORER',\n        id: 'NO_SCORERS_PROVIDED',\n        category: 'USER',\n        text: 'At least one agent or trajectory scorer must be provided',\n      });\n    }\n  } else if (!isWorkflow(target) && !Array.isArray(scorers) && !isAgentScorerConfig(scorers)) {\n    throw new MastraError({\n      domain: 'SCORER',\n      id: 'INVALID_AGENT_SCORERS',\n      category: 'USER',\n      text: 'Agent scorers must be an array of scorers or an AgentScorerConfig',\n    });\n  }\n}\n\nasync function executeTarget(\n  target: Agent | Workflow,\n  item: RunEvalsDataItem<any>,\n  targetOptions?:\n    | Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>\n    | WorkflowRunOptions,\n) {\n  try {\n    if (isWorkflow(target)) {\n      return await executeWorkflow(target, item, targetOptions as WorkflowRunOptions);\n    } else {\n      return await executeAgent(\n        target,\n        item,\n        targetOptions as Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n      );\n    }\n  } catch (error) {\n    throw new MastraError(\n      {\n        domain: 'SCORER',\n        id: 'RUN_EXPERIMENT_TARGET_FAILED_TO_GENERATE_RESULT',\n        category: 'USER',\n        text: 'Failed to run experiment: Error generating result from target',\n        details: {\n          item: JSON.stringify(item),\n        },\n      },\n      error,\n    );\n  }\n}\n\nasync function executeWorkflow(target: Workflow, item: RunEvalsDataItem<any>, targetOptions?: WorkflowRunOptions) {\n  const observabilityContext = resolveObservabilityContext(item);\n  const run = await target.createRun({ disableScorers: true });\n  const workflowResult = await run.start({\n    ...targetOptions,\n    ...item.startOptions,\n    inputData: item.input,\n    requestContext: item.requestContext,\n    ...observabilityContext,\n  });\n\n  return {\n    traceId: workflowResult.traceId,\n    spanId: workflowResult.spanId,\n    entityType: EntityType.WORKFLOW_RUN,\n    scoringData: {\n      input: item.input,\n      output: workflowResult.status === 'success' ? workflowResult.result : undefined,\n      stepResults: workflowResult.steps as Record<string, StepResult<any, any, any, any>>,\n      stepExecutionPath: workflowResult.stepExecutionPath,\n    },\n  };\n}\n\nasync function executeAgent(\n  agent: Agent,\n  item: RunEvalsDataItem<any>,\n  targetOptions?: Omit<AgentExecutionOptions<any>, 'scorers' | 'returnScorerData' | 'requestContext'>,\n) {\n  const observabilityContext = resolveObservabilityContext(item);\n  const model = await agent.getModel();\n  if (isSupportedLanguageModel(model)) {\n    const { structuredOutput, ...restOptions } = targetOptions ?? {};\n    const baseOptions = {\n      ...restOptions,\n      ...observabilityContext,\n      scorers: {},\n      returnScorerData: true,\n      requestContext: item.requestContext,\n    };\n    const result = structuredOutput\n      ? await agent.generate(item.input, { ...baseOptions, structuredOutput })\n      : await agent.generate(item.input, baseOptions);\n\n    return {\n      ...result,\n      entityType: EntityType.AGENT,\n    };\n  } else {\n    const result = await agent.generateLegacy(item.input, {\n      scorers: {},\n      returnScorerData: true,\n      requestContext: item.requestContext,\n      ...observabilityContext,\n    });\n    return {\n      ...result,\n      entityType: EntityType.AGENT,\n    };\n  }\n}\n\n/**\n * Attempts to extract a hierarchical trajectory from observability traces.\n * Falls back to undefined if storage is not available or trace cannot be fetched.\n */\nasync function extractTrajectoryFromTraceStore(\n  storage: MastraCompositeStore | undefined,\n  traceId: string | undefined,\n  spanId: string | undefined,\n): Promise<ReturnType<typeof extractTrajectoryFromTrace> | undefined> {\n  if (!storage || !traceId) return undefined;\n\n  try {\n    const observabilityStore = await storage.getStore('observability');\n    if (!observabilityStore) return undefined;\n\n    const trace = await observabilityStore.getTrace({ traceId });\n    if (!trace?.spans?.length) return undefined;\n\n    return extractTrajectoryFromTrace(trace.spans, spanId);\n  } catch {\n    // Trace-based extraction is best-effort; fall back to existing extraction\n    return undefined;\n  }\n}\n\n//TODO: Ideally this would run on trace data instead of targetResult data\nasync function runScorers(\n  scorers: MastraScorer<any, any, any, any>[] | WorkflowScorerConfig | AgentScorerConfig,\n  targetResult: any,\n  item: RunEvalsDataItem<any>,\n  storage?: MastraCompositeStore,\n): Promise<Record<string, any>> {\n  const scorerResults: Record<string, any> = {};\n  const targetTraceId = targetResult.traceId;\n  const targetEntityType: EntityType = targetResult.entityType;\n\n  if (Array.isArray(scorers)) {\n    for (const scorer of scorers) {\n      try {\n        const score = await scorer.run({\n          input: targetResult.scoringData?.input,\n          output: targetResult.scoringData?.output,\n          groundTruth: item.groundTruth,\n          requestContext: item.requestContext,\n          scoreSource: 'experiment',\n          targetScope: 'span',\n          targetEntityType,\n          targetTraceId,\n          targetSpanId: targetResult.spanId,\n        });\n\n        scorerResults[scorer.id] = score;\n      } catch (error) {\n        throw new MastraError(\n          {\n            domain: 'SCORER',\n            id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n            category: 'USER',\n            text: `Failed to run experiment: Error running scorer ${scorer.id}`,\n            details: {\n              scorerId: scorer.id,\n              item: JSON.stringify(item),\n            },\n          },\n          error,\n        );\n      }\n    }\n  } else if (isAgentScorerConfig(scorers)) {\n    // Handle agent scorer config (agent-level + trajectory scorers)\n    if (scorers.agent) {\n      const agentScorerResults: Record<string, any> = {};\n      for (const scorer of scorers.agent) {\n        try {\n          const score = await scorer.run({\n            input: targetResult.scoringData?.input,\n            output: targetResult.scoringData?.output,\n            groundTruth: item.groundTruth,\n            requestContext: item.requestContext,\n            scoreSource: 'experiment',\n            targetScope: 'span',\n            targetEntityType,\n            targetTraceId,\n            targetSpanId: targetResult.spanId,\n          });\n          agentScorerResults[scorer.id] = score;\n        } catch (error) {\n          throw new MastraError(\n            {\n              domain: 'SCORER',\n              id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_RESULT',\n              category: 'USER',\n              text: `Failed to run experiment: Error running agent scorer ${scorer.id}`,\n              details: {\n                scorerId: scorer.id,\n                item: JSON.stringify(item),\n              },\n            },\n            error,\n          );\n        }\n      }\n      if (Object.keys(agentScorerResults).length > 0) {\n        scorerResults.agent = agentScorerResults;\n      }\n    }\n\n    if (scorers.trajectory) {\n      const trajectoryScorerResults: Record<string, any> = {};\n\n      // Prefer hierarchical trace-based extraction when storage + traceId are available\n      const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n      // Fall back to flat extraction from MastraDBMessage[] tool invocations\n      const rawOutput = targetResult.scoringData?.output;\n      const trajectory = traceTrajectory ?? (rawOutput ? extractTrajectory(rawOutput) : { steps: [] });\n\n      for (const scorer of scorers.trajectory) {\n        try {\n          const score = await scorer.run({\n            input: targetResult.scoringData?.input,\n            output: trajectory,\n            groundTruth: item.groundTruth,\n            expectedTrajectory: item.expectedTrajectory,\n            requestContext: item.requestContext,\n            scoreSource: 'experiment',\n            targetScope: 'trajectory',\n            targetEntityType,\n            targetTraceId,\n            targetSpanId: targetResult.spanId,\n          });\n          trajectoryScorerResults[scorer.id] = score;\n        } catch (error) {\n          throw new MastraError(\n            {\n              domain: 'SCORER',\n              id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_TRAJECTORY',\n              category: 'USER',\n              text: `Failed to run experiment: Error running trajectory scorer ${scorer.id}`,\n              details: {\n                scorerId: scorer.id,\n                item: JSON.stringify(item),\n              },\n            },\n            error,\n          );\n        }\n      }\n      if (Object.keys(trajectoryScorerResults).length > 0) {\n        scorerResults.trajectory = trajectoryScorerResults;\n      }\n    }\n  } else {\n    // Handle workflow scorer config\n    if (scorers.workflow) {\n      const workflowScorerResults: Record<string, any> = {};\n      for (const scorer of scorers.workflow) {\n        const score = await scorer.run({\n          input: targetResult.scoringData.input,\n          output: targetResult.scoringData.output,\n          groundTruth: item.groundTruth,\n          requestContext: item.requestContext,\n          scoreSource: 'experiment',\n          targetScope: 'span',\n          targetEntityType,\n          targetTraceId,\n          targetSpanId: targetResult.spanId,\n        });\n        workflowScorerResults[scorer.id] = score;\n      }\n      if (Object.keys(workflowScorerResults).length > 0) {\n        scorerResults.workflow = workflowScorerResults;\n      }\n    }\n\n    if (scorers.steps) {\n      const stepScorerResults: Record<string, any> = {};\n      for (const [stepId, stepScorers] of Object.entries(scorers.steps)) {\n        const stepResult = targetResult.scoringData.stepResults?.[stepId];\n        // TODO : Ideally this would run on the trace.WORKFLOW_STEP span...\n        // then we could directly add the score to that span\n        if (stepResult?.status === 'success' && stepResult.output !== undefined) {\n          const stepResults: Record<string, any> = {};\n          for (const scorer of stepScorers) {\n            try {\n              const score = await scorer.run({\n                input: stepResult.payload !== undefined ? stepResult.payload : targetResult.scoringData.input,\n                output: stepResult.output,\n                groundTruth: item.groundTruth,\n                requestContext: item.requestContext,\n                scoreSource: 'experiment',\n                targetScope: 'span',\n                targetEntityType: EntityType.WORKFLOW_STEP,\n                targetTraceId,\n              });\n              stepResults[scorer.id] = score;\n            } catch (error) {\n              throw new MastraError(\n                {\n                  domain: 'SCORER',\n                  id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_STEP_RESULT',\n                  category: 'USER',\n                  text: `Failed to run experiment: Error running scorer ${scorer.id} on step ${stepId}`,\n                  details: {\n                    scorerId: scorer.id,\n                    stepId,\n                  },\n                },\n                error,\n              );\n            }\n          }\n          if (Object.keys(stepResults).length > 0) {\n            stepScorerResults[stepId] = stepResults;\n          }\n        }\n      }\n      if (Object.keys(stepScorerResults).length > 0) {\n        scorerResults.steps = stepScorerResults;\n      }\n    }\n\n    if (scorers.trajectory) {\n      const trajectoryScorerResults: Record<string, any> = {};\n\n      // Prefer hierarchical trace-based extraction when storage + traceId are available\n      const traceTrajectory = await extractTrajectoryFromTraceStore(storage, targetResult.traceId, targetResult.spanId);\n\n      // Fall back to flat extraction from step results\n      let trajectory = traceTrajectory;\n      if (!trajectory) {\n        const stepResults = targetResult.scoringData?.stepResults;\n        const stepExecutionPath = targetResult.scoringData?.stepExecutionPath;\n        trajectory = stepResults ? extractWorkflowTrajectory(stepResults, stepExecutionPath) : { steps: [] };\n      }\n\n      for (const scorer of scorers.trajectory) {\n        try {\n          const score = await scorer.run({\n            input: targetResult.scoringData?.input,\n            output: trajectory,\n            groundTruth: item.groundTruth,\n            expectedTrajectory: item.expectedTrajectory,\n            requestContext: item.requestContext,\n            scoreSource: 'experiment',\n            targetScope: 'trajectory',\n            targetEntityType: EntityType.TRAJECTORY,\n            targetTraceId,\n            targetSpanId: targetResult.spanId,\n          });\n          trajectoryScorerResults[scorer.id] = score;\n        } catch (error) {\n          throw new MastraError(\n            {\n              domain: 'SCORER',\n              id: 'RUN_EXPERIMENT_SCORER_FAILED_TO_SCORE_WORKFLOW_TRAJECTORY',\n              category: 'USER',\n              text: `Failed to run experiment: Error running workflow trajectory scorer ${scorer.id}`,\n              details: {\n                scorerId: scorer.id,\n                item: JSON.stringify(item),\n              },\n            },\n            error,\n          );\n        }\n      }\n      if (Object.keys(trajectoryScorerResults).length > 0) {\n        scorerResults.trajectory = trajectoryScorerResults;\n      }\n    }\n  }\n\n  return scorerResults;\n}\n\n/**\n * Saves scorer results to storage when running evaluations.\n * This makes scores visible in Studio's observability section.\n *\n * @deprecated Legacy scores-store path. New score emission should use `mastra.observability.addScore().\n */\nasync function saveScoresToStorage({\n  storage,\n  scorerResults,\n  target,\n  item,\n  mastra,\n}: {\n  storage: any;\n  scorerResults: Record<string, any>;\n  target: Agent | Workflow;\n  item: RunEvalsDataItem<any>;\n  mastra: any;\n}): Promise<void> {\n  const entityId = target.id;\n  const entityType = isWorkflow(target) ? 'WORKFLOW' : 'AGENT';\n\n  const isStructuredWorkflowResult = 'workflow' in scorerResults || 'steps' in scorerResults;\n  const isStructuredAgentResult = 'agent' in scorerResults || 'trajectory' in scorerResults;\n\n  if (!isStructuredWorkflowResult && !isStructuredAgentResult) {\n    // Handle flat scorer results (simple array of scorers for agents or workflows)\n    for (const [scorerId, scoreResult] of Object.entries(scorerResults)) {\n      if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n        await saveSingleScore({\n          storage,\n          scoreResult,\n          scorerId,\n          entityId,\n          entityType,\n          mastra,\n          target,\n          item,\n        });\n      }\n    }\n  } else if (isStructuredAgentResult) {\n    // Handle agent scorer config with agent-level and trajectory scorers\n    if (scorerResults.agent) {\n      for (const [scorerId, scoreResult] of Object.entries(scorerResults.agent)) {\n        if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n          await saveSingleScore({\n            storage,\n            scoreResult,\n            scorerId,\n            entityId,\n            entityType: 'AGENT',\n            mastra,\n            target,\n            item,\n          });\n        }\n      }\n    }\n\n    if (scorerResults.trajectory) {\n      for (const [scorerId, scoreResult] of Object.entries(scorerResults.trajectory)) {\n        if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n          await saveSingleScore({\n            storage,\n            scoreResult,\n            scorerId,\n            entityId,\n            entityType: 'TRAJECTORY',\n            mastra,\n            target,\n            item,\n          });\n        }\n      }\n    }\n  } else {\n    // Handle workflow scorer config with workflow and step scorers\n    if (scorerResults.workflow) {\n      for (const [scorerId, scoreResult] of Object.entries(scorerResults.workflow)) {\n        if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n          await saveSingleScore({\n            storage,\n            scoreResult,\n            scorerId,\n            entityId,\n            entityType: 'WORKFLOW',\n            mastra,\n            target,\n            item,\n          });\n        }\n      }\n    }\n\n    if (scorerResults.steps) {\n      for (const [stepId, stepScorers] of Object.entries(scorerResults.steps)) {\n        for (const [scorerId, scoreResult] of Object.entries(stepScorers as Record<string, any>)) {\n          if (scoreResult && typeof scoreResult === 'object' && 'score' in scoreResult) {\n            await saveSingleScore({\n              storage,\n              scoreResult,\n              scorerId,\n              entityId: stepId,\n              entityType: 'STEP',\n              mastra,\n              target,\n              item,\n            });\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * Saves a single scorer result to storage\n */\nasync function saveSingleScore({\n  storage,\n  scoreResult,\n  scorerId,\n  entityId,\n  entityType,\n  mastra,\n  target,\n  item,\n}: {\n  storage: any;\n  scoreResult: any;\n  scorerId: string;\n  entityId: string;\n  entityType: string;\n  mastra: any;\n  target: Agent | Workflow;\n  item: RunEvalsDataItem<any>;\n}): Promise<void> {\n  try {\n    // Get scorer information\n    let scorer = mastra?.getScorerById?.(scorerId);\n\n    if (!scorer) {\n      // Try to get from target's scorers\n      const targetScorers = await (target as any).listScorers?.();\n      if (targetScorers) {\n        for (const [_, scorerEntry] of Object.entries(targetScorers)) {\n          if ((scorerEntry as any).scorer?.id === scorerId) {\n            scorer = (scorerEntry as any).scorer;\n            break;\n          }\n        }\n      }\n    }\n\n    // Extract tracing context if available\n    let traceId: string | undefined;\n    let spanId: string | undefined;\n    if (item.tracingContext?.currentSpan && item.tracingContext.currentSpan.isValid) {\n      spanId = item.tracingContext.currentSpan.id;\n      traceId = item.tracingContext.currentSpan.traceId;\n    }\n\n    // Build additional context with groundTruth if available\n    const additionalContext: Record<string, any> = {};\n    if (item.groundTruth !== undefined) {\n      additionalContext.groundTruth = item.groundTruth;\n    }\n\n    const payload = {\n      ...scoreResult,\n      scorerId,\n      entityId,\n      entityType,\n      source: 'TEST' as const,\n      scorer: {\n        id: scorer?.id || scorerId,\n        name: scorer?.name || scorerId,\n        description: scorer?.description || '',\n        type: scorer?.type || 'unknown',\n        ...(scorer ? { hasJudge: !!scorer.judge } : {}),\n      },\n      entity: {\n        id: target.id,\n        name: (target as any).name || target.id,\n      },\n      // Include requestContext from item\n      requestContext: item.requestContext ? Object.fromEntries(item.requestContext.entries()) : undefined,\n      // Include additionalContext with groundTruth\n      additionalContext: Object.keys(additionalContext).length > 0 ? additionalContext : undefined,\n      // Include tracing information\n      traceId,\n      spanId,\n    };\n\n    // Legacy score-store emission. This path is being deprecated.\n    await validateAndSaveScore(storage, payload);\n  } catch (error) {\n    // Log error but don't fail the evaluation\n    mastra?.getLogger?.()?.warn?.(`Failed to save score for scorer ${scorerId}:`, error);\n  }\n}\n"]}