{"version":3,"sources":["../src/llm/model/base.ts","../src/llm/model/model.ts","../src/agent/index.ts"],"names":["__privateSet","__name","_mastra","__privateAdd","_model","__privateGet","createMastraProxy","makeCoreTool","delay","z","jsonSchema","generateText","Output","generateObject","streamText","streamObject","messages","chatMessages","InstrumentClass","MastraBase","RegisteredLogger","__publicField","ensureToolProperties","threadId","memoryConfig","runId","executeHook","result"],"mappings":"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","file":"chunk-JO77SZ6N.cjs","sourcesContent":["import type {\n  CoreMessage,\n  DeepPartial,\n  GenerateObjectResult,\n  GenerateTextResult,\n  LanguageModel,\n  StreamObjectResult,\n  StreamTextResult,\n} from 'ai';\nimport type { JSONSchema7 } from 'json-schema';\nimport type { ZodSchema } from 'zod';\n\nimport type {\n  GenerateReturn,\n  LLMInnerStreamOptions,\n  LLMStreamObjectOptions,\n  LLMStreamOptions,\n  LLMTextObjectOptions,\n  LLMTextOptions,\n  StreamReturn,\n} from '../';\nimport type { MastraPrimitives } from '../../action';\nimport { MastraBase } from '../../base';\nimport { RegisteredLogger } from '../../logger';\nimport type { Mastra } from '../../mastra';\n\nexport class MastraLLMBase extends MastraBase {\n  // @ts-ignore\n  #mastra?: MastraPrimitives;\n  #model: LanguageModel;\n\n  constructor({ name, model }: { name: string; model: LanguageModel }) {\n    super({\n      component: RegisteredLogger.LLM,\n      name,\n    });\n\n    this.#model = model;\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  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  __registerPrimitives(p: MastraPrimitives) {\n    if (p.telemetry) {\n      this.__setTelemetry(p.telemetry);\n    }\n\n    if (p.logger) {\n      this.__setLogger(p.logger);\n    }\n  }\n\n  __registerMastra(p: Mastra) {\n    this.#mastra = p;\n  }\n\n  async __text<Z extends ZodSchema | JSONSchema7 | undefined>(\n    input: LLMTextOptions<Z>,\n  ): Promise<GenerateTextResult<any, any>> {\n    this.logger.debug(`[LLMs:${this.name}] Generating text.`, { input });\n    throw new Error('Method not implemented.');\n  }\n\n  async __textObject<T extends ZodSchema | JSONSchema7 | undefined>(\n    input: LLMTextObjectOptions<T>,\n  ): Promise<GenerateObjectResult<T>> {\n    this.logger.debug(`[LLMs:${this.name}] Generating object.`, { input });\n    throw new Error('Method not implemented.');\n  }\n\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[],\n    options: LLMStreamOptions<Z> = {},\n  ): Promise<GenerateReturn<Z>> {\n    this.logger.debug(`[LLMs:${this.name}] Generating text.`, { messages, options });\n    throw new Error('Method not implemented.');\n  }\n\n  async __stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    input: LLMInnerStreamOptions<Z>,\n  ): Promise<StreamTextResult<any, any>> {\n    this.logger.debug(`[LLMs:${this.name}] Streaming text.`, { input });\n    throw new Error('Method not implemented.');\n  }\n\n  async __streamObject<T extends ZodSchema | JSONSchema7 | undefined>(\n    input: LLMStreamObjectOptions<T>,\n  ): Promise<StreamObjectResult<DeepPartial<T>, T, never>> {\n    this.logger.debug(`[LLMs:${this.name}] Streaming object.`, { input });\n    throw new Error('Method not implemented.');\n  }\n\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[],\n    options: LLMStreamOptions<Z> = {},\n  ): Promise<StreamReturn<Z>> {\n    this.logger.debug(`[LLMs:${this.name}] Streaming text.`, { messages, options });\n    throw new Error('Method not implemented.');\n  }\n}\n","import type { CoreMessage, CoreToolMessage, LanguageModel, Schema, ToolInvocation, ToolResultPart } from 'ai';\nimport { generateObject, generateText, jsonSchema, Output, streamObject, streamText } from 'ai';\nimport type { JSONSchema7 } from 'json-schema';\nimport type { ZodSchema } from 'zod';\nimport { z } from 'zod';\n\nimport type {\n  GenerateReturn,\n  LLMInnerStreamOptions,\n  LLMStreamObjectOptions,\n  LLMStreamOptions,\n  LLMTextObjectOptions,\n  LLMTextOptions,\n  StreamReturn,\n} from '../';\nimport type { MastraPrimitives } from '../../action';\nimport type { AiMessageType, ToolsInput } from '../../agent/types';\nimport type { Mastra } from '../../mastra';\nimport type { MessageType } from '../../memory';\nimport type { MastraMemory } from '../../memory/memory';\nimport type { CoreTool } from '../../tools';\nimport { createMastraProxy, delay, makeCoreTool } from '../../utils';\n\nimport { MastraLLMBase } from './base';\n\nexport class MastraLLM extends MastraLLMBase {\n  #model: LanguageModel;\n  #mastra?: Mastra;\n\n  constructor({ model, mastra }: { model: LanguageModel; mastra?: Mastra }) {\n    super({ name: 'aisdk', model });\n\n    this.#model = model;\n\n    if (mastra) {\n      this.#mastra = mastra;\n      if (mastra.getLogger()) {\n        this.__setLogger(mastra.getLogger());\n      }\n    }\n  }\n\n  __registerPrimitives(p: MastraPrimitives) {\n    if (p.telemetry) {\n      this.__setTelemetry(p.telemetry);\n    }\n\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  convertTools({\n    tools,\n    runId,\n    threadId,\n    resourceId,\n    memory,\n  }: {\n    tools?: ToolsInput;\n    runId?: string;\n    threadId?: string;\n    resourceId?: string;\n    memory?: MastraMemory;\n  } = {}): Record<string, CoreTool> {\n    this.logger.debug('Starting tool conversion for LLM');\n\n    let mastraProxy = undefined;\n    const logger = this.logger;\n    if (this.#mastra) {\n      mastraProxy = createMastraProxy({ mastra: this.#mastra, logger });\n    }\n\n    const converted = Object.entries(tools || {}).reduce(\n      (memo, value) => {\n        const k = value[0] as string;\n        const tool = value[1];\n\n        if (tool) {\n          const options = {\n            name: k,\n            runId,\n            threadId,\n            resourceId,\n            logger: this.logger,\n            memory,\n            mastra: mastraProxy,\n          };\n          memo[k] = makeCoreTool(tool, options);\n        }\n        return memo;\n      },\n      {} as Record<string, CoreTool>,\n    );\n\n    this.logger.debug(`Converted tools for LLM`);\n\n    return converted;\n  }\n\n  async __text<Z extends ZodSchema | JSONSchema7 | undefined>({\n    runId,\n    messages,\n    maxSteps,\n    tools,\n    convertedTools,\n    temperature,\n    toolChoice = 'auto',\n    onStepFinish,\n    experimental_output,\n    telemetry,\n    threadId,\n    resourceId,\n    memory,\n    ...rest\n  }: LLMTextOptions<Z> & { memory?: MastraMemory }) {\n    const model = this.#model;\n\n    this.logger.debug(`[LLM] - Generating text`, {\n      runId,\n      messages,\n      maxSteps,\n      threadId,\n      resourceId,\n      tools: Object.keys(tools || convertedTools || {}),\n    });\n\n    const finalTools = convertedTools || this.convertTools({ tools, runId, threadId, resourceId, memory });\n\n    const argsForExecute = {\n      model,\n      temperature,\n      tools: {\n        ...finalTools,\n      },\n      toolChoice,\n      maxSteps,\n      onStepFinish: async (props: any) => {\n        void onStepFinish?.(props);\n\n        this.logger.debug('[LLM] - 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        if (\n          props?.response?.headers?.['x-ratelimit-remaining-tokens'] &&\n          parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'], 10) < 2000\n        ) {\n          this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId });\n          await delay(10 * 1000);\n        }\n      },\n      ...rest,\n    };\n\n    let schema: z.ZodType<Z> | Schema<Z> | undefined;\n\n    if (experimental_output) {\n      this.logger.debug('[LLM] - Using experimental output', {\n        runId,\n      });\n      if (typeof (experimental_output as any).parse === 'function') {\n        schema = experimental_output as z.ZodType<Z>;\n        if (schema instanceof z.ZodArray) {\n          schema = schema._def.type as z.ZodType<Z>;\n        }\n      } else {\n        schema = jsonSchema(experimental_output as JSONSchema7) as Schema<Z>;\n      }\n    }\n\n    return await generateText({\n      messages,\n      ...argsForExecute,\n      experimental_telemetry: {\n        ...this.experimental_telemetry,\n        ...telemetry,\n      },\n      experimental_output: schema\n        ? Output.object({\n            schema,\n          })\n        : undefined,\n    });\n  }\n\n  async __textObject<T extends ZodSchema | JSONSchema7 | undefined>({\n    messages,\n    onStepFinish,\n    maxSteps = 5,\n    tools,\n    convertedTools,\n    structuredOutput,\n    runId,\n    temperature,\n    toolChoice = 'auto',\n    telemetry,\n    threadId,\n    resourceId,\n    memory,\n    ...rest\n  }: LLMTextObjectOptions<T> & { memory?: MastraMemory }) {\n    const model = this.#model;\n\n    this.logger.debug(`[LLM] - Generating a text object`, { runId });\n\n    const finalTools = convertedTools || this.convertTools({ tools, runId, threadId, resourceId, memory });\n\n    const argsForExecute = {\n      model,\n      temperature,\n      tools: {\n        ...finalTools,\n      },\n      maxSteps,\n      toolChoice,\n      onStepFinish: async (props: any) => {\n        void onStepFinish?.(props);\n\n        this.logger.debug('[LLM] - 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        if (\n          props?.response?.headers?.['x-ratelimit-remaining-tokens'] &&\n          parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'], 10) < 2000\n        ) {\n          this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId });\n          await delay(10 * 1000);\n        }\n      },\n      ...rest,\n    };\n\n    let schema: z.ZodType<T> | Schema<T>;\n    let output = 'object';\n\n    if (typeof (structuredOutput as any).parse === 'function') {\n      schema = structuredOutput as z.ZodType<T>;\n      if (schema instanceof z.ZodArray) {\n        output = 'array';\n        schema = schema._def.type as z.ZodType<T>;\n      }\n    } else {\n      schema = jsonSchema(structuredOutput as JSONSchema7) as Schema<T>;\n    }\n\n    return await generateObject({\n      messages,\n      ...argsForExecute,\n      output: output as any,\n      schema,\n      experimental_telemetry: {\n        ...this.experimental_telemetry,\n        ...telemetry,\n      },\n    });\n  }\n\n  async __stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>({\n    messages,\n    onStepFinish,\n    onFinish,\n    maxSteps = 5,\n    tools,\n    convertedTools,\n    runId,\n    temperature,\n    toolChoice = 'auto',\n    experimental_output,\n    telemetry,\n    threadId,\n    resourceId,\n    memory,\n    ...rest\n  }: LLMInnerStreamOptions<Z> & { memory?: MastraMemory }) {\n    const model = this.#model;\n    this.logger.debug(`[LLM] - Streaming text`, {\n      runId,\n      threadId,\n      resourceId,\n      messages,\n      maxSteps,\n      tools: Object.keys(tools || convertedTools || {}),\n    });\n\n    const finalTools = convertedTools || this.convertTools({ tools, runId, threadId, resourceId, memory });\n\n    const argsForExecute = {\n      model,\n      temperature,\n      tools: {\n        ...finalTools,\n      },\n      maxSteps,\n      toolChoice,\n      onStepFinish: async (props: any) => {\n        void onStepFinish?.(props);\n\n        this.logger.debug('[LLM] - 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        if (\n          props?.response?.headers?.['x-ratelimit-remaining-tokens'] &&\n          parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'], 10) < 2000\n        ) {\n          this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId });\n          await delay(10 * 1000);\n        }\n      },\n      onFinish: async (props: any) => {\n        void onFinish?.(props);\n\n        this.logger.debug('[LLM] - 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      ...rest,\n    };\n\n    let schema: z.ZodType<Z> | Schema<Z> | undefined;\n\n    if (experimental_output) {\n      this.logger.debug('[LLM] - Using experimental output', {\n        runId,\n      });\n      if (typeof (experimental_output as any).parse === 'function') {\n        schema = experimental_output as z.ZodType<Z>;\n        if (schema instanceof z.ZodArray) {\n          schema = schema._def.type as z.ZodType<Z>;\n        }\n      } else {\n        schema = jsonSchema(experimental_output as JSONSchema7) as Schema<Z>;\n      }\n    }\n\n    return await streamText({\n      messages,\n      ...argsForExecute,\n      experimental_telemetry: {\n        ...this.experimental_telemetry,\n        ...telemetry,\n      },\n      experimental_output: schema\n        ? Output.object({\n            schema,\n          })\n        : undefined,\n    });\n  }\n\n  async __streamObject<T extends ZodSchema | JSONSchema7 | undefined>({\n    messages,\n    onStepFinish,\n    onFinish,\n    maxSteps = 5,\n    tools,\n    convertedTools,\n    structuredOutput,\n    runId,\n    temperature,\n    toolChoice = 'auto',\n    telemetry,\n    threadId,\n    resourceId,\n    memory,\n    ...rest\n  }: LLMStreamObjectOptions<T> & { memory?: MastraMemory }) {\n    const model = this.#model;\n    this.logger.debug(`[LLM] - Streaming structured output`, {\n      runId,\n      messages,\n      maxSteps,\n      tools: Object.keys(tools || convertedTools || {}),\n    });\n\n    const finalTools = convertedTools || this.convertTools({ tools, runId, threadId, resourceId, memory });\n\n    const argsForExecute = {\n      model,\n      temperature,\n      tools: {\n        ...finalTools,\n      },\n      maxSteps,\n      toolChoice,\n      onStepFinish: async (props: any) => {\n        void onStepFinish?.(props);\n\n        this.logger.debug('[LLM] - 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          threadId,\n          resourceId,\n        });\n\n        if (\n          props?.response?.headers?.['x-ratelimit-remaining-tokens'] &&\n          parseInt(props?.response?.headers?.['x-ratelimit-remaining-tokens'], 10) < 2000\n        ) {\n          this.logger.warn('Rate limit approaching, waiting 10 seconds', { runId });\n          await delay(10 * 1000);\n        }\n      },\n      onFinish: async (props: any) => {\n        void onFinish?.(props);\n\n        this.logger.debug('[LLM] - 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      ...rest,\n    };\n\n    let schema: z.ZodType<T> | Schema<T>;\n    let output = 'object';\n\n    if (typeof (structuredOutput as any).parse === 'function') {\n      schema = structuredOutput as z.ZodType<T>;\n      if (schema instanceof z.ZodArray) {\n        output = 'array';\n        schema = schema._def.type as z.ZodType<T>;\n      }\n    } else {\n      schema = jsonSchema(structuredOutput as JSONSchema7) as Schema<T>;\n    }\n\n    return streamObject({\n      messages,\n      ...argsForExecute,\n      output: output as any,\n      schema,\n      experimental_telemetry: {\n        ...this.experimental_telemetry,\n        ...telemetry,\n      },\n    });\n  }\n\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[],\n    {\n      maxSteps = 5,\n      onStepFinish,\n      tools,\n      convertedTools,\n      runId,\n      output,\n      temperature,\n      telemetry,\n      memory,\n      ...rest\n    }: LLMStreamOptions<Z> & { memory?: MastraMemory } = {},\n  ): Promise<GenerateReturn<Z>> {\n    const msgs = this.convertToMessages(messages);\n\n    if (!output) {\n      return (await this.__text({\n        messages: msgs,\n        onStepFinish,\n        maxSteps,\n        tools,\n        convertedTools,\n        runId,\n        temperature,\n        memory,\n        ...rest,\n      })) as unknown as GenerateReturn<Z>;\n    }\n\n    return (await this.__textObject({\n      messages: msgs,\n      structuredOutput: output,\n      onStepFinish,\n      maxSteps,\n      tools,\n      convertedTools,\n      runId,\n      telemetry,\n      memory,\n      ...rest,\n    })) as unknown as GenerateReturn<Z>;\n  }\n\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[],\n    {\n      maxSteps = 5,\n      onFinish,\n      onStepFinish,\n      tools,\n      convertedTools,\n      runId,\n      output,\n      temperature,\n      telemetry,\n      ...rest\n    }: LLMStreamOptions<Z> = {},\n  ) {\n    const msgs = this.convertToMessages(messages);\n\n    if (!output) {\n      return (await this.__stream({\n        messages: msgs as CoreMessage[],\n        onStepFinish,\n        onFinish,\n        maxSteps,\n        tools,\n        convertedTools,\n        runId,\n        temperature,\n        telemetry,\n        ...rest,\n      })) as unknown as StreamReturn<Z>;\n    }\n\n    return (await this.__streamObject({\n      messages: msgs,\n      structuredOutput: output,\n      onStepFinish,\n      onFinish,\n      maxSteps,\n      tools,\n      convertedTools,\n      runId,\n      temperature,\n      telemetry,\n      ...rest,\n    })) as unknown as StreamReturn<Z>;\n  }\n\n  protected convertToUIMessages(messages: CoreMessage[]): AiMessageType[] {\n    function addToolMessageToChat({\n      toolMessage,\n      messages,\n      toolResultContents,\n    }: {\n      toolMessage: CoreToolMessage;\n      messages: Array<AiMessageType>;\n      toolResultContents: Array<ToolResultPart>;\n    }): { chatMessages: Array<AiMessageType>; toolResultContents: Array<ToolResultPart> } {\n      const chatMessages = messages.map(message => {\n        if (message.toolInvocations) {\n          return {\n            ...message,\n            toolInvocations: message.toolInvocations.map(toolInvocation => {\n              const toolResult = toolMessage.content.find(tool => tool.toolCallId === toolInvocation.toolCallId);\n\n              if (toolResult) {\n                return {\n                  ...toolInvocation,\n                  state: 'result',\n                  result: toolResult.result,\n                };\n              }\n\n              return toolInvocation;\n            }),\n          };\n        }\n\n        return message;\n      }) as Array<AiMessageType>;\n\n      const resultContents = [...toolResultContents, ...toolMessage.content];\n\n      return { chatMessages, toolResultContents: resultContents };\n    }\n\n    const { chatMessages } = messages.reduce(\n      (obj: { chatMessages: Array<AiMessageType>; toolResultContents: Array<ToolResultPart> }, message) => {\n        if (message.role === 'tool') {\n          return addToolMessageToChat({\n            toolMessage: message as CoreToolMessage,\n            messages: obj.chatMessages,\n            toolResultContents: obj.toolResultContents,\n          });\n        }\n\n        let textContent = '';\n        let toolInvocations: Array<ToolInvocation> = [];\n\n        if (typeof message.content === 'string') {\n          textContent = message.content;\n        } else if (typeof message.content === 'number') {\n          textContent = String(message.content);\n        } else if (Array.isArray(message.content)) {\n          for (const content of message.content) {\n            if (content.type === 'text') {\n              textContent += content.text;\n            } else if (content.type === 'tool-call') {\n              const toolResult = obj.toolResultContents.find(tool => tool.toolCallId === content.toolCallId);\n              toolInvocations.push({\n                state: toolResult ? 'result' : 'call',\n                toolCallId: content.toolCallId,\n                toolName: content.toolName,\n                args: content.args,\n                result: toolResult?.result,\n              });\n            }\n          }\n        }\n\n        obj.chatMessages.push({\n          id: (message as MessageType).id,\n          role: message.role as AiMessageType['role'],\n          content: textContent,\n          toolInvocations,\n        });\n\n        return obj;\n      },\n      { chatMessages: [], toolResultContents: [] } as {\n        chatMessages: Array<AiMessageType>;\n        toolResultContents: Array<ToolResultPart>;\n      },\n    );\n\n    return chatMessages;\n  }\n}\n","// import { randomUUID } from 'crypto';\nimport type {\n  AssistantContent,\n  CoreAssistantMessage,\n  CoreMessage,\n  CoreToolMessage,\n  CoreUserMessage,\n  GenerateObjectResult,\n  GenerateTextResult,\n  StreamObjectResult,\n  StreamTextResult,\n  TextPart,\n  ToolCallPart,\n  UserContent,\n} from 'ai';\nimport type { JSONSchema7 } from 'json-schema';\nimport type { ZodSchema, z } from 'zod';\n\nimport type { MastraPrimitives, MastraUnion } from '../action';\nimport { MastraBase } from '../base';\nimport type { Metric } from '../eval';\nimport { AvailableHooks, executeHook } from '../hooks';\nimport type { GenerateReturn, StreamReturn } from '../llm';\nimport type { MastraLLMBase } from '../llm/model';\nimport { MastraLLM } from '../llm/model';\nimport { RegisteredLogger } from '../logger';\nimport type { Mastra } from '../mastra';\nimport type { MastraMemory } from '../memory/memory';\nimport type { MemoryConfig } from '../memory/types';\nimport { InstrumentClass } from '../telemetry';\nimport type { CoreTool } from '../tools/types';\nimport { makeCoreTool, createMastraProxy, ensureToolProperties, ensureAllMessagesAreCoreMessages } from '../utils';\nimport type { CompositeVoice } from '../voice';\n\nimport type {\n  AgentConfig,\n  AgentGenerateOptions,\n  AgentStreamOptions,\n  AiMessageType,\n  MastraLanguageModel,\n  ToolsetsInput,\n  ToolsInput,\n} from './types';\n\nexport * from './types';\n\nconst randomUUID = crypto.randomUUID.bind(crypto);\n\n@InstrumentClass({\n  prefix: 'agent',\n  excludeMethods: ['__setTools', '__setLogger', '__setTelemetry', 'log'],\n})\nexport class Agent<\n  TTools extends ToolsInput = ToolsInput,\n  TMetrics extends Record<string, Metric> = Record<string, Metric>,\n> extends MastraBase {\n  public name: string;\n  readonly llm: MastraLLMBase;\n  instructions: string;\n  readonly model?: MastraLanguageModel;\n  #mastra?: Mastra;\n  #memory?: MastraMemory;\n  tools: TTools;\n  /** @deprecated This property is deprecated. Use evals instead. */\n  metrics: TMetrics;\n  evals: TMetrics;\n  voice?: CompositeVoice;\n\n  constructor(config: AgentConfig<TTools, TMetrics>) {\n    super({ component: RegisteredLogger.AGENT });\n\n    this.name = config.name;\n    this.instructions = config.instructions;\n\n    if (!config.model) {\n      throw new Error(`LanguageModel is required to create an Agent. Please provide the 'model'.`);\n    }\n\n    this.llm = new MastraLLM({ model: config.model, mastra: config.mastra });\n\n    this.tools = {} as TTools;\n\n    this.metrics = {} as TMetrics;\n    this.evals = {} as TMetrics;\n\n    if (config.tools) {\n      this.tools = ensureToolProperties(config.tools) as TTools;\n    }\n\n    if (config.mastra) {\n      this.__registerMastra(config.mastra);\n      this.__registerPrimitives({\n        telemetry: config.mastra.getTelemetry(),\n        logger: config.mastra.getLogger(),\n      });\n    }\n\n    if (config.metrics) {\n      this.logger.warn('The metrics property is deprecated. Please use evals instead to add evaluation metrics.');\n      this.metrics = config.metrics;\n      this.evals = config.metrics;\n    }\n\n    if (config.evals) {\n      this.evals = config.evals;\n    }\n\n    if (config.memory) {\n      this.#memory = config.memory;\n    }\n\n    if (config.voice) {\n      this.voice = config.voice;\n      this.voice?.addTools(this.tools);\n      this.voice?.addInstructions(config.instructions);\n    }\n  }\n\n  public hasOwnMemory(): boolean {\n    return Boolean(this.#memory);\n  }\n  public getMemory(): MastraMemory | undefined {\n    return this.#memory ?? this.#mastra?.memory;\n  }\n\n  __updateInstructions(newInstructions: string) {\n    this.instructions = newInstructions;\n    this.logger.debug(`[Agents:${this.name}] Instructions updated.`, { model: this.model, name: this.name });\n  }\n\n  __registerPrimitives(p: MastraPrimitives) {\n    if (p.telemetry) {\n      this.__setTelemetry(p.telemetry);\n    }\n\n    if (p.logger) {\n      this.__setLogger(p.logger);\n    }\n\n    this.llm.__registerPrimitives(p);\n\n    this.logger.debug(`[Agents:${this.name}] initialized.`, { model: this.model, name: this.name });\n  }\n\n  __registerMastra(mastra: Mastra) {\n    this.#mastra = mastra;\n    this.llm.__registerMastra(mastra);\n  }\n\n  /**\n   * Set the concrete tools for the agent\n   * @param tools\n   */\n  __setTools(tools: TTools) {\n    this.tools = tools;\n    this.logger.debug(`[Agents:${this.name}] Tools set for agent ${this.name}`, { model: this.model, name: this.name });\n  }\n\n  async generateTitleFromUserMessage({ message }: { message: CoreUserMessage }) {\n    // need to use text, not object output or it will error for models that don't support structured output (eg Deepseek R1)\n    const { text } = await this.llm.__text<{ title: string }>({\n      messages: [\n        {\n          role: 'system',\n          content: `\\n\n      - you will generate a short title based on the first message a user begins a conversation with\n      - ensure it is not more than 80 characters long\n      - the title should be a summary of the user's message\n      - do not use quotes or colons\n      - the entire text you return will be used as the title`,\n        },\n        {\n          role: 'user',\n          content: JSON.stringify(message),\n        },\n      ],\n    });\n\n    // Strip out any r1 think tags if present\n    const cleanedText = text.replace(/<think>[\\s\\S]*?<\\/think>/g, '').trim();\n    return cleanedText;\n  }\n\n  getMostRecentUserMessage(messages: Array<CoreMessage>) {\n    const userMessages = messages.filter(message => message.role === 'user');\n    return userMessages.at(-1);\n  }\n\n  async genTitle(userMessage: CoreUserMessage | undefined) {\n    let title = `New Thread ${new Date().toISOString()}`;\n    try {\n      if (userMessage) {\n        title = await this.generateTitleFromUserMessage({\n          message: userMessage,\n        });\n      }\n    } catch (e) {\n      console.error('Error generating title:', e);\n    }\n    return title;\n  }\n\n  async fetchMemory({\n    threadId,\n    memoryConfig,\n    resourceId,\n    userMessages,\n    runId,\n  }: {\n    resourceId: string;\n    threadId: string;\n    memoryConfig?: MemoryConfig;\n    userMessages: CoreMessage[];\n    time?: Date;\n    keyword?: string;\n    runId?: string;\n  }) {\n    const memory = this.getMemory();\n    if (memory) {\n      const thread = await memory.getThreadById({ threadId });\n      if (!thread) {\n        return { threadId: threadId || '', messages: userMessages };\n      }\n\n      const newMessages = ensureAllMessagesAreCoreMessages(userMessages);\n\n      const messages = newMessages.map(u => {\n        return {\n          id: this.getMemory()?.generateId()!,\n          createdAt: new Date(),\n          threadId: threadId,\n          ...u,\n          content: u.content as UserContent | AssistantContent,\n          role: u.role as 'user' | 'assistant',\n          type: 'text' as 'text' | 'tool-call' | 'tool-result',\n        };\n      });\n\n      const [memoryMessages, memorySystemMessage] =\n        threadId && memory\n          ? await Promise.all([\n              memory\n                .rememberMessages({\n                  threadId,\n                  resourceId,\n                  config: memoryConfig,\n                  vectorMessageSearch: messages\n                    .slice(-1)\n                    .map(m => {\n                      if (typeof m === `string`) {\n                        return m;\n                      }\n                      return m?.content || ``;\n                    })\n                    .join(`\\n`),\n                })\n                .then(r => r.messages),\n              memory.getSystemMessage({ threadId, memoryConfig }),\n            ])\n          : [[], null];\n\n      this.logger.debug('Saved messages to memory', {\n        threadId,\n        runId,\n      });\n\n      return {\n        threadId: thread.id,\n        messages: [\n          memorySystemMessage\n            ? {\n                role: 'system' as const,\n                content: memorySystemMessage,\n              }\n            : null,\n          ...this.sanitizeResponseMessages(memoryMessages),\n          ...newMessages,\n        ].filter((message): message is NonNullable<typeof message> => Boolean(message)),\n      };\n    }\n\n    return { threadId: threadId || '', messages: userMessages };\n  }\n\n  async saveResponse({\n    result,\n    threadId,\n    resourceId,\n    runId,\n    memoryConfig,\n  }: {\n    runId: string;\n    resourceId: string;\n    result: Record<string, any>;\n    threadId: string;\n    memoryConfig: MemoryConfig | undefined;\n  }) {\n    const { response } = result;\n    try {\n      if (response.messages) {\n        const ms = Array.isArray(response.messages) ? response.messages : [response.messages];\n\n        const responseMessagesWithoutIncompleteToolCalls = this.sanitizeResponseMessages(ms);\n\n        const memory = this.getMemory();\n\n        if (memory) {\n          this.logger.debug(\n            `[Agent:${this.name}] - Memory persistence: store=${this.getMemory()?.constructor.name} threadId=${threadId}`,\n            {\n              runId,\n              resourceId,\n              threadId,\n              memoryStore: this.getMemory()?.constructor.name,\n            },\n          );\n\n          await memory.saveMessages({\n            memoryConfig,\n            messages: responseMessagesWithoutIncompleteToolCalls.map(\n              (message: CoreMessage | CoreAssistantMessage, index) => {\n                const messageId = randomUUID();\n                let toolCallIds: string[] | undefined;\n                let toolCallArgs: Record<string, unknown>[] | undefined;\n                let toolNames: string[] | undefined;\n                let type: 'text' | 'tool-call' | 'tool-result' = 'text';\n\n                if (message.role === 'tool') {\n                  toolCallIds = (message as CoreToolMessage).content.map(content => content.toolCallId);\n                  type = 'tool-result';\n                }\n                if (message.role === 'assistant') {\n                  const assistantContent = (message as CoreAssistantMessage).content as Array<TextPart | ToolCallPart>;\n\n                  const assistantToolCalls = assistantContent\n                    .map(content => {\n                      if (content.type === 'tool-call') {\n                        return {\n                          toolCallId: content.toolCallId,\n                          toolArgs: content.args,\n                          toolName: content.toolName,\n                        };\n                      }\n                      return undefined;\n                    })\n                    ?.filter(Boolean) as Array<{\n                    toolCallId: string;\n                    toolArgs: Record<string, unknown>;\n                    toolName: string;\n                  }>;\n\n                  toolCallIds = assistantToolCalls?.map(toolCall => toolCall.toolCallId);\n\n                  toolCallArgs = assistantToolCalls?.map(toolCall => toolCall.toolArgs);\n                  toolNames = assistantToolCalls?.map(toolCall => toolCall.toolName);\n                  type = assistantContent?.[0]?.type as 'text' | 'tool-call' | 'tool-result';\n                }\n\n                return {\n                  id: messageId,\n                  threadId: threadId,\n                  role: message.role as any,\n                  content: message.content as any,\n                  createdAt: new Date(Date.now() + index), // use Date.now() + index to make sure every message is atleast one millisecond apart\n                  toolCallIds: toolCallIds?.length ? toolCallIds : undefined,\n                  toolCallArgs: toolCallArgs?.length ? toolCallArgs : undefined,\n                  toolNames: toolNames?.length ? toolNames : undefined,\n                  type,\n                };\n              },\n            ),\n          });\n        }\n      }\n    } catch (err) {\n      this.logger.error(`[Agent:${this.name}] - Failed to save assistant response`, {\n        error: err,\n        runId: runId,\n      });\n    }\n  }\n\n  sanitizeResponseMessages(messages: Array<CoreMessage>): Array<CoreMessage> {\n    let toolResultIds: Array<string> = [];\n    let toolCallIds: Array<string> = [];\n\n    for (const message of messages) {\n      if (!Array.isArray(message.content)) continue;\n\n      if (message.role === 'tool') {\n        for (const content of message.content) {\n          if (content.type === 'tool-result') {\n            toolResultIds.push(content.toolCallId);\n          }\n        }\n      } else if (message.role === 'assistant' || message.role === 'user') {\n        for (const content of message.content) {\n          if (typeof content !== `string`) {\n            if (content.type === `tool-call`) {\n              toolCallIds.push(content.toolCallId);\n            }\n          }\n        }\n      }\n    }\n\n    const messagesBySanitizedContent = messages.map(message => {\n      if (message.role !== 'assistant' && message.role !== `tool` && message.role !== `user`) return message;\n\n      if (!message.content || typeof message.content === 'string' || typeof message.content === 'number') {\n        return message;\n      }\n\n      const sanitizedContent = message.content.filter(content => {\n        if (content.type === `tool-call`) {\n          return toolResultIds.includes(content.toolCallId);\n        }\n        if (content.type === `text`) {\n          return content.text.trim() !== ``;\n        }\n        if (content.type === `tool-result`) {\n          return toolCallIds.includes(content.toolCallId);\n        }\n        return true;\n      });\n\n      return {\n        ...message,\n        content: sanitizedContent,\n      };\n    });\n\n    return messagesBySanitizedContent.filter(message => {\n      if (typeof message.content === `string`) {\n        return message.content !== '';\n      }\n\n      if (Array.isArray(message.content)) {\n        return (\n          message.content.length &&\n          message.content.every(c => {\n            if (c.type === `text`) {\n              return c.text && c.text !== '';\n            }\n            return true;\n          })\n        );\n      }\n\n      return true;\n    }) as Array<CoreMessage>;\n  }\n\n  convertTools({\n    toolsets,\n    threadId,\n    resourceId,\n    runId,\n  }: {\n    toolsets?: ToolsetsInput;\n    threadId?: string;\n    resourceId?: string;\n    runId?: string;\n  }): Record<string, CoreTool> {\n    this.logger.debug(`[Agents:${this.name}] - Assigning tools`, { runId, threadId, resourceId });\n\n    // Get memory tools if available\n    const memory = this.getMemory();\n    const memoryTools = memory?.getTools?.();\n\n    let mastraProxy = undefined;\n    const logger = this.logger;\n    if (this.#mastra) {\n      mastraProxy = createMastraProxy({ mastra: this.#mastra, logger });\n    }\n\n    const converted = Object.entries(this.tools || {}).reduce(\n      (memo, value) => {\n        const k = value[0];\n        const tool = this.tools[k];\n\n        if (tool) {\n          const options = {\n            name: k,\n            runId,\n            threadId,\n            resourceId,\n            logger: this.logger,\n            mastra: mastraProxy as MastraUnion | undefined,\n            memory,\n            agentName: this.name,\n          };\n          memo[k] = makeCoreTool(tool, options);\n        }\n        return memo;\n      },\n      {} as Record<string, CoreTool>,\n    );\n\n    // Convert memory tools with proper context\n    const convertedMemoryTools = memoryTools\n      ? Object.entries(memoryTools).reduce(\n          (memo, [k, tool]) => {\n            memo[k] = {\n              description: tool.description,\n              parameters: tool.parameters,\n              execute:\n                typeof tool?.execute === 'function'\n                  ? async (args, options) => {\n                      try {\n                        this.logger.debug(`[Agent:${this.name}] - Executing memory tool ${k}`, {\n                          name: k,\n                          description: tool.description,\n                          args,\n                          runId,\n                          threadId,\n                          resourceId,\n                        });\n                        return (\n                          tool?.execute?.(\n                            {\n                              context: args,\n                              mastra: mastraProxy as MastraUnion | undefined,\n                              memory,\n                              runId,\n                              threadId,\n                              resourceId,\n                            },\n                            options,\n                          ) ?? undefined\n                        );\n                      } catch (err) {\n                        this.logger.error(`[Agent:${this.name}] - Failed memory tool execution`, {\n                          error: err,\n                          runId,\n                          threadId,\n                          resourceId,\n                        });\n                        throw err;\n                      }\n                    }\n                  : undefined,\n            };\n            return memo;\n          },\n          {} as Record<string, CoreTool>,\n        )\n      : {};\n\n    const toolsFromToolsetsConverted: Record<string, CoreTool> = {\n      ...converted,\n      ...convertedMemoryTools,\n    };\n\n    const toolsFromToolsets = Object.values(toolsets || {});\n\n    if (toolsFromToolsets.length > 0) {\n      this.logger.debug(`[Agent:${this.name}] - Adding tools from toolsets ${Object.keys(toolsets || {}).join(', ')}`, {\n        runId,\n      });\n      toolsFromToolsets.forEach(toolset => {\n        Object.entries(toolset).forEach(([toolName, tool]) => {\n          const toolObj = tool;\n          const options = {\n            name: toolName,\n            runId,\n            threadId,\n            resourceId,\n            logger: this.logger,\n            agentName: this.name,\n          };\n          toolsFromToolsetsConverted[toolName] = makeCoreTool(toolObj, options, 'toolset');\n        });\n      });\n    }\n\n    return toolsFromToolsetsConverted;\n  }\n\n  async preExecute({\n    resourceId,\n    runId,\n    threadId,\n    memoryConfig,\n    messages,\n  }: {\n    runId?: string;\n    threadId: string;\n    memoryConfig?: MemoryConfig;\n    messages: CoreMessage[];\n    resourceId: string;\n  }) {\n    let coreMessages: CoreMessage[] = [];\n    let threadIdToUse = threadId;\n\n    this.logger.debug(`Saving user messages in memory for agent ${this.name}`, { runId });\n    const saveMessageResponse = await this.fetchMemory({\n      threadId,\n      resourceId,\n      userMessages: messages,\n      memoryConfig,\n    });\n\n    coreMessages = saveMessageResponse.messages;\n    threadIdToUse = saveMessageResponse.threadId;\n    return { coreMessages, threadIdToUse };\n  }\n\n  __primitive({\n    instructions,\n    messages,\n    context,\n    threadId,\n    memoryConfig,\n    resourceId,\n    runId,\n    toolsets,\n  }: {\n    instructions?: string;\n    toolsets?: ToolsetsInput;\n    resourceId?: string;\n    threadId?: string;\n    memoryConfig?: MemoryConfig;\n    context?: CoreMessage[];\n    runId?: string;\n    messages: CoreMessage[];\n  }) {\n    return {\n      before: async () => {\n        if (process.env.NODE_ENV !== 'test') {\n          this.logger.debug(`[Agents:${this.name}] - Starting generation`, { runId });\n        }\n\n        const systemMessage: CoreMessage = {\n          role: 'system',\n          content: instructions || `${this.instructions}.`,\n        };\n\n        let coreMessages = messages;\n        let threadIdToUse = threadId;\n\n        const memory = this.getMemory();\n\n        if (threadId && memory && !resourceId) {\n          throw new Error(\n            `A resourceId must be provided when passing a threadId and using Memory. Saw threadId ${threadId} but resourceId is ${resourceId}`,\n          );\n        }\n\n        if (memory && resourceId) {\n          this.logger.debug(\n            `[Agent:${this.name}] - Memory persistence enabled: store=${this.getMemory()?.constructor.name}, resourceId=${resourceId}`,\n            {\n              runId,\n              resourceId,\n              threadId: threadIdToUse,\n              memoryStore: this.getMemory()?.constructor.name,\n            },\n          );\n\n          let thread = threadIdToUse ? await memory.getThreadById({ threadId: threadIdToUse }) : undefined;\n          if (!thread) {\n            thread = await memory.createThread({\n              threadId: threadIdToUse,\n              resourceId,\n              memoryConfig,\n            });\n          }\n          threadIdToUse = thread.id;\n\n          const preExecuteResult = await this.preExecute({\n            resourceId,\n            runId,\n            threadId: threadIdToUse,\n            memoryConfig,\n            messages,\n          });\n\n          coreMessages = preExecuteResult.coreMessages;\n          threadIdToUse = preExecuteResult.threadIdToUse;\n        }\n\n        let convertedTools: Record<string, CoreTool> | undefined;\n\n        if ((toolsets && Object.keys(toolsets || {}).length > 0) || (this.getMemory() && resourceId)) {\n          const reasons = [];\n          if (toolsets && Object.keys(toolsets || {}).length > 0) {\n            reasons.push(`toolsets present (${Object.keys(toolsets || {}).length} tools)`);\n          }\n          if (this.getMemory() && resourceId) {\n            reasons.push('memory and resourceId available');\n          }\n\n          this.logger.debug(`[Agent:${this.name}] - Enhancing tools: ${reasons.join(', ')}`, {\n            runId,\n            toolsets: toolsets ? Object.keys(toolsets) : undefined,\n            hasMemory: !!this.getMemory(),\n            hasResourceId: !!resourceId,\n          });\n          convertedTools = this.convertTools({\n            toolsets,\n            threadId: threadIdToUse,\n            resourceId,\n            runId,\n          });\n        }\n\n        const messageObjects = [systemMessage, ...(context || []), ...coreMessages];\n\n        return { messageObjects, convertedTools, threadId: threadIdToUse as string };\n      },\n      after: async ({\n        result,\n        threadId,\n        memoryConfig,\n        outputText,\n        runId,\n      }: {\n        runId: string;\n        result: Record<string, any>;\n        threadId: string;\n        memoryConfig: MemoryConfig | undefined;\n        outputText: string;\n      }) => {\n        const resToLog = {\n          text: result?.text,\n          object: result?.object,\n          toolResults: result?.toolResults,\n          toolCalls: result?.toolCalls,\n          usage: result?.usage,\n          steps: result?.steps?.map((s: any) => {\n            return {\n              stepType: s?.stepType,\n              text: result?.text,\n              object: result?.object,\n              toolResults: result?.toolResults,\n              toolCalls: result?.toolCalls,\n              usage: result?.usage,\n            };\n          }),\n        };\n        this.logger.debug(`[Agent:${this.name}] - Post processing LLM response`, {\n          runId,\n          result: resToLog,\n          threadId,\n        });\n        const memory = this.getMemory();\n        const thread = threadId ? await memory?.getThreadById({ threadId }) : undefined;\n        if (memory && resourceId && thread) {\n          try {\n            const userMessage = this.getMostRecentUserMessage(messages);\n            const newMessages = userMessage ? [userMessage] : messages;\n            const threadMessages = newMessages.map(u => {\n              return {\n                id: this.getMemory()?.generateId()!,\n                createdAt: new Date(),\n                threadId: thread.id,\n                ...u,\n                content: u.content as UserContent | AssistantContent,\n                role: u.role as 'user' | 'assistant',\n                type: 'text' as 'text' | 'tool-call' | 'tool-result',\n              };\n            });\n\n            await Promise.all([\n              (async () => {\n                await memory.saveMessages({ messages: threadMessages, memoryConfig });\n                await this.saveResponse({\n                  result,\n                  threadId,\n                  resourceId,\n                  memoryConfig,\n                  runId,\n                });\n              })(),\n              (async () => {\n                if (!thread.title?.startsWith('New Thread')) {\n                  return;\n                }\n\n                const config = memory.getMergedThreadConfig(memoryConfig);\n                const title = config?.threads?.generateTitle ? await this.genTitle(userMessage) : undefined;\n                if (!title) {\n                  return;\n                }\n\n                return memory.createThread({\n                  threadId: thread.id,\n                  resourceId,\n                  memoryConfig,\n                  title,\n                });\n              })(),\n            ]);\n          } catch (e) {\n            this.logger.error('Error saving response', {\n              error: e,\n              runId,\n              result: resToLog,\n              threadId,\n            });\n          }\n        }\n\n        if (Object.keys(this.evals || {}).length > 0) {\n          const input = messages.map(message => message.content).join('\\n');\n          const runIdToUse = runId || crypto.randomUUID();\n          for (const metric of Object.values(this.evals || {})) {\n            executeHook(AvailableHooks.ON_GENERATION, {\n              input,\n              output: outputText,\n              runId: runIdToUse,\n              metric,\n              agentName: this.name,\n              instructions: instructions || this.instructions,\n            });\n          }\n        }\n      },\n    };\n  }\n\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentGenerateOptions<Z> & { output?: never; experimental_output?: never },\n  ): Promise<GenerateTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown>>;\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentGenerateOptions<Z> & { output?: Z; experimental_output?: never },\n  ): Promise<GenerateObjectResult<Z extends ZodSchema ? z.infer<Z> : unknown>>;\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentGenerateOptions<Z> & { output?: never; experimental_output?: Z },\n  ): Promise<\n    GenerateTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown> & {\n      object: Z extends ZodSchema ? z.infer<Z> : unknown;\n    }\n  >;\n  async generate<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    {\n      instructions,\n      context,\n      threadId: threadIdInFn,\n      memoryOptions,\n      resourceId,\n      maxSteps = 5,\n      onStepFinish,\n      runId,\n      output,\n      toolsets,\n      temperature,\n      toolChoice = 'auto',\n      experimental_output,\n      telemetry,\n      ...rest\n    }: AgentGenerateOptions<Z> = {},\n  ): Promise<\n    | GenerateTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown>\n    | GenerateObjectResult<Z extends ZodSchema ? z.infer<Z> : unknown>\n  > {\n    let messagesToUse: CoreMessage[] = [];\n\n    if (typeof messages === `string`) {\n      messagesToUse = [\n        {\n          role: 'user',\n          content: messages,\n        },\n      ];\n    } else if (Array.isArray(messages)) {\n      messagesToUse = messages.map(message => {\n        if (typeof message === `string`) {\n          return {\n            role: 'user',\n            content: message,\n          };\n        }\n        return message as CoreMessage;\n      });\n    } else {\n      messagesToUse = [messages];\n    }\n\n    const runIdToUse = runId || randomUUID();\n\n    const { before, after } = this.__primitive({\n      instructions,\n      messages: messagesToUse,\n      context,\n      threadId: threadIdInFn,\n      memoryConfig: memoryOptions,\n      resourceId,\n      runId: runIdToUse,\n      toolsets,\n    });\n\n    const { threadId, messageObjects, convertedTools } = await before();\n\n    if (!output && experimental_output) {\n      const result = await this.llm.__text({\n        messages: messageObjects,\n        tools: this.tools,\n        convertedTools,\n        onStepFinish: (result: any) => {\n          void onStepFinish?.(result);\n        },\n        maxSteps: maxSteps || 5,\n        runId: runIdToUse,\n        temperature,\n        toolChoice: toolChoice || 'auto',\n        experimental_output,\n        threadId,\n        resourceId,\n        memory: this.getMemory(),\n        ...rest,\n      });\n\n      const outputText = result.text;\n\n      await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n\n      const newResult = result as any;\n\n      newResult.object = result.experimental_output;\n\n      return newResult as unknown as GenerateReturn<Z>;\n    }\n\n    if (!output) {\n      const result = await this.llm.__text({\n        messages: messageObjects,\n        tools: this.tools,\n        convertedTools,\n        onStepFinish: (result: any) => {\n          void onStepFinish?.(result);\n        },\n        maxSteps,\n        runId: runIdToUse,\n        temperature,\n        toolChoice,\n        telemetry,\n        threadId,\n        resourceId,\n        memory: this.getMemory(),\n        ...rest,\n      });\n\n      const outputText = result.text;\n\n      await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n\n      return result as unknown as GenerateReturn<Z>;\n    }\n\n    const result = await this.llm.__textObject({\n      messages: messageObjects,\n      tools: this.tools,\n      structuredOutput: output,\n      convertedTools,\n      onStepFinish: (result: any) => {\n        void onStepFinish?.(result);\n      },\n      maxSteps,\n      runId: runIdToUse,\n      temperature,\n      toolChoice,\n      telemetry,\n      memory: this.getMemory(),\n      ...rest,\n    });\n\n    const outputText = JSON.stringify(result.object);\n\n    await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n\n    return result as unknown as GenerateReturn<Z>;\n  }\n\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentStreamOptions<Z> & { output?: never; experimental_output?: never },\n  ): Promise<StreamTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown>>;\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentStreamOptions<Z> & { output?: Z; experimental_output?: never },\n  ): Promise<StreamObjectResult<any, Z extends ZodSchema ? z.infer<Z> : unknown, any>>;\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    args?: AgentStreamOptions<Z> & { output?: never; experimental_output?: Z },\n  ): Promise<\n    StreamTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown> & {\n      partialObjectStream: StreamTextResult<\n        any,\n        Z extends ZodSchema ? z.infer<Z> : unknown\n      >['experimental_partialOutputStream'];\n    }\n  >;\n  async stream<Z extends ZodSchema | JSONSchema7 | undefined = undefined>(\n    messages: string | string[] | CoreMessage[] | AiMessageType[],\n    {\n      instructions,\n      context,\n      threadId: threadIdInFn,\n      memoryOptions,\n      resourceId,\n      maxSteps = 5,\n      onFinish,\n      onStepFinish,\n      runId,\n      toolsets,\n      output,\n      temperature,\n      toolChoice = 'auto',\n      experimental_output,\n      telemetry,\n      ...rest\n    }: AgentStreamOptions<Z> = {},\n  ): Promise<\n    | StreamTextResult<any, Z extends ZodSchema ? z.infer<Z> : unknown>\n    | StreamObjectResult<any, Z extends ZodSchema ? z.infer<Z> : unknown, any>\n  > {\n    const runIdToUse = runId || randomUUID();\n\n    let messagesToUse: CoreMessage[] = [];\n\n    if (typeof messages === `string`) {\n      messagesToUse = [\n        {\n          role: 'user',\n          content: messages,\n        },\n      ];\n    } else {\n      messagesToUse = messages.map(message => {\n        if (typeof message === `string`) {\n          return {\n            role: 'user',\n            content: message,\n          };\n        }\n        return message as CoreMessage;\n      });\n    }\n\n    const { before, after } = this.__primitive({\n      instructions,\n      messages: messagesToUse,\n      context,\n      threadId: threadIdInFn,\n      memoryConfig: memoryOptions,\n      resourceId,\n      runId: runIdToUse,\n      toolsets,\n    });\n\n    const { threadId, messageObjects, convertedTools } = await before();\n\n    if (!output && experimental_output) {\n      this.logger.debug(`Starting agent ${this.name} llm stream call`, {\n        runId,\n      });\n\n      const streamResult = await this.llm.__stream({\n        messages: messageObjects,\n        temperature,\n        tools: this.tools,\n        convertedTools,\n        onStepFinish: (result: any) => {\n          void onStepFinish?.(result);\n        },\n        onFinish: async (result: any) => {\n          try {\n            const outputText = result.text;\n            await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n          } catch (e) {\n            this.logger.error('Error saving memory on finish', {\n              error: e,\n              runId,\n            });\n          }\n          void onFinish?.(result);\n        },\n        maxSteps,\n        runId: runIdToUse,\n        toolChoice,\n        experimental_output,\n        memory: this.getMemory(),\n        ...rest,\n      });\n\n      const newStreamResult = streamResult as any;\n      newStreamResult.partialObjectStream = streamResult.experimental_partialOutputStream;\n      return newStreamResult as unknown as StreamReturn<Z>;\n    } else if (!output) {\n      this.logger.debug(`Starting agent ${this.name} llm stream call`, {\n        runId,\n      });\n      return this.llm.__stream({\n        messages: messageObjects,\n        temperature,\n        tools: this.tools,\n        convertedTools,\n        onStepFinish: (result: any) => {\n          void onStepFinish?.(result);\n        },\n        onFinish: async (result: any) => {\n          try {\n            const outputText = result.text;\n            await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n          } catch (e) {\n            this.logger.error('Error saving memory on finish', {\n              error: e,\n              runId,\n            });\n          }\n          void onFinish?.(result);\n        },\n        maxSteps,\n        runId: runIdToUse,\n        toolChoice,\n        telemetry,\n        memory: this.getMemory(),\n        ...rest,\n      }) as unknown as StreamReturn<Z>;\n    }\n\n    this.logger.debug(`Starting agent ${this.name} llm streamObject call`, {\n      runId,\n    });\n\n    return this.llm.__streamObject({\n      messages: messageObjects,\n      tools: this.tools,\n      temperature,\n      structuredOutput: output,\n      convertedTools,\n      onStepFinish: (result: any) => {\n        void onStepFinish?.(result);\n      },\n      onFinish: async (result: any) => {\n        try {\n          const outputText = JSON.stringify(result.object);\n          await after({ result, threadId, memoryConfig: memoryOptions, outputText, runId: runIdToUse });\n        } catch (e) {\n          this.logger.error('Error saving memory on finish', {\n            error: e,\n            runId,\n          });\n        }\n        void onFinish?.(result);\n      },\n      runId: runIdToUse,\n      toolChoice,\n      telemetry,\n      memory: this.getMemory(),\n      ...rest,\n    }) as unknown as StreamReturn<Z>;\n  }\n\n  /**\n   * Convert text to speech using the configured voice provider\n   * @param input Text or text stream to convert to speech\n   * @param options Speech options including speaker and provider-specific options\n   * @returns Audio stream\n   * @deprecated Use agent.voice.speak() instead\n   */\n  async speak(\n    input: string | NodeJS.ReadableStream,\n    options?: {\n      speaker?: string;\n      [key: string]: any;\n    },\n  ): Promise<NodeJS.ReadableStream | void> {\n    if (!this.voice) {\n      throw new Error('No voice provider configured');\n    }\n\n    this.logger.warn('Warning: agent.speak() is deprecated. Please use agent.voice.speak() instead.');\n\n    try {\n      return this.voice.speak(input, options);\n    } catch (e) {\n      this.logger.error('Error during agent speak', {\n        error: e,\n      });\n      throw e;\n    }\n  }\n\n  /**\n   * Convert speech to text using the configured voice provider\n   * @param audioStream Audio stream to transcribe\n   * @param options Provider-specific transcription options\n   * @returns Text or text stream\n   * @deprecated Use agent.voice.listen() instead\n   */\n  async listen(\n    audioStream: NodeJS.ReadableStream,\n    options?: {\n      [key: string]: any;\n    },\n  ): Promise<string | NodeJS.ReadableStream | void> {\n    if (!this.voice) {\n      throw new Error('No voice provider configured');\n    }\n\n    this.logger.warn('Warning: agent.listen() is deprecated. Please use agent.voice.listen() instead');\n\n    try {\n      return this.voice.listen(audioStream, options);\n    } catch (e) {\n      this.logger.error('Error during agent listen', {\n        error: e,\n      });\n      throw e;\n    }\n  }\n\n  /**\n   * Get a list of available speakers from the configured voice provider\n   * @throws {Error} If no voice provider is configured\n   * @returns {Promise<Array<{voiceId: string}>>} List of available speakers\n   * @deprecated Use agent.voice.getSpeakers() instead\n   */\n  async getSpeakers() {\n    if (!this.voice) {\n      throw new Error('No voice provider configured');\n    }\n\n    this.logger.warn('Warning: agent.getSpeakers() is deprecated. Please use agent.voice.getSpeakers() instead.');\n\n    try {\n      return await this.voice.getSpeakers();\n    } catch (e) {\n      this.logger.error('Error during agent getSpeakers', {\n        error: e,\n      });\n      throw e;\n    }\n  }\n}\n"]}