@mastra/core 0.24.5 → 0.24.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 (277) hide show
  1. package/CHANGELOG.md +612 -0
  2. package/dist/agent/agent.d.ts +8 -6
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.types.d.ts +2 -0
  5. package/dist/agent/agent.types.d.ts.map +1 -1
  6. package/dist/agent/index.cjs +13 -13
  7. package/dist/agent/index.js +2 -2
  8. package/dist/agent/input-processor/index.cjs +6 -6
  9. package/dist/agent/input-processor/index.js +1 -1
  10. package/dist/agent/message-list/index.d.ts.map +1 -1
  11. package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
  12. package/dist/agent/test-utils.d.ts +4 -3
  13. package/dist/agent/test-utils.d.ts.map +1 -1
  14. package/dist/agent/utils.d.ts.map +1 -1
  15. package/dist/agent/workflows/prepare-stream/index.d.ts +4 -4
  16. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  17. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  18. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +4 -4
  19. package/dist/agent/workflows/prepare-stream/schema.d.ts +4 -4
  20. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +8 -1
  21. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  22. package/dist/ai-tracing/index.cjs +36 -36
  23. package/dist/ai-tracing/index.js +1 -1
  24. package/dist/chunk-3PSWNGBF.js +3 -0
  25. package/dist/{chunk-ZV5CC35D.js.map → chunk-3PSWNGBF.js.map} +1 -1
  26. package/dist/{chunk-XHKMGOON.cjs → chunk-42RUESSD.cjs} +204 -150
  27. package/dist/chunk-42RUESSD.cjs.map +1 -0
  28. package/dist/{chunk-UD7DS7OY.cjs → chunk-46XGIEXM.cjs} +4 -4
  29. package/dist/{chunk-UD7DS7OY.cjs.map → chunk-46XGIEXM.cjs.map} +1 -1
  30. package/dist/{chunk-HGNRQ3OG.js → chunk-5O52O25J.js} +15 -8
  31. package/dist/chunk-5O52O25J.js.map +1 -0
  32. package/dist/{chunk-OLERJ2OU.js → chunk-6D2K2CAA.js} +7 -5
  33. package/dist/chunk-6D2K2CAA.js.map +1 -0
  34. package/dist/chunk-6XCINXZ7.cjs +194 -0
  35. package/dist/chunk-6XCINXZ7.cjs.map +1 -0
  36. package/dist/chunk-BJ6XIEC6.js +13 -0
  37. package/dist/chunk-BJ6XIEC6.js.map +1 -0
  38. package/dist/chunk-BWYU7D33.js +192 -0
  39. package/dist/chunk-BWYU7D33.js.map +1 -0
  40. package/dist/{chunk-R7UDZZA5.cjs → chunk-CT2DMHGC.cjs} +8 -8
  41. package/dist/{chunk-R7UDZZA5.cjs.map → chunk-CT2DMHGC.cjs.map} +1 -1
  42. package/dist/{chunk-YSQE5IHK.cjs → chunk-CYEQK4PM.cjs} +10 -8
  43. package/dist/chunk-CYEQK4PM.cjs.map +1 -0
  44. package/dist/{chunk-FCJ5INK7.js → chunk-DHLW4AP7.js} +3 -3
  45. package/dist/{chunk-FCJ5INK7.js.map → chunk-DHLW4AP7.js.map} +1 -1
  46. package/dist/{chunk-4UOIJRD6.cjs → chunk-GZDIHQDK.cjs} +4 -4
  47. package/dist/{chunk-4UOIJRD6.cjs.map → chunk-GZDIHQDK.cjs.map} +1 -1
  48. package/dist/{chunk-WCHE6FJ7.js → chunk-HCCXJ5YJ.js} +111 -6
  49. package/dist/chunk-HCCXJ5YJ.js.map +1 -0
  50. package/dist/{chunk-34ZCWSUA.js → chunk-HSX2K7HB.js} +15 -14
  51. package/dist/chunk-HSX2K7HB.js.map +1 -0
  52. package/dist/{chunk-LZFCR2SE.cjs → chunk-IAJHRFO4.cjs} +4 -4
  53. package/dist/{chunk-LZFCR2SE.cjs.map → chunk-IAJHRFO4.cjs.map} +1 -1
  54. package/dist/{chunk-4HQPVSGA.cjs → chunk-ICF3MCIN.cjs} +64 -12
  55. package/dist/chunk-ICF3MCIN.cjs.map +1 -0
  56. package/dist/{chunk-N2DOZAFH.js → chunk-INOOZ2A2.js} +760 -508
  57. package/dist/chunk-INOOZ2A2.js.map +1 -0
  58. package/dist/{chunk-3JX2Y3WH.cjs → chunk-IWU4YSYT.cjs} +16 -15
  59. package/dist/chunk-IWU4YSYT.cjs.map +1 -0
  60. package/dist/{chunk-3KVI2HLS.cjs → chunk-KWF3J2Q4.cjs} +11 -11
  61. package/dist/{chunk-3KVI2HLS.cjs.map → chunk-KWF3J2Q4.cjs.map} +1 -1
  62. package/dist/{chunk-TEW3ODXX.js → chunk-LAQQETGP.js} +36 -34
  63. package/dist/chunk-LAQQETGP.js.map +1 -0
  64. package/dist/{chunk-EUNOQ7HN.js → chunk-MRSBLBQ5.js} +4 -4
  65. package/dist/{chunk-EUNOQ7HN.js.map → chunk-MRSBLBQ5.js.map} +1 -1
  66. package/dist/{chunk-LLSLFDO6.js → chunk-NRQC7DQW.js} +57 -5
  67. package/dist/chunk-NRQC7DQW.js.map +1 -0
  68. package/dist/{chunk-WBAXXG34.cjs → chunk-PAOBGBU7.cjs} +112 -5
  69. package/dist/chunk-PAOBGBU7.cjs.map +1 -0
  70. package/dist/chunk-PE3V7GUL.cjs +4 -0
  71. package/dist/{chunk-LJFJTTZQ.cjs.map → chunk-PE3V7GUL.cjs.map} +1 -1
  72. package/dist/{chunk-DOLSYVNJ.cjs → chunk-PIH5FBNQ.cjs} +12 -12
  73. package/dist/{chunk-DOLSYVNJ.cjs.map → chunk-PIH5FBNQ.cjs.map} +1 -1
  74. package/dist/{chunk-4SXWN3RR.js → chunk-Q6LWNLAJ.js} +203 -149
  75. package/dist/chunk-Q6LWNLAJ.js.map +1 -0
  76. package/dist/{chunk-SL7VKAQ3.js → chunk-R6XC4DV5.js} +7 -7
  77. package/dist/chunk-R6XC4DV5.js.map +1 -0
  78. package/dist/{chunk-WNFLWMEP.cjs → chunk-RJOVFHWN.cjs} +765 -511
  79. package/dist/chunk-RJOVFHWN.cjs.map +1 -0
  80. package/dist/chunk-UCPGYU55.cjs +15 -0
  81. package/dist/chunk-UCPGYU55.cjs.map +1 -0
  82. package/dist/{chunk-K7MEUZ3O.js → chunk-UWTYVVVZ.js} +3 -3
  83. package/dist/{chunk-K7MEUZ3O.js.map → chunk-UWTYVVVZ.js.map} +1 -1
  84. package/dist/{chunk-ZISECZZO.js → chunk-VHEA3YXS.js} +2 -2
  85. package/dist/chunk-VHEA3YXS.js.map +1 -0
  86. package/dist/chunk-VXHOOZSK.js +446 -0
  87. package/dist/chunk-VXHOOZSK.js.map +1 -0
  88. package/dist/{chunk-NUAURT4I.cjs → chunk-W4UVO3HL.cjs} +2 -2
  89. package/dist/chunk-W4UVO3HL.cjs.map +1 -0
  90. package/dist/{chunk-ZIHEKHUB.js → chunk-WIMFJ2BA.js} +3 -3
  91. package/dist/{chunk-ZIHEKHUB.js.map → chunk-WIMFJ2BA.js.map} +1 -1
  92. package/dist/{chunk-LRSB62Z6.cjs → chunk-X7F4CSGR.cjs} +15 -8
  93. package/dist/chunk-X7F4CSGR.cjs.map +1 -0
  94. package/dist/{chunk-WUFFST2N.cjs → chunk-XDMQQZNX.cjs} +70 -68
  95. package/dist/chunk-XDMQQZNX.cjs.map +1 -0
  96. package/dist/chunk-XWGHD4C7.cjs +450 -0
  97. package/dist/chunk-XWGHD4C7.cjs.map +1 -0
  98. package/dist/{chunk-FZXAPBVV.js → chunk-Z6QCWTTO.js} +3 -3
  99. package/dist/{chunk-FZXAPBVV.js.map → chunk-Z6QCWTTO.js.map} +1 -1
  100. package/dist/{chunk-GWACPQ56.js → chunk-ZIWN73GQ.js} +5 -5
  101. package/dist/{chunk-GWACPQ56.js.map → chunk-ZIWN73GQ.js.map} +1 -1
  102. package/dist/{chunk-IJRERAWQ.cjs → chunk-ZOYE65RA.cjs} +8 -8
  103. package/dist/chunk-ZOYE65RA.cjs.map +1 -0
  104. package/dist/index.cjs +75 -54
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.js +15 -10
  107. package/dist/index.js.map +1 -1
  108. package/dist/llm/index.cjs +24 -8
  109. package/dist/llm/index.d.ts +1 -0
  110. package/dist/llm/index.d.ts.map +1 -1
  111. package/dist/llm/index.js +5 -1
  112. package/dist/llm/model/gateways/base.d.ts +9 -4
  113. package/dist/llm/model/gateways/base.d.ts.map +1 -1
  114. package/dist/llm/model/gateways/index.d.ts +3 -1
  115. package/dist/llm/model/gateways/index.d.ts.map +1 -1
  116. package/dist/llm/model/gateways/models-dev.d.ts +3 -2
  117. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  118. package/dist/llm/model/gateways/netlify.d.ts +4 -3
  119. package/dist/llm/model/gateways/netlify.d.ts.map +1 -1
  120. package/dist/llm/model/model.d.ts.map +1 -1
  121. package/dist/llm/model/model.loop.d.ts +1 -1
  122. package/dist/llm/model/model.loop.d.ts.map +1 -1
  123. package/dist/llm/model/provider-registry.d.ts +11 -1
  124. package/dist/llm/model/provider-registry.d.ts.map +1 -1
  125. package/dist/llm/model/provider-types.generated.d.ts +324 -29
  126. package/dist/llm/model/registry-generator.d.ts +12 -0
  127. package/dist/llm/model/registry-generator.d.ts.map +1 -1
  128. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  129. package/dist/llm/model/router.d.ts +6 -1
  130. package/dist/llm/model/router.d.ts.map +1 -1
  131. package/dist/loop/index.cjs +2 -2
  132. package/dist/loop/index.js +1 -1
  133. package/dist/loop/loop.d.ts.map +1 -1
  134. package/dist/loop/network/index.d.ts +6 -6
  135. package/dist/loop/network/index.d.ts.map +1 -1
  136. package/dist/loop/test-utils/generateText.d.ts.map +1 -1
  137. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  138. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  139. package/dist/loop/types.d.ts +8 -0
  140. package/dist/loop/types.d.ts.map +1 -1
  141. package/dist/loop/workflows/agentic-execution/index.d.ts +36 -36
  142. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  143. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +24 -24
  144. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  145. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +12 -12
  146. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +1 -1
  147. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  148. package/dist/loop/workflows/agentic-loop/index.d.ts +36 -36
  149. package/dist/loop/workflows/schema.d.ts +16 -16
  150. package/dist/mastra/index.cjs +2 -2
  151. package/dist/mastra/index.d.ts +23 -0
  152. package/dist/mastra/index.d.ts.map +1 -1
  153. package/dist/mastra/index.js +1 -1
  154. package/dist/memory/index.cjs +4 -4
  155. package/dist/memory/index.js +1 -1
  156. package/dist/memory/types.d.ts +3 -2
  157. package/dist/memory/types.d.ts.map +1 -1
  158. package/dist/models-dev-LJ4O6FNF.js +3 -0
  159. package/dist/{models-dev-BL5TAKE6.js.map → models-dev-LJ4O6FNF.js.map} +1 -1
  160. package/dist/models-dev-T2CXOEDH.cjs +12 -0
  161. package/dist/{models-dev-HZ3LZHPX.cjs.map → models-dev-T2CXOEDH.cjs.map} +1 -1
  162. package/dist/netlify-BAEMIQNH.cjs +12 -0
  163. package/dist/{netlify-TX6V7SJJ.cjs.map → netlify-BAEMIQNH.cjs.map} +1 -1
  164. package/dist/netlify-L7AZ74PV.js +3 -0
  165. package/dist/{netlify-VJXBII33.js.map → netlify-L7AZ74PV.js.map} +1 -1
  166. package/dist/processors/index.cjs +11 -11
  167. package/dist/processors/index.js +1 -1
  168. package/dist/provider-registry-RUDYHG7J.cjs +40 -0
  169. package/dist/provider-registry-RUDYHG7J.cjs.map +1 -0
  170. package/dist/provider-registry-THITZUJ7.js +3 -0
  171. package/dist/provider-registry-THITZUJ7.js.map +1 -0
  172. package/dist/provider-registry.json +705 -68
  173. package/dist/{registry-generator-6WVOHM2L.cjs → registry-generator-DL42NMBM.cjs} +23 -6
  174. package/dist/registry-generator-DL42NMBM.cjs.map +1 -0
  175. package/dist/{registry-generator-DXRSYYYT.js → registry-generator-I6S4ARS6.js} +23 -7
  176. package/dist/registry-generator-I6S4ARS6.js.map +1 -0
  177. package/dist/relevance/index.cjs +4 -4
  178. package/dist/relevance/index.js +1 -1
  179. package/dist/scores/index.cjs +9 -9
  180. package/dist/scores/index.js +2 -2
  181. package/dist/scores/scoreTraces/index.cjs +8 -8
  182. package/dist/scores/scoreTraces/index.js +3 -3
  183. package/dist/server/composite-auth.d.ts +9 -0
  184. package/dist/server/composite-auth.d.ts.map +1 -0
  185. package/dist/server/index.cjs +83 -1
  186. package/dist/server/index.cjs.map +1 -1
  187. package/dist/server/index.d.ts +3 -0
  188. package/dist/server/index.d.ts.map +1 -1
  189. package/dist/server/index.js +82 -2
  190. package/dist/server/index.js.map +1 -1
  191. package/dist/server/simple-auth.d.ts +32 -0
  192. package/dist/server/simple-auth.d.ts.map +1 -0
  193. package/dist/storage/index.cjs +3 -3
  194. package/dist/storage/index.js +1 -1
  195. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  196. package/dist/stream/base/output.d.ts.map +1 -1
  197. package/dist/stream/index.cjs +11 -11
  198. package/dist/stream/index.js +2 -2
  199. package/dist/stream/types.d.ts +7 -2
  200. package/dist/stream/types.d.ts.map +1 -1
  201. package/dist/test-utils/llm-mock.cjs +2 -2
  202. package/dist/test-utils/llm-mock.js +1 -1
  203. package/dist/tools/index.cjs +2 -2
  204. package/dist/tools/index.js +1 -1
  205. package/dist/tools/stream.d.ts +1 -0
  206. package/dist/tools/stream.d.ts.map +1 -1
  207. package/dist/utils.cjs +17 -17
  208. package/dist/utils.js +1 -1
  209. package/dist/vector/filter/index.cjs +7 -189
  210. package/dist/vector/filter/index.cjs.map +1 -1
  211. package/dist/vector/filter/index.js +1 -190
  212. package/dist/vector/filter/index.js.map +1 -1
  213. package/dist/vector/index.cjs +9 -4
  214. package/dist/vector/index.d.ts +1 -0
  215. package/dist/vector/index.d.ts.map +1 -1
  216. package/dist/vector/index.js +2 -1
  217. package/dist/vector/types.d.ts +86 -3
  218. package/dist/vector/types.d.ts.map +1 -1
  219. package/dist/vector/vector.d.ts +39 -2
  220. package/dist/vector/vector.d.ts.map +1 -1
  221. package/dist/voice/aisdk/index.d.ts +3 -0
  222. package/dist/voice/aisdk/index.d.ts.map +1 -0
  223. package/dist/voice/aisdk/speech.d.ts +23 -0
  224. package/dist/voice/aisdk/speech.d.ts.map +1 -0
  225. package/dist/voice/aisdk/transcription.d.ts +22 -0
  226. package/dist/voice/aisdk/transcription.d.ts.map +1 -0
  227. package/dist/voice/composite-voice.d.ts +3 -2
  228. package/dist/voice/composite-voice.d.ts.map +1 -1
  229. package/dist/voice/index.cjs +12 -4
  230. package/dist/voice/index.d.ts +1 -0
  231. package/dist/voice/index.d.ts.map +1 -1
  232. package/dist/voice/index.js +1 -1
  233. package/dist/workflows/evented/index.cjs +10 -10
  234. package/dist/workflows/evented/index.js +1 -1
  235. package/dist/workflows/index.cjs +14 -14
  236. package/dist/workflows/index.js +1 -1
  237. package/dist/workflows/legacy/index.cjs +22 -22
  238. package/dist/workflows/legacy/index.js +1 -1
  239. package/dist/workflows/legacy/machine.d.ts +1 -1
  240. package/dist/workflows/legacy/workflow-instance.d.ts +2 -2
  241. package/dist/workflows/utils.d.ts.map +1 -1
  242. package/dist/workflows/workflow.d.ts +2 -0
  243. package/dist/workflows/workflow.d.ts.map +1 -1
  244. package/package.json +7 -7
  245. package/src/llm/model/provider-types.generated.d.ts +324 -29
  246. package/dist/chunk-34ZCWSUA.js.map +0 -1
  247. package/dist/chunk-3JX2Y3WH.cjs.map +0 -1
  248. package/dist/chunk-4HQPVSGA.cjs.map +0 -1
  249. package/dist/chunk-4SXWN3RR.js.map +0 -1
  250. package/dist/chunk-HF3GZRFP.cjs +0 -9
  251. package/dist/chunk-HF3GZRFP.cjs.map +0 -1
  252. package/dist/chunk-HGNRQ3OG.js.map +0 -1
  253. package/dist/chunk-IJRERAWQ.cjs.map +0 -1
  254. package/dist/chunk-LJFJTTZQ.cjs +0 -4
  255. package/dist/chunk-LLSLFDO6.js.map +0 -1
  256. package/dist/chunk-LRSB62Z6.cjs.map +0 -1
  257. package/dist/chunk-N2DOZAFH.js.map +0 -1
  258. package/dist/chunk-NUAURT4I.cjs.map +0 -1
  259. package/dist/chunk-OLERJ2OU.js.map +0 -1
  260. package/dist/chunk-RKXWLG33.js +0 -7
  261. package/dist/chunk-RKXWLG33.js.map +0 -1
  262. package/dist/chunk-SL7VKAQ3.js.map +0 -1
  263. package/dist/chunk-TEW3ODXX.js.map +0 -1
  264. package/dist/chunk-WBAXXG34.cjs.map +0 -1
  265. package/dist/chunk-WCHE6FJ7.js.map +0 -1
  266. package/dist/chunk-WNFLWMEP.cjs.map +0 -1
  267. package/dist/chunk-WUFFST2N.cjs.map +0 -1
  268. package/dist/chunk-XHKMGOON.cjs.map +0 -1
  269. package/dist/chunk-YSQE5IHK.cjs.map +0 -1
  270. package/dist/chunk-ZISECZZO.js.map +0 -1
  271. package/dist/chunk-ZV5CC35D.js +0 -3
  272. package/dist/models-dev-BL5TAKE6.js +0 -3
  273. package/dist/models-dev-HZ3LZHPX.cjs +0 -12
  274. package/dist/netlify-TX6V7SJJ.cjs +0 -12
  275. package/dist/netlify-VJXBII33.js +0 -3
  276. package/dist/registry-generator-6WVOHM2L.cjs.map +0 -1
  277. package/dist/registry-generator-DXRSYYYT.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/voice/voice.ts","../src/voice/composite-voice.ts","../src/voice/default-voice.ts"],"names":["MastraVoice","__decoratorStart","__decorateElement","__runInitializers","MastraError"],"mappings":"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","file":"chunk-WBAXXG34.cjs","sourcesContent":["import type { ToolsInput } from '../agent';\nimport { MastraBase } from '../base';\nimport { InstrumentClass } from '../telemetry';\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\n@InstrumentClass({\n prefix: 'voice',\n excludeMethods: ['__setTools', '__setLogger', '__setTelemetry', '#log'],\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 traced<T extends Function>(method: T, methodName: string): T {\n return (\n this.telemetry?.traceMethod(method, {\n spanName: `voice.${methodName}`,\n attributes: {\n 'voice.type': this.speechModel?.name || this.listeningModel?.name || 'unknown',\n },\n }) ?? method\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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('getListener not implemented by this voice provider');\n return Promise.resolve({ enabled: false });\n }\n}\n","import type { ToolsInput } from '../agent';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { MastraVoice } from './voice';\nimport type { VoiceEventType, VoiceEventMap } from '.';\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 speakProvider,\n listenProvider,\n realtimeProvider,\n }: {\n /** @deprecated use output instead */\n speakProvider?: MastraVoice;\n /** @deprecated use input instead */\n listenProvider?: MastraVoice;\n /** @deprecated use realtime instead */\n realtimeProvider?: MastraVoice;\n\n input?: MastraVoice;\n output?: MastraVoice;\n realtime?: MastraVoice;\n }) {\n super();\n this.speakProvider = output || speakProvider;\n this.listenProvider = input || listenProvider;\n this.realtimeProvider = realtime || realtimeProvider;\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 +0,0 @@
1
- {"version":3,"sources":["../src/voice/voice.ts","../src/voice/composite-voice.ts","../src/voice/default-voice.ts"],"names":[],"mappings":"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","file":"chunk-WCHE6FJ7.js","sourcesContent":["import type { ToolsInput } from '../agent';\nimport { MastraBase } from '../base';\nimport { InstrumentClass } from '../telemetry';\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\n@InstrumentClass({\n prefix: 'voice',\n excludeMethods: ['__setTools', '__setLogger', '__setTelemetry', '#log'],\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 traced<T extends Function>(method: T, methodName: string): T {\n return (\n this.telemetry?.traceMethod(method, {\n spanName: `voice.${methodName}`,\n attributes: {\n 'voice.type': this.speechModel?.name || this.listeningModel?.name || 'unknown',\n },\n }) ?? method\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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('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.warn('getListener not implemented by this voice provider');\n return Promise.resolve({ enabled: false });\n }\n}\n","import type { ToolsInput } from '../agent';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { MastraVoice } from './voice';\nimport type { VoiceEventType, VoiceEventMap } from '.';\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 speakProvider,\n listenProvider,\n realtimeProvider,\n }: {\n /** @deprecated use output instead */\n speakProvider?: MastraVoice;\n /** @deprecated use input instead */\n listenProvider?: MastraVoice;\n /** @deprecated use realtime instead */\n realtimeProvider?: MastraVoice;\n\n input?: MastraVoice;\n output?: MastraVoice;\n realtime?: MastraVoice;\n }) {\n super();\n this.speakProvider = output || speakProvider;\n this.listenProvider = input || listenProvider;\n this.realtimeProvider = realtime || realtimeProvider;\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"]}