@mastra/mcp-docs-server 0.13.37 → 0.13.38
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%2Fclient-js.md +23 -23
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +69 -69
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +25 -25
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Freact.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +23 -23
- package/.docs/organized/changelogs/create-mastra.md +5 -5
- package/.docs/organized/changelogs/mastra.md +17 -17
- 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 +125 -88
- 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/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 +138 -145
- 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 +59 -48
- package/.docs/raw/frameworks/servers/express.mdx +45 -44
- 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 +189 -164
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
- package/.docs/raw/getting-started/installation.mdx +164 -133
- 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 +40 -58
- package/.docs/raw/getting-started/templates.mdx +22 -27
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/mastra-cloud/dashboard.mdx +10 -10
- package/.docs/raw/mastra-cloud/observability.mdx +7 -8
- package/.docs/raw/mastra-cloud/overview.mdx +16 -22
- 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 +21 -23
- package/.docs/raw/memory/semantic-recall.mdx +14 -13
- 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 +23 -20
- 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 +31 -32
- 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 +145 -122
- 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 +14 -10
- 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 +54 -41
- 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/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 +40 -43
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +21 -13
- package/.docs/raw/reference/client-js/memory.mdx +6 -2
- 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 +1 -1
- 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 +7 -7
- 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 +12 -9
- 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/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} +53 -46
- package/.docs/raw/reference/memory/query.mdx +39 -25
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -5
- 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 +115 -106
- 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 +3 -3
- 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 +13 -10
- package/.docs/raw/reference/processors/language-detector.mdx +27 -17
- package/.docs/raw/reference/processors/moderation-processor.mdx +26 -17
- package/.docs/raw/reference/processors/pii-detector.mdx +28 -18
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +25 -17
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +26 -17
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +22 -15
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +13 -12
- package/.docs/raw/reference/rag/chunk.mdx +41 -23
- package/.docs/raw/reference/rag/database-config.mdx +56 -38
- package/.docs/raw/reference/rag/document.mdx +1 -1
- 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 +40 -31
- 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 +5 -4
- 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 +24 -20
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -26
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +36 -27
- 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 +70 -64
- 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 +6 -4
- 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 +15 -12
- 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 +3 -2
- 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 +13 -10
- 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 +20 -19
- 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 +11 -7
- 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 +9 -14
- 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 +29 -28
- package/.docs/raw/workflows/control-flow.mdx +24 -24
- 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 +33 -29
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -9
- package/.docs/raw/workflows/overview.mdx +60 -60
- package/.docs/raw/workflows/snapshots.mdx +54 -36
- package/.docs/raw/workflows/suspend-and-resume.mdx +52 -57
- 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 +14 -0
- package/package.json +5 -5
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
|
@@ -1,23 +1,22 @@
|
|
|
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
|
-
> **📹 Watch**: → An introduction to workflows, and how they compare to agents [YouTube (7 minutes)](https://youtu.be/0jg2g3sNvgw)
|
|
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
|
|
23
22
|
|
|
@@ -33,38 +32,38 @@ 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({
|
|
40
39
|
id: "step-1",
|
|
41
40
|
inputSchema: z.object({
|
|
42
|
-
message: z.string()
|
|
41
|
+
message: z.string(),
|
|
43
42
|
}),
|
|
44
43
|
outputSchema: z.object({
|
|
45
|
-
formatted: z.string()
|
|
44
|
+
formatted: z.string(),
|
|
46
45
|
}),
|
|
47
46
|
execute: async ({ inputData }) => {
|
|
48
47
|
const { message } = inputData;
|
|
49
48
|
|
|
50
49
|
return {
|
|
51
|
-
formatted: message.toUpperCase()
|
|
50
|
+
formatted: message.toUpperCase(),
|
|
52
51
|
};
|
|
53
|
-
}
|
|
52
|
+
},
|
|
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 [Agents and Tools](./agents-and-tools
|
|
60
|
+
Workflow steps can also call registered agents or import and execute tools directly, visit the [Agents and Tools](./agents-and-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
|
|
|
@@ -84,45 +83,45 @@ export const testWorkflow = createWorkflow({
|
|
|
84
83
|
|
|
85
84
|
```
|
|
86
85
|
|
|
87
|
-
> See the [Workflow Class](
|
|
86
|
+
> See the [Workflow Class](/reference/workflows/workflow) for a full list of configuration options.
|
|
88
87
|
|
|
89
88
|
### Understanding control flow
|
|
90
89
|
|
|
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](./control-flow
|
|
90
|
+
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](./control-flow) page for more information.
|
|
92
91
|
|
|
93
92
|
#### Composing workflow steps
|
|
94
93
|
|
|
95
94
|
When using `.then()`, steps run sequentially. Each step’s `inputSchema` must match the `outputSchema` of the previous step. The final step’s `outputSchema` should match the workflow’s `outputSchema` to ensure end-to-end type safety.
|
|
96
95
|
|
|
97
|
-
```typescript {4,7,14,17,24,27}
|
|
96
|
+
```typescript {4,7,14,17,24,27} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
98
97
|
const step1 = createStep({
|
|
99
98
|
//...
|
|
100
99
|
inputSchema: z.object({
|
|
101
|
-
message: z.string()
|
|
100
|
+
message: z.string(),
|
|
102
101
|
}),
|
|
103
102
|
outputSchema: z.object({
|
|
104
|
-
formatted: z.string()
|
|
105
|
-
})
|
|
103
|
+
formatted: z.string(),
|
|
104
|
+
}),
|
|
106
105
|
});
|
|
107
106
|
|
|
108
107
|
const step2 = createStep({
|
|
109
108
|
// ...
|
|
110
109
|
inputSchema: z.object({
|
|
111
|
-
formatted: z.string()
|
|
110
|
+
formatted: z.string(),
|
|
112
111
|
}),
|
|
113
112
|
outputSchema: z.object({
|
|
114
|
-
emphasized: z.string()
|
|
115
|
-
})
|
|
113
|
+
emphasized: z.string(),
|
|
114
|
+
}),
|
|
116
115
|
});
|
|
117
116
|
|
|
118
117
|
export const testWorkflow = createWorkflow({
|
|
119
118
|
// ...
|
|
120
119
|
inputSchema: z.object({
|
|
121
|
-
message: z.string()
|
|
120
|
+
message: z.string(),
|
|
122
121
|
}),
|
|
123
122
|
outputSchema: z.object({
|
|
124
|
-
emphasized: z.string()
|
|
125
|
-
})
|
|
123
|
+
emphasized: z.string(),
|
|
124
|
+
}),
|
|
126
125
|
})
|
|
127
126
|
.then(step1)
|
|
128
127
|
.then(step2)
|
|
@@ -133,7 +132,7 @@ export const testWorkflow = createWorkflow({
|
|
|
133
132
|
|
|
134
133
|
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
134
|
|
|
136
|
-
```typescript {6}
|
|
135
|
+
```typescript {6} title="src/mastra/index.ts" showLineNumbers copy
|
|
137
136
|
import { Mastra } from "@mastra/core/mastra";
|
|
138
137
|
import { testWorkflow } from "./workflows/test-workflow";
|
|
139
138
|
|
|
@@ -150,20 +149,22 @@ You can run workflows from agents, tools, the Mastra Client, or the command line
|
|
|
150
149
|
```typescript showLineNumbers copy
|
|
151
150
|
const testWorkflow = mastra.getWorkflow("testWorkflow");
|
|
152
151
|
```
|
|
153
|
-
<Callout type="info">
|
|
154
|
-
<p>
|
|
155
|
-
`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).
|
|
156
|
-
</p>
|
|
157
|
-
</Callout>
|
|
158
152
|
|
|
159
|
-
|
|
153
|
+
:::info
|
|
154
|
+
|
|
155
|
+
`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).
|
|
156
|
+
|
|
157
|
+
:::
|
|
158
|
+
|
|
159
|
+
> See [Running Workflows](/examples/workflows_legacy/creating-a-workflow) for more information.
|
|
160
160
|
|
|
161
161
|
## Running workflows
|
|
162
162
|
|
|
163
163
|
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
164
|
|
|
165
|
-
<Tabs
|
|
166
|
-
<
|
|
165
|
+
<Tabs>
|
|
166
|
+
<TabItem value="start" label="Start">
|
|
167
|
+
|
|
167
168
|
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
169
|
|
|
169
170
|
```typescript showLineNumbers copy
|
|
@@ -171,14 +172,16 @@ const run = await testWorkflow.createRunAsync();
|
|
|
171
172
|
|
|
172
173
|
const result = await run.start({
|
|
173
174
|
inputData: {
|
|
174
|
-
message: "Hello world"
|
|
175
|
-
}
|
|
175
|
+
message: "Hello world",
|
|
176
|
+
},
|
|
176
177
|
});
|
|
177
178
|
|
|
178
179
|
console.log(result);
|
|
179
180
|
```
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
|
|
182
|
+
</TabItem>
|
|
183
|
+
<TabItem value="stream" label="Stream">
|
|
184
|
+
|
|
182
185
|
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
186
|
|
|
184
187
|
```typescript showLineNumbers copy
|
|
@@ -186,15 +189,16 @@ const run = await testWorkflow.createRunAsync();
|
|
|
186
189
|
|
|
187
190
|
const result = await run.stream({
|
|
188
191
|
inputData: {
|
|
189
|
-
message: "Hello world"
|
|
190
|
-
}
|
|
192
|
+
message: "Hello world",
|
|
193
|
+
},
|
|
191
194
|
});
|
|
192
195
|
|
|
193
196
|
for await (const chunk of result.stream) {
|
|
194
197
|
console.log(chunk);
|
|
195
198
|
}
|
|
196
199
|
```
|
|
197
|
-
|
|
200
|
+
|
|
201
|
+
</TabItem>
|
|
198
202
|
</Tabs>
|
|
199
203
|
|
|
200
204
|
## Workflow output
|
|
@@ -213,7 +217,7 @@ The workflow output includes the full execution lifecycle, showing the input and
|
|
|
213
217
|
},
|
|
214
218
|
"output": {
|
|
215
219
|
"formatted": "HELLO WORLD"
|
|
216
|
-
}
|
|
220
|
+
}
|
|
217
221
|
},
|
|
218
222
|
"step-2": {
|
|
219
223
|
"status": "success",
|
|
@@ -222,7 +226,7 @@ The workflow output includes the full execution lifecycle, showing the input and
|
|
|
222
226
|
},
|
|
223
227
|
"output": {
|
|
224
228
|
"emphasized": "HELLO WORLD!!!"
|
|
225
|
-
}
|
|
229
|
+
}
|
|
226
230
|
}
|
|
227
231
|
},
|
|
228
232
|
"input": {
|
|
@@ -236,9 +240,9 @@ The workflow output includes the full execution lifecycle, showing the input and
|
|
|
236
240
|
|
|
237
241
|
## Using `RuntimeContext`
|
|
238
242
|
|
|
239
|
-
Use [RuntimeContext](
|
|
243
|
+
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
244
|
|
|
241
|
-
```typescript
|
|
245
|
+
```typescript title="src/mastra/workflows/test-workflow.ts" showLineNumbers
|
|
242
246
|
export type UserTier = {
|
|
243
247
|
"user-tier": "enterprise" | "pro";
|
|
244
248
|
};
|
|
@@ -248,32 +252,28 @@ const step1 = createStep({
|
|
|
248
252
|
execute: async ({ runtimeContext }) => {
|
|
249
253
|
const userTier = runtimeContext.get("user-tier") as UserTier["user-tier"];
|
|
250
254
|
|
|
251
|
-
const maxResults = userTier === "enterprise"
|
|
252
|
-
? 1000
|
|
253
|
-
: 50;
|
|
255
|
+
const maxResults = userTier === "enterprise" ? 1000 : 50;
|
|
254
256
|
|
|
255
257
|
return { maxResults };
|
|
256
|
-
}
|
|
258
|
+
},
|
|
257
259
|
});
|
|
258
260
|
```
|
|
259
261
|
|
|
260
|
-
> See [Runtime Context](
|
|
262
|
+
> See [Runtime Context](/docs/server-db/runtime-context) for more information.
|
|
261
263
|
|
|
262
264
|
## Testing with Mastra Playground
|
|
263
265
|
|
|
264
|
-
Use the Mastra [Playground](
|
|
266
|
+
Use the Mastra [Playground](/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
267
|
|
|
266
268
|
## Related
|
|
267
269
|
|
|
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)
|
|
270
|
+
For a closer look at workflows, see our [Workflow Guide](/guides/guide/ai-recruiter), which walks through the core concepts with a practical example.
|
|
274
271
|
|
|
272
|
+
- [Parallel Steps workflow example](/examples/workflows_legacy/parallel-steps)
|
|
273
|
+
- [Conditional Branching workflow example](/examples/workflows_legacy/conditional-branching)
|
|
274
|
+
- [Inngest workflow example](/examples/workflows/inngest-workflow)
|
|
275
|
+
- [Suspend and Resume workflow example](/examples/workflows_legacy/human-in-the-loop)
|
|
275
276
|
|
|
276
277
|
## Workflows (Legacy)
|
|
277
278
|
|
|
278
|
-
For legacy workflow documentation, see [Workflows (Legacy)](../workflows-legacy/overview
|
|
279
|
-
|
|
279
|
+
For legacy workflow documentation, see [Workflows (Legacy)](../workflows-legacy/overview).
|
|
@@ -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)
|