@mastra/core 1.26.0-alpha.5 → 1.26.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/agent/index.cjs +8 -8
  3. package/dist/agent/index.js +1 -1
  4. package/dist/browser/index.cjs +2 -2
  5. package/dist/browser/index.js +1 -1
  6. package/dist/channels/index.cjs +4 -4
  7. package/dist/channels/index.js +1 -1
  8. package/dist/{chunk-3PRW3IRQ.cjs → chunk-2GTJG7N7.cjs} +5 -5
  9. package/dist/{chunk-3PRW3IRQ.cjs.map → chunk-2GTJG7N7.cjs.map} +1 -1
  10. package/dist/{chunk-2ZA7GO5N.cjs → chunk-2RYZTNKM.cjs} +9 -9
  11. package/dist/{chunk-2ZA7GO5N.cjs.map → chunk-2RYZTNKM.cjs.map} +1 -1
  12. package/dist/{chunk-HV6FLK65.js → chunk-3V3TWAOV.js} +3 -3
  13. package/dist/{chunk-HV6FLK65.js.map → chunk-3V3TWAOV.js.map} +1 -1
  14. package/dist/{chunk-72EQLBZY.js → chunk-4OEDEA4R.js} +18 -2
  15. package/dist/chunk-4OEDEA4R.js.map +1 -0
  16. package/dist/{chunk-L5FMCXMX.js → chunk-7TE3EINJ.js} +3 -3
  17. package/dist/{chunk-L5FMCXMX.js.map → chunk-7TE3EINJ.js.map} +1 -1
  18. package/dist/{chunk-PP3Z4TR3.cjs → chunk-A5FICPKS.cjs} +144 -30
  19. package/dist/chunk-A5FICPKS.cjs.map +1 -0
  20. package/dist/{chunk-5WHRYMKF.cjs → chunk-CMVFPCQD.cjs} +6 -6
  21. package/dist/{chunk-5WHRYMKF.cjs.map → chunk-CMVFPCQD.cjs.map} +1 -1
  22. package/dist/{chunk-PMNREZUF.js → chunk-CSKV732I.js} +78 -9
  23. package/dist/chunk-CSKV732I.js.map +1 -0
  24. package/dist/{chunk-GNOSEGOW.cjs → chunk-D6TANH6C.cjs} +369 -300
  25. package/dist/chunk-D6TANH6C.cjs.map +1 -0
  26. package/dist/{chunk-TDX45OUR.js → chunk-DC2ANROB.js} +5 -5
  27. package/dist/{chunk-TDX45OUR.js.map → chunk-DC2ANROB.js.map} +1 -1
  28. package/dist/{chunk-MHZ7JPQO.js → chunk-E2JX5SB5.js} +4 -4
  29. package/dist/{chunk-MHZ7JPQO.js.map → chunk-E2JX5SB5.js.map} +1 -1
  30. package/dist/{chunk-ANNI34X7.cjs → chunk-EF6TARJQ.cjs} +17 -17
  31. package/dist/{chunk-ANNI34X7.cjs.map → chunk-EF6TARJQ.cjs.map} +1 -1
  32. package/dist/{chunk-QQDA2MGW.js → chunk-F6JLITZF.js} +9 -9
  33. package/dist/{chunk-QQDA2MGW.js.map → chunk-F6JLITZF.js.map} +1 -1
  34. package/dist/{chunk-HDKQ7SH2.cjs → chunk-IHIJMKPH.cjs} +15 -3
  35. package/dist/chunk-IHIJMKPH.cjs.map +1 -0
  36. package/dist/{chunk-AJBH645B.js → chunk-IIK3GTWP.js} +4 -4
  37. package/dist/{chunk-AJBH645B.js.map → chunk-IIK3GTWP.js.map} +1 -1
  38. package/dist/{chunk-IDXQEXTK.js → chunk-J2RBPKWY.js} +132 -18
  39. package/dist/chunk-J2RBPKWY.js.map +1 -0
  40. package/dist/{chunk-PDZA7CHH.js → chunk-KHUIVU76.js} +3 -3
  41. package/dist/{chunk-PDZA7CHH.js.map → chunk-KHUIVU76.js.map} +1 -1
  42. package/dist/{chunk-FCD77VJW.js → chunk-LDMQWY3L.js} +15 -3
  43. package/dist/chunk-LDMQWY3L.js.map +1 -0
  44. package/dist/{chunk-T44GAO6N.cjs → chunk-LDQ34EIK.cjs} +17 -2
  45. package/dist/chunk-LDQ34EIK.cjs.map +1 -0
  46. package/dist/{chunk-SRBMROTH.js → chunk-MDW33PHJ.js} +3 -3
  47. package/dist/{chunk-SRBMROTH.js.map → chunk-MDW33PHJ.js.map} +1 -1
  48. package/dist/{chunk-IT7OSYXH.js → chunk-MXTZZYN7.js} +17 -2
  49. package/dist/chunk-MXTZZYN7.js.map +1 -0
  50. package/dist/{chunk-OLEGQBPJ.cjs → chunk-NQ2WVP6R.cjs} +48 -48
  51. package/dist/{chunk-OLEGQBPJ.cjs.map → chunk-NQ2WVP6R.cjs.map} +1 -1
  52. package/dist/{chunk-RAD2NM47.cjs → chunk-RYMTTCPE.cjs} +18 -2
  53. package/dist/chunk-RYMTTCPE.cjs.map +1 -0
  54. package/dist/{chunk-COER2756.cjs → chunk-X5MXWGXL.cjs} +17 -17
  55. package/dist/{chunk-COER2756.cjs.map → chunk-X5MXWGXL.cjs.map} +1 -1
  56. package/dist/{chunk-RK7JY24T.cjs → chunk-Y43FM6KS.cjs} +7 -7
  57. package/dist/{chunk-RK7JY24T.cjs.map → chunk-Y43FM6KS.cjs.map} +1 -1
  58. package/dist/{chunk-IRVU7UEG.cjs → chunk-YEQS5A2T.cjs} +224 -224
  59. package/dist/{chunk-IRVU7UEG.cjs.map → chunk-YEQS5A2T.cjs.map} +1 -1
  60. package/dist/datasets/index.cjs +11 -11
  61. package/dist/datasets/index.js +1 -1
  62. package/dist/docs/SKILL.md +1 -1
  63. package/dist/docs/assets/SOURCE_MAP.json +147 -147
  64. package/dist/evals/index.cjs +5 -5
  65. package/dist/evals/index.js +2 -2
  66. package/dist/evals/scoreTraces/index.cjs +3 -3
  67. package/dist/evals/scoreTraces/index.js +1 -1
  68. package/dist/harness/index.cjs +8 -7
  69. package/dist/harness/index.cjs.map +1 -1
  70. package/dist/harness/index.js +6 -5
  71. package/dist/harness/index.js.map +1 -1
  72. package/dist/harness/tools.d.ts.map +1 -1
  73. package/dist/index.cjs +2 -2
  74. package/dist/index.js +1 -1
  75. package/dist/llm/index.cjs +20 -20
  76. package/dist/llm/index.js +5 -5
  77. package/dist/llm/model/aisdk/v4/model.d.ts +90 -0
  78. package/dist/llm/model/aisdk/v4/model.d.ts.map +1 -0
  79. package/dist/llm/model/aisdk/v5/model.d.ts +13 -0
  80. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
  81. package/dist/llm/model/aisdk/v6/model.d.ts +12 -0
  82. package/dist/llm/model/aisdk/v6/model.d.ts.map +1 -1
  83. package/dist/llm/model/gateways/base.d.ts +13 -0
  84. package/dist/llm/model/gateways/base.d.ts.map +1 -1
  85. package/dist/llm/model/provider-types.generated.d.ts +50 -5
  86. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  87. package/dist/llm/model/router.d.ts +12 -0
  88. package/dist/llm/model/router.d.ts.map +1 -1
  89. package/dist/loop/index.cjs +14 -14
  90. package/dist/loop/index.js +1 -1
  91. package/dist/mastra/index.cjs +2 -2
  92. package/dist/mastra/index.js +1 -1
  93. package/dist/mastra-E4FZXGH6.cjs +12 -0
  94. package/dist/{mastra-VDOKA4KM.cjs.map → mastra-E4FZXGH6.cjs.map} +1 -1
  95. package/dist/mastra-HXNBKNLN.js +3 -0
  96. package/dist/{mastra-7Y4LYBV5.js.map → mastra-HXNBKNLN.js.map} +1 -1
  97. package/dist/memory/index.cjs +19 -19
  98. package/dist/memory/index.js +1 -1
  99. package/dist/models-dev-7WNX7TCU.js +3 -0
  100. package/dist/{models-dev-NA6SJZMY.js.map → models-dev-7WNX7TCU.js.map} +1 -1
  101. package/dist/models-dev-WLCAFFJ4.cjs +12 -0
  102. package/dist/{models-dev-NF7UD62B.cjs.map → models-dev-WLCAFFJ4.cjs.map} +1 -1
  103. package/dist/netlify-36GUTVVT.cjs +12 -0
  104. package/dist/{netlify-P4EFQMHA.cjs.map → netlify-36GUTVVT.cjs.map} +1 -1
  105. package/dist/netlify-YRYIHP2F.js +3 -0
  106. package/dist/{netlify-KHE7KRN5.js.map → netlify-YRYIHP2F.js.map} +1 -1
  107. package/dist/processor-provider/index.cjs +10 -10
  108. package/dist/processor-provider/index.js +1 -1
  109. package/dist/processors/index.cjs +45 -45
  110. package/dist/processors/index.js +1 -1
  111. package/dist/provider-registry-42GJNKSE.cjs +44 -0
  112. package/dist/{provider-registry-SFV3WU5J.cjs.map → provider-registry-42GJNKSE.cjs.map} +1 -1
  113. package/dist/provider-registry-754T4RLN.js +3 -0
  114. package/dist/{provider-registry-LSYGSSFL.js.map → provider-registry-754T4RLN.js.map} +1 -1
  115. package/dist/provider-registry.json +124 -10
  116. package/dist/relevance/index.cjs +3 -3
  117. package/dist/relevance/index.js +1 -1
  118. package/dist/stream/index.cjs +8 -8
  119. package/dist/stream/index.js +1 -1
  120. package/dist/test-utils/llm-mock.cjs +4 -4
  121. package/dist/test-utils/llm-mock.js +1 -1
  122. package/dist/tool-loop-agent/index.cjs +4 -4
  123. package/dist/tool-loop-agent/index.js +1 -1
  124. package/dist/voice/index.cjs +6 -6
  125. package/dist/voice/index.js +1 -1
  126. package/dist/voice/voice.d.ts +18 -0
  127. package/dist/voice/voice.d.ts.map +1 -1
  128. package/dist/workflows/evented/index.cjs +10 -10
  129. package/dist/workflows/evented/index.js +1 -1
  130. package/dist/workflows/index.cjs +24 -24
  131. package/dist/workflows/index.js +1 -1
  132. package/package.json +5 -5
  133. package/src/llm/model/provider-types.generated.d.ts +50 -5
  134. package/dist/chunk-72EQLBZY.js.map +0 -1
  135. package/dist/chunk-FCD77VJW.js.map +0 -1
  136. package/dist/chunk-GNOSEGOW.cjs.map +0 -1
  137. package/dist/chunk-HDKQ7SH2.cjs.map +0 -1
  138. package/dist/chunk-IDXQEXTK.js.map +0 -1
  139. package/dist/chunk-IT7OSYXH.js.map +0 -1
  140. package/dist/chunk-PMNREZUF.js.map +0 -1
  141. package/dist/chunk-PP3Z4TR3.cjs.map +0 -1
  142. package/dist/chunk-RAD2NM47.cjs.map +0 -1
  143. package/dist/chunk-T44GAO6N.cjs.map +0 -1
  144. package/dist/mastra-7Y4LYBV5.js +0 -3
  145. package/dist/mastra-VDOKA4KM.cjs +0 -12
  146. package/dist/models-dev-NA6SJZMY.js +0 -3
  147. package/dist/models-dev-NF7UD62B.cjs +0 -12
  148. package/dist/netlify-KHE7KRN5.js +0 -3
  149. package/dist/netlify-P4EFQMHA.cjs +0 -12
  150. package/dist/provider-registry-LSYGSSFL.js +0 -3
  151. package/dist/provider-registry-SFV3WU5J.cjs +0 -44
@@ -21,6 +21,22 @@ var MastraVoice = class extends chunkFCQNDFEW_cjs.MastraBase {
21
21
  this.speaker = speaker;
22
22
  this.realtimeConfig = realtimeConfig;
23
23
  }
24
+ /**
25
+ * Custom serialization for tracing/observability spans.
26
+ * Excludes `apiKey` from listeningModel / speechModel / realtimeConfig
27
+ * and any provider-specific state held by subclasses. Subclasses that
28
+ * need to expose additional non-sensitive fields can override.
29
+ */
30
+ serializeForSpan() {
31
+ return {
32
+ component: "VOICE",
33
+ name: this.name,
34
+ speaker: this.speaker,
35
+ listeningModel: this.listeningModel ? { name: this.listeningModel.name } : void 0,
36
+ speechModel: this.speechModel ? { name: this.speechModel.name } : void 0,
37
+ realtimeModel: this.realtimeConfig?.model
38
+ };
39
+ }
24
40
  updateConfig(_options) {
25
41
  this.logger.debug("updateConfig not implemented by this voice provider");
26
42
  }
@@ -429,5 +445,5 @@ exports.AISDKTranscription = AISDKTranscription;
429
445
  exports.CompositeVoice = CompositeVoice;
430
446
  exports.DefaultVoice = DefaultVoice;
431
447
  exports.MastraVoice = MastraVoice;
432
- //# sourceMappingURL=chunk-RAD2NM47.cjs.map
433
- //# sourceMappingURL=chunk-RAD2NM47.cjs.map
448
+ //# sourceMappingURL=chunk-RYMTTCPE.cjs.map
449
+ //# sourceMappingURL=chunk-RYMTTCPE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/voice/voice.ts","../src/voice/aisdk/speech.ts","../src/voice/aisdk/transcription.ts","../src/voice/composite-voice.ts","../src/voice/default-voice.ts"],"names":["MastraBase","generateSpeech","stream","PassThrough","transcribe","MastraError"],"mappings":"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","file":"chunk-RYMTTCPE.cjs","sourcesContent":["import type { ToolsInput } from '../agent';\nimport { MastraBase } from '../base';\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 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> extends MastraBase {\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(): {\n component: 'VOICE';\n name?: string;\n speaker?: string;\n listeningModel?: { name: string };\n speechModel?: { name: string };\n realtimeModel?: string;\n } {\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 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 return Promise.resolve();\n }\n\n /**\n * Relay audio data to the voice provider for real-time processing\n * @param audioData Audio data to relay\n */\n 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 return Promise.resolve();\n }\n\n /**\n * Trigger voice providers to respond\n */\n answer(_options?: Record<string, unknown>): Promise<void> {\n this.logger.debug('answer not implemented by this voice provider');\n return Promise.resolve();\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 { PassThrough } from 'node:stream';\nimport { experimental_generateSpeech } from '@internal/ai-sdk-v5';\nimport type { SpeechModel } from '@internal/ai-sdk-v5';\nimport { MastraVoice } from '../voice';\n\nexport class AISDKSpeech extends MastraVoice {\n private model: SpeechModel;\n private defaultVoice?: string;\n\n constructor(model: SpeechModel, options?: { voice?: string }) {\n super({ name: 'ai-sdk-speech' });\n this.model = model;\n this.defaultVoice = options?.voice;\n }\n\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: {\n speaker?: string;\n language?: string;\n providerOptions?: Record<string, any>;\n abortSignal?: AbortSignal;\n headers?: Record<string, string>;\n },\n ): Promise<NodeJS.ReadableStream> {\n // Convert stream to text if needed\n const text = typeof input === 'string' ? input : await this.streamToText(input);\n\n const result = await experimental_generateSpeech({\n model: this.model,\n text,\n voice: options?.speaker || this.defaultVoice, // Map speaker to AI SDK's voice parameter\n language: options?.language,\n providerOptions: options?.providerOptions,\n abortSignal: options?.abortSignal,\n headers: options?.headers,\n });\n\n // Convert Uint8Array to Node stream\n const stream = new PassThrough();\n stream.end(Buffer.from(result.audio.uint8Array));\n return stream;\n }\n\n async listen(): Promise<string> {\n throw new Error('AI SDK speech models do not support transcription. Use AISDKTranscription instead.');\n }\n\n async getSpeakers() {\n // Return empty array - voice must be specified in speak() options\n return [];\n }\n\n async getListener() {\n return { enabled: false };\n }\n\n private async streamToText(stream: NodeJS.ReadableStream): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of stream) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n return Buffer.concat(chunks).toString('utf-8');\n }\n}\n","import { experimental_transcribe } from '@internal/ai-sdk-v5';\nimport type { TranscriptionModel } from '@internal/ai-sdk-v5';\nimport { MastraVoice } from '../voice';\n\nexport class AISDKTranscription extends MastraVoice {\n private model: TranscriptionModel;\n\n constructor(model: TranscriptionModel) {\n super({ name: 'ai-sdk-transcription' });\n this.model = model;\n }\n\n async speak(): Promise<NodeJS.ReadableStream> {\n throw new Error('AI SDK transcription models do not support text-to-speech. Use AISDKSpeech instead.');\n }\n\n async getSpeakers() {\n return [];\n }\n\n async getListener() {\n return { enabled: true };\n }\n\n /**\n * Transcribe audio to text\n * For enhanced metadata (segments, language, duration), use AI SDK's transcribe() directly\n */\n async listen(\n audioStream: NodeJS.ReadableStream,\n options?: {\n providerOptions?: Record<string, any>;\n abortSignal?: AbortSignal;\n headers?: Record<string, string>;\n },\n ): Promise<string> {\n const audioBuffer = await this.convertToBuffer(audioStream);\n\n const result = await experimental_transcribe({\n model: this.model,\n audio: audioBuffer,\n providerOptions: options?.providerOptions,\n abortSignal: options?.abortSignal,\n headers: options?.headers,\n });\n\n return result.text;\n }\n\n private async convertToBuffer(audio: NodeJS.ReadableStream | Buffer | Uint8Array | string): Promise<Buffer> {\n if (Buffer.isBuffer(audio)) return audio;\n if (audio instanceof Uint8Array) return Buffer.from(audio);\n if (typeof audio === 'string') return Buffer.from(audio, 'base64');\n\n const chunks: Buffer[] = [];\n for await (const chunk of audio) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n return Buffer.concat(chunks);\n }\n}\n","import type { TranscriptionModel, SpeechModel } from '@internal/ai-sdk-v5';\n\nimport type { ToolsInput } from '../agent';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\n\nimport { AISDKSpeech } from './aisdk/speech';\nimport { AISDKTranscription } from './aisdk/transcription';\nimport { MastraVoice } from './voice';\nimport type { VoiceEventType, VoiceEventMap } from '.';\n\nconst supportedSpecificationVersions = ['v2', 'v3'];\n\n// Helper to check if something is an AI SDK model\nfunction isTranscriptionModel(obj: any): obj is TranscriptionModel {\n return (\n obj && typeof obj === 'object' && obj.modelId && supportedSpecificationVersions.includes(obj.specificationVersion)\n );\n}\n\nfunction isSpeechModel(obj: any): obj is SpeechModel {\n return (\n obj && typeof obj === 'object' && obj.modelId && supportedSpecificationVersions.includes(obj.specificationVersion)\n );\n}\n\nexport class CompositeVoice extends MastraVoice<unknown, unknown, unknown, ToolsInput, VoiceEventMap> {\n protected speakProvider?: MastraVoice;\n protected listenProvider?: MastraVoice;\n protected realtimeProvider?: MastraVoice;\n\n constructor({\n input,\n output,\n realtime,\n }: {\n input?: MastraVoice | TranscriptionModel;\n output?: MastraVoice | SpeechModel;\n realtime?: MastraVoice;\n }) {\n super();\n\n // Auto-wrap AI SDK models\n if (input) {\n this.listenProvider = isTranscriptionModel(input) ? new AISDKTranscription(input) : input;\n }\n\n if (output) {\n this.speakProvider = isSpeechModel(output) ? new AISDKSpeech(output) : output;\n }\n\n this.realtimeProvider = realtime;\n }\n\n /**\n * Convert text to speech using the configured 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 or void if in realtime mode\n */\n async speak(\n input: string | NodeJS.ReadableStream,\n options?: { speaker?: string } & any,\n ): Promise<NodeJS.ReadableStream | void> {\n if (this.realtimeProvider) {\n return this.realtimeProvider.speak(input, options);\n } else if (this.speakProvider) {\n return this.speakProvider.speak(input, options);\n }\n\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_SPEAK_PROVIDER',\n text: 'No speak provider or realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async listen(audioStream: NodeJS.ReadableStream, options?: any) {\n if (this.realtimeProvider) {\n return await this.realtimeProvider.listen(audioStream, options);\n } else if (this.listenProvider) {\n return await this.listenProvider.listen(audioStream, options);\n }\n\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_LISTEN_PROVIDER',\n text: 'No listen provider or realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async getSpeakers() {\n if (this.realtimeProvider) {\n return this.realtimeProvider.getSpeakers();\n } else if (this.speakProvider) {\n return this.speakProvider.getSpeakers();\n }\n\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_SPEAKERS_PROVIDER',\n text: 'No speak provider or realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async getListener() {\n if (this.realtimeProvider) {\n return this.realtimeProvider.getListener();\n } else if (this.listenProvider) {\n return this.listenProvider.getListener();\n }\n\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_LISTENER_PROVIDER',\n text: 'No listener provider or realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n updateConfig(options: Record<string, unknown>): void {\n if (!this.realtimeProvider) {\n return;\n }\n this.realtimeProvider.updateConfig(options);\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 connect(options?: Record<string, unknown>): Promise<void> {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_CONNECT',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n return this.realtimeProvider.connect(options);\n }\n\n /**\n * Relay audio data to the voice provider for real-time processing\n * @param audioData Audio data to send\n */\n send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void> {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_SEND',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n return this.realtimeProvider.send(audioData);\n }\n\n /**\n * Trigger voice providers to respond\n */\n answer(options?: Record<string, unknown>): Promise<void> {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_ANSWER',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n return this.realtimeProvider.answer(options);\n }\n\n /**\n * Equip the voice provider with instructions\n * @param instructions Instructions to add\n */\n addInstructions(instructions: string): void {\n if (!this.realtimeProvider) {\n return;\n }\n this.realtimeProvider.addInstructions(instructions);\n }\n\n /**\n * Equip the voice provider with tools\n * @param tools Array of tools to add\n */\n addTools(tools: ToolsInput): void {\n if (!this.realtimeProvider) {\n return;\n }\n this.realtimeProvider.addTools(tools);\n }\n\n /**\n * Disconnect from the WebSocket or WebRTC connection\n */\n close(): void {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_CLOSE',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n this.realtimeProvider.close();\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 VoiceEventMap ? VoiceEventMap[E] : unknown) => void,\n ): void {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_ON',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n this.realtimeProvider.on(event, callback);\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 VoiceEventMap ? VoiceEventMap[E] : unknown) => void,\n ): void {\n if (!this.realtimeProvider) {\n throw new MastraError({\n id: 'VOICE_COMPOSITE_NO_REALTIME_PROVIDER_OFF',\n text: 'No realtime provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n this.realtimeProvider.off(event, callback);\n }\n}\n","import { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { MastraVoice } from '.';\n\nexport class DefaultVoice extends MastraVoice {\n constructor() {\n super();\n }\n\n async speak(_input: string | NodeJS.ReadableStream): Promise<NodeJS.ReadableStream> {\n throw new MastraError({\n id: 'VOICE_DEFAULT_NO_SPEAK_PROVIDER',\n text: 'No voice provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async listen(_input: string | NodeJS.ReadableStream): Promise<string> {\n throw new MastraError({\n id: 'VOICE_DEFAULT_NO_LISTEN_PROVIDER',\n text: 'No voice provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async getSpeakers(): Promise<{ voiceId: string }[]> {\n throw new MastraError({\n id: 'VOICE_DEFAULT_NO_SPEAKERS_PROVIDER',\n text: 'No voice provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n\n async getListener(): Promise<{ enabled: boolean }> {\n throw new MastraError({\n id: 'VOICE_DEFAULT_NO_LISTENER_PROVIDER',\n text: 'No voice provider configured',\n domain: ErrorDomain.MASTRA_VOICE,\n category: ErrorCategory.USER,\n });\n }\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkOLEGQBPJ_cjs = require('./chunk-OLEGQBPJ.cjs');
4
- var chunkRK7JY24T_cjs = require('./chunk-RK7JY24T.cjs');
3
+ var chunkNQ2WVP6R_cjs = require('./chunk-NQ2WVP6R.cjs');
4
+ var chunkY43FM6KS_cjs = require('./chunk-Y43FM6KS.cjs');
5
5
  var chunkK5X6DWHC_cjs = require('./chunk-K5X6DWHC.cjs');
6
- var chunk5WHRYMKF_cjs = require('./chunk-5WHRYMKF.cjs');
7
- var chunk3PRW3IRQ_cjs = require('./chunk-3PRW3IRQ.cjs');
8
- var chunkANNI34X7_cjs = require('./chunk-ANNI34X7.cjs');
6
+ var chunkCMVFPCQD_cjs = require('./chunk-CMVFPCQD.cjs');
7
+ var chunk2GTJG7N7_cjs = require('./chunk-2GTJG7N7.cjs');
8
+ var chunkEF6TARJQ_cjs = require('./chunk-EF6TARJQ.cjs');
9
9
  var chunkFSPWJO33_cjs = require('./chunk-FSPWJO33.cjs');
10
10
  var chunkDGN2UMWP_cjs = require('./chunk-DGN2UMWP.cjs');
11
11
  var chunkMR7ZWBL6_cjs = require('./chunk-MR7ZWBL6.cjs');
12
- var chunkGNOSEGOW_cjs = require('./chunk-GNOSEGOW.cjs');
12
+ var chunkD6TANH6C_cjs = require('./chunk-D6TANH6C.cjs');
13
13
  var chunkI4YMMVQ3_cjs = require('./chunk-I4YMMVQ3.cjs');
14
14
  var chunkONTZK64Y_cjs = require('./chunk-ONTZK64Y.cjs');
15
15
  var chunk4U7ZLI36_cjs = require('./chunk-4U7ZLI36.cjs');
@@ -75,7 +75,7 @@ var Mastra = class {
75
75
  }
76
76
  get datasets() {
77
77
  if (!this.#datasets) {
78
- this.#datasets = new chunk5WHRYMKF_cjs.DatasetsManager(this);
78
+ this.#datasets = new chunkCMVFPCQD_cjs.DatasetsManager(this);
79
79
  }
80
80
  return this.#datasets;
81
81
  }
@@ -276,7 +276,7 @@ var Mastra = class {
276
276
  this.#events[topic] = config?.events?.[topic] ?? [];
277
277
  }
278
278
  }
279
- const workflowEventProcessor = new chunkOLEGQBPJ_cjs.WorkflowEventProcessor({ mastra: this });
279
+ const workflowEventProcessor = new chunkNQ2WVP6R_cjs.WorkflowEventProcessor({ mastra: this });
280
280
  const workflowEventCb = async (event, cb) => {
281
281
  try {
282
282
  await workflowEventProcessor.process(event, cb);
@@ -304,7 +304,7 @@ var Mastra = class {
304
304
  this.#idGenerator = config?.idGenerator;
305
305
  let storage = config?.storage;
306
306
  if (storage) {
307
- storage = chunkANNI34X7_cjs.augmentWithInit(storage);
307
+ storage = chunkEF6TARJQ_cjs.augmentWithInit(storage);
308
308
  }
309
309
  if (config?.observability) {
310
310
  if (typeof config.observability.getDefaultInstance === "function") {
@@ -387,7 +387,7 @@ var Mastra = class {
387
387
  }
388
388
  });
389
389
  }
390
- for (const gateway of chunkGNOSEGOW_cjs.defaultGateways) {
390
+ for (const gateway of chunkD6TANH6C_cjs.defaultGateways) {
391
391
  const key = gateway.getId();
392
392
  if (!this.#gateways[key]) {
393
393
  this.#gateways[key] = gateway;
@@ -417,7 +417,7 @@ var Mastra = class {
417
417
  }
418
418
  });
419
419
  }
420
- chunkMR7ZWBL6_cjs.registerHook("onScorerRun" /* ON_SCORER_RUN */, chunk3PRW3IRQ_cjs.createOnScorerHook(this));
420
+ chunkMR7ZWBL6_cjs.registerHook("onScorerRun" /* ON_SCORER_RUN */, chunk2GTJG7N7_cjs.createOnScorerHook(this));
421
421
  this.#observability.setMastraContext({ mastra: this });
422
422
  this.setLogger({ logger });
423
423
  }
@@ -567,8 +567,8 @@ var Mastra = class {
567
567
  throw createUndefinedPrimitiveError("agent", agent, key);
568
568
  }
569
569
  let mastraAgent;
570
- if (chunkRK7JY24T_cjs.isToolLoopAgentLike(agent)) {
571
- mastraAgent = chunkRK7JY24T_cjs.toolLoopAgentToMastraAgent(agent, { fallbackName: key });
570
+ if (chunkY43FM6KS_cjs.isToolLoopAgentLike(agent)) {
571
+ mastraAgent = chunkY43FM6KS_cjs.toolLoopAgentToMastraAgent(agent, { fallbackName: key });
572
572
  } else {
573
573
  mastraAgent = agent;
574
574
  }
@@ -1910,7 +1910,7 @@ var Mastra = class {
1910
1910
  * ```
1911
1911
  */
1912
1912
  setStorage(storage) {
1913
- this.#storage = chunkANNI34X7_cjs.augmentWithInit(storage);
1913
+ this.#storage = chunkEF6TARJQ_cjs.augmentWithInit(storage);
1914
1914
  this.#ensureBackgroundTaskManager();
1915
1915
  }
1916
1916
  setLogger({ logger }) {
@@ -2601,7 +2601,7 @@ var Mastra = class {
2601
2601
  if (process.env.MASTRA_DEV !== "true" && process.env.MASTRA_DEV !== "1") {
2602
2602
  return;
2603
2603
  }
2604
- import('./provider-registry-SFV3WU5J.cjs').then(async ({ GatewayRegistry }) => {
2604
+ import('./provider-registry-42GJNKSE.cjs').then(async ({ GatewayRegistry }) => {
2605
2605
  const registry = GatewayRegistry.getInstance();
2606
2606
  const customGateways = Object.values(this.#gateways || {});
2607
2607
  registry.registerCustomGateways(customGateways);
@@ -2655,5 +2655,5 @@ var Mastra = class {
2655
2655
  };
2656
2656
 
2657
2657
  exports.Mastra = Mastra;
2658
- //# sourceMappingURL=chunk-COER2756.cjs.map
2659
- //# sourceMappingURL=chunk-COER2756.cjs.map
2658
+ //# sourceMappingURL=chunk-X5MXWGXL.cjs.map
2659
+ //# sourceMappingURL=chunk-X5MXWGXL.cjs.map