@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,121 @@
1
+ # CompositeVoice
2
+
3
+ The CompositeVoice class allows you to combine different voice providers for text-to-speech and speech-to-text operations. This is particularly useful when you want to use the best provider for each operation - for example, using OpenAI for speech-to-text and PlayAI for text-to-speech.
4
+
5
+ CompositeVoice supports both Mastra voice providers and AI SDK model providers
6
+
7
+ ## Constructor Parameters
8
+
9
+ **config:** (`object`): Configuration object for the composite voice service
10
+
11
+ **config.input?:** (`MastraVoice | TranscriptionModel`): Voice provider or AI SDK transcription model to use for speech-to-text operations. AI SDK models are automatically wrapped.
12
+
13
+ **config.output?:** (`MastraVoice | SpeechModel`): Voice provider or AI SDK speech model to use for text-to-speech operations. AI SDK models are automatically wrapped.
14
+
15
+ **config.realtime?:** (`MastraVoice`): Voice provider to use for real-time speech-to-speech operations
16
+
17
+ ## Methods
18
+
19
+ ### speak()
20
+
21
+ Converts text to speech using the configured speaking provider.
22
+
23
+ **input:** (`string | NodeJS.ReadableStream`): Text to convert to speech
24
+
25
+ **options?:** (`object`): Provider-specific options passed to the speaking provider
26
+
27
+ Notes:
28
+
29
+ - If no speaking provider is configured, this method will throw an error
30
+ - Options are passed through to the configured speaking provider
31
+ - Returns a stream of audio data
32
+
33
+ ### listen()
34
+
35
+ Converts speech to text using the configured listening provider.
36
+
37
+ **audioStream:** (`NodeJS.ReadableStream`): Audio stream to convert to text
38
+
39
+ **options?:** (`object`): Provider-specific options passed to the listening provider
40
+
41
+ Notes:
42
+
43
+ - If no listening provider is configured, this method will throw an error
44
+ - Options are passed through to the configured listening provider
45
+ - Returns either a string or a stream of transcribed text, depending on the provider
46
+
47
+ ### getSpeakers()
48
+
49
+ Returns a list of available voices from the speaking provider, where each node contains:
50
+
51
+ **voiceId:** (`string`): Unique identifier for the voice
52
+
53
+ **key?:** (`value`): Additional voice properties that vary by provider (e.g., name, language)
54
+
55
+ Notes:
56
+
57
+ - Returns voices from the speaking provider only
58
+ - If no speaking provider is configured, returns an empty array
59
+ - Each voice object will have at least a voiceId property
60
+ - Additional voice properties depend on the speaking provider
61
+
62
+ ## Usage Examples
63
+
64
+ ### Using Mastra Voice Providers
65
+
66
+ ```typescript
67
+ import { CompositeVoice } from '@mastra/core/voice'
68
+ import { OpenAIVoice } from '@mastra/voice-openai'
69
+ import { PlayAIVoice } from '@mastra/voice-playai'
70
+
71
+ // Create voice providers
72
+ const openai = new OpenAIVoice()
73
+ const playai = new PlayAIVoice()
74
+
75
+ // Use OpenAI for listening (speech-to-text) and PlayAI for speaking (text-to-speech)
76
+ const voice = new CompositeVoice({
77
+ input: openai,
78
+ output: playai,
79
+ })
80
+
81
+ // Convert speech to text using OpenAI
82
+ const text = await voice.listen(audioStream)
83
+
84
+ // Convert text to speech using PlayAI
85
+ const audio = await voice.speak('Hello, world!')
86
+ ```
87
+
88
+ ### Using AI SDK Model Providers
89
+
90
+ You can pass AI SDK transcription and speech models directly to CompositeVoice:
91
+
92
+ ```typescript
93
+ import { CompositeVoice } from '@mastra/core/voice'
94
+ import { openai } from '@ai-sdk/openai'
95
+ import { elevenlabs } from '@ai-sdk/elevenlabs'
96
+
97
+ // Use AI SDK models directly - they will be auto-wrapped
98
+ const voice = new CompositeVoice({
99
+ input: openai.transcription('whisper-1'), // AI SDK transcription
100
+ output: elevenlabs.speech('eleven_turbo_v2'), // AI SDK speech
101
+ })
102
+
103
+ // Works the same way as with Mastra providers
104
+ const text = await voice.listen(audioStream)
105
+ const audio = await voice.speak('Hello from AI SDK!')
106
+ ```
107
+
108
+ ### Mix and Match
109
+
110
+ You can combine Mastra providers with AI SDK models:
111
+
112
+ ```typescript
113
+ import { CompositeVoice } from '@mastra/core/voice'
114
+ import { PlayAIVoice } from '@mastra/voice-playai'
115
+ import { groq } from '@ai-sdk/groq'
116
+
117
+ const voice = new CompositeVoice({
118
+ input: groq.transcription('whisper-large-v3'), // AI SDK for STT
119
+ output: new PlayAIVoice(), // Mastra for TTS
120
+ })
121
+ ```
@@ -0,0 +1,311 @@
1
+ # MastraVoice
2
+
3
+ The MastraVoice class is an abstract base class that defines the core interface for voice services in Mastra. All voice provider implementations (like OpenAI, Deepgram, PlayAI, Speechify) extend this class to provide their specific functionality. The class now includes support for real-time speech-to-speech capabilities through WebSocket connections.
4
+
5
+ ## Usage Example
6
+
7
+ ```typescript
8
+ import { MastraVoice } from '@mastra/core/voice'
9
+
10
+ // Create a voice provider implementation
11
+ class MyVoiceProvider extends MastraVoice {
12
+ constructor(config: {
13
+ speechModel?: BuiltInModelConfig
14
+ listeningModel?: BuiltInModelConfig
15
+ speaker?: string
16
+ realtimeConfig?: {
17
+ model?: string
18
+ apiKey?: string
19
+ options?: unknown
20
+ }
21
+ }) {
22
+ super({
23
+ speechModel: config.speechModel,
24
+ listeningModel: config.listeningModel,
25
+ speaker: config.speaker,
26
+ realtimeConfig: config.realtimeConfig,
27
+ })
28
+ }
29
+
30
+ // Implement required abstract methods
31
+ async speak(
32
+ input: string | NodeJS.ReadableStream,
33
+ options?: { speaker?: string },
34
+ ): Promise<NodeJS.ReadableStream | void> {
35
+ // Implement text-to-speech conversion
36
+ }
37
+
38
+ async listen(
39
+ audioStream: NodeJS.ReadableStream,
40
+ options?: unknown,
41
+ ): Promise<string | NodeJS.ReadableStream | void> {
42
+ // Implement speech-to-text conversion
43
+ }
44
+
45
+ async getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: unknown }>> {
46
+ // Return list of available voices
47
+ }
48
+
49
+ // Optional speech-to-speech methods
50
+ async connect(): Promise<void> {
51
+ // Establish WebSocket connection for speech-to-speech communication
52
+ }
53
+
54
+ async send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void> {
55
+ // Stream audio data in speech-to-speech
56
+ }
57
+
58
+ async answer(): Promise<void> {
59
+ // Trigger voice provider to respond
60
+ }
61
+
62
+ addTools(tools: Array<unknown>): void {
63
+ // Add tools for the voice provider to use
64
+ }
65
+
66
+ close(): void {
67
+ // Close WebSocket connection
68
+ }
69
+
70
+ on(event: string, callback: (data: unknown) => void): void {
71
+ // Register event listener
72
+ }
73
+
74
+ off(event: string, callback: (data: unknown) => void): void {
75
+ // Remove event listener
76
+ }
77
+ }
78
+ ```
79
+
80
+ ## Constructor Parameters
81
+
82
+ **config?:** (`VoiceConfig`): Configuration object for the voice service
83
+
84
+ **config.speechModel?:** (`BuiltInModelConfig`): Configuration for the text-to-speech model
85
+
86
+ **config.listeningModel?:** (`BuiltInModelConfig`): Configuration for the speech-to-text model
87
+
88
+ **config.speaker?:** (`string`): Default speaker/voice ID to use
89
+
90
+ **config.name?:** (`string`): Name for the voice provider instance
91
+
92
+ **config.realtimeConfig?:** (`object`): Configuration for real-time speech-to-speech capabilities
93
+
94
+ ### BuiltInModelConfig
95
+
96
+ **name:** (`string`): Name of the model to use
97
+
98
+ **apiKey?:** (`string`): API key for the model service
99
+
100
+ ### RealtimeConfig
101
+
102
+ **model?:** (`string`): Model to use for real-time speech-to-speech capabilities
103
+
104
+ **apiKey?:** (`string`): API key for the real-time service
105
+
106
+ **options?:** (`unknown`): Provider-specific options for real-time capabilities
107
+
108
+ ## Abstract Methods
109
+
110
+ These methods must be implemented by unknown class extending MastraVoice.
111
+
112
+ ### speak()
113
+
114
+ Converts text to speech using the configured speech model.
115
+
116
+ ```typescript
117
+ abstract speak(
118
+ input: string | NodeJS.ReadableStream,
119
+ options?: {
120
+ speaker?: string;
121
+ [key: string]: unknown;
122
+ }
123
+ ): Promise<NodeJS.ReadableStream | void>
124
+ ```
125
+
126
+ Purpose:
127
+
128
+ - Takes text input and converts it to speech using the provider's text-to-speech service
129
+ - Supports both string and stream input for flexibility
130
+ - Allows overriding the default speaker/voice through options
131
+ - Returns a stream of audio data that can be played or saved
132
+ - May return void if the audio is handled by emitting 'speaking' event
133
+
134
+ ### listen()
135
+
136
+ Converts speech to text using the configured listening model.
137
+
138
+ ```typescript
139
+ abstract listen(
140
+ audioStream: NodeJS.ReadableStream,
141
+ options?: {
142
+ [key: string]: unknown;
143
+ }
144
+ ): Promise<string | NodeJS.ReadableStream | void>
145
+ ```
146
+
147
+ Purpose:
148
+
149
+ - Takes an audio stream and converts it to text using the provider's speech-to-text service
150
+ - Supports provider-specific options for transcription configuration
151
+ - Can return either a complete text transcription or a stream of transcribed text
152
+ - Not all providers support this functionality (e.g., PlayAI, Speechify)
153
+ - May return void if the transcription is handled by emitting 'writing' event
154
+
155
+ ### getSpeakers()
156
+
157
+ Returns a list of available voices supported by the provider.
158
+
159
+ ```typescript
160
+ abstract getSpeakers(): Promise<Array<{ voiceId: string; [key: string]: unknown }>>
161
+ ```
162
+
163
+ Purpose:
164
+
165
+ - Retrieves the list of available voices/speakers from the provider
166
+ - Each voice must have at least a voiceId property
167
+ - Providers can include additional metadata about each voice
168
+ - Used to discover available voices for text-to-speech conversion
169
+
170
+ ## Optional Methods
171
+
172
+ These methods have default implementations but can be overridden by voice providers that support speech-to-speech capabilities.
173
+
174
+ ### connect()
175
+
176
+ Establishes a WebSocket or WebRTC connection for communication.
177
+
178
+ ```typescript
179
+ connect(config?: unknown): Promise<void>
180
+ ```
181
+
182
+ Purpose:
183
+
184
+ - Initializes a connection to the voice service for communication
185
+ - Must be called before using features like send() or answer()
186
+ - Returns a Promise that resolves when the connection is established
187
+ - Configuration is provider-specific
188
+
189
+ ### send()
190
+
191
+ Streams audio data in real-time to the voice provider.
192
+
193
+ ```typescript
194
+ send(audioData: NodeJS.ReadableStream | Int16Array): Promise<void>
195
+ ```
196
+
197
+ Purpose:
198
+
199
+ - Sends audio data to the voice provider for real-time processing
200
+ - Useful for continuous audio streaming scenarios like live microphone input
201
+ - Supports both ReadableStream and Int16Array audio formats
202
+ - Must be in connected state before calling this method
203
+
204
+ ### answer()
205
+
206
+ Triggers the voice provider to generate a response.
207
+
208
+ ```typescript
209
+ answer(): Promise<void>
210
+ ```
211
+
212
+ Purpose:
213
+
214
+ - Sends a signal to the voice provider to generate a response
215
+ - Used in real-time conversations to prompt the AI to respond
216
+ - Response will be emitted through the event system (e.g., 'speaking' event)
217
+
218
+ ### addTools()
219
+
220
+ Equips the voice provider with tools that can be used during conversations.
221
+
222
+ ```typescript
223
+ addTools(tools: Array<Tool>): void
224
+ ```
225
+
226
+ Purpose:
227
+
228
+ - Adds tools that the voice provider can use during conversations
229
+ - Tools can extend the capabilities of the voice provider
230
+ - Implementation is provider-specific
231
+
232
+ ### close()
233
+
234
+ Disconnects from the WebSocket or WebRTC connection.
235
+
236
+ ```typescript
237
+ close(): void
238
+ ```
239
+
240
+ Purpose:
241
+
242
+ - Closes the connection to the voice service
243
+ - Cleans up resources and stops any ongoing real-time processing
244
+ - Should be called when you're done with the voice instance
245
+
246
+ ### on()
247
+
248
+ Registers an event listener for voice events.
249
+
250
+ ```typescript
251
+ on<E extends VoiceEventType>(
252
+ event: E,
253
+ callback: (data: E extends keyof VoiceEventMap ? VoiceEventMap[E] : unknown) => void,
254
+ ): void
255
+ ```
256
+
257
+ Purpose:
258
+
259
+ - Registers a callback function to be called when the specified event occurs
260
+ - Standard events include 'speaking', 'writing', and 'error'
261
+ - Providers can emit custom events as well
262
+ - Event data structure depends on the event type
263
+
264
+ ### off()
265
+
266
+ Removes an event listener.
267
+
268
+ ```typescript
269
+ off<E extends VoiceEventType>(
270
+ event: E,
271
+ callback: (data: E extends keyof VoiceEventMap ? VoiceEventMap[E] : unknown) => void,
272
+ ): void
273
+ ```
274
+
275
+ Purpose:
276
+
277
+ - Removes a previously registered event listener
278
+ - Used to clean up event handlers when they're no longer needed
279
+
280
+ ## Event System
281
+
282
+ The MastraVoice class includes an event system for real-time communication. Standard event types include:
283
+
284
+ **speaking:** (`{ text: string; audioStream?: NodeJS.ReadableStream; audio?: Int16Array }`): Emitted when the voice provider is speaking, contains audio data
285
+
286
+ **writing:** (`{ text: string, role: string }`): Emitted when text is transcribed from speech
287
+
288
+ **error:** (`{ message: string; code?: string; details?: unknown }`): Emitted when an error occurs
289
+
290
+ ## Protected Properties
291
+
292
+ **listeningModel?:** (`BuiltInModelConfig | undefined`): Configuration for the speech-to-text model
293
+
294
+ **speechModel?:** (`BuiltInModelConfig | undefined`): Configuration for the text-to-speech model
295
+
296
+ **speaker?:** (`string | undefined`): Default speaker/voice ID
297
+
298
+ **realtimeConfig?:** (`{ model?: string; apiKey?: string; options?: unknown } | undefined`): Configuration for real-time speech-to-speech capabilities
299
+
300
+ ## Telemetry Support
301
+
302
+ MastraVoice includes built-in telemetry support through the `traced` method, which wraps method calls with performance tracking and error monitoring.
303
+
304
+ ## Notes
305
+
306
+ - MastraVoice is an abstract class and cannot be instantiated directly
307
+ - Implementations must provide concrete implementations for all abstract methods
308
+ - The class provides a consistent interface across different voice service providers
309
+ - Speech-to-speech capabilities are optional and provider-specific
310
+ - The event system enables asynchronous communication for real-time interactions
311
+ - Telemetry is automatically handled for all method calls
@@ -0,0 +1,55 @@
1
+ # voice.addInstructions()
2
+
3
+ The `addInstructions()` method equips a voice provider with instructions that guide the model's behavior during real-time interactions. This is particularly useful for real-time voice providers that maintain context across a conversation.
4
+
5
+ ## Usage Example
6
+
7
+ ```typescript
8
+ import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
9
+ import { Agent } from '@mastra/core/agent'
10
+
11
+ // Initialize a real-time voice provider
12
+ const voice = new OpenAIRealtimeVoice({
13
+ realtimeConfig: {
14
+ model: 'gpt-5.1-realtime',
15
+ apiKey: process.env.OPENAI_API_KEY,
16
+ },
17
+ })
18
+
19
+ // Create an agent with the voice provider
20
+ const agent = new Agent({
21
+ name: 'Customer Support Agent',
22
+ instructions: 'You are a helpful customer support agent for a software company.',
23
+ model: 'openai/gpt-5.1',
24
+ voice,
25
+ })
26
+
27
+ // Add additional instructions to the voice provider
28
+ voice.addInstructions(`
29
+ When speaking to customers:
30
+ - Always introduce yourself as the customer support agent
31
+ - Speak clearly and concisely
32
+ - Ask clarifying questions when needed
33
+ - Summarize the conversation at the end
34
+ `)
35
+
36
+ // Connect to the real-time service
37
+ await voice.connect()
38
+ ```
39
+
40
+ ## Parameters
41
+
42
+ **instructions:** (`string`): Instructions to guide the voice model's behavior
43
+
44
+ ## Return Value
45
+
46
+ This method does not return a value.
47
+
48
+ ## Notes
49
+
50
+ - Instructions are most effective when they are clear, specific, and relevant to the voice interaction
51
+ - This method is primarily used with real-time voice providers that maintain conversation context
52
+ - If called on a voice provider that doesn't support instructions, it will log a warning and do nothing
53
+ - Instructions added with this method are typically combined with any instructions provided by an associated Agent
54
+ - For best results, add instructions before starting a conversation (before calling `connect()`)
55
+ - Multiple calls to `addInstructions()` may either replace or append to existing instructions, depending on the provider implementation
@@ -0,0 +1,67 @@
1
+ # voice.addTools()
2
+
3
+ The `addTools()` method equips a voice provider with tools (functions) that can be called by the model during real-time interactions. This enables voice assistants to perform actions like searching for information, making calculations, or interacting with external systems.
4
+
5
+ ## Usage Example
6
+
7
+ ```typescript
8
+ import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
9
+ import { createTool } from '@mastra/core/tools'
10
+ import { z } from 'zod'
11
+
12
+ // Define tools
13
+ const weatherTool = createTool({
14
+ id: 'getWeather',
15
+ description: 'Get the current weather for a location',
16
+ inputSchema: z.object({
17
+ location: z.string().describe('The city and state, e.g. San Francisco, CA'),
18
+ }),
19
+ outputSchema: z.object({
20
+ message: z.string(),
21
+ }),
22
+ execute: async inputData => {
23
+ // Fetch weather data from an API
24
+ const response = await fetch(
25
+ `https://api.weather.com?location=${encodeURIComponent(inputData.location)}`,
26
+ )
27
+ const data = await response.json()
28
+ return {
29
+ message: `The current temperature in ${inputData.location} is ${data.temperature}°F with ${data.conditions}.`,
30
+ }
31
+ },
32
+ })
33
+
34
+ // Initialize a real-time voice provider
35
+ const voice = new OpenAIRealtimeVoice({
36
+ realtimeConfig: {
37
+ model: 'gpt-5.1-realtime',
38
+ apiKey: process.env.OPENAI_API_KEY,
39
+ },
40
+ })
41
+
42
+ // Add tools to the voice provider
43
+ voice.addTools({
44
+ getWeather: weatherTool,
45
+ })
46
+
47
+ // Connect to the real-time service
48
+ await voice.connect()
49
+ ```
50
+
51
+ ## Parameters
52
+
53
+ **tools:** (`ToolsInput`): Object containing tool definitions that can be called by the voice model
54
+
55
+ ## Return Value
56
+
57
+ This method does not return a value.
58
+
59
+ ## Notes
60
+
61
+ - Tools must follow the Mastra tool format with name, description, input schema, and execute function
62
+ - This method is primarily used with real-time voice providers that support function calling
63
+ - If called on a voice provider that doesn't support tools, it will log a warning and do nothing
64
+ - Tools added with this method are typically combined with any tools provided by an associated Agent
65
+ - For best results, add tools before starting a conversation (before calling `connect()`)
66
+ - The voice provider will automatically handle the invocation of tool handlers when the model decides to use them
67
+ - Multiple calls to `addTools()` may either replace or merge with existing tools, depending on the provider implementation
@@ -0,0 +1,94 @@
1
+ # voice.connect()
2
+
3
+ The `connect()` method establishes a WebSocket or WebRTC connection for real-time speech-to-speech communication. This method must be called before using other real-time features like `send()` or `answer()`.
4
+
5
+ ## Usage Example
6
+
7
+ ```typescript
8
+ import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
9
+ import Speaker from '@mastra/node-speaker'
10
+
11
+ const speaker = new Speaker({
12
+ sampleRate: 24100, // Audio sample rate in Hz - standard for high-quality audio on MacBook Pro
13
+ channels: 1, // Mono audio output (as opposed to stereo which would be 2)
14
+ bitDepth: 16, // Bit depth for audio quality - CD quality standard (16-bit resolution)
15
+ })
16
+
17
+ // Initialize a real-time voice provider
18
+ const voice = new OpenAIRealtimeVoice({
19
+ realtimeConfig: {
20
+ model: 'gpt-5.1-realtime',
21
+ apiKey: process.env.OPENAI_API_KEY,
22
+ options: {
23
+ sessionConfig: {
24
+ turn_detection: {
25
+ type: 'server_vad',
26
+ threshold: 0.6,
27
+ silence_duration_ms: 1200,
28
+ },
29
+ },
30
+ },
31
+ },
32
+ speaker: 'alloy', // Default voice
33
+ })
34
+ // Connect to the real-time service
35
+ await voice.connect()
36
+ // Now you can use real-time features
37
+ voice.on('speaker', stream => {
38
+ stream.pipe(speaker)
39
+ })
40
+ // With connection options
41
+ await voice.connect({
42
+ timeout: 10000, // 10 seconds timeout
43
+ reconnect: true,
44
+ })
45
+ ```
46
+
47
+ ## Parameters
48
+
49
+ **options?:** (`Record<string, unknown>`): Provider-specific connection options
50
+
51
+ ## Return Value
52
+
53
+ Returns a `Promise<void>` that resolves when the connection is successfully established.
54
+
55
+ ## Provider-Specific Options
56
+
57
+ Each real-time voice provider may support different options for the `connect()` method:
58
+
59
+ ### OpenAI Realtime
60
+
61
+ **options.timeout?:** (`number`): Connection timeout in milliseconds (Default: `30000`)
62
+
63
+ **options.reconnect?:** (`boolean`): Whether to automatically reconnect on connection loss (Default: `false`)
64
+
65
+ ## Using with CompositeVoice
66
+
67
+ When using `CompositeVoice`, the `connect()` method delegates to the configured real-time provider:
68
+
69
+ ```typescript
70
+ import { CompositeVoice } from '@mastra/core/voice'
71
+ import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
72
+ const realtimeVoice = new OpenAIRealtimeVoice()
73
+ const voice = new CompositeVoice({
74
+ realtime: realtimeVoice,
75
+ })
76
+ // This will use the OpenAIRealtimeVoice provider
77
+ await voice.connect()
78
+ ```
79
+
80
+ ## Notes
81
+
82
+ - This method is only implemented by real-time voice providers that support speech-to-speech capabilities
83
+ - If called on a voice provider that doesn't support this functionality, it will log a warning and resolve immediately
84
+ - The connection must be established before using other real-time methods like `send()` or `answer()`
85
+ - When you're done with the voice instance, call `close()` to properly clean up resources
86
+ - Some providers may automatically reconnect on connection loss, depending on their implementation
87
+ - Connection errors will typically be thrown as exceptions that should be caught and handled
88
+
89
+ ## Related Methods
90
+
91
+ - [voice.send()](https://mastra.ai/reference/voice/voice.send) - Sends audio data to the voice provider
92
+ - [voice.answer()](https://mastra.ai/reference/voice/voice.answer) - Triggers the voice provider to respond
93
+ - [voice.close()](https://mastra.ai/reference/voice/voice.close) - Disconnects from the real-time service
94
+ - [voice.on()](https://mastra.ai/reference/voice/voice.on) - Registers an event listener for voice events
@@ -0,0 +1,37 @@
1
+ # Voice Events
2
+
3
+ Voice providers emit various events during real-time voice interactions. These events can be listened to using the [voice.on()](https://mastra.ai/reference/voice/voice.on) method and are particularly important for building interactive voice applications.
4
+
5
+ ## Common Events
6
+
7
+ These events are commonly implemented across real-time voice providers:
8
+
9
+ **error:** (`Error`): Emitted when an error occurs during voice processing or when audio data format is unsupported
10
+
11
+ **session.created:** (`object`): Emitted when a new session is created with the OpenAI service
12
+
13
+ **session.updated:** (`object`): Emitted when the session configuration is updated
14
+
15
+ **response.created:** (`object`): Emitted when a new response is created by the AI assistant
16
+
17
+ **response.done:** (`object`): Emitted when the AI assistant has completed its response
18
+
19
+ **speaker:** (`StreamWithId`): Emitted with a new audio stream that can be piped to an audio output
20
+
21
+ **writing:** (`object`): Emitted when text is being transcribed (user) or generated (assistant)
22
+
23
+ **speaking:** (`object`): Emitted when audio data is available from the voice provider
24
+
25
+ **speaking.done:** (`object`): Emitted when the voice provider has finished speaking
26
+
27
+ **tool-call-start:** (`object`): Emitted when the AI assistant starts executing a tool
28
+
29
+ **tool-call-result:** (`object`): Emitted when a tool execution is complete with its result
30
+
31
+ ## Notes
32
+
33
+ - Not all events are supported by all voice providers
34
+ - The exact payload structure may vary between providers
35
+ - For non-real-time providers, most of these events will not be emitted
36
+ - Events are useful for building interactive UIs that respond to the conversation state
37
+ - Consider using the [voice.off()](https://mastra.ai/reference/voice/voice.off) method to remove event listeners when they are no longer needed