@mastra/mcp-docs-server 1.0.0-beta.0 → 1.0.0-beta.10
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/organized/changelogs/%40internal%2Fchangeset-cli.md +1 -15
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +1 -7
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +201 -1
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +1 -55
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +250 -50
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +26 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +89 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +396 -196
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +200 -0
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +61 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flance.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +251 -51
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Frag.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Freact.md +128 -1
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +18 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +251 -51
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +92 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +67 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +201 -1
- package/.docs/organized/changelogs/create-mastra.md +201 -1
- package/.docs/organized/changelogs/mastra.md +201 -1
- package/.docs/organized/code-examples/agui.md +1 -0
- package/.docs/organized/code-examples/ai-elements.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -2
- package/.docs/organized/code-examples/assistant-ui.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +1 -1
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +2 -2
- package/.docs/organized/code-examples/client-side-tools.md +1 -1
- package/.docs/organized/code-examples/crypto-chatbot.md +2 -2
- package/.docs/organized/code-examples/fireworks-r1.md +1 -1
- package/.docs/organized/code-examples/heads-up-game.md +1 -1
- package/.docs/organized/code-examples/mcp-configuration.md +0 -3
- package/.docs/organized/code-examples/mcp-server-adapters.md +720 -0
- package/.docs/organized/code-examples/memory-per-resource-example.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +1 -1
- package/.docs/organized/code-examples/processors-with-ai-sdk.md +14 -0
- package/.docs/organized/code-examples/quick-start.md +2 -2
- package/.docs/organized/code-examples/server-app-access.md +342 -0
- package/.docs/organized/code-examples/server-express-adapter.md +87 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +85 -0
- package/.docs/organized/code-examples/stock-price-tool.md +1 -21
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +1 -1
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-memory.md +1 -1
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +56 -10
- package/.docs/raw/agents/agent-approval.mdx +189 -0
- package/.docs/raw/agents/agent-memory.mdx +2 -2
- package/.docs/raw/agents/guardrails.mdx +27 -24
- package/.docs/raw/agents/networks.mdx +3 -3
- package/.docs/raw/agents/overview.mdx +19 -168
- package/.docs/raw/agents/processors.mdx +279 -0
- package/.docs/raw/agents/structured-output.mdx +224 -0
- package/.docs/raw/agents/using-tools.mdx +14 -14
- package/.docs/raw/auth/auth0.mdx +2 -2
- package/.docs/raw/auth/clerk.mdx +2 -2
- package/.docs/raw/auth/firebase.mdx +2 -2
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +2 -2
- package/.docs/raw/auth/supabase.mdx +2 -2
- package/.docs/raw/auth/workos.mdx +2 -2
- package/.docs/raw/community/contributing-templates.mdx +1 -1
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/01-first-agent/03-verifying-installation.md +1 -1
- package/.docs/raw/course/01-first-agent/05-running-playground.md +5 -5
- package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +3 -3
- package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +3 -3
- package/.docs/raw/course/01-first-agent/17-testing-memory.md +2 -2
- package/.docs/raw/course/02-agent-tools-mcp/02-installing-mcp.md +1 -1
- package/.docs/raw/course/03-agent-memory/03-installing-memory.md +1 -1
- package/.docs/raw/course/04-workflows/07-using-playground.md +1 -1
- package/.docs/raw/deployment/{server-deployment.mdx → building-mastra.mdx} +4 -4
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +4 -4
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +4 -4
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/cloudflare-deployer.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/index.mdx +26 -29
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/netlify-deployer.mdx +46 -15
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/vercel-deployer.mdx +2 -2
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/dashboard.mdx +3 -3
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +53 -0
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/overview.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/setting-up.mdx +4 -4
- package/.docs/raw/deployment/monorepo.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +7 -7
- package/.docs/raw/deployment/web-framework.mdx +6 -6
- package/.docs/raw/evals/{off-the-shelf-scorers.mdx → built-in-scorers.mdx} +17 -15
- package/.docs/raw/evals/custom-scorers.mdx +4 -6
- package/.docs/raw/evals/overview.mdx +6 -7
- package/.docs/raw/evals/running-in-ci.mdx +2 -4
- package/.docs/raw/getting-started/{installation.mdx → manual-install.mdx} +15 -89
- package/.docs/raw/getting-started/mcp-docs-server.mdx +6 -6
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +72 -0
- package/.docs/raw/getting-started/studio.mdx +8 -6
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +147 -0
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +627 -0
- package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/assistant-ui.mdx +72 -20
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +206 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/astro.mdx +28 -30
- package/.docs/raw/{frameworks/servers → guides/getting-started}/express.mdx +4 -5
- package/.docs/raw/guides/getting-started/next-js.mdx +276 -0
- package/.docs/raw/guides/getting-started/quickstart.mdx +97 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/sveltekit.mdx +28 -30
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/vite-react.mdx +12 -12
- package/.docs/raw/guides/guide/ai-recruiter.mdx +2 -3
- package/.docs/raw/guides/guide/chef-michel.mdx +2 -3
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +3 -3
- package/.docs/raw/guides/guide/research-assistant.mdx +8 -18
- package/.docs/raw/guides/guide/stock-agent.mdx +4 -6
- package/.docs/raw/guides/guide/web-search.mdx +12 -10
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +421 -0
- package/.docs/raw/guides/index.mdx +3 -35
- package/.docs/raw/guides/migrations/agentnetwork.mdx +4 -4
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +119 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +56 -6
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +42 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +31 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +29 -5
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +3 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +28 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +59 -37
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +80 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +70 -5
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +13 -13
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +25 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/voice.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +175 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +2 -2
- package/.docs/raw/index.mdx +4 -4
- package/.docs/raw/mcp/overview.mdx +358 -0
- package/.docs/raw/mcp/publishing-mcp-server.mdx +139 -0
- package/.docs/raw/memory/conversation-history.mdx +1 -1
- package/.docs/raw/memory/memory-processors.mdx +265 -80
- package/.docs/raw/memory/overview.mdx +3 -3
- package/.docs/raw/memory/semantic-recall.mdx +10 -10
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +5 -10
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +150 -0
- package/.docs/raw/memory/storage/memory-with-pg.mdx +5 -10
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +5 -10
- package/.docs/raw/memory/threads-and-resources.mdx +4 -4
- package/.docs/raw/memory/working-memory.mdx +16 -8
- package/.docs/raw/{logging.mdx → observability/logging.mdx} +8 -8
- package/.docs/raw/observability/overview.mdx +5 -6
- package/.docs/raw/observability/tracing/bridges/otel.mdx +200 -0
- package/.docs/raw/observability/tracing/exporters/arize.mdx +39 -3
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +22 -3
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +4 -4
- package/.docs/raw/observability/tracing/exporters/default.mdx +6 -6
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +86 -3
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +15 -3
- package/.docs/raw/observability/tracing/exporters/otel.mdx +128 -30
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +127 -0
- package/.docs/raw/observability/tracing/overview.mdx +100 -29
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +2 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +16 -17
- package/.docs/raw/rag/overview.mdx +5 -4
- package/.docs/raw/rag/retrieval.mdx +44 -39
- package/.docs/raw/rag/vector-databases.mdx +94 -3
- package/.docs/raw/reference/agents/agent.mdx +10 -14
- package/.docs/raw/reference/agents/generate.mdx +67 -99
- package/.docs/raw/reference/agents/generateLegacy.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +2 -2
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/getTools.mdx +69 -0
- package/.docs/raw/reference/agents/getVoice.mdx +1 -1
- package/.docs/raw/reference/agents/listAgents.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +33 -72
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +117 -0
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +64 -0
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +116 -0
- package/.docs/raw/reference/ai-sdk/network-route.mdx +99 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +289 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +119 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +110 -0
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/create-mastra.mdx +11 -11
- package/.docs/raw/reference/cli/mastra.mdx +25 -12
- package/.docs/raw/reference/client-js/agents.mdx +252 -68
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +4 -4
- package/.docs/raw/reference/client-js/memory.mdx +48 -2
- package/.docs/raw/reference/client-js/observability.mdx +1 -1
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +93 -64
- package/.docs/raw/reference/core/addGateway.mdx +59 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getGateway.mdx +59 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +62 -0
- package/.docs/raw/reference/core/getLogger.mdx +3 -3
- package/.docs/raw/reference/core/getMCPServer.mdx +4 -4
- package/.docs/raw/reference/core/getMCPServerById.mdx +5 -5
- package/.docs/raw/reference/core/getMemory.mdx +73 -0
- package/.docs/raw/reference/core/getScorer.mdx +1 -1
- package/.docs/raw/reference/core/getScorerById.mdx +1 -1
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getStoredAgentById.mdx +183 -0
- package/.docs/raw/reference/core/getTelemetry.mdx +3 -3
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listGateways.mdx +53 -0
- package/.docs/raw/reference/core/listLogs.mdx +3 -3
- package/.docs/raw/reference/core/listLogsByRunId.mdx +3 -3
- package/.docs/raw/reference/core/listMCPServers.mdx +5 -5
- package/.docs/raw/reference/core/listMemory.mdx +70 -0
- package/.docs/raw/reference/core/listScorers.mdx +1 -1
- package/.docs/raw/reference/core/listStoredAgents.mdx +151 -0
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/mastra-class.mdx +17 -1
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +227 -0
- package/.docs/raw/reference/core/setLogger.mdx +3 -3
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +3 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -1
- package/.docs/raw/reference/deployer/deployer.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +2 -3
- package/.docs/raw/reference/deployer/vercel.mdx +1 -1
- package/.docs/raw/reference/evals/answer-relevancy.mdx +29 -99
- package/.docs/raw/reference/evals/answer-similarity.mdx +13 -259
- package/.docs/raw/reference/evals/bias.mdx +30 -88
- package/.docs/raw/reference/evals/completeness.mdx +32 -91
- package/.docs/raw/reference/evals/content-similarity.mdx +29 -89
- package/.docs/raw/reference/evals/context-precision.mdx +29 -131
- package/.docs/raw/reference/evals/context-relevance.mdx +12 -12
- package/.docs/raw/reference/evals/create-scorer.mdx +59 -50
- package/.docs/raw/reference/evals/faithfulness.mdx +29 -102
- package/.docs/raw/reference/evals/hallucination.mdx +29 -104
- package/.docs/raw/reference/evals/keyword-coverage.mdx +29 -108
- package/.docs/raw/reference/evals/mastra-scorer.mdx +3 -1
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +12 -12
- package/.docs/raw/reference/evals/prompt-alignment.mdx +16 -16
- package/.docs/raw/reference/evals/run-evals.mdx +1 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +362 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +28 -101
- package/.docs/raw/reference/evals/tone-consistency.mdx +26 -99
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +8 -8
- package/.docs/raw/reference/evals/toxicity.mdx +30 -93
- package/.docs/raw/reference/index.mdx +1 -0
- package/.docs/raw/reference/logging/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +1 -1
- package/.docs/raw/reference/memory/deleteMessages.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadById.mdx +1 -1
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +1 -1
- package/.docs/raw/reference/memory/memory-class.mdx +6 -8
- package/.docs/raw/reference/memory/query.mdx +1 -1
- package/.docs/raw/reference/memory/recall.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +177 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +12 -16
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +31 -2
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +44 -1
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +18 -2
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +34 -44
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +132 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +8 -12
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +36 -11
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/spans.mdx +7 -11
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +10 -4
- package/.docs/raw/reference/processors/language-detector.mdx +19 -6
- package/.docs/raw/reference/processors/message-history-processor.mdx +131 -0
- package/.docs/raw/reference/processors/moderation-processor.mdx +21 -8
- package/.docs/raw/reference/processors/pii-detector.mdx +21 -8
- package/.docs/raw/reference/processors/processor-interface.mdx +502 -0
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +19 -6
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +197 -0
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +12 -7
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +11 -5
- package/.docs/raw/reference/processors/tool-call-filter.mdx +125 -0
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +10 -4
- package/.docs/raw/reference/processors/working-memory-processor.mdx +221 -0
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +6 -6
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +1 -1
- package/.docs/raw/reference/rag/rerank.mdx +2 -3
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +1 -2
- package/.docs/raw/reference/server/create-route.mdx +328 -0
- package/.docs/raw/reference/server/express-adapter.mdx +260 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +242 -0
- package/.docs/raw/reference/server/mastra-server.mdx +345 -0
- package/.docs/raw/reference/server/routes.mdx +250 -0
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +39 -2
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +164 -0
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +35 -2
- package/.docs/raw/reference/storage/libsql.mdx +39 -2
- package/.docs/raw/reference/storage/mongodb.mdx +41 -2
- package/.docs/raw/reference/storage/mssql.mdx +39 -2
- package/.docs/raw/reference/storage/postgresql.mdx +39 -2
- package/.docs/raw/reference/storage/upstash.mdx +2 -2
- package/.docs/raw/reference/streaming/ChunkType.mdx +2 -2
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +68 -95
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +8 -10
- package/.docs/raw/reference/streaming/workflows/{resumeStreamVNext.mdx → resumeStream.mdx} +51 -11
- package/.docs/raw/reference/streaming/workflows/stream.mdx +84 -25
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +170 -0
- package/.docs/raw/reference/templates/overview.mdx +3 -6
- package/.docs/raw/reference/tools/client.mdx +2 -3
- package/.docs/raw/reference/tools/create-tool.mdx +135 -4
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +1 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +7 -7
- package/.docs/raw/reference/tools/mcp-client.mdx +131 -23
- package/.docs/raw/reference/tools/mcp-server.mdx +56 -8
- package/.docs/raw/reference/tools/vector-query-tool.mdx +16 -17
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +82 -2
- package/.docs/raw/reference/vectors/convex.mdx +429 -0
- package/.docs/raw/reference/vectors/couchbase.mdx +33 -20
- package/.docs/raw/reference/vectors/duckdb.mdx +462 -0
- package/.docs/raw/reference/vectors/elasticsearch.mdx +310 -0
- package/.docs/raw/reference/vectors/lance.mdx +39 -23
- package/.docs/raw/reference/vectors/libsql.mdx +37 -4
- package/.docs/raw/reference/vectors/mongodb.mdx +43 -4
- package/.docs/raw/reference/vectors/opensearch.mdx +38 -17
- package/.docs/raw/reference/vectors/pg.mdx +44 -37
- package/.docs/raw/reference/vectors/pinecone.mdx +70 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +37 -2
- package/.docs/raw/reference/vectors/s3vectors.mdx +2 -2
- package/.docs/raw/reference/vectors/turbopuffer.mdx +75 -1
- package/.docs/raw/reference/vectors/upstash.mdx +1 -1
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +96 -81
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +72 -29
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/google.mdx +160 -21
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -3
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -4
- package/.docs/raw/reference/voice/voice.addTools.mdx +2 -2
- package/.docs/raw/reference/voice/voice.answer.mdx +2 -2
- package/.docs/raw/reference/voice/voice.close.mdx +2 -2
- package/.docs/raw/reference/voice/voice.connect.mdx +2 -2
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +1 -1
- package/.docs/raw/reference/voice/voice.listen.mdx +87 -53
- package/.docs/raw/reference/voice/voice.off.mdx +2 -2
- package/.docs/raw/reference/voice/voice.on.mdx +2 -2
- package/.docs/raw/reference/voice/voice.send.mdx +2 -2
- package/.docs/raw/reference/voice/voice.speak.mdx +76 -41
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +142 -0
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +45 -1
- package/.docs/raw/reference/workflows/run-methods/start.mdx +48 -4
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +310 -0
- package/.docs/raw/reference/workflows/run.mdx +28 -6
- package/.docs/raw/reference/workflows/step.mdx +65 -1
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +21 -2
- package/.docs/raw/server-db/custom-adapters.mdx +386 -0
- package/.docs/raw/server-db/custom-api-routes.mdx +6 -6
- package/.docs/raw/server-db/mastra-client.mdx +7 -8
- package/.docs/raw/server-db/{production-server.mdx → mastra-server.mdx} +16 -8
- package/.docs/raw/server-db/middleware.mdx +31 -31
- package/.docs/raw/server-db/request-context.mdx +3 -4
- package/.docs/raw/server-db/server-adapters.mdx +312 -0
- package/.docs/raw/server-db/storage.mdx +12 -1
- package/.docs/raw/streaming/events.mdx +1 -1
- package/.docs/raw/streaming/overview.mdx +27 -16
- package/.docs/raw/streaming/tool-streaming.mdx +58 -19
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -3
- package/.docs/raw/tools-mcp/mcp-overview.mdx +5 -7
- package/.docs/raw/tools-mcp/overview.mdx +1 -1
- package/.docs/raw/voice/overview.mdx +88 -41
- package/.docs/raw/voice/speech-to-speech.mdx +5 -5
- package/.docs/raw/voice/speech-to-text.mdx +3 -4
- package/.docs/raw/voice/text-to-speech.mdx +3 -4
- package/.docs/raw/workflows/agents-and-tools.mdx +43 -5
- package/.docs/raw/workflows/control-flow.mdx +186 -1
- package/.docs/raw/workflows/error-handling.mdx +5 -4
- package/.docs/raw/workflows/human-in-the-loop.mdx +160 -213
- package/.docs/raw/workflows/inngest-workflow.mdx +2 -2
- package/.docs/raw/workflows/input-data-mapping.mdx +1 -1
- package/.docs/raw/workflows/overview.mdx +67 -47
- package/.docs/raw/workflows/snapshots.mdx +5 -3
- package/.docs/raw/workflows/suspend-and-resume.mdx +121 -204
- package/.docs/raw/workflows/time-travel.mdx +313 -0
- package/.docs/raw/workflows/workflow-state.mdx +190 -0
- package/CHANGELOG.md +88 -0
- package/dist/{chunk-5NJC7NRO.js → chunk-4CM2BQNP.js} +24 -4
- package/dist/prepare-docs/package-changes.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/stdio.js +17 -19
- package/package.json +11 -15
- package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -58
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +0 -688
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -123
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +0 -382
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -179
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -379
- package/.docs/raw/getting-started/templates.mdx +0 -73
- package/.docs/raw/mastra-cloud/observability.mdx +0 -51
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -153
|
@@ -68,7 +68,7 @@ const agent = new Agent({
|
|
|
68
68
|
id: 'forgetful-job-interviewer',
|
|
69
69
|
name: 'Forgetful Job Interviewer',
|
|
70
70
|
instructions:
|
|
71
|
-
"You are a professional job interviewer for a technology company. Conduct insightful interviews by asking relevant questions about skills, experience, and problem-solving abilities. Respond to candidate answers and ask follow-up questions. Keep the interview professional and engaging. Remember details the candidate shares earlier in the conversation. Sometimes you forget things by accident. The system will show you if you forgot. Don't be
|
|
71
|
+
"You are a professional job interviewer for a technology company. Conduct insightful interviews by asking relevant questions about skills, experience, and problem-solving abilities. Respond to candidate answers and ask follow-up questions. Keep the interview professional and engaging. Remember details the candidate shares earlier in the conversation. Sometimes you forget things by accident. The system will show you if you forgot. Don't be embarrassed, you can admit when you forget something, you'll know when you do because there will be a message wrapped in <forgetten> tags. Don't refer to the user by their name, it comes across as too eager",
|
|
72
72
|
model: openai('gpt-4o'),
|
|
73
73
|
memory: new Memory({
|
|
74
74
|
processors: [
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@libsql/client": "^0.15.4",
|
|
31
31
|
"@types/js-yaml": "^4.0.9",
|
|
32
|
-
"@types/node": "
|
|
32
|
+
"@types/node": "22.13.17",
|
|
33
33
|
"@types/react": "^19.1.9",
|
|
34
34
|
"@types/react-dom": "^19.1.7",
|
|
35
35
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
### package.json
|
|
2
|
+
```json
|
|
3
|
+
{
|
|
4
|
+
"name": "examples-processors-with-ai-sdk",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@ai-sdk/openai": "latest",
|
|
7
|
+
"@mastra/ai-sdk": "latest",
|
|
8
|
+
"@mastra/core": "latest",
|
|
9
|
+
"@mastra/libsql": "latest",
|
|
10
|
+
"ai": "latest",
|
|
11
|
+
"zod": "^3.25.76"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
```
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{
|
|
4
4
|
"name": "examples-quick-start",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@types/node": "
|
|
6
|
+
"@types/node": "22.13.17",
|
|
7
7
|
"tsx": "^4.19.3",
|
|
8
8
|
"typescript": "^5.8.3",
|
|
9
9
|
"zod": "^3.25.76"
|
|
@@ -64,7 +64,7 @@ export const catOne = new Agent({
|
|
|
64
64
|
id: 'cat-one',
|
|
65
65
|
name: 'Cat One',
|
|
66
66
|
instructions:
|
|
67
|
-
'You are a feline expert with comprehensive knowledge of all cat species, from domestic breeds to wild big cats. As a lifelong cat specialist, you understand their behavior, biology, social structures, and evolutionary history in great depth. If you are asked for a specie name, do not return a paragraph, a
|
|
67
|
+
'You are a feline expert with comprehensive knowledge of all cat species, from domestic breeds to wild big cats. As a lifelong cat specialist, you understand their behavior, biology, social structures, and evolutionary history in great depth. If you are asked for a specie name, do not return a paragraph, a succinct two or three letter name of the species will suffice.',
|
|
68
68
|
model: openai('gpt-4o'),
|
|
69
69
|
});
|
|
70
70
|
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
### package.json
|
|
2
|
+
```json
|
|
3
|
+
{
|
|
4
|
+
"name": "examples-server-app-access",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@mastra/core": "latest",
|
|
7
|
+
"@mastra/hono": "latest",
|
|
8
|
+
"hono": "^4.10.4",
|
|
9
|
+
"zod": "^3.25.76"
|
|
10
|
+
},
|
|
11
|
+
"devDependencies": {
|
|
12
|
+
"@types/node": "22.13.17",
|
|
13
|
+
"tsx": "^4.19.3",
|
|
14
|
+
"typescript": "^5.8.3"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### demo-cli-batch.ts
|
|
20
|
+
```typescript
|
|
21
|
+
/**
|
|
22
|
+
* Demo: Direct Server App Access
|
|
23
|
+
*
|
|
24
|
+
* This demonstrates how to use mastra.getServerApp() to call routes
|
|
25
|
+
* directly without running an HTTP server.
|
|
26
|
+
*
|
|
27
|
+
* Use case: CLI scripts, batch processing, testing, background jobs
|
|
28
|
+
*
|
|
29
|
+
* NOTE: The base URL (http://internal) is just a placeholder - Hono's app.fetch()
|
|
30
|
+
* processes requests in-memory and only uses the path. The hostname is ignored.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
import { HonoBindings, HonoVariables, MastraServer } from '@mastra/hono';
|
|
34
|
+
import { Hono } from 'hono';
|
|
35
|
+
import type { Hono as HonoType } from 'hono';
|
|
36
|
+
|
|
37
|
+
import { mastra } from './mastra';
|
|
38
|
+
|
|
39
|
+
// Base URL is a placeholder - only the path matters for in-memory routing
|
|
40
|
+
const BASE_URL = 'http://internal';
|
|
41
|
+
|
|
42
|
+
async function main() {
|
|
43
|
+
// Create and initialize server (no port binding)
|
|
44
|
+
const app = new Hono<{ Bindings: HonoBindings; Variables: HonoVariables }>();
|
|
45
|
+
const adapter = new MastraServer({ app, mastra });
|
|
46
|
+
await adapter.init();
|
|
47
|
+
|
|
48
|
+
// Get the server app - works because MastraServer auto-registers with mastra
|
|
49
|
+
const serverApp = mastra.getServerApp<HonoType>();
|
|
50
|
+
if (!serverApp) throw new Error('Server app not initialized');
|
|
51
|
+
|
|
52
|
+
// List tools
|
|
53
|
+
console.log('--- List Tools ---');
|
|
54
|
+
const toolsResponse = await serverApp.fetch(new Request(`${BASE_URL}/api/tools`));
|
|
55
|
+
const tools = (await toolsResponse.json()) as Record<string, unknown>;
|
|
56
|
+
console.log(`Tools: ${Object.keys(tools).join(', ') || '(none registered by key)'}`);
|
|
57
|
+
|
|
58
|
+
// Execute a tool
|
|
59
|
+
console.log('\n--- Execute Tool ---');
|
|
60
|
+
const calcResponse = await serverApp.fetch(
|
|
61
|
+
new Request(`${BASE_URL}/api/tools/calculator/execute`, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { 'Content-Type': 'application/json' },
|
|
64
|
+
body: JSON.stringify({ data: { operation: 'multiply', a: 7, b: 6 } }),
|
|
65
|
+
}),
|
|
66
|
+
);
|
|
67
|
+
console.log(`Result: ${JSON.stringify(await calcResponse.json())}`);
|
|
68
|
+
|
|
69
|
+
// List workflows
|
|
70
|
+
console.log('\n--- List Workflows ---');
|
|
71
|
+
const workflowsResponse = await serverApp.fetch(new Request(`${BASE_URL}/api/workflows`));
|
|
72
|
+
const workflows = (await workflowsResponse.json()) as Record<string, unknown>;
|
|
73
|
+
console.log(`Workflows: ${Object.keys(workflows).join(', ')}`);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
main().catch(console.error);
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### mastra/index.ts
|
|
81
|
+
```typescript
|
|
82
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
83
|
+
|
|
84
|
+
import { calculatorTool, timestampTool } from './tools';
|
|
85
|
+
import { dailyReportWorkflow, paymentProcessorWorkflow, processMessageWorkflow } from './workflows';
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Main Mastra instance configured with tools and workflows
|
|
89
|
+
* for demonstrating server app access patterns.
|
|
90
|
+
*/
|
|
91
|
+
export const mastra = new Mastra({
|
|
92
|
+
tools: {
|
|
93
|
+
calculatorTool,
|
|
94
|
+
timestampTool,
|
|
95
|
+
},
|
|
96
|
+
workflows: {
|
|
97
|
+
processMessageWorkflow,
|
|
98
|
+
dailyReportWorkflow,
|
|
99
|
+
paymentProcessorWorkflow,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### mastra/tools/index.ts
|
|
106
|
+
```typescript
|
|
107
|
+
import { createTool } from '@mastra/core/tools';
|
|
108
|
+
import { z } from 'zod';
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Calculator tool - performs basic arithmetic operations
|
|
112
|
+
*/
|
|
113
|
+
export const calculatorTool = createTool({
|
|
114
|
+
id: 'calculator',
|
|
115
|
+
description: 'Performs basic arithmetic operations',
|
|
116
|
+
inputSchema: z.object({
|
|
117
|
+
operation: z.enum(['add', 'subtract', 'multiply', 'divide']),
|
|
118
|
+
a: z.number(),
|
|
119
|
+
b: z.number(),
|
|
120
|
+
}),
|
|
121
|
+
execute: async ({ operation, a, b }) => {
|
|
122
|
+
if (operation === 'divide' && b === 0) {
|
|
123
|
+
throw new Error('Cannot divide by zero');
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
let result: number;
|
|
127
|
+
switch (operation) {
|
|
128
|
+
case 'add':
|
|
129
|
+
result = a + b;
|
|
130
|
+
break;
|
|
131
|
+
case 'subtract':
|
|
132
|
+
result = a - b;
|
|
133
|
+
break;
|
|
134
|
+
case 'multiply':
|
|
135
|
+
result = a * b;
|
|
136
|
+
break;
|
|
137
|
+
case 'divide':
|
|
138
|
+
result = a / b;
|
|
139
|
+
break;
|
|
140
|
+
default:
|
|
141
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return { result, operation, operands: { a, b } };
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Timestamp tool - returns current timestamp in various formats
|
|
150
|
+
*/
|
|
151
|
+
export const timestampTool = createTool({
|
|
152
|
+
id: 'timestamp',
|
|
153
|
+
description: 'Returns the current timestamp in various formats',
|
|
154
|
+
inputSchema: z.object({
|
|
155
|
+
format: z.enum(['iso', 'unix', 'readable']).default('iso'),
|
|
156
|
+
}),
|
|
157
|
+
execute: async ({ format }) => {
|
|
158
|
+
const now = new Date();
|
|
159
|
+
|
|
160
|
+
let timestamp: string;
|
|
161
|
+
switch (format) {
|
|
162
|
+
case 'unix':
|
|
163
|
+
timestamp = Math.floor(now.getTime() / 1000).toString();
|
|
164
|
+
break;
|
|
165
|
+
case 'readable':
|
|
166
|
+
timestamp = now.toLocaleString();
|
|
167
|
+
break;
|
|
168
|
+
case 'iso':
|
|
169
|
+
default:
|
|
170
|
+
timestamp = now.toISOString();
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return { timestamp, format };
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### mastra/workflows/index.ts
|
|
181
|
+
```typescript
|
|
182
|
+
import { createStep, createWorkflow } from '@mastra/core/workflows';
|
|
183
|
+
import { z } from 'zod';
|
|
184
|
+
|
|
185
|
+
// --- Process Message Workflow ---
|
|
186
|
+
|
|
187
|
+
const validateStep = createStep({
|
|
188
|
+
id: 'validate',
|
|
189
|
+
description: 'Validates the incoming message',
|
|
190
|
+
inputSchema: z.object({
|
|
191
|
+
message: z.string(),
|
|
192
|
+
priority: z.enum(['low', 'medium', 'high']).default('medium'),
|
|
193
|
+
}),
|
|
194
|
+
outputSchema: z.object({
|
|
195
|
+
valid: z.boolean(),
|
|
196
|
+
message: z.string(),
|
|
197
|
+
priority: z.enum(['low', 'medium', 'high']),
|
|
198
|
+
}),
|
|
199
|
+
execute: async ({ inputData }) => {
|
|
200
|
+
const valid = inputData.message.length > 0 && inputData.message.length < 1000;
|
|
201
|
+
return {
|
|
202
|
+
valid,
|
|
203
|
+
message: inputData.message,
|
|
204
|
+
priority: inputData.priority,
|
|
205
|
+
};
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
const processStep = createStep({
|
|
210
|
+
id: 'process',
|
|
211
|
+
description: 'Processes the validated message',
|
|
212
|
+
inputSchema: z.object({
|
|
213
|
+
valid: z.boolean(),
|
|
214
|
+
message: z.string(),
|
|
215
|
+
priority: z.enum(['low', 'medium', 'high']),
|
|
216
|
+
}),
|
|
217
|
+
outputSchema: z.object({
|
|
218
|
+
processed: z.boolean(),
|
|
219
|
+
result: z.string(),
|
|
220
|
+
timestamp: z.string(),
|
|
221
|
+
}),
|
|
222
|
+
execute: async ({ inputData }) => {
|
|
223
|
+
if (!inputData.valid) {
|
|
224
|
+
return {
|
|
225
|
+
processed: false,
|
|
226
|
+
result: 'Invalid message',
|
|
227
|
+
timestamp: new Date().toISOString(),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const result = `Processed [${inputData.priority}]: ${inputData.message.substring(0, 50)}...`;
|
|
232
|
+
|
|
233
|
+
return {
|
|
234
|
+
processed: true,
|
|
235
|
+
result,
|
|
236
|
+
timestamp: new Date().toISOString(),
|
|
237
|
+
};
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
export const processMessageWorkflow = createWorkflow({
|
|
242
|
+
id: 'process-message',
|
|
243
|
+
description: 'Validates and processes a message',
|
|
244
|
+
inputSchema: z.object({
|
|
245
|
+
message: z.string(),
|
|
246
|
+
priority: z.enum(['low', 'medium', 'high']).default('medium'),
|
|
247
|
+
}),
|
|
248
|
+
outputSchema: z.object({
|
|
249
|
+
processed: z.boolean(),
|
|
250
|
+
result: z.string(),
|
|
251
|
+
timestamp: z.string(),
|
|
252
|
+
}),
|
|
253
|
+
})
|
|
254
|
+
.then(validateStep)
|
|
255
|
+
.then(processStep)
|
|
256
|
+
.commit();
|
|
257
|
+
|
|
258
|
+
// --- Daily Report Workflow ---
|
|
259
|
+
|
|
260
|
+
const generateReportStep = createStep({
|
|
261
|
+
id: 'generate-report',
|
|
262
|
+
description: 'Generates a daily report',
|
|
263
|
+
inputSchema: z.object({
|
|
264
|
+
date: z.string(),
|
|
265
|
+
reportType: z.enum(['summary', 'detailed']).default('summary'),
|
|
266
|
+
}),
|
|
267
|
+
outputSchema: z.object({
|
|
268
|
+
reportId: z.string(),
|
|
269
|
+
status: z.string(),
|
|
270
|
+
generatedAt: z.string(),
|
|
271
|
+
}),
|
|
272
|
+
execute: async ({ inputData }) => {
|
|
273
|
+
const reportId = `RPT-${Date.now()}`;
|
|
274
|
+
|
|
275
|
+
return {
|
|
276
|
+
reportId,
|
|
277
|
+
status: `Generated ${inputData.reportType} report for ${inputData.date}`,
|
|
278
|
+
generatedAt: new Date().toISOString(),
|
|
279
|
+
};
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
export const dailyReportWorkflow = createWorkflow({
|
|
284
|
+
id: 'daily-report',
|
|
285
|
+
description: 'Generates daily reports',
|
|
286
|
+
inputSchema: z.object({
|
|
287
|
+
date: z.string(),
|
|
288
|
+
reportType: z.enum(['summary', 'detailed']).default('summary'),
|
|
289
|
+
}),
|
|
290
|
+
outputSchema: z.object({
|
|
291
|
+
reportId: z.string(),
|
|
292
|
+
status: z.string(),
|
|
293
|
+
generatedAt: z.string(),
|
|
294
|
+
}),
|
|
295
|
+
})
|
|
296
|
+
.then(generateReportStep)
|
|
297
|
+
.commit();
|
|
298
|
+
|
|
299
|
+
// --- Payment Processor Workflow ---
|
|
300
|
+
|
|
301
|
+
const processPaymentStep = createStep({
|
|
302
|
+
id: 'process-payment',
|
|
303
|
+
description: 'Processes a payment transaction',
|
|
304
|
+
inputSchema: z.object({
|
|
305
|
+
amount: z.number(),
|
|
306
|
+
currency: z.string(),
|
|
307
|
+
customerId: z.string(),
|
|
308
|
+
}),
|
|
309
|
+
outputSchema: z.object({
|
|
310
|
+
transactionId: z.string(),
|
|
311
|
+
status: z.string(),
|
|
312
|
+
processedAt: z.string(),
|
|
313
|
+
}),
|
|
314
|
+
execute: async ({ inputData }) => {
|
|
315
|
+
const transactionId = `TXN-${Date.now()}`;
|
|
316
|
+
|
|
317
|
+
return {
|
|
318
|
+
transactionId,
|
|
319
|
+
status: `Processed ${inputData.currency} ${inputData.amount} for customer ${inputData.customerId}`,
|
|
320
|
+
processedAt: new Date().toISOString(),
|
|
321
|
+
};
|
|
322
|
+
},
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
export const paymentProcessorWorkflow = createWorkflow({
|
|
326
|
+
id: 'payment-processor',
|
|
327
|
+
description: 'Processes payment transactions',
|
|
328
|
+
inputSchema: z.object({
|
|
329
|
+
amount: z.number(),
|
|
330
|
+
currency: z.string(),
|
|
331
|
+
customerId: z.string(),
|
|
332
|
+
}),
|
|
333
|
+
outputSchema: z.object({
|
|
334
|
+
transactionId: z.string(),
|
|
335
|
+
status: z.string(),
|
|
336
|
+
processedAt: z.string(),
|
|
337
|
+
}),
|
|
338
|
+
})
|
|
339
|
+
.then(processPaymentStep)
|
|
340
|
+
.commit();
|
|
341
|
+
|
|
342
|
+
```
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
### package.json
|
|
2
|
+
```json
|
|
3
|
+
{
|
|
4
|
+
"name": "examples-server-express-adapter",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@ai-sdk/openai": "latest",
|
|
7
|
+
"@mastra/core": "latest",
|
|
8
|
+
"@mastra/express": "latest",
|
|
9
|
+
"express": "^5.1.0",
|
|
10
|
+
"zod": "^3.25.76"
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/express": "^5.0.5",
|
|
14
|
+
"@types/node": "22.13.17",
|
|
15
|
+
"tsx": "^4.19.3",
|
|
16
|
+
"typescript": "^5.8.3"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### mastra/agents/assistant.ts
|
|
22
|
+
```typescript
|
|
23
|
+
import { Agent } from '@mastra/core/agent';
|
|
24
|
+
import { openai } from '@ai-sdk/openai';
|
|
25
|
+
|
|
26
|
+
export const assistantAgent = new Agent({
|
|
27
|
+
id: 'assistantAgent',
|
|
28
|
+
name: 'Assistant',
|
|
29
|
+
instructions: 'You are a helpful assistant. Answer questions concisely.',
|
|
30
|
+
model: openai('gpt-4o-mini'),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### mastra/index.ts
|
|
36
|
+
```typescript
|
|
37
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
38
|
+
|
|
39
|
+
import { assistantAgent } from './agents/assistant';
|
|
40
|
+
|
|
41
|
+
export const mastra = new Mastra({
|
|
42
|
+
agents: { assistantAgent },
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### server.ts
|
|
48
|
+
```typescript
|
|
49
|
+
/**
|
|
50
|
+
* Express Server Adapter Example
|
|
51
|
+
*
|
|
52
|
+
* This demonstrates how to use @mastra/express to run Mastra with Express.
|
|
53
|
+
*
|
|
54
|
+
* Features shown:
|
|
55
|
+
* - Basic server setup with MastraServer
|
|
56
|
+
* - Required express.json() middleware
|
|
57
|
+
* - Custom routes added after init()
|
|
58
|
+
* - Accessing Mastra context via res.locals
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
import express from 'express';
|
|
62
|
+
import { MastraServer } from '@mastra/express';
|
|
63
|
+
|
|
64
|
+
import { mastra } from './mastra';
|
|
65
|
+
|
|
66
|
+
const app = express();
|
|
67
|
+
app.use(express.json()); // Required for body parsing
|
|
68
|
+
|
|
69
|
+
const server = new MastraServer({ app, mastra });
|
|
70
|
+
|
|
71
|
+
await server.init();
|
|
72
|
+
|
|
73
|
+
// Custom route with access to Mastra context via res.locals
|
|
74
|
+
app.get('/health', (req, res) => {
|
|
75
|
+
const mastraInstance = res.locals.mastra;
|
|
76
|
+
const agents = Object.keys(mastraInstance.listAgents());
|
|
77
|
+
res.json({ status: 'ok', agents });
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const port = 4111;
|
|
81
|
+
|
|
82
|
+
app.listen(port, () => {
|
|
83
|
+
console.log(`Server running on http://localhost:${port}`);
|
|
84
|
+
console.log(`Try: curl http://localhost:${port}/api/agents`);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
```
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
### package.json
|
|
2
|
+
```json
|
|
3
|
+
{
|
|
4
|
+
"name": "examples-server-hono-adapter",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"@ai-sdk/openai": "latest",
|
|
7
|
+
"@mastra/core": "latest",
|
|
8
|
+
"@mastra/hono": "latest",
|
|
9
|
+
"@hono/node-server": "^1.14.3",
|
|
10
|
+
"hono": "^4.10.4",
|
|
11
|
+
"zod": "^3.25.76"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@types/node": "22.13.17",
|
|
15
|
+
"tsx": "^4.19.3",
|
|
16
|
+
"typescript": "^5.8.3"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### mastra/agents/assistant.ts
|
|
22
|
+
```typescript
|
|
23
|
+
import { Agent } from '@mastra/core/agent';
|
|
24
|
+
import { openai } from '@ai-sdk/openai';
|
|
25
|
+
|
|
26
|
+
export const assistantAgent = new Agent({
|
|
27
|
+
id: 'assistantAgent',
|
|
28
|
+
name: 'Assistant',
|
|
29
|
+
instructions: 'You are a helpful assistant. Answer questions concisely.',
|
|
30
|
+
model: openai('gpt-4o-mini'),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### mastra/index.ts
|
|
36
|
+
```typescript
|
|
37
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
38
|
+
|
|
39
|
+
import { assistantAgent } from './agents/assistant';
|
|
40
|
+
|
|
41
|
+
export const mastra = new Mastra({
|
|
42
|
+
agents: { assistantAgent },
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### server.ts
|
|
48
|
+
```typescript
|
|
49
|
+
/**
|
|
50
|
+
* Hono Server Adapter Example
|
|
51
|
+
*
|
|
52
|
+
* This demonstrates how to use @mastra/hono to run Mastra with Hono.
|
|
53
|
+
*
|
|
54
|
+
* Features shown:
|
|
55
|
+
* - Basic server setup with MastraServer
|
|
56
|
+
* - Custom routes added after init()
|
|
57
|
+
* - Accessing Mastra context in custom routes
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
import { serve } from '@hono/node-server';
|
|
61
|
+
import { Hono } from 'hono';
|
|
62
|
+
import { HonoBindings, HonoVariables, MastraServer } from '@mastra/hono';
|
|
63
|
+
|
|
64
|
+
import { mastra } from './mastra';
|
|
65
|
+
|
|
66
|
+
const app = new Hono<{ Bindings: HonoBindings; Variables: HonoVariables }>();
|
|
67
|
+
const server = new MastraServer({ app, mastra });
|
|
68
|
+
|
|
69
|
+
await server.init();
|
|
70
|
+
|
|
71
|
+
// Custom route with access to Mastra context
|
|
72
|
+
app.get('/health', c => {
|
|
73
|
+
const mastraInstance = c.get('mastra');
|
|
74
|
+
const agents = Object.keys(mastraInstance.listAgents());
|
|
75
|
+
return c.json({ status: 'ok', agents });
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const port = 4111;
|
|
79
|
+
|
|
80
|
+
serve({ fetch: app.fetch, port }, () => {
|
|
81
|
+
console.log(`Server running on http://localhost:${port}`);
|
|
82
|
+
console.log(`Try: curl http://localhost:${port}/api/agents`);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
```
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
"zod": "^3.25.76"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"
|
|
12
|
-
"jest": "^29.7.0",
|
|
13
|
-
"mastra": "latest",
|
|
14
|
-
"ts-jest": "^29.2.6"
|
|
11
|
+
"mastra": "latest"
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
14
|
```
|
|
@@ -93,20 +90,3 @@ export const stockPrices = createTool({
|
|
|
93
90
|
});
|
|
94
91
|
|
|
95
92
|
```
|
|
96
|
-
|
|
97
|
-
### mastra/tools/tools.test.ts
|
|
98
|
-
```typescript
|
|
99
|
-
import { describe, it, expect } from 'vitest';
|
|
100
|
-
|
|
101
|
-
import { getStockPrice } from './stock-price';
|
|
102
|
-
|
|
103
|
-
describe('Test Tools', () => {
|
|
104
|
-
it('should run the stockPrices', async () => {
|
|
105
|
-
const result = await getStockPrice('AAPL');
|
|
106
|
-
|
|
107
|
-
console.log(result);
|
|
108
|
-
expect(result).toBeDefined();
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
```
|