@mastra/mcp-docs-server 0.13.37 → 0.13.39-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +38 -38
- package/.docs/organized/changelogs/%40mastra%2Fcloud.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +88 -88
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +28 -28
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +59 -59
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +25 -25
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +48 -48
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Frag.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Freact.md +24 -24
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +9 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +40 -40
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +11 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +10 -10
- package/.docs/organized/changelogs/create-mastra.md +11 -11
- package/.docs/organized/changelogs/mastra.md +34 -34
- package/.docs/raw/agents/adding-voice.mdx +20 -9
- package/.docs/raw/agents/agent-memory.mdx +55 -39
- package/.docs/raw/agents/guardrails.mdx +68 -61
- package/.docs/raw/agents/networks.mdx +50 -46
- package/.docs/raw/agents/overview.mdx +126 -89
- package/.docs/raw/agents/using-tools.mdx +14 -15
- package/.docs/raw/auth/auth0.mdx +28 -27
- package/.docs/raw/auth/clerk.mdx +22 -20
- package/.docs/raw/auth/firebase.mdx +42 -39
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +18 -16
- package/.docs/raw/auth/supabase.mdx +20 -18
- package/.docs/raw/auth/workos.mdx +32 -26
- package/.docs/raw/community/contributing-templates.mdx +7 -7
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/04-initializing-mcp-tools.md +2 -2
- package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -1
- package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
- package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
- package/.docs/raw/deployment/monorepo.mdx +32 -42
- package/.docs/raw/deployment/overview.mdx +15 -15
- package/.docs/raw/deployment/server-deployment.mdx +18 -23
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
- package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
- package/.docs/raw/deployment/web-framework.mdx +14 -14
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +130 -121
- package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +60 -49
- package/.docs/raw/frameworks/servers/express.mdx +46 -45
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +171 -130
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
- package/.docs/raw/getting-started/installation.mdx +165 -134
- package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
- package/.docs/raw/getting-started/project-structure.mdx +34 -42
- package/.docs/raw/getting-started/studio.mdx +42 -50
- package/.docs/raw/getting-started/templates.mdx +18 -15
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/mastra-cloud/dashboard.mdx +12 -12
- package/.docs/raw/mastra-cloud/observability.mdx +9 -10
- package/.docs/raw/mastra-cloud/overview.mdx +17 -23
- package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
- package/.docs/raw/memory/conversation-history.mdx +2 -2
- package/.docs/raw/memory/overview.mdx +22 -24
- package/.docs/raw/memory/semantic-recall.mdx +16 -17
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
- package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
- package/.docs/raw/memory/threads-and-resources.mdx +24 -21
- package/.docs/raw/memory/working-memory.mdx +27 -38
- package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
- package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
- package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
- package/.docs/raw/observability/ai-tracing/exporters/default.mdx +37 -38
- package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
- package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
- package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
- package/.docs/raw/observability/ai-tracing/overview.mdx +151 -128
- package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
- package/.docs/raw/observability/logging.mdx +14 -17
- package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
- package/.docs/raw/observability/otel-tracing.mdx +17 -18
- package/.docs/raw/observability/overview.mdx +15 -11
- package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
- package/.docs/raw/rag/overview.mdx +5 -5
- package/.docs/raw/rag/retrieval.mdx +125 -107
- package/.docs/raw/rag/vector-databases.mdx +232 -223
- package/.docs/raw/reference/agents/agent.mdx +56 -43
- package/.docs/raw/reference/agents/generate.mdx +367 -261
- package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDescription.mdx +3 -2
- package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
- package/.docs/raw/reference/agents/getLLM.mdx +11 -7
- package/.docs/raw/reference/agents/getMemory.mdx +7 -5
- package/.docs/raw/reference/agents/getModel.mdx +7 -5
- package/.docs/raw/reference/agents/getScorers.mdx +7 -5
- package/.docs/raw/reference/agents/getTools.mdx +7 -5
- package/.docs/raw/reference/agents/getVoice.mdx +7 -5
- package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
- package/.docs/raw/reference/agents/listAgents.mdx +6 -4
- package/.docs/raw/reference/agents/listScorers.mdx +69 -0
- package/.docs/raw/reference/agents/listTools.mdx +69 -0
- package/.docs/raw/reference/agents/listWorkflows.mdx +69 -0
- package/.docs/raw/reference/agents/network.mdx +171 -116
- package/.docs/raw/reference/auth/auth0.mdx +18 -14
- package/.docs/raw/reference/auth/clerk.mdx +15 -12
- package/.docs/raw/reference/auth/firebase.mdx +23 -16
- package/.docs/raw/reference/auth/jwt.mdx +7 -6
- package/.docs/raw/reference/auth/supabase.mdx +13 -10
- package/.docs/raw/reference/auth/workos.mdx +17 -13
- package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
- package/.docs/raw/reference/cli/mastra.mdx +11 -11
- package/.docs/raw/reference/client-js/agents.mdx +41 -44
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +2 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +28 -20
- package/.docs/raw/reference/client-js/memory.mdx +7 -3
- package/.docs/raw/reference/client-js/observability.mdx +10 -9
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +2 -2
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +8 -8
- package/.docs/raw/reference/core/getAgent.mdx +6 -5
- package/.docs/raw/reference/core/getAgentById.mdx +5 -4
- package/.docs/raw/reference/core/getAgents.mdx +3 -3
- package/.docs/raw/reference/core/getDeployer.mdx +4 -3
- package/.docs/raw/reference/core/getLogger.mdx +4 -3
- package/.docs/raw/reference/core/getLogs.mdx +10 -6
- package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
- package/.docs/raw/reference/core/getMemory.mdx +4 -3
- package/.docs/raw/reference/core/getScorer.mdx +15 -12
- package/.docs/raw/reference/core/getScorerByName.mdx +13 -10
- package/.docs/raw/reference/core/getScorers.mdx +3 -2
- package/.docs/raw/reference/core/getServer.mdx +4 -3
- package/.docs/raw/reference/core/getStorage.mdx +4 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
- package/.docs/raw/reference/core/getVector.mdx +6 -4
- package/.docs/raw/reference/core/getVectors.mdx +4 -3
- package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
- package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
- package/.docs/raw/reference/core/listAgents.mdx +35 -0
- package/.docs/raw/reference/core/listLogs.mdx +96 -0
- package/.docs/raw/reference/core/listLogsByRunId.mdx +87 -0
- package/.docs/raw/reference/core/listScorers.mdx +43 -0
- package/.docs/raw/reference/core/listWorkflows.mdx +45 -0
- package/.docs/raw/reference/core/mastra-class.mdx +16 -16
- package/.docs/raw/reference/core/setLogger.mdx +6 -4
- package/.docs/raw/reference/core/setStorage.mdx +4 -4
- package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -4
- package/.docs/raw/reference/deployer/vercel.mdx +6 -6
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/bias.mdx +4 -5
- package/.docs/raw/reference/evals/completeness.mdx +4 -5
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
- package/.docs/raw/reference/evals/context-position.mdx +4 -5
- package/.docs/raw/reference/evals/context-precision.mdx +4 -5
- package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
- package/.docs/raw/reference/evals/hallucination.mdx +4 -6
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
- package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
- package/.docs/raw/reference/evals/summarization.mdx +4 -6
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
- package/.docs/raw/reference/evals/toxicity.mdx +4 -5
- package/.docs/raw/reference/index.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
- package/.docs/raw/reference/memory/createThread.mdx +10 -10
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
- package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
- package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +55 -47
- package/.docs/raw/reference/memory/query.mdx +39 -25
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -6
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
- package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
- package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
- package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
- package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
- package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
- package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
- package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +116 -107
- package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
- package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
- package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +4 -4
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +3 -4
- package/.docs/raw/reference/processors/language-detector.mdx +6 -8
- package/.docs/raw/reference/processors/moderation-processor.mdx +36 -11
- package/.docs/raw/reference/processors/pii-detector.mdx +34 -9
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +6 -8
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +14 -10
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +3 -5
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +3 -4
- package/.docs/raw/reference/rag/chunk.mdx +41 -23
- package/.docs/raw/reference/rag/database-config.mdx +56 -38
- package/.docs/raw/reference/rag/embeddings.mdx +1 -1
- 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 +23 -26
- package/.docs/raw/reference/rag/rerank.mdx +1 -1
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
- package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
- package/.docs/raw/reference/scorers/bias.mdx +22 -19
- package/.docs/raw/reference/scorers/completeness.mdx +21 -16
- package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
- package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
- package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
- package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
- package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
- package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
- package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
- package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
- package/.docs/raw/reference/scorers/run-experiment.mdx +41 -32
- package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
- package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
- package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
- package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +1 -1
- package/.docs/raw/reference/storage/libsql.mdx +2 -2
- package/.docs/raw/reference/storage/mongodb.mdx +4 -5
- package/.docs/raw/reference/storage/mssql.mdx +8 -7
- package/.docs/raw/reference/storage/postgresql.mdx +35 -33
- package/.docs/raw/reference/storage/upstash.mdx +6 -5
- package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
- package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +25 -21
- package/.docs/raw/reference/streaming/workflows/stream.mdx +36 -27
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +37 -28
- package/.docs/raw/reference/templates/overview.mdx +16 -39
- package/.docs/raw/reference/tools/client.mdx +1 -1
- package/.docs/raw/reference/tools/create-tool.mdx +45 -35
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
- package/.docs/raw/reference/tools/mcp-client.mdx +78 -72
- package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
- package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +25 -19
- package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +5 -6
- package/.docs/raw/reference/vectors/libsql.mdx +1 -1
- package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
- package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
- package/.docs/raw/reference/vectors/pg.mdx +8 -4
- package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
- package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
- package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
- package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
- package/.docs/raw/reference/vectors/upstash.mdx +33 -25
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +1 -1
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
- 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 +7 -5
- package/.docs/raw/reference/voice/google.mdx +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
- package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
- package/.docs/raw/reference/voice/voice.close.mdx +1 -1
- package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
- package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
- package/.docs/raw/reference/voice/voice.off.mdx +1 -1
- package/.docs/raw/reference/voice/voice.on.mdx +1 -1
- package/.docs/raw/reference/voice/voice.send.mdx +1 -1
- package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
- package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
- package/.docs/raw/reference/workflows/run.mdx +7 -10
- package/.docs/raw/reference/workflows/step.mdx +16 -13
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +74 -3
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow.mdx +12 -23
- package/.docs/raw/scorers/custom-scorers.mdx +58 -48
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
- package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
- package/.docs/raw/scorers/overview.mdx +23 -22
- package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
- package/.docs/raw/server-db/mastra-client.mdx +56 -54
- package/.docs/raw/server-db/middleware.mdx +15 -11
- package/.docs/raw/server-db/production-server.mdx +5 -7
- package/.docs/raw/server-db/runtime-context.mdx +41 -38
- package/.docs/raw/server-db/storage.mdx +82 -87
- package/.docs/raw/streaming/events.mdx +24 -16
- package/.docs/raw/streaming/overview.mdx +17 -18
- package/.docs/raw/streaming/tool-streaming.mdx +9 -10
- package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
- package/.docs/raw/tools-mcp/overview.mdx +10 -15
- package/.docs/raw/voice/overview.mdx +273 -250
- package/.docs/raw/voice/speech-to-speech.mdx +14 -12
- package/.docs/raw/voice/speech-to-text.mdx +2 -2
- package/.docs/raw/voice/text-to-speech.mdx +2 -2
- package/.docs/raw/workflows/agents-and-tools.mdx +27 -30
- package/.docs/raw/workflows/control-flow.mdx +213 -170
- package/.docs/raw/workflows/error-handling.mdx +15 -17
- package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
- package/.docs/raw/workflows/inngest-workflow.mdx +35 -31
- package/.docs/raw/workflows/overview.mdx +108 -56
- package/.docs/raw/workflows/snapshots.mdx +54 -36
- package/.docs/raw/workflows/suspend-and-resume.mdx +52 -65
- package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
- package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
- package/.docs/raw/workflows-legacy/overview.mdx +28 -26
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
- package/.docs/raw/workflows-legacy/steps.mdx +5 -3
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
- package/.docs/raw/workflows-legacy/variables.mdx +10 -8
- package/CHANGELOG.md +24 -0
- package/package.json +5 -5
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
- package/.docs/raw/workflows/input-data-mapping.mdx +0 -107
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "
|
|
2
|
+
title: "Workflows overview | Workflows | Mastra Docs"
|
|
3
3
|
description: "Workflows in Mastra help you orchestrate complex sequences of tasks with features like branching, parallel execution, resource suspension, and more."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import Tabs from "@theme/Tabs";
|
|
7
|
+
import TabItem from "@theme/TabItem";
|
|
7
8
|
|
|
8
9
|
# Workflows overview
|
|
9
10
|
|
|
10
11
|
Workflows let you define complex sequences of tasks using clear, structured steps rather than relying on the reasoning of a single agent. They give you full control over how tasks are broken down, how data moves between them, and what gets executed when.
|
|
11
12
|
|
|
12
|
-

|
|
13
14
|
|
|
14
15
|
## When to use workflows
|
|
15
16
|
|
|
16
17
|
Use workflows for tasks that are clearly defined upfront and involve multiple steps with a specific execution order. They give you fine-grained control over how data flows and transforms between steps, and which primitives are called at each stage.
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
19
|
> **📹 Watch**: → An introduction to workflows, and how they compare to agents [YouTube (7 minutes)](https://youtu.be/0jg2g3sNvgw)
|
|
21
20
|
|
|
22
21
|
## Core principles
|
|
@@ -33,7 +32,7 @@ Steps are the building blocks of workflows. Create a step using `createStep()` w
|
|
|
33
32
|
|
|
34
33
|
The `execute` function defines what the step does. Use it to call functions in your codebase, external APIs, agents, or tools.
|
|
35
34
|
|
|
36
|
-
```typescript {6,9,15}
|
|
35
|
+
```typescript {6,9,15} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
37
36
|
import { createStep } from "@mastra/core/workflows";
|
|
38
37
|
|
|
39
38
|
const step1 = createStep({
|
|
@@ -54,17 +53,17 @@ const step1 = createStep({
|
|
|
54
53
|
});
|
|
55
54
|
```
|
|
56
55
|
|
|
57
|
-
> See the [Step Class](
|
|
56
|
+
> See the [Step Class](/reference/workflows/step) for a full list of configuration options.
|
|
58
57
|
|
|
59
58
|
### Using agents and tools
|
|
60
59
|
|
|
61
|
-
Workflow steps can also call registered agents or import and execute tools directly, visit the [
|
|
60
|
+
Workflow steps can also call registered agents or import and execute tools directly, visit the [Using Tools](/docs/agents/using-tools) page for more information.
|
|
62
61
|
|
|
63
62
|
## Creating a workflow
|
|
64
63
|
|
|
65
64
|
Create a workflow using `createWorkflow()` with `inputSchema` and `outputSchema` to define the data it accepts and returns. Add steps using `.then()` and complete the workflow with `.commit()`.
|
|
66
65
|
|
|
67
|
-
```typescript {9,12,15,16}
|
|
66
|
+
```typescript {9,12,15,16} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
68
67
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
69
68
|
import { z } from "zod";
|
|
70
69
|
|
|
@@ -81,42 +80,93 @@ export const testWorkflow = createWorkflow({
|
|
|
81
80
|
})
|
|
82
81
|
.then(step1)
|
|
83
82
|
.commit();
|
|
84
|
-
|
|
85
83
|
```
|
|
86
84
|
|
|
87
|
-
> See the [Workflow Class](
|
|
85
|
+
> See the [Workflow Class](/reference/workflows/workflow) for a full list of configuration options.
|
|
88
86
|
|
|
89
87
|
### Understanding control flow
|
|
90
88
|
|
|
91
|
-
Workflows can be composed using a number of different methods. The method you choose determines how each step's schema should be structured. Visit the [Control Flow](
|
|
89
|
+
Workflows can be composed using a number of different methods. The method you choose determines how each step's schema should be structured. Visit the [Control Flow](/docs/workflows/control-flow) page for more information.
|
|
92
90
|
|
|
93
|
-
|
|
91
|
+
## Workflow state
|
|
94
92
|
|
|
95
|
-
|
|
93
|
+
Workflow state lets you share values across steps without passing them through every step’s inputSchema and outputSchema. All state values are defined in the workflow’s stateSchema, but each step only declares the values it needs. To set initial values, use initialState when running the workflow.
|
|
96
94
|
|
|
97
|
-
```typescript
|
|
95
|
+
```typescript title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
98
96
|
const step1 = createStep({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
// ...
|
|
98
|
+
stateSchema: z.object({
|
|
99
|
+
processedItems: z.array(z.string()),
|
|
102
100
|
}),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
execute: async ({ inputData, state, setState }) => {
|
|
102
|
+
const { message } = inputData;
|
|
103
|
+
const { processedItems } = state;
|
|
104
|
+
|
|
105
|
+
setState({
|
|
106
|
+
...state,
|
|
107
|
+
processedItems: [...processedItems, "item-1", "item-2"],
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
return {
|
|
111
|
+
formatted: message.toUpperCase(),
|
|
112
|
+
};
|
|
113
|
+
},
|
|
106
114
|
});
|
|
107
115
|
|
|
108
116
|
const step2 = createStep({
|
|
109
117
|
// ...
|
|
118
|
+
stateSchema: z.object({
|
|
119
|
+
metadata: z.object({
|
|
120
|
+
processedBy: z.string(),
|
|
121
|
+
}),
|
|
122
|
+
}),
|
|
123
|
+
execute: async ({ inputData, state }) => {
|
|
124
|
+
const { formatted } = inputData;
|
|
125
|
+
const { metadata } = state;
|
|
126
|
+
|
|
127
|
+
return {
|
|
128
|
+
emphasized: `${formatted}!! ${metadata.processedBy}`,
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
export const testWorkflow = createWorkflow({
|
|
134
|
+
// ...
|
|
135
|
+
stateSchema: z.object({
|
|
136
|
+
processedItems: z.array(z.string()),
|
|
137
|
+
metadata: z.object({
|
|
138
|
+
processedBy: z.string(),
|
|
139
|
+
}),
|
|
140
|
+
}),
|
|
141
|
+
})
|
|
142
|
+
.then(step1)
|
|
143
|
+
.then(step2)
|
|
144
|
+
.commit();
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Workflows as steps
|
|
148
|
+
|
|
149
|
+
Use a workflow as a step to reuse its logic within a larger composition. Input and output follow the same schema rules described in [Core principles](/docs/workflows/control-flow).
|
|
150
|
+
|
|
151
|
+
```typescript {26} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
152
|
+
const step1 = createStep({...});
|
|
153
|
+
const step2 = createStep({...});
|
|
154
|
+
|
|
155
|
+
const childWorkflow = createWorkflow({
|
|
156
|
+
id: "child-workflow",
|
|
110
157
|
inputSchema: z.object({
|
|
111
|
-
|
|
158
|
+
message: z.string()
|
|
112
159
|
}),
|
|
113
160
|
outputSchema: z.object({
|
|
114
161
|
emphasized: z.string()
|
|
115
162
|
})
|
|
116
|
-
})
|
|
163
|
+
})
|
|
164
|
+
.then(step1)
|
|
165
|
+
.then(step2)
|
|
166
|
+
.commit();
|
|
117
167
|
|
|
118
168
|
export const testWorkflow = createWorkflow({
|
|
119
|
-
|
|
169
|
+
id: "test-workflow",
|
|
120
170
|
inputSchema: z.object({
|
|
121
171
|
message: z.string()
|
|
122
172
|
}),
|
|
@@ -124,16 +174,33 @@ export const testWorkflow = createWorkflow({
|
|
|
124
174
|
emphasized: z.string()
|
|
125
175
|
})
|
|
126
176
|
})
|
|
177
|
+
.then(childWorkflow)
|
|
178
|
+
.commit();
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Cloning a workflow
|
|
182
|
+
|
|
183
|
+
Clone a workflow using `cloneWorkflow()` when you want to reuse its logic but track it separately under a new ID. Each clone runs independently and appears as a distinct workflow in logs and observability tools.
|
|
184
|
+
|
|
185
|
+
```typescript {6} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
186
|
+
import { cloneWorkflow } from "@mastra/core/workflows";
|
|
187
|
+
|
|
188
|
+
const step1 = createStep({...});
|
|
189
|
+
|
|
190
|
+
const parentWorkflow = createWorkflow({...})
|
|
191
|
+
const clonedWorkflow = cloneWorkflow(parentWorkflow, { id: "cloned-workflow" });
|
|
192
|
+
|
|
193
|
+
export const testWorkflow = createWorkflow({...})
|
|
127
194
|
.then(step1)
|
|
128
|
-
.then(
|
|
195
|
+
.then(clonedWorkflow)
|
|
129
196
|
.commit();
|
|
130
197
|
```
|
|
131
198
|
|
|
132
|
-
|
|
199
|
+
## Registering a workflow
|
|
133
200
|
|
|
134
201
|
Register your workflow in the Mastra instance to make it available throughout your application. Once registered, it can be called from agents or tools and has access to shared resources such as logging and observability features:
|
|
135
202
|
|
|
136
|
-
```typescript {6}
|
|
203
|
+
```typescript {6} title="src/mastra/index.ts" showLineNumbers copy
|
|
137
204
|
import { Mastra } from "@mastra/core/mastra";
|
|
138
205
|
import { testWorkflow } from "./workflows/test-workflow";
|
|
139
206
|
|
|
@@ -150,20 +217,16 @@ You can run workflows from agents, tools, the Mastra Client, or the command line
|
|
|
150
217
|
```typescript showLineNumbers copy
|
|
151
218
|
const testWorkflow = mastra.getWorkflow("testWorkflow");
|
|
152
219
|
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
</p>
|
|
157
|
-
</Callout>
|
|
158
|
-
|
|
159
|
-
> See [Running Workflows](../../examples/workflows/running-workflows.mdx) for more information.
|
|
220
|
+
:::info
|
|
221
|
+
`mastra.getWorkflow()` is preferred over a direct import, since it provides access to the Mastra instance configuration (logger, telemetry, storage, registered agents, and vector stores).
|
|
222
|
+
:::
|
|
160
223
|
|
|
161
224
|
## Running workflows
|
|
162
225
|
|
|
163
226
|
Workflows can be run in two modes: start waits for all steps to complete before returning, and stream emits events during execution. Choose the approach that fits your use case: start when you only need the final result, and stream when you want to monitor progress or trigger actions as steps complete.
|
|
164
227
|
|
|
165
|
-
<Tabs
|
|
166
|
-
<
|
|
228
|
+
<Tabs>
|
|
229
|
+
<TabItem value="start" label="Start">
|
|
167
230
|
Create a workflow run instance using `createRunAsync()`, then call `.start()` with `inputData` matching the workflow's `inputSchema`. The workflow executes all steps and returns the final result.
|
|
168
231
|
|
|
169
232
|
```typescript showLineNumbers copy
|
|
@@ -177,8 +240,8 @@ const result = await run.start({
|
|
|
177
240
|
|
|
178
241
|
console.log(result);
|
|
179
242
|
```
|
|
180
|
-
</
|
|
181
|
-
<
|
|
243
|
+
</TabItem>
|
|
244
|
+
<TabItem value="stream" label="Stream">
|
|
182
245
|
Create a workflow run instance using `.createRunAsync()`, then call `.stream()` with `inputData` matching the workflow's `inputSchema`. The workflow emits events as each step executes, which you can iterate over to track progress.
|
|
183
246
|
|
|
184
247
|
```typescript showLineNumbers copy
|
|
@@ -194,7 +257,7 @@ for await (const chunk of result.stream) {
|
|
|
194
257
|
console.log(chunk);
|
|
195
258
|
}
|
|
196
259
|
```
|
|
197
|
-
</
|
|
260
|
+
</TabItem>
|
|
198
261
|
</Tabs>
|
|
199
262
|
|
|
200
263
|
## Workflow output
|
|
@@ -236,9 +299,9 @@ The workflow output includes the full execution lifecycle, showing the input and
|
|
|
236
299
|
|
|
237
300
|
## Using `RuntimeContext`
|
|
238
301
|
|
|
239
|
-
Use [RuntimeContext](
|
|
302
|
+
Use [RuntimeContext](/docs/server-db/runtime-context) to access request-specific values. This lets you conditionally adjust behavior based on the context of the request.
|
|
240
303
|
|
|
241
|
-
```typescript
|
|
304
|
+
```typescript title="src/mastra/workflows/test-workflow.ts" showLineNumbers
|
|
242
305
|
export type UserTier = {
|
|
243
306
|
"user-tier": "enterprise" | "pro";
|
|
244
307
|
};
|
|
@@ -257,23 +320,12 @@ const step1 = createStep({
|
|
|
257
320
|
});
|
|
258
321
|
```
|
|
259
322
|
|
|
260
|
-
> See [Runtime Context](
|
|
323
|
+
> See [Runtime Context](/docs/server-db/runtime-context) for more information.
|
|
261
324
|
|
|
262
|
-
## Testing with
|
|
325
|
+
## Testing with Studio
|
|
263
326
|
|
|
264
|
-
Use
|
|
327
|
+
Use [Studio](/docs/getting-started/studio) to easily run workflows with different inputs, visualize the execution lifecycle, see the inputs and outputs for each step, and inspect each part of the workflow in more detail.
|
|
265
328
|
|
|
266
329
|
## Related
|
|
267
330
|
|
|
268
|
-
For a closer look at workflows, see our [Workflow Guide](
|
|
269
|
-
|
|
270
|
-
- [Parallel Steps workflow example](../../examples/workflows/parallel-steps.mdx)
|
|
271
|
-
- [Conditional Branching workflow example](../../examples/workflows/conditional-branching.mdx)
|
|
272
|
-
- [Inngest workflow example](../../examples/workflows/inngest-workflow.mdx)
|
|
273
|
-
- [Suspend and Resume workflow example](../../examples/workflows/human-in-the-loop.mdx)
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
## Workflows (Legacy)
|
|
277
|
-
|
|
278
|
-
For legacy workflow documentation, see [Workflows (Legacy)](../workflows-legacy/overview.mdx).
|
|
279
|
-
|
|
331
|
+
For a closer look at workflows, see our [Workflow Guide](/guides/guide/ai-recruiter), which walks through the core concepts with a practical example.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Snapshots | Mastra Docs"
|
|
2
|
+
title: "Snapshots | Workflows | Mastra Docs"
|
|
3
3
|
description: "Learn how to save and resume workflow execution state with snapshots in Mastra"
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -33,19 +33,30 @@ This mechanism provides a powerful way to implement human-in-the-loop workflows,
|
|
|
33
33
|
|
|
34
34
|
Each snapshot includes the `runId`, input, step status (`success`, `suspended`, etc.), any suspend and resume payloads, and the final output. This ensures full context is available when resuming execution.
|
|
35
35
|
|
|
36
|
-
|
|
37
36
|
```json
|
|
38
37
|
{
|
|
39
38
|
"runId": "34904c14-e79e-4a12-9804-9655d4616c50",
|
|
40
39
|
"status": "success",
|
|
41
40
|
"value": {},
|
|
42
41
|
"context": {
|
|
43
|
-
"input": {
|
|
42
|
+
"input": {
|
|
43
|
+
"value": 100,
|
|
44
|
+
"user": "Michael",
|
|
45
|
+
"requiredApprovers": ["manager", "finance"]
|
|
46
|
+
},
|
|
44
47
|
"approval-step": {
|
|
45
|
-
"payload": {
|
|
48
|
+
"payload": {
|
|
49
|
+
"value": 100,
|
|
50
|
+
"user": "Michael",
|
|
51
|
+
"requiredApprovers": ["manager", "finance"]
|
|
52
|
+
},
|
|
46
53
|
"startedAt": 1758027577955,
|
|
47
54
|
"status": "success",
|
|
48
|
-
"suspendPayload": {
|
|
55
|
+
"suspendPayload": {
|
|
56
|
+
"message": "Workflow suspended",
|
|
57
|
+
"requestedBy": "Michael",
|
|
58
|
+
"approvers": ["manager", "finance"]
|
|
59
|
+
},
|
|
49
60
|
"suspendedAt": 1758027578065,
|
|
50
61
|
"resumePayload": { "confirm": true, "approver": "manager" },
|
|
51
62
|
"resumedAt": 1758027578517,
|
|
@@ -54,7 +65,15 @@ Each snapshot includes the `runId`, input, step status (`success`, `suspended`,
|
|
|
54
65
|
}
|
|
55
66
|
},
|
|
56
67
|
"activePaths": [],
|
|
57
|
-
"serializedStepGraph": [
|
|
68
|
+
"serializedStepGraph": [
|
|
69
|
+
{
|
|
70
|
+
"type": "step",
|
|
71
|
+
"step": {
|
|
72
|
+
"id": "approval-step",
|
|
73
|
+
"description": "Accepts a value, waits for confirmation"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
],
|
|
58
77
|
"suspendedPaths": {},
|
|
59
78
|
"waitingPaths": {},
|
|
60
79
|
"result": { "value": 100, "approved": true },
|
|
@@ -68,10 +87,10 @@ Each snapshot includes the `runId`, input, step status (`success`, `suspended`,
|
|
|
68
87
|
Snapshots are saved to the configured storage system. By default, they use LibSQL, but you can configure Upstash or PostgreSQL instead. Each snapshot is saved in the `workflow_snapshots` table and identified by the workflow’s `runId`.
|
|
69
88
|
|
|
70
89
|
Read more about:
|
|
71
|
-
- [LibSQL Storage](../../reference/storage/libsql.mdx)
|
|
72
|
-
- [Upstash Storage](../../reference/storage/upstash.mdx)
|
|
73
|
-
- [PostgreSQL Storage](../../reference/storage/postgresql.mdx)
|
|
74
90
|
|
|
91
|
+
- [LibSQL Storage](/reference/storage/libsql)
|
|
92
|
+
- [Upstash Storage](/reference/storage/upstash)
|
|
93
|
+
- [PostgreSQL Storage](/reference/storage/postgresql)
|
|
75
94
|
|
|
76
95
|
### Saving snapshots
|
|
77
96
|
|
|
@@ -93,13 +112,12 @@ When a workflow is resumed, Mastra retrieves the persisted snapshot with these s
|
|
|
93
112
|
4. The workflow execution is recreated with the snapshot state
|
|
94
113
|
5. The suspended step is resumed, and execution continues
|
|
95
114
|
|
|
96
|
-
|
|
97
115
|
```typescript
|
|
98
116
|
const storage = mastra.getStorage();
|
|
99
117
|
|
|
100
118
|
const snapshot = await storage!.loadWorkflowSnapshot({
|
|
101
119
|
runId: "<run-id>",
|
|
102
|
-
workflowName: "<workflow-id>"
|
|
120
|
+
workflowName: "<workflow-id>",
|
|
103
121
|
});
|
|
104
122
|
|
|
105
123
|
console.log(snapshot);
|
|
@@ -113,15 +131,15 @@ Snapshots are persisted using a `storage` instance configured on the `Mastra` cl
|
|
|
113
131
|
|
|
114
132
|
This example demonstrates how to use snapshots with LibSQL.
|
|
115
133
|
|
|
116
|
-
```typescript
|
|
134
|
+
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
117
135
|
import { Mastra } from "@mastra/core/mastra";
|
|
118
136
|
import { LibSQLStore } from "@mastra/libsql";
|
|
119
137
|
|
|
120
138
|
export const mastra = new Mastra({
|
|
121
139
|
// ...
|
|
122
140
|
storage: new LibSQLStore({
|
|
123
|
-
url: ":memory:"
|
|
124
|
-
})
|
|
141
|
+
url: ":memory:",
|
|
142
|
+
}),
|
|
125
143
|
});
|
|
126
144
|
```
|
|
127
145
|
|
|
@@ -129,7 +147,7 @@ export const mastra = new Mastra({
|
|
|
129
147
|
|
|
130
148
|
This example demonstrates how to use snapshots with Upstash.
|
|
131
149
|
|
|
132
|
-
```typescript
|
|
150
|
+
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
133
151
|
import { Mastra } from "@mastra/core/mastra";
|
|
134
152
|
import { UpstashStore } from "@mastra/upstash";
|
|
135
153
|
|
|
@@ -137,24 +155,24 @@ export const mastra = new Mastra({
|
|
|
137
155
|
// ...
|
|
138
156
|
storage: new UpstashStore({
|
|
139
157
|
url: "<upstash-redis-rest-url>",
|
|
140
|
-
token: "<upstash-redis-rest-token>"
|
|
141
|
-
})
|
|
142
|
-
})
|
|
158
|
+
token: "<upstash-redis-rest-token>",
|
|
159
|
+
}),
|
|
160
|
+
});
|
|
143
161
|
```
|
|
144
162
|
|
|
145
163
|
### Postgres `@mastra/pg`
|
|
146
164
|
|
|
147
165
|
This example demonstrates how to use snapshots with PostgreSQL.
|
|
148
166
|
|
|
149
|
-
```typescript
|
|
167
|
+
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
150
168
|
import { Mastra } from "@mastra/core/mastra";
|
|
151
169
|
import { PostgresStore } from "@mastra/pg";
|
|
152
170
|
|
|
153
171
|
export const mastra = new Mastra({
|
|
154
172
|
// ...
|
|
155
173
|
storage: new PostgresStore({
|
|
156
|
-
connectionString: "<database-url>"
|
|
157
|
-
})
|
|
174
|
+
connectionString: "<database-url>",
|
|
175
|
+
}),
|
|
158
176
|
});
|
|
159
177
|
```
|
|
160
178
|
|
|
@@ -170,7 +188,7 @@ export const mastra = new Mastra({
|
|
|
170
188
|
|
|
171
189
|
You can attach custom metadata when suspending a workflow by defining a `suspendSchema`. This metadata is stored in the snapshot and made available when the workflow is resumed.
|
|
172
190
|
|
|
173
|
-
```typescript {30-34}
|
|
191
|
+
```typescript {30-34} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
174
192
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
175
193
|
import { z } from "zod";
|
|
176
194
|
|
|
@@ -180,20 +198,20 @@ const approvalStep = createStep({
|
|
|
180
198
|
inputSchema: z.object({
|
|
181
199
|
value: z.number(),
|
|
182
200
|
user: z.string(),
|
|
183
|
-
requiredApprovers: z.array(z.string())
|
|
201
|
+
requiredApprovers: z.array(z.string()),
|
|
184
202
|
}),
|
|
185
203
|
suspendSchema: z.object({
|
|
186
204
|
message: z.string(),
|
|
187
205
|
requestedBy: z.string(),
|
|
188
|
-
approvers: z.array(z.string())
|
|
206
|
+
approvers: z.array(z.string()),
|
|
189
207
|
}),
|
|
190
208
|
resumeSchema: z.object({
|
|
191
209
|
confirm: z.boolean(),
|
|
192
|
-
approver: z.string()
|
|
210
|
+
approver: z.string(),
|
|
193
211
|
}),
|
|
194
212
|
outputSchema: z.object({
|
|
195
213
|
value: z.number(),
|
|
196
|
-
approved: z.boolean()
|
|
214
|
+
approved: z.boolean(),
|
|
197
215
|
}),
|
|
198
216
|
execute: async ({ inputData, resumeData, suspend }) => {
|
|
199
217
|
const { value, user, requiredApprovers } = inputData;
|
|
@@ -203,15 +221,15 @@ const approvalStep = createStep({
|
|
|
203
221
|
return await suspend({
|
|
204
222
|
message: "Workflow suspended",
|
|
205
223
|
requestedBy: user,
|
|
206
|
-
approvers: [...requiredApprovers]
|
|
224
|
+
approvers: [...requiredApprovers],
|
|
207
225
|
});
|
|
208
226
|
}
|
|
209
227
|
|
|
210
228
|
return {
|
|
211
229
|
value,
|
|
212
|
-
approved: confirm
|
|
230
|
+
approved: confirm,
|
|
213
231
|
};
|
|
214
|
-
}
|
|
232
|
+
},
|
|
215
233
|
});
|
|
216
234
|
```
|
|
217
235
|
|
|
@@ -228,8 +246,8 @@ const result = await run.start({
|
|
|
228
246
|
inputData: {
|
|
229
247
|
value: 100,
|
|
230
248
|
user: "Michael",
|
|
231
|
-
requiredApprovers: ["manager", "finance"]
|
|
232
|
-
}
|
|
249
|
+
requiredApprovers: ["manager", "finance"],
|
|
250
|
+
},
|
|
233
251
|
});
|
|
234
252
|
|
|
235
253
|
if (result.status === "suspended") {
|
|
@@ -237,14 +255,14 @@ if (result.status === "suspended") {
|
|
|
237
255
|
step: "approval-step",
|
|
238
256
|
resumeData: {
|
|
239
257
|
confirm: true,
|
|
240
|
-
approver: "manager"
|
|
241
|
-
}
|
|
258
|
+
approver: "manager",
|
|
259
|
+
},
|
|
242
260
|
});
|
|
243
261
|
}
|
|
244
262
|
```
|
|
245
263
|
|
|
246
264
|
## Related
|
|
247
265
|
|
|
248
|
-
- [Suspend and resume](
|
|
249
|
-
- [Human in the loop example](
|
|
250
|
-
- [WorkflowRun.watch()](
|
|
266
|
+
- [Suspend and resume](/docs/workflows/suspend-and-resume)
|
|
267
|
+
- [Human in the loop example](/examples/workflows_legacy/human-in-the-loop)
|
|
268
|
+
- [WorkflowRun.watch()](/reference/workflows/run-methods/watch)
|