{"version":3,"sources":["../../_internal-core/src/storage/domains/shared.ts","../../_internal-core/src/storage/domains/observability/logs.ts","../../_internal-core/src/storage/domains/observability/scores.ts","../../_internal-core/src/storage/domains/observability/feedback.ts","../../_internal-core/src/storage/domains/observability/metrics.ts","../../_internal-core/src/storage/domains/observability/discovery.ts","../src/observability/types/tracing.ts"],"names":["EntityType","z","SpanType","InternalSpans","TracingEventType"],"mappings":"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","file":"chunk-FG2B2AIP.cjs","sourcesContent":["import { z } from 'zod/v4';\n\n/** Types of entities that can produce observability spans. */\nexport enum EntityType {\n  /** Agent/Model execution */\n  AGENT = 'agent',\n  /** Scorer definition/execution */\n  SCORER = 'scorer',\n  /** Trajectory evaluation target */\n  TRAJECTORY = 'trajectory',\n  /** Input Processor */\n  INPUT_PROCESSOR = 'input_processor',\n  /** Input Step Processor */\n  INPUT_STEP_PROCESSOR = 'input_step_processor',\n  /** Output Processor */\n  OUTPUT_PROCESSOR = 'output_processor',\n  /** Output Step Processor */\n  OUTPUT_STEP_PROCESSOR = 'output_step_processor',\n  /** Workflow Step */\n  WORKFLOW_STEP = 'workflow_step',\n  /** Tool */\n  TOOL = 'tool',\n  /** Workflow */\n  WORKFLOW_RUN = 'workflow_run',\n  /** Memory */\n  MEMORY = 'memory',\n}\n\n/**\n * Common DB fields\n */\nexport const createdAtField = z.date().describe('Database record creation time');\n\nexport const updatedAtField = z.date().describe('Database record last update time');\n\nexport const dbTimestamps = {\n  createdAt: createdAtField,\n  updatedAt: updatedAtField.nullable(),\n} as const satisfies z.ZodRawShape;\n\n/**\n * Pagination arguments for list queries (page and perPage only)\n * Uses z.coerce to handle string → number conversion from query params\n */\nexport const paginationArgsSchema = z\n  .object({\n    page: z.coerce.number().int().min(0).optional().default(0).describe('Zero-indexed page number'),\n    perPage: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Number of items per page'),\n  })\n  .describe('Pagination options for list queries');\n\n/** Input type for pagination arguments (page and perPage). */\nexport type PaginationArgs = z.input<typeof paginationArgsSchema>;\n\n/**\n * Pagination response info\n * Used across all paginated endpoints\n */\nexport const paginationInfoSchema = z.object({\n  total: z.number().describe('Total number of items available'),\n  page: z.number().describe('Current page'),\n  perPage: z\n    .union([z.number(), z.literal(false)])\n    .describe('Number of items per page, or false if pagination is disabled'),\n  hasMore: z.boolean().describe('True if more pages are available'),\n});\n\n/**\n * Date range for filtering by time\n * Uses z.coerce to handle ISO string → Date conversion from query params\n */\nexport const dateRangeSchema = z\n  .object({\n    start: z.coerce.date().optional().describe('Start of date range (inclusive by default)'),\n    end: z.coerce.date().optional().describe('End of date range (inclusive by default)'),\n    startExclusive: z\n      .boolean()\n      .optional()\n      .describe('When true, excludes the start date from results (uses > instead of >=)'),\n    endExclusive: z\n      .boolean()\n      .optional()\n      .describe('When true, excludes the end date from results (uses < instead of <=)'),\n  })\n  .describe('Date range filter for timestamps');\n\n/** Date range with optional inclusive/exclusive boundaries. */\nexport type DateRange = z.input<typeof dateRangeSchema>;\n\nexport const sortDirectionSchema = z.enum(['ASC', 'DESC']).describe(\"Sort direction: 'ASC' | 'DESC'\");\n\n/** Aggregation type schema shared across OLAP-style observability queries. */\nexport const aggregationTypeSchema = z\n  .enum(['sum', 'avg', 'min', 'max', 'count', 'last'])\n  .describe('Aggregation function');\nexport type AggregationType = z.infer<typeof aggregationTypeSchema>;\n\n/** Aggregation interval schema shared across OLAP-style observability queries. */\nexport const aggregationIntervalSchema = z.enum(['1m', '5m', '15m', '1h', '1d']).describe('Time bucket interval');\nexport type AggregationInterval = z.infer<typeof aggregationIntervalSchema>;\n\n/** Compare period for aggregate queries with period-over-period comparison. */\nexport const comparePeriodSchema = z\n  .enum(['previous_period', 'previous_day', 'previous_week'])\n  .describe('Comparison period for aggregate queries');\nexport type ComparePeriod = z.infer<typeof comparePeriodSchema>;\n\n/** Shared groupBy schema for OLAP-style breakdown and time-series queries. */\nexport const groupBySchema = z.array(z.string()).min(1).describe('Fields to group by');\nexport type GroupBy = z.infer<typeof groupBySchema>;\n\n/** Shared percentiles schema for percentile queries. */\nexport const percentilesSchema = z.array(z.number().min(0).max(1)).min(1).describe('Percentile values (0-1)');\nexport type Percentiles = z.infer<typeof percentilesSchema>;\n\n/** Shared fields for aggregate OLAP responses across observability signals. */\nexport const aggregateResponseFields = {\n  value: z.number().nullable().describe('Aggregated value'),\n  previousValue: z.number().nullable().optional().describe('Value from comparison period'),\n  changePercent: z.number().nullable().optional().describe('Percentage change from comparison period'),\n} as const;\n\n/** Shared field for OLAP breakdown dimension values. */\nexport const dimensionsField = z.record(z.string(), z.string().nullable()).describe('Dimension values for this group');\n\n/** Shared field for non-null OLAP aggregated values. */\nexport const aggregatedValueField = z.number().describe('Aggregated value');\n\n/** Shared field for OLAP bucket timestamps. */\nexport const bucketTimestampField = z.date().describe('Bucket timestamp');\n\n/** Shared field for percentile identifiers in OLAP responses. */\nexport const percentileField = z.number().describe('Percentile value');\n\n/** Shared field for percentile values within a time bucket. */\nexport const percentileBucketValueField = z.number().describe('Percentile value at this bucket');\n\nexport const entityTypeField = z\n  .nativeEnum(EntityType)\n  .describe(`Entity type (e.g., 'agent' | 'processor' | 'tool' | 'workflow')`);\n\nexport const entityIdField = z.string().describe('ID of the entity (e.g., \"weatherAgent\", \"orderWorkflow\")');\n\nexport const entityNameField = z.string().describe('Name of the entity');\n\nexport const userIdField = z.string().describe('Human end-user who triggered execution');\n\nexport const organizationIdField = z.string().describe('Multi-tenant organization/account');\n\nexport const resourceIdField = z.string().describe('Broader resource context (Mastra memory compatibility)');\n\nexport const runIdField = z.string().describe('Unique execution run identifier');\n\nexport const sessionIdField = z.string().describe('Session identifier for grouping traces');\n\nexport const threadIdField = z.string().describe('Conversation thread identifier');\n\nexport const requestIdField = z.string().describe('HTTP request ID for log correlation');\n\nexport const environmentField = z.string().describe(`Environment (e.g., \"production\" | \"staging\" | \"development\")`);\n\nexport const sourceField = z.string().describe(`Source of execution (e.g., \"local\" | \"cloud\" | \"ci\")`);\nexport const executionSourceField = z.string().describe(`Source of execution (e.g., \"local\" | \"cloud\" | \"ci\")`);\n\nexport const serviceNameField = z.string().describe('Name of the service');\n\n// Parent entity hierarchy fields\nexport const parentEntityTypeField = z.nativeEnum(EntityType).describe('Entity type of the parent entity');\nexport const parentEntityIdField = z.string().describe('ID of the parent entity');\nexport const parentEntityNameField = z.string().describe('Name of the parent entity');\n\n// Root entity hierarchy fields\nexport const rootEntityTypeField = z.nativeEnum(EntityType).describe('Entity type of the root entity');\nexport const rootEntityIdField = z.string().describe('ID of the root entity');\nexport const rootEntityNameField = z.string().describe('Name of the root entity');\n\n// Entity versioning\nexport const entityVersionIdField = z\n  .string()\n  .describe('Version ID of the entity that produced this signal (e.g., agent version, workflow version)');\nexport const parentEntityVersionIdField = z\n  .string()\n  .describe('Version ID of the parent entity that produced this signal');\nexport const rootEntityVersionIdField = z.string().describe('Version ID of the root entity that produced this signal');\n\n// Experimentation\nexport const experimentIdField = z.string().describe('Experiment or eval run identifier');\n\n// ============================================================================\n// Common observability fields (shared across tracing, metrics, logs)\n// ============================================================================\n\nexport const scopeField = z\n  .record(z.string(), z.unknown())\n  .describe('Arbitrary package/app version info (e.g., {\"core\": \"1.0.0\", \"memory\": \"1.0.0\", \"gitSha\": \"abcd1234\"})');\n\nexport const metadataField = z.record(z.string(), z.unknown()).describe('User-defined metadata for custom filtering');\n\nexport const tagsField = z.array(z.string()).describe('Labels for filtering');\n\n/**\n * Base context fields shared across tracing and non-tracing observability records.\n * Source/provenance is intentionally excluded because tracing uses `source`\n * while signals use `executionSource`.\n */\nconst contextFieldsBase = {\n  // Entity identification\n  entityType: entityTypeField.nullish(),\n  entityId: entityIdField.nullish(),\n  entityName: entityNameField.nullish(),\n\n  // Parent entity hierarchy\n  parentEntityType: parentEntityTypeField.nullish(),\n  parentEntityId: parentEntityIdField.nullish(),\n  parentEntityName: parentEntityNameField.nullish(),\n\n  // Root entity hierarchy\n  rootEntityType: rootEntityTypeField.nullish(),\n  rootEntityId: rootEntityIdField.nullish(),\n  rootEntityName: rootEntityNameField.nullish(),\n\n  // Identity & tenancy\n  userId: userIdField.nullish(),\n  organizationId: organizationIdField.nullish(),\n  resourceId: resourceIdField.nullish(),\n\n  // Correlation IDs\n  runId: runIdField.nullish(),\n  sessionId: sessionIdField.nullish(),\n  threadId: threadIdField.nullish(),\n  requestId: requestIdField.nullish(),\n\n  // Deployment context\n  environment: environmentField.nullish(),\n  serviceName: serviceNameField.nullish(),\n  scope: scopeField.nullish(),\n\n  // Entity versioning\n  entityVersionId: entityVersionIdField.nullish(),\n  parentEntityVersionId: parentEntityVersionIdField.nullish(),\n  rootEntityVersionId: rootEntityVersionIdField.nullish(),\n\n  // Experimentation\n  experimentId: experimentIdField.nullish(),\n} as const;\n\n/**\n * Context fields shared across observability signals other than spans (metrics, logs, scores, feedback).\n * These use `executionSource` to avoid colliding with signal-specific provenance fields.\n */\nexport const contextFields = {\n  ...contextFieldsBase,\n  executionSource: executionSourceField.nullish(),\n  tags: tagsField.nullish(),\n} as const;\n\n/**\n * Context fields used by tracing/span records.\n * Tracing continues to expose execution provenance as `source`.\n */\nexport const spanContextFields = {\n  ...contextFieldsBase,\n  source: sourceField.nullish(),\n} as const;\n\n/**\n * Common filter fields shared across observability signal filters (metrics, logs, scores, feedback).\n * All fields are optional — each signal extends this with signal-specific filters.\n */\nexport const commonFilterFields = {\n  timestamp: dateRangeSchema.optional().describe('Filter by timestamp range'),\n  traceId: z.string().optional().describe('Filter by trace ID'),\n  spanId: z.string().optional().describe('Filter by span ID'),\n  entityType: entityTypeField.optional(),\n  entityName: entityNameField.optional(),\n  entityVersionId: entityVersionIdField.optional(),\n  parentEntityVersionId: parentEntityVersionIdField.optional(),\n  rootEntityVersionId: rootEntityVersionIdField.optional(),\n  userId: userIdField.optional(),\n  organizationId: organizationIdField.optional(),\n  experimentId: experimentIdField.optional(),\n  serviceName: serviceNameField.optional(),\n  environment: environmentField.optional(),\n  parentEntityType: parentEntityTypeField.optional(),\n  parentEntityName: parentEntityNameField.optional(),\n  rootEntityType: rootEntityTypeField.optional(),\n  rootEntityName: rootEntityNameField.optional(),\n  resourceId: resourceIdField.optional(),\n  runId: runIdField.optional(),\n  sessionId: sessionIdField.optional(),\n  threadId: threadIdField.optional(),\n  requestId: requestIdField.optional(),\n  executionSource: executionSourceField.optional(),\n  tags: z.array(z.string()).optional().describe('Filter by tags (must have all specified tags)'),\n} as const;\n\n// ============================================================================\n// Tracing identifier fields (shared across scores, feedback, metrics)\n// ============================================================================\n\n/** Zod schema for trace ID field */\nexport const traceIdField = z.string().describe('Unique trace identifier');\n\n/** Zod schema for span ID field */\nexport const spanIdField = z.string().describe('Unique span identifier within a trace');\n","import { z } from 'zod/v4';\nimport {\n  commonFilterFields,\n  contextFields,\n  metadataField,\n  paginationArgsSchema,\n  paginationInfoSchema,\n  sortDirectionSchema,\n  spanIdField,\n  tagsField,\n  traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\n/** Log level schema for validation */\nexport const logLevelSchema = z.enum(['debug', 'info', 'warn', 'error', 'fatal']);\n\nconst messageField = z.string().describe('Log message');\nconst logDataField = z.record(z.string(), z.unknown()).describe('Structured data attached to the log');\n\n// ============================================================================\n// LogRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for logs as stored in the database.\n * Includes all fields from ExportedLog plus storage-specific fields.\n */\nexport const logRecordSchema = z\n  .object({\n    timestamp: z.date().describe('When the log was created'),\n    level: logLevelSchema.describe('Log severity level'),\n    message: messageField,\n    data: logDataField.nullish(),\n\n    // Correlation\n    traceId: traceIdField.nullish(),\n    spanId: spanIdField.nullish(),\n\n    // Context fields\n    ...contextFields,\n    /**\n     * @deprecated Use `executionSource` instead.\n     */\n    source: z.string().nullish().describe('Execution source'),\n\n    metadata: metadataField.nullish(),\n  })\n  .describe('Log record as stored in the database');\n\n/** Log record type for storage */\nexport type LogRecord = z.infer<typeof logRecordSchema>;\n\n// ============================================================================\n// LogRecordInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided log input (minimal required fields).\n * The logger enriches this with context before emitting ExportedLog.\n */\nexport const logRecordInputSchema = z\n  .object({\n    level: logLevelSchema,\n    message: messageField,\n    data: logDataField.optional(),\n    tags: tagsField.optional(),\n  })\n  .describe('User-provided log input');\n\n/** User-facing log input type */\nexport type LogRecordInput = z.infer<typeof logRecordInputSchema>;\n\n// ============================================================================\n// Create Log Schemas\n// ============================================================================\n\n/** Schema for creating a log record */\nexport const createLogRecordSchema = logRecordSchema;\n\n/** Log record for creation (excludes db timestamps) */\nexport type CreateLogRecord = z.infer<typeof createLogRecordSchema>;\n\n/** Schema for batchCreateLogs operation arguments */\nexport const batchCreateLogsArgsSchema = z\n  .object({\n    logs: z.array(createLogRecordSchema),\n  })\n  .describe('Arguments for batch creating logs');\n\n/** Arguments for batch creating logs */\nexport type BatchCreateLogsArgs = z.infer<typeof batchCreateLogsArgsSchema>;\n\n// ============================================================================\n// Log Filter Schema\n// ============================================================================\n\n/** Schema for filtering logs in list queries */\nexport const logsFilterSchema = z\n  .object({\n    ...commonFilterFields,\n\n    // Log-specific filters\n    /**\n     * @deprecated Use `executionSource` instead.\n     */\n    source: z.string().optional().describe('Filter by execution source'),\n    level: z\n      .union([logLevelSchema, z.array(logLevelSchema)])\n      .optional()\n      .describe('Filter by log level(s)'),\n  })\n  .describe('Filters for querying logs');\n\n/** Filters for querying logs */\nexport type LogsFilter = z.infer<typeof logsFilterSchema>;\n\n// ============================================================================\n// List Logs Schemas\n// ============================================================================\n\n/** Fields available for ordering log results */\nexport const logsOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for log queries */\nexport const logsOrderBySchema = z\n  .object({\n    field: logsOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n    direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n  })\n  .describe('Order by configuration');\n\n/** Schema for listLogs operation arguments */\nexport const listLogsArgsSchema = z\n  .object({\n    filters: logsFilterSchema.optional().describe('Optional filters to apply'),\n    pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n    orderBy: logsOrderBySchema\n      .default({ field: 'timestamp', direction: 'DESC' })\n      .describe('Ordering configuration (defaults to timestamp desc)'),\n  })\n  .describe('Arguments for listing logs');\n\n/** Arguments for listing logs */\nexport type ListLogsArgs = z.input<typeof listLogsArgsSchema>;\n\n/** Schema for listLogs operation response */\nexport const listLogsResponseSchema = z.object({\n  pagination: paginationInfoSchema,\n  logs: z.array(logRecordSchema),\n});\n\n/** Response containing paginated logs */\nexport type ListLogsResponse = z.infer<typeof listLogsResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n  aggregateResponseFields,\n  aggregationIntervalSchema,\n  aggregationTypeSchema,\n  aggregatedValueField,\n  bucketTimestampField,\n  comparePeriodSchema,\n  commonFilterFields,\n  experimentIdField,\n  contextFields,\n  dimensionsField,\n  entityTypeField,\n  groupBySchema,\n  paginationArgsSchema,\n  paginationInfoSchema,\n  percentileField,\n  percentileBucketValueField,\n  percentilesSchema,\n  sortDirectionSchema,\n  spanIdField,\n  traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\nconst scorerIdField = z.string().describe('Identifier of the scorer (e.g., relevance, accuracy)');\nconst scorerNameField = z.string().describe('Display name of the scorer');\nconst scorerVersionField = z.string().describe('Version of the scorer');\nconst scoreSourceField = z.string().describe('How the score was produced (e.g., manual, automated, experiment)');\nconst scoreValueField = z.number().describe('Score value (range defined by scorer)');\nconst scoreReasonField = z.string().describe('Explanation for the score');\n\n// ============================================================================\n// ScoreRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for scores as stored in the database.\n * Includes all fields from ExportedScore plus storage-specific fields.\n */\nexport const scoreRecordSchema = z\n  .object({\n    timestamp: z.date().describe('When the score was recorded'),\n\n    // Target\n    traceId: traceIdField.nullish().describe('Trace that anchors the scored target when available'),\n    spanId: spanIdField.nullish().describe('Span ID this score applies to'),\n\n    // Score data\n    scorerId: scorerIdField,\n    scorerName: scorerNameField.nullish(),\n    scorerVersion: scorerVersionField.nullish(),\n    scoreSource: scoreSourceField.nullish(),\n    /**\n     * @deprecated Use `scoreSource` instead.\n     */\n    source: scoreSourceField.nullish(),\n    score: scoreValueField,\n    reason: scoreReasonField.nullish(),\n\n    // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n    ...contextFields,\n\n    /** Trace ID of the scoring run (links to trace that generated this score) */\n    scoreTraceId: z.string().nullish().describe('Trace ID of the scoring run for debugging score generation'),\n\n    // User-defined metadata (context fields stored here)\n    metadata: z.record(z.string(), z.unknown()).nullish().describe('User-defined metadata'),\n  })\n  .describe('Score record as stored in the database');\n\n/** Score record type for storage */\nexport type ScoreRecord = z.infer<typeof scoreRecordSchema>;\n\n// ============================================================================\n// ScoreInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided score input (minimal required fields).\n * The span/trace context adds traceId/spanId before emitting ExportedScore.\n */\nexport const scoreInputSchema = z\n  .object({\n    scorerId: scorerIdField,\n    scorerName: scorerNameField.optional(),\n    scorerVersion: scorerVersionField.optional(),\n    scoreSource: scoreSourceField.optional(),\n    /**\n     * @deprecated Use `scoreSource` instead.\n     */\n    source: scoreSourceField.optional(),\n    score: scoreValueField,\n    reason: scoreReasonField.optional(),\n    metadata: z.record(z.string(), z.unknown()).optional().describe('Additional scorer-specific metadata'),\n    experimentId: experimentIdField.optional(),\n    scoreTraceId: z.string().optional().describe('Trace ID of the scoring run for debugging score generation'),\n    targetEntityType: entityTypeField.optional().describe('Entity type the scorer evaluated when known'),\n  })\n  .describe('User-provided score input');\n\n/** User-facing score input type */\nexport type ScoreInput = z.infer<typeof scoreInputSchema>;\n\n// ============================================================================\n// Create Score Schemas\n// ============================================================================\n\n/** Schema for creating a score record */\nexport const createScoreRecordSchema = scoreRecordSchema;\n\n/** Score record for creation */\nexport type CreateScoreRecord = z.infer<typeof createScoreRecordSchema>;\n\n/** Schema for createScore operation arguments */\nexport const createScoreArgsSchema = z\n  .object({\n    score: createScoreRecordSchema,\n  })\n  .describe('Arguments for creating a score');\n\n/** Arguments for creating a score */\nexport type CreateScoreArgs = z.infer<typeof createScoreArgsSchema>;\n\n/** Schema for createScore operation body in client/server */\nexport const createScoreBodySchema = z\n  .object({\n    score: createScoreRecordSchema.omit({ timestamp: true }),\n  })\n  .describe('Arguments for creating a score');\n\n/** Body for creating a score in client/server */\nexport type CreateScoreBody = z.infer<typeof createScoreBodySchema>;\n\n/** Schema for createScore operation response */\nexport const createScoreResponseSchema = z.object({ success: z.boolean() }).describe('Response from creating a score');\n\n/** Response from creating a score */\nexport type CreateScoreResponse = z.infer<typeof createScoreResponseSchema>;\n\n/** Schema for batchCreateScores operation arguments */\nexport const batchCreateScoresArgsSchema = z\n  .object({\n    scores: z.array(createScoreRecordSchema),\n  })\n  .describe('Arguments for batch recording scores');\n\n/** Arguments for batch creating scores */\nexport type BatchCreateScoresArgs = z.infer<typeof batchCreateScoresArgsSchema>;\n\n// ============================================================================\n// Score Filter Schema\n// ============================================================================\n\n/** Schema for filtering scores in list queries */\nexport const scoresFilterSchema = z\n  .object({\n    ...commonFilterFields,\n\n    // Score-specific filters\n    scorerId: z\n      .union([z.string(), z.array(z.string())])\n      .optional()\n      .describe('Filter by scorer ID(s)'),\n    scoreSource: scoreSourceField.optional().describe('Filter by how the score was produced'),\n    /**\n     * @deprecated Use `scoreSource` instead.\n     */\n    source: scoreSourceField.optional().describe('Filter by how the score was produced'),\n  })\n  .describe('Filters for querying scores');\n\n/** Filters for querying scores */\nexport type ScoresFilter = z.infer<typeof scoresFilterSchema>;\n\n// ============================================================================\n// List Scores Schemas\n// ============================================================================\n\n/** Fields available for ordering score results */\nexport const scoresOrderByFieldSchema = z\n  .enum(['timestamp', 'score'])\n  .describe(\"Field to order by: 'timestamp' | 'score'\");\n\n/** Order by configuration for score queries */\nexport const scoresOrderBySchema = z\n  .object({\n    field: scoresOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n    direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n  })\n  .describe('Order by configuration');\n\n/** Schema for listScores operation arguments */\nexport const listScoresArgsSchema = z\n  .object({\n    filters: scoresFilterSchema.optional(),\n    pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n    orderBy: scoresOrderBySchema\n      .default({ field: 'timestamp', direction: 'DESC' })\n      .describe('Ordering configuration (defaults to timestamp desc)'),\n  })\n  .describe('Arguments for listing scores');\n\n/** Arguments for listing scores */\nexport type ListScoresArgs = z.input<typeof listScoresArgsSchema>;\n\n/** Schema for listScores operation response */\nexport const listScoresResponseSchema = z.object({\n  pagination: paginationInfoSchema,\n  scores: z.array(scoreRecordSchema),\n});\n\n/** Response containing paginated scores */\nexport type ListScoresResponse = z.infer<typeof listScoresResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\nexport const getScoreAggregateArgsSchema = z\n  .object({\n    scorerId: scorerIdField,\n    scoreSource: scoreSourceField.optional(),\n    aggregation: aggregationTypeSchema,\n    filters: scoresFilterSchema.optional(),\n    comparePeriod: comparePeriodSchema.optional(),\n  })\n  .describe('Arguments for getting a score aggregate');\n\nexport type GetScoreAggregateArgs = z.infer<typeof getScoreAggregateArgsSchema>;\n\nexport const getScoreAggregateResponseSchema = z.object(aggregateResponseFields);\n\nexport type GetScoreAggregateResponse = z.infer<typeof getScoreAggregateResponseSchema>;\n\nexport const getScoreBreakdownArgsSchema = z\n  .object({\n    scorerId: scorerIdField,\n    scoreSource: scoreSourceField.optional(),\n    groupBy: groupBySchema,\n    aggregation: aggregationTypeSchema,\n    filters: scoresFilterSchema.optional(),\n  })\n  .describe('Arguments for getting a score breakdown');\n\nexport type GetScoreBreakdownArgs = z.infer<typeof getScoreBreakdownArgsSchema>;\n\nexport const getScoreBreakdownResponseSchema = z.object({\n  groups: z.array(\n    z.object({\n      dimensions: dimensionsField,\n      value: aggregatedValueField,\n    }),\n  ),\n});\n\nexport type GetScoreBreakdownResponse = z.infer<typeof getScoreBreakdownResponseSchema>;\n\nexport const getScoreTimeSeriesArgsSchema = z\n  .object({\n    scorerId: scorerIdField,\n    scoreSource: scoreSourceField.optional(),\n    interval: aggregationIntervalSchema,\n    aggregation: aggregationTypeSchema,\n    filters: scoresFilterSchema.optional(),\n    groupBy: groupBySchema.optional(),\n  })\n  .describe('Arguments for getting score time series');\n\nexport type GetScoreTimeSeriesArgs = z.infer<typeof getScoreTimeSeriesArgsSchema>;\n\nexport const getScoreTimeSeriesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      name: z.string().describe('Series name (scorer ID or group key)'),\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: aggregatedValueField,\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetScoreTimeSeriesResponse = z.infer<typeof getScoreTimeSeriesResponseSchema>;\n\nexport const getScorePercentilesArgsSchema = z\n  .object({\n    scorerId: scorerIdField,\n    scoreSource: scoreSourceField.optional(),\n    percentiles: percentilesSchema,\n    interval: aggregationIntervalSchema,\n    filters: scoresFilterSchema.optional(),\n  })\n  .describe('Arguments for getting score percentiles');\n\nexport type GetScorePercentilesArgs = z.infer<typeof getScorePercentilesArgsSchema>;\n\nexport const getScorePercentilesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      percentile: percentileField,\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: percentileBucketValueField,\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetScorePercentilesResponse = z.infer<typeof getScorePercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n  aggregateResponseFields,\n  aggregationIntervalSchema,\n  aggregationTypeSchema,\n  aggregatedValueField,\n  bucketTimestampField,\n  comparePeriodSchema,\n  commonFilterFields,\n  experimentIdField,\n  contextFields,\n  dimensionsField,\n  groupBySchema,\n  paginationArgsSchema,\n  paginationInfoSchema,\n  percentileField,\n  percentileBucketValueField,\n  percentilesSchema,\n  sortDirectionSchema,\n  spanIdField,\n  traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\nconst feedbackSourceField = z.string().describe(\"Source of feedback (e.g., 'user', 'system', 'manual')\");\nconst feedbackTypeField = z.string().describe(\"Type of feedback (e.g., 'thumbs', 'rating', 'correction')\");\nconst feedbackValueField = z\n  .union([z.number(), z.string()])\n  .describe('Feedback value (rating number or correction text)');\nconst feedbackCommentField = z.string().describe('Additional comment or context');\nconst feedbackUserIdField = z.string().describe('User who provided the feedback');\n\nfunction normalizeLegacyFeedbackActor<T>(input: T): T {\n  if (!input || typeof input !== 'object' || Array.isArray(input)) {\n    return input;\n  }\n\n  const record = { ...(input as Record<string, unknown>) };\n  if (typeof record.userId === 'string' && record.feedbackUserId == null) {\n    record.feedbackUserId = record.userId;\n    delete record.userId;\n  }\n\n  return record as T;\n}\n\n// ============================================================================\n// FeedbackRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for feedback as stored in the database.\n * Includes all fields from ExportedFeedback plus storage-specific fields.\n */\nconst feedbackRecordObjectSchema = z.object({\n  timestamp: z.date().describe('When the feedback was recorded'),\n\n  // Target\n  traceId: traceIdField.nullish().describe('Trace that anchors the feedback target when available'),\n  spanId: spanIdField.nullish().describe('Span ID this feedback applies to'),\n\n  // Feedback data\n  feedbackSource: feedbackSourceField.nullish(),\n  /**\n   * @deprecated Use `feedbackSource` instead.\n   */\n  source: feedbackSourceField.nullish(),\n  feedbackType: feedbackTypeField,\n  value: feedbackValueField,\n  comment: feedbackCommentField.nullish(),\n\n  // Feedback actor identity\n  feedbackUserId: feedbackUserIdField.nullish(),\n\n  // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n  ...contextFields,\n\n  // Source linkage (e.g. dataset item result ID)\n  sourceId: z\n    .string()\n    .nullish()\n    .describe('ID of the source record this feedback is linked to (e.g. experiment result ID)'),\n\n  // User-defined metadata (context fields stored here)\n  metadata: z.record(z.string(), z.unknown()).nullish().describe('User-defined metadata'),\n});\n\nexport const feedbackRecordSchema = z\n  .object(feedbackRecordObjectSchema.shape)\n  .describe('Feedback record as stored in the database');\n\n/** Feedback record type for storage */\nexport type FeedbackRecord = z.infer<typeof feedbackRecordSchema>;\n\n// ============================================================================\n// FeedbackInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided feedback input (minimal required fields).\n * The span/trace context adds traceId/spanId before emitting ExportedFeedback.\n */\nconst feedbackInputObjectSchema = z.object({\n  feedbackSource: feedbackSourceField.optional(),\n  /**\n   * @deprecated Use `feedbackSource` instead.\n   */\n  source: feedbackSourceField.optional(),\n  feedbackType: feedbackTypeField,\n  value: feedbackValueField,\n  comment: feedbackCommentField.optional(),\n  feedbackUserId: feedbackUserIdField.optional(),\n  /**\n   * @deprecated Use `feedbackUserId` instead.\n   */\n  userId: feedbackUserIdField.optional(),\n  metadata: z.record(z.string(), z.unknown()).optional().describe('Additional feedback-specific metadata'),\n  experimentId: experimentIdField.optional(),\n  sourceId: z.string().optional().describe('ID of the source record this feedback is linked to'),\n});\n\nexport const feedbackInputSchema = z.object(feedbackInputObjectSchema.shape).describe('User-provided feedback input');\n\n/** User-facing feedback input type */\nexport type FeedbackInput = z.infer<typeof feedbackInputSchema>;\n\n// ============================================================================\n// Create Feedback Schemas\n// ============================================================================\n\n/** Schema for creating a feedback record */\nexport const createFeedbackRecordSchema = feedbackRecordSchema;\n\n/** Feedback record for creation */\nexport type CreateFeedbackRecord = z.infer<typeof createFeedbackRecordSchema>;\n\n/** Schema for createFeedback operation arguments */\nexport const createFeedbackArgsSchema = z\n  .object({\n    feedback: z.preprocess(normalizeLegacyFeedbackActor, feedbackRecordObjectSchema),\n  })\n  .describe('Arguments for creating feedback');\n\n/** Arguments for creating feedback */\nexport type CreateFeedbackArgs = z.infer<typeof createFeedbackArgsSchema>;\n\n/** Schema for createFeedback operation body in client/server */\nexport const createFeedbackBodySchema = z\n  .object({\n    feedback: feedbackRecordObjectSchema.omit({ timestamp: true }),\n  })\n  .describe('Arguments for creating feedback');\n\n/** Body for creating feedback in client/server */\nexport type CreateFeedbackBody = z.infer<typeof createFeedbackBodySchema>;\n\n/** Schema for createFeedback operation response */\nexport const createFeedbackResponseSchema = z\n  .object({ success: z.boolean() })\n  .describe('Response from creating feedback');\n\n/** Response from creating feedback */\nexport type CreateFeedbackResponse = z.infer<typeof createFeedbackResponseSchema>;\n\n/** Schema for batchCreateFeedback operation arguments */\nexport const batchCreateFeedbackArgsSchema = z\n  .object({\n    feedbacks: z.array(z.preprocess(normalizeLegacyFeedbackActor, feedbackRecordObjectSchema)),\n  })\n  .describe('Arguments for batch recording feedback');\n\n/** Arguments for batch creating feedback */\nexport type BatchCreateFeedbackArgs = z.infer<typeof batchCreateFeedbackArgsSchema>;\n\n// ============================================================================\n// Feedback Filter Schema\n// ============================================================================\n\n/** Schema for filtering feedback in list queries */\nconst feedbackFilterObjectSchema = z.object({\n  ...commonFilterFields,\n\n  // Feedback-specific filters\n  feedbackType: z\n    .union([z.string(), z.array(z.string())])\n    .optional()\n    .describe('Filter by feedback type(s)'),\n  feedbackSource: feedbackSourceField.optional(),\n  /**\n   * @deprecated Use `feedbackSource` instead.\n   */\n  source: feedbackSourceField.optional(),\n  feedbackUserId: feedbackUserIdField.optional(),\n});\n\nexport const feedbackFilterSchema = z\n  .object(feedbackFilterObjectSchema.shape)\n  .describe('Filters for querying feedback');\n\n/** Filters for querying feedback */\nexport type FeedbackFilter = z.infer<typeof feedbackFilterSchema>;\n\n// ============================================================================\n// List Feedback Schemas\n// ============================================================================\n\n/** Fields available for ordering feedback results */\nexport const feedbackOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for feedback queries */\nexport const feedbackOrderBySchema = z\n  .object({\n    field: feedbackOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n    direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n  })\n  .describe('Order by configuration');\n\n/** Schema for listFeedback operation arguments */\nexport const listFeedbackArgsSchema = z\n  .object({\n    filters: z\n      .preprocess(normalizeLegacyFeedbackActor, feedbackFilterObjectSchema)\n      .optional()\n      .describe('Optional filters to apply'),\n    pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n    orderBy: feedbackOrderBySchema\n      .default({ field: 'timestamp', direction: 'DESC' })\n      .describe('Ordering configuration (defaults to timestamp desc)'),\n  })\n  .describe('Arguments for listing feedback');\n\n/** Arguments for listing feedback */\nexport type ListFeedbackArgs = z.input<typeof listFeedbackArgsSchema>;\n\n/** Schema for listFeedback operation response */\nexport const listFeedbackResponseSchema = z.object({\n  pagination: paginationInfoSchema,\n  feedback: z.array(feedbackRecordSchema),\n});\n\n/** Response containing paginated feedback */\nexport type ListFeedbackResponse = z.infer<typeof listFeedbackResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\nexport const getFeedbackAggregateArgsSchema = z\n  .object({\n    feedbackType: feedbackTypeField,\n    feedbackSource: feedbackSourceField.optional(),\n    aggregation: aggregationTypeSchema,\n    filters: feedbackFilterSchema.optional(),\n    comparePeriod: comparePeriodSchema.optional(),\n  })\n  .describe('Arguments for getting a feedback aggregate over numeric values');\n\nexport type GetFeedbackAggregateArgs = z.infer<typeof getFeedbackAggregateArgsSchema>;\n\nexport const getFeedbackAggregateResponseSchema = z.object(aggregateResponseFields);\n\nexport type GetFeedbackAggregateResponse = z.infer<typeof getFeedbackAggregateResponseSchema>;\n\nexport const getFeedbackBreakdownArgsSchema = z\n  .object({\n    feedbackType: feedbackTypeField,\n    feedbackSource: feedbackSourceField.optional(),\n    groupBy: groupBySchema,\n    aggregation: aggregationTypeSchema,\n    filters: feedbackFilterSchema.optional(),\n  })\n  .describe('Arguments for getting a feedback breakdown over numeric values');\n\nexport type GetFeedbackBreakdownArgs = z.infer<typeof getFeedbackBreakdownArgsSchema>;\n\nexport const getFeedbackBreakdownResponseSchema = z.object({\n  groups: z.array(\n    z.object({\n      dimensions: dimensionsField,\n      value: aggregatedValueField,\n    }),\n  ),\n});\n\nexport type GetFeedbackBreakdownResponse = z.infer<typeof getFeedbackBreakdownResponseSchema>;\n\nexport const getFeedbackTimeSeriesArgsSchema = z\n  .object({\n    feedbackType: feedbackTypeField,\n    feedbackSource: feedbackSourceField.optional(),\n    interval: aggregationIntervalSchema,\n    aggregation: aggregationTypeSchema,\n    filters: feedbackFilterSchema.optional(),\n    groupBy: groupBySchema.optional(),\n  })\n  .describe('Arguments for getting feedback time series over numeric values');\n\nexport type GetFeedbackTimeSeriesArgs = z.infer<typeof getFeedbackTimeSeriesArgsSchema>;\n\nexport const getFeedbackTimeSeriesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      name: z.string().describe('Series name (feedback type or group key)'),\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: aggregatedValueField,\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetFeedbackTimeSeriesResponse = z.infer<typeof getFeedbackTimeSeriesResponseSchema>;\n\nexport const getFeedbackPercentilesArgsSchema = z\n  .object({\n    feedbackType: feedbackTypeField,\n    feedbackSource: feedbackSourceField.optional(),\n    percentiles: percentilesSchema,\n    interval: aggregationIntervalSchema,\n    filters: feedbackFilterSchema.optional(),\n  })\n  .describe('Arguments for getting feedback percentiles over numeric values');\n\nexport type GetFeedbackPercentilesArgs = z.infer<typeof getFeedbackPercentilesArgsSchema>;\n\nexport const getFeedbackPercentilesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      percentile: percentileField,\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: percentileBucketValueField,\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetFeedbackPercentilesResponse = z.infer<typeof getFeedbackPercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n  aggregateResponseFields,\n  aggregationIntervalSchema,\n  aggregationTypeSchema,\n  aggregatedValueField,\n  bucketTimestampField,\n  comparePeriodSchema,\n  commonFilterFields,\n  contextFields,\n  dimensionsField,\n  groupBySchema,\n  paginationArgsSchema,\n  paginationInfoSchema,\n  percentileField,\n  percentileBucketValueField,\n  percentilesSchema,\n  sortDirectionSchema,\n  spanIdField,\n  traceIdField,\n  metadataField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\n/**\n * @deprecated MetricType is no longer stored. All metrics are raw events\n * with aggregation determined at query time.\n */\nexport const metricTypeSchema = z.enum(['counter', 'gauge', 'histogram']);\n\nconst metricNameField = z.string().describe('Metric name (e.g., mastra_agent_duration_ms)');\nconst metricValueField = z.number().describe('Metric value');\nconst labelsField = z.record(z.string(), z.string()).describe('Metric labels for dimensional filtering');\nconst providerField = z.string().describe('Model provider');\nconst modelField = z.string().describe('Model');\nconst estimatedCostField = z.number().describe('Estimated cost');\nconst costUnitField = z.string().describe('Unit for the estimated cost (e.g., usd)');\nconst costMetadField = z.record(z.string(), z.unknown()).nullish().describe('Structured costing metadata');\n\n// ============================================================================\n// MetricRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for metrics as stored in the database.\n * Each record is a single metric observation.\n */\nexport const metricRecordSchema = z\n  .object({\n    timestamp: z.date().describe('When the metric was recorded'),\n    name: metricNameField,\n    value: metricValueField,\n\n    // Correlation\n    traceId: traceIdField.nullish(),\n    spanId: spanIdField.nullish(),\n\n    // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n    ...contextFields,\n    /**\n     * @deprecated Use `executionSource` instead.\n     */\n    source: z.string().nullish().describe('Execution source'),\n\n    // Canonical costing fields\n    provider: providerField.nullish(),\n    model: modelField.nullish(),\n\n    // Estimated cost related fields\n    estimatedCost: estimatedCostField.nullish(),\n    costUnit: costUnitField.nullish(),\n    costMetadata: costMetadField.nullish(),\n\n    // User-defined labels used for filtering\n    labels: labelsField.default({}),\n\n    // User-defined metadata\n    metadata: metadataField.nullish(),\n  })\n  .describe('Metric record as stored in the database');\n\n/** Metric record type for storage */\nexport type MetricRecord = z.infer<typeof metricRecordSchema>;\n\n// ============================================================================\n// MetricInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided metric input (minimal required fields).\n * The metrics context enriches this with environment before emitting ExportedMetric.\n */\nexport const metricInputSchema = z\n  .object({\n    name: metricNameField,\n    value: metricValueField,\n    labels: labelsField.optional(),\n  })\n  .describe('User-provided metric input');\n\n/** User-facing metric input type */\nexport type MetricInput = z.infer<typeof metricInputSchema>;\n\n// ============================================================================\n// Create Metric Schemas\n// ============================================================================\n\n/** Schema for creating a metric record (without db timestamps) */\nexport const createMetricRecordSchema = metricRecordSchema;\n\n/** Metric record for creation (excludes db timestamps) */\nexport type CreateMetricRecord = z.infer<typeof createMetricRecordSchema>;\n\n/** Schema for batchCreateMetrics operation arguments */\nexport const batchCreateMetricsArgsSchema = z\n  .object({\n    metrics: z.array(createMetricRecordSchema),\n  })\n  .describe('Arguments for batch recording metrics');\n\n/** Arguments for batch recording metrics */\nexport type BatchCreateMetricsArgs = z.infer<typeof batchCreateMetricsArgsSchema>;\n\n// ============================================================================\n// Metric Aggregation Schemas\n// ============================================================================\n\n/** Schema for metric aggregation configuration */\nexport const metricsAggregationSchema = z\n  .object({\n    type: aggregationTypeSchema,\n    interval: aggregationIntervalSchema.optional(),\n    groupBy: groupBySchema.optional(),\n  })\n  .describe('Metrics aggregation configuration');\n\n/** Metrics aggregation configuration type */\nexport type MetricsAggregation = z.infer<typeof metricsAggregationSchema>;\n\n// ============================================================================\n// Metric Filter Schema\n// ============================================================================\n\n/** Schema for filtering metrics in queries */\nexport const metricsFilterSchema = z\n  .object({\n    ...commonFilterFields,\n\n    // Metric identification\n    name: z.array(z.string()).nonempty().optional().describe('Filter by metric name(s)'),\n\n    /**\n     * @deprecated Use `executionSource` instead.\n     */\n    source: z.string().optional().describe('Filter by execution source'),\n\n    // Canonical costing filters\n    provider: providerField.optional(),\n    model: modelField.optional(),\n    costUnit: costUnitField.optional(),\n\n    // Label filters (exact match on label values)\n    labels: z.record(z.string(), z.string()).optional().describe('Exact match on label key-value pairs'),\n  })\n  .describe('Filters for querying metrics');\n\n/** Filters for querying metrics */\nexport type MetricsFilter = z.infer<typeof metricsFilterSchema>;\n\n/** Fields available for ordering metric list results */\nexport const metricsOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for metric list queries */\nexport const metricsOrderBySchema = z\n  .object({\n    field: metricsOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n    direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n  })\n  .describe('Order by configuration');\n\n/** Schema for listMetrics operation arguments */\nexport const listMetricsArgsSchema = z\n  .object({\n    filters: metricsFilterSchema.optional(),\n    pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n    orderBy: metricsOrderBySchema\n      .default({ field: 'timestamp', direction: 'DESC' })\n      .describe('Ordering configuration (defaults to timestamp desc)'),\n  })\n  .describe('Arguments for listing metrics');\n\n/** Arguments for listing metrics */\nexport type ListMetricsArgs = z.input<typeof listMetricsArgsSchema>;\n\n/** Schema for listMetrics operation response */\nexport const listMetricsResponseSchema = z.object({\n  pagination: paginationInfoSchema,\n  metrics: z.array(metricRecordSchema),\n});\n\n/** Response containing paginated metrics */\nexport type ListMetricsResponse = z.infer<typeof listMetricsResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\n// --- getMetricAggregate ---\n\nexport const getMetricAggregateArgsSchema = z\n  .object({\n    name: z.array(z.string()).nonempty().describe('Metric name(s) to aggregate'),\n    aggregation: aggregationTypeSchema,\n    filters: metricsFilterSchema.optional(),\n    comparePeriod: comparePeriodSchema.optional(),\n  })\n  .describe('Arguments for getting a metric aggregate');\n\nexport type GetMetricAggregateArgs = z.infer<typeof getMetricAggregateArgsSchema>;\n\nexport const getMetricAggregateResponseSchema = z.object({\n  ...aggregateResponseFields,\n  estimatedCost: z.number().nullable().optional().describe('Aggregated estimated cost from the same filtered row set'),\n  costUnit: z\n    .string()\n    .nullable()\n    .optional()\n    .describe('Shared cost unit for the aggregated rows, or null when mixed/unknown'),\n  previousEstimatedCost: z\n    .number()\n    .nullable()\n    .optional()\n    .describe('Aggregated estimated cost from the comparison period'),\n  costChangePercent: z\n    .number()\n    .nullable()\n    .optional()\n    .describe('Percentage change in estimated cost from comparison period'),\n});\n\nexport type GetMetricAggregateResponse = z.infer<typeof getMetricAggregateResponseSchema>;\n\n// --- getMetricBreakdown ---\n\nexport const getMetricBreakdownArgsSchema = z\n  .object({\n    name: z.array(z.string()).nonempty().describe('Metric name(s) to break down'),\n    groupBy: groupBySchema,\n    aggregation: aggregationTypeSchema,\n    filters: metricsFilterSchema.optional(),\n  })\n  .describe('Arguments for getting a metric breakdown');\n\nexport type GetMetricBreakdownArgs = z.infer<typeof getMetricBreakdownArgsSchema>;\n\nexport const getMetricBreakdownResponseSchema = z.object({\n  groups: z.array(\n    z.object({\n      dimensions: dimensionsField,\n      value: aggregatedValueField,\n      estimatedCost: z.number().nullable().optional().describe('Summed estimated cost for this group'),\n      costUnit: z\n        .string()\n        .nullable()\n        .optional()\n        .describe('Shared cost unit for this group, or null when mixed/unknown'),\n    }),\n  ),\n});\n\nexport type GetMetricBreakdownResponse = z.infer<typeof getMetricBreakdownResponseSchema>;\n\n// --- getMetricTimeSeries ---\n\nexport const getMetricTimeSeriesArgsSchema = z\n  .object({\n    name: z.array(z.string()).nonempty().describe('Metric name(s)'),\n    interval: aggregationIntervalSchema,\n    aggregation: aggregationTypeSchema,\n    filters: metricsFilterSchema.optional(),\n    groupBy: groupBySchema.optional(),\n  })\n  .describe('Arguments for getting metric time series');\n\nexport type GetMetricTimeSeriesArgs = z.infer<typeof getMetricTimeSeriesArgsSchema>;\n\nexport const getMetricTimeSeriesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      name: z.string().describe('Series name (metric name or group key)'),\n      costUnit: z\n        .string()\n        .nullable()\n        .optional()\n        .describe('Shared cost unit for this series, or null when mixed/unknown'),\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: aggregatedValueField,\n          estimatedCost: z.number().nullable().optional().describe('Summed estimated cost in this bucket'),\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetMetricTimeSeriesResponse = z.infer<typeof getMetricTimeSeriesResponseSchema>;\n\n// --- getMetricPercentiles ---\n\nexport const getMetricPercentilesArgsSchema = z\n  .object({\n    name: z.string().describe('Metric name'),\n    percentiles: percentilesSchema,\n    interval: aggregationIntervalSchema,\n    filters: metricsFilterSchema.optional(),\n  })\n  .describe('Arguments for getting metric percentiles');\n\nexport type GetMetricPercentilesArgs = z.infer<typeof getMetricPercentilesArgsSchema>;\n\nexport const getMetricPercentilesResponseSchema = z.object({\n  series: z.array(\n    z.object({\n      percentile: percentileField,\n      points: z.array(\n        z.object({\n          timestamp: bucketTimestampField,\n          value: percentileBucketValueField,\n        }),\n      ),\n    }),\n  ),\n});\n\nexport type GetMetricPercentilesResponse = z.infer<typeof getMetricPercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport { entityTypeField } from '../shared';\n\n// ============================================================================\n// Metric Discovery\n// ============================================================================\n\n// --- getMetricNames ---\n\nexport const getMetricNamesArgsSchema = z\n  .object({\n    prefix: z.string().optional().describe('Filter metric names by prefix'),\n    limit: z.number().int().min(1).optional().describe('Maximum number of names to return'),\n  })\n  .describe('Arguments for getting metric names');\n\nexport type GetMetricNamesArgs = z.infer<typeof getMetricNamesArgsSchema>;\n\nexport const getMetricNamesResponseSchema = z.object({\n  names: z.array(z.string()).describe('Distinct metric names'),\n});\n\nexport type GetMetricNamesResponse = z.infer<typeof getMetricNamesResponseSchema>;\n\n// --- getMetricLabelKeys ---\n\nexport const getMetricLabelKeysArgsSchema = z\n  .object({\n    metricName: z.string().describe('Metric name to get label keys for'),\n  })\n  .describe('Arguments for getting metric label keys');\n\nexport type GetMetricLabelKeysArgs = z.infer<typeof getMetricLabelKeysArgsSchema>;\n\nexport const getMetricLabelKeysResponseSchema = z.object({\n  keys: z.array(z.string()).describe('Distinct label keys for the metric'),\n});\n\nexport type GetMetricLabelKeysResponse = z.infer<typeof getMetricLabelKeysResponseSchema>;\n\n// --- getMetricLabelValues ---\n\nexport const getMetricLabelValuesArgsSchema = z\n  .object({\n    metricName: z.string().describe('Metric name'),\n    labelKey: z.string().describe('Label key to get values for'),\n    prefix: z.string().optional().describe('Filter values by prefix'),\n    limit: z.number().int().min(1).optional().describe('Maximum number of values to return'),\n  })\n  .describe('Arguments for getting label values');\n\nexport type GetMetricLabelValuesArgs = z.infer<typeof getMetricLabelValuesArgsSchema>;\n\nexport const getMetricLabelValuesResponseSchema = z.object({\n  values: z.array(z.string()).describe('Distinct label values'),\n});\n\nexport type GetMetricLabelValuesResponse = z.infer<typeof getMetricLabelValuesResponseSchema>;\n\n// ============================================================================\n// Entity & Environment Discovery\n// ============================================================================\n\n// --- getEntityTypes ---\n\nexport const getEntityTypesArgsSchema = z.object({}).describe('Arguments for getting entity types');\n\nexport type GetEntityTypesArgs = z.infer<typeof getEntityTypesArgsSchema>;\n\nexport const getEntityTypesResponseSchema = z.object({\n  entityTypes: z.array(entityTypeField).describe('Distinct entity types'),\n});\n\nexport type GetEntityTypesResponse = z.infer<typeof getEntityTypesResponseSchema>;\n\n// --- getEntityNames ---\n\nexport const getEntityNamesArgsSchema = z\n  .object({\n    entityType: entityTypeField.optional().describe('Optional entity type filter'),\n  })\n  .describe('Arguments for getting entity names');\n\nexport type GetEntityNamesArgs = z.infer<typeof getEntityNamesArgsSchema>;\n\nexport const getEntityNamesResponseSchema = z.object({\n  names: z.array(z.string()).describe('Distinct entity names'),\n});\n\nexport type GetEntityNamesResponse = z.infer<typeof getEntityNamesResponseSchema>;\n\n// --- getServiceNames ---\n\nexport const getServiceNamesArgsSchema = z.object({}).describe('Arguments for getting service names');\n\nexport type GetServiceNamesArgs = z.infer<typeof getServiceNamesArgsSchema>;\n\nexport const getServiceNamesResponseSchema = z.object({\n  serviceNames: z.array(z.string()).describe('Distinct service names'),\n});\n\nexport type GetServiceNamesResponse = z.infer<typeof getServiceNamesResponseSchema>;\n\n// --- getEnvironments ---\n\nexport const getEnvironmentsArgsSchema = z.object({}).describe('Arguments for getting environments');\n\nexport type GetEnvironmentsArgs = z.infer<typeof getEnvironmentsArgsSchema>;\n\nexport const getEnvironmentsResponseSchema = z.object({\n  environments: z.array(z.string()).describe('Distinct environments'),\n});\n\nexport type GetEnvironmentsResponse = z.infer<typeof getEnvironmentsResponseSchema>;\n\n// --- getTags ---\n\nexport const getTagsArgsSchema = z\n  .object({\n    entityType: entityTypeField.optional().describe('Optional entity type filter'),\n  })\n  .describe('Arguments for getting tags');\n\nexport type GetTagsArgs = z.infer<typeof getTagsArgsSchema>;\n\nexport const getTagsResponseSchema = z.object({\n  tags: z.array(z.string()).describe('Distinct tags'),\n});\n\nexport type GetTagsResponse = z.infer<typeof getTagsResponseSchema>;\n","/**\n * Tracing interfaces\n *\n * Span types, attributes, span lifecycle, and tracing-specific types.\n * For top-level observability infrastructure (instances, exporters, bridges, config),\n * see observability.ts.\n */\nimport { EntityType } from '@internal/core/storage';\n\nimport type { MastraError } from '../../error';\nimport type { Mastra } from '../../mastra';\nimport type { RequestContext } from '../../request-context';\nimport type { LanguageModelUsage, ProviderMetadata, StepStartPayload } from '../../stream/types';\nimport type { WorkflowRunStatus, WorkflowStepStatus } from '../../workflows';\nimport type {\n  CustomSamplerOptions,\n  ObservabilityInstance,\n  CorrelationContext,\n  DefinitionSource,\n  ScorerScoreSource,\n  ScorerStepType,\n  ScorerTargetScope,\n} from './core';\nimport type { FeedbackInput } from './feedback';\nimport type { ScoreInput } from './scores';\n\n// ============================================================================\n// Span Types\n// ============================================================================\n\n/**\n * AI-specific span types with their associated metadata\n */\nexport enum SpanType {\n  /** Agent run - root span for agent processes */\n  AGENT_RUN = 'agent_run',\n  /** Scorer execution */\n  SCORER_RUN = 'scorer_run',\n  /** Individual scorer pipeline step */\n  SCORER_STEP = 'scorer_step',\n  /** Generic span for custom operations */\n  GENERIC = 'generic',\n  /** Model generation with model calls, token usage, prompts, completions */\n  MODEL_GENERATION = 'model_generation',\n  /** Single model execution step within a generation (one API call) */\n  MODEL_STEP = 'model_step',\n  /** Individual model streaming chunk/event */\n  MODEL_CHUNK = 'model_chunk',\n  /** MCP (Model Context Protocol) tool execution */\n  MCP_TOOL_CALL = 'mcp_tool_call',\n  /** Input or Output Processor execution */\n  PROCESSOR_RUN = 'processor_run',\n  /** Function/tool execution with inputs, outputs, errors */\n  TOOL_CALL = 'tool_call',\n  /** Workflow run - root span for workflow processes */\n  WORKFLOW_RUN = 'workflow_run',\n  /** Workflow step execution with step status, data flow */\n  WORKFLOW_STEP = 'workflow_step',\n  /** Workflow conditional execution with condition evaluation */\n  WORKFLOW_CONDITIONAL = 'workflow_conditional',\n  /** Individual condition evaluation within conditional */\n  WORKFLOW_CONDITIONAL_EVAL = 'workflow_conditional_eval',\n  /** Workflow parallel execution */\n  WORKFLOW_PARALLEL = 'workflow_parallel',\n  /** Workflow loop execution */\n  WORKFLOW_LOOP = 'workflow_loop',\n  /** Workflow sleep operation */\n  WORKFLOW_SLEEP = 'workflow_sleep',\n  /** Workflow wait for event operation */\n  WORKFLOW_WAIT_EVENT = 'workflow_wait_event',\n  /** Memory operation (recall, save, delete, update working memory) */\n  MEMORY_OPERATION = 'memory_operation',\n  /** Workspace action (filesystem, sandbox, search, skill, mount operations) */\n  WORKSPACE_ACTION = 'workspace_action',\n  /** RAG ingestion - root span for an ingestion pipeline run (load → chunk → extract → embed → upsert) */\n  RAG_INGESTION = 'rag_ingestion',\n  /** Embedding call (used by both RAG ingestion and query) */\n  RAG_EMBEDDING = 'rag_embedding',\n  /** Vector store I/O (query / upsert / delete / fetch) */\n  RAG_VECTOR_OPERATION = 'rag_vector_operation',\n  /** RAG-specific actions: chunk, extract_metadata, rerank */\n  RAG_ACTION = 'rag_action',\n  /** Graph operations (build / traverse) - not RAG-specific */\n  GRAPH_ACTION = 'graph_action',\n}\n\nexport { EntityType };\n\n// ============================================================================\n// Type-Specific Attributes Interfaces\n// ============================================================================\n\n/**\n * Base attributes that all spans can have\n */\nexport interface AIBaseAttributes {}\n\n/**\n * Agent Run attributes\n */\nexport interface AgentRunAttributes extends AIBaseAttributes {\n  /** Conversation/thread/session identifier for multi-turn interactions */\n  conversationId?: string;\n  /** Agent Instructions **/\n  instructions?: string;\n  /** Agent Prompt **/\n  prompt?: string;\n  /** Available tools for this execution */\n  availableTools?: string[];\n  /** Maximum steps allowed */\n  maxSteps?: number;\n  /** The resolved agent version ID used for this execution */\n  resolvedVersionId?: string;\n  /** Tripwire abort details when a processor triggered a tripwire */\n  tripwireAbort?: {\n    /** Abort reason */\n    reason?: string;\n    /** Processor that triggered the tripwire */\n    processorId?: string;\n    /** Whether retry was requested */\n    retry?: boolean;\n    /** Additional metadata */\n    metadata?: unknown;\n  };\n}\n\n/**\n * Scorer Run attributes\n */\nexport interface ScorerRunAttributes extends AIBaseAttributes {\n  scorerId?: string;\n  scorerName?: string;\n  scoreSource?: ScorerScoreSource;\n  targetScope?: ScorerTargetScope;\n  targetEntityType?: EntityType;\n  scorerDefinition?: DefinitionSource;\n}\n\n/**\n * Scorer Step attributes\n */\nexport interface ScorerStepAttributes extends AIBaseAttributes {\n  step?: string;\n  stepType?: ScorerStepType;\n  prompt?: string;\n  judgeModel?: string;\n}\n\n/**\n * Detailed breakdown of input token usage by type.\n * Based on OpenInference semantic conventions.\n */\nexport interface InputTokenDetails {\n  /** Regular text tokens (non-cached, non-audio, non-image) */\n  text?: number;\n  /** Tokens served from cache (cache hit/read) */\n  cacheRead?: number;\n  /** Tokens written to cache (cache creation - Anthropic only) */\n  cacheWrite?: number;\n  /** Audio input tokens */\n  audio?: number;\n  /** Image input tokens (includes PDF pages) */\n  image?: number;\n}\n\n/**\n * Detailed breakdown of output token usage by type.\n * Based on OpenInference semantic conventions.\n */\nexport interface OutputTokenDetails {\n  /** Regular text output tokens */\n  text?: number;\n  /** Reasoning/thinking tokens (o1, Claude thinking, Gemini thoughts) */\n  reasoning?: number;\n  /** Audio output tokens */\n  audio?: number;\n  /** Image output tokens (DALL-E, etc.) */\n  image?: number;\n}\n\n/** Token usage statistics */\nexport interface UsageStats {\n  /** Total input tokens (sum of all input details) */\n  inputTokens?: number;\n  /** Total output tokens (sum of all output details) */\n  outputTokens?: number;\n  /** Detailed breakdown of input token usage */\n  inputDetails?: InputTokenDetails;\n  /** Detailed breakdown of output token usage */\n  outputDetails?: OutputTokenDetails;\n}\n\n/**\n * Model Generation attributes\n */\nexport interface ModelGenerationAttributes extends AIBaseAttributes {\n  /** Model name (e.g., 'gpt-4', 'claude-3') */\n  model?: string;\n  /** Model provider (e.g., 'openai', 'anthropic') */\n  provider?: string;\n  /** Type of result/output this LLM call produced */\n  resultType?: 'tool_selection' | 'response_generation' | 'reasoning' | 'planning';\n  /** Token usage statistics */\n  usage?: UsageStats;\n  /** Model parameters */\n  parameters?: {\n    maxOutputTokens?: number;\n    temperature?: number;\n    topP?: number;\n    topK?: number;\n    presencePenalty?: number;\n    frequencyPenalty?: number;\n    stopSequences?: string[];\n    seed?: number;\n    maxRetries?: number;\n    abortSignal?: any;\n    headers?: Record<string, string | undefined>;\n  };\n  /** Whether this was a streaming response */\n  streaming?: boolean;\n  /** Reason the generation finished */\n  finishReason?: string;\n  /**\n   * When the first token/chunk of the completion was received.\n   * Used to calculate time-to-first-token (TTFT) metrics.\n   * Only applicable for streaming responses.\n   */\n  completionStartTime?: Date;\n  /** Actual model used in the response (may differ from request model) */\n  responseModel?: string;\n  /** Unique identifier for the response */\n  responseId?: string;\n  /** Server address for the model endpoint */\n  serverAddress?: string;\n  /** Server port for the model endpoint */\n  serverPort?: number;\n}\n\n/**\n * Model Step attributes - for a single model execution within a generation\n */\nexport interface ModelStepAttributes extends AIBaseAttributes {\n  /** Index of this step in the generation (0, 1, 2, ...) */\n  stepIndex?: number;\n  /** Token usage statistics */\n  usage?: UsageStats;\n  /** Reason this step finished (stop, tool-calls, length, etc.) */\n  finishReason?: string;\n  /** Should execution continue */\n  isContinued?: boolean;\n  /** Result warnings */\n  warnings?: Record<string, any>;\n}\n\n/**\n * Model Chunk attributes - for individual streaming chunks/events\n */\nexport interface ModelChunkAttributes extends AIBaseAttributes {\n  /** Type of chunk (text-delta, reasoning-delta, tool-call, etc.) */\n  chunkType?: string;\n  /** Sequence number of this chunk in the stream */\n  sequenceNumber?: number;\n}\n\n/**\n * Tool Call attributes\n */\nexport interface ToolCallAttributes extends AIBaseAttributes {\n  toolType?: string;\n  toolDescription?: string;\n  success?: boolean;\n}\n\n/**\n * MCP Tool Call attributes\n */\nexport interface MCPToolCallAttributes extends AIBaseAttributes {\n  /** MCP server identifier */\n  mcpServer: string;\n  /** MCP server version */\n  serverVersion?: string;\n  /** Tool description */\n  toolDescription?: string;\n  /** Whether tool execution was successful */\n  success?: boolean;\n}\n\n/**\n * Processor attributes\n */\nexport interface ProcessorRunAttributes extends AIBaseAttributes {\n  /** Processor executor type (workflow or legacy) */\n  processorExecutor?: 'workflow' | 'legacy';\n  /** Processor index in the agent */\n  processorIndex?: number;\n  /** MessageList mutations performed by this processor */\n  messageListMutations?: Array<{\n    type: 'add' | 'addSystem' | 'removeByIds' | 'clear';\n    source?: string;\n    count?: number;\n    ids?: string[];\n    text?: string;\n    tag?: string;\n    message?: any;\n  }>;\n  /** Tripwire abort details when a processor triggered a tripwire */\n  tripwireAbort?: {\n    /** Abort reason */\n    reason?: string;\n    /** Whether retry was requested */\n    retry?: boolean;\n    /** Additional metadata */\n    metadata?: unknown;\n  };\n}\n\n/**\n * Workflow Run attributes\n */\nexport interface WorkflowRunAttributes extends AIBaseAttributes {\n  /** Workflow status */\n  status?: WorkflowRunStatus;\n}\n\n/**\n * Workflow Step attributes\n */\nexport interface WorkflowStepAttributes extends AIBaseAttributes {\n  /** Step status */\n  status?: WorkflowStepStatus;\n}\n\n/**\n * Workflow Conditional attributes\n */\nexport interface WorkflowConditionalAttributes extends AIBaseAttributes {\n  /** Number of conditions evaluated */\n  conditionCount: number;\n  /** Which condition indexes evaluated to true */\n  truthyIndexes?: number[];\n  /** Which steps will be executed */\n  selectedSteps?: string[];\n}\n\n/**\n * Workflow Conditional Evaluation attributes\n */\nexport interface WorkflowConditionalEvalAttributes extends AIBaseAttributes {\n  /** Index of this condition in the conditional */\n  conditionIndex: number;\n  /** Result of condition evaluation */\n  result?: boolean;\n}\n\n/**\n * Workflow Parallel attributes\n */\nexport interface WorkflowParallelAttributes extends AIBaseAttributes {\n  /** Number of parallel branches */\n  branchCount: number;\n  /** Step IDs being executed in parallel */\n  parallelSteps?: string[];\n}\n\n/**\n * Workflow Loop attributes\n */\nexport interface WorkflowLoopAttributes extends AIBaseAttributes {\n  /** Type of loop (foreach, dowhile, dountil) */\n  loopType?: 'foreach' | 'dowhile' | 'dountil';\n  /** Current iteration number (for individual iterations) */\n  iteration?: number;\n  /** Total iterations (if known) */\n  totalIterations?: number;\n  /** Number of steps to run concurrently in foreach loop */\n  concurrency?: number;\n}\n\n/**\n * Workflow Sleep attributes\n */\nexport interface WorkflowSleepAttributes extends AIBaseAttributes {\n  /** Sleep duration in milliseconds */\n  durationMs?: number;\n  /** Sleep until date */\n  untilDate?: Date;\n  /** Sleep type */\n  sleepType?: 'fixed' | 'dynamic';\n}\n\n/**\n * Workflow Wait Event attributes\n */\nexport interface WorkflowWaitEventAttributes extends AIBaseAttributes {\n  /** Event name being waited for */\n  eventName?: string;\n  /** Timeout in milliseconds */\n  timeoutMs?: number;\n  /** Whether event was received or timed out */\n  eventReceived?: boolean;\n  /** Wait duration in milliseconds */\n  waitDurationMs?: number;\n}\n\n/**\n * Memory operation attributes\n */\nexport interface MemoryOperationAttributes extends AIBaseAttributes {\n  operationType?: 'recall' | 'save' | 'delete' | 'update';\n  messageCount?: number;\n  embeddingTokens?: number;\n  semanticRecallEnabled?: boolean;\n  vectorResultCount?: number;\n  workingMemoryEnabled?: boolean;\n  lastMessages?: number | false;\n}\n\n/**\n * Workspace Action attributes — metadata about the span context.\n * Operation-specific inputs/outputs are recorded via span input/output,\n * not as attributes.\n */\nexport interface WorkspaceActionAttributes extends AIBaseAttributes {\n  /** Workspace identifier */\n  workspaceId?: string;\n  /** Human-readable workspace name */\n  workspaceName?: string;\n  /** Action category */\n  category: 'filesystem' | 'sandbox' | 'search' | 'skill' | 'mount';\n  /** Sandbox provider name (e.g. 'e2b', 'docker', 'local') */\n  sandboxProvider?: string;\n  /** Filesystem provider name (e.g. 'local', 'agentfs', 's3') */\n  filesystemProvider?: string;\n  /** Whether the operation succeeded */\n  success?: boolean;\n}\n\n/**\n * RAG Ingestion attributes (root span for an ingestion pipeline run).\n *\n * Attributes are stable, low-cardinality dimensions describing the run.\n * Per-run results (final chunk count, etc.) belong on the span's `output`.\n *\n * Note: token usage / cost lives ONLY on `RAG_EMBEDDING` child spans.\n * Aggregating at the root would double-count when an exporter sums child\n * spans. Mirrors how `AGENT_RUN` does not carry aggregated `MODEL_GENERATION`\n * usage.\n */\nexport interface RagIngestionAttributes extends AIBaseAttributes {\n  /** User-supplied pipeline name */\n  pipelineName?: string;\n  /** Number of source documents being ingested */\n  sourceCount?: number;\n  /** Vector store name */\n  vectorStore?: string;\n  /** Index/collection name being written to */\n  indexName?: string;\n  /** Embedding model id */\n  embeddingModel?: string;\n  /** Embedding model provider */\n  embeddingProvider?: string;\n}\n\n/**\n * RAG Embedding attributes (single embed call, batch).\n *\n * The texts being embedded belong on the span's `input`. Returned vectors\n * are summarized via `output` (count + dims) rather than dumped wholesale.\n * Token usage uses the same `UsageStats` shape as `MODEL_GENERATION` so\n * cost-extraction pipelines work uniformly across LLM and embedding spans.\n */\nexport interface RagEmbeddingAttributes extends AIBaseAttributes {\n  /** Embedding model id */\n  model?: string;\n  /** Embedding model provider */\n  provider?: string;\n  /** Embedding vector dimensions */\n  dimensions?: number;\n  /** Number of inputs in this batch (cardinality of the input array) */\n  inputCount?: number;\n  /** Whether this embed call is part of ingestion or query */\n  mode?: 'ingest' | 'query';\n  /** Token usage for this embed call. Drives cost metrics. */\n  usage?: UsageStats;\n}\n\n/**\n * RAG Vector Operation attributes (vector store I/O).\n *\n * Query vectors / filters belong on `input`. Result counts belong on\n * `output`.\n */\nexport interface RagVectorOperationAttributes extends AIBaseAttributes {\n  /** Vector store operation kind */\n  operation: 'query' | 'upsert' | 'delete' | 'fetch';\n  /** Vector store name */\n  store?: string;\n  /** Index/collection name */\n  indexName?: string;\n  /** Top-K parameter (query) */\n  topK?: number;\n  /** Vector dimensions */\n  dimensions?: number;\n}\n\n/**\n * RAG Action attributes - chunk / extract_metadata / rerank.\n *\n * Per-call result counts (chunk count, etc.) belong on `output`.\n */\nexport interface RagChunkAction extends AIBaseAttributes {\n  /** RAG action kind */\n  action: 'chunk';\n  /** Chunking strategy / transformer name */\n  strategy?: string;\n  chunkSize?: number;\n  chunkOverlap?: number;\n}\n\nexport interface RagExtractMetadataAction extends AIBaseAttributes {\n  /** RAG action kind */\n  action: 'extract_metadata';\n  /** Metadata extractor name */\n  extractor?: string;\n  model?: string;\n  provider?: string;\n}\n\nexport interface RagRerankAction extends AIBaseAttributes {\n  /** RAG action kind */\n  action: 'rerank';\n  /** Number of candidates fed into rerank (input array length) */\n  candidateCount?: number;\n  /** Configured top-N to keep after reranking */\n  topN?: number;\n  /** Scorer/provider name */\n  scorer?: string;\n}\n\nexport type RagActionAttributes = RagChunkAction | RagExtractMetadataAction | RagRerankAction;\n\n/**\n * Graph Action attributes - non-RAG, used for any graph operation.\n *\n * Per-call traversal results (visited count, returned count) belong on\n * `output`. `nodeCount` / `edgeCount` describe the graph itself.\n */\nexport interface GraphActionAttributes extends AIBaseAttributes {\n  /** Graph action kind */\n  action: 'build' | 'traverse' | 'update' | 'prune';\n  /** Number of nodes in the graph */\n  nodeCount?: number;\n  /** Number of edges in the graph */\n  edgeCount?: number;\n  /** Threshold parameter (build) */\n  threshold?: number;\n  /** Number of starting nodes (traverse) */\n  startNodes?: number;\n  /** Maximum traversal depth */\n  maxDepth?: number;\n}\n\n/**\n * AI-specific span types mapped to their attributes\n */\nexport interface SpanTypeMap {\n  [SpanType.AGENT_RUN]: AgentRunAttributes;\n  [SpanType.SCORER_RUN]: ScorerRunAttributes;\n  [SpanType.SCORER_STEP]: ScorerStepAttributes;\n  [SpanType.WORKFLOW_RUN]: WorkflowRunAttributes;\n  [SpanType.MODEL_GENERATION]: ModelGenerationAttributes;\n  [SpanType.MODEL_STEP]: ModelStepAttributes;\n  [SpanType.MODEL_CHUNK]: ModelChunkAttributes;\n  [SpanType.TOOL_CALL]: ToolCallAttributes;\n  [SpanType.MCP_TOOL_CALL]: MCPToolCallAttributes;\n  [SpanType.PROCESSOR_RUN]: ProcessorRunAttributes;\n  [SpanType.WORKFLOW_STEP]: WorkflowStepAttributes;\n  [SpanType.WORKFLOW_CONDITIONAL]: WorkflowConditionalAttributes;\n  [SpanType.WORKFLOW_CONDITIONAL_EVAL]: WorkflowConditionalEvalAttributes;\n  [SpanType.WORKFLOW_PARALLEL]: WorkflowParallelAttributes;\n  [SpanType.WORKFLOW_LOOP]: WorkflowLoopAttributes;\n  [SpanType.WORKFLOW_SLEEP]: WorkflowSleepAttributes;\n  [SpanType.WORKFLOW_WAIT_EVENT]: WorkflowWaitEventAttributes;\n  [SpanType.WORKSPACE_ACTION]: WorkspaceActionAttributes;\n  [SpanType.GENERIC]: AIBaseAttributes;\n  [SpanType.MEMORY_OPERATION]: MemoryOperationAttributes;\n  [SpanType.RAG_INGESTION]: RagIngestionAttributes;\n  [SpanType.RAG_EMBEDDING]: RagEmbeddingAttributes;\n  [SpanType.RAG_VECTOR_OPERATION]: RagVectorOperationAttributes;\n  [SpanType.RAG_ACTION]: RagActionAttributes;\n  [SpanType.GRAPH_ACTION]: GraphActionAttributes;\n}\n\n/**\n * Union type for cases that need to handle any span type\n */\nexport type AnySpanAttributes = SpanTypeMap[keyof SpanTypeMap];\n\n// ============================================================================\n// Span Interfaces\n// ============================================================================\n\n/** Error information attached to a span when it fails. */\nexport interface SpanErrorInfo {\n  message: string;\n  id?: string;\n  /** Error class name (e.g. \"TypeError\", \"ValidationError\") */\n  name?: string;\n  /** Stack trace string */\n  stack?: string;\n  domain?: string;\n  category?: string;\n  details?: Record<string, any>;\n}\n\n/**\n * Base Span interface\n */\ninterface BaseSpan<TType extends SpanType> {\n  /** Unique span identifier */\n  id: string;\n  /** OpenTelemetry-compatible trace ID (32 hex chars) - present on all spans */\n  traceId: string;\n  /** Name of the span */\n  name: string;\n  /** Type of the span */\n  type: TType;\n  /** Entity type that created the span */\n  entityType?: EntityType;\n  /** Entity id that created the span */\n  entityId?: string;\n  /** Entity name that created the span */\n  entityName?: string;\n  /** When span started */\n  startTime: Date;\n  /** When span ended */\n  endTime?: Date;\n  /** Span-type specific attributes */\n  attributes?: SpanTypeMap[TType];\n  /** User-defined metadata */\n  metadata?: Record<string, any>;\n  /** Labels used to categorize and filter traces. Only valid on root spans. */\n  tags?: string[];\n  /** Input passed at the start of the span */\n  input?: any;\n  /** Output generated at the end of the span */\n  output?: any;\n  /** Error information if span failed */\n  errorInfo?: SpanErrorInfo;\n  /** Snapshot of the RequestContext */\n  requestContext?: Record<string, any>;\n  /** Is an event span? (event occurs at startTime, has no endTime) */\n  isEvent: boolean;\n}\n\n/**\n * Span interface, used internally for tracing\n */\nexport interface Span<TType extends SpanType> extends BaseSpan<TType> {\n  /** Is an internal span? (spans internal to the operation of mastra) */\n  isInternal: boolean;\n  /** Parent span reference (undefined for root spans) */\n  parent?: AnySpan;\n  /** Pointer to the ObservabilityInstance instance */\n  observabilityInstance: ObservabilityInstance;\n  /** Trace-level state shared across all spans in this trace */\n  traceState?: TraceState;\n\n  // Methods for span lifecycle\n  /** End the span */\n  end(options?: EndSpanOptions<TType>): void;\n\n  /** Record an error for the span, optionally end the span as well */\n  error(options: ErrorSpanOptions<TType>): void;\n\n  /** Update span attributes */\n  update(options: UpdateSpanOptions<TType>): void;\n\n  /** Create child span - can be any span type independent of parent */\n  createChildSpan(options: ChildSpanOptions<SpanType.MODEL_GENERATION>): AIModelGenerationSpan;\n  createChildSpan<TChildType extends SpanType>(options: ChildSpanOptions<TChildType>): Span<TChildType>;\n\n  /** Create event span - can be any span type independent of parent */\n  createEventSpan<TChildType extends SpanType>(options: ChildEventOptions<TChildType>): Span<TChildType>;\n\n  /** Returns `TRUE` if the span is the root span of a trace */\n  get isRootSpan(): boolean;\n\n  /** Returns `TRUE` if the span is a valid span (not a NO-OP Span) */\n  get isValid(): boolean;\n\n  /** Get the closest parent spanId that isn't an internal span */\n  getParentSpanId(includeInternalSpans?: boolean): string | undefined;\n\n  /** Find the closest parent span of a specific type by walking up the parent chain */\n  findParent<T extends SpanType>(spanType: T): Span<T> | undefined;\n\n  /**\n   * Optional hook for implementations that expose canonical correlation\n   * context directly from the span instance.\n   */\n  getCorrelationContext?(): CorrelationContext;\n\n  /** Returns a lightweight span ready for export */\n  exportSpan(includeInternalSpans?: boolean): ExportedSpan<TType> | undefined;\n\n  /** Returns the traceId on span, unless NoOpSpan, then undefined */\n  get externalTraceId(): string | undefined;\n\n  /**\n   * Execute an async function within this span's tracing context.\n   *\n   * When a bridge is configured, this enables auto-instrumented operations\n   * (HTTP requests, database queries, etc.) to be properly nested under this\n   * span in the external tracing system.\n   *\n   * @param fn - The async function to execute within the span context\n   * @returns The result of the function execution\n   *\n   * @example\n   * ```typescript\n   * const result = await modelSpan.executeInContext(async () => {\n   *   return model.generateText(...);\n   * });\n   * ```\n   */\n  executeInContext<T>(fn: () => Promise<T>): Promise<T>;\n\n  /**\n   * Execute a synchronous function within this span's tracing context.\n   *\n   * When a bridge is configured, this enables auto-instrumented operations\n   * (HTTP requests, database queries, etc.) to be properly nested under this\n   * span in the external tracing system.\n   *\n   * @param fn - The synchronous function to execute within the span context\n   * @returns The result of the function execution\n   *\n   * @example\n   * ```typescript\n   * const result = modelSpan.executeInContextSync(() => {\n   *   return model.streamText(...);\n   * });\n   * ```\n   */\n  executeInContextSync<T>(fn: () => T): T;\n}\n\n/** Context for bridging Mastra spans with external tracing systems (e.g., OpenTelemetry). */\nexport interface BridgeSpanContext {\n  /**\n   * Execute an async function within this span's tracing context.\n   *\n   * When a bridge is configured, this enables auto-instrumented operations\n   * (HTTP requests, database queries, etc.) to be properly nested under this\n   * span in the external tracing system.\n   *\n   * @param fn - The async function to execute within the span context\n   * @returns The result of the function execution\n   *\n   * @example\n   * ```typescript\n   * const result = await modelSpan.executeInContext(async () => {\n   *   return model.generateText(...);\n   * });\n   * ```\n   */\n  executeInContext<T>(fn: () => Promise<T>): Promise<T>;\n\n  /**\n   * Execute a synchronous function within this span's tracing context.\n   *\n   * When a bridge is configured, this enables auto-instrumented operations\n   * (HTTP requests, database queries, etc.) to be properly nested under this\n   * span in the external tracing system.\n   *\n   * @param fn - The synchronous function to execute within the span context\n   * @returns The result of the function execution\n   *\n   * @example\n   * ```typescript\n   * const result = modelSpan.executeInContextSync(() => {\n   *   return model.streamText(...);\n   * });\n   * ```\n   */\n  executeInContextSync<T>(fn: () => T): T;\n}\n\n/**\n * Specialized span interface for MODEL_GENERATION spans\n * Provides access to creating a ModelSpanTracker for tracking MODEL_STEP and MODEL_CHUNK spans\n */\nexport interface AIModelGenerationSpan extends Span<SpanType.MODEL_GENERATION> {\n  /** Create a ModelSpanTracker for tracking model execution steps and chunks */\n  createTracker(): IModelSpanTracker | undefined;\n}\n\n/**\n * Span data structure shared between exported and recorded spans.\n * Contains all span fields in a serializable format (no object references).\n *\n * This is the common base for:\n * - ExportedSpan: span data sent to exporters\n * - RecordedSpan: span data loaded from storage with annotation methods\n */\nexport interface SpanData<TType extends SpanType> extends BaseSpan<TType> {\n  /** Parent span id reference (undefined for root spans) */\n  parentSpanId?: string;\n  /** `TRUE` if the span is the root span of a trace */\n  isRootSpan: boolean;\n  /**\n   * Tags for this trace (only present on root spans).\n   * Tags are string labels used to categorize and filter traces.\n   */\n  tags?: string[];\n}\n\n/**\n * Exported Span interface, used for tracing exporters.\n * This is the format sent to ObservabilityExporter implementations.\n */\nexport interface ExportedSpan<TType extends SpanType> extends SpanData<TType> {}\n\n/**\n * Options for ending a model generation span\n */\nexport interface EndGenerationOptions extends EndSpanOptions<SpanType.MODEL_GENERATION> {\n  /** Raw usage data from AI SDK - will be converted to UsageStats with cache token details */\n  usage?: LanguageModelUsage;\n  /** Provider-specific metadata for extracting cache tokens */\n  providerMetadata?: ProviderMetadata;\n}\n\n/** Tracks model execution steps and streaming chunks within a MODEL_GENERATION span. */\nexport interface IModelSpanTracker {\n  getTracingContext(): TracingContext;\n  reportGenerationError(options: ErrorSpanOptions<SpanType.MODEL_GENERATION>): void;\n  endGeneration(options?: EndGenerationOptions): void;\n  updateGeneration(options: UpdateSpanOptions<SpanType.MODEL_GENERATION>): void;\n  wrapStream<T extends { pipeThrough: Function }>(stream: T): T;\n  startStep(payload?: StepStartPayload): void;\n}\n\n/**\n * Union type for cases that need to handle any span\n */\nexport type AnySpan = Span<keyof SpanTypeMap>;\n\n/**\n * Union type for cases that need to handle any exported span\n */\nexport type AnyExportedSpan = ExportedSpan<keyof SpanTypeMap>;\n\n// ============================================================================\n// Recorded Span & Trace Interfaces\n// ============================================================================\n\n/**\n * A recorded span is span data that has been captured/persisted and can have\n * scores and feedback attached post-hoc. Unlike live Span objects, RecordedSpan\n * has immutable core data but supports annotation methods.\n *\n * Spans are organized in a tree structure via parent/children references,\n * with all references pointing to the same objects in memory.\n *\n * Use cases:\n * - Spans loaded from storage for evaluation\n * - Spans from completed traces being annotated\n * - Post-hoc quality scoring and user feedback\n *\n * RecordedSpan objects are hydrated runtime wrappers and should not be treated as\n * durable serialized state. Persist `traceId` / `spanId` and rehydrate, or use\n * top-level observability annotation APIs after resume.\n */\nexport interface RecordedSpan<TType extends SpanType> extends SpanData<TType> {\n  /** Parent span reference (undefined for root spans) */\n  readonly parent?: AnyRecordedSpan;\n\n  /** Child spans in execution order */\n  readonly children: ReadonlyArray<AnyRecordedSpan>;\n\n  /**\n   * Add a quality score to this recorded span.\n   * Scores are emitted via the ObservabilityBus and can be persisted/exported.\n   */\n  addScore(score: ScoreInput): Promise<void>;\n\n  /**\n   * Add user feedback to this recorded span.\n   * Feedback is emitted via the ObservabilityBus and can be persisted/exported.\n   */\n  addFeedback(feedback: FeedbackInput): Promise<void>;\n}\n\n/**\n * Union type for cases that need to handle any recorded span\n */\nexport type AnyRecordedSpan = RecordedSpan<keyof SpanTypeMap>;\n\n/**\n * A recorded trace is a complete execution trace loaded from storage.\n * Provides both tree access (via rootSpan) and flat access (via spans).\n * All references point to the same span objects - no memory duplication.\n *\n * Obtained via mastra.observability.getRecordedTrace({ traceId }) for post-execution annotation.\n * RecordedTrace objects are hydrated runtime wrappers and should not be stored\n * across durable workflow serialization boundaries. Persist identifiers instead\n * and rehydrate, or use top-level observability annotation APIs after resume.\n */\nexport interface RecordedTrace {\n  /** The trace identifier */\n  readonly traceId: string;\n\n  /** Root span of the trace tree (entry point for tree traversal) */\n  readonly rootSpan: AnyRecordedSpan;\n\n  /** All spans in flat array for iteration (same objects as in tree) */\n  readonly spans: ReadonlyArray<AnyRecordedSpan>;\n\n  /**\n   * Get a specific recorded span by ID.\n   * @param spanId - The span identifier\n   * @returns The recorded span if found, null otherwise\n   */\n  getSpan(spanId: string): AnyRecordedSpan | null;\n\n  /**\n   * Add a score at the trace level.\n   * Uses root span's metadata for context inheritance.\n   */\n  addScore(score: ScoreInput): Promise<void>;\n\n  /**\n   * Add feedback at the trace level.\n   * Uses root span's metadata for context inheritance.\n   */\n  addFeedback(feedback: FeedbackInput): Promise<void>;\n}\n\n// ============================================================================\n// Tracing Interfaces\n// ============================================================================\n\n// ============================================================================\n// Span Create/Update/Error Option Types\n// ============================================================================\n\ninterface CreateBaseOptions<TType extends SpanType> {\n  /** Span attributes */\n  attributes?: SpanTypeMap[TType];\n  /** Span metadata */\n  metadata?: Record<string, any>;\n  /** Span name */\n  name: string;\n  /** Span type */\n  type: TType;\n  /** Entity type that created the span */\n  entityType?: EntityType;\n  /** Entity id that created the span */\n  entityId?: string;\n  /** Entity name that created the span */\n  entityName?: string;\n  /** Policy-level tracing configuration */\n  tracingPolicy?: TracingPolicy;\n  /** Request Context for metadata extraction */\n  requestContext?: RequestContext;\n}\n\n/**\n * Options for creating new spans\n */\nexport interface CreateSpanOptions<TType extends SpanType> extends CreateBaseOptions<TType> {\n  /** Input data */\n  input?: any;\n  /** Output data (for event spans) */\n  output?: any;\n  /** Labels used to categorize and filter traces. Only valid on root spans. */\n  tags?: string[];\n  /** Parent span */\n  parent?: AnySpan;\n  /** Is an event span? */\n  isEvent?: boolean;\n  /**\n   * Trace ID to use for this span (1-32 hexadecimal characters).\n   * Only used for root spans without a parent.\n   */\n  traceId?: string;\n  /**\n   * Span ID to use for this span (1-16 hexadecimal characters).\n   * Only used when rebuilding a span from cached data.\n   */\n  spanId?: string;\n  /**\n   * Parent span ID to use for this span (1-16 hexadecimal characters).\n   * Only used for root spans without a parent.\n   */\n  parentSpanId?: string;\n  /**\n   * Start time for this span.\n   * Only used when rebuilding a span from cached data.\n   */\n  startTime?: Date;\n  /** Trace-level state shared across all spans in this trace */\n  traceState?: TraceState;\n}\n\n/**\n * Options for starting new spans\n */\nexport interface StartSpanOptions<TType extends SpanType> extends CreateSpanOptions<TType> {\n  /**\n   * Options passed when using a custom sampler strategy\n   */\n  customSamplerOptions?: CustomSamplerOptions;\n  /** Tracing options for this execution */\n  tracingOptions?: TracingOptions;\n}\n\n/**\n * Options for new child spans\n */\nexport interface ChildSpanOptions<TType extends SpanType> extends CreateBaseOptions<TType> {\n  /** Input data */\n  input?: any;\n}\n\n/**\n * Options for new child events\n * Event spans have no input, and no endTime\n */\nexport interface ChildEventOptions<TType extends SpanType> extends CreateBaseOptions<TType> {\n  /** Output data */\n  output?: any;\n}\n\ninterface UpdateBaseOptions<TType extends SpanType> {\n  /** Span attributes */\n  attributes?: Partial<SpanTypeMap[TType]>;\n  /** Span metadata */\n  metadata?: Record<string, any>;\n}\n\n/** Options for ending a span, with optional final attributes and output. */\nexport interface EndSpanOptions<TType extends SpanType> extends UpdateBaseOptions<TType> {\n  /** Output data */\n  output?: any;\n}\n\n/** Options for updating a span's attributes, input, or output mid-flight. */\nexport interface UpdateSpanOptions<TType extends SpanType> extends UpdateBaseOptions<TType> {\n  /** Span name override */\n  name?: string;\n  /** Input data */\n  input?: any;\n  /** Output data */\n  output?: any;\n}\n\n/** Options for recording an error on a span. */\nexport interface ErrorSpanOptions<TType extends SpanType> extends UpdateBaseOptions<TType> {\n  /** The error associated with the issue */\n  error: MastraError | Error;\n  /** End the span when true */\n  endSpan?: boolean;\n}\n\n/** Options for retrieving an existing span or creating a new one from a tracing context. */\nexport interface GetOrCreateSpanOptions<TType extends SpanType> {\n  type: TType;\n  name: string;\n  entityType?: EntityType;\n  entityId?: string;\n  entityName?: string;\n  input?: any;\n  attributes?: SpanTypeMap[TType];\n  metadata?: Record<string, any>;\n  tracingPolicy?: TracingPolicy;\n  tracingOptions?: TracingOptions;\n  tracingContext?: TracingContext;\n  requestContext?: RequestContext;\n  mastra?: Mastra;\n}\n\n/**\n * Bitwise options to set different types of spans as internal in\n * a workflow or agent execution.\n */\nexport enum InternalSpans {\n  /** No spans are marked internal */\n  NONE = 0,\n  /** Workflow spans are marked internal */\n  WORKFLOW = 1 << 0, // 0001\n  /** Agent spans are marked internal */\n  AGENT = 1 << 1, // 0010\n  /** Tool spans are marked internal */\n  TOOL = 1 << 2, // 0100\n  /** Model spans are marked internal */\n  MODEL = 1 << 3, // 1000\n\n  /** All spans are marked internal */\n  ALL = (1 << 4) - 1, // 1111 (all bits set up to 3)\n}\n\n/**\n * Policy-level tracing configuration applied when creating\n * a workflow or agent. Unlike TracingOptions, which are\n * provided at execution time, policies define persistent rules\n * for how spans are treated across all executions of the\n * workflow/agent.\n */\nexport interface TracingPolicy {\n  /**\n   * Bitwise options to set different types of spans as Internal in\n   * a workflow or agent execution. Internal spans are hidden by\n   * default in exported traces.\n   */\n  internal?: InternalSpans;\n}\n\n/**\n * Trace-level state computed once at the start of a trace\n * and shared by all spans within that trace.\n */\nexport interface TraceState {\n  /**\n   * RequestContext keys to extract as metadata for all spans in this trace.\n   * Computed by merging the tracing config's requestContextKeys\n   * with the per-request requestContextKeys.\n   */\n  requestContextKeys: string[];\n  /**\n   * When true, input data will be hidden from all spans in this trace.\n   */\n  hideInput?: boolean;\n  /**\n   * When true, output data will be hidden from all spans in this trace.\n   */\n  hideOutput?: boolean;\n}\n\n/**\n * Options passed when starting a new agent or workflow execution\n */\nexport interface TracingOptions {\n  /** Metadata to add to the root trace span */\n  metadata?: Record<string, any>;\n  /**\n   * Additional RequestContext keys to extract as metadata for this trace.\n   * These keys are added to the requestContextKeys config.\n   * Supports dot notation for nested values (e.g., 'user.id', 'session.data.experimentId').\n   */\n  requestContextKeys?: string[];\n  /**\n   * Trace ID to use for this execution (1-32 hexadecimal characters).\n   * If provided, this trace will be part of the specified trace rather than starting a new one.\n   */\n  traceId?: string;\n  /**\n   * Parent span ID to use for this execution (1-16 hexadecimal characters).\n   * If provided, the root span will be created as a child of this span.\n   */\n  parentSpanId?: string;\n  /**\n   * Tags to apply to this trace.\n   * Tags are string labels that can be used to categorize and filter traces\n   * Note: Tags are only applied to the root span of a trace.\n   */\n  tags?: string[];\n  /**\n   * When true, input data will be hidden from all spans in this trace.\n   * Useful for protecting sensitive data from being logged.\n   */\n  hideInput?: boolean;\n  /**\n   * When true, output data will be hidden from all spans in this trace.\n   * Useful for protecting sensitive data from being logged.\n   */\n  hideOutput?: boolean;\n}\n\n/** Trace and span identifiers for correlating spans across systems. */\nexport interface SpanIds {\n  traceId: string;\n  spanId: string;\n  parentSpanId?: string;\n}\n\n/**\n * Context for tracing that flows through workflow and agent execution\n */\nexport interface TracingContext {\n  /** Current Span for creating child spans and adding metadata */\n  currentSpan?: AnySpan;\n}\n\n/**\n * Properties returned to the user for working with traces externally.\n */\nexport type TracingProperties = {\n  /** Trace ID used on the execution (if the execution was traced). */\n  traceId?: string;\n  /** Root span ID used on the execution (if the execution was traced). */\n  spanId?: string;\n};\n\n// ============================================================================\n// Exporter and Processor Interfaces\n// ============================================================================\n\n/**\n * Tracing event types\n */\nexport enum TracingEventType {\n  SPAN_STARTED = 'span_started',\n  SPAN_UPDATED = 'span_updated',\n  SPAN_ENDED = 'span_ended',\n}\n\n/**\n * Tracing events that can be exported\n */\nexport type TracingEvent =\n  | { type: TracingEventType.SPAN_STARTED; exportedSpan: AnyExportedSpan }\n  | { type: TracingEventType.SPAN_UPDATED; exportedSpan: AnyExportedSpan }\n  | { type: TracingEventType.SPAN_ENDED; exportedSpan: AnyExportedSpan };\n\n/**\n * Interface for span processors\n */\nexport interface SpanOutputProcessor {\n  /** Processor name */\n  name: string;\n  /** Process span before export */\n  process(span?: AnySpan): AnySpan | undefined;\n  /** Shutdown processor */\n  shutdown(): Promise<void>;\n}\n\n/**\n * Function type for formatting exported spans at the exporter level.\n *\n * This allows customization of how spans appear in vendor-specific observability platforms\n * (e.g., Langfuse, Braintrust). Unlike SpanOutputProcessor which operates on the internal\n * Span object before export, this formatter operates on the ExportedSpan data structure\n * after the span has been prepared for export.\n *\n * Formatters can be synchronous or asynchronous, enabling use cases like:\n * - Extract plain text from structured AI SDK messages for better readability\n * - Transform input/output format for specific vendor requirements\n * - Add or remove fields based on the target platform\n * - Redact or transform sensitive data in a vendor-specific way\n * - Enrich spans with data from external APIs (async)\n * - Perform database lookups to add context (async)\n *\n * @param span - The exported span to format\n * @returns The formatted span (sync) or a Promise resolving to the formatted span (async)\n *\n * @example\n * ```typescript\n * // Synchronous formatter that extracts plain text from AI messages\n * const plainTextFormatter: CustomSpanFormatter = (span) => {\n *   if (span.type === SpanType.AGENT_RUN && Array.isArray(span.input)) {\n *     const userMessage = span.input.find(m => m.role === 'user');\n *     return {\n *       ...span,\n *       input: userMessage?.content ?? span.input,\n *     };\n *   }\n *   return span;\n * };\n *\n * // Async formatter that enriches spans with external data\n * const enrichmentFormatter: CustomSpanFormatter = async (span) => {\n *   const userData = await fetchUserData(span.metadata?.userId);\n *   return {\n *     ...span,\n *     metadata: { ...span.metadata, userName: userData.name },\n *   };\n * };\n *\n * // Use with an exporter\n * new BraintrustExporter({\n *   customSpanFormatter: plainTextFormatter,\n * });\n * ```\n */\nexport type CustomSpanFormatter = (span: AnyExportedSpan) => AnyExportedSpan | Promise<AnyExportedSpan>;\n"]}