UNPKG

@mastra/core

Version:
1 lines • 48 kB
{"version":3,"file":"model-PhgPlg24.cjs","names":["MastraBase","#model","#options","#mastra","OpenAIReasoningSchemaCompatLayer","OpenAISchemaCompatLayer","GoogleSchemaCompatLayer","AnthropicSchemaCompatLayer","DeepSeekSchemaCompatLayer","MetaSchemaCompatLayer","resolveObservabilityContext","isZodType","isZodArray","getZodDef","MastraError","ErrorDomain","ErrorCategory","delay","Output","executeWithContext","generateText","generateObject","executeWithContextSync","streamText","streamObject"],"sources":["../src/stream/aisdk/v4/usage.ts","../src/llm/model/model.ts"],"sourcesContent":["import type { UsageStats } from '../../../observability';\n\n/**\n * AI SDK v4 LanguageModelUsage type definition\n * (matches the ai package's LanguageModelUsage)\n */\ninterface LanguageModelUsageV4 {\n promptTokens: number;\n completionTokens: number;\n totalTokens?: number;\n}\n\n/**\n * Converts AI SDK v4 LanguageModelUsage to our UsageStats format.\n *\n * @param usage - The LanguageModelUsage from AI SDK v4\n * @returns Normalized UsageStats\n */\nexport function convertV4Usage(usage: LanguageModelUsageV4 | undefined): UsageStats {\n if (!usage) {\n return {};\n }\n\n return {\n inputTokens: usage.promptTokens,\n outputTokens: usage.completionTokens,\n };\n}\n","import { generateObject, generateText, Output, streamObject, streamText } from '@internal/ai-sdk-v4';\nimport type {\n CoreMessage,\n LanguageModelV1 as LanguageModel,\n StreamObjectOnFinishCallback,\n StreamTextOnFinishCallback,\n} from '@internal/ai-sdk-v4';\nimport {\n AnthropicSchemaCompatLayer,\n applyCompatLayer,\n DeepSeekSchemaCompatLayer,\n GoogleSchemaCompatLayer,\n MetaSchemaCompatLayer,\n OpenAIReasoningSchemaCompatLayer,\n OpenAISchemaCompatLayer,\n jsonSchema,\n} from '@mastra/schema-compat';\nimport type { JSONSchema7, Schema } from '@mastra/schema-compat';\nimport type { z } from 'zod/v4';\nimport type { MastraPrimitives } from '../../action';\nimport { MastraBase } from '../../base';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../../error';\nimport type { Mastra } from '../../mastra';\nimport { SpanType, resolveObservabilityContext } from '../../observability';\nimport { executeWithContext, executeWithContextSync } from '../../observability/utils';\nimport { toStandardSchema, standardSchemaToJSONSchema, isStandardSchemaWithJSON } from '../../schema';\nimport type { ZodSchema } from '../../schema';\nimport { convertV4Usage } from '../../stream/aisdk/v4/usage';\nimport { delay, isZodType } from '../../utils';\nimport { isZodArray, getZodDef } from '../../utils/zod-utils';\n\nimport type {\n GenerateObjectWithMessagesArgs,\n GenerateTextResult,\n GenerateObjectResult,\n GenerateTextWithMessagesArgs,\n OriginalGenerateTextOptions,\n ToolSet,\n GenerateReturn,\n OriginalGenerateObjectOptions,\n StreamTextWithMessagesArgs,\n StreamTextResult,\n OriginalStreamTextOptions,\n StreamObjectWithMessagesArgs,\n OriginalStreamObjectOptions,\n StreamObjectResult,\n StreamReturn,\n} from './base.types';\nimport type { inferOutput, MastraModelOptions } from './shared.types';\n\nexport class MastraLLMV1 extends MastraBase {\n #model: LanguageModel;\n #mastra?: Mastra;\n #options?: MastraModelOptions;\n\n constructor({ model, mastra, options }: { model: LanguageModel; mastra?: Mastra; options?: MastraModelOptions }) {\n super({ name: 'aisdk' });\n\n this.#model = model;\n this.#options = options;\n\n if (mastra) {\n this.#mastra = mastra;\n if (mastra.getLogger()) {\n this.__setLogger(this.#mastra.getLogger());\n }\n }\n }\n\n __registerPrimitives(p: MastraPrimitives) {\n if (p.logger) {\n this.__setLogger(p.logger);\n }\n }\n\n __registerMastra(p: Mastra) {\n this.#mastra = p;\n }\n\n getProvider() {\n return this.#model.provider;\n }\n\n getModelId() {\n return this.#model.modelId;\n }\n\n getModel() {\n return this.#model;\n }\n\n private _applySchemaCompat(schema: ZodSchema | JSONSchema7): Schema {\n const model = this.#model;\n\n const schemaCompatLayers = [];\n\n if (model) {\n const modelInfo = {\n modelId: model.modelId,\n supportsStructuredOutputs: model.supportsStructuredOutputs ?? false,\n provider: model.provider,\n };\n schemaCompatLayers.push(\n new OpenAIReasoningSchemaCompatLayer(modelInfo),\n new OpenAISchemaCompatLayer(modelInfo),\n new GoogleSchemaCompatLayer(modelInfo),\n new AnthropicSchemaCompatLayer(modelInfo),\n new DeepSeekSchemaCompatLayer(modelInfo),\n new MetaSchemaCompatLayer(modelInfo),\n );\n }\n\n // \"Type instantiation is excessively deep\" error from complex ZodSchema generic inference\n return applyCompatLayer({\n schema: schema as any,\n compatLayers: schemaCompatLayers,\n mode: 'aiSdkSchema',\n });\n }\n\n async __text<Tools extends ToolSet, Z extends ZodSchema | JSONSchema7 | undefined>({\n runId,\n messages,\n maxSteps = 5,\n tools = {},\n temperature,\n toolChoice = 'auto',\n onStepFinish,\n experimental_output,\n threadId,\n resourceId,\n requestContext,\n ...rest\n }: GenerateTextWithMessagesArgs<Tools, Z>): Promise<GenerateTextResult<Tools, Z>> {\n const model = this.#model;\n const observabilityContext = resolveObservabilityContext(rest);\n\n this.logger.debug('Generating text', {\n runId,\n messages,\n maxSteps,\n threadId,\n resourceId,\n tools: Object.keys(tools),\n });\n\n let schema: z.ZodType<inferOutput<Z>> | Schema<inferOutput<Z>> | undefined = undefined;\n\n if (experimental_output) {\n this.logger.debug('Using experimental output', {\n runId,\n });\n\n if (isZodType(experimental_output)) {\n schema = experimental_output as z.ZodType<inferOutput<Z>>;\n if (isZodArray(schema)) {\n schema = getZodDef(schema).type as z.ZodType<inferOutput<Z>>;\n }\n\n // Convert Zod schema to JSON Schema via standard schema interface\n const standardSchema = toStandardSchema(schema as any);\n const jsonSchemaToUse = standardSchemaToJSONSchema(standardSchema);\n\n schema = jsonSchema<inferOutput<Z>>(jsonSchemaToUse);\n } else {\n schema = jsonSchema<inferOutput<Z>>(experimental_output);\n }\n }\n\n // make json schema a ai sdk schema\n if (tools && Object.keys(tools).length > 0) {\n for (const tool of Object.values(tools)) {\n if (tool.parameters) {\n if ('validate' in tool.parameters) {\n tool.parameters = tool.parameters;\n } else if (isStandardSchemaWithJSON(tool.parameters)) {\n tool.parameters = jsonSchema(standardSchemaToJSONSchema(tool.parameters));\n } else {\n tool.parameters = jsonSchema(tool.parameters);\n }\n }\n }\n }\n\n const llmSpan = observabilityContext.tracingContext.currentSpan?.createChildSpan({\n name: `llm: '${model.modelId}'`,\n type: SpanType.MODEL_GENERATION,\n input: {\n messages,\n schema,\n },\n attributes: {\n model: model.modelId,\n provider: model.provider,\n parameters: {\n temperature,\n maxOutputTokens: rest.maxTokens,\n topP: rest.topP,\n frequencyPenalty: rest.frequencyPenalty,\n presencePenalty: rest.presencePenalty,\n },\n streaming: false,\n },\n metadata: {\n runId,\n threadId,\n resourceId,\n },\n tracingPolicy: this.#options?.tracingPolicy,\n requestContext,\n });\n\n const argsForExecute: OriginalGenerateTextOptions<Tools, Z> = {\n ...rest,\n messages,\n model,\n temperature,\n tools: {\n ...(tools as Tools),\n },\n toolChoice,\n maxSteps,\n onStepFinish: async props => {\n try {\n await onStepFinish?.({ ...props, runId: runId! });\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_TEXT_ON_STEP_FINISH_CALLBACK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n finishReason: props?.finishReason,\n toolCalls: props?.toolCalls ? JSON.stringify(props.toolCalls) : '',\n toolResults: props?.toolResults ? JSON.stringify(props.toolResults) : '',\n usage: props?.usage ? JSON.stringify(props.usage) : '',\n },\n },\n e,\n );\n throw mastraError;\n }\n\n this.logger.debug('Text step change', {\n text: props?.text,\n toolCalls: props?.toolCalls,\n toolResults: props?.toolResults,\n finishReason: props?.finishReason,\n usage: props?.usage,\n runId,\n });\n\n const remainingTokens = parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'] ?? '', 10);\n if (!isNaN(remainingTokens) && remainingTokens > 0 && remainingTokens < 2000) {\n this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId, remainingTokens });\n const rateLimitSpan = llmSpan?.createChildSpan({\n name: 'rate-limit-sleep',\n type: SpanType.GENERIC,\n metadata: { remainingTokens, delayMs: 10_000 },\n });\n await delay(10 * 1000);\n rateLimitSpan?.end();\n }\n },\n experimental_output: schema\n ? Output.object({\n schema,\n })\n : undefined,\n };\n\n try {\n const result: GenerateTextResult<Tools, Z> = await executeWithContext({\n span: llmSpan,\n fn: () => generateText(argsForExecute),\n });\n\n if (schema && result.finishReason === 'stop') {\n result.object = (result as any).experimental_output;\n }\n llmSpan?.end({\n output: {\n text: result.text,\n object: result.object,\n reasoning: result.reasoningDetails,\n reasoningText: result.reasoning,\n files: result.files,\n sources: result.sources,\n toolCalls: result.toolCalls,\n warnings: result.warnings,\n },\n attributes: {\n finishReason: result.finishReason,\n responseId: result.response?.id,\n responseModel: result.response?.modelId,\n usage: convertV4Usage(result.usage),\n },\n });\n\n return result;\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_GENERATE_TEXT_AI_SDK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Generate text failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n }\n\n async __textObject<Z extends ZodSchema | JSONSchema7>({\n messages,\n structuredOutput,\n runId,\n threadId,\n resourceId,\n requestContext,\n ...rest\n }: GenerateObjectWithMessagesArgs<Z>): Promise<GenerateObjectResult<Z>> {\n const model = this.#model;\n const observabilityContext = resolveObservabilityContext(rest);\n\n this.logger.debug('Generating text object', { runId });\n\n const llmSpan = observabilityContext.tracingContext.currentSpan?.createChildSpan({\n name: `llm: '${model.modelId}'`,\n type: SpanType.MODEL_GENERATION,\n input: {\n messages,\n },\n attributes: {\n model: model.modelId,\n provider: model.provider,\n parameters: {\n temperature: rest.temperature,\n maxOutputTokens: rest.maxTokens,\n topP: rest.topP,\n frequencyPenalty: rest.frequencyPenalty,\n presencePenalty: rest.presencePenalty,\n },\n streaming: false,\n },\n metadata: {\n runId,\n threadId,\n resourceId,\n },\n tracingPolicy: this.#options?.tracingPolicy,\n requestContext,\n });\n\n try {\n let output: 'object' | 'array' = 'object';\n if (isZodArray(structuredOutput)) {\n output = 'array';\n const zodDef = getZodDef(structuredOutput);\n if ('element' in zodDef) {\n structuredOutput = zodDef.element;\n } else {\n structuredOutput = zodDef.type;\n }\n }\n\n const processedSchema = this._applySchemaCompat(structuredOutput!);\n llmSpan?.update({\n input: {\n messages,\n schema: processedSchema,\n },\n });\n\n const argsForExecute: OriginalGenerateObjectOptions<Z> = {\n ...rest,\n messages,\n model,\n output,\n schema: processedSchema as Schema<Z>,\n };\n\n try {\n // @ts-expect-error - output in our implementation can only be object or array\n const result = await generateObject(argsForExecute);\n\n llmSpan?.end({\n output: {\n object: result.object,\n warnings: result.warnings,\n },\n attributes: {\n finishReason: result.finishReason,\n responseId: result.response?.id,\n responseModel: result.response?.modelId,\n usage: convertV4Usage(result.usage),\n },\n });\n\n // @ts-expect-error - output in our implementation can only be object or array\n return result;\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_GENERATE_OBJECT_AI_SDK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Generate object failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n } catch (e: unknown) {\n if (e instanceof MastraError) {\n throw e;\n }\n\n const mastraError = new MastraError(\n {\n id: 'LLM_GENERATE_OBJECT_AI_SDK_SCHEMA_CONVERSION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Generate object schema conversion failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n }\n\n __stream<Tools extends ToolSet, Z extends ZodSchema | JSONSchema7 | undefined = undefined>({\n messages,\n onStepFinish,\n onFinish,\n maxSteps = 5,\n tools = {},\n runId,\n temperature,\n toolChoice = 'auto',\n experimental_output,\n threadId,\n resourceId,\n requestContext,\n ...rest\n }: StreamTextWithMessagesArgs<Tools, Z>): StreamTextResult<Tools, Z> {\n const model = this.#model;\n const observabilityContext = resolveObservabilityContext(rest);\n\n let schema: z.ZodType<Z> | Schema<Z> | undefined;\n if (experimental_output) {\n if (typeof (experimental_output as any).parse === 'function') {\n schema = experimental_output as z.ZodType<Z>;\n if (isZodArray(schema)) {\n schema = getZodDef(schema).type as z.ZodType<Z>;\n }\n } else {\n schema = jsonSchema(experimental_output as JSONSchema7) as Schema<Z>;\n }\n }\n\n const llmSpan = observabilityContext.tracingContext.currentSpan?.createChildSpan({\n name: `llm: '${model.modelId}'`,\n type: SpanType.MODEL_GENERATION,\n input: {\n messages,\n },\n attributes: {\n model: model.modelId,\n provider: model.provider,\n parameters: {\n temperature,\n maxOutputTokens: rest.maxTokens,\n topP: rest.topP,\n frequencyPenalty: rest.frequencyPenalty,\n presencePenalty: rest.presencePenalty,\n },\n streaming: true,\n },\n metadata: {\n runId,\n threadId,\n resourceId,\n },\n tracingPolicy: this.#options?.tracingPolicy,\n requestContext,\n });\n\n if (llmSpan) {\n executeWithContextSync({\n span: llmSpan,\n fn: () =>\n this.logger.debug('Streaming text', {\n runId,\n threadId,\n resourceId,\n messages,\n maxSteps,\n tools: Object.keys(tools || {}),\n }),\n });\n }\n\n // make json schema a ai sdk schema\n if (tools && Object.keys(tools).length > 0) {\n for (const tool of Object.values(tools)) {\n if (tool.parameters) {\n if ('validate' in tool.parameters) {\n tool.parameters = tool.parameters;\n } else if (isStandardSchemaWithJSON(tool.parameters)) {\n tool.parameters = jsonSchema(standardSchemaToJSONSchema(tool.parameters));\n } else {\n tool.parameters = jsonSchema(tool.parameters);\n }\n }\n }\n }\n\n const argsForExecute: OriginalStreamTextOptions<Tools, Z> = {\n model,\n temperature,\n tools: {\n ...(tools as Tools),\n },\n maxSteps,\n toolChoice,\n onStepFinish: async props => {\n try {\n await onStepFinish?.({ ...props, runId: runId! });\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_ON_STEP_FINISH_CALLBACK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n finishReason: props?.finishReason,\n toolCalls: props?.toolCalls ? JSON.stringify(props.toolCalls) : '',\n toolResults: props?.toolResults ? JSON.stringify(props.toolResults) : '',\n usage: props?.usage ? JSON.stringify(props.usage) : '',\n },\n },\n e,\n );\n this.logger.trackException(mastraError);\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n\n this.logger.debug('Stream step change', {\n text: props?.text,\n toolCalls: props?.toolCalls,\n toolResults: props?.toolResults,\n finishReason: props?.finishReason,\n usage: props?.usage,\n runId,\n });\n\n const remainingTokens = parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'] ?? '', 10);\n if (!isNaN(remainingTokens) && remainingTokens > 0 && remainingTokens < 2000) {\n this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId, remainingTokens });\n const rateLimitSpan = llmSpan?.createChildSpan({\n name: 'rate-limit-sleep',\n type: SpanType.GENERIC,\n metadata: { remainingTokens, delayMs: 10_000 },\n });\n await delay(10 * 1000);\n rateLimitSpan?.end();\n }\n },\n onFinish: async props => {\n // End the model generation span BEFORE calling the user's onFinish callback\n // This ensures the model span ends before the agent span\n llmSpan?.end({\n output: {\n text: props?.text,\n reasoning: props?.reasoningDetails,\n reasoningText: props?.reasoning,\n files: props?.files,\n sources: props?.sources,\n toolCalls: props?.toolCalls,\n warnings: props?.warnings,\n },\n attributes: {\n finishReason: props?.finishReason,\n usage: convertV4Usage(props?.usage),\n },\n });\n\n try {\n await onFinish?.({ ...props, runId: runId! });\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_ON_FINISH_CALLBACK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n finishReason: props?.finishReason,\n toolCalls: props?.toolCalls ? JSON.stringify(props.toolCalls) : '',\n toolResults: props?.toolResults ? JSON.stringify(props.toolResults) : '',\n usage: props?.usage ? JSON.stringify(props.usage) : '',\n },\n },\n e,\n );\n llmSpan?.error({ error: mastraError });\n this.logger.trackException(mastraError);\n throw mastraError;\n }\n\n this.logger.debug('Stream finished', {\n text: props?.text,\n toolCalls: props?.toolCalls,\n toolResults: props?.toolResults,\n finishReason: props?.finishReason,\n usage: props?.usage,\n runId,\n threadId,\n resourceId,\n });\n },\n onError: ({ error }) => {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_TEXT_AI_SDK_STREAMING_ERROR',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n error,\n );\n this.logger.error('Stream text error', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n },\n ...rest,\n messages,\n experimental_output: schema\n ? (Output.object({\n schema,\n }) as any)\n : undefined,\n };\n\n try {\n return executeWithContextSync({ span: llmSpan, fn: () => streamText(argsForExecute) });\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_TEXT_AI_SDK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Stream text failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n }\n\n __streamObject<T extends ZodSchema | JSONSchema7>({\n messages,\n runId,\n requestContext,\n threadId,\n resourceId,\n onFinish,\n structuredOutput,\n ...rest\n }: StreamObjectWithMessagesArgs<T>): StreamObjectResult<T> {\n const model = this.#model;\n const observabilityContext = resolveObservabilityContext(rest);\n\n this.logger.debug('Streaming structured output', {\n runId,\n messages,\n });\n\n const llmSpan = observabilityContext.tracingContext.currentSpan?.createChildSpan({\n name: `llm: '${model.modelId}'`,\n type: SpanType.MODEL_GENERATION,\n input: {\n messages,\n },\n attributes: {\n model: model.modelId,\n provider: model.provider,\n parameters: {\n temperature: rest.temperature,\n maxOutputTokens: rest.maxTokens,\n topP: rest.topP,\n frequencyPenalty: rest.frequencyPenalty,\n presencePenalty: rest.presencePenalty,\n },\n streaming: true,\n },\n metadata: {\n runId,\n threadId,\n resourceId,\n },\n tracingPolicy: this.#options?.tracingPolicy,\n requestContext,\n });\n\n try {\n let output: 'object' | 'array' = 'object';\n if (isZodArray(structuredOutput)) {\n output = 'array';\n structuredOutput = getZodDef(structuredOutput).type;\n }\n\n const processedSchema = this._applySchemaCompat(structuredOutput!);\n llmSpan?.update({\n input: {\n messages,\n schema: processedSchema,\n },\n });\n\n const argsForExecute: OriginalStreamObjectOptions<T> = {\n ...rest,\n model,\n onFinish: async (props: any) => {\n // End the model generation span BEFORE calling the user's onFinish callback\n // This ensures the model span ends before the agent span\n llmSpan?.end({\n output: {\n text: props?.text,\n object: props?.object,\n reasoning: props?.reasoningDetails,\n reasoningText: props?.reasoning,\n files: props?.files,\n sources: props?.sources,\n warnings: props?.warnings,\n },\n attributes: {\n finishReason: props?.finishReason,\n usage: props?.usage,\n },\n });\n\n try {\n await onFinish?.({ ...props, runId: runId! });\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_OBJECT_ON_FINISH_CALLBACK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n toolCalls: '',\n toolResults: '',\n finishReason: '',\n usage: props?.usage ? JSON.stringify(props.usage) : '',\n },\n },\n e,\n );\n this.logger.trackException(mastraError);\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n\n this.logger.debug('Object stream finished', {\n usage: props?.usage,\n runId,\n threadId,\n resourceId,\n });\n },\n onError: ({ error }) => {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_OBJECT_AI_SDK_STREAMING_ERROR',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n error,\n );\n this.logger.error('Stream object error', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n },\n messages,\n output,\n schema: processedSchema as Schema<inferOutput<T>>,\n };\n\n try {\n return streamObject(argsForExecute as any);\n } catch (e: unknown) {\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_OBJECT_AI_SDK_EXECUTION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.THIRD_PARTY,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Stream object failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n } catch (e: unknown) {\n if (e instanceof MastraError) {\n llmSpan?.error({ error: e });\n throw e;\n }\n\n const mastraError = new MastraError(\n {\n id: 'LLM_STREAM_OBJECT_AI_SDK_SCHEMA_CONVERSION_FAILED',\n domain: ErrorDomain.LLM,\n category: ErrorCategory.USER,\n details: {\n modelId: model.modelId,\n modelProvider: model.provider,\n runId: runId ?? 'unknown',\n threadId: threadId ?? 'unknown',\n resourceId: resourceId ?? 'unknown',\n },\n },\n e,\n );\n this.logger.error('Stream object schema conversion failed', {\n error: mastraError,\n runId,\n threadId,\n resourceId,\n modelId: model.modelId,\n modelProvider: model.provider,\n });\n llmSpan?.error({ error: mastraError });\n throw mastraError;\n }\n }\n\n convertToMessages(messages: string | string[] | CoreMessage[]): CoreMessage[] {\n if (Array.isArray(messages)) {\n return messages.map(m => {\n if (typeof m === 'string') {\n return {\n role: 'user',\n content: m,\n };\n }\n return m;\n });\n }\n\n return [\n {\n role: 'user',\n content: messages,\n },\n ];\n }\n\n async generate<\n Output extends ZodSchema | JSONSchema7 | undefined = undefined,\n StructuredOutput extends ZodSchema | JSONSchema7 | undefined = undefined,\n Tools extends ToolSet = ToolSet,\n >(\n messages: string | string[] | CoreMessage[],\n args?: Omit<\n Output extends undefined\n ? GenerateTextWithMessagesArgs<Tools, StructuredOutput>\n : Omit<GenerateObjectWithMessagesArgs<NonNullable<Output>>, 'structuredOutput' | 'output'>,\n 'messages'\n > & { output?: Output },\n ): Promise<GenerateReturn<Tools, Output, StructuredOutput>> {\n const msgs = this.convertToMessages(messages);\n const { output, ...rest } = args ?? ({} as NonNullable<typeof args>);\n\n if (!output) {\n return (await this.__text<Tools, StructuredOutput>({\n messages: msgs,\n ...(rest as unknown as Omit<GenerateTextWithMessagesArgs<Tools, StructuredOutput>, 'messages'>),\n })) as GenerateReturn<Tools, Output, StructuredOutput>;\n }\n\n return (await this.__textObject({\n messages: msgs,\n structuredOutput: output as NonNullable<Output>,\n ...(rest as unknown as Omit<\n GenerateObjectWithMessagesArgs<NonNullable<Output>>,\n 'messages' | 'structuredOutput'\n >),\n })) as GenerateReturn<Tools, Output, StructuredOutput>;\n }\n\n stream<\n Output extends ZodSchema | JSONSchema7 | undefined = undefined,\n StructuredOutput extends ZodSchema | JSONSchema7 | undefined = undefined,\n Tools extends ToolSet = ToolSet,\n >(\n messages: string | string[] | CoreMessage[],\n args?: Omit<\n Output extends undefined\n ? StreamTextWithMessagesArgs<Tools, StructuredOutput>\n : Omit<StreamObjectWithMessagesArgs<NonNullable<Output>>, 'structuredOutput' | 'output'> & { maxSteps?: never },\n 'messages'\n > & { output?: Output },\n ): StreamReturn<Tools, Output, StructuredOutput> {\n const msgs = this.convertToMessages(messages);\n const { output, ...rest } = args ?? ({} as NonNullable<typeof args>);\n\n if (!output) {\n const {\n maxSteps = 5,\n onFinish,\n ...streamRest\n } = rest as unknown as Omit<StreamTextWithMessagesArgs<Tools, StructuredOutput>, 'messages'>;\n return this.__stream({\n messages: msgs,\n maxSteps,\n onFinish: onFinish as StreamTextOnFinishCallback<Tools> | undefined,\n ...streamRest,\n }) as StreamReturn<Tools, Output, StructuredOutput>;\n }\n\n const { onFinish, ...objectRest } = rest as unknown as Omit<\n StreamObjectWithMessagesArgs<NonNullable<Output>>,\n 'messages' | 'structuredOutput'\n >;\n return this.__streamObject({\n messages: msgs,\n structuredOutput: output as NonNullable<Output>,\n onFinish: onFinish as StreamObjectOnFinishCallback<inferOutput<Output>> | undefined,\n ...objectRest,\n }) as StreamReturn<Tools, Output, StructuredOutput>;\n }\n}\n"],"mappings":"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"}