@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,228 @@
|
|
|
1
|
+
# Google
|
|
2
|
+
|
|
3
|
+
The Google Voice implementation in Mastra provides both text-to-speech (TTS) and speech-to-text (STT) capabilities using Google Cloud services. It supports multiple voices, languages, advanced audio configuration options, and both standard API key authentication and Vertex AI mode for enterprise deployments.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { GoogleVoice } from '@mastra/voice-google'
|
|
9
|
+
|
|
10
|
+
// Initialize with default configuration (uses GOOGLE_API_KEY environment variable)
|
|
11
|
+
const voice = new GoogleVoice()
|
|
12
|
+
|
|
13
|
+
// Text-to-Speech
|
|
14
|
+
const audioStream = await voice.speak('Hello, world!', {
|
|
15
|
+
languageCode: 'en-US',
|
|
16
|
+
audioConfig: {
|
|
17
|
+
audioEncoding: 'LINEAR16',
|
|
18
|
+
},
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
// Speech-to-Text
|
|
22
|
+
const transcript = await voice.listen(audioStream, {
|
|
23
|
+
config: {
|
|
24
|
+
encoding: 'LINEAR16',
|
|
25
|
+
languageCode: 'en-US',
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
// Get available voices for a specific language
|
|
30
|
+
const voices = await voice.getSpeakers({ languageCode: 'en-US' })
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Constructor Parameters
|
|
34
|
+
|
|
35
|
+
**speechModel?:** (`GoogleModelConfig`): Configuration for text-to-speech functionality (Default: `{ apiKey: process.env.GOOGLE_API_KEY }`)
|
|
36
|
+
|
|
37
|
+
**listeningModel?:** (`GoogleModelConfig`): Configuration for speech-to-text functionality (Default: `{ apiKey: process.env.GOOGLE_API_KEY }`)
|
|
38
|
+
|
|
39
|
+
**speaker?:** (`string`): Default voice ID to use for text-to-speech (Default: `'en-US-Casual-K'`)
|
|
40
|
+
|
|
41
|
+
**vertexAI?:** (`boolean`): Enable Vertex AI mode for enterprise deployments. Uses project-based authentication instead of API keys. Requires 'project' to be set. (Default: `false`)
|
|
42
|
+
|
|
43
|
+
**project?:** (`string`): Google Cloud project ID (required when vertexAI is true). Falls back to GOOGLE\_CLOUD\_PROJECT environment variable.
|
|
44
|
+
|
|
45
|
+
**location?:** (`string`): Google Cloud region for Vertex AI. Falls back to GOOGLE\_CLOUD\_LOCATION environment variable. (Default: `'us-central1'`)
|
|
46
|
+
|
|
47
|
+
### GoogleModelConfig
|
|
48
|
+
|
|
49
|
+
**apiKey?:** (`string`): Google Cloud API key. Falls back to GOOGLE\_API\_KEY environment variable. Not used when vertexAI is true.
|
|
50
|
+
|
|
51
|
+
**keyFilename?:** (`string`): Path to service account JSON key file. Falls back to GOOGLE\_APPLICATION\_CREDENTIALS environment variable.
|
|
52
|
+
|
|
53
|
+
**credentials?:** (`object`): In-memory service account credentials object with client\_email and private\_key properties.
|
|
54
|
+
|
|
55
|
+
## Methods
|
|
56
|
+
|
|
57
|
+
### speak()
|
|
58
|
+
|
|
59
|
+
Converts text to speech using Google Cloud Text-to-Speech service.
|
|
60
|
+
|
|
61
|
+
**input:** (`string | NodeJS.ReadableStream`): Text to convert to speech. If a stream is provided, it will be converted to text first.
|
|
62
|
+
|
|
63
|
+
**options?:** (`object`): Speech synthesis options
|
|
64
|
+
|
|
65
|
+
**options.speaker?:** (`string`): Voice ID to use for this request
|
|
66
|
+
|
|
67
|
+
**options.languageCode?:** (`string`): Language code for the voice (e.g., 'en-US'). Defaults to the language code from the speaker ID or 'en-US'
|
|
68
|
+
|
|
69
|
+
**options.audioConfig?:** (`ISynthesizeSpeechRequest['audioConfig']`): Audio configuration options from Google Cloud Text-to-Speech API (Default: `{ audioEncoding: 'LINEAR16' }`)
|
|
70
|
+
|
|
71
|
+
Returns: `Promise<NodeJS.ReadableStream>`
|
|
72
|
+
|
|
73
|
+
### listen()
|
|
74
|
+
|
|
75
|
+
Converts speech to text using Google Cloud Speech-to-Text service.
|
|
76
|
+
|
|
77
|
+
**audioStream:** (`NodeJS.ReadableStream`): Audio stream to transcribe
|
|
78
|
+
|
|
79
|
+
**options?:** (`object`): Recognition options
|
|
80
|
+
|
|
81
|
+
**options.stream?:** (`boolean`): Whether to use streaming recognition
|
|
82
|
+
|
|
83
|
+
**options.config?:** (`IRecognitionConfig`): Recognition configuration from Google Cloud Speech-to-Text API (Default: `{ encoding: 'LINEAR16', languageCode: 'en-US' }`)
|
|
84
|
+
|
|
85
|
+
Returns: `Promise<string>`
|
|
86
|
+
|
|
87
|
+
### getSpeakers()
|
|
88
|
+
|
|
89
|
+
Returns an array of available voice options, where each node contains:
|
|
90
|
+
|
|
91
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
92
|
+
|
|
93
|
+
**languageCodes:** (`string[]`): List of language codes supported by this voice
|
|
94
|
+
|
|
95
|
+
### isUsingVertexAI()
|
|
96
|
+
|
|
97
|
+
Checks if Vertex AI mode is enabled.
|
|
98
|
+
|
|
99
|
+
Returns: `boolean` - `true` if using Vertex AI, `false` otherwise
|
|
100
|
+
|
|
101
|
+
### getProject()
|
|
102
|
+
|
|
103
|
+
Gets the configured Google Cloud project ID.
|
|
104
|
+
|
|
105
|
+
Returns: `string | undefined` - The project ID or `undefined` if not set
|
|
106
|
+
|
|
107
|
+
### getLocation()
|
|
108
|
+
|
|
109
|
+
Gets the configured Google Cloud location/region.
|
|
110
|
+
|
|
111
|
+
Returns: `string` - The location (default: `'us-central1'`)
|
|
112
|
+
|
|
113
|
+
## Authentication
|
|
114
|
+
|
|
115
|
+
The Google Voice provider supports two authentication methods:
|
|
116
|
+
|
|
117
|
+
### Standard Mode (API Key)
|
|
118
|
+
|
|
119
|
+
Uses a Google Cloud API key for authentication. Suitable for development and simple use cases.
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
// Using environment variable (GOOGLE_API_KEY)
|
|
123
|
+
const voice = new GoogleVoice()
|
|
124
|
+
|
|
125
|
+
// Using explicit API key
|
|
126
|
+
const voice = new GoogleVoice({
|
|
127
|
+
speechModel: { apiKey: 'your-api-key' },
|
|
128
|
+
listeningModel: { apiKey: 'your-api-key' },
|
|
129
|
+
speaker: 'en-US-Casual-K',
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Vertex AI Mode (Service Account)
|
|
134
|
+
|
|
135
|
+
Uses Google Cloud project-based authentication with service accounts. Recommended for production and enterprise deployments.
|
|
136
|
+
|
|
137
|
+
**Benefits:**
|
|
138
|
+
|
|
139
|
+
- Better security (no API keys in code)
|
|
140
|
+
- IAM-based access control
|
|
141
|
+
- Project-level billing and quotas
|
|
142
|
+
- Audit logging
|
|
143
|
+
- Enterprise features
|
|
144
|
+
|
|
145
|
+
**Configuration Options:**
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
// Using Application Default Credentials (ADC)
|
|
149
|
+
// Set GOOGLE_APPLICATION_CREDENTIALS and GOOGLE_CLOUD_PROJECT env vars
|
|
150
|
+
const voice = new GoogleVoice({
|
|
151
|
+
vertexAI: true,
|
|
152
|
+
project: 'your-gcp-project',
|
|
153
|
+
location: 'us-central1', // Optional, defaults to 'us-central1'
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
// Using service account key file
|
|
157
|
+
const voice = new GoogleVoice({
|
|
158
|
+
vertexAI: true,
|
|
159
|
+
project: 'your-gcp-project',
|
|
160
|
+
speechModel: {
|
|
161
|
+
keyFilename: '/path/to/service-account.json',
|
|
162
|
+
},
|
|
163
|
+
listeningModel: {
|
|
164
|
+
keyFilename: '/path/to/service-account.json',
|
|
165
|
+
},
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
// Using in-memory credentials
|
|
169
|
+
const voice = new GoogleVoice({
|
|
170
|
+
vertexAI: true,
|
|
171
|
+
project: 'your-gcp-project',
|
|
172
|
+
speechModel: {
|
|
173
|
+
credentials: {
|
|
174
|
+
client_email: 'service-account@project.iam.gserviceaccount.com',
|
|
175
|
+
private_key: '-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----',
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
})
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
#### Required Permissions
|
|
182
|
+
|
|
183
|
+
#### IAM Roles
|
|
184
|
+
|
|
185
|
+
For Text-to-Speech:
|
|
186
|
+
|
|
187
|
+
- `roles/texttospeech.admin` - Text-to-Speech Admin (full access)
|
|
188
|
+
- `roles/texttospeech.editor` - Text-to-Speech Editor (create and manage)
|
|
189
|
+
- `roles/texttospeech.viewer` - Text-to-Speech Viewer (read-only)
|
|
190
|
+
|
|
191
|
+
For Speech-to-Text:
|
|
192
|
+
|
|
193
|
+
- `roles/speech.client` - Speech-to-Text Client
|
|
194
|
+
|
|
195
|
+
#### OAuth Scopes
|
|
196
|
+
|
|
197
|
+
For synchronous Text-to-Speech synthesis:
|
|
198
|
+
|
|
199
|
+
- `https://www.googleapis.com/auth/cloud-platform` - Full access to Google Cloud Platform services
|
|
200
|
+
|
|
201
|
+
For long-audio Text-to-Speech operations:
|
|
202
|
+
|
|
203
|
+
- `locations.longAudioSynthesize` - Create long-audio synthesis operations
|
|
204
|
+
- `operations.get` - Get operation status
|
|
205
|
+
- `operations.list` - List operations
|
|
206
|
+
|
|
207
|
+
## Important Notes
|
|
208
|
+
|
|
209
|
+
1. **Authentication**: Either a Google Cloud API key (standard mode) or service account credentials (Vertex AI mode) is required.
|
|
210
|
+
|
|
211
|
+
2. **Environment Variables**:
|
|
212
|
+
|
|
213
|
+
- `GOOGLE_API_KEY` - API key for standard mode
|
|
214
|
+
- `GOOGLE_CLOUD_PROJECT` - Project ID for Vertex AI mode
|
|
215
|
+
- `GOOGLE_CLOUD_LOCATION` - Location for Vertex AI mode (defaults to 'us-central1')
|
|
216
|
+
- `GOOGLE_APPLICATION_CREDENTIALS` - Path to service account key file
|
|
217
|
+
|
|
218
|
+
3. The default voice is set to `'en-US-Casual-K'`.
|
|
219
|
+
|
|
220
|
+
4. Both text-to-speech and speech-to-text services use LINEAR16 as the default audio encoding.
|
|
221
|
+
|
|
222
|
+
5. The `speak()` method supports advanced audio configuration through the Google Cloud Text-to-Speech API.
|
|
223
|
+
|
|
224
|
+
6. The `listen()` method supports various recognition configurations through the Google Cloud Speech-to-Text API.
|
|
225
|
+
|
|
226
|
+
7. Available voices can be filtered by language code using the `getSpeakers()` method.
|
|
227
|
+
|
|
228
|
+
8. Vertex AI mode provides enterprise features including IAM control, audit logs, and project-level billing.
|
|
@@ -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,122 @@
|
|
|
1
|
+
# Murf
|
|
2
|
+
|
|
3
|
+
The Murf voice implementation in Mastra provides text-to-speech (TTS) capabilities using Murf's AI voice service. It supports multiple voices across different languages.
|
|
4
|
+
|
|
5
|
+
## Usage Example
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { MurfVoice } from '@mastra/voice-murf'
|
|
9
|
+
|
|
10
|
+
// Initialize with default configuration (uses MURF_API_KEY environment variable)
|
|
11
|
+
const voice = new MurfVoice()
|
|
12
|
+
|
|
13
|
+
// Initialize with custom configuration
|
|
14
|
+
const voice = new MurfVoice({
|
|
15
|
+
speechModel: {
|
|
16
|
+
name: 'GEN2',
|
|
17
|
+
apiKey: 'your-api-key',
|
|
18
|
+
properties: {
|
|
19
|
+
format: 'MP3',
|
|
20
|
+
rate: 1.0,
|
|
21
|
+
pitch: 1.0,
|
|
22
|
+
sampleRate: 48000,
|
|
23
|
+
channelType: 'STEREO',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
speaker: 'en-US-cooper',
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
// Text-to-Speech with default settings
|
|
30
|
+
const audioStream = await voice.speak('Hello, world!')
|
|
31
|
+
|
|
32
|
+
// Text-to-Speech with custom properties
|
|
33
|
+
const audioStream = await voice.speak('Hello, world!', {
|
|
34
|
+
speaker: 'en-UK-hazel',
|
|
35
|
+
properties: {
|
|
36
|
+
format: 'WAV',
|
|
37
|
+
rate: 1.2,
|
|
38
|
+
style: 'casual',
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
// Get available voices
|
|
43
|
+
const voices = await voice.getSpeakers()
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Constructor Parameters
|
|
47
|
+
|
|
48
|
+
**speechModel?:** (`MurfConfig`): Configuration for text-to-speech functionality (Default: `{ name: 'GEN2' }`)
|
|
49
|
+
|
|
50
|
+
**speaker?:** (`string`): Default voice ID to use for text-to-speech (Default: `'en-UK-hazel'`)
|
|
51
|
+
|
|
52
|
+
### MurfConfig
|
|
53
|
+
|
|
54
|
+
**name:** (`'GEN1' | 'GEN2'`): The Murf model generation to use (Default: `'GEN2'`)
|
|
55
|
+
|
|
56
|
+
**apiKey?:** (`string`): Murf API key. Falls back to MURF\_API\_KEY environment variable
|
|
57
|
+
|
|
58
|
+
**properties?:** (`object`): Default properties for all speech synthesis requests
|
|
59
|
+
|
|
60
|
+
### Speech Properties
|
|
61
|
+
|
|
62
|
+
**style?:** (`string`): Speaking style for the voice
|
|
63
|
+
|
|
64
|
+
**rate?:** (`number`): Speech rate multiplier
|
|
65
|
+
|
|
66
|
+
**pitch?:** (`number`): Voice pitch adjustment
|
|
67
|
+
|
|
68
|
+
**sampleRate?:** (`8000 | 24000 | 44100 | 48000`): Audio sample rate in Hz
|
|
69
|
+
|
|
70
|
+
**format?:** (`'MP3' | 'WAV' | 'FLAC' | 'ALAW' | 'ULAW'`): Output audio format
|
|
71
|
+
|
|
72
|
+
**channelType?:** (`'STEREO' | 'MONO'`): Audio channel configuration
|
|
73
|
+
|
|
74
|
+
**pronunciationDictionary?:** (`Record<string, string>`): Custom pronunciation mappings
|
|
75
|
+
|
|
76
|
+
**encodeAsBase64?:** (`boolean`): Whether to encode the audio as base64
|
|
77
|
+
|
|
78
|
+
**variation?:** (`number`): Voice variation parameter
|
|
79
|
+
|
|
80
|
+
**audioDuration?:** (`number`): Target audio duration in seconds
|
|
81
|
+
|
|
82
|
+
**multiNativeLocale?:** (`string`): Locale for multilingual support
|
|
83
|
+
|
|
84
|
+
## Methods
|
|
85
|
+
|
|
86
|
+
### speak()
|
|
87
|
+
|
|
88
|
+
Converts text to speech using Murf's API.
|
|
89
|
+
|
|
90
|
+
**input:** (`string | NodeJS.ReadableStream`): Text to convert to speech. If a stream is provided, it will be converted to text first.
|
|
91
|
+
|
|
92
|
+
**options?:** (`object`): Speech synthesis options
|
|
93
|
+
|
|
94
|
+
**options.speaker?:** (`string`): Override the default speaker for this request
|
|
95
|
+
|
|
96
|
+
**options.properties?:** (`object`): Override default speech properties for this request
|
|
97
|
+
|
|
98
|
+
Returns: `Promise<NodeJS.ReadableStream>`
|
|
99
|
+
|
|
100
|
+
### getSpeakers()
|
|
101
|
+
|
|
102
|
+
Returns an array of available voice options, where each node contains:
|
|
103
|
+
|
|
104
|
+
**voiceId:** (`string`): Unique identifier for the voice
|
|
105
|
+
|
|
106
|
+
**name:** (`string`): Display name of the voice
|
|
107
|
+
|
|
108
|
+
**language:** (`string`): Language code for the voice
|
|
109
|
+
|
|
110
|
+
**gender:** (`string`): Gender of the voice
|
|
111
|
+
|
|
112
|
+
### listen()
|
|
113
|
+
|
|
114
|
+
This method is not supported by Murf and will throw an error. Murf does not provide speech-to-text functionality.
|
|
115
|
+
|
|
116
|
+
## Important Notes
|
|
117
|
+
|
|
118
|
+
1. A Murf API key is required. Set it via the `MURF_API_KEY` environment variable or pass it in the constructor.
|
|
119
|
+
2. The service uses GEN2 as the default model version.
|
|
120
|
+
3. Speech properties can be set at the constructor level and overridden per request.
|
|
121
|
+
4. The service supports extensive audio customization through properties like format, sample rate, and channel type.
|
|
122
|
+
5. Speech-to-text functionality is not supported.
|