@mastra/core 1.7.0 → 1.8.0

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 (498) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/dist/agent/agent-legacy.d.ts +15 -0
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent.d.ts +7 -0
  5. package/dist/agent/agent.d.ts.map +1 -1
  6. package/dist/agent/agent.types.d.ts +311 -2
  7. package/dist/agent/agent.types.d.ts.map +1 -1
  8. package/dist/agent/index.cjs +13 -13
  9. package/dist/agent/index.d.ts +3 -1
  10. package/dist/agent/index.d.ts.map +1 -1
  11. package/dist/agent/index.js +2 -2
  12. package/dist/agent/message-list/index.cjs +18 -18
  13. package/dist/agent/message-list/index.js +1 -1
  14. package/dist/agent/message-list/merge/MessageMerger.d.ts.map +1 -1
  15. package/dist/agent/message-list/message-list.d.ts.map +1 -1
  16. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  17. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  18. package/dist/{chunk-A72NTLFT.cjs → chunk-2IO5Q7OZ.cjs} +7 -7
  19. package/dist/{chunk-A72NTLFT.cjs.map → chunk-2IO5Q7OZ.cjs.map} +1 -1
  20. package/dist/{chunk-DFCRXDVK.js → chunk-2KHPZJNU.js} +10 -8
  21. package/dist/chunk-2KHPZJNU.js.map +1 -0
  22. package/dist/{chunk-R4N65TLG.js → chunk-2R5MQMSA.js} +35 -16
  23. package/dist/chunk-2R5MQMSA.js.map +1 -0
  24. package/dist/{chunk-ZSBM2SVU.js → chunk-4H5F6AFP.js} +1064 -226
  25. package/dist/chunk-4H5F6AFP.js.map +1 -0
  26. package/dist/{chunk-BQHWJLXU.js → chunk-63G75DJE.js} +9 -3
  27. package/dist/chunk-63G75DJE.js.map +1 -0
  28. package/dist/{chunk-SBOHDNIZ.cjs → chunk-6GSWC5ZA.cjs} +2 -2
  29. package/dist/{chunk-SBOHDNIZ.cjs.map → chunk-6GSWC5ZA.cjs.map} +1 -1
  30. package/dist/{chunk-QTAS3HND.cjs → chunk-6Q2UD3XF.cjs} +21 -14
  31. package/dist/chunk-6Q2UD3XF.cjs.map +1 -0
  32. package/dist/{chunk-GPJGPARM.js → chunk-DTPR3JAM.js} +2 -2
  33. package/dist/{chunk-GPJGPARM.js.map → chunk-DTPR3JAM.js.map} +1 -1
  34. package/dist/{chunk-NN26FSKL.js → chunk-FHJ2KIU5.js} +3 -3
  35. package/dist/{chunk-NN26FSKL.js.map → chunk-FHJ2KIU5.js.map} +1 -1
  36. package/dist/{chunk-RABITNTG.cjs → chunk-HWG7NPJA.cjs} +55 -55
  37. package/dist/{chunk-RABITNTG.cjs.map → chunk-HWG7NPJA.cjs.map} +1 -1
  38. package/dist/{chunk-HB6T4554.cjs → chunk-KH3G65IS.cjs} +10 -8
  39. package/dist/chunk-KH3G65IS.cjs.map +1 -0
  40. package/dist/{chunk-YQG7NBPR.cjs → chunk-KZ4IKNPN.cjs} +25 -23
  41. package/dist/chunk-KZ4IKNPN.cjs.map +1 -0
  42. package/dist/{chunk-6DUTLERJ.js → chunk-MRV5NCPC.js} +3 -3
  43. package/dist/{chunk-6DUTLERJ.js.map → chunk-MRV5NCPC.js.map} +1 -1
  44. package/dist/{chunk-O7PZ4VOO.cjs → chunk-N3ROEJG4.cjs} +12 -10
  45. package/dist/chunk-N3ROEJG4.cjs.map +1 -0
  46. package/dist/{chunk-7EXW4AAG.js → chunk-NXKI2L4X.js} +6 -4
  47. package/dist/chunk-NXKI2L4X.js.map +1 -0
  48. package/dist/{chunk-QWTB53GS.js → chunk-OSEPGSLN.js} +6 -6
  49. package/dist/{chunk-QWTB53GS.js.map → chunk-OSEPGSLN.js.map} +1 -1
  50. package/dist/{chunk-6OXW5E2O.js → chunk-PI7ONENO.js} +4 -4
  51. package/dist/{chunk-6OXW5E2O.js.map → chunk-PI7ONENO.js.map} +1 -1
  52. package/dist/{chunk-KUXNBWN7.js → chunk-Q4MV4XKX.js} +8 -6
  53. package/dist/chunk-Q4MV4XKX.js.map +1 -0
  54. package/dist/{chunk-7UAJ6LMR.cjs → chunk-QKQGKEN7.cjs} +1078 -241
  55. package/dist/chunk-QKQGKEN7.cjs.map +1 -0
  56. package/dist/{chunk-IC5OUWKJ.js → chunk-SP7P6Z4L.js} +19 -2
  57. package/dist/chunk-SP7P6Z4L.js.map +1 -0
  58. package/dist/{chunk-QDH6MVJ7.cjs → chunk-TGUDI64A.cjs} +14 -14
  59. package/dist/{chunk-QDH6MVJ7.cjs.map → chunk-TGUDI64A.cjs.map} +1 -1
  60. package/dist/{chunk-EAZ6YDCQ.cjs → chunk-U3HBG2GU.cjs} +9 -2
  61. package/dist/chunk-U3HBG2GU.cjs.map +1 -0
  62. package/dist/{chunk-6QBN6MZY.cjs → chunk-VAKB5EXJ.cjs} +42 -23
  63. package/dist/chunk-VAKB5EXJ.cjs.map +1 -0
  64. package/dist/{chunk-QSHV7GPT.js → chunk-VBPU6CLZ.js} +3808 -3026
  65. package/dist/chunk-VBPU6CLZ.js.map +1 -0
  66. package/dist/{chunk-2X66GWF5.cjs → chunk-VTVCMIAI.cjs} +3905 -3121
  67. package/dist/chunk-VTVCMIAI.cjs.map +1 -0
  68. package/dist/{chunk-PHHJLGZU.cjs → chunk-XNWF6CYR.cjs} +6 -6
  69. package/dist/{chunk-PHHJLGZU.cjs.map → chunk-XNWF6CYR.cjs.map} +1 -1
  70. package/dist/{chunk-T6GAM3SQ.js → chunk-ZRPTWYWJ.js} +18 -11
  71. package/dist/chunk-ZRPTWYWJ.js.map +1 -0
  72. package/dist/{chunk-DB7U2C5B.cjs → chunk-ZXOWG32X.cjs} +19 -2
  73. package/dist/chunk-ZXOWG32X.cjs.map +1 -0
  74. package/dist/datasets/experiment/index.d.ts.map +1 -1
  75. package/dist/datasets/experiment/scorer.d.ts +1 -1
  76. package/dist/datasets/experiment/scorer.d.ts.map +1 -1
  77. package/dist/datasets/index.cjs +17 -17
  78. package/dist/datasets/index.js +2 -2
  79. package/dist/docs/SKILL.md +300 -0
  80. package/dist/docs/assets/SOURCE_MAP.json +1423 -0
  81. package/dist/docs/references/docs-agents-adding-voice.md +349 -0
  82. package/dist/docs/references/docs-agents-agent-approval.md +558 -0
  83. package/dist/docs/references/docs-agents-agent-memory.md +209 -0
  84. package/dist/docs/references/docs-agents-guardrails.md +374 -0
  85. package/dist/docs/references/docs-agents-network-approval.md +275 -0
  86. package/dist/docs/references/docs-agents-networks.md +299 -0
  87. package/dist/docs/references/docs-agents-overview.md +304 -0
  88. package/dist/docs/references/docs-agents-processors.md +622 -0
  89. package/dist/docs/references/docs-agents-structured-output.md +273 -0
  90. package/dist/docs/references/docs-agents-supervisor-agents.md +304 -0
  91. package/dist/docs/references/docs-agents-using-tools.md +214 -0
  92. package/dist/docs/references/docs-evals-custom-scorers.md +519 -0
  93. package/dist/docs/references/docs-evals-overview.md +141 -0
  94. package/dist/docs/references/docs-evals-running-in-ci.md +124 -0
  95. package/dist/docs/references/docs-memory-memory-processors.md +314 -0
  96. package/dist/docs/references/docs-memory-observational-memory.md +248 -0
  97. package/dist/docs/references/docs-memory-overview.md +45 -0
  98. package/dist/docs/references/docs-memory-semantic-recall.md +272 -0
  99. package/dist/docs/references/docs-memory-storage.md +261 -0
  100. package/dist/docs/references/docs-memory-working-memory.md +400 -0
  101. package/dist/docs/references/docs-observability-datasets-overview.md +198 -0
  102. package/dist/docs/references/docs-observability-datasets-running-experiments.md +274 -0
  103. package/dist/docs/references/docs-observability-logging.md +99 -0
  104. package/dist/docs/references/docs-observability-overview.md +70 -0
  105. package/dist/docs/references/docs-observability-tracing-bridges-otel.md +209 -0
  106. package/dist/docs/references/docs-observability-tracing-exporters-arize.md +272 -0
  107. package/dist/docs/references/docs-observability-tracing-exporters-braintrust.md +111 -0
  108. package/dist/docs/references/docs-observability-tracing-exporters-cloud.md +127 -0
  109. package/dist/docs/references/docs-observability-tracing-exporters-datadog.md +187 -0
  110. package/dist/docs/references/docs-observability-tracing-exporters-default.md +209 -0
  111. package/dist/docs/references/docs-observability-tracing-exporters-laminar.md +100 -0
  112. package/dist/docs/references/docs-observability-tracing-exporters-langfuse.md +213 -0
  113. package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +198 -0
  114. package/dist/docs/references/docs-observability-tracing-exporters-otel.md +476 -0
  115. package/dist/docs/references/docs-observability-tracing-exporters-posthog.md +148 -0
  116. package/dist/docs/references/docs-observability-tracing-overview.md +1112 -0
  117. package/dist/docs/references/docs-rag-chunking-and-embedding.md +183 -0
  118. package/dist/docs/references/docs-rag-graph-rag.md +215 -0
  119. package/dist/docs/references/docs-rag-overview.md +72 -0
  120. package/dist/docs/references/docs-rag-retrieval.md +515 -0
  121. package/dist/docs/references/docs-rag-vector-databases.md +645 -0
  122. package/dist/docs/references/docs-server-auth-auth0.md +220 -0
  123. package/dist/docs/references/docs-server-auth-clerk.md +132 -0
  124. package/dist/docs/references/docs-server-auth-composite-auth.md +234 -0
  125. package/dist/docs/references/docs-server-auth-custom-auth-provider.md +513 -0
  126. package/dist/docs/references/docs-server-auth-firebase.md +272 -0
  127. package/dist/docs/references/docs-server-auth-jwt.md +110 -0
  128. package/dist/docs/references/docs-server-auth-simple-auth.md +180 -0
  129. package/dist/docs/references/docs-server-auth-supabase.md +117 -0
  130. package/dist/docs/references/docs-server-auth-workos.md +186 -0
  131. package/dist/docs/references/docs-server-custom-adapters.md +378 -0
  132. package/dist/docs/references/docs-server-custom-api-routes.md +267 -0
  133. package/dist/docs/references/docs-server-mastra-client.md +243 -0
  134. package/dist/docs/references/docs-server-mastra-server.md +71 -0
  135. package/dist/docs/references/docs-server-middleware.md +225 -0
  136. package/dist/docs/references/docs-server-request-context.md +471 -0
  137. package/dist/docs/references/docs-streaming-events.md +237 -0
  138. package/dist/docs/references/docs-streaming-tool-streaming.md +175 -0
  139. package/dist/docs/references/docs-streaming-workflow-streaming.md +109 -0
  140. package/dist/docs/references/docs-voice-overview.md +959 -0
  141. package/dist/docs/references/docs-voice-speech-to-speech.md +102 -0
  142. package/dist/docs/references/docs-voice-speech-to-text.md +79 -0
  143. package/dist/docs/references/docs-voice-text-to-speech.md +83 -0
  144. package/dist/docs/references/docs-workflows-agents-and-tools.md +166 -0
  145. package/dist/docs/references/docs-workflows-control-flow.md +822 -0
  146. package/dist/docs/references/docs-workflows-error-handling.md +360 -0
  147. package/dist/docs/references/docs-workflows-human-in-the-loop.md +215 -0
  148. package/dist/docs/references/docs-workflows-overview.md +370 -0
  149. package/dist/docs/references/docs-workflows-snapshots.md +238 -0
  150. package/dist/docs/references/docs-workflows-suspend-and-resume.md +205 -0
  151. package/dist/docs/references/docs-workflows-time-travel.md +309 -0
  152. package/dist/docs/references/docs-workflows-workflow-state.md +181 -0
  153. package/dist/docs/references/docs-workspace-filesystem.md +164 -0
  154. package/dist/docs/references/docs-workspace-overview.md +239 -0
  155. package/dist/docs/references/docs-workspace-sandbox.md +63 -0
  156. package/dist/docs/references/docs-workspace-search.md +243 -0
  157. package/dist/docs/references/docs-workspace-skills.md +169 -0
  158. package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +140 -0
  159. package/dist/docs/references/reference-agents-agent.md +141 -0
  160. package/dist/docs/references/reference-agents-generate.md +186 -0
  161. package/dist/docs/references/reference-agents-generateLegacy.md +173 -0
  162. package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +36 -0
  163. package/dist/docs/references/reference-agents-getDefaultOptions.md +34 -0
  164. package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +36 -0
  165. package/dist/docs/references/reference-agents-getDescription.md +21 -0
  166. package/dist/docs/references/reference-agents-getInstructions.md +34 -0
  167. package/dist/docs/references/reference-agents-getLLM.md +37 -0
  168. package/dist/docs/references/reference-agents-getMemory.md +34 -0
  169. package/dist/docs/references/reference-agents-getModel.md +34 -0
  170. package/dist/docs/references/reference-agents-getTools.md +29 -0
  171. package/dist/docs/references/reference-agents-getVoice.md +34 -0
  172. package/dist/docs/references/reference-agents-listAgents.md +35 -0
  173. package/dist/docs/references/reference-agents-listScorers.md +34 -0
  174. package/dist/docs/references/reference-agents-listTools.md +34 -0
  175. package/dist/docs/references/reference-agents-listWorkflows.md +34 -0
  176. package/dist/docs/references/reference-agents-network.md +133 -0
  177. package/dist/docs/references/reference-ai-sdk-chat-route.md +82 -0
  178. package/dist/docs/references/reference-ai-sdk-network-route.md +74 -0
  179. package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +231 -0
  180. package/dist/docs/references/reference-ai-sdk-with-mastra.md +59 -0
  181. package/dist/docs/references/reference-ai-sdk-workflow-route.md +79 -0
  182. package/dist/docs/references/reference-auth-auth0.md +73 -0
  183. package/dist/docs/references/reference-auth-clerk.md +36 -0
  184. package/dist/docs/references/reference-auth-firebase.md +80 -0
  185. package/dist/docs/references/reference-auth-jwt.md +26 -0
  186. package/dist/docs/references/reference-auth-supabase.md +33 -0
  187. package/dist/docs/references/reference-auth-workos.md +84 -0
  188. package/dist/docs/references/reference-client-js-agents.md +437 -0
  189. package/dist/docs/references/reference-configuration.md +752 -0
  190. package/dist/docs/references/reference-core-addGateway.md +42 -0
  191. package/dist/docs/references/reference-core-getAgent.md +21 -0
  192. package/dist/docs/references/reference-core-getAgentById.md +21 -0
  193. package/dist/docs/references/reference-core-getDeployer.md +22 -0
  194. package/dist/docs/references/reference-core-getGateway.md +38 -0
  195. package/dist/docs/references/reference-core-getGatewayById.md +41 -0
  196. package/dist/docs/references/reference-core-getLogger.md +22 -0
  197. package/dist/docs/references/reference-core-getMCPServer.md +47 -0
  198. package/dist/docs/references/reference-core-getMCPServerById.md +55 -0
  199. package/dist/docs/references/reference-core-getMemory.md +50 -0
  200. package/dist/docs/references/reference-core-getScorer.md +54 -0
  201. package/dist/docs/references/reference-core-getScorerById.md +54 -0
  202. package/dist/docs/references/reference-core-getServer.md +22 -0
  203. package/dist/docs/references/reference-core-getStorage.md +22 -0
  204. package/dist/docs/references/reference-core-getStoredAgentById.md +89 -0
  205. package/dist/docs/references/reference-core-getTelemetry.md +22 -0
  206. package/dist/docs/references/reference-core-getVector.md +22 -0
  207. package/dist/docs/references/reference-core-getWorkflow.md +42 -0
  208. package/dist/docs/references/reference-core-listAgents.md +21 -0
  209. package/dist/docs/references/reference-core-listGateways.md +40 -0
  210. package/dist/docs/references/reference-core-listLogs.md +38 -0
  211. package/dist/docs/references/reference-core-listLogsByRunId.md +36 -0
  212. package/dist/docs/references/reference-core-listMCPServers.md +55 -0
  213. package/dist/docs/references/reference-core-listMemory.md +56 -0
  214. package/dist/docs/references/reference-core-listScorers.md +29 -0
  215. package/dist/docs/references/reference-core-listStoredAgents.md +93 -0
  216. package/dist/docs/references/reference-core-listVectors.md +22 -0
  217. package/dist/docs/references/reference-core-listWorkflows.md +21 -0
  218. package/dist/docs/references/reference-core-mastra-class.md +66 -0
  219. package/dist/docs/references/reference-core-mastra-model-gateway.md +153 -0
  220. package/dist/docs/references/reference-core-setLogger.md +26 -0
  221. package/dist/docs/references/reference-core-setStorage.md +27 -0
  222. package/dist/docs/references/reference-datasets-addItem.md +37 -0
  223. package/dist/docs/references/reference-datasets-addItems.md +35 -0
  224. package/dist/docs/references/reference-datasets-compareExperiments.md +52 -0
  225. package/dist/docs/references/reference-datasets-create.md +51 -0
  226. package/dist/docs/references/reference-datasets-dataset.md +82 -0
  227. package/dist/docs/references/reference-datasets-datasets-manager.md +94 -0
  228. package/dist/docs/references/reference-datasets-delete.md +25 -0
  229. package/dist/docs/references/reference-datasets-deleteExperiment.md +27 -0
  230. package/dist/docs/references/reference-datasets-deleteItem.md +27 -0
  231. package/dist/docs/references/reference-datasets-deleteItems.md +29 -0
  232. package/dist/docs/references/reference-datasets-get.md +31 -0
  233. package/dist/docs/references/reference-datasets-getDetails.md +47 -0
  234. package/dist/docs/references/reference-datasets-getExperiment.md +30 -0
  235. package/dist/docs/references/reference-datasets-getItem.md +33 -0
  236. package/dist/docs/references/reference-datasets-getItemHistory.md +31 -0
  237. package/dist/docs/references/reference-datasets-list.md +31 -0
  238. package/dist/docs/references/reference-datasets-listExperimentResults.md +39 -0
  239. package/dist/docs/references/reference-datasets-listExperiments.md +33 -0
  240. package/dist/docs/references/reference-datasets-listItems.md +46 -0
  241. package/dist/docs/references/reference-datasets-listVersions.md +33 -0
  242. package/dist/docs/references/reference-datasets-startExperiment.md +62 -0
  243. package/dist/docs/references/reference-datasets-startExperimentAsync.md +43 -0
  244. package/dist/docs/references/reference-datasets-update.md +48 -0
  245. package/dist/docs/references/reference-datasets-updateItem.md +38 -0
  246. package/dist/docs/references/reference-evals-answer-relevancy.md +105 -0
  247. package/dist/docs/references/reference-evals-answer-similarity.md +99 -0
  248. package/dist/docs/references/reference-evals-bias.md +120 -0
  249. package/dist/docs/references/reference-evals-completeness.md +136 -0
  250. package/dist/docs/references/reference-evals-content-similarity.md +101 -0
  251. package/dist/docs/references/reference-evals-context-precision.md +196 -0
  252. package/dist/docs/references/reference-evals-create-scorer.md +270 -0
  253. package/dist/docs/references/reference-evals-faithfulness.md +114 -0
  254. package/dist/docs/references/reference-evals-hallucination.md +213 -0
  255. package/dist/docs/references/reference-evals-keyword-coverage.md +128 -0
  256. package/dist/docs/references/reference-evals-mastra-scorer.md +123 -0
  257. package/dist/docs/references/reference-evals-run-evals.md +179 -0
  258. package/dist/docs/references/reference-evals-scorer-utils.md +326 -0
  259. package/dist/docs/references/reference-evals-textual-difference.md +113 -0
  260. package/dist/docs/references/reference-evals-tone-consistency.md +119 -0
  261. package/dist/docs/references/reference-evals-toxicity.md +123 -0
  262. package/dist/docs/references/reference-harness-harness-class.md +708 -0
  263. package/dist/docs/references/reference-logging-pino-logger.md +117 -0
  264. package/dist/docs/references/reference-memory-deleteMessages.md +38 -0
  265. package/dist/docs/references/reference-memory-memory-class.md +147 -0
  266. package/dist/docs/references/reference-memory-observational-memory.md +565 -0
  267. package/dist/docs/references/reference-observability-tracing-bridges-otel.md +131 -0
  268. package/dist/docs/references/reference-observability-tracing-configuration.md +178 -0
  269. package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +138 -0
  270. package/dist/docs/references/reference-observability-tracing-exporters-datadog.md +116 -0
  271. package/dist/docs/references/reference-observability-tracing-instances.md +107 -0
  272. package/dist/docs/references/reference-observability-tracing-interfaces.md +743 -0
  273. package/dist/docs/references/reference-observability-tracing-processors-sensitive-data-filter.md +144 -0
  274. package/dist/docs/references/reference-observability-tracing-spans.md +224 -0
  275. package/dist/docs/references/reference-processors-batch-parts-processor.md +61 -0
  276. package/dist/docs/references/reference-processors-language-detector.md +82 -0
  277. package/dist/docs/references/reference-processors-message-history-processor.md +85 -0
  278. package/dist/docs/references/reference-processors-moderation-processor.md +104 -0
  279. package/dist/docs/references/reference-processors-pii-detector.md +108 -0
  280. package/dist/docs/references/reference-processors-processor-interface.md +521 -0
  281. package/dist/docs/references/reference-processors-prompt-injection-detector.md +72 -0
  282. package/dist/docs/references/reference-processors-semantic-recall-processor.md +117 -0
  283. package/dist/docs/references/reference-processors-system-prompt-scrubber.md +80 -0
  284. package/dist/docs/references/reference-processors-token-limiter-processor.md +115 -0
  285. package/dist/docs/references/reference-processors-tool-call-filter.md +85 -0
  286. package/dist/docs/references/reference-processors-tool-search-processor.md +111 -0
  287. package/dist/docs/references/reference-processors-unicode-normalizer.md +62 -0
  288. package/dist/docs/references/reference-processors-working-memory-processor.md +152 -0
  289. package/dist/docs/references/reference-rag-database-config.md +261 -0
  290. package/dist/docs/references/reference-rag-embeddings.md +92 -0
  291. package/dist/docs/references/reference-server-mastra-server.md +298 -0
  292. package/dist/docs/references/reference-server-register-api-route.md +249 -0
  293. package/dist/docs/references/reference-storage-cloudflare-d1.md +218 -0
  294. package/dist/docs/references/reference-storage-composite.md +235 -0
  295. package/dist/docs/references/reference-storage-lance.md +131 -0
  296. package/dist/docs/references/reference-storage-libsql.md +135 -0
  297. package/dist/docs/references/reference-storage-mongodb.md +262 -0
  298. package/dist/docs/references/reference-storage-mssql.md +157 -0
  299. package/dist/docs/references/reference-storage-overview.md +121 -0
  300. package/dist/docs/references/reference-storage-postgresql.md +526 -0
  301. package/dist/docs/references/reference-storage-upstash.md +160 -0
  302. package/dist/docs/references/reference-streaming-ChunkType.md +292 -0
  303. package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +182 -0
  304. package/dist/docs/references/reference-streaming-agents-streamLegacy.md +142 -0
  305. package/dist/docs/references/reference-streaming-workflows-observeStream.md +42 -0
  306. package/dist/docs/references/reference-streaming-workflows-resumeStream.md +61 -0
  307. package/dist/docs/references/reference-streaming-workflows-stream.md +88 -0
  308. package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +142 -0
  309. package/dist/docs/references/reference-templates-overview.md +194 -0
  310. package/dist/docs/references/reference-tools-create-tool.md +237 -0
  311. package/dist/docs/references/reference-tools-graph-rag-tool.md +182 -0
  312. package/dist/docs/references/reference-tools-mcp-client.md +954 -0
  313. package/dist/docs/references/reference-tools-mcp-server.md +1271 -0
  314. package/dist/docs/references/reference-tools-vector-query-tool.md +459 -0
  315. package/dist/docs/references/reference-vectors-libsql.md +305 -0
  316. package/dist/docs/references/reference-vectors-mongodb.md +295 -0
  317. package/dist/docs/references/reference-vectors-pg.md +408 -0
  318. package/dist/docs/references/reference-vectors-upstash.md +294 -0
  319. package/dist/docs/references/reference-voice-composite-voice.md +121 -0
  320. package/dist/docs/references/reference-voice-mastra-voice.md +311 -0
  321. package/dist/docs/references/reference-voice-voice.addInstructions.md +55 -0
  322. package/dist/docs/references/reference-voice-voice.addTools.md +67 -0
  323. package/dist/docs/references/reference-voice-voice.connect.md +94 -0
  324. package/dist/docs/references/reference-voice-voice.events.md +37 -0
  325. package/dist/docs/references/reference-voice-voice.listen.md +164 -0
  326. package/dist/docs/references/reference-voice-voice.on.md +111 -0
  327. package/dist/docs/references/reference-voice-voice.speak.md +157 -0
  328. package/dist/docs/references/reference-workflows-run-methods-cancel.md +86 -0
  329. package/dist/docs/references/reference-workflows-run-methods-restart.md +33 -0
  330. package/dist/docs/references/reference-workflows-run-methods-resume.md +59 -0
  331. package/dist/docs/references/reference-workflows-run-methods-start.md +58 -0
  332. package/dist/docs/references/reference-workflows-run-methods-startAsync.md +67 -0
  333. package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +142 -0
  334. package/dist/docs/references/reference-workflows-run.md +59 -0
  335. package/dist/docs/references/reference-workflows-step.md +119 -0
  336. package/dist/docs/references/reference-workflows-workflow-methods-branch.md +25 -0
  337. package/dist/docs/references/reference-workflows-workflow-methods-commit.md +17 -0
  338. package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +63 -0
  339. package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +25 -0
  340. package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +25 -0
  341. package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +118 -0
  342. package/dist/docs/references/reference-workflows-workflow-methods-map.md +93 -0
  343. package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +21 -0
  344. package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +35 -0
  345. package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +35 -0
  346. package/dist/docs/references/reference-workflows-workflow-methods-then.md +21 -0
  347. package/dist/docs/references/reference-workflows-workflow.md +157 -0
  348. package/dist/docs/references/reference-workspace-filesystem.md +255 -0
  349. package/dist/docs/references/reference-workspace-local-filesystem.md +343 -0
  350. package/dist/docs/references/reference-workspace-local-sandbox.md +301 -0
  351. package/dist/docs/references/reference-workspace-sandbox.md +87 -0
  352. package/dist/docs/references/reference-workspace-workspace-class.md +244 -0
  353. package/dist/docs/references/reference.md +277 -0
  354. package/dist/evals/index.cjs +20 -20
  355. package/dist/evals/index.js +3 -3
  356. package/dist/evals/run/index.d.ts +9 -2
  357. package/dist/evals/run/index.d.ts.map +1 -1
  358. package/dist/evals/scoreTraces/index.cjs +5 -5
  359. package/dist/evals/scoreTraces/index.js +2 -2
  360. package/dist/harness/harness.d.ts +6 -0
  361. package/dist/harness/harness.d.ts.map +1 -1
  362. package/dist/harness/index.cjs +28 -13
  363. package/dist/harness/index.cjs.map +1 -1
  364. package/dist/harness/index.js +20 -5
  365. package/dist/harness/index.js.map +1 -1
  366. package/dist/index.cjs +2 -2
  367. package/dist/index.js +1 -1
  368. package/dist/integration/index.cjs +2 -2
  369. package/dist/integration/index.js +1 -1
  370. package/dist/llm/index.cjs +6 -6
  371. package/dist/llm/index.js +1 -1
  372. package/dist/llm/model/embedding-router.d.ts.map +1 -1
  373. package/dist/llm/model/model.loop.d.ts +1 -1
  374. package/dist/llm/model/model.loop.d.ts.map +1 -1
  375. package/dist/loop/index.cjs +20 -12
  376. package/dist/loop/index.js +1 -1
  377. package/dist/loop/network/index.d.ts.map +1 -1
  378. package/dist/loop/network/validation.d.ts +51 -0
  379. package/dist/loop/network/validation.d.ts.map +1 -1
  380. package/dist/loop/test-utils/generateText.d.ts.map +1 -1
  381. package/dist/loop/test-utils/options.d.ts.map +1 -1
  382. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  383. package/dist/loop/types.d.ts +15 -0
  384. package/dist/loop/types.d.ts.map +1 -1
  385. package/dist/loop/workflows/agentic-execution/index.d.ts +3 -0
  386. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  387. package/dist/loop/workflows/agentic-execution/is-task-complete-step.d.ts +126 -0
  388. package/dist/loop/workflows/agentic-execution/is-task-complete-step.d.ts.map +1 -0
  389. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +3 -1
  390. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  391. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +1 -0
  392. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  393. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  394. package/dist/loop/workflows/agentic-loop/index.d.ts +3 -0
  395. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  396. package/dist/loop/workflows/schema.d.ts +3 -0
  397. package/dist/loop/workflows/schema.d.ts.map +1 -1
  398. package/dist/mastra/index.cjs +2 -2
  399. package/dist/mastra/index.d.ts +9 -5
  400. package/dist/mastra/index.d.ts.map +1 -1
  401. package/dist/mastra/index.js +1 -1
  402. package/dist/memory/index.cjs +14 -14
  403. package/dist/memory/index.js +1 -1
  404. package/dist/processor-provider/index.cjs +10 -10
  405. package/dist/processor-provider/index.js +1 -1
  406. package/dist/processors/index.cjs +42 -42
  407. package/dist/processors/index.js +1 -1
  408. package/dist/processors/processors/skills.d.ts.map +1 -1
  409. package/dist/relevance/index.cjs +3 -3
  410. package/dist/relevance/index.js +1 -1
  411. package/dist/storage/constants.cjs +56 -56
  412. package/dist/storage/constants.js +1 -1
  413. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  414. package/dist/storage/index.cjs +160 -160
  415. package/dist/storage/index.js +2 -2
  416. package/dist/storage/types.d.ts +2 -3
  417. package/dist/storage/types.d.ts.map +1 -1
  418. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -1
  419. package/dist/stream/base/output.d.ts +1 -0
  420. package/dist/stream/base/output.d.ts.map +1 -1
  421. package/dist/stream/index.cjs +11 -11
  422. package/dist/stream/index.js +2 -2
  423. package/dist/stream/types.d.ts +27 -1
  424. package/dist/stream/types.d.ts.map +1 -1
  425. package/dist/test-utils/llm-mock.cjs +4 -4
  426. package/dist/test-utils/llm-mock.js +1 -1
  427. package/dist/tool-loop-agent/index.cjs +4 -4
  428. package/dist/tool-loop-agent/index.js +1 -1
  429. package/dist/tools/index.cjs +9 -5
  430. package/dist/tools/index.d.ts +1 -1
  431. package/dist/tools/index.d.ts.map +1 -1
  432. package/dist/tools/index.js +1 -1
  433. package/dist/tools/is-vercel-tool.cjs +2 -2
  434. package/dist/tools/is-vercel-tool.js +1 -1
  435. package/dist/tools/toolchecks.d.ts +10 -0
  436. package/dist/tools/toolchecks.d.ts.map +1 -1
  437. package/dist/utils.cjs +23 -23
  438. package/dist/utils.js +1 -1
  439. package/dist/vector/index.cjs +7 -7
  440. package/dist/vector/index.js +1 -1
  441. package/dist/vector/types.d.ts +9 -1
  442. package/dist/vector/types.d.ts.map +1 -1
  443. package/dist/workflows/evented/index.cjs +10 -10
  444. package/dist/workflows/evented/index.js +1 -1
  445. package/dist/workflows/index.cjs +25 -25
  446. package/dist/workflows/index.js +1 -1
  447. package/dist/workflows/types.d.ts +14 -1
  448. package/dist/workflows/types.d.ts.map +1 -1
  449. package/dist/workflows/workflow.d.ts +3 -17
  450. package/dist/workflows/workflow.d.ts.map +1 -1
  451. package/dist/workspace/filesystem/composite-filesystem.d.ts +5 -0
  452. package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -1
  453. package/dist/workspace/filesystem/filesystem.d.ts +12 -0
  454. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  455. package/dist/workspace/filesystem/fs-utils.d.ts +12 -0
  456. package/dist/workspace/filesystem/fs-utils.d.ts.map +1 -1
  457. package/dist/workspace/filesystem/local-filesystem.d.ts +6 -0
  458. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  459. package/dist/workspace/index.cjs +66 -66
  460. package/dist/workspace/index.js +1 -1
  461. package/dist/workspace/lsp/client.d.ts +76 -0
  462. package/dist/workspace/lsp/client.d.ts.map +1 -0
  463. package/dist/workspace/lsp/index.d.ts +6 -0
  464. package/dist/workspace/lsp/index.d.ts.map +1 -0
  465. package/dist/workspace/lsp/language.d.ts +16 -0
  466. package/dist/workspace/lsp/language.d.ts.map +1 -0
  467. package/dist/workspace/lsp/manager.d.ts +72 -0
  468. package/dist/workspace/lsp/manager.d.ts.map +1 -0
  469. package/dist/workspace/lsp/servers.d.ts +43 -0
  470. package/dist/workspace/lsp/servers.d.ts.map +1 -0
  471. package/dist/workspace/lsp/types.d.ts +45 -0
  472. package/dist/workspace/lsp/types.d.ts.map +1 -0
  473. package/dist/workspace/tools/ast-edit.d.ts.map +1 -1
  474. package/dist/workspace/tools/edit-file.d.ts.map +1 -1
  475. package/dist/workspace/tools/helpers.d.ts +13 -0
  476. package/dist/workspace/tools/helpers.d.ts.map +1 -1
  477. package/dist/workspace/tools/write-file.d.ts.map +1 -1
  478. package/dist/workspace/workspace.d.ts +33 -0
  479. package/dist/workspace/workspace.d.ts.map +1 -1
  480. package/package.json +10 -8
  481. package/dist/chunk-2X66GWF5.cjs.map +0 -1
  482. package/dist/chunk-6QBN6MZY.cjs.map +0 -1
  483. package/dist/chunk-7EXW4AAG.js.map +0 -1
  484. package/dist/chunk-7UAJ6LMR.cjs.map +0 -1
  485. package/dist/chunk-BQHWJLXU.js.map +0 -1
  486. package/dist/chunk-DB7U2C5B.cjs.map +0 -1
  487. package/dist/chunk-DFCRXDVK.js.map +0 -1
  488. package/dist/chunk-EAZ6YDCQ.cjs.map +0 -1
  489. package/dist/chunk-HB6T4554.cjs.map +0 -1
  490. package/dist/chunk-IC5OUWKJ.js.map +0 -1
  491. package/dist/chunk-KUXNBWN7.js.map +0 -1
  492. package/dist/chunk-O7PZ4VOO.cjs.map +0 -1
  493. package/dist/chunk-QSHV7GPT.js.map +0 -1
  494. package/dist/chunk-QTAS3HND.cjs.map +0 -1
  495. package/dist/chunk-R4N65TLG.js.map +0 -1
  496. package/dist/chunk-T6GAM3SQ.js.map +0 -1
  497. package/dist/chunk-YQG7NBPR.cjs.map +0 -1
  498. package/dist/chunk-ZSBM2SVU.js.map +0 -1
@@ -0,0 +1,959 @@
1
+ # Voice in Mastra
2
+
3
+ Mastra's Voice system provides a unified interface for voice interactions, enabling text-to-speech (TTS), speech-to-text (STT), and real-time speech-to-speech (STS) capabilities in your applications.
4
+
5
+ ## Adding Voice to Agents
6
+
7
+ To learn how to integrate voice capabilities into your agents, check out the [Adding Voice to Agents](https://mastra.ai/docs/agents/adding-voice) documentation. This section covers how to use both single and multiple voice providers, as well as real-time interactions.
8
+
9
+ ```typescript
10
+ import { Agent } from '@mastra/core/agent'
11
+ import { OpenAIVoice } from '@mastra/voice-openai'
12
+
13
+ // Initialize OpenAI voice for TTS
14
+
15
+ const voiceAgent = new Agent({
16
+ id: 'voice-agent',
17
+ name: 'Voice Agent',
18
+ instructions: 'You are a voice assistant that can help users with their tasks.',
19
+ model: 'openai/gpt-5.1',
20
+ voice: new OpenAIVoice(),
21
+ })
22
+ ```
23
+
24
+ You can then use the following voice capabilities:
25
+
26
+ ### Text to Speech (TTS)
27
+
28
+ Turn your agent's responses into natural-sounding speech using Mastra's TTS capabilities. Choose from multiple providers like OpenAI, ElevenLabs, and more.
29
+
30
+ For detailed configuration options and advanced features, check out our [Text-to-Speech guide](https://mastra.ai/docs/voice/text-to-speech).
31
+
32
+ **OpenAI**:
33
+
34
+ ```typescript
35
+ import { Agent } from '@mastra/core/agent'
36
+ import { OpenAIVoice } from '@mastra/voice-openai'
37
+ import { playAudio } from '@mastra/node-audio'
38
+
39
+ const voiceAgent = new Agent({
40
+ id: 'voice-agent',
41
+ name: 'Voice Agent',
42
+ instructions: 'You are a voice assistant that can help users with their tasks.',
43
+ model: 'openai/gpt-5.1',
44
+ voice: new OpenAIVoice(),
45
+ })
46
+
47
+ const { text } = await voiceAgent.generate('What color is the sky?')
48
+
49
+ // Convert text to speech to an Audio Stream
50
+ const audioStream = await voiceAgent.voice.speak(text, {
51
+ speaker: 'default', // Optional: specify a speaker
52
+ responseFormat: 'wav', // Optional: specify a response format
53
+ })
54
+
55
+ playAudio(audioStream)
56
+ ```
57
+
58
+ Visit the [OpenAI Voice Reference](https://mastra.ai/reference/voice/openai) for more information on the OpenAI voice provider.
59
+
60
+ **Azure**:
61
+
62
+ ```typescript
63
+ import { Agent } from '@mastra/core/agent'
64
+ import { AzureVoice } from '@mastra/voice-azure'
65
+ import { playAudio } from '@mastra/node-audio'
66
+
67
+ const voiceAgent = new Agent({
68
+ id: 'voice-agent',
69
+ name: 'Voice Agent',
70
+ instructions: 'You are a voice assistant that can help users with their tasks.',
71
+ model: 'openai/gpt-5.1',
72
+ voice: new AzureVoice(),
73
+ })
74
+
75
+ const { text } = await voiceAgent.generate('What color is the sky?')
76
+
77
+ // Convert text to speech to an Audio Stream
78
+ const audioStream = await voiceAgent.voice.speak(text, {
79
+ speaker: 'en-US-JennyNeural', // Optional: specify a speaker
80
+ })
81
+
82
+ playAudio(audioStream)
83
+ ```
84
+
85
+ Visit the [Azure Voice Reference](https://mastra.ai/reference/voice/azure) for more information on the Azure voice provider.
86
+
87
+ **ElevenLabs**:
88
+
89
+ ```typescript
90
+ import { Agent } from '@mastra/core/agent'
91
+ import { ElevenLabsVoice } from '@mastra/voice-elevenlabs'
92
+ import { playAudio } from '@mastra/node-audio'
93
+
94
+ const voiceAgent = new Agent({
95
+ id: 'voice-agent',
96
+ name: 'Voice Agent',
97
+ instructions: 'You are a voice assistant that can help users with their tasks.',
98
+ model: 'openai/gpt-5.1',
99
+ voice: new ElevenLabsVoice(),
100
+ })
101
+
102
+ const { text } = await voiceAgent.generate('What color is the sky?')
103
+
104
+ // Convert text to speech to an Audio Stream
105
+ const audioStream = await voiceAgent.voice.speak(text, {
106
+ speaker: 'default', // Optional: specify a speaker
107
+ })
108
+
109
+ playAudio(audioStream)
110
+ ```
111
+
112
+ Visit the [ElevenLabs Voice Reference](https://mastra.ai/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
113
+
114
+ **PlayAI**:
115
+
116
+ ```typescript
117
+ import { Agent } from '@mastra/core/agent'
118
+ import { PlayAIVoice } from '@mastra/voice-playai'
119
+ import { playAudio } from '@mastra/node-audio'
120
+
121
+ const voiceAgent = new Agent({
122
+ id: 'voice-agent',
123
+ name: 'Voice Agent',
124
+ instructions: 'You are a voice assistant that can help users with their tasks.',
125
+ model: 'openai/gpt-5.1',
126
+ voice: new PlayAIVoice(),
127
+ })
128
+
129
+ const { text } = await voiceAgent.generate('What color is the sky?')
130
+
131
+ // Convert text to speech to an Audio Stream
132
+ const audioStream = await voiceAgent.voice.speak(text, {
133
+ speaker: 'default', // Optional: specify a speaker
134
+ })
135
+
136
+ playAudio(audioStream)
137
+ ```
138
+
139
+ Visit the [PlayAI Voice Reference](https://mastra.ai/reference/voice/playai) for more information on the PlayAI voice provider.
140
+
141
+ **Google**:
142
+
143
+ ```typescript
144
+ import { Agent } from '@mastra/core/agent'
145
+ import { GoogleVoice } from '@mastra/voice-google'
146
+ import { playAudio } from '@mastra/node-audio'
147
+
148
+ const voiceAgent = new Agent({
149
+ id: 'voice-agent',
150
+ name: 'Voice Agent',
151
+ instructions: 'You are a voice assistant that can help users with their tasks.',
152
+ model: 'openai/gpt-5.1',
153
+ voice: new GoogleVoice(),
154
+ })
155
+
156
+ const { text } = await voiceAgent.generate('What color is the sky?')
157
+
158
+ // Convert text to speech to an Audio Stream
159
+ const audioStream = await voiceAgent.voice.speak(text, {
160
+ speaker: 'en-US-Studio-O', // Optional: specify a speaker
161
+ })
162
+
163
+ playAudio(audioStream)
164
+ ```
165
+
166
+ Visit the [Google Voice Reference](https://mastra.ai/reference/voice/google) for more information on the Google voice provider.
167
+
168
+ **Cloudflare**:
169
+
170
+ ```typescript
171
+ import { Agent } from '@mastra/core/agent'
172
+ import { CloudflareVoice } from '@mastra/voice-cloudflare'
173
+ import { playAudio } from '@mastra/node-audio'
174
+
175
+ const voiceAgent = new Agent({
176
+ id: 'voice-agent',
177
+ name: 'Voice Agent',
178
+ instructions: 'You are a voice assistant that can help users with their tasks.',
179
+ model: 'openai/gpt-5.1',
180
+ voice: new CloudflareVoice(),
181
+ })
182
+
183
+ const { text } = await voiceAgent.generate('What color is the sky?')
184
+
185
+ // Convert text to speech to an Audio Stream
186
+ const audioStream = await voiceAgent.voice.speak(text, {
187
+ speaker: 'default', // Optional: specify a speaker
188
+ })
189
+
190
+ playAudio(audioStream)
191
+ ```
192
+
193
+ Visit the [Cloudflare Voice Reference](https://mastra.ai/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
194
+
195
+ **Deepgram**:
196
+
197
+ ```typescript
198
+ import { Agent } from '@mastra/core/agent'
199
+ import { DeepgramVoice } from '@mastra/voice-deepgram'
200
+ import { playAudio } from '@mastra/node-audio'
201
+
202
+ const voiceAgent = new Agent({
203
+ id: 'voice-agent',
204
+ name: 'Voice Agent',
205
+ instructions: 'You are a voice assistant that can help users with their tasks.',
206
+ model: 'openai/gpt-5.1',
207
+ voice: new DeepgramVoice(),
208
+ })
209
+
210
+ const { text } = await voiceAgent.generate('What color is the sky?')
211
+
212
+ // Convert text to speech to an Audio Stream
213
+ const audioStream = await voiceAgent.voice.speak(text, {
214
+ speaker: 'aura-english-us', // Optional: specify a speaker
215
+ })
216
+
217
+ playAudio(audioStream)
218
+ ```
219
+
220
+ Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
221
+
222
+ **Speechify**:
223
+
224
+ ```typescript
225
+ import { Agent } from '@mastra/core/agent'
226
+ import { SpeechifyVoice } from '@mastra/voice-speechify'
227
+ import { playAudio } from '@mastra/node-audio'
228
+
229
+ const voiceAgent = new Agent({
230
+ id: 'voice-agent',
231
+ name: 'Voice Agent',
232
+ instructions: 'You are a voice assistant that can help users with their tasks.',
233
+ model: 'openai/gpt-5.1',
234
+ voice: new SpeechifyVoice(),
235
+ })
236
+
237
+ const { text } = await voiceAgent.generate('What color is the sky?')
238
+
239
+ // Convert text to speech to an Audio Stream
240
+ const audioStream = await voiceAgent.voice.speak(text, {
241
+ speaker: 'matthew', // Optional: specify a speaker
242
+ })
243
+
244
+ playAudio(audioStream)
245
+ ```
246
+
247
+ Visit the [Speechify Voice Reference](https://mastra.ai/reference/voice/speechify) for more information on the Speechify voice provider.
248
+
249
+ **Sarvam**:
250
+
251
+ ```typescript
252
+ import { Agent } from '@mastra/core/agent'
253
+ import { SarvamVoice } from '@mastra/voice-sarvam'
254
+ import { playAudio } from '@mastra/node-audio'
255
+
256
+ const voiceAgent = new Agent({
257
+ id: 'voice-agent',
258
+ name: 'Voice Agent',
259
+ instructions: 'You are a voice assistant that can help users with their tasks.',
260
+ model: 'openai/gpt-5.1',
261
+ voice: new SarvamVoice(),
262
+ })
263
+
264
+ const { text } = await voiceAgent.generate('What color is the sky?')
265
+
266
+ // Convert text to speech to an Audio Stream
267
+ const audioStream = await voiceAgent.voice.speak(text, {
268
+ speaker: 'default', // Optional: specify a speaker
269
+ })
270
+
271
+ playAudio(audioStream)
272
+ ```
273
+
274
+ Visit the [Sarvam Voice Reference](https://mastra.ai/reference/voice/sarvam) for more information on the Sarvam voice provider.
275
+
276
+ **Murf**:
277
+
278
+ ```typescript
279
+ import { Agent } from '@mastra/core/agent'
280
+ import { MurfVoice } from '@mastra/voice-murf'
281
+ import { playAudio } from '@mastra/node-audio'
282
+
283
+ const voiceAgent = new Agent({
284
+ id: 'voice-agent',
285
+ name: 'Voice Agent',
286
+ instructions: 'You are a voice assistant that can help users with their tasks.',
287
+ model: 'openai/gpt-5.1',
288
+ voice: new MurfVoice(),
289
+ })
290
+
291
+ const { text } = await voiceAgent.generate('What color is the sky?')
292
+
293
+ // Convert text to speech to an Audio Stream
294
+ const audioStream = await voiceAgent.voice.speak(text, {
295
+ speaker: 'default', // Optional: specify a speaker
296
+ })
297
+
298
+ playAudio(audioStream)
299
+ ```
300
+
301
+ Visit the [Murf Voice Reference](https://mastra.ai/reference/voice/murf) for more information on the Murf voice provider.
302
+
303
+ ### Speech to Text (STT)
304
+
305
+ Transcribe spoken content using various providers like OpenAI, ElevenLabs, and more. For detailed configuration options and more, check out [Speech to Text](https://mastra.ai/docs/voice/speech-to-text).
306
+
307
+ You can download a sample audio file from [here](https://github.com/mastra-ai/realtime-voice-demo/raw/refs/heads/main/how_can_i_help_you.mp3).
308
+
309
+ [](https://github.com/mastra-ai/realtime-voice-demo/raw/refs/heads/main/how_can_i_help_you.mp3)
310
+
311
+ **OpenAI**:
312
+
313
+ ```typescript
314
+ import { Agent } from '@mastra/core/agent'
315
+ import { OpenAIVoice } from '@mastra/voice-openai'
316
+ import { createReadStream } from 'fs'
317
+
318
+ const voiceAgent = new Agent({
319
+ id: 'voice-agent',
320
+ name: 'Voice Agent',
321
+ instructions: 'You are a voice assistant that can help users with their tasks.',
322
+ model: 'openai/gpt-5.1',
323
+ voice: new OpenAIVoice(),
324
+ })
325
+
326
+ // Use an audio file from a URL
327
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
328
+
329
+ // Convert audio to text
330
+ const transcript = await voiceAgent.voice.listen(audioStream)
331
+ console.log(`User said: ${transcript}`)
332
+
333
+ // Generate a response based on the transcript
334
+ const { text } = await voiceAgent.generate(transcript)
335
+ ```
336
+
337
+ Visit the [OpenAI Voice Reference](https://mastra.ai/reference/voice/openai) for more information on the OpenAI voice provider.
338
+
339
+ **Azure**:
340
+
341
+ ```typescript
342
+ import { createReadStream } from 'fs'
343
+ import { Agent } from '@mastra/core/agent'
344
+ import { AzureVoice } from '@mastra/voice-azure'
345
+ import { createReadStream } from 'fs'
346
+
347
+ const voiceAgent = new Agent({
348
+ id: 'voice-agent',
349
+ name: 'Voice Agent',
350
+ instructions: 'You are a voice assistant that can help users with their tasks.',
351
+ model: 'openai/gpt-5.1',
352
+ voice: new AzureVoice(),
353
+ })
354
+
355
+ // Use an audio file from a URL
356
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
357
+
358
+ // Convert audio to text
359
+ const transcript = await voiceAgent.voice.listen(audioStream)
360
+ console.log(`User said: ${transcript}`)
361
+
362
+ // Generate a response based on the transcript
363
+ const { text } = await voiceAgent.generate(transcript)
364
+ ```
365
+
366
+ Visit the [Azure Voice Reference](https://mastra.ai/reference/voice/azure) for more information on the Azure voice provider.
367
+
368
+ **ElevenLabs**:
369
+
370
+ ```typescript
371
+ import { Agent } from '@mastra/core/agent'
372
+ import { ElevenLabsVoice } from '@mastra/voice-elevenlabs'
373
+ import { createReadStream } from 'fs'
374
+
375
+ const voiceAgent = new Agent({
376
+ id: 'voice-agent',
377
+ name: 'Voice Agent',
378
+ instructions: 'You are a voice assistant that can help users with their tasks.',
379
+ model: 'openai/gpt-5.1',
380
+ voice: new ElevenLabsVoice(),
381
+ })
382
+
383
+ // Use an audio file from a URL
384
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
385
+
386
+ // Convert audio to text
387
+ const transcript = await voiceAgent.voice.listen(audioStream)
388
+ console.log(`User said: ${transcript}`)
389
+
390
+ // Generate a response based on the transcript
391
+ const { text } = await voiceAgent.generate(transcript)
392
+ ```
393
+
394
+ Visit the [ElevenLabs Voice Reference](https://mastra.ai/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
395
+
396
+ **Google**:
397
+
398
+ ```typescript
399
+ import { Agent } from '@mastra/core/agent'
400
+ import { GoogleVoice } from '@mastra/voice-google'
401
+ import { createReadStream } from 'fs'
402
+
403
+ const voiceAgent = new Agent({
404
+ id: 'voice-agent',
405
+ name: 'Voice Agent',
406
+ instructions: 'You are a voice assistant that can help users with their tasks.',
407
+ model: 'openai/gpt-5.1',
408
+ voice: new GoogleVoice(),
409
+ })
410
+
411
+ // Use an audio file from a URL
412
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
413
+
414
+ // Convert audio to text
415
+ const transcript = await voiceAgent.voice.listen(audioStream)
416
+ console.log(`User said: ${transcript}`)
417
+
418
+ // Generate a response based on the transcript
419
+ const { text } = await voiceAgent.generate(transcript)
420
+ ```
421
+
422
+ Visit the [Google Voice Reference](https://mastra.ai/reference/voice/google) for more information on the Google voice provider.
423
+
424
+ **Cloudflare**:
425
+
426
+ ```typescript
427
+ import { Agent } from '@mastra/core/agent'
428
+ import { CloudflareVoice } from '@mastra/voice-cloudflare'
429
+ import { createReadStream } from 'fs'
430
+
431
+ const voiceAgent = new Agent({
432
+ id: 'voice-agent',
433
+ name: 'Voice Agent',
434
+ instructions: 'You are a voice assistant that can help users with their tasks.',
435
+ model: 'openai/gpt-5.1',
436
+ voice: new CloudflareVoice(),
437
+ })
438
+
439
+ // Use an audio file from a URL
440
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
441
+
442
+ // Convert audio to text
443
+ const transcript = await voiceAgent.voice.listen(audioStream)
444
+ console.log(`User said: ${transcript}`)
445
+
446
+ // Generate a response based on the transcript
447
+ const { text } = await voiceAgent.generate(transcript)
448
+ ```
449
+
450
+ Visit the [Cloudflare Voice Reference](https://mastra.ai/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
451
+
452
+ **Deepgram**:
453
+
454
+ ```typescript
455
+ import { Agent } from '@mastra/core/agent'
456
+ import { DeepgramVoice } from '@mastra/voice-deepgram'
457
+ import { createReadStream } from 'fs'
458
+
459
+ const voiceAgent = new Agent({
460
+ id: 'voice-agent',
461
+ name: 'Voice Agent',
462
+ instructions: 'You are a voice assistant that can help users with their tasks.',
463
+ model: 'openai/gpt-5.1',
464
+ voice: new DeepgramVoice(),
465
+ })
466
+
467
+ // Use an audio file from a URL
468
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
469
+
470
+ // Convert audio to text
471
+ const transcript = await voiceAgent.voice.listen(audioStream)
472
+ console.log(`User said: ${transcript}`)
473
+
474
+ // Generate a response based on the transcript
475
+ const { text } = await voiceAgent.generate(transcript)
476
+ ```
477
+
478
+ Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
479
+
480
+ **Sarvam**:
481
+
482
+ ```typescript
483
+ import { Agent } from '@mastra/core/agent'
484
+ import { SarvamVoice } from '@mastra/voice-sarvam'
485
+ import { createReadStream } from 'fs'
486
+
487
+ const voiceAgent = new Agent({
488
+ id: 'voice-agent',
489
+ name: 'Voice Agent',
490
+ instructions: 'You are a voice assistant that can help users with their tasks.',
491
+ model: 'openai/gpt-5.1',
492
+ voice: new SarvamVoice(),
493
+ })
494
+
495
+ // Use an audio file from a URL
496
+ const audioStream = await createReadStream('./how_can_i_help_you.mp3')
497
+
498
+ // Convert audio to text
499
+ const transcript = await voiceAgent.voice.listen(audioStream)
500
+ console.log(`User said: ${transcript}`)
501
+
502
+ // Generate a response based on the transcript
503
+ const { text } = await voiceAgent.generate(transcript)
504
+ ```
505
+
506
+ Visit the [Sarvam Voice Reference](https://mastra.ai/reference/voice/sarvam) for more information on the Sarvam voice provider.
507
+
508
+ ### Speech to Speech (STS)
509
+
510
+ Create conversational experiences with speech-to-speech capabilities. The unified API enables real-time voice interactions between users and AI agents. For detailed configuration options and advanced features, check out [Speech to Speech](https://mastra.ai/docs/voice/speech-to-speech).
511
+
512
+ **OpenAI**:
513
+
514
+ ```typescript
515
+ import { Agent } from '@mastra/core/agent'
516
+ import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
517
+ import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
518
+
519
+ const voiceAgent = new Agent({
520
+ id: 'voice-agent',
521
+ name: 'Voice Agent',
522
+ instructions: 'You are a voice assistant that can help users with their tasks.',
523
+ model: 'openai/gpt-5.1',
524
+ voice: new OpenAIRealtimeVoice(),
525
+ })
526
+
527
+ // Listen for agent audio responses
528
+ voiceAgent.voice.on('speaker', ({ audio }) => {
529
+ playAudio(audio)
530
+ })
531
+
532
+ // Initiate the conversation
533
+ await voiceAgent.voice.speak('How can I help you today?')
534
+
535
+ // Send continuous audio from the microphone
536
+ const micStream = getMicrophoneStream()
537
+ await voiceAgent.voice.send(micStream)
538
+ ```
539
+
540
+ Visit the [OpenAI Voice Reference](https://mastra.ai/reference/voice/openai-realtime) for more information on the OpenAI voice provider.
541
+
542
+ **Google**:
543
+
544
+ ```typescript
545
+ import { Agent } from '@mastra/core/agent'
546
+ import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
547
+ import { GeminiLiveVoice } from '@mastra/voice-google-gemini-live'
548
+
549
+ const voiceAgent = new Agent({
550
+ id: 'voice-agent',
551
+ name: 'Voice Agent',
552
+ instructions: 'You are a voice assistant that can help users with their tasks.',
553
+ model: 'openai/gpt-5.1',
554
+ voice: new GeminiLiveVoice({
555
+ // Live API mode
556
+ apiKey: process.env.GOOGLE_API_KEY,
557
+ model: 'gemini-2.0-flash-exp',
558
+ speaker: 'Puck',
559
+ debug: true,
560
+ // Vertex AI alternative:
561
+ // vertexAI: true,
562
+ // project: 'your-gcp-project',
563
+ // location: 'us-central1',
564
+ // serviceAccountKeyFile: '/path/to/service-account.json',
565
+ }),
566
+ })
567
+
568
+ // Connect before using speak/send
569
+ await voiceAgent.voice.connect()
570
+
571
+ // Listen for agent audio responses
572
+ voiceAgent.voice.on('speaker', ({ audio }) => {
573
+ playAudio(audio)
574
+ })
575
+
576
+ // Listen for text responses and transcriptions
577
+ voiceAgent.voice.on('writing', ({ text, role }) => {
578
+ console.log(`${role}: ${text}`)
579
+ })
580
+
581
+ // Initiate the conversation
582
+ await voiceAgent.voice.speak('How can I help you today?')
583
+
584
+ // Send continuous audio from the microphone
585
+ const micStream = getMicrophoneStream()
586
+ await voiceAgent.voice.send(micStream)
587
+ ```
588
+
589
+ Visit the [Google Gemini Live Reference](https://mastra.ai/reference/voice/google-gemini-live) for more information on the Google Gemini Live voice provider.
590
+
591
+ ## Voice Configuration
592
+
593
+ Each voice provider can be configured with different models and options. Below are the detailed configuration options for all supported providers:
594
+
595
+ **OpenAI**:
596
+
597
+ ```typescript
598
+ // OpenAI Voice Configuration
599
+ const voice = new OpenAIVoice({
600
+ speechModel: {
601
+ name: 'gpt-3.5-turbo', // Example model name
602
+ apiKey: process.env.OPENAI_API_KEY,
603
+ language: 'en-US', // Language code
604
+ voiceType: 'neural', // Type of voice model
605
+ },
606
+ listeningModel: {
607
+ name: 'whisper-1', // Example model name
608
+ apiKey: process.env.OPENAI_API_KEY,
609
+ language: 'en-US', // Language code
610
+ format: 'wav', // Audio format
611
+ },
612
+ speaker: 'alloy', // Example speaker name
613
+ })
614
+ ```
615
+
616
+ Visit the [OpenAI Voice Reference](https://mastra.ai/reference/voice/openai) for more information on the OpenAI voice provider.
617
+
618
+ **Azure**:
619
+
620
+ ```typescript
621
+ // Azure Voice Configuration
622
+ const voice = new AzureVoice({
623
+ speechModel: {
624
+ name: 'en-US-JennyNeural', // Example model name
625
+ apiKey: process.env.AZURE_SPEECH_KEY,
626
+ region: process.env.AZURE_SPEECH_REGION,
627
+ language: 'en-US', // Language code
628
+ style: 'cheerful', // Voice style
629
+ pitch: '+0Hz', // Pitch adjustment
630
+ rate: '1.0', // Speech rate
631
+ },
632
+ listeningModel: {
633
+ name: 'en-US', // Example model name
634
+ apiKey: process.env.AZURE_SPEECH_KEY,
635
+ region: process.env.AZURE_SPEECH_REGION,
636
+ format: 'simple', // Output format
637
+ },
638
+ })
639
+ ```
640
+
641
+ Visit the [Azure Voice Reference](https://mastra.ai/reference/voice/azure) for more information on the Azure voice provider.
642
+
643
+ **ElevenLabs**:
644
+
645
+ ```typescript
646
+ // ElevenLabs Voice Configuration
647
+ const voice = new ElevenLabsVoice({
648
+ speechModel: {
649
+ voiceId: 'your-voice-id', // Example voice ID
650
+ model: 'eleven_multilingual_v2', // Example model name
651
+ apiKey: process.env.ELEVENLABS_API_KEY,
652
+ language: 'en', // Language code
653
+ emotion: 'neutral', // Emotion setting
654
+ },
655
+ // ElevenLabs may not have a separate listening model
656
+ })
657
+ ```
658
+
659
+ Visit the [ElevenLabs Voice Reference](https://mastra.ai/reference/voice/elevenlabs) for more information on the ElevenLabs voice provider.
660
+
661
+ **PlayAI**:
662
+
663
+ ```typescript
664
+ // PlayAI Voice Configuration
665
+ const voice = new PlayAIVoice({
666
+ speechModel: {
667
+ name: 'playai-voice', // Example model name
668
+ speaker: 'emma', // Example speaker name
669
+ apiKey: process.env.PLAYAI_API_KEY,
670
+ language: 'en-US', // Language code
671
+ speed: 1.0, // Speech speed
672
+ },
673
+ // PlayAI may not have a separate listening model
674
+ })
675
+ ```
676
+
677
+ Visit the [PlayAI Voice Reference](https://mastra.ai/reference/voice/playai) for more information on the PlayAI voice provider.
678
+
679
+ **Google**:
680
+
681
+ ```typescript
682
+ // Google Voice Configuration
683
+ const voice = new GoogleVoice({
684
+ speechModel: {
685
+ name: 'en-US-Studio-O', // Example model name
686
+ apiKey: process.env.GOOGLE_API_KEY,
687
+ languageCode: 'en-US', // Language code
688
+ gender: 'FEMALE', // Voice gender
689
+ speakingRate: 1.0, // Speaking rate
690
+ },
691
+ listeningModel: {
692
+ name: 'en-US', // Example model name
693
+ sampleRateHertz: 16000, // Sample rate
694
+ },
695
+ })
696
+ ```
697
+
698
+ Visit the [Google Voice Reference](https://mastra.ai/reference/voice/google) for more information on the Google voice provider.
699
+
700
+ **Cloudflare**:
701
+
702
+ ```typescript
703
+ // Cloudflare Voice Configuration
704
+ const voice = new CloudflareVoice({
705
+ speechModel: {
706
+ name: 'cloudflare-voice', // Example model name
707
+ accountId: process.env.CLOUDFLARE_ACCOUNT_ID,
708
+ apiToken: process.env.CLOUDFLARE_API_TOKEN,
709
+ language: 'en-US', // Language code
710
+ format: 'mp3', // Audio format
711
+ },
712
+ // Cloudflare may not have a separate listening model
713
+ })
714
+ ```
715
+
716
+ Visit the [Cloudflare Voice Reference](https://mastra.ai/reference/voice/cloudflare) for more information on the Cloudflare voice provider.
717
+
718
+ **Deepgram**:
719
+
720
+ ```typescript
721
+ // Deepgram Voice Configuration
722
+ const voice = new DeepgramVoice({
723
+ speechModel: {
724
+ name: 'nova-2', // Example model name
725
+ speaker: 'aura-english-us', // Example speaker name
726
+ apiKey: process.env.DEEPGRAM_API_KEY,
727
+ language: 'en-US', // Language code
728
+ tone: 'formal', // Tone setting
729
+ },
730
+ listeningModel: {
731
+ name: 'nova-2', // Example model name
732
+ format: 'flac', // Audio format
733
+ },
734
+ })
735
+ ```
736
+
737
+ Visit the [Deepgram Voice Reference](https://mastra.ai/reference/voice/deepgram) for more information on the Deepgram voice provider.
738
+
739
+ **Speechify**:
740
+
741
+ ```typescript
742
+ // Speechify Voice Configuration
743
+ const voice = new SpeechifyVoice({
744
+ speechModel: {
745
+ name: 'speechify-voice', // Example model name
746
+ speaker: 'matthew', // Example speaker name
747
+ apiKey: process.env.SPEECHIFY_API_KEY,
748
+ language: 'en-US', // Language code
749
+ speed: 1.0, // Speech speed
750
+ },
751
+ // Speechify may not have a separate listening model
752
+ })
753
+ ```
754
+
755
+ Visit the [Speechify Voice Reference](https://mastra.ai/reference/voice/speechify) for more information on the Speechify voice provider.
756
+
757
+ **Sarvam**:
758
+
759
+ ```typescript
760
+ // Sarvam Voice Configuration
761
+ const voice = new SarvamVoice({
762
+ speechModel: {
763
+ name: 'sarvam-voice', // Example model name
764
+ apiKey: process.env.SARVAM_API_KEY,
765
+ language: 'en-IN', // Language code
766
+ style: 'conversational', // Style setting
767
+ },
768
+ // Sarvam may not have a separate listening model
769
+ })
770
+ ```
771
+
772
+ Visit the [Sarvam Voice Reference](https://mastra.ai/reference/voice/sarvam) for more information on the Sarvam voice provider.
773
+
774
+ **Murf**:
775
+
776
+ ```typescript
777
+ // Murf Voice Configuration
778
+ const voice = new MurfVoice({
779
+ speechModel: {
780
+ name: 'murf-voice', // Example model name
781
+ apiKey: process.env.MURF_API_KEY,
782
+ language: 'en-US', // Language code
783
+ emotion: 'happy', // Emotion setting
784
+ },
785
+ // Murf may not have a separate listening model
786
+ })
787
+ ```
788
+
789
+ Visit the [Murf Voice Reference](https://mastra.ai/reference/voice/murf) for more information on the Murf voice provider.
790
+
791
+ **OpenAI Realtime**:
792
+
793
+ ```typescript
794
+ // OpenAI Realtime Voice Configuration
795
+ const voice = new OpenAIRealtimeVoice({
796
+ speechModel: {
797
+ name: 'gpt-3.5-turbo', // Example model name
798
+ apiKey: process.env.OPENAI_API_KEY,
799
+ language: 'en-US', // Language code
800
+ },
801
+ listeningModel: {
802
+ name: 'whisper-1', // Example model name
803
+ apiKey: process.env.OPENAI_API_KEY,
804
+ format: 'ogg', // Audio format
805
+ },
806
+ speaker: 'alloy', // Example speaker name
807
+ })
808
+ ```
809
+
810
+ For more information on the OpenAI Realtime voice provider, refer to the [OpenAI Realtime Voice Reference](https://mastra.ai/reference/voice/openai-realtime).
811
+
812
+ **Google Gemini Live**:
813
+
814
+ ```typescript
815
+ // Google Gemini Live Voice Configuration
816
+ const voice = new GeminiLiveVoice({
817
+ speechModel: {
818
+ name: 'gemini-2.0-flash-exp', // Example model name
819
+ apiKey: process.env.GOOGLE_API_KEY,
820
+ },
821
+ speaker: 'Puck', // Example speaker name
822
+ // Google Gemini Live is a realtime bidirectional API without separate speech and listening models
823
+ })
824
+ ```
825
+
826
+ Visit the [Google Gemini Live Reference](https://mastra.ai/reference/voice/google-gemini-live) for more information on the Google Gemini Live voice provider.
827
+
828
+ **AI SDK**:
829
+
830
+ ```typescript
831
+ // AI SDK Voice Configuration
832
+ import { CompositeVoice } from '@mastra/core/voice'
833
+ import { openai } from '@ai-sdk/openai'
834
+ import { elevenlabs } from '@ai-sdk/elevenlabs'
835
+
836
+ // Use AI SDK models directly - no need to install separate packages
837
+ const voice = new CompositeVoice({
838
+ input: openai.transcription('whisper-1'), // AI SDK transcription
839
+ output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech
840
+ })
841
+
842
+ // Works seamlessly with your agent
843
+ const voiceAgent = new Agent({
844
+ id: 'aisdk-voice-agent',
845
+ name: 'AI SDK Voice Agent',
846
+ instructions: 'You are a helpful assistant with voice capabilities.',
847
+ model: 'openai/gpt-5.1',
848
+ voice,
849
+ })
850
+ ```
851
+
852
+ ### Using Multiple Voice Providers
853
+
854
+ This example demonstrates how to create and use two different voice providers in Mastra: OpenAI for speech-to-text (STT) and PlayAI for text-to-speech (TTS).
855
+
856
+ Start by creating instances of the voice providers with any necessary configuration.
857
+
858
+ ```typescript
859
+ import { OpenAIVoice } from '@mastra/voice-openai'
860
+ import { PlayAIVoice } from '@mastra/voice-playai'
861
+ import { CompositeVoice } from '@mastra/core/voice'
862
+ import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
863
+
864
+ // Initialize OpenAI voice for STT
865
+ const input = new OpenAIVoice({
866
+ listeningModel: {
867
+ name: 'whisper-1',
868
+ apiKey: process.env.OPENAI_API_KEY,
869
+ },
870
+ })
871
+
872
+ // Initialize PlayAI voice for TTS
873
+ const output = new PlayAIVoice({
874
+ speechModel: {
875
+ name: 'playai-voice',
876
+ apiKey: process.env.PLAYAI_API_KEY,
877
+ },
878
+ })
879
+
880
+ // Combine the providers using CompositeVoice
881
+ const voice = new CompositeVoice({
882
+ input,
883
+ output,
884
+ })
885
+
886
+ // Implement voice interactions using the combined voice provider
887
+ const audioStream = getMicrophoneStream() // Assume this function gets audio input
888
+ const transcript = await voice.listen(audioStream)
889
+
890
+ // Log the transcribed text
891
+ console.log('Transcribed text:', transcript)
892
+
893
+ // Convert text to speech
894
+ const responseAudio = await voice.speak(`You said: ${transcript}`, {
895
+ speaker: 'default', // Optional: specify a speaker,
896
+ responseFormat: 'wav', // Optional: specify a response format
897
+ })
898
+
899
+ // Play the audio response
900
+ playAudio(responseAudio)
901
+ ```
902
+
903
+ ### Using AI SDK Model Providers
904
+
905
+ You can also use AI SDK models directly with `CompositeVoice`:
906
+
907
+ ```typescript
908
+ import { CompositeVoice } from '@mastra/core/voice'
909
+ import { openai } from '@ai-sdk/openai'
910
+ import { elevenlabs } from '@ai-sdk/elevenlabs'
911
+ import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
912
+
913
+ // Use AI SDK models directly - no provider setup needed
914
+ const voice = new CompositeVoice({
915
+ input: openai.transcription('whisper-1'), // AI SDK transcription
916
+ output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech
917
+ })
918
+
919
+ // Works the same way as Mastra providers
920
+ const audioStream = getMicrophoneStream()
921
+ const transcript = await voice.listen(audioStream)
922
+
923
+ console.log('Transcribed text:', transcript)
924
+
925
+ // Convert text to speech
926
+ const responseAudio = await voice.speak(`You said: ${transcript}`, {
927
+ speaker: 'Rachel', // ElevenLabs voice
928
+ })
929
+
930
+ playAudio(responseAudio)
931
+ ```
932
+
933
+ You can also mix AI SDK models with Mastra providers:
934
+
935
+ ```typescript
936
+ import { CompositeVoice } from '@mastra/core/voice'
937
+ import { PlayAIVoice } from '@mastra/voice-playai'
938
+ import { groq } from '@ai-sdk/groq'
939
+
940
+ const voice = new CompositeVoice({
941
+ input: groq.transcription('whisper-large-v3'), // AI SDK for STT
942
+ output: new PlayAIVoice(), // Mastra provider for TTS
943
+ })
944
+ ```
945
+
946
+ For more information on the CompositeVoice, refer to the [CompositeVoice Reference](https://mastra.ai/reference/voice/composite-voice).
947
+
948
+ ## More Resources
949
+
950
+ - [CompositeVoice](https://mastra.ai/reference/voice/composite-voice)
951
+ - [MastraVoice](https://mastra.ai/reference/voice/mastra-voice)
952
+ - [OpenAI Voice](https://mastra.ai/reference/voice/openai)
953
+ - [OpenAI Realtime Voice](https://mastra.ai/reference/voice/openai-realtime)
954
+ - [Azure Voice](https://mastra.ai/reference/voice/azure)
955
+ - [Google Voice](https://mastra.ai/reference/voice/google)
956
+ - [Google Gemini Live Voice](https://mastra.ai/reference/voice/google-gemini-live)
957
+ - [Deepgram Voice](https://mastra.ai/reference/voice/deepgram)
958
+ - [PlayAI Voice](https://mastra.ai/reference/voice/playai)
959
+ - [Voice Examples](https://github.com/mastra-ai/voice-examples)