{"version":3,"sources":["../../../packages/_internal-core/src/logger/index.ts","../../../packages/_internal-core/src/base/MastraBase.ts","../../../packages/_internals/voice/src/voice/voice.ts","../src/index.ts"],"names":["ElevenLabsClient"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Transform } from 'node:stream';\n\nexport const RegisteredLogger = {\n  AGENT: 'AGENT',\n  OBSERVABILITY: 'OBSERVABILITY',\n  AUTH: 'AUTH',\n  BROWSER: 'BROWSER',\n  NETWORK: 'NETWORK',\n  WORKFLOW: 'WORKFLOW',\n  LLM: 'LLM',\n  TTS: 'TTS',\n  VOICE: 'VOICE',\n  VECTOR: 'VECTOR',\n  BUNDLER: 'BUNDLER',\n  DEPLOYER: 'DEPLOYER',\n  MEMORY: 'MEMORY',\n  STORAGE: 'STORAGE',\n  EMBEDDINGS: 'EMBEDDINGS',\n  MCP_SERVER: 'MCP_SERVER',\n  SERVER_CACHE: 'SERVER_CACHE',\n  SERVER: 'SERVER',\n  WORKSPACE: 'WORKSPACE',\n  CHANNEL: 'CHANNEL',\n} as const;\n\nexport type RegisteredLogger = (typeof RegisteredLogger)[keyof typeof RegisteredLogger];\n\nexport const LogLevel = {\n  DEBUG: 'debug',\n  INFO: 'info',\n  WARN: 'warn',\n  ERROR: 'error',\n  NONE: 'silent',\n} as const;\n\nexport type LogLevel = (typeof LogLevel)[keyof typeof LogLevel];\n\nexport interface BaseLogMessage {\n  runId?: string;\n  msg: string;\n  level: LogLevel;\n  time: Date;\n  pid: number;\n  hostname: string;\n  name: string;\n}\n\nexport abstract class LoggerTransport extends Transform {\n  constructor(opts: any = {}) {\n    super({ ...opts, objectMode: true });\n  }\n\n  async listLogsByRunId(_args: {\n    runId: string;\n    fromDate?: Date;\n    toDate?: Date;\n    logLevel?: LogLevel;\n    filters?: Record<string, any>;\n    page?: number;\n    perPage?: number;\n  }): Promise<{\n    logs: BaseLogMessage[];\n    total: number;\n    page: number;\n    perPage: number;\n    hasMore: boolean;\n  }> {\n    return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n  }\n\n  async listLogs(_args?: {\n    fromDate?: Date;\n    toDate?: Date;\n    logLevel?: LogLevel;\n    filters?: Record<string, any>;\n    returnPaginationResults?: boolean;\n    page?: number;\n    perPage?: number;\n  }): Promise<{\n    logs: BaseLogMessage[];\n    total: number;\n    page: number;\n    perPage: number;\n    hasMore: boolean;\n  }> {\n    return { logs: [], total: 0, page: _args?.page ?? 1, perPage: _args?.perPage ?? 100, hasMore: false };\n  }\n}\n\nexport const createCustomTransport = (\n  stream: Transform,\n  listLogs?: LoggerTransport['listLogs'],\n  listLogsByRunId?: LoggerTransport['listLogsByRunId'],\n) => {\n  let transport = stream as LoggerTransport;\n  if (listLogs) {\n    transport.listLogs = listLogs;\n  }\n  if (listLogsByRunId) {\n    transport.listLogsByRunId = listLogsByRunId;\n  }\n  return transport as LoggerTransport;\n};\n\nexport interface IMastraLogger {\n  debug(message: string, ...args: any[]): void;\n  info(message: string, ...args: any[]): void;\n  warn(message: string, ...args: any[]): void;\n  error(message: string, ...args: any[]): void;\n  trackException(error: Error, metadata?: Record<string, unknown>): void;\n\n  getTransports(): Map<string, LoggerTransport>;\n  listLogs(\n    _transportId: string,\n    _params?: {\n      fromDate?: Date;\n      toDate?: Date;\n      logLevel?: LogLevel;\n      filters?: Record<string, any>;\n      page?: number;\n      perPage?: number;\n    },\n  ): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n  listLogsByRunId(_args: {\n    transportId: string;\n    runId: string;\n    fromDate?: Date;\n    toDate?: Date;\n    logLevel?: LogLevel;\n    filters?: Record<string, any>;\n    page?: number;\n    perPage?: number;\n  }): Promise<{ logs: BaseLogMessage[]; total: number; page: number; perPage: number; hasMore: boolean }>;\n}\n\nexport abstract class MastraLogger implements IMastraLogger {\n  protected name: string;\n  protected level: LogLevel;\n  protected transports: Map<string, LoggerTransport>;\n\n  constructor(\n    options: {\n      name?: string;\n      level?: LogLevel;\n      transports?: Record<string, LoggerTransport>;\n    } = {},\n  ) {\n    this.name = options.name || 'Mastra';\n    this.level = options.level || LogLevel.ERROR;\n    this.transports = new Map(Object.entries(options.transports || {}));\n  }\n\n  abstract debug(message: string, ...args: any[]): void;\n  abstract info(message: string, ...args: any[]): void;\n  abstract warn(message: string, ...args: any[]): void;\n  abstract error(message: string, ...args: any[]): void;\n\n  getTransports() {\n    return this.transports;\n  }\n\n  trackException(_error: Error, _metadata?: Record<string, unknown>) {}\n\n  async listLogs(\n    transportId: string,\n    params?: {\n      fromDate?: Date;\n      toDate?: Date;\n      logLevel?: LogLevel;\n      filters?: Record<string, any>;\n      page?: number;\n      perPage?: number;\n    },\n  ) {\n    if (!transportId || !this.transports.has(transportId)) {\n      return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };\n    }\n\n    return (\n      this.transports.get(transportId)!.listLogs?.(params) ?? {\n        logs: [],\n        total: 0,\n        page: params?.page ?? 1,\n        perPage: params?.perPage ?? 100,\n        hasMore: false,\n      }\n    );\n  }\n\n  async listLogsByRunId({\n    transportId,\n    runId,\n    fromDate,\n    toDate,\n    logLevel,\n    filters,\n    page,\n    perPage,\n  }: {\n    transportId: string;\n    runId: string;\n    fromDate?: Date;\n    toDate?: Date;\n    logLevel?: LogLevel;\n    filters?: Record<string, any>;\n    page?: number;\n    perPage?: number;\n  }) {\n    if (!transportId || !this.transports.has(transportId) || !runId) {\n      return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };\n    }\n\n    return (\n      this.transports\n        .get(transportId)!\n        .listLogsByRunId?.({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {\n        logs: [],\n        total: 0,\n        page: page ?? 1,\n        perPage: perPage ?? 100,\n        hasMore: false,\n      }\n    );\n  }\n}\n\nexport type LogFilterContext = {\n  component?: RegisteredLogger;\n  level: LogLevel;\n  message: string;\n  args: unknown[];\n};\n\nexport type LogFilter = (ctx: LogFilterContext) => boolean;\n\nexport interface ConsoleLoggerOptions {\n  name?: string;\n  level?: LogLevel;\n  component?: RegisteredLogger;\n  filter?: LogFilter;\n}\n\nexport class ConsoleLogger extends MastraLogger {\n  protected component?: RegisteredLogger;\n  protected filter?: LogFilter;\n\n  constructor(options: ConsoleLoggerOptions = {}) {\n    super(options);\n    this.component = options.component;\n    this.filter = options.filter;\n  }\n\n  child(componentOrBindings: RegisteredLogger | Record<string, unknown>): ConsoleLogger {\n    const component =\n      typeof componentOrBindings === 'string'\n        ? componentOrBindings\n        : ((componentOrBindings?.component as RegisteredLogger) ?? this.component);\n    return new ConsoleLogger({\n      name: this.name,\n      level: this.level,\n      component,\n      filter: this.filter,\n    });\n  }\n\n  private shouldLog(level: LogLevel, message: string, args: unknown[]): boolean {\n    if (!this.filter) return true;\n    try {\n      return this.filter({ component: this.component, level, message, args });\n    } catch (e) {\n      console.error(`[Logger] Filter error for component=${this.component} level=${level}:`, e);\n      return true;\n    }\n  }\n\n  private prefix(): string {\n    return this.component ? `[${this.component}] ` : '';\n  }\n\n  debug(message: string, ...args: any[]): void {\n    if (this.level === LogLevel.DEBUG && this.shouldLog(LogLevel.DEBUG, message, args)) {\n      console.info(`${this.prefix()}${message}`, ...args);\n    }\n  }\n\n  info(message: string, ...args: any[]): void {\n    if (\n      (this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) &&\n      this.shouldLog(LogLevel.INFO, message, args)\n    ) {\n      console.info(`${this.prefix()}${message}`, ...args);\n    }\n  }\n\n  warn(message: string, ...args: any[]): void {\n    if (\n      (this.level === LogLevel.WARN || this.level === LogLevel.INFO || this.level === LogLevel.DEBUG) &&\n      this.shouldLog(LogLevel.WARN, message, args)\n    ) {\n      console.warn(`${this.prefix()}${message}`, ...args);\n    }\n  }\n\n  error(message: string, ...args: any[]): void {\n    if (\n      (this.level === LogLevel.ERROR ||\n        this.level === LogLevel.WARN ||\n        this.level === LogLevel.INFO ||\n        this.level === LogLevel.DEBUG) &&\n      this.shouldLog(LogLevel.ERROR, message, args)\n    ) {\n      console.error(`${this.prefix()}${message}`, ...args);\n    }\n  }\n\n  async listLogs(\n    _transportId: string,\n    _params?: {\n      fromDate?: Date;\n      toDate?: Date;\n      logLevel?: LogLevel;\n      filters?: Record<string, any>;\n      page?: number;\n      perPage?: number;\n    },\n  ) {\n    return { logs: [], total: 0, page: _params?.page ?? 1, perPage: _params?.perPage ?? 100, hasMore: false };\n  }\n\n  async listLogsByRunId(_args: {\n    transportId: string;\n    runId: string;\n    fromDate?: Date;\n    toDate?: Date;\n    logLevel?: LogLevel;\n    filters?: Record<string, any>;\n    page?: number;\n    perPage?: number;\n  }) {\n    return { logs: [], total: 0, page: _args.page ?? 1, perPage: _args.perPage ?? 100, hasMore: false };\n  }\n}\n","import type { IMastraLogger } from '../logger';\nimport { ConsoleLogger, RegisteredLogger } from '../logger';\n\nexport class MastraBase {\n  component: RegisteredLogger = RegisteredLogger.LLM;\n  protected logger: IMastraLogger;\n  name?: string;\n  #rawConfig?: Record<string, unknown>;\n\n  constructor({\n    component,\n    name,\n    rawConfig,\n  }: {\n    component?: RegisteredLogger;\n    name?: string;\n    rawConfig?: Record<string, unknown>;\n  }) {\n    this.component = component || RegisteredLogger.LLM;\n    this.name = name;\n    this.#rawConfig = rawConfig;\n    this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });\n  }\n\n  /**\n   * Returns the raw storage configuration this primitive was created from,\n   * or undefined if it was created from code.\n   */\n  toRawConfig(): Record<string, unknown> | undefined {\n    return this.#rawConfig;\n  }\n\n  /**\n   * Sets the raw storage configuration for this primitive.\n   * @internal\n   */\n  __setRawConfig(rawConfig: Record<string, unknown>): void {\n    this.#rawConfig = rawConfig;\n  }\n\n  /**\n   * Set the logger for the agent\n   * @param logger\n   */\n  __setLogger(logger: IMastraLogger) {\n    this.logger =\n      'child' in logger && typeof (logger as any).child === 'function'\n        ? (logger as any).child({ component: this.component })\n        : logger;\n  }\n}\n","import { MastraBase } from '@internal/core/base';\nimport type { ToolsInput } from '@internal/core/types';\n\nexport type VoiceEventType = 'speaking' | 'writing' | 'error' | string;\n\nexport interface VoiceEventMap {\n  speaker: NodeJS.ReadableStream;\n  speaking: { audio?: string };\n  writing: { text: string; role: 'assistant' | 'user' };\n  error: { message: string; code?: string; details?: unknown };\n  [key: string]: unknown;\n}\n\ninterface BuiltInModelConfig {\n  name: string;\n  apiKey?: string;\n}\n\nexport interface VoiceConfig<T = unknown> {\n  listeningModel?: BuiltInModelConfig;\n  speechModel?: BuiltInModelConfig;\n  speaker?: string;\n  name?: string;\n  realtimeConfig?: {\n    model?: string;\n    apiKey?: string;\n    options?: T;\n  };\n}\n\nexport interface VoiceSpanConfig {\n  component: 'VOICE';\n  name?: string;\n  speaker?: string;\n  listeningModel?: { name: string };\n  speechModel?: { name: string };\n  realtimeModel?: string;\n}\n\nexport interface IMastraVoice<\n  TSpeakOptions = unknown,\n  TListenOptions = unknown,\n  TTools extends ToolsInput = ToolsInput,\n  TEventArgs extends VoiceEventMap = VoiceEventMap,\n  TSpeakerMetadata = unknown,\n> {\n  serializeForSpan(): VoiceSpanConfig;\n  speak(\n    input: string | NodeJS.ReadableStream,\n    options?: {\n      speaker?: string;\n    } & TSpeakOptions,\n  ): Promise<NodeJS.ReadableStream | void>;\n  listen(\n    audioStream: NodeJS.ReadableStream | unknown,\n    options?: TListenOptions,\n  ): Promise<string | NodeJS.ReadableStream | void>;\n  updateConfig(options: Record<string, unknown>): void;\n  connect(options?: Record<string, unknown>): Promise<void>;\n  send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void>;\n  answer(options?: Record<string, unknown>): Promise<void>;\n  addInstructions(instructions?: string): void;\n  addTools(tools: TTools): void;\n  close(): void;\n  on<E extends VoiceEventType>(\n    event: E,\n    callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n  ): void;\n  off<E extends VoiceEventType>(\n    event: E,\n    callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n  ): void;\n  getSpeakers(): Promise<\n    Array<\n      {\n        voiceId: string;\n      } & TSpeakerMetadata\n    >\n  >;\n  getListener(): Promise<{ enabled: boolean }>;\n}\n\nexport abstract class MastraVoice<\n  TOptions = unknown,\n  TSpeakOptions = unknown,\n  TListenOptions = unknown,\n  TTools extends ToolsInput = ToolsInput,\n  TEventArgs extends VoiceEventMap = VoiceEventMap,\n  TSpeakerMetadata = unknown,\n>\n  extends MastraBase\n  implements IMastraVoice<TSpeakOptions, TListenOptions, TTools, TEventArgs, TSpeakerMetadata>\n{\n  protected listeningModel?: BuiltInModelConfig;\n  protected speechModel?: BuiltInModelConfig;\n  protected speaker?: string;\n  protected realtimeConfig?: {\n    model?: string;\n    apiKey?: string;\n    options?: TOptions;\n  };\n\n  constructor({ listeningModel, speechModel, speaker, realtimeConfig, name }: VoiceConfig<TOptions> = {}) {\n    super({\n      component: 'VOICE',\n      name,\n    });\n    this.listeningModel = listeningModel;\n    this.speechModel = speechModel;\n    this.speaker = speaker;\n    this.realtimeConfig = realtimeConfig;\n  }\n\n  /**\n   * Custom serialization for tracing/observability spans.\n   * Excludes `apiKey` from listeningModel / speechModel / realtimeConfig\n   * and any provider-specific state held by subclasses. Subclasses that\n   * need to expose additional non-sensitive fields can override.\n   */\n  serializeForSpan(): VoiceSpanConfig {\n    return {\n      component: 'VOICE',\n      name: this.name,\n      speaker: this.speaker,\n      listeningModel: this.listeningModel ? { name: this.listeningModel.name } : undefined,\n      speechModel: this.speechModel ? { name: this.speechModel.name } : undefined,\n      realtimeModel: this.realtimeConfig?.model,\n    };\n  }\n\n  /**\n   * Convert text to speech\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   */\n  /**\n   * Convert text to speech\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 or void if in chat mode\n   */\n  abstract speak(\n    input: string | NodeJS.ReadableStream,\n    options?: {\n      speaker?: string;\n    } & TSpeakOptions,\n  ): Promise<NodeJS.ReadableStream | void>;\n\n  /**\n   * Convert speech to text\n   * @param audioStream Audio stream to transcribe\n   * @param options Provider-specific transcription options\n   * @returns Text or text stream\n   */\n  /**\n   * Convert speech to text\n   * @param audioStream Audio stream to transcribe\n   * @param options Provider-specific transcription options\n   * @returns Text, text stream, or void if in chat mode\n   */\n  abstract listen(\n    audioStream: NodeJS.ReadableStream | unknown, // Allow other audio input types for OpenAI realtime API\n    options?: TListenOptions,\n  ): Promise<string | NodeJS.ReadableStream | void>;\n\n  updateConfig(_options: Record<string, unknown>): void {\n    this.logger.debug('updateConfig not implemented by this voice provider');\n  }\n\n  /**\n   * Initializes a WebSocket or WebRTC connection for real-time communication\n   * @returns Promise that resolves when the connection is established\n   */\n  async connect(_options?: Record<string, unknown>): Promise<void> {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('connect not implemented by this voice provider');\n  }\n\n  /**\n   * Relay audio data to the voice provider for real-time processing\n   * @param audioData Audio data to relay\n   */\n  async send(_audioData: NodeJS.ReadableStream | Int16Array): Promise<void> {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('relay not implemented by this voice provider');\n  }\n\n  /**\n   * Trigger voice providers to respond\n   */\n  async answer(_options?: Record<string, unknown>): Promise<void> {\n    this.logger.debug('answer not implemented by this voice provider');\n  }\n\n  /**\n   * Equip the voice provider with instructions\n   * @param instructions Instructions to add\n   */\n  addInstructions(_instructions?: string): void {\n    // Default implementation - voice providers can override if they support this feature\n  }\n\n  /**\n   * Equip the voice provider with tools\n   * @param tools Array of tools to add\n   */\n  addTools(_tools: TTools): void {\n    // Default implementation - voice providers can override if they support this feature\n  }\n\n  /**\n   * Disconnect from the WebSocket or WebRTC connection\n   */\n  close(): void {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('close not implemented by this voice provider');\n  }\n\n  /**\n   * Register an event listener\n   * @param event Event name (e.g., 'speaking', 'writing', 'error')\n   * @param callback Callback function that receives event data\n   */\n  on<E extends VoiceEventType>(\n    _event: E,\n    _callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n  ): void {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('on not implemented by this voice provider');\n  }\n\n  /**\n   * Remove an event listener\n   * @param event Event name (e.g., 'speaking', 'writing', 'error')\n   * @param callback Callback function to remove\n   */\n  off<E extends VoiceEventType>(\n    _event: E,\n    _callback: (data: E extends keyof TEventArgs ? TEventArgs[E] : unknown) => void,\n  ): void {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('off not implemented by this voice provider');\n  }\n\n  /**\n   * Get available speakers/voices\n   * @returns Array of available voice IDs and their metadata\n   */\n  getSpeakers(): Promise<\n    Array<\n      {\n        voiceId: string;\n      } & TSpeakerMetadata\n    >\n  > {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('getSpeakers not implemented by this voice provider');\n    return Promise.resolve([]);\n  }\n\n  /**\n   * Get available speakers/voices\n   * @returns Array of available voice IDs and their metadata\n   */\n  getListener(): Promise<{ enabled: boolean }> {\n    // Default implementation - voice providers can override if they support this feature\n    this.logger.debug('getListener not implemented by this voice provider');\n    return Promise.resolve({ enabled: false });\n  }\n}\n","import { MastraVoice } from '@internal/voice';\nimport { ElevenLabsClient } from 'elevenlabs';\n\ntype ElevenLabsModel =\n  | 'eleven_multilingual_v2'\n  | 'eleven_flash_v2_5'\n  | 'eleven_flash_v2'\n  | 'eleven_multilingual_sts_v2'\n  | 'eleven_english_sts_v2'\n  | 'scribe_v1';\n\ninterface ElevenLabsVoiceConfig {\n  name?: ElevenLabsModel;\n  apiKey?: string;\n}\n\ninterface SpeechToTextOptions {\n  language_code?: string;\n  tag_audio_events?: boolean;\n  num_speakers?: number;\n  filetype?: string;\n}\n\ninterface RequestOptions {\n  timeoutInSeconds?: number;\n  maxRetries?: number;\n  abortSignal?: AbortSignal;\n  apiKey?: string | undefined;\n  headers?: Record<string, string>;\n}\n\n// Combined options type\ntype ElevenLabsListenOptions = SpeechToTextOptions & RequestOptions;\n\nexport class ElevenLabsVoice extends MastraVoice {\n  private client: ElevenLabsClient;\n\n  /**\n   * Creates an instance of the ElevenLabsVoice class.\n   *\n   * @param {Object} options - The options for the voice configuration.\n   * @param {ElevenLabsVoiceConfig} [options.speechModel] - The configuration for the speech model, including the model name and API key.\n   * @param {string} [options.speaker] - The ID of the speaker to use. If not provided, a default speaker will be used.\n   *\n   * @throws {Error} If the ELEVENLABS_API_KEY is not set in the environment variables.\n   */\n  constructor({\n    speechModel,\n    listeningModel,\n    speaker,\n  }: { speechModel?: ElevenLabsVoiceConfig; listeningModel?: ElevenLabsVoiceConfig; speaker?: string } = {}) {\n    const apiKey = speechModel?.apiKey ?? process.env.ELEVENLABS_API_KEY;\n    super({\n      speechModel: {\n        name: speechModel?.name ?? 'eleven_multilingual_v2',\n        apiKey: speechModel?.apiKey,\n      },\n      listeningModel: {\n        name: listeningModel?.name ?? 'scribe_v1',\n        apiKey: listeningModel?.apiKey,\n      },\n      speaker,\n    });\n\n    if (!apiKey) {\n      throw new Error('ELEVENLABS_API_KEY is not set');\n    }\n\n    this.client = new ElevenLabsClient({\n      apiKey,\n    });\n\n    this.speaker = speaker || '9BWtsMINqrJLrRacOk9x'; // Aria is the default speaker\n  }\n\n  /**\n   * Retrieves a list of available speakers from the Eleven Labs API.\n   * Each speaker includes their ID, name, language, and gender.\n   *\n   * @returns {Promise<Array<{ voiceId: string, name: string, language: string, gender: string }>>}\n   * A promise that resolves to an array of speaker objects.\n   */\n  async getSpeakers() {\n    const voices = await this.client.voices.getAll();\n    return (\n      voices?.voices?.map(voice => ({\n        voiceId: voice.voice_id,\n        name: voice.name,\n        language: voice.labels?.language || 'en',\n        gender: voice.labels?.gender || 'neutral',\n      })) ?? []\n    );\n  }\n\n  private async streamToString(stream: NodeJS.ReadableStream): Promise<string> {\n    const chunks: Buffer[] = [];\n    for await (const chunk of stream) {\n      if (typeof chunk === 'string') {\n        chunks.push(Buffer.from(chunk));\n      } else {\n        chunks.push(chunk);\n      }\n    }\n    return Buffer.concat(chunks).toString('utf-8');\n  }\n\n  /**\n   * Converts text or audio input into speech using the Eleven Labs API.\n   *\n   * @param {string | NodeJS.ReadableStream} input - The text to be converted to speech or a stream containing audio data.\n   * @param {Object} [options] - Optional parameters for the speech generation.\n   * @param {string} [options.speaker] - The ID of the speaker to use for the speech. If not provided, the default speaker will be used.\n   * @param {string} [options.outputFormat] - The audio output format (e.g., 'ulaw_8000', 'pcm_16000', 'mp3_44100_128'). If not provided, defaults to ElevenLabs' default format.\n   *\n   * @returns {Promise<NodeJS.ReadableStream>} A promise that resolves to a readable stream of the generated speech.\n   *\n   * @throws {Error} If no speaker is specified or if no speech model is set.\n   */\n  async speak(\n    input: string | NodeJS.ReadableStream,\n    options?: {\n      speaker?: string;\n      outputFormat?: string;\n      [key: string]: any;\n    },\n  ): Promise<NodeJS.ReadableStream> {\n    const speaker = options?.speaker || this.speaker;\n    if (!speaker) {\n      throw new Error('No speaker specified');\n    }\n\n    if (!this.speechModel?.name) {\n      throw new Error('No speech model specified');\n    }\n    const text = typeof input === 'string' ? input : await this.streamToString(input);\n\n    return await this.client.generate({\n      text,\n      voice: speaker,\n      model_id: this.speechModel?.name as ElevenLabsModel,\n      stream: true,\n      ...(options?.outputFormat && { output_format: options.outputFormat as any }),\n    });\n  }\n\n  /**\n   * Checks if listening capabilities are enabled.\n   *\n   * @returns {Promise<{ enabled: boolean }>}\n   */\n  async getListener() {\n    return { enabled: true };\n  }\n\n  /**\n   * Converts audio input to text using ElevenLabs Speech-to-Text API.\n   *\n   * @param input - A readable stream containing the audio data to transcribe\n   * @param options - Configuration options for the transcription\n   * @param options.language_code - ISO language code (e.g., 'en', 'fr', 'es')\n   * @param options.tag_audio_events - Whether to tag audio events like [MUSIC], [LAUGHTER], etc.\n   * @param options.num_speakers - Number of speakers to detect in the audio\n   * @param options.filetype - Audio file format (e.g., 'mp3', 'wav', 'ogg')\n   * @param options.timeoutInSeconds - Request timeout in seconds\n   * @param options.maxRetries - Maximum number of retry attempts\n   * @param options.abortSignal - Signal to abort the request\n   *\n   * @returns A Promise that resolves to the transcribed text\n   *\n   */\n  async listen(input: NodeJS.ReadableStream, options?: ElevenLabsListenOptions): Promise<string> {\n    const chunks: Buffer[] = [];\n    for await (const chunk of input) {\n      if (typeof chunk === 'string') {\n        chunks.push(Buffer.from(chunk));\n      } else {\n        chunks.push(chunk);\n      }\n    }\n    const buffer = Buffer.concat(chunks);\n\n    const { language_code, tag_audio_events, num_speakers, filetype, ...requestOptions } = options || {};\n\n    const file = new File([buffer], `audio.${filetype || 'mp3'}`);\n\n    const transcription = await this.client.speechToText.convert(\n      {\n        file: file,\n        model_id: this.listeningModel?.name as ElevenLabsModel,\n        language_code,\n        tag_audio_events,\n        num_speakers,\n      },\n      requestOptions,\n    );\n\n    return transcription.text;\n  }\n}\n"]}