@mastra/core 1.0.0-beta.13 → 1.0.0-beta.14

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 (249) hide show
  1. package/CHANGELOG.md +170 -0
  2. package/dist/agent/agent.d.ts +2 -2
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/agent.types.d.ts +6 -7
  5. package/dist/agent/agent.types.d.ts.map +1 -1
  6. package/dist/agent/index.cjs +17 -9
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +2 -2
  10. package/dist/agent/message-list/index.cjs +3 -3
  11. package/dist/agent/message-list/index.js +1 -1
  12. package/dist/agent/trip-wire.d.ts +2 -2
  13. package/dist/agent/trip-wire.d.ts.map +1 -1
  14. package/dist/agent/utils.d.ts +4 -1
  15. package/dist/agent/utils.d.ts.map +1 -1
  16. package/dist/agent/workflows/prepare-stream/index.d.ts +3 -3
  17. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  18. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +3 -3
  19. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  20. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +3 -3
  21. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  22. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +3 -3
  23. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  24. package/dist/bundler/types.d.ts +1 -0
  25. package/dist/bundler/types.d.ts.map +1 -1
  26. package/dist/chunk-2AU5ZHBL.js +79 -0
  27. package/dist/chunk-2AU5ZHBL.js.map +1 -0
  28. package/dist/{chunk-BQDZIQ3G.js → chunk-3IP3DZ7G.js} +85 -18
  29. package/dist/chunk-3IP3DZ7G.js.map +1 -0
  30. package/dist/{chunk-WYWRMIQC.js → chunk-4AT6YQKZ.js} +4 -103
  31. package/dist/chunk-4AT6YQKZ.js.map +1 -0
  32. package/dist/{chunk-62Q7K656.js → chunk-4CMIJQF6.js} +114 -110
  33. package/dist/chunk-4CMIJQF6.js.map +1 -0
  34. package/dist/{chunk-MXBVP7HX.cjs → chunk-53SZJCBX.cjs} +220 -174
  35. package/dist/chunk-53SZJCBX.cjs.map +1 -0
  36. package/dist/{chunk-2IU4RGU5.js → chunk-5UQ5TB6J.js} +5 -5
  37. package/dist/{chunk-2IU4RGU5.js.map → chunk-5UQ5TB6J.js.map} +1 -1
  38. package/dist/{chunk-WYGUWVTF.js → chunk-67LM2UCT.js} +8 -8
  39. package/dist/chunk-67LM2UCT.js.map +1 -0
  40. package/dist/{chunk-U4CSOY6T.cjs → chunk-6CG7IY57.cjs} +110 -43
  41. package/dist/chunk-6CG7IY57.cjs.map +1 -0
  42. package/dist/{chunk-X6IBA7FP.cjs → chunk-72E3YF6A.cjs} +9 -110
  43. package/dist/chunk-72E3YF6A.cjs.map +1 -0
  44. package/dist/{chunk-GIWC35YQ.js → chunk-AYBJ5GAD.js} +180 -4
  45. package/dist/chunk-AYBJ5GAD.js.map +1 -0
  46. package/dist/{chunk-VEPP75C4.cjs → chunk-DBW6S25C.cjs} +10 -10
  47. package/dist/{chunk-VEPP75C4.cjs.map → chunk-DBW6S25C.cjs.map} +1 -1
  48. package/dist/{chunk-Y7MZ5LJT.cjs → chunk-EGHGFLL3.cjs} +101 -102
  49. package/dist/chunk-EGHGFLL3.cjs.map +1 -0
  50. package/dist/{chunk-LGB4VNZI.cjs → chunk-ETWAR2YE.cjs} +5 -5
  51. package/dist/{chunk-LGB4VNZI.cjs.map → chunk-ETWAR2YE.cjs.map} +1 -1
  52. package/dist/{chunk-OWIEOL55.cjs → chunk-F75EQ574.cjs} +695 -254
  53. package/dist/chunk-F75EQ574.cjs.map +1 -0
  54. package/dist/{chunk-AGHLXC4I.cjs → chunk-FPDJ4XN6.cjs} +181 -5
  55. package/dist/chunk-FPDJ4XN6.cjs.map +1 -0
  56. package/dist/{chunk-VETAQUW3.js → chunk-GBQXIVL6.js} +3 -3
  57. package/dist/{chunk-VETAQUW3.js.map → chunk-GBQXIVL6.js.map} +1 -1
  58. package/dist/{chunk-4BC5FUAO.js → chunk-GELVUDUY.js} +5 -4
  59. package/dist/chunk-GELVUDUY.js.map +1 -0
  60. package/dist/chunk-GVAPYQRO.cjs +252 -0
  61. package/dist/chunk-GVAPYQRO.cjs.map +1 -0
  62. package/dist/{chunk-R5AJGM55.cjs → chunk-JAGQZZ43.cjs} +410 -265
  63. package/dist/chunk-JAGQZZ43.cjs.map +1 -0
  64. package/dist/{chunk-ARAQIW6E.js → chunk-K66U47VL.js} +617 -188
  65. package/dist/chunk-K66U47VL.js.map +1 -0
  66. package/dist/{chunk-RCJLMMTO.js → chunk-LDXKZYOV.js} +4 -4
  67. package/dist/{chunk-RCJLMMTO.js.map → chunk-LDXKZYOV.js.map} +1 -1
  68. package/dist/{chunk-MLKE7HRS.cjs → chunk-O3ULBGV6.cjs} +4 -4
  69. package/dist/{chunk-MLKE7HRS.cjs.map → chunk-O3ULBGV6.cjs.map} +1 -1
  70. package/dist/{chunk-PJAK4U6R.cjs → chunk-O5BQBZEF.cjs} +15 -15
  71. package/dist/chunk-O5BQBZEF.cjs.map +1 -0
  72. package/dist/{chunk-H4VUIOWU.cjs → chunk-OOUFPYSX.cjs} +5 -4
  73. package/dist/chunk-OOUFPYSX.cjs.map +1 -0
  74. package/dist/{chunk-5VZGJTPR.js → chunk-QDVYP2T7.js} +56 -10
  75. package/dist/chunk-QDVYP2T7.js.map +1 -0
  76. package/dist/{chunk-E5BQRAJK.js → chunk-QF4MHFSU.js} +364 -221
  77. package/dist/chunk-QF4MHFSU.js.map +1 -0
  78. package/dist/{chunk-WPTTKULS.js → chunk-SLBWA2F3.js} +3 -3
  79. package/dist/{chunk-WPTTKULS.js.map → chunk-SLBWA2F3.js.map} +1 -1
  80. package/dist/chunk-ST7NBF4H.cjs +84 -0
  81. package/dist/chunk-ST7NBF4H.cjs.map +1 -0
  82. package/dist/{chunk-7HEAVZRS.cjs → chunk-TDM43G4I.cjs} +8 -8
  83. package/dist/{chunk-7HEAVZRS.cjs.map → chunk-TDM43G4I.cjs.map} +1 -1
  84. package/dist/{chunk-SZYSDJTN.cjs → chunk-TRUNX3AX.cjs} +117 -112
  85. package/dist/chunk-TRUNX3AX.cjs.map +1 -0
  86. package/dist/chunk-VE6HQ7H6.js +250 -0
  87. package/dist/chunk-VE6HQ7H6.js.map +1 -0
  88. package/dist/{chunk-MRRFTNF4.js → chunk-VZJOEGQA.js} +3 -4
  89. package/dist/chunk-VZJOEGQA.js.map +1 -0
  90. package/dist/evals/index.cjs +4 -4
  91. package/dist/evals/index.js +1 -1
  92. package/dist/evals/run/index.d.ts.map +1 -1
  93. package/dist/evals/scoreTraces/index.cjs +3 -3
  94. package/dist/evals/scoreTraces/index.js +1 -1
  95. package/dist/index.cjs +2 -2
  96. package/dist/index.js +1 -1
  97. package/dist/llm/index.cjs +15 -15
  98. package/dist/llm/index.js +5 -5
  99. package/dist/llm/model/aisdk/generate-to-stream.d.ts +20 -0
  100. package/dist/llm/model/aisdk/generate-to-stream.d.ts.map +1 -0
  101. package/dist/llm/model/aisdk/v5/model.d.ts +4 -0
  102. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
  103. package/dist/llm/model/aisdk/v6/model.d.ts +51 -0
  104. package/dist/llm/model/aisdk/v6/model.d.ts.map +1 -0
  105. package/dist/llm/model/model.loop.d.ts +1 -1
  106. package/dist/llm/model/provider-types.generated.d.ts +84 -0
  107. package/dist/llm/model/resolve-model.d.ts +2 -2
  108. package/dist/llm/model/resolve-model.d.ts.map +1 -1
  109. package/dist/llm/model/shared.types.d.ts +18 -7
  110. package/dist/llm/model/shared.types.d.ts.map +1 -1
  111. package/dist/loop/index.cjs +2 -2
  112. package/dist/loop/index.js +1 -1
  113. package/dist/loop/network/index.d.ts +2 -2
  114. package/dist/loop/network/index.d.ts.map +1 -1
  115. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts +1 -1
  116. package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts.map +1 -1
  117. package/dist/loop/test-utils/MastraLanguageModelV3Mock.d.ts +37 -0
  118. package/dist/loop/test-utils/MastraLanguageModelV3Mock.d.ts.map +1 -0
  119. package/dist/loop/test-utils/fullStream.d.ts +2 -1
  120. package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
  121. package/dist/loop/test-utils/resultObject.d.ts +2 -1
  122. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  123. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  124. package/dist/loop/test-utils/utils-v3.d.ts +55 -0
  125. package/dist/loop/test-utils/utils-v3.d.ts.map +1 -0
  126. package/dist/loop/types.d.ts +5 -6
  127. package/dist/loop/types.d.ts.map +1 -1
  128. package/dist/loop/workflows/agentic-execution/index.d.ts +36 -36
  129. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +25 -25
  130. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  131. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +12 -12
  132. package/dist/loop/workflows/agentic-loop/index.d.ts +36 -36
  133. package/dist/loop/workflows/run-state.d.ts +2 -2
  134. package/dist/loop/workflows/run-state.d.ts.map +1 -1
  135. package/dist/loop/workflows/schema.d.ts +12 -12
  136. package/dist/mastra/index.cjs +2 -2
  137. package/dist/mastra/index.js +1 -1
  138. package/dist/memory/index.cjs +6 -6
  139. package/dist/memory/index.js +1 -1
  140. package/dist/models-dev-E3WWI7VA.js +3 -0
  141. package/dist/{models-dev-EO22XOXQ.js.map → models-dev-E3WWI7VA.js.map} +1 -1
  142. package/dist/models-dev-PPS7X4JM.cjs +12 -0
  143. package/dist/{models-dev-D3EKFGAO.cjs.map → models-dev-PPS7X4JM.cjs.map} +1 -1
  144. package/dist/netlify-TY656UYF.js +3 -0
  145. package/dist/{netlify-AE4LNCAI.js.map → netlify-TY656UYF.js.map} +1 -1
  146. package/dist/netlify-VZFM5UH3.cjs +12 -0
  147. package/dist/{netlify-WE42TZIT.cjs.map → netlify-VZFM5UH3.cjs.map} +1 -1
  148. package/dist/processors/index.cjs +37 -37
  149. package/dist/processors/index.d.ts +7 -7
  150. package/dist/processors/index.d.ts.map +1 -1
  151. package/dist/processors/index.js +1 -1
  152. package/dist/processors/runner.d.ts.map +1 -1
  153. package/dist/processors/step-schema.d.ts +26 -26
  154. package/dist/processors/step-schema.d.ts.map +1 -1
  155. package/dist/provider-registry-NXVD764B.js +3 -0
  156. package/dist/{provider-registry-6LF3NGC5.js.map → provider-registry-NXVD764B.js.map} +1 -1
  157. package/dist/provider-registry-ZIWSEUQE.cjs +40 -0
  158. package/dist/{provider-registry-73FKMXJV.cjs.map → provider-registry-ZIWSEUQE.cjs.map} +1 -1
  159. package/dist/provider-registry.json +176 -0
  160. package/dist/relevance/index.cjs +3 -3
  161. package/dist/relevance/index.cjs.map +1 -1
  162. package/dist/relevance/index.js +2 -2
  163. package/dist/relevance/index.js.map +1 -1
  164. package/dist/storage/index.cjs +38 -38
  165. package/dist/storage/index.js +1 -1
  166. package/dist/stream/aisdk/v5/execute.d.ts +4 -4
  167. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  168. package/dist/stream/aisdk/v5/output.d.ts +2 -2
  169. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  170. package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
  171. package/dist/stream/base/output.d.ts +7 -5
  172. package/dist/stream/base/output.d.ts.map +1 -1
  173. package/dist/stream/index.cjs +12 -12
  174. package/dist/stream/index.js +2 -2
  175. package/dist/stream/types.d.ts +29 -21
  176. package/dist/stream/types.d.ts.map +1 -1
  177. package/dist/test-utils/llm-mock.cjs +4 -4
  178. package/dist/test-utils/llm-mock.cjs.map +1 -1
  179. package/dist/test-utils/llm-mock.js +1 -1
  180. package/dist/test-utils/llm-mock.js.map +1 -1
  181. package/dist/token-6GSAFR2W-LTZ7QQUP.js +61 -0
  182. package/dist/token-6GSAFR2W-LTZ7QQUP.js.map +1 -0
  183. package/dist/token-6GSAFR2W-UEEINYAN.cjs +63 -0
  184. package/dist/token-6GSAFR2W-UEEINYAN.cjs.map +1 -0
  185. package/dist/token-util-NEHG7TUY-QTFZ26EN.js +8 -0
  186. package/dist/token-util-NEHG7TUY-QTFZ26EN.js.map +1 -0
  187. package/dist/token-util-NEHG7TUY-WZL2DNCG.cjs +10 -0
  188. package/dist/token-util-NEHG7TUY-WZL2DNCG.cjs.map +1 -0
  189. package/dist/utils.cjs +22 -22
  190. package/dist/utils.d.ts +2 -2
  191. package/dist/utils.d.ts.map +1 -1
  192. package/dist/utils.js +1 -1
  193. package/dist/vector/embed.d.ts +1 -0
  194. package/dist/vector/embed.d.ts.map +1 -1
  195. package/dist/vector/index.cjs +5300 -0
  196. package/dist/vector/index.cjs.map +1 -1
  197. package/dist/vector/index.js +5279 -1
  198. package/dist/vector/index.js.map +1 -1
  199. package/dist/vector/vector.d.ts +14 -1
  200. package/dist/vector/vector.d.ts.map +1 -1
  201. package/dist/voice/composite-voice.d.ts.map +1 -1
  202. package/dist/voice/index.cjs +6 -6
  203. package/dist/voice/index.js +1 -1
  204. package/dist/workflows/evented/index.cjs +10 -10
  205. package/dist/workflows/evented/index.js +1 -1
  206. package/dist/workflows/evented/step-executor.d.ts +4 -0
  207. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  208. package/dist/workflows/evented/workflow-event-processor/index.d.ts +15 -0
  209. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  210. package/dist/workflows/evented/workflow.d.ts +5 -0
  211. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  212. package/dist/workflows/index.cjs +23 -23
  213. package/dist/workflows/index.js +1 -1
  214. package/dist/workflows/workflow.d.ts +4 -1
  215. package/dist/workflows/workflow.d.ts.map +1 -1
  216. package/package.json +10 -12
  217. package/src/llm/model/provider-types.generated.d.ts +84 -0
  218. package/dist/chunk-4BC5FUAO.js.map +0 -1
  219. package/dist/chunk-5VZGJTPR.js.map +0 -1
  220. package/dist/chunk-62Q7K656.js.map +0 -1
  221. package/dist/chunk-AGHLXC4I.cjs.map +0 -1
  222. package/dist/chunk-ARAQIW6E.js.map +0 -1
  223. package/dist/chunk-BQDZIQ3G.js.map +0 -1
  224. package/dist/chunk-E5BQRAJK.js.map +0 -1
  225. package/dist/chunk-GIWC35YQ.js.map +0 -1
  226. package/dist/chunk-H4VUIOWU.cjs.map +0 -1
  227. package/dist/chunk-IXZ2T2QX.cjs +0 -448
  228. package/dist/chunk-IXZ2T2QX.cjs.map +0 -1
  229. package/dist/chunk-MRRFTNF4.js.map +0 -1
  230. package/dist/chunk-MXBVP7HX.cjs.map +0 -1
  231. package/dist/chunk-OWIEOL55.cjs.map +0 -1
  232. package/dist/chunk-PJAK4U6R.cjs.map +0 -1
  233. package/dist/chunk-R5AJGM55.cjs.map +0 -1
  234. package/dist/chunk-SZYSDJTN.cjs.map +0 -1
  235. package/dist/chunk-U4CSOY6T.cjs.map +0 -1
  236. package/dist/chunk-UBSPZTQX.js +0 -434
  237. package/dist/chunk-UBSPZTQX.js.map +0 -1
  238. package/dist/chunk-WYGUWVTF.js.map +0 -1
  239. package/dist/chunk-WYWRMIQC.js.map +0 -1
  240. package/dist/chunk-X6IBA7FP.cjs.map +0 -1
  241. package/dist/chunk-Y7MZ5LJT.cjs.map +0 -1
  242. package/dist/llm/model/is-v2-model.d.ts +0 -3
  243. package/dist/llm/model/is-v2-model.d.ts.map +0 -1
  244. package/dist/models-dev-D3EKFGAO.cjs +0 -12
  245. package/dist/models-dev-EO22XOXQ.js +0 -3
  246. package/dist/netlify-AE4LNCAI.js +0 -3
  247. package/dist/netlify-WE42TZIT.cjs +0 -12
  248. package/dist/provider-registry-6LF3NGC5.js +0 -3
  249. package/dist/provider-registry-73FKMXJV.cjs +0 -40
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/core",
3
- "version": "1.0.0-beta.13",
3
+ "version": "1.0.0-beta.14",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -175,9 +175,12 @@
175
175
  },
176
176
  "sideEffects": false,
177
177
  "dependencies": {
178
+ "@a2a-js/sdk": "~0.2.4",
178
179
  "@ai-sdk/provider-v5": "npm:@ai-sdk/provider@2.0.0",
180
+ "@ai-sdk/provider-v6": "npm:@ai-sdk/provider@3.0.0-beta.26",
181
+ "@ai-sdk/provider-utils-v5": "npm:@ai-sdk/provider-utils@3.0.12",
182
+ "@ai-sdk/provider-utils-v6": "npm:@ai-sdk/provider-utils@4.0.0-beta.47",
179
183
  "@ai-sdk/ui-utils-v5": "npm:@ai-sdk/ui-utils@1.2.11",
180
- "@a2a-js/sdk": "~0.2.4",
181
184
  "@isaacs/ttlcache": "^1.4.1",
182
185
  "@lukeed/uuid": "^2.0.1",
183
186
  "@modelcontextprotocol/sdk": "^1.17.5",
@@ -195,14 +198,8 @@
195
198
  "@mastra/schema-compat": "1.0.0-beta.3"
196
199
  },
197
200
  "peerDependencies": {
198
- "@mastra/observability": ">=1.0.0-0 <2.0.0-0",
199
201
  "zod": "^3.25.0 || ^4.0.0"
200
202
  },
201
- "peerDependenciesMeta": {
202
- "@mastra/observability": {
203
- "optional": true
204
- }
205
- },
206
203
  "devDependencies": {
207
204
  "@ai-sdk/azure": "^2.0.0",
208
205
  "@ai-sdk/anthropic-v5": "npm:@ai-sdk/anthropic@2.0.45",
@@ -212,9 +209,9 @@
212
209
  "@ai-sdk/openai": "^1.3.24",
213
210
  "@ai-sdk/openai-compatible-v5": "npm:@ai-sdk/openai-compatible@1.0.27",
214
211
  "@ai-sdk/openai-v5": "npm:@ai-sdk/openai@2.0.69",
212
+ "@ai-sdk/openai-v6": "npm:@ai-sdk/openai@3.0.0-beta.102",
215
213
  "@ai-sdk/provider-v4": "npm:@ai-sdk/provider@1.1.3",
216
214
  "@ai-sdk/provider-utils-v4": "npm:@ai-sdk/provider-utils@2.2.8",
217
- "@ai-sdk/provider-utils-v5": "npm:@ai-sdk/provider-utils@3.0.12",
218
215
  "@ai-sdk/xai-v5": "npm:@ai-sdk/xai@2.0.33",
219
216
  "@ai-sdk/perplexity-v5": "npm:@ai-sdk/perplexity@2.0.5",
220
217
  "@babel/core": "^7.28.5",
@@ -235,11 +232,12 @@
235
232
  "vitest": "4.0.12",
236
233
  "zod": "^3.25.76",
237
234
  "zod-v4": "npm:zod@4.1.12",
238
- "@internal/lint": "0.0.53",
239
235
  "@internal/ai-sdk-v5": "0.0.0",
240
- "@internal/types-builder": "0.0.28",
236
+ "@internal/ai-v6": "0.0.0",
241
237
  "@internal/external-types": "0.0.3",
242
- "@internal/ai-sdk-v4": "0.0.0"
238
+ "@internal/ai-sdk-v4": "0.0.0",
239
+ "@internal/lint": "0.0.53",
240
+ "@internal/types-builder": "0.0.28"
243
241
  },
244
242
  "engines": {
245
243
  "node": ">=22.13.0"
@@ -145,6 +145,7 @@ export type ProviderModelsMap = {
145
145
  readonly bailing: readonly ['Ling-1T', 'Ring-1T'];
146
146
  readonly mistral: readonly [
147
147
  'codestral-latest',
148
+ 'devstral-2512',
148
149
  'devstral-medium-2507',
149
150
  'devstral-medium-latest',
150
151
  'devstral-small-2505',
@@ -342,6 +343,7 @@ export type ProviderModelsMap = {
342
343
  readonly venice: readonly [
343
344
  'claude-opus-45',
344
345
  'deepseek-v3.2',
346
+ 'gemini-3-flash-preview',
345
347
  'gemini-3-pro-preview',
346
348
  'google-gemma-3-27b-it',
347
349
  'grok-41-fast',
@@ -361,6 +363,80 @@ export type ProviderModelsMap = {
361
363
  'venice-uncensored',
362
364
  'zai-org-glm-4.6',
363
365
  ];
366
+ readonly 'siliconflow-cn': readonly [
367
+ 'baidu-ernie-4.5-300b-a47b',
368
+ 'bytedance-seed-seed-oss-36b-instruct',
369
+ 'deepseek-ai-deepseek-r1',
370
+ 'deepseek-ai-deepseek-r1-distill-qwen-14b',
371
+ 'deepseek-ai-deepseek-r1-distill-qwen-32b',
372
+ 'deepseek-ai-deepseek-r1-distill-qwen-7b',
373
+ 'deepseek-ai-deepseek-v3',
374
+ 'deepseek-ai-deepseek-v3.1',
375
+ 'deepseek-ai-deepseek-v3.1-terminus',
376
+ 'deepseek-ai-deepseek-v3.2-exp',
377
+ 'deepseek-ai-deepseek-vl2',
378
+ 'inclusionai-ling-flash-2.0',
379
+ 'inclusionai-ling-mini-2.0',
380
+ 'inclusionai-ring-flash-2.0',
381
+ 'meta-llama-meta-llama-3.1-8b-instruct',
382
+ 'minimaxai-minimax-m1-80k',
383
+ 'minimaxai-minimax-m2',
384
+ 'moonshotai-kimi-dev-72b',
385
+ 'moonshotai-kimi-k2-instruct',
386
+ 'moonshotai-kimi-k2-instruct-0905',
387
+ 'moonshotai-kimi-k2-thinking',
388
+ 'nex-agi-deepseek-v3.1-nex-n1',
389
+ 'openai-gpt-oss-120b',
390
+ 'openai-gpt-oss-20b',
391
+ 'qwen-qwen2.5-14b-instruct',
392
+ 'qwen-qwen2.5-32b-instruct',
393
+ 'qwen-qwen2.5-72b-instruct',
394
+ 'qwen-qwen2.5-72b-instruct-128k',
395
+ 'qwen-qwen2.5-7b-instruct',
396
+ 'qwen-qwen2.5-coder-32b-instruct',
397
+ 'qwen-qwen2.5-vl-32b-instruct',
398
+ 'qwen-qwen2.5-vl-72b-instruct',
399
+ 'qwen-qwen2.5-vl-7b-instruct',
400
+ 'qwen-qwen3-14b',
401
+ 'qwen-qwen3-235b-a22b',
402
+ 'qwen-qwen3-235b-a22b-instruct-2507',
403
+ 'qwen-qwen3-235b-a22b-thinking-2507',
404
+ 'qwen-qwen3-30b-a3b',
405
+ 'qwen-qwen3-30b-a3b-instruct-2507',
406
+ 'qwen-qwen3-30b-a3b-thinking-2507',
407
+ 'qwen-qwen3-32b',
408
+ 'qwen-qwen3-8b',
409
+ 'qwen-qwen3-coder-30b-a3b-instruct',
410
+ 'qwen-qwen3-coder-480b-a35b-instruct',
411
+ 'qwen-qwen3-next-80b-a3b-instruct',
412
+ 'qwen-qwen3-next-80b-a3b-thinking',
413
+ 'qwen-qwen3-omni-30b-a3b-captioner',
414
+ 'qwen-qwen3-omni-30b-a3b-instruct',
415
+ 'qwen-qwen3-omni-30b-a3b-thinking',
416
+ 'qwen-qwen3-vl-235b-a22b-instruct',
417
+ 'qwen-qwen3-vl-235b-a22b-thinking',
418
+ 'qwen-qwen3-vl-30b-a3b-instruct',
419
+ 'qwen-qwen3-vl-30b-a3b-thinking',
420
+ 'qwen-qwen3-vl-32b-instruct',
421
+ 'qwen-qwen3-vl-32b-thinking',
422
+ 'qwen-qwen3-vl-8b-instruct',
423
+ 'qwen-qwen3-vl-8b-thinking',
424
+ 'qwen-qwq-32b',
425
+ 'stepfun-ai-step3',
426
+ 'tencent-hunyuan-a13b-instruct',
427
+ 'tencent-hunyuan-mt-7b',
428
+ 'thudm-glm-4-32b-0414',
429
+ 'thudm-glm-4-9b-0414',
430
+ 'thudm-glm-4.1v-9b-thinking',
431
+ 'thudm-glm-z1-32b-0414',
432
+ 'thudm-glm-z1-9b-0414',
433
+ 'z-ai-glm-4.5',
434
+ 'z-ai-glm-4.5-air',
435
+ 'zai-org-glm-4.5',
436
+ 'zai-org-glm-4.5-air',
437
+ 'zai-org-glm-4.5v',
438
+ 'zai-org-glm-4.6',
439
+ ];
364
440
  readonly chutes: readonly [
365
441
  'Alibaba-NLP/Tongyi-DeepResearch-30B-A3B',
366
442
  'ArliAI/QwQ-32B-ArliAI-RpR-v1',
@@ -708,6 +784,7 @@ export type ProviderModelsMap = {
708
784
  'claude-opus-4-5',
709
785
  'claude-sonnet-4',
710
786
  'claude-sonnet-4-5',
787
+ 'gemini-3-flash',
711
788
  'gemini-3-pro',
712
789
  'glm-4.6',
713
790
  'gpt-5',
@@ -759,6 +836,7 @@ export type ProviderModelsMap = {
759
836
  'gemini-2.5-pro-preview-05-06',
760
837
  'gemini-2.5-pro-preview-06-05',
761
838
  'gemini-2.5-pro-preview-tts',
839
+ 'gemini-3-flash-preview',
762
840
  'gemini-3-pro-preview',
763
841
  'gemini-embedding-001',
764
842
  'gemini-flash-latest',
@@ -937,6 +1015,7 @@ export type ProviderModelsMap = {
937
1015
  'google/gemini-2.5-pro',
938
1016
  'google/gemini-2.5-pro-preview-05-06',
939
1017
  'google/gemini-2.5-pro-preview-06-05',
1018
+ 'google/gemini-3-flash-preview',
940
1019
  'google/gemini-3-pro-preview',
941
1020
  'google/gemma-2-9b-it:free',
942
1021
  'google/gemma-3-12b-it',
@@ -1060,6 +1139,7 @@ export type ProviderModelsMap = {
1060
1139
  'x-ai/grok-4-fast',
1061
1140
  'x-ai/grok-4-fast-non-reasoning',
1062
1141
  'x-ai/grok-code-fast-1',
1142
+ 'xiaomi/mimo-v2-flash',
1063
1143
  'z-ai/glm-4.5-air',
1064
1144
  'z-ai/glm-4.6',
1065
1145
  ];
@@ -1178,6 +1258,7 @@ export type ProviderModelsMap = {
1178
1258
  'anthropic/claude-sonnet-4-5',
1179
1259
  'google/gemini-2.5-flash',
1180
1260
  'google/gemini-2.5-pro',
1261
+ 'google/gemini-3-flash-preview',
1181
1262
  'google/gemini-3-pro-preview',
1182
1263
  'openai/gpt-4.1',
1183
1264
  'openai/gpt-4.1-mini',
@@ -1414,6 +1495,7 @@ export type ProviderModelsMap = {
1414
1495
  'gemini/gemini-2.5-flash-lite-preview-09-2025',
1415
1496
  'gemini/gemini-2.5-flash-preview-09-2025',
1416
1497
  'gemini/gemini-2.5-pro',
1498
+ 'gemini/gemini-3-flash-preview',
1417
1499
  'gemini/gemini-3-pro-image-preview',
1418
1500
  'gemini/gemini-3-pro-preview',
1419
1501
  'gemini/gemini-flash-latest',
@@ -1437,7 +1519,9 @@ export type ProviderModelsMap = {
1437
1519
  'openai/gpt-5.1-codex-max',
1438
1520
  'openai/gpt-5.1-codex-mini',
1439
1521
  'openai/gpt-5.2',
1522
+ 'openai/gpt-5.2-2025-12-11',
1440
1523
  'openai/gpt-5.2-pro',
1524
+ 'openai/gpt-5.2-pro-2025-12-11',
1441
1525
  'openai/o3',
1442
1526
  'openai/o3-mini',
1443
1527
  'openai/o4-mini',
@@ -1 +0,0 @@
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":[],"mappings":"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","file":"chunk-4BC5FUAO.js","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 * 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 { 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\n// Helper to check if something is an AI SDK model\nfunction isTranscriptionModel(obj: any): obj is TranscriptionModel {\n return obj && typeof obj === 'object' && obj.modelId && obj.specificationVersion === 'v2';\n}\n\nfunction isSpeechModel(obj: any): obj is SpeechModel {\n return obj && typeof obj === 'object' && obj.modelId && obj.specificationVersion === 'v2';\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"]}