@mastra/mcp-docs-server 1.0.0-beta.11 → 1.0.0-beta.14
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/%40mastra%2Fagent-builder.md +29 -29
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +51 -51
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +180 -180
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +68 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +331 -331
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +31 -31
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +41 -41
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +39 -39
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +96 -96
- package/.docs/organized/changelogs/%40mastra%2Frag.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Freact.md +49 -2
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +122 -122
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +39 -39
- package/.docs/organized/changelogs/create-mastra.md +31 -31
- package/.docs/organized/changelogs/mastra.md +51 -51
- package/.docs/organized/code-examples/agent-v6.md +151 -0
- package/.docs/organized/code-examples/ai-elements.md +1 -1
- package/.docs/organized/code-examples/quick-start.md +0 -4
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- package/.docs/raw/agents/adding-voice.mdx +2 -3
- package/.docs/raw/agents/agent-approval.mdx +139 -6
- package/.docs/raw/agents/agent-memory.mdx +24 -32
- package/.docs/raw/agents/guardrails.mdx +61 -51
- package/.docs/raw/agents/networks.mdx +9 -13
- package/.docs/raw/agents/overview.mdx +40 -24
- package/.docs/raw/agents/processors.mdx +20 -19
- package/.docs/raw/agents/structured-output.mdx +11 -7
- package/.docs/raw/agents/using-tools.mdx +5 -6
- package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +1 -2
- package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +1 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +1 -2
- package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +2 -2
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +3 -4
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -3
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +2 -3
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -2
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +2 -3
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +20 -0
- package/.docs/raw/deployment/{building-mastra.mdx → mastra-server.mdx} +5 -5
- package/.docs/raw/deployment/monorepo.mdx +23 -44
- package/.docs/raw/deployment/overview.mdx +32 -50
- package/.docs/raw/deployment/web-framework.mdx +15 -19
- package/.docs/raw/evals/custom-scorers.mdx +9 -6
- package/.docs/raw/evals/overview.mdx +3 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +10 -1
- package/.docs/raw/getting-started/studio.mdx +1 -1
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +4 -4
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1033 -79
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +11 -11
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/amazon-ec2.mdx +9 -9
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/aws-lambda.mdx +13 -16
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/azure-app-services.mdx +5 -7
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/cloudflare-deployer.mdx +8 -5
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/digital-ocean.mdx +12 -15
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/guides/deployment/inngest.mdx +386 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/netlify-deployer.mdx +7 -3
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/vercel-deployer.mdx +8 -5
- package/.docs/raw/guides/getting-started/astro.mdx +292 -451
- package/.docs/raw/guides/getting-started/express.mdx +72 -153
- package/.docs/raw/guides/getting-started/hono.mdx +227 -0
- package/.docs/raw/guides/getting-started/next-js.mdx +170 -61
- package/.docs/raw/guides/getting-started/quickstart.mdx +4 -4
- package/.docs/raw/guides/getting-started/sveltekit.mdx +238 -409
- package/.docs/raw/guides/getting-started/vite-react.mdx +317 -147
- package/.docs/raw/guides/guide/ai-recruiter.mdx +10 -10
- package/.docs/raw/guides/guide/chef-michel.mdx +9 -11
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +15 -15
- package/.docs/raw/guides/guide/research-assistant.mdx +17 -17
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +8 -8
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +17 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +6 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +0 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/dashboard.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/observability.mdx +1 -5
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/overview.mdx +2 -6
- package/.docs/raw/{deployment/mastra-cloud → mastra-cloud}/setting-up.mdx +8 -7
- package/.docs/raw/mcp/overview.mdx +31 -13
- package/.docs/raw/mcp/publishing-mcp-server.mdx +2 -2
- package/.docs/raw/memory/memory-processors.mdx +9 -9
- package/.docs/raw/memory/message-history.mdx +69 -0
- package/.docs/raw/memory/overview.mdx +34 -76
- package/.docs/raw/memory/semantic-recall.mdx +58 -49
- package/.docs/raw/memory/storage.mdx +188 -0
- package/.docs/raw/memory/working-memory.mdx +7 -7
- package/.docs/raw/observability/logging.mdx +10 -11
- package/.docs/raw/observability/overview.mdx +0 -1
- package/.docs/raw/observability/tracing/bridges/otel.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +1 -1
- package/.docs/raw/observability/tracing/exporters/default.mdx +3 -3
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +1 -2
- package/.docs/raw/observability/tracing/overview.mdx +23 -25
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +18 -31
- package/.docs/raw/rag/graph-rag.mdx +220 -0
- package/.docs/raw/rag/overview.mdx +2 -3
- package/.docs/raw/rag/retrieval.mdx +34 -51
- package/.docs/raw/rag/vector-databases.mdx +29 -25
- package/.docs/raw/reference/agents/agent.mdx +3 -3
- package/.docs/raw/reference/agents/generate.mdx +1 -1
- package/.docs/raw/reference/agents/generateLegacy.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +3 -3
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +3 -3
- package/.docs/raw/reference/agents/getLLM.mdx +3 -3
- package/.docs/raw/reference/agents/getMemory.mdx +3 -3
- package/.docs/raw/reference/agents/getModel.mdx +3 -3
- package/.docs/raw/reference/agents/getTools.mdx +2 -2
- package/.docs/raw/reference/agents/getVoice.mdx +2 -2
- package/.docs/raw/reference/agents/listAgents.mdx +2 -2
- package/.docs/raw/reference/agents/listScorers.mdx +3 -3
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +2 -2
- package/.docs/raw/reference/agents/network.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/network-route.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +6 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +107 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +3 -3
- package/.docs/raw/reference/auth/auth0.mdx +2 -3
- package/.docs/raw/reference/auth/clerk.mdx +2 -3
- package/.docs/raw/reference/auth/firebase.mdx +3 -5
- package/.docs/raw/reference/auth/jwt.mdx +2 -3
- package/.docs/raw/reference/auth/supabase.mdx +2 -3
- package/.docs/raw/reference/auth/workos.mdx +2 -3
- package/.docs/raw/reference/cli/create-mastra.mdx +10 -10
- package/.docs/raw/reference/cli/mastra.mdx +10 -10
- package/.docs/raw/reference/client-js/agents.mdx +1 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +2 -2
- package/.docs/raw/reference/client-js/workflows.mdx +20 -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/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +1 -1
- package/.docs/raw/reference/core/getMemory.mdx +2 -2
- package/.docs/raw/reference/core/getServer.mdx +3 -3
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getStoredAgentById.mdx +3 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- 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/listLogs.mdx +1 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/listMCPServers.mdx +1 -1
- package/.docs/raw/reference/core/listMemory.mdx +2 -2
- package/.docs/raw/reference/core/listStoredAgents.mdx +4 -4
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +2 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -1
- package/.docs/raw/reference/deployer/vercel.mdx +2 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/bias.mdx +1 -1
- package/.docs/raw/reference/evals/completeness.mdx +1 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/context-precision.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +1 -1
- package/.docs/raw/reference/evals/hallucination.mdx +1 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/evals/prompt-alignment.mdx +7 -7
- package/.docs/raw/reference/evals/textual-difference.mdx +1 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +10 -10
- package/.docs/raw/reference/evals/toxicity.mdx +1 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +7 -8
- package/.docs/raw/reference/memory/createThread.mdx +2 -2
- package/.docs/raw/reference/memory/deleteMessages.mdx +2 -2
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +2 -2
- package/.docs/raw/reference/memory/memory-class.mdx +3 -3
- package/.docs/raw/reference/memory/query.mdx +2 -2
- package/.docs/raw/reference/memory/recall.mdx +2 -2
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +2 -2
- package/.docs/raw/reference/processors/message-history-processor.mdx +2 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +3 -3
- package/.docs/raw/reference/processors/pii-detector.mdx +3 -3
- package/.docs/raw/reference/processors/processor-interface.mdx +13 -13
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +2 -2
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +2 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +2 -2
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +2 -2
- package/.docs/raw/reference/processors/tool-call-filter.mdx +3 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +3 -3
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +2 -2
- package/.docs/raw/reference/rag/metadata-filters.mdx +7 -7
- package/.docs/raw/reference/server/create-route.mdx +14 -14
- package/.docs/raw/reference/server/express-adapter.mdx +10 -11
- package/.docs/raw/reference/server/hono-adapter.mdx +10 -11
- package/.docs/raw/reference/server/mastra-server.mdx +22 -22
- package/.docs/raw/reference/server/routes.mdx +28 -1
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +3 -3
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +6 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +3 -3
- package/.docs/raw/reference/storage/libsql.mdx +69 -54
- package/.docs/raw/reference/storage/mongodb.mdx +80 -7
- package/.docs/raw/reference/storage/mssql.mdx +4 -4
- package/.docs/raw/{server-db/storage.mdx → reference/storage/overview.mdx} +13 -111
- package/.docs/raw/reference/storage/postgresql.mdx +78 -7
- package/.docs/raw/reference/storage/upstash.mdx +74 -2
- package/.docs/raw/reference/streaming/agents/stream.mdx +27 -5
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +2 -2
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -22
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +4 -4
- package/.docs/raw/reference/templates/overview.mdx +1 -2
- package/.docs/raw/reference/tools/create-tool.mdx +24 -5
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +3 -3
- package/.docs/raw/reference/tools/vector-query-tool.mdx +4 -4
- package/.docs/raw/reference/vectors/astra.mdx +3 -3
- package/.docs/raw/reference/vectors/chroma.mdx +3 -3
- package/.docs/raw/reference/vectors/convex.mdx +12 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +5 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +10 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +4 -4
- package/.docs/raw/reference/vectors/libsql.mdx +61 -11
- package/.docs/raw/reference/vectors/mongodb.mdx +58 -5
- package/.docs/raw/reference/vectors/pg.mdx +53 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +3 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +3 -3
- package/.docs/raw/reference/vectors/s3vectors.mdx +6 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +4 -4
- package/.docs/raw/reference/vectors/upstash.mdx +55 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +1 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/start.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +143 -0
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +5 -5
- package/.docs/raw/reference/workflows/run.mdx +1 -1
- package/.docs/raw/reference/workflows/step.mdx +3 -3
- 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 +37 -2
- 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 +6 -6
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow.mdx +17 -3
- package/.docs/raw/{auth → server/auth}/auth0.mdx +20 -14
- package/.docs/raw/{auth → server/auth}/clerk.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/firebase.mdx +21 -15
- package/.docs/raw/{auth → server/auth}/index.mdx +6 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +14 -7
- package/.docs/raw/{auth → server/auth}/supabase.mdx +16 -9
- package/.docs/raw/{auth → server/auth}/workos.mdx +19 -13
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +13 -13
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +3 -5
- package/.docs/raw/{server-db → server}/mastra-client.mdx +26 -15
- package/.docs/raw/{server-db → server}/mastra-server.mdx +8 -8
- package/.docs/raw/{server-db → server}/middleware.mdx +9 -9
- package/.docs/raw/{server-db → server}/request-context.mdx +33 -32
- package/.docs/raw/{server-db → server}/server-adapters.mdx +12 -12
- package/.docs/raw/streaming/events.mdx +14 -7
- package/.docs/raw/streaming/overview.mdx +21 -10
- package/.docs/raw/streaming/tool-streaming.mdx +6 -6
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +31 -12
- package/.docs/raw/tools-mcp/overview.mdx +10 -11
- package/.docs/raw/voice/overview.mdx +1 -1
- package/.docs/raw/workflows/agents-and-tools.mdx +28 -19
- package/.docs/raw/workflows/control-flow.mdx +27 -40
- package/.docs/raw/workflows/error-handling.mdx +172 -18
- package/.docs/raw/workflows/human-in-the-loop.mdx +6 -7
- package/.docs/raw/workflows/inngest-workflow.mdx +8 -9
- package/.docs/raw/workflows/input-data-mapping.mdx +7 -7
- package/.docs/raw/workflows/overview.mdx +34 -23
- package/.docs/raw/workflows/snapshots.mdx +14 -44
- package/.docs/raw/workflows/suspend-and-resume.mdx +7 -7
- package/.docs/raw/workflows/time-travel.mdx +16 -16
- package/.docs/raw/workflows/workflow-state.mdx +5 -8
- package/CHANGELOG.md +23 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +53 -0
- package/package.json +4 -4
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- package/.docs/raw/memory/conversation-history.mdx +0 -24
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +0 -140
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -150
- package/.docs/raw/memory/storage/memory-with-pg.mdx +0 -138
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +0 -146
- package/.docs/raw/memory/threads-and-resources.mdx +0 -95
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
2
|
+
title: "React + Vite | Frameworks"
|
|
3
3
|
description: A step-by-step guide to integrating Mastra with React and Vite.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -8,248 +8,418 @@ import TabItem from "@theme/TabItem";
|
|
|
8
8
|
|
|
9
9
|
# Integrate Mastra in your React + Vite project
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
In this guide, you'll build a tool-calling AI agent using Mastra, then connect it to React by calling the agent directly from Mastra's standalone server.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- Simplify deployment with a unified codebase for frontend and backend
|
|
15
|
-
- Take advantage of Mastra's Client SDK
|
|
13
|
+
You'll use [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) and [AI Elements](https://ai-sdk.dev/elements) to create a beautiful, interactive chat experience.
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
## Before you begin
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
- You'll need an API key from a supported [model provider](/models/v1). If you don't have a preference, use [OpenAI](/models/v1/providers/openai).
|
|
18
|
+
- Install Node.js `v22.13.0` or later
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
## Create a new React + Vite app (optional)
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
If you already have a React + Vite app using Tailwind, skip to the next step.
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
### Project scaffold
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
Run the following command to [create a new React + Vite app](https://vite.dev/guide/#scaffolding-your-first-vite-project):
|
|
28
27
|
|
|
29
|
-
<Tabs>
|
|
28
|
+
<Tabs groupId="pm">
|
|
30
29
|
<TabItem value="npm" label="npm">
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
```bash
|
|
31
|
+
npm create vite@latest mastra-react -- --template react-ts
|
|
32
|
+
cd mastra-react
|
|
34
33
|
```
|
|
35
|
-
|
|
36
34
|
</TabItem>
|
|
37
|
-
<TabItem value="
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
<TabItem value="pnpm" label="pnpm">
|
|
36
|
+
```bash
|
|
37
|
+
pnpm create vite mastra-react --template react-ts
|
|
38
|
+
cd mastra-react
|
|
41
39
|
```
|
|
42
|
-
|
|
43
40
|
</TabItem>
|
|
44
|
-
<TabItem value="
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
<TabItem value="yarn" label="yarn">
|
|
42
|
+
```bash
|
|
43
|
+
yarn create vite mastra-react --template react-ts
|
|
44
|
+
cd mastra-react
|
|
48
45
|
```
|
|
49
|
-
|
|
50
46
|
</TabItem>
|
|
51
47
|
<TabItem value="bun" label="bun">
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
```bash
|
|
49
|
+
bun create vite mastra-react --template react-ts
|
|
50
|
+
cd mastra-react
|
|
55
51
|
```
|
|
56
|
-
|
|
57
52
|
</TabItem>
|
|
58
53
|
</Tabs>
|
|
59
54
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
To integrate Mastra into your project, you have two options:
|
|
55
|
+
This creates a project called `mastra-react`, but you can replace it with any name you want.
|
|
63
56
|
|
|
64
|
-
###
|
|
57
|
+
### Tailwind
|
|
65
58
|
|
|
66
|
-
|
|
59
|
+
Next, install Tailwind:
|
|
67
60
|
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
<Tabs groupId="pm">
|
|
62
|
+
<TabItem value="npm" label="npm">
|
|
63
|
+
```bash
|
|
64
|
+
npm install tailwindcss @tailwindcss/vite
|
|
70
65
|
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
If you prefer to customize the setup, run the `init` command and choose from the options when prompted:
|
|
77
|
-
|
|
78
|
-
```bash copy
|
|
79
|
-
npx mastra@latest init
|
|
66
|
+
</TabItem>
|
|
67
|
+
<TabItem value="pnpm" label="pnpm">
|
|
68
|
+
```bash
|
|
69
|
+
pnpm add tailwindcss @tailwindcss/vite
|
|
80
70
|
```
|
|
71
|
+
</TabItem>
|
|
72
|
+
<TabItem value="yarn" label="yarn">
|
|
73
|
+
```bash
|
|
74
|
+
yarn add tailwindcss @tailwindcss/vite
|
|
75
|
+
```
|
|
76
|
+
</TabItem>
|
|
77
|
+
<TabItem value="bun" label="bun">
|
|
78
|
+
```bash
|
|
79
|
+
bun add tailwindcss @tailwindcss/vite
|
|
80
|
+
```
|
|
81
|
+
</TabItem>
|
|
82
|
+
</Tabs>
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
Configure the Vite plugins:
|
|
85
|
+
|
|
86
|
+
```typescript title="vite.config.ts" {3-4,7-12}
|
|
87
|
+
import { defineConfig } from 'vite'
|
|
88
|
+
import react from '@vitejs/plugin-react'
|
|
89
|
+
import path from "path"
|
|
90
|
+
import tailwindcss from '@tailwindcss/vite'
|
|
91
|
+
|
|
92
|
+
export default defineConfig({
|
|
93
|
+
plugins: [react(), tailwindcss()],
|
|
94
|
+
resolve: {
|
|
95
|
+
alias: {
|
|
96
|
+
"@": path.resolve(__dirname, "./src"),
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
```
|
|
85
101
|
|
|
86
|
-
|
|
102
|
+
Replace everything in `src/index.css` with the following:
|
|
87
103
|
|
|
88
|
-
|
|
104
|
+
```css title="src/index.css"
|
|
105
|
+
@import "tailwindcss";
|
|
106
|
+
```
|
|
89
107
|
|
|
90
|
-
|
|
91
|
-
<TabItem value="app" label="app">
|
|
108
|
+
Add these `compilerOptions` to `tsconfig.json`:
|
|
92
109
|
|
|
93
|
-
```
|
|
110
|
+
```ts title="tsconfig.json"
|
|
94
111
|
{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
"
|
|
98
|
-
"
|
|
112
|
+
// ...
|
|
113
|
+
"compilerOptions": {
|
|
114
|
+
"baseUrl": ".",
|
|
115
|
+
"paths": {
|
|
116
|
+
"@/*": ["./src/*"]
|
|
117
|
+
}
|
|
99
118
|
}
|
|
100
119
|
}
|
|
101
120
|
```
|
|
102
121
|
|
|
103
|
-
|
|
104
|
-
<TabItem value="src-app" label="src/app">
|
|
122
|
+
Edit `tsconfig.app.json` to resolve paths:
|
|
105
123
|
|
|
106
|
-
```
|
|
124
|
+
```ts title="tsconfig.app.json"
|
|
107
125
|
{
|
|
108
|
-
"
|
|
109
|
-
...
|
|
110
|
-
"
|
|
111
|
-
"
|
|
126
|
+
"compilerOptions": {
|
|
127
|
+
// ...
|
|
128
|
+
"baseUrl": ".",
|
|
129
|
+
"paths": {
|
|
130
|
+
"@/*": [
|
|
131
|
+
"./src/*"
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
// ...
|
|
112
135
|
}
|
|
113
136
|
}
|
|
114
137
|
```
|
|
115
138
|
|
|
116
|
-
|
|
117
|
-
</Tabs>
|
|
139
|
+
## Initialize Mastra
|
|
118
140
|
|
|
119
|
-
|
|
141
|
+
Run [`mastra init`](/reference/v1/cli/mastra#mastra-init). When prompted, choose a provider (e.g. OpenAI) and enter your key:
|
|
120
142
|
|
|
121
|
-
|
|
143
|
+
<Tabs groupId="pm">
|
|
144
|
+
<TabItem value="npm" label="npm">
|
|
122
145
|
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
"exclude": ["dist", ".mastra"]
|
|
127
|
-
}
|
|
146
|
+
```bash
|
|
147
|
+
cd mastra-react
|
|
148
|
+
npx mastra@beta init
|
|
128
149
|
```
|
|
129
150
|
|
|
130
|
-
|
|
151
|
+
</TabItem>
|
|
152
|
+
<TabItem value="pnpm" label="pnpm">
|
|
131
153
|
|
|
132
|
-
```bash
|
|
133
|
-
|
|
154
|
+
```bash
|
|
155
|
+
cd mastra-react
|
|
156
|
+
pnpm dlx mastra@beta init
|
|
134
157
|
```
|
|
135
158
|
|
|
136
|
-
>
|
|
159
|
+
</TabItem>
|
|
160
|
+
<TabItem value="yarn" label="yarn">
|
|
137
161
|
|
|
138
|
-
|
|
162
|
+
```bash
|
|
163
|
+
cd mastra-react
|
|
164
|
+
yarn dlx mastra@beta init
|
|
165
|
+
```
|
|
139
166
|
|
|
140
|
-
|
|
167
|
+
</TabItem>
|
|
168
|
+
<TabItem value="bun" label="bun">
|
|
141
169
|
|
|
142
|
-
```bash
|
|
143
|
-
|
|
170
|
+
```bash
|
|
171
|
+
cd mastra-react
|
|
172
|
+
bunx mastra@beta init
|
|
144
173
|
```
|
|
145
174
|
|
|
146
|
-
|
|
175
|
+
</TabItem>
|
|
176
|
+
</Tabs>
|
|
177
|
+
|
|
178
|
+
This creates a `src/mastra` folder with an example weather agent and the following files:
|
|
179
|
+
|
|
180
|
+
- `index.ts` - Mastra config, including memory
|
|
181
|
+
- `tools/weather-tool.ts` - a tool to fetch weather for a given location
|
|
182
|
+
- `agents/weather-agent.ts`- a weather agent with a prompt that uses the tool
|
|
183
|
+
|
|
184
|
+
You'll call `weather-agent.ts` from your chat UI in the next steps.
|
|
147
185
|
|
|
148
|
-
|
|
186
|
+
## Install AI SDK UI & AI Elements
|
|
149
187
|
|
|
150
|
-
|
|
188
|
+
Install AI SDK UI along with the Mastra adapter:
|
|
189
|
+
|
|
190
|
+
<Tabs groupId="pm">
|
|
151
191
|
<TabItem value="npm" label="npm">
|
|
152
192
|
|
|
153
|
-
```bash
|
|
154
|
-
npm
|
|
193
|
+
```bash
|
|
194
|
+
npm install @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
155
195
|
```
|
|
156
196
|
|
|
157
197
|
</TabItem>
|
|
158
|
-
<TabItem value="
|
|
198
|
+
<TabItem value="pnpm" label="pnpm">
|
|
159
199
|
|
|
160
|
-
```bash
|
|
161
|
-
mastra
|
|
200
|
+
```bash
|
|
201
|
+
pnpm add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
162
202
|
```
|
|
163
203
|
|
|
164
204
|
</TabItem>
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
> Once running, your agents are available locally. See [Local Development Environment](/docs/v1/getting-started/studio) for more information.
|
|
205
|
+
<TabItem value="yarn" label="yarn">
|
|
168
206
|
|
|
169
|
-
|
|
207
|
+
```bash
|
|
208
|
+
yarn add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
209
|
+
```
|
|
170
210
|
|
|
171
|
-
|
|
211
|
+
</TabItem>
|
|
212
|
+
<TabItem value="bun" label="bun">
|
|
172
213
|
|
|
173
|
-
|
|
214
|
+
```bash
|
|
215
|
+
bun add @mastra/ai-sdk@beta @ai-sdk/react ai
|
|
216
|
+
```
|
|
174
217
|
|
|
175
|
-
|
|
218
|
+
</TabItem>
|
|
219
|
+
</Tabs>
|
|
176
220
|
|
|
177
|
-
|
|
178
|
-
mkdir lib
|
|
179
|
-
touch lib/mastra.ts
|
|
180
|
-
```
|
|
221
|
+
Next, initialize AI Elements. When prompted, choose the default options:
|
|
181
222
|
|
|
182
|
-
|
|
183
|
-
|
|
223
|
+
<Tabs groupId="pm">
|
|
224
|
+
<TabItem value="npm" label="npm">
|
|
184
225
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
});
|
|
226
|
+
```bash
|
|
227
|
+
npx ai-elements@latest
|
|
188
228
|
```
|
|
189
229
|
|
|
190
|
-
|
|
230
|
+
</TabItem>
|
|
231
|
+
<TabItem value="pnpm" label="pnpm">
|
|
191
232
|
|
|
192
|
-
|
|
233
|
+
```bash
|
|
234
|
+
pnpm dlx ai-elements@latest
|
|
235
|
+
```
|
|
193
236
|
|
|
194
|
-
|
|
195
|
-
|
|
237
|
+
</TabItem>
|
|
238
|
+
<TabItem value="yarn" label="yarn">
|
|
196
239
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
route("test", "routes/test.tsx"),
|
|
200
|
-
] satisfies RouteConfig;
|
|
240
|
+
```bash
|
|
241
|
+
yarn dlx ai-elements@latest
|
|
201
242
|
```
|
|
202
243
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
Create a new Route, and add the example code:
|
|
244
|
+
</TabItem>
|
|
245
|
+
<TabItem value="bun" label="bun">
|
|
206
246
|
|
|
207
|
-
```bash
|
|
208
|
-
|
|
247
|
+
```bash
|
|
248
|
+
bunx ai-elements@latest
|
|
209
249
|
```
|
|
210
250
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
import { mastraClient } from "../../lib/mastra";
|
|
251
|
+
</TabItem>
|
|
252
|
+
</Tabs>
|
|
214
253
|
|
|
215
|
-
|
|
216
|
-
const [result, setResult] = useState<string | null>(null);
|
|
254
|
+
This downloads the entire AI Elements UI component library into a `@/components/ai-elements` folder.
|
|
217
255
|
|
|
218
|
-
|
|
219
|
-
event.preventDefault();
|
|
256
|
+
## Create a chat route
|
|
220
257
|
|
|
221
|
-
|
|
222
|
-
const city = formData.get("city")?.toString();
|
|
223
|
-
const agent = mastraClient.getAgent("weatherAgent");
|
|
258
|
+
Open `src/mastra/index.ts` and add a [chatRoute()](https://github.com/reference/v1/ai-sdk/chat-route) to your config. This creates an API route your React frontend can call for AI SDK-compatible chat responses, which you’ll use with useChat() next.
|
|
224
259
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
260
|
+
```ts title="src/mastra/index.ts"
|
|
261
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
262
|
+
// Existing imports...
|
|
263
|
+
import { chatRoute } from "@mastra/ai-sdk"
|
|
228
264
|
|
|
229
|
-
|
|
265
|
+
export const mastra = new Mastra({
|
|
266
|
+
// Existing config...
|
|
267
|
+
server: {
|
|
268
|
+
apiRoutes: [
|
|
269
|
+
chatRoute({
|
|
270
|
+
path: '/chat/:agentId'
|
|
271
|
+
})
|
|
272
|
+
]
|
|
230
273
|
}
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Add the chat UI
|
|
278
|
+
|
|
279
|
+
Replace the `src/App.tsx` file to create a chat interface:
|
|
280
|
+
|
|
281
|
+
```tsx title="src/App.tsx"
|
|
282
|
+
import * as React from 'react';
|
|
283
|
+
import { DefaultChatTransport, type ToolUIPart } from 'ai';
|
|
284
|
+
import { useChat } from '@ai-sdk/react';
|
|
285
|
+
|
|
286
|
+
import {
|
|
287
|
+
PromptInput,
|
|
288
|
+
PromptInputBody,
|
|
289
|
+
PromptInputTextarea,
|
|
290
|
+
} from '@/components/ai-elements/prompt-input';
|
|
291
|
+
|
|
292
|
+
import {
|
|
293
|
+
Conversation,
|
|
294
|
+
ConversationContent,
|
|
295
|
+
ConversationScrollButton,
|
|
296
|
+
} from '@/components/ai-elements/conversation';
|
|
297
|
+
|
|
298
|
+
import {
|
|
299
|
+
Message,
|
|
300
|
+
MessageContent,
|
|
301
|
+
MessageResponse
|
|
302
|
+
} from '@/components/ai-elements/message';
|
|
303
|
+
|
|
304
|
+
import {
|
|
305
|
+
Tool,
|
|
306
|
+
ToolHeader,
|
|
307
|
+
ToolContent,
|
|
308
|
+
ToolInput,
|
|
309
|
+
ToolOutput,
|
|
310
|
+
} from '@/components/ai-elements/tool';
|
|
311
|
+
|
|
312
|
+
export default function App() {
|
|
313
|
+
const [input, setInput] = React.useState<string>('');
|
|
314
|
+
|
|
315
|
+
const { messages, sendMessage, status } = useChat({
|
|
316
|
+
transport: new DefaultChatTransport({
|
|
317
|
+
api: 'http://localhost:4111/chat/weather-agent',
|
|
318
|
+
}),
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
const handleSubmit = async () => {
|
|
322
|
+
if (!input.trim()) return;
|
|
323
|
+
|
|
324
|
+
sendMessage({ text: input });
|
|
325
|
+
setInput('');
|
|
326
|
+
};
|
|
231
327
|
|
|
232
328
|
return (
|
|
233
|
-
|
|
234
|
-
<
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
329
|
+
<div className="max-w-4xl mx-auto p-6 relative size-full h-screen">
|
|
330
|
+
<div className="flex flex-col h-full">
|
|
331
|
+
<Conversation className="h-full">
|
|
332
|
+
<ConversationContent>
|
|
333
|
+
{messages.map((message) => (
|
|
334
|
+
<div key={message.id}>
|
|
335
|
+
{message.parts?.map((part, i) => {
|
|
336
|
+
if (part.type === 'text') {
|
|
337
|
+
return (
|
|
338
|
+
<Message
|
|
339
|
+
key={`${message.id}-${i}`}
|
|
340
|
+
from={message.role}>
|
|
341
|
+
<MessageContent>
|
|
342
|
+
<MessageResponse>{part.text}</MessageResponse>
|
|
343
|
+
</MessageContent>
|
|
344
|
+
</Message>
|
|
345
|
+
);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
if (part.type?.startsWith('tool-')) {
|
|
349
|
+
return (
|
|
350
|
+
<Tool key={`${message.id}-${i}`}>
|
|
351
|
+
<ToolHeader
|
|
352
|
+
type={(part as ToolUIPart).type}
|
|
353
|
+
state={(part as ToolUIPart).state || 'output-available'}
|
|
354
|
+
className="cursor-pointer"
|
|
355
|
+
/>
|
|
356
|
+
<ToolContent>
|
|
357
|
+
<ToolInput input={(part as ToolUIPart).input || {}} />
|
|
358
|
+
<ToolOutput
|
|
359
|
+
output={(part as ToolUIPart).output}
|
|
360
|
+
errorText={(part as ToolUIPart).errorText}
|
|
361
|
+
/>
|
|
362
|
+
</ToolContent>
|
|
363
|
+
</Tool>
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return null;
|
|
368
|
+
})}
|
|
369
|
+
</div>
|
|
370
|
+
))}
|
|
371
|
+
<ConversationScrollButton />
|
|
372
|
+
</ConversationContent>
|
|
373
|
+
</Conversation>
|
|
374
|
+
<PromptInput onSubmit={handleSubmit} className="mt-20">
|
|
375
|
+
<PromptInputBody>
|
|
376
|
+
<PromptInputTextarea
|
|
377
|
+
onChange={(e) => setInput(e.target.value)}
|
|
378
|
+
className="md:leading-10"
|
|
379
|
+
value={input}
|
|
380
|
+
placeholder="Ask about the weather..."
|
|
381
|
+
disabled={status !== 'ready'}
|
|
382
|
+
/>
|
|
383
|
+
</PromptInputBody>
|
|
384
|
+
</PromptInput>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
241
387
|
);
|
|
242
388
|
}
|
|
243
389
|
```
|
|
244
390
|
|
|
245
|
-
|
|
391
|
+
This component connects [`useChat()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) to the `chat/weather-agent` endpoint, sending prompts there and streaming the response back in chunks.
|
|
246
392
|
|
|
247
|
-
|
|
393
|
+
It renders the response text using the [`<MessageResponse>`](https://ai-sdk.dev/elements/components/message#messageresponse-) component, and shows any tool invocations with the [`<Tool>`](https://ai-sdk.dev/elements/components/tool) component.
|
|
248
394
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
395
|
+
## Test your agent
|
|
396
|
+
|
|
397
|
+
In order to test your agent with the chat interface, you need to run both the Mastra server and the Vite development server.
|
|
398
|
+
|
|
399
|
+
1. Start the Mastra development server:
|
|
400
|
+
|
|
401
|
+
```bash copy
|
|
402
|
+
npx mastra dev
|
|
403
|
+
```
|
|
404
|
+
1. In a separate terminal window, start the Vite development server:
|
|
405
|
+
|
|
406
|
+
```bash copy
|
|
407
|
+
npm run dev
|
|
408
|
+
```
|
|
409
|
+
1. Open your application at http://localhost:5173
|
|
410
|
+
1. Try asking about the weather. If your API key is set up correctly, you'll get a response
|
|
252
411
|
|
|
253
412
|
## Next steps
|
|
254
413
|
|
|
255
|
-
|
|
414
|
+
Congratulations on building your Mastra agent with React! 🎉
|
|
415
|
+
|
|
416
|
+
From here, you can extend the project with your own tools and logic:
|
|
417
|
+
|
|
418
|
+
- Learn more about [agents](/docs/v1/agents/overview)
|
|
419
|
+
- Give your agent its own [tools](/docs/v1/agents/using-tools)
|
|
420
|
+
- Add human-like [memory](/docs/v1/agents/agent-memory) to your agent
|
|
421
|
+
|
|
422
|
+
When you're ready, read more about how Mastra integrates with AI SDK UI and React, and how to deploy your agent anywhere:
|
|
423
|
+
|
|
424
|
+
- Integrate Mastra with [AI SDK UI](/guides/v1/build-your-ui/ai-sdk-ui)
|
|
425
|
+
- Deploy your agent [anywhere](/docs/v1/deployment/overview)
|
|
@@ -28,7 +28,7 @@ Set up the Workflow, define steps to extract and classify candidate data, and th
|
|
|
28
28
|
|
|
29
29
|
Create a new file `src/mastra/workflows/candidate-workflow.ts` and define your workflow:
|
|
30
30
|
|
|
31
|
-
```ts
|
|
31
|
+
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
32
32
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
33
33
|
import { z } from "zod";
|
|
34
34
|
|
|
@@ -56,7 +56,7 @@ You want to extract candidate details from the resume text and classify the pers
|
|
|
56
56
|
|
|
57
57
|
To the existing `src/mastra/workflows/candidate-workflow.ts` file add the following:
|
|
58
58
|
|
|
59
|
-
```ts
|
|
59
|
+
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
60
60
|
import { Agent } from "@mastra/core/agent";
|
|
61
61
|
|
|
62
62
|
const recruiter = new Agent({
|
|
@@ -109,7 +109,7 @@ This step prompts a candidate who is identified as "technical" for more informat
|
|
|
109
109
|
|
|
110
110
|
To the existing `src/mastra/workflows/candidate-workflow.ts` file add the following:
|
|
111
111
|
|
|
112
|
-
```ts
|
|
112
|
+
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
113
113
|
const askAboutSpecialty = createStep({
|
|
114
114
|
id: "askAboutSpecialty",
|
|
115
115
|
inputSchema: z.object({
|
|
@@ -140,7 +140,7 @@ If the candidate is "non-technical", you want a different follow-up question. Th
|
|
|
140
140
|
|
|
141
141
|
To the existing `src/mastra/workflows/candidate-workflow.ts` file add the following:
|
|
142
142
|
|
|
143
|
-
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
143
|
+
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
144
144
|
const askAboutRole = createStep({
|
|
145
145
|
id: "askAboutRole",
|
|
146
146
|
inputSchema: z.object({
|
|
@@ -170,7 +170,7 @@ You now combine the steps to implement branching logic based on the candidate's
|
|
|
170
170
|
|
|
171
171
|
To the existing `src/mastra/workflows/candidate-workflow.ts` file change the `candidateWorkflow` like so:
|
|
172
172
|
|
|
173
|
-
```ts title="src/mastra/workflows/candidate-workflow.ts"
|
|
173
|
+
```ts title="src/mastra/workflows/candidate-workflow.ts" {10-14}
|
|
174
174
|
export const candidateWorkflow = createWorkflow({
|
|
175
175
|
id: "candidate-workflow",
|
|
176
176
|
inputSchema: z.object({
|
|
@@ -199,7 +199,7 @@ export const candidateWorkflow = createWorkflow({
|
|
|
199
199
|
|
|
200
200
|
In your `src/mastra/index.ts` file, register the workflow:
|
|
201
201
|
|
|
202
|
-
```ts
|
|
202
|
+
```ts title="src/mastra/index.ts" {2, 5}
|
|
203
203
|
import { Mastra } from "@mastra/core";
|
|
204
204
|
import { candidateWorkflow } from "./workflows/candidate-workflow";
|
|
205
205
|
|
|
@@ -216,13 +216,13 @@ export const mastra = new Mastra({
|
|
|
216
216
|
|
|
217
217
|
You can test your workflow inside [Studio](/docs/v1/getting-started/studio) by starting the development server:
|
|
218
218
|
|
|
219
|
-
```bash
|
|
219
|
+
```bash
|
|
220
220
|
mastra dev
|
|
221
221
|
```
|
|
222
222
|
|
|
223
223
|
In the sidebar, navigate to **Workflows** and select **candidate-workflow**. In the middle you'll see a graph view of your workflow and on the right sidebar the **Run** tab is selected by default. Inside this tab you can enter a resume text, for example:
|
|
224
224
|
|
|
225
|
-
```text
|
|
225
|
+
```text
|
|
226
226
|
Knowledgeable Software Engineer with more than 10 years of experience in software development. Proven expertise in the design and development of software databases and optimization of user interfaces.
|
|
227
227
|
```
|
|
228
228
|
|
|
@@ -230,7 +230,7 @@ After entering the resume text, press the **Run** button. You should now see two
|
|
|
230
230
|
|
|
231
231
|
You can also test the workflow programmatically by calling [`.createRun()`](/reference/v1/workflows/workflow-methods/create-run) and [`.start()`](/reference/v1/workflows/run-methods/start). Create a new file `src/test-workflow.ts` and add the following:
|
|
232
232
|
|
|
233
|
-
```ts
|
|
233
|
+
```ts title="src/test-workflow.ts"
|
|
234
234
|
import { mastra } from "./mastra";
|
|
235
235
|
|
|
236
236
|
const run = await mastra.getWorkflow("candidateWorkflow").createRun();
|
|
@@ -256,7 +256,7 @@ if (res.status === "success") {
|
|
|
256
256
|
|
|
257
257
|
Now, run the workflow and get output in your terminal:
|
|
258
258
|
|
|
259
|
-
```bash
|
|
259
|
+
```bash
|
|
260
260
|
npx tsx src/test-workflow.ts
|
|
261
261
|
```
|
|
262
262
|
|