@mastra/mcp-docs-server 1.1.5 → 1.1.6-alpha.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.
- package/.docs/docs/agents/adding-voice.md +349 -0
- package/.docs/docs/agents/agent-approval.md +558 -0
- package/.docs/docs/agents/agent-memory.md +209 -0
- package/.docs/docs/agents/guardrails.md +374 -0
- package/.docs/docs/agents/network-approval.md +275 -0
- package/.docs/docs/agents/networks.md +299 -0
- package/.docs/docs/agents/overview.md +304 -0
- package/.docs/docs/agents/processors.md +622 -0
- package/.docs/docs/agents/structured-output.md +273 -0
- package/.docs/docs/agents/supervisor-agents.md +304 -0
- package/.docs/docs/agents/using-tools.md +214 -0
- package/.docs/docs/build-with-ai/mcp-docs-server.md +238 -0
- package/.docs/docs/build-with-ai/skills.md +35 -0
- package/.docs/docs/community/contributing-templates.md +3 -0
- package/.docs/docs/community/discord.md +9 -0
- package/.docs/docs/community/licensing.md +66 -0
- package/.docs/docs/deployment/cloud-providers.md +15 -0
- package/.docs/docs/deployment/mastra-server.md +122 -0
- package/.docs/docs/deployment/monorepo.md +142 -0
- package/.docs/docs/deployment/overview.md +62 -0
- package/.docs/docs/deployment/studio.md +239 -0
- package/.docs/docs/deployment/web-framework.md +52 -0
- package/.docs/docs/deployment/workflow-runners.md +9 -0
- package/.docs/docs/evals/built-in-scorers.md +47 -0
- package/.docs/docs/evals/custom-scorers.md +519 -0
- package/.docs/docs/evals/overview.md +141 -0
- package/.docs/docs/evals/running-in-ci.md +124 -0
- package/.docs/docs/getting-started/build-with-ai.md +68 -0
- package/.docs/docs/getting-started/manual-install.md +226 -0
- package/.docs/docs/getting-started/project-structure.md +60 -0
- package/.docs/docs/getting-started/start.md +28 -0
- package/.docs/docs/getting-started/studio.md +101 -0
- package/.docs/docs/index.md +43 -0
- package/.docs/docs/mastra-cloud/deployment.md +77 -0
- package/.docs/docs/mastra-cloud/observability.md +38 -0
- package/.docs/docs/mastra-cloud/overview.md +23 -0
- package/.docs/docs/mastra-cloud/setup.md +42 -0
- package/.docs/docs/mastra-cloud/studio.md +24 -0
- package/.docs/docs/mastra-code/configuration.md +299 -0
- package/.docs/docs/mastra-code/customization.md +228 -0
- package/.docs/docs/mastra-code/modes.md +104 -0
- package/.docs/docs/mastra-code/overview.md +135 -0
- package/.docs/docs/mastra-code/tools.md +229 -0
- package/.docs/docs/mcp/overview.md +373 -0
- package/.docs/docs/mcp/publishing-mcp-server.md +95 -0
- package/.docs/docs/memory/memory-processors.md +314 -0
- package/.docs/docs/memory/message-history.md +260 -0
- package/.docs/docs/memory/observational-memory.md +248 -0
- package/.docs/docs/memory/overview.md +45 -0
- package/.docs/docs/memory/semantic-recall.md +272 -0
- package/.docs/docs/memory/storage.md +261 -0
- package/.docs/docs/memory/working-memory.md +400 -0
- package/.docs/docs/observability/datasets/overview.md +198 -0
- package/.docs/docs/observability/datasets/running-experiments.md +274 -0
- package/.docs/docs/observability/logging.md +99 -0
- package/.docs/docs/observability/overview.md +70 -0
- package/.docs/docs/observability/tracing/bridges/otel.md +209 -0
- package/.docs/docs/observability/tracing/exporters/arize.md +272 -0
- package/.docs/docs/observability/tracing/exporters/braintrust.md +111 -0
- package/.docs/docs/observability/tracing/exporters/cloud.md +127 -0
- package/.docs/docs/observability/tracing/exporters/datadog.md +187 -0
- package/.docs/docs/observability/tracing/exporters/default.md +209 -0
- package/.docs/docs/observability/tracing/exporters/laminar.md +100 -0
- package/.docs/docs/observability/tracing/exporters/langfuse.md +213 -0
- package/.docs/docs/observability/tracing/exporters/langsmith.md +198 -0
- package/.docs/docs/observability/tracing/exporters/otel.md +476 -0
- package/.docs/docs/observability/tracing/exporters/posthog.md +148 -0
- package/.docs/docs/observability/tracing/exporters/sentry.md +208 -0
- package/.docs/docs/observability/tracing/overview.md +1112 -0
- package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +300 -0
- package/.docs/docs/rag/chunking-and-embedding.md +183 -0
- package/.docs/docs/rag/graph-rag.md +215 -0
- package/.docs/docs/rag/overview.md +72 -0
- package/.docs/docs/rag/retrieval.md +515 -0
- package/.docs/docs/rag/vector-databases.md +645 -0
- package/.docs/docs/server/auth/auth0.md +220 -0
- package/.docs/docs/server/auth/better-auth.md +203 -0
- package/.docs/docs/server/auth/clerk.md +132 -0
- package/.docs/docs/server/auth/composite-auth.md +234 -0
- package/.docs/docs/server/auth/custom-auth-provider.md +513 -0
- package/.docs/docs/server/auth/firebase.md +272 -0
- package/.docs/docs/server/auth/jwt.md +110 -0
- package/.docs/docs/server/auth/simple-auth.md +180 -0
- package/.docs/docs/server/auth/supabase.md +117 -0
- package/.docs/docs/server/auth/workos.md +186 -0
- package/.docs/docs/server/auth.md +38 -0
- package/.docs/docs/server/custom-adapters.md +378 -0
- package/.docs/docs/server/custom-api-routes.md +267 -0
- package/.docs/docs/server/mastra-client.md +243 -0
- package/.docs/docs/server/mastra-server.md +71 -0
- package/.docs/docs/server/middleware.md +225 -0
- package/.docs/docs/server/request-context.md +471 -0
- package/.docs/docs/server/server-adapters.md +547 -0
- package/.docs/docs/streaming/events.md +237 -0
- package/.docs/docs/streaming/overview.md +175 -0
- package/.docs/docs/streaming/tool-streaming.md +175 -0
- package/.docs/docs/streaming/workflow-streaming.md +109 -0
- package/.docs/docs/voice/overview.md +959 -0
- package/.docs/docs/voice/speech-to-speech.md +102 -0
- package/.docs/docs/voice/speech-to-text.md +79 -0
- package/.docs/docs/voice/text-to-speech.md +83 -0
- package/.docs/docs/workflows/agents-and-tools.md +166 -0
- package/.docs/docs/workflows/control-flow.md +822 -0
- package/.docs/docs/workflows/error-handling.md +360 -0
- package/.docs/docs/workflows/human-in-the-loop.md +215 -0
- package/.docs/docs/workflows/overview.md +370 -0
- package/.docs/docs/workflows/snapshots.md +238 -0
- package/.docs/docs/workflows/suspend-and-resume.md +205 -0
- package/.docs/docs/workflows/time-travel.md +309 -0
- package/.docs/docs/workflows/workflow-state.md +181 -0
- package/.docs/docs/workspace/filesystem.md +164 -0
- package/.docs/docs/workspace/overview.md +239 -0
- package/.docs/docs/workspace/sandbox.md +63 -0
- package/.docs/docs/workspace/search.md +243 -0
- package/.docs/docs/workspace/skills.md +169 -0
- package/.docs/guides/agent-frameworks/ai-sdk.md +140 -0
- package/.docs/guides/build-your-ui/ai-sdk-ui.md +1499 -0
- package/.docs/guides/build-your-ui/assistant-ui.md +156 -0
- package/.docs/guides/build-your-ui/copilotkit.md +289 -0
- package/.docs/guides/deployment/amazon-ec2.md +130 -0
- package/.docs/guides/deployment/aws-lambda.md +248 -0
- package/.docs/guides/deployment/azure-app-services.md +114 -0
- package/.docs/guides/deployment/cloudflare.md +99 -0
- package/.docs/guides/deployment/digital-ocean.md +168 -0
- package/.docs/guides/deployment/inngest.md +682 -0
- package/.docs/guides/deployment/netlify.md +77 -0
- package/.docs/guides/deployment/vercel.md +101 -0
- package/.docs/guides/getting-started/astro.md +398 -0
- package/.docs/guides/getting-started/electron.md +504 -0
- package/.docs/guides/getting-started/express.md +251 -0
- package/.docs/guides/getting-started/hono.md +190 -0
- package/.docs/guides/getting-started/next-js.md +347 -0
- package/.docs/guides/getting-started/nuxt.md +497 -0
- package/.docs/guides/getting-started/quickstart.md +67 -0
- package/.docs/guides/getting-started/sveltekit.md +296 -0
- package/.docs/guides/getting-started/vite-react.md +425 -0
- package/.docs/guides/guide/ai-recruiter.md +226 -0
- package/.docs/guides/guide/chef-michel.md +211 -0
- package/.docs/guides/guide/code-review-bot.md +226 -0
- package/.docs/guides/guide/dev-assistant.md +307 -0
- package/.docs/guides/guide/docs-manager.md +238 -0
- package/.docs/guides/guide/github-actions-pr-description.md +236 -0
- package/.docs/guides/guide/notes-mcp-server.md +416 -0
- package/.docs/guides/guide/research-assistant.md +348 -0
- package/.docs/guides/guide/research-coordinator.md +416 -0
- package/.docs/guides/guide/stock-agent.md +132 -0
- package/.docs/guides/guide/web-search.md +320 -0
- package/.docs/guides/guide/whatsapp-chat-bot.md +405 -0
- package/.docs/guides/index.md +3 -0
- package/.docs/guides/migrations/agentnetwork.md +97 -0
- package/.docs/guides/migrations/ai-sdk-v4-to-v5.md +112 -0
- package/.docs/guides/migrations/network-to-supervisor.md +261 -0
- package/.docs/guides/migrations/upgrade-to-v1/agent.md +404 -0
- package/.docs/guides/migrations/upgrade-to-v1/cli.md +57 -0
- package/.docs/guides/migrations/upgrade-to-v1/client.md +337 -0
- package/.docs/guides/migrations/upgrade-to-v1/deployment.md +37 -0
- package/.docs/guides/migrations/upgrade-to-v1/evals.md +239 -0
- package/.docs/guides/migrations/upgrade-to-v1/mastra.md +143 -0
- package/.docs/guides/migrations/upgrade-to-v1/mcp.md +97 -0
- package/.docs/guides/migrations/upgrade-to-v1/memory.md +285 -0
- package/.docs/guides/migrations/upgrade-to-v1/overview.md +119 -0
- package/.docs/guides/migrations/upgrade-to-v1/processors.md +68 -0
- package/.docs/guides/migrations/upgrade-to-v1/rag.md +42 -0
- package/.docs/guides/migrations/upgrade-to-v1/storage.md +553 -0
- package/.docs/guides/migrations/upgrade-to-v1/tools.md +180 -0
- package/.docs/guides/migrations/upgrade-to-v1/tracing.md +412 -0
- package/.docs/guides/migrations/upgrade-to-v1/vectors.md +87 -0
- package/.docs/guides/migrations/upgrade-to-v1/voice.md +30 -0
- package/.docs/guides/migrations/upgrade-to-v1/workflows.md +341 -0
- package/.docs/guides/migrations/vnext-to-standard-apis.md +362 -0
- package/.docs/models/embeddings.md +161 -0
- package/.docs/models/gateways/azure-openai.md +128 -0
- package/.docs/models/gateways/custom-gateways.md +545 -0
- package/.docs/models/gateways/netlify.md +88 -0
- package/.docs/models/gateways/openrouter.md +219 -0
- package/.docs/models/gateways/vercel.md +225 -0
- package/.docs/models/gateways.md +14 -0
- package/.docs/models/index.md +286 -0
- package/.docs/models/providers/302ai.md +134 -0
- package/.docs/models/providers/abacus.md +125 -0
- package/.docs/models/providers/agentrouter.md +90 -0
- package/.docs/models/providers/aihubmix.md +107 -0
- package/.docs/models/providers/alibaba-cn.md +135 -0
- package/.docs/models/providers/alibaba.md +111 -0
- package/.docs/models/providers/amazon-bedrock.md +33 -0
- package/.docs/models/providers/anthropic.md +153 -0
- package/.docs/models/providers/azure.md +33 -0
- package/.docs/models/providers/bailing.md +72 -0
- package/.docs/models/providers/baseten.md +77 -0
- package/.docs/models/providers/berget.md +78 -0
- package/.docs/models/providers/cerebras.md +101 -0
- package/.docs/models/providers/chutes.md +136 -0
- package/.docs/models/providers/cloudflare-ai-gateway.md +33 -0
- package/.docs/models/providers/cloudflare-workers-ai.md +109 -0
- package/.docs/models/providers/cohere.md +33 -0
- package/.docs/models/providers/cortecs.md +91 -0
- package/.docs/models/providers/deepinfra.md +112 -0
- package/.docs/models/providers/deepseek.md +88 -0
- package/.docs/models/providers/fastrouter.md +84 -0
- package/.docs/models/providers/fireworks-ai.md +89 -0
- package/.docs/models/providers/firmware.md +85 -0
- package/.docs/models/providers/friendli.md +78 -0
- package/.docs/models/providers/github-models.md +125 -0
- package/.docs/models/providers/google-vertex.md +33 -0
- package/.docs/models/providers/google.md +159 -0
- package/.docs/models/providers/groq.md +107 -0
- package/.docs/models/providers/helicone.md +161 -0
- package/.docs/models/providers/huggingface.md +90 -0
- package/.docs/models/providers/iflowcn.md +84 -0
- package/.docs/models/providers/inception.md +72 -0
- package/.docs/models/providers/inference.md +79 -0
- package/.docs/models/providers/io-intelligence.md +87 -0
- package/.docs/models/providers/io-net.md +87 -0
- package/.docs/models/providers/jiekou.md +131 -0
- package/.docs/models/providers/kilo.md +333 -0
- package/.docs/models/providers/kimi-for-coding.md +100 -0
- package/.docs/models/providers/kuae-cloud-coding-plan.md +71 -0
- package/.docs/models/providers/llama.md +77 -0
- package/.docs/models/providers/lmstudio.md +73 -0
- package/.docs/models/providers/lucidquery.md +72 -0
- package/.docs/models/providers/minimax-cn-coding-plan.md +102 -0
- package/.docs/models/providers/minimax-cn.md +102 -0
- package/.docs/models/providers/minimax-coding-plan.md +102 -0
- package/.docs/models/providers/minimax.md +104 -0
- package/.docs/models/providers/mistral.md +124 -0
- package/.docs/models/providers/moark.md +72 -0
- package/.docs/models/providers/modelscope.md +77 -0
- package/.docs/models/providers/moonshotai-cn.md +76 -0
- package/.docs/models/providers/moonshotai.md +76 -0
- package/.docs/models/providers/morph.md +73 -0
- package/.docs/models/providers/nano-gpt.md +103 -0
- package/.docs/models/providers/nebius.md +116 -0
- package/.docs/models/providers/nova.md +72 -0
- package/.docs/models/providers/novita-ai.md +154 -0
- package/.docs/models/providers/nvidia.md +141 -0
- package/.docs/models/providers/ollama-cloud.md +103 -0
- package/.docs/models/providers/ollama.md +33 -0
- package/.docs/models/providers/openai.md +193 -0
- package/.docs/models/providers/opencode.md +100 -0
- package/.docs/models/providers/ovhcloud.md +83 -0
- package/.docs/models/providers/perplexity.md +100 -0
- package/.docs/models/providers/poe.md +183 -0
- package/.docs/models/providers/privatemode-ai.md +75 -0
- package/.docs/models/providers/requesty.md +90 -0
- package/.docs/models/providers/scaleway.md +84 -0
- package/.docs/models/providers/siliconflow-cn.md +138 -0
- package/.docs/models/providers/siliconflow.md +140 -0
- package/.docs/models/providers/stackit.md +78 -0
- package/.docs/models/providers/stepfun.md +73 -0
- package/.docs/models/providers/submodel.md +79 -0
- package/.docs/models/providers/synthetic.md +96 -0
- package/.docs/models/providers/togetherai.md +115 -0
- package/.docs/models/providers/upstage.md +73 -0
- package/.docs/models/providers/venice.md +95 -0
- package/.docs/models/providers/vivgrid.md +106 -0
- package/.docs/models/providers/vultr.md +75 -0
- package/.docs/models/providers/wandb.md +80 -0
- package/.docs/models/providers/xai.md +141 -0
- package/.docs/models/providers/xiaomi.md +71 -0
- package/.docs/models/providers/zai-coding-plan.md +80 -0
- package/.docs/models/providers/zai.md +79 -0
- package/.docs/models/providers/zenmux.md +161 -0
- package/.docs/models/providers/zhipuai-coding-plan.md +79 -0
- package/.docs/models/providers/zhipuai.md +79 -0
- package/.docs/models/providers.md +81 -0
- package/.docs/reference/agents/agent.md +141 -0
- package/.docs/reference/agents/generate.md +186 -0
- package/.docs/reference/agents/generateLegacy.md +173 -0
- package/.docs/reference/agents/getDefaultGenerateOptions.md +36 -0
- package/.docs/reference/agents/getDefaultOptions.md +34 -0
- package/.docs/reference/agents/getDefaultStreamOptions.md +36 -0
- package/.docs/reference/agents/getDescription.md +21 -0
- package/.docs/reference/agents/getInstructions.md +34 -0
- package/.docs/reference/agents/getLLM.md +37 -0
- package/.docs/reference/agents/getMemory.md +34 -0
- package/.docs/reference/agents/getModel.md +34 -0
- package/.docs/reference/agents/getTools.md +29 -0
- package/.docs/reference/agents/getVoice.md +34 -0
- package/.docs/reference/agents/listAgents.md +35 -0
- package/.docs/reference/agents/listScorers.md +34 -0
- package/.docs/reference/agents/listTools.md +34 -0
- package/.docs/reference/agents/listWorkflows.md +34 -0
- package/.docs/reference/agents/network.md +133 -0
- package/.docs/reference/ai-sdk/chat-route.md +82 -0
- package/.docs/reference/ai-sdk/handle-chat-stream.md +53 -0
- package/.docs/reference/ai-sdk/handle-network-stream.md +37 -0
- package/.docs/reference/ai-sdk/handle-workflow-stream.md +55 -0
- package/.docs/reference/ai-sdk/network-route.md +74 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-stream.md +231 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-v4-messages.md +79 -0
- package/.docs/reference/ai-sdk/to-ai-sdk-v5-messages.md +76 -0
- package/.docs/reference/ai-sdk/with-mastra.md +59 -0
- package/.docs/reference/ai-sdk/workflow-route.md +79 -0
- package/.docs/reference/auth/auth0.md +73 -0
- package/.docs/reference/auth/better-auth.md +71 -0
- package/.docs/reference/auth/clerk.md +36 -0
- package/.docs/reference/auth/firebase.md +80 -0
- package/.docs/reference/auth/jwt.md +26 -0
- package/.docs/reference/auth/supabase.md +33 -0
- package/.docs/reference/auth/workos.md +84 -0
- package/.docs/reference/cli/create-mastra.md +137 -0
- package/.docs/reference/cli/mastra.md +336 -0
- package/.docs/reference/client-js/agents.md +437 -0
- package/.docs/reference/client-js/error-handling.md +16 -0
- package/.docs/reference/client-js/logs.md +24 -0
- package/.docs/reference/client-js/mastra-client.md +63 -0
- package/.docs/reference/client-js/memory.md +221 -0
- package/.docs/reference/client-js/observability.md +72 -0
- package/.docs/reference/client-js/telemetry.md +20 -0
- package/.docs/reference/client-js/tools.md +44 -0
- package/.docs/reference/client-js/vectors.md +79 -0
- package/.docs/reference/client-js/workflows.md +199 -0
- package/.docs/reference/configuration.md +752 -0
- package/.docs/reference/core/addGateway.md +42 -0
- package/.docs/reference/core/getAgent.md +21 -0
- package/.docs/reference/core/getAgentById.md +21 -0
- package/.docs/reference/core/getDeployer.md +22 -0
- package/.docs/reference/core/getGateway.md +38 -0
- package/.docs/reference/core/getGatewayById.md +41 -0
- package/.docs/reference/core/getLogger.md +22 -0
- package/.docs/reference/core/getMCPServer.md +47 -0
- package/.docs/reference/core/getMCPServerById.md +55 -0
- package/.docs/reference/core/getMemory.md +50 -0
- package/.docs/reference/core/getScorer.md +54 -0
- package/.docs/reference/core/getScorerById.md +54 -0
- package/.docs/reference/core/getServer.md +22 -0
- package/.docs/reference/core/getStorage.md +22 -0
- package/.docs/reference/core/getStoredAgentById.md +89 -0
- package/.docs/reference/core/getTelemetry.md +22 -0
- package/.docs/reference/core/getVector.md +22 -0
- package/.docs/reference/core/getWorkflow.md +42 -0
- package/.docs/reference/core/listAgents.md +21 -0
- package/.docs/reference/core/listGateways.md +40 -0
- package/.docs/reference/core/listLogs.md +38 -0
- package/.docs/reference/core/listLogsByRunId.md +36 -0
- package/.docs/reference/core/listMCPServers.md +55 -0
- package/.docs/reference/core/listMemory.md +56 -0
- package/.docs/reference/core/listScorers.md +29 -0
- package/.docs/reference/core/listStoredAgents.md +93 -0
- package/.docs/reference/core/listVectors.md +22 -0
- package/.docs/reference/core/listWorkflows.md +21 -0
- package/.docs/reference/core/mastra-class.md +66 -0
- package/.docs/reference/core/mastra-model-gateway.md +153 -0
- package/.docs/reference/core/setLogger.md +26 -0
- package/.docs/reference/core/setStorage.md +27 -0
- package/.docs/reference/datasets/addItem.md +37 -0
- package/.docs/reference/datasets/addItems.md +35 -0
- package/.docs/reference/datasets/compareExperiments.md +52 -0
- package/.docs/reference/datasets/create.md +51 -0
- package/.docs/reference/datasets/dataset.md +82 -0
- package/.docs/reference/datasets/datasets-manager.md +94 -0
- package/.docs/reference/datasets/delete.md +25 -0
- package/.docs/reference/datasets/deleteExperiment.md +27 -0
- package/.docs/reference/datasets/deleteItem.md +27 -0
- package/.docs/reference/datasets/deleteItems.md +29 -0
- package/.docs/reference/datasets/get.md +31 -0
- package/.docs/reference/datasets/getDetails.md +47 -0
- package/.docs/reference/datasets/getExperiment.md +30 -0
- package/.docs/reference/datasets/getItem.md +33 -0
- package/.docs/reference/datasets/getItemHistory.md +31 -0
- package/.docs/reference/datasets/list.md +31 -0
- package/.docs/reference/datasets/listExperimentResults.md +39 -0
- package/.docs/reference/datasets/listExperiments.md +33 -0
- package/.docs/reference/datasets/listItems.md +46 -0
- package/.docs/reference/datasets/listVersions.md +33 -0
- package/.docs/reference/datasets/startExperiment.md +62 -0
- package/.docs/reference/datasets/startExperimentAsync.md +43 -0
- package/.docs/reference/datasets/update.md +48 -0
- package/.docs/reference/datasets/updateItem.md +38 -0
- package/.docs/reference/deployer/cloudflare.md +79 -0
- package/.docs/reference/deployer/netlify.md +80 -0
- package/.docs/reference/deployer/vercel.md +91 -0
- package/.docs/reference/deployer.md +100 -0
- package/.docs/reference/evals/answer-relevancy.md +105 -0
- package/.docs/reference/evals/answer-similarity.md +99 -0
- package/.docs/reference/evals/bias.md +120 -0
- package/.docs/reference/evals/completeness.md +136 -0
- package/.docs/reference/evals/content-similarity.md +101 -0
- package/.docs/reference/evals/context-precision.md +196 -0
- package/.docs/reference/evals/context-relevance.md +531 -0
- package/.docs/reference/evals/create-scorer.md +270 -0
- package/.docs/reference/evals/faithfulness.md +114 -0
- package/.docs/reference/evals/hallucination.md +213 -0
- package/.docs/reference/evals/keyword-coverage.md +128 -0
- package/.docs/reference/evals/mastra-scorer.md +123 -0
- package/.docs/reference/evals/noise-sensitivity.md +675 -0
- package/.docs/reference/evals/prompt-alignment.md +614 -0
- package/.docs/reference/evals/run-evals.md +179 -0
- package/.docs/reference/evals/scorer-utils.md +326 -0
- package/.docs/reference/evals/textual-difference.md +113 -0
- package/.docs/reference/evals/tone-consistency.md +119 -0
- package/.docs/reference/evals/tool-call-accuracy.md +533 -0
- package/.docs/reference/evals/toxicity.md +123 -0
- package/.docs/reference/harness/harness-class.md +708 -0
- package/.docs/reference/index.md +277 -0
- package/.docs/reference/logging/pino-logger.md +117 -0
- package/.docs/reference/mastra-code/createMastraCode.md +108 -0
- package/.docs/reference/memory/clone-utilities.md +199 -0
- package/.docs/reference/memory/cloneThread.md +130 -0
- package/.docs/reference/memory/createThread.md +68 -0
- package/.docs/reference/memory/deleteMessages.md +38 -0
- package/.docs/reference/memory/getThreadById.md +24 -0
- package/.docs/reference/memory/listThreads.md +145 -0
- package/.docs/reference/memory/memory-class.md +147 -0
- package/.docs/reference/memory/observational-memory.md +565 -0
- package/.docs/reference/memory/recall.md +91 -0
- package/.docs/reference/observability/tracing/bridges/otel.md +131 -0
- package/.docs/reference/observability/tracing/configuration.md +178 -0
- package/.docs/reference/observability/tracing/exporters/arize.md +141 -0
- package/.docs/reference/observability/tracing/exporters/braintrust.md +93 -0
- package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +163 -0
- package/.docs/reference/observability/tracing/exporters/console-exporter.md +138 -0
- package/.docs/reference/observability/tracing/exporters/datadog.md +116 -0
- package/.docs/reference/observability/tracing/exporters/default-exporter.md +174 -0
- package/.docs/reference/observability/tracing/exporters/laminar.md +78 -0
- package/.docs/reference/observability/tracing/exporters/langfuse.md +134 -0
- package/.docs/reference/observability/tracing/exporters/langsmith.md +108 -0
- package/.docs/reference/observability/tracing/exporters/otel.md +199 -0
- package/.docs/reference/observability/tracing/exporters/posthog.md +92 -0
- package/.docs/reference/observability/tracing/exporters/sentry.md +184 -0
- package/.docs/reference/observability/tracing/instances.md +107 -0
- package/.docs/reference/observability/tracing/interfaces.md +743 -0
- package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +144 -0
- package/.docs/reference/observability/tracing/spans.md +224 -0
- package/.docs/reference/processors/batch-parts-processor.md +61 -0
- package/.docs/reference/processors/language-detector.md +82 -0
- package/.docs/reference/processors/message-history-processor.md +85 -0
- package/.docs/reference/processors/moderation-processor.md +104 -0
- package/.docs/reference/processors/pii-detector.md +108 -0
- package/.docs/reference/processors/processor-interface.md +521 -0
- package/.docs/reference/processors/prompt-injection-detector.md +72 -0
- package/.docs/reference/processors/semantic-recall-processor.md +117 -0
- package/.docs/reference/processors/system-prompt-scrubber.md +80 -0
- package/.docs/reference/processors/token-limiter-processor.md +115 -0
- package/.docs/reference/processors/tool-call-filter.md +85 -0
- package/.docs/reference/processors/tool-search-processor.md +111 -0
- package/.docs/reference/processors/unicode-normalizer.md +62 -0
- package/.docs/reference/processors/working-memory-processor.md +152 -0
- package/.docs/reference/rag/chunk.md +221 -0
- package/.docs/reference/rag/database-config.md +261 -0
- package/.docs/reference/rag/document.md +114 -0
- package/.docs/reference/rag/embeddings.md +92 -0
- package/.docs/reference/rag/extract-params.md +168 -0
- package/.docs/reference/rag/graph-rag.md +111 -0
- package/.docs/reference/rag/metadata-filters.md +216 -0
- package/.docs/reference/rag/rerank.md +75 -0
- package/.docs/reference/rag/rerankWithScorer.md +80 -0
- package/.docs/reference/server/create-route.md +262 -0
- package/.docs/reference/server/express-adapter.md +176 -0
- package/.docs/reference/server/fastify-adapter.md +90 -0
- package/.docs/reference/server/hono-adapter.md +162 -0
- package/.docs/reference/server/koa-adapter.md +127 -0
- package/.docs/reference/server/mastra-server.md +298 -0
- package/.docs/reference/server/register-api-route.md +249 -0
- package/.docs/reference/server/routes.md +306 -0
- package/.docs/reference/storage/cloudflare-d1.md +218 -0
- package/.docs/reference/storage/cloudflare.md +88 -0
- package/.docs/reference/storage/composite.md +235 -0
- package/.docs/reference/storage/convex.md +161 -0
- package/.docs/reference/storage/dynamodb.md +282 -0
- package/.docs/reference/storage/lance.md +131 -0
- package/.docs/reference/storage/libsql.md +135 -0
- package/.docs/reference/storage/mongodb.md +262 -0
- package/.docs/reference/storage/mssql.md +157 -0
- package/.docs/reference/storage/overview.md +121 -0
- package/.docs/reference/storage/postgresql.md +526 -0
- package/.docs/reference/storage/upstash.md +160 -0
- package/.docs/reference/streaming/ChunkType.md +292 -0
- package/.docs/reference/streaming/agents/MastraModelOutput.md +182 -0
- package/.docs/reference/streaming/agents/stream.md +221 -0
- package/.docs/reference/streaming/agents/streamLegacy.md +142 -0
- package/.docs/reference/streaming/workflows/observeStream.md +42 -0
- package/.docs/reference/streaming/workflows/resumeStream.md +61 -0
- package/.docs/reference/streaming/workflows/stream.md +88 -0
- package/.docs/reference/streaming/workflows/timeTravelStream.md +142 -0
- package/.docs/reference/templates/overview.md +194 -0
- package/.docs/reference/tools/create-tool.md +237 -0
- package/.docs/reference/tools/document-chunker-tool.md +89 -0
- package/.docs/reference/tools/graph-rag-tool.md +182 -0
- package/.docs/reference/tools/mcp-client.md +954 -0
- package/.docs/reference/tools/mcp-server.md +1271 -0
- package/.docs/reference/tools/vector-query-tool.md +459 -0
- package/.docs/reference/vectors/astra.md +121 -0
- package/.docs/reference/vectors/chroma.md +264 -0
- package/.docs/reference/vectors/convex.md +300 -0
- package/.docs/reference/vectors/couchbase.md +226 -0
- package/.docs/reference/vectors/duckdb.md +318 -0
- package/.docs/reference/vectors/elasticsearch.md +189 -0
- package/.docs/reference/vectors/lance.md +220 -0
- package/.docs/reference/vectors/libsql.md +305 -0
- package/.docs/reference/vectors/mongodb.md +295 -0
- package/.docs/reference/vectors/opensearch.md +99 -0
- package/.docs/reference/vectors/pg.md +408 -0
- package/.docs/reference/vectors/pinecone.md +168 -0
- package/.docs/reference/vectors/qdrant.md +222 -0
- package/.docs/reference/vectors/s3vectors.md +277 -0
- package/.docs/reference/vectors/turbopuffer.md +157 -0
- package/.docs/reference/vectors/upstash.md +294 -0
- package/.docs/reference/vectors/vectorize.md +147 -0
- package/.docs/reference/voice/azure.md +148 -0
- package/.docs/reference/voice/cloudflare.md +83 -0
- package/.docs/reference/voice/composite-voice.md +121 -0
- package/.docs/reference/voice/deepgram.md +79 -0
- package/.docs/reference/voice/elevenlabs.md +98 -0
- package/.docs/reference/voice/google-gemini-live.md +378 -0
- package/.docs/reference/voice/google.md +228 -0
- package/.docs/reference/voice/mastra-voice.md +311 -0
- package/.docs/reference/voice/murf.md +122 -0
- package/.docs/reference/voice/openai-realtime.md +203 -0
- package/.docs/reference/voice/openai.md +88 -0
- package/.docs/reference/voice/playai.md +80 -0
- package/.docs/reference/voice/sarvam.md +126 -0
- package/.docs/reference/voice/speechify.md +75 -0
- package/.docs/reference/voice/voice.addInstructions.md +55 -0
- package/.docs/reference/voice/voice.addTools.md +67 -0
- package/.docs/reference/voice/voice.answer.md +54 -0
- package/.docs/reference/voice/voice.close.md +51 -0
- package/.docs/reference/voice/voice.connect.md +94 -0
- package/.docs/reference/voice/voice.events.md +37 -0
- package/.docs/reference/voice/voice.getSpeakers.md +129 -0
- package/.docs/reference/voice/voice.listen.md +164 -0
- package/.docs/reference/voice/voice.off.md +54 -0
- package/.docs/reference/voice/voice.on.md +111 -0
- package/.docs/reference/voice/voice.send.md +65 -0
- package/.docs/reference/voice/voice.speak.md +157 -0
- package/.docs/reference/voice/voice.updateConfig.md +60 -0
- package/.docs/reference/workflows/run-methods/cancel.md +86 -0
- package/.docs/reference/workflows/run-methods/restart.md +33 -0
- package/.docs/reference/workflows/run-methods/resume.md +59 -0
- package/.docs/reference/workflows/run-methods/start.md +58 -0
- package/.docs/reference/workflows/run-methods/startAsync.md +67 -0
- package/.docs/reference/workflows/run-methods/timeTravel.md +142 -0
- package/.docs/reference/workflows/run.md +59 -0
- package/.docs/reference/workflows/step.md +119 -0
- package/.docs/reference/workflows/workflow-methods/branch.md +25 -0
- package/.docs/reference/workflows/workflow-methods/commit.md +17 -0
- package/.docs/reference/workflows/workflow-methods/create-run.md +63 -0
- package/.docs/reference/workflows/workflow-methods/dountil.md +25 -0
- package/.docs/reference/workflows/workflow-methods/dowhile.md +25 -0
- package/.docs/reference/workflows/workflow-methods/foreach.md +118 -0
- package/.docs/reference/workflows/workflow-methods/map.md +93 -0
- package/.docs/reference/workflows/workflow-methods/parallel.md +21 -0
- package/.docs/reference/workflows/workflow-methods/sleep.md +35 -0
- package/.docs/reference/workflows/workflow-methods/sleepUntil.md +35 -0
- package/.docs/reference/workflows/workflow-methods/then.md +21 -0
- package/.docs/reference/workflows/workflow.md +157 -0
- package/.docs/reference/workspace/e2b-sandbox.md +289 -0
- package/.docs/reference/workspace/filesystem.md +255 -0
- package/.docs/reference/workspace/gcs-filesystem.md +174 -0
- package/.docs/reference/workspace/local-filesystem.md +343 -0
- package/.docs/reference/workspace/local-sandbox.md +301 -0
- package/.docs/reference/workspace/s3-filesystem.md +175 -0
- package/.docs/reference/workspace/sandbox.md +87 -0
- package/.docs/reference/workspace/workspace-class.md +244 -0
- package/CHANGELOG.md +8 -0
- package/package.json +5 -5
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# voice.answer()
|
|
2
|
+
|
|
3
|
+
The `answer()` method is used in real-time voice providers to trigger the AI to generate a response. This method is particularly useful in speech-to-speech conversations where you need to explicitly signal the AI to respond after receiving user input.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
|
|
9
|
+
import { getMicrophoneStream } from '@mastra/node-audio'
|
|
10
|
+
import Speaker from '@mastra/node-speaker'
|
|
11
|
+
|
|
12
|
+
const speaker = new Speaker({
|
|
13
|
+
sampleRate: 24100, // Audio sample rate in Hz - standard for high-quality audio on MacBook Pro
|
|
14
|
+
channels: 1, // Mono audio output (as opposed to stereo which would be 2)
|
|
15
|
+
bitDepth: 16, // Bit depth for audio quality - CD quality standard (16-bit resolution)
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
// Initialize a real-time voice provider
|
|
19
|
+
const voice = new OpenAIRealtimeVoice({
|
|
20
|
+
realtimeConfig: {
|
|
21
|
+
model: 'gpt-5.1',
|
|
22
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
23
|
+
},
|
|
24
|
+
speaker: 'alloy', // Default voice
|
|
25
|
+
})
|
|
26
|
+
// Connect to the real-time service
|
|
27
|
+
await voice.connect()
|
|
28
|
+
// Register event listener for responses
|
|
29
|
+
voice.on('speaker', stream => {
|
|
30
|
+
// Handle audio response
|
|
31
|
+
stream.pipe(speaker)
|
|
32
|
+
})
|
|
33
|
+
// Send user audio input
|
|
34
|
+
const microphoneStream = getMicrophoneStream()
|
|
35
|
+
await voice.send(microphoneStream)
|
|
36
|
+
// Trigger the AI to respond
|
|
37
|
+
await voice.answer()
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Parameters
|
|
41
|
+
|
|
42
|
+
**options?:** (`Record<string, unknown>`): Provider-specific options for the response
|
|
43
|
+
|
|
44
|
+
## Return Value
|
|
45
|
+
|
|
46
|
+
Returns a `Promise<void>` that resolves when the response has been triggered.
|
|
47
|
+
|
|
48
|
+
## Notes
|
|
49
|
+
|
|
50
|
+
- This method is only implemented by real-time voice providers that support speech-to-speech capabilities
|
|
51
|
+
- If called on a voice provider that doesn't support this functionality, it will log a warning and resolve immediately
|
|
52
|
+
- The response audio will typically be emitted through the 'speaking' event rather than returned directly
|
|
53
|
+
- For providers that support it, you can use this method to send a specific response instead of having the AI generate one
|
|
54
|
+
- This method is commonly used in conjunction with `send()` to create a conversational flow
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# voice.close()
|
|
2
|
+
|
|
3
|
+
The `close()` method disconnects from a real-time voice service and cleans up resources. This is important for properly ending voice sessions and preventing resource leaks.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
|
|
9
|
+
import { getMicrophoneStream } from '@mastra/node-audio'
|
|
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
|
+
// Connect to the real-time service
|
|
20
|
+
await voice.connect()
|
|
21
|
+
|
|
22
|
+
// Start a conversation
|
|
23
|
+
voice.speak("Hello, I'm your AI assistant!")
|
|
24
|
+
|
|
25
|
+
// Stream audio from a microphone
|
|
26
|
+
const microphoneStream = getMicrophoneStream()
|
|
27
|
+
voice.send(microphoneStream)
|
|
28
|
+
|
|
29
|
+
// When the conversation is complete
|
|
30
|
+
setTimeout(() => {
|
|
31
|
+
// Close the connection and clean up resources
|
|
32
|
+
voice.close()
|
|
33
|
+
console.log('Voice session ended')
|
|
34
|
+
}, 60000) // End after 1 minute
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Parameters
|
|
38
|
+
|
|
39
|
+
This method does not accept any parameters.
|
|
40
|
+
|
|
41
|
+
## Return Value
|
|
42
|
+
|
|
43
|
+
This method does not return a value.
|
|
44
|
+
|
|
45
|
+
## Notes
|
|
46
|
+
|
|
47
|
+
- Always call `close()` when you're done with a real-time voice session to free up resources
|
|
48
|
+
- After calling `close()`, you'll need to call `connect()` again if you want to start a new session
|
|
49
|
+
- This method is primarily used with real-time voice providers that maintain persistent connections
|
|
50
|
+
- If called on a voice provider that doesn't support real-time connections, it will log a warning and do nothing
|
|
51
|
+
- Failing to close connections can lead to resource leaks and potential billing issues with voice service providers
|
|
@@ -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
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# voice.getSpeakers()
|
|
2
|
+
|
|
3
|
+
The `getSpeakers()` method retrieves a list of available voice options (speakers) from the voice provider. This allows applications to present users with voice choices or programmatically select the most appropriate voice for different contexts.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { OpenAIVoice } from '@mastra/voice-openai'
|
|
9
|
+
import { ElevenLabsVoice } from '@mastra/voice-elevenlabs'
|
|
10
|
+
|
|
11
|
+
// Initialize voice providers
|
|
12
|
+
const openaiVoice = new OpenAIVoice()
|
|
13
|
+
const elevenLabsVoice = new ElevenLabsVoice({
|
|
14
|
+
apiKey: process.env.ELEVENLABS_API_KEY,
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
// Get available speakers from OpenAI
|
|
18
|
+
const openaiSpeakers = await openaiVoice.getSpeakers()
|
|
19
|
+
console.log('OpenAI voices:', openaiSpeakers)
|
|
20
|
+
// Example output: [{ voiceId: "alloy" }, { voiceId: "echo" }, { voiceId: "fable" }, ...]
|
|
21
|
+
|
|
22
|
+
// Get available speakers from ElevenLabs
|
|
23
|
+
const elevenLabsSpeakers = await elevenLabsVoice.getSpeakers()
|
|
24
|
+
console.log('ElevenLabs voices:', elevenLabsSpeakers)
|
|
25
|
+
// Example output: [{ voiceId: "21m00Tcm4TlvDq8ikWAM", name: "Rachel" }, ...]
|
|
26
|
+
|
|
27
|
+
// Use a specific voice for speech
|
|
28
|
+
const text = 'Hello, this is a test of different voices.'
|
|
29
|
+
await openaiVoice.speak(text, { speaker: openaiSpeakers[2].voiceId })
|
|
30
|
+
await elevenLabsVoice.speak(text, { speaker: elevenLabsSpeakers[0].voiceId })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Parameters
|
|
34
|
+
|
|
35
|
+
This method does not accept any parameters.
|
|
36
|
+
|
|
37
|
+
## Return Value
|
|
38
|
+
|
|
39
|
+
**Promise\<Array<{ voiceId: string } & TSpeakerMetadata>>:** (`Promise`): A promise that resolves to an array of voice options, where each option contains at least a voiceId property and may include additional provider-specific metadata.
|
|
40
|
+
|
|
41
|
+
## Provider-Specific Metadata
|
|
42
|
+
|
|
43
|
+
Different voice providers return different metadata for their voices:
|
|
44
|
+
|
|
45
|
+
**OpenAI**:
|
|
46
|
+
|
|
47
|
+
**voiceId:** (`string`): Unique identifier for the voice (e.g., 'alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer')
|
|
48
|
+
|
|
49
|
+
**OpenAI Realtime**:
|
|
50
|
+
|
|
51
|
+
**voiceId:** (`string`): Unique identifier for the voice (e.g., 'alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer')
|
|
52
|
+
|
|
53
|
+
**Deepgram**:
|
|
54
|
+
|
|
55
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
56
|
+
|
|
57
|
+
**language:** (`string`): Language code embedded in the voice ID (e.g., 'en')
|
|
58
|
+
|
|
59
|
+
**ElevenLabs**:
|
|
60
|
+
|
|
61
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
62
|
+
|
|
63
|
+
**name:** (`string`): Human-readable name of the voice
|
|
64
|
+
|
|
65
|
+
**category:** (`string`): Category of the voice (e.g., 'premade', 'cloned')
|
|
66
|
+
|
|
67
|
+
**Google**:
|
|
68
|
+
|
|
69
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
70
|
+
|
|
71
|
+
**languageCodes:** (`string[]`): Array of language codes supported by the voice (e.g., \['en-US'])
|
|
72
|
+
|
|
73
|
+
**Azure**:
|
|
74
|
+
|
|
75
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
76
|
+
|
|
77
|
+
**language:** (`string`): Language code extracted from the voice ID (e.g., 'en')
|
|
78
|
+
|
|
79
|
+
**region:** (`string`): Region code extracted from the voice ID (e.g., 'US')
|
|
80
|
+
|
|
81
|
+
**Murf**:
|
|
82
|
+
|
|
83
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
84
|
+
|
|
85
|
+
**name:** (`string`): Name of the voice (same as voiceId)
|
|
86
|
+
|
|
87
|
+
**language:** (`string`): Language code extracted from the voice ID (e.g., 'en')
|
|
88
|
+
|
|
89
|
+
**gender:** (`string`): Gender of the voice (always 'neutral' in current implementation)
|
|
90
|
+
|
|
91
|
+
**PlayAI**:
|
|
92
|
+
|
|
93
|
+
**voiceId:** (`string`): Unique identifier for the voice (S3 URL to manifest.json)
|
|
94
|
+
|
|
95
|
+
**name:** (`string`): Human-readable name of the voice (e.g., 'Angelo', 'Arsenio')
|
|
96
|
+
|
|
97
|
+
**accent:** (`string`): Accent of the voice (e.g., 'US', 'Irish', 'US African American')
|
|
98
|
+
|
|
99
|
+
**gender:** (`string`): Gender of the voice ('M' or 'F')
|
|
100
|
+
|
|
101
|
+
**age:** (`string`): Age category of the voice (e.g., 'Young', 'Middle')
|
|
102
|
+
|
|
103
|
+
**style:** (`string`): Speaking style of the voice (e.g., 'Conversational')
|
|
104
|
+
|
|
105
|
+
**Speechify**:
|
|
106
|
+
|
|
107
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
108
|
+
|
|
109
|
+
**name:** (`string`): Human-readable name of the voice
|
|
110
|
+
|
|
111
|
+
**language:** (`string`): Language code of the voice (e.g., 'en-US')
|
|
112
|
+
|
|
113
|
+
**Sarvam**:
|
|
114
|
+
|
|
115
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
116
|
+
|
|
117
|
+
**name:** (`string`): Human-readable name of the voice
|
|
118
|
+
|
|
119
|
+
**language:** (`string`): Language of the voice (e.g., 'english', 'hindi')
|
|
120
|
+
|
|
121
|
+
**gender:** (`string`): Gender of the voice ('male' or 'female')
|
|
122
|
+
|
|
123
|
+
## Notes
|
|
124
|
+
|
|
125
|
+
- The available voices vary significantly between providers
|
|
126
|
+
- Some providers may require authentication to retrieve the full list of voices
|
|
127
|
+
- The default implementation returns an empty array if the provider doesn't support this method
|
|
128
|
+
- For performance reasons, consider caching the results if you need to display the list frequently
|
|
129
|
+
- The `voiceId` property is guaranteed to be present for all providers, but additional metadata varies
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# voice.listen()
|
|
2
|
+
|
|
3
|
+
The `listen()` method is a core function available in all Mastra voice providers that converts speech to text. It takes an audio stream as input and returns the transcribed text.
|
|
4
|
+
|
|
5
|
+
## Parameters
|
|
6
|
+
|
|
7
|
+
**audioStream:** (`NodeJS.ReadableStream`): Audio stream to transcribe. This can be a file stream or a microphone stream.
|
|
8
|
+
|
|
9
|
+
**options?:** (`object`): Provider-specific options for speech recognition
|
|
10
|
+
|
|
11
|
+
## Return Value
|
|
12
|
+
|
|
13
|
+
Returns one of the following:
|
|
14
|
+
|
|
15
|
+
- `Promise<string>`: A promise that resolves to the transcribed text
|
|
16
|
+
- `Promise<NodeJS.ReadableStream>`: A promise that resolves to a stream of transcribed text (for streaming transcription)
|
|
17
|
+
- `Promise<void>`: For real-time providers that emit 'writing' events instead of returning text directly
|
|
18
|
+
|
|
19
|
+
## Provider-Specific Options
|
|
20
|
+
|
|
21
|
+
Each voice provider may support additional options specific to their implementation. Here are some examples:
|
|
22
|
+
|
|
23
|
+
### OpenAI
|
|
24
|
+
|
|
25
|
+
**options.filetype?:** (`string`): Audio file format (e.g., 'mp3', 'wav', 'm4a') (Default: `'mp3'`)
|
|
26
|
+
|
|
27
|
+
**options.prompt?:** (`string`): Text to guide the model's transcription
|
|
28
|
+
|
|
29
|
+
**options.language?:** (`string`): Language code (e.g., 'en', 'fr', 'de')
|
|
30
|
+
|
|
31
|
+
### Google
|
|
32
|
+
|
|
33
|
+
**options.stream?:** (`boolean`): Whether to use streaming recognition (Default: `false`)
|
|
34
|
+
|
|
35
|
+
**options.config?:** (`object`): Recognition configuration from Google Cloud Speech-to-Text API (Default: `{ encoding: 'LINEAR16', languageCode: 'en-US' }`)
|
|
36
|
+
|
|
37
|
+
### Deepgram
|
|
38
|
+
|
|
39
|
+
**options.model?:** (`string`): Deepgram model to use for transcription (Default: `'nova-2'`)
|
|
40
|
+
|
|
41
|
+
**options.language?:** (`string`): Language code for transcription (Default: `'en'`)
|
|
42
|
+
|
|
43
|
+
## Usage Example
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { OpenAIVoice } from '@mastra/voice-openai'
|
|
47
|
+
import { getMicrophoneStream } from '@mastra/node-audio'
|
|
48
|
+
import { createReadStream } from 'fs'
|
|
49
|
+
import path from 'path'
|
|
50
|
+
|
|
51
|
+
// Initialize a voice provider
|
|
52
|
+
const voice = new OpenAIVoice({
|
|
53
|
+
listeningModel: {
|
|
54
|
+
name: 'whisper-1',
|
|
55
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
// Basic usage with a file stream
|
|
60
|
+
const audioFilePath = path.join(process.cwd(), 'audio.mp3')
|
|
61
|
+
const audioStream = createReadStream(audioFilePath)
|
|
62
|
+
const transcript = await voice.listen(audioStream, {
|
|
63
|
+
filetype: 'mp3',
|
|
64
|
+
})
|
|
65
|
+
console.log('Transcribed text:', transcript)
|
|
66
|
+
|
|
67
|
+
// Using a microphone stream
|
|
68
|
+
const microphoneStream = getMicrophoneStream() // Assume this function gets audio input
|
|
69
|
+
const transcription = await voice.listen(microphoneStream)
|
|
70
|
+
|
|
71
|
+
// With provider-specific options
|
|
72
|
+
const transcriptWithOptions = await voice.listen(audioStream, {
|
|
73
|
+
language: 'en',
|
|
74
|
+
prompt: 'This is a conversation about artificial intelligence.',
|
|
75
|
+
})
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Using with CompositeVoice
|
|
79
|
+
|
|
80
|
+
When using `CompositeVoice`, the `listen()` method delegates to the configured listening provider:
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { CompositeVoice } from '@mastra/core/voice'
|
|
84
|
+
import { OpenAIVoice } from '@mastra/voice-openai'
|
|
85
|
+
import { PlayAIVoice } from '@mastra/voice-playai'
|
|
86
|
+
|
|
87
|
+
const voice = new CompositeVoice({
|
|
88
|
+
input: new OpenAIVoice(),
|
|
89
|
+
output: new PlayAIVoice(),
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
// This will use the OpenAIVoice provider
|
|
93
|
+
const transcript = await voice.listen(audioStream)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Using AI SDK Model Providers
|
|
97
|
+
|
|
98
|
+
You can also use AI SDK transcription models directly with `CompositeVoice`:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import { CompositeVoice } from '@mastra/core/voice'
|
|
102
|
+
import { openai } from '@ai-sdk/openai'
|
|
103
|
+
import { groq } from '@ai-sdk/groq'
|
|
104
|
+
|
|
105
|
+
// Use AI SDK transcription models
|
|
106
|
+
const voice = new CompositeVoice({
|
|
107
|
+
input: openai.transcription('whisper-1'), // AI SDK model
|
|
108
|
+
output: new PlayAIVoice(), // Mastra provider
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// Works the same way
|
|
112
|
+
const transcript = await voice.listen(audioStream)
|
|
113
|
+
|
|
114
|
+
// Provider-specific options can be passed through
|
|
115
|
+
const transcriptWithOptions = await voice.listen(audioStream, {
|
|
116
|
+
providerOptions: {
|
|
117
|
+
openai: {
|
|
118
|
+
language: 'en',
|
|
119
|
+
prompt: 'This is about AI',
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
})
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
See the [CompositeVoice reference](https://mastra.ai/reference/voice/composite-voice) for more details on AI SDK integration.
|
|
126
|
+
|
|
127
|
+
## Realtime Voice Providers
|
|
128
|
+
|
|
129
|
+
When using realtime voice providers like `OpenAIRealtimeVoice`, the `listen()` method behaves differently:
|
|
130
|
+
|
|
131
|
+
- Instead of returning transcribed text, it emits 'writing' events with the transcribed text
|
|
132
|
+
- You need to register an event listener to receive the transcription
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
|
|
136
|
+
import { getMicrophoneStream } from '@mastra/node-audio'
|
|
137
|
+
|
|
138
|
+
const voice = new OpenAIRealtimeVoice()
|
|
139
|
+
await voice.connect()
|
|
140
|
+
|
|
141
|
+
// Register event listener for transcription
|
|
142
|
+
voice.on('writing', ({ text, role }) => {
|
|
143
|
+
console.log(`${role}: ${text}`)
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
// This will emit 'writing' events instead of returning text
|
|
147
|
+
const microphoneStream = getMicrophoneStream()
|
|
148
|
+
await voice.listen(microphoneStream)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Notes
|
|
152
|
+
|
|
153
|
+
- Not all voice providers support speech-to-text functionality (e.g., PlayAI, Speechify)
|
|
154
|
+
- The behavior of `listen()` may vary slightly between providers, but all implementations follow the same basic interface
|
|
155
|
+
- When using a realtime voice provider, the method might not return text directly but instead emit a 'writing' event
|
|
156
|
+
- The audio format supported depends on the provider. Common formats include MP3, WAV, and M4A
|
|
157
|
+
- Some providers support streaming transcription, where text is returned as it's transcribed
|
|
158
|
+
- For best performance, consider closing or ending the audio stream when you're done with it
|
|
159
|
+
|
|
160
|
+
## Related Methods
|
|
161
|
+
|
|
162
|
+
- [voice.speak()](https://mastra.ai/reference/voice/voice.speak) - Converts text to speech
|
|
163
|
+
- [voice.send()](https://mastra.ai/reference/voice/voice.send) - Sends audio data to the voice provider in real-time
|
|
164
|
+
- [voice.on()](https://mastra.ai/reference/voice/voice.on) - Registers an event listener for voice events
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# voice.off()
|
|
2
|
+
|
|
3
|
+
The `off()` method removes event listeners previously registered with the `on()` method. This is particularly useful for cleaning up resources and preventing memory leaks in long-running applications with real-time voice capabilities.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { OpenAIRealtimeVoice } from '@mastra/voice-openai-realtime'
|
|
9
|
+
import chalk from 'chalk'
|
|
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
|
+
// Connect to the real-time service
|
|
20
|
+
await voice.connect()
|
|
21
|
+
|
|
22
|
+
// Define the callback function
|
|
23
|
+
const writingCallback = ({ text, role }) => {
|
|
24
|
+
if (role === 'user') {
|
|
25
|
+
process.stdout.write(chalk.green(text))
|
|
26
|
+
} else {
|
|
27
|
+
process.stdout.write(chalk.blue(text))
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Register event listener
|
|
32
|
+
voice.on('writing', writingCallback)
|
|
33
|
+
|
|
34
|
+
// Later, when you want to remove the listener
|
|
35
|
+
voice.off('writing', writingCallback)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Parameters
|
|
39
|
+
|
|
40
|
+
**event:** (`string`): Name of the event to stop listening for (e.g., 'speaking', 'writing', 'error')
|
|
41
|
+
|
|
42
|
+
**callback:** (`function`): The same callback function that was passed to on()
|
|
43
|
+
|
|
44
|
+
## Return Value
|
|
45
|
+
|
|
46
|
+
This method does not return a value.
|
|
47
|
+
|
|
48
|
+
## Notes
|
|
49
|
+
|
|
50
|
+
- The callback passed to `off()` must be the same function reference that was passed to `on()`
|
|
51
|
+
- If the callback is not found, the method will have no effect
|
|
52
|
+
- This method is primarily used with real-time voice providers that support event-based communication
|
|
53
|
+
- If called on a voice provider that doesn't support events, it will log a warning and do nothing
|
|
54
|
+
- Removing event listeners is important for preventing memory leaks in long-running applications
|