@mastra/mcp-docs-server 0.13.39 → 1.0.0-beta.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%2Fai-sdk-v4.md +1 -0
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +0 -10
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +0 -10
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +36 -36
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +0 -10
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +40 -40
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +19 -19
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +4 -14
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +18 -18
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +223 -223
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +190 -190
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +7 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +214 -214
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +74 -74
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +67 -67
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +67 -67
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +209 -209
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +191 -191
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +34 -34
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +5 -13
- package/.docs/organized/changelogs/%40mastra%2Flance.md +182 -182
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +58 -58
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +65 -65
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +228 -228
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +206 -206
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +19 -19
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +197 -197
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +217 -217
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Frag.md +61 -61
- package/.docs/organized/changelogs/%40mastra%2Freact.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +9 -17
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -30
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +206 -206
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +190 -190
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +18 -18
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +21 -21
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +56 -56
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +56 -56
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +20 -20
- package/.docs/organized/changelogs/create-mastra.md +33 -33
- package/.docs/organized/changelogs/mastra.md +86 -86
- package/.docs/organized/code-examples/a2a.md +4 -2
- package/.docs/organized/code-examples/agui.md +12 -9
- package/.docs/organized/code-examples/ai-sdk-useChat.md +12 -18
- package/.docs/organized/code-examples/ai-sdk-v5.md +4 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +5 -4
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +4 -3
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +4 -3
- package/.docs/organized/code-examples/client-side-tools.md +1 -0
- package/.docs/organized/code-examples/crypto-chatbot.md +1 -1
- package/.docs/organized/code-examples/experimental-auth-weather-agent.md +8 -177
- package/.docs/organized/code-examples/fireworks-r1.md +2 -2
- package/.docs/organized/code-examples/heads-up-game.md +10 -7
- package/.docs/organized/code-examples/mcp-configuration.md +5 -3
- package/.docs/organized/code-examples/mcp-registry-registry.md +3 -2
- package/.docs/organized/code-examples/memory-per-resource-example.md +4 -2
- package/.docs/organized/code-examples/memory-todo-agent.md +1 -0
- package/.docs/organized/code-examples/memory-with-context.md +2 -1
- package/.docs/organized/code-examples/memory-with-libsql.md +4 -2
- package/.docs/organized/code-examples/memory-with-mongodb.md +4 -2
- package/.docs/organized/code-examples/memory-with-pg.md +4 -2
- package/.docs/organized/code-examples/memory-with-processors.md +13 -8
- package/.docs/organized/code-examples/memory-with-upstash.md +5 -3
- package/.docs/organized/code-examples/openapi-spec-writer.md +32 -41
- package/.docs/organized/code-examples/quick-start.md +5 -32
- package/.docs/organized/code-examples/stock-price-tool.md +6 -5
- package/.docs/organized/code-examples/weather-agent.md +21 -16
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +3 -2
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +9 -12
- package/.docs/organized/code-examples/workflow-with-memory.md +16 -15
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +2 -2
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +3 -2
- package/.docs/raw/agents/adding-voice.mdx +27 -22
- package/.docs/raw/agents/agent-memory.mdx +23 -15
- package/.docs/raw/agents/guardrails.mdx +33 -12
- package/.docs/raw/agents/networks.mdx +8 -4
- package/.docs/raw/agents/overview.mdx +21 -15
- package/.docs/raw/agents/using-tools.mdx +11 -8
- package/.docs/raw/auth/auth0.mdx +8 -8
- package/.docs/raw/auth/clerk.mdx +6 -6
- package/.docs/raw/auth/firebase.mdx +8 -8
- package/.docs/raw/auth/index.mdx +6 -6
- package/.docs/raw/auth/jwt.mdx +6 -6
- package/.docs/raw/auth/supabase.mdx +7 -7
- package/.docs/raw/auth/workos.mdx +8 -8
- package/.docs/raw/community/contributing-templates.mdx +3 -3
- package/.docs/raw/community/discord.mdx +1 -1
- package/.docs/raw/course/01-first-agent/08-exporting-your-agent.md +2 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +2 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +2 -0
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -0
- package/.docs/raw/course/03-agent-memory/10-storage-configuration.md +2 -3
- package/.docs/raw/course/03-agent-memory/13-vector-store-configuration.md +2 -0
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +2 -0
- package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -0
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -0
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +1 -0
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -0
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +1 -0
- package/.docs/raw/course/04-workflows/08-running-workflows-programmatically.md +2 -2
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +5 -5
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +7 -5
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +4 -4
- package/.docs/raw/deployment/cloud-providers/index.mdx +11 -8
- package/.docs/raw/deployment/monorepo.mdx +2 -2
- package/.docs/raw/deployment/overview.mdx +2 -2
- package/.docs/raw/deployment/server-deployment.mdx +2 -10
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +4 -4
- package/.docs/raw/deployment/serverless-platforms/index.mdx +10 -7
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +4 -4
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +4 -4
- package/.docs/raw/deployment/web-framework.mdx +8 -8
- package/.docs/raw/{scorers → evals}/custom-scorers.mdx +6 -6
- package/.docs/raw/evals/off-the-shelf-scorers.mdx +50 -0
- package/.docs/raw/{scorers → evals}/overview.mdx +8 -8
- package/.docs/raw/evals/running-in-ci.mdx +113 -0
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +22 -21
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +8 -8
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +3 -0
- package/.docs/raw/frameworks/servers/express.mdx +10 -9
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +6 -6
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +3 -3
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +4 -4
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +2 -2
- package/.docs/raw/getting-started/installation.mdx +13 -12
- package/.docs/raw/getting-started/mcp-docs-server.mdx +1 -1
- package/.docs/raw/getting-started/project-structure.mdx +4 -4
- package/.docs/raw/getting-started/studio.mdx +8 -8
- package/.docs/raw/getting-started/templates.mdx +1 -1
- package/.docs/raw/guides/guide/ai-recruiter.mdx +264 -0
- package/.docs/raw/guides/guide/chef-michel.mdx +271 -0
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +450 -0
- package/.docs/raw/guides/guide/research-assistant.mdx +389 -0
- package/.docs/raw/guides/guide/stock-agent.mdx +185 -0
- package/.docs/raw/guides/guide/web-search.mdx +291 -0
- package/.docs/raw/guides/index.mdx +43 -0
- package/.docs/raw/guides/migrations/agentnetwork.mdx +114 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/_template.mdx +50 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +265 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/cli.mdx +48 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +153 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +230 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +171 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +114 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +241 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +83 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/processors.mdx +62 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +270 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +115 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +280 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +23 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/voice.mdx +39 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +178 -0
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +367 -0
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/{observability/logging.mdx → logging.mdx} +4 -4
- package/.docs/raw/mastra-cloud/dashboard.mdx +2 -2
- package/.docs/raw/mastra-cloud/observability.mdx +6 -6
- package/.docs/raw/mastra-cloud/overview.mdx +2 -2
- package/.docs/raw/mastra-cloud/setting-up.mdx +4 -4
- package/.docs/raw/memory/conversation-history.mdx +1 -0
- package/.docs/raw/memory/memory-processors.mdx +4 -3
- package/.docs/raw/memory/overview.mdx +9 -5
- package/.docs/raw/memory/semantic-recall.mdx +12 -7
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +10 -5
- package/.docs/raw/memory/storage/memory-with-pg.mdx +9 -4
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +9 -4
- package/.docs/raw/memory/threads-and-resources.mdx +11 -13
- package/.docs/raw/memory/working-memory.mdx +30 -14
- package/.docs/raw/observability/overview.mdx +13 -30
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/arize.mdx +10 -18
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/braintrust.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/cloud.mdx +11 -17
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/default.mdx +16 -20
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/langfuse.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/langsmith.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/otel.mdx +9 -18
- package/.docs/raw/observability/{ai-tracing → tracing}/overview.mdx +107 -142
- package/.docs/raw/observability/{ai-tracing → tracing}/processors/sensitive-data-filter.mdx +14 -13
- package/.docs/raw/rag/chunking-and-embedding.mdx +5 -5
- package/.docs/raw/rag/overview.mdx +3 -13
- package/.docs/raw/rag/retrieval.mdx +24 -12
- package/.docs/raw/rag/vector-databases.mdx +7 -1
- package/.docs/raw/reference/agents/agent.mdx +33 -28
- package/.docs/raw/reference/agents/generate.mdx +10 -10
- package/.docs/raw/reference/agents/generateLegacy.mdx +8 -8
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +21 -15
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +69 -0
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +22 -16
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +8 -8
- package/.docs/raw/reference/agents/getLLM.mdx +9 -9
- package/.docs/raw/reference/agents/getMemory.mdx +9 -9
- package/.docs/raw/reference/agents/getModel.mdx +10 -10
- package/.docs/raw/reference/agents/getVoice.mdx +8 -8
- package/.docs/raw/reference/agents/listAgents.mdx +9 -9
- package/.docs/raw/reference/agents/listScorers.mdx +7 -7
- package/.docs/raw/reference/agents/listTools.mdx +7 -7
- package/.docs/raw/reference/agents/listWorkflows.mdx +7 -7
- package/.docs/raw/reference/agents/network.mdx +11 -10
- package/.docs/raw/reference/auth/auth0.mdx +4 -4
- package/.docs/raw/reference/auth/clerk.mdx +4 -4
- package/.docs/raw/reference/auth/firebase.mdx +6 -6
- package/.docs/raw/reference/auth/jwt.mdx +4 -4
- package/.docs/raw/reference/auth/supabase.mdx +4 -4
- package/.docs/raw/reference/auth/workos.mdx +4 -4
- package/.docs/raw/reference/cli/mastra.mdx +7 -7
- package/.docs/raw/reference/client-js/agents.mdx +6 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +7 -7
- package/.docs/raw/reference/client-js/memory.mdx +24 -16
- package/.docs/raw/reference/client-js/observability.mdx +11 -11
- package/.docs/raw/reference/client-js/workflows.mdx +6 -34
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +2 -2
- package/.docs/raw/reference/core/getLogger.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServer.mdx +31 -15
- package/.docs/raw/reference/core/getMCPServerById.mdx +81 -0
- package/.docs/raw/reference/core/getScorer.mdx +3 -3
- package/.docs/raw/reference/core/getScorerById.mdx +79 -0
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getTelemetry.mdx +2 -2
- package/.docs/raw/reference/core/getVector.mdx +2 -2
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listLogs.mdx +2 -2
- package/.docs/raw/reference/core/listLogsByRunId.mdx +2 -2
- package/.docs/raw/reference/core/listMCPServers.mdx +65 -0
- package/.docs/raw/reference/core/listScorers.mdx +3 -3
- package/.docs/raw/reference/core/listVectors.mdx +36 -0
- package/.docs/raw/reference/core/listWorkflows.mdx +6 -6
- package/.docs/raw/reference/core/mastra-class.mdx +3 -2
- package/.docs/raw/reference/core/setLogger.mdx +2 -2
- package/.docs/raw/reference/core/setStorage.mdx +3 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +2 -2
- package/.docs/raw/reference/deployer/cloudflare.mdx +2 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -6
- package/.docs/raw/reference/deployer/netlify.mdx +2 -2
- package/.docs/raw/reference/deployer/vercel.mdx +3 -3
- package/.docs/raw/reference/evals/answer-relevancy.mdx +164 -126
- package/.docs/raw/reference/{scorers → evals}/answer-similarity.mdx +27 -27
- package/.docs/raw/reference/evals/bias.mdx +149 -115
- package/.docs/raw/reference/evals/completeness.mdx +148 -117
- package/.docs/raw/reference/evals/content-similarity.mdx +126 -113
- package/.docs/raw/reference/evals/context-precision.mdx +290 -133
- package/.docs/raw/reference/{scorers → evals}/context-relevance.mdx +6 -6
- package/.docs/raw/reference/{scorers → evals}/create-scorer.mdx +11 -11
- package/.docs/raw/reference/evals/faithfulness.mdx +163 -121
- package/.docs/raw/reference/evals/hallucination.mdx +159 -132
- package/.docs/raw/reference/evals/keyword-coverage.mdx +169 -125
- package/.docs/raw/reference/{scorers → evals}/mastra-scorer.mdx +5 -5
- package/.docs/raw/reference/{scorers → evals}/noise-sensitivity.mdx +9 -9
- package/.docs/raw/reference/evals/prompt-alignment.mdx +604 -182
- package/.docs/raw/reference/{scorers/run-experiment.mdx → evals/run-evals.mdx} +17 -18
- package/.docs/raw/reference/evals/textual-difference.mdx +149 -117
- package/.docs/raw/reference/evals/tone-consistency.mdx +149 -125
- package/.docs/raw/reference/{scorers → evals}/tool-call-accuracy.mdx +8 -6
- package/.docs/raw/reference/evals/toxicity.mdx +152 -96
- package/.docs/raw/reference/{observability/logging → logging}/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +5 -5
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -7
- package/.docs/raw/reference/memory/getThreadById.mdx +4 -4
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +110 -0
- package/.docs/raw/reference/memory/memory-class.mdx +13 -9
- package/.docs/raw/reference/memory/query.mdx +58 -57
- package/.docs/raw/reference/memory/recall.mdx +185 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +245 -0
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/arize.mdx +13 -13
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/braintrust.mdx +11 -8
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/cloud-exporter.mdx +21 -19
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/console-exporter.mdx +49 -17
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/default-exporter.mdx +42 -41
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/langfuse.mdx +10 -7
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/langsmith.mdx +10 -7
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/otel.mdx +5 -5
- package/.docs/raw/reference/observability/tracing/instances.mdx +168 -0
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/interfaces.mdx +115 -89
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/reference/observability/{ai-tracing/span.mdx → tracing/spans.mdx} +59 -41
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +1 -1
- package/.docs/raw/reference/processors/language-detector.mdx +1 -1
- package/.docs/raw/reference/processors/moderation-processor.mdx +1 -1
- package/.docs/raw/reference/processors/pii-detector.mdx +1 -1
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +1 -1
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +1 -1
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +1 -1
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +1 -1
- package/.docs/raw/reference/rag/chunk.mdx +1 -8
- package/.docs/raw/reference/rag/database-config.mdx +7 -7
- package/.docs/raw/reference/rag/metadata-filters.mdx +14 -11
- package/.docs/raw/reference/storage/libsql.mdx +2 -0
- package/.docs/raw/reference/storage/mssql.mdx +5 -0
- package/.docs/raw/reference/storage/postgresql.mdx +6 -0
- package/.docs/raw/reference/storage/upstash.mdx +1 -0
- package/.docs/raw/reference/streaming/agents/stream.mdx +12 -12
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +8 -8
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +3 -3
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +3 -3
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +6 -6
- package/.docs/raw/reference/streaming/workflows/stream.mdx +10 -10
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +11 -11
- package/.docs/raw/reference/templates/overview.mdx +2 -2
- package/.docs/raw/reference/tools/create-tool.mdx +52 -35
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +15 -15
- package/.docs/raw/reference/tools/mcp-client.mdx +1 -1
- package/.docs/raw/reference/tools/mcp-server.mdx +119 -35
- package/.docs/raw/reference/tools/vector-query-tool.mdx +27 -26
- package/.docs/raw/reference/vectors/libsql.mdx +1 -0
- package/.docs/raw/reference/vectors/pg.mdx +3 -0
- package/.docs/raw/reference/vectors/upstash.mdx +1 -0
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -4
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +14 -14
- package/.docs/raw/reference/workflows/run-methods/start.mdx +17 -17
- package/.docs/raw/reference/workflows/run.mdx +1 -8
- package/.docs/raw/reference/workflows/step.mdx +5 -5
- 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 -13
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +5 -0
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +1 -1
- package/.docs/raw/server-db/custom-api-routes.mdx +2 -2
- package/.docs/raw/server-db/mastra-client.mdx +19 -18
- package/.docs/raw/server-db/middleware.mdx +7 -7
- package/.docs/raw/server-db/production-server.mdx +4 -4
- package/.docs/raw/server-db/{runtime-context.mdx → request-context.mdx} +46 -45
- package/.docs/raw/server-db/storage.mdx +29 -21
- package/.docs/raw/streaming/events.mdx +3 -3
- package/.docs/raw/streaming/overview.mdx +5 -5
- package/.docs/raw/streaming/tool-streaming.mdx +18 -17
- package/.docs/raw/streaming/workflow-streaming.mdx +1 -1
- package/.docs/raw/tools-mcp/advanced-usage.mdx +5 -4
- package/.docs/raw/tools-mcp/mcp-overview.mdx +32 -19
- package/.docs/raw/tools-mcp/overview.mdx +11 -11
- package/.docs/raw/voice/overview.mdx +63 -43
- package/.docs/raw/voice/speech-to-speech.mdx +5 -3
- package/.docs/raw/voice/speech-to-text.mdx +9 -8
- package/.docs/raw/voice/text-to-speech.mdx +12 -11
- package/.docs/raw/workflows/agents-and-tools.mdx +9 -5
- package/.docs/raw/workflows/control-flow.mdx +3 -3
- package/.docs/raw/workflows/error-handling.mdx +2 -21
- package/.docs/raw/workflows/human-in-the-loop.mdx +7 -4
- package/.docs/raw/workflows/inngest-workflow.mdx +2 -2
- package/.docs/raw/workflows/input-data-mapping.mdx +107 -0
- package/.docs/raw/workflows/overview.mdx +17 -16
- package/.docs/raw/workflows/snapshots.mdx +13 -11
- package/.docs/raw/workflows/suspend-and-resume.mdx +23 -15
- package/CHANGELOG.md +52 -57
- package/README.md +11 -2
- package/dist/{chunk-TUAHUTTB.js → chunk-5NJC7NRO.js} +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/prompts/migration.d.ts +6 -0
- package/dist/prompts/migration.d.ts.map +1 -0
- package/dist/stdio.js +402 -30
- package/dist/tools/migration.d.ts +40 -0
- package/dist/tools/migration.d.ts.map +1 -0
- package/package.json +8 -12
- package/.docs/organized/changelogs/%40mastra%2Fcloud.md +0 -302
- package/.docs/raw/observability/nextjs-tracing.mdx +0 -109
- package/.docs/raw/observability/otel-tracing.mdx +0 -189
- package/.docs/raw/reference/agents/getScorers.mdx +0 -69
- package/.docs/raw/reference/agents/getTools.mdx +0 -69
- package/.docs/raw/reference/agents/getWorkflows.mdx +0 -69
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +0 -143
- package/.docs/raw/reference/core/getAgents.mdx +0 -35
- package/.docs/raw/reference/core/getLogs.mdx +0 -96
- package/.docs/raw/reference/core/getLogsByRunId.mdx +0 -87
- package/.docs/raw/reference/core/getMCPServers.mdx +0 -36
- package/.docs/raw/reference/core/getMemory.mdx +0 -36
- package/.docs/raw/reference/core/getScorerByName.mdx +0 -78
- package/.docs/raw/reference/core/getScorers.mdx +0 -43
- package/.docs/raw/reference/core/getVectors.mdx +0 -36
- package/.docs/raw/reference/core/getWorkflows.mdx +0 -45
- package/.docs/raw/reference/evals/context-position.mdx +0 -197
- package/.docs/raw/reference/evals/context-relevancy.mdx +0 -196
- package/.docs/raw/reference/evals/contextual-recall.mdx +0 -196
- package/.docs/raw/reference/evals/summarization.mdx +0 -212
- package/.docs/raw/reference/legacyWorkflows/after.mdx +0 -89
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +0 -79
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +0 -33
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +0 -76
- package/.docs/raw/reference/legacyWorkflows/else.mdx +0 -68
- package/.docs/raw/reference/legacyWorkflows/events.mdx +0 -305
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +0 -110
- package/.docs/raw/reference/legacyWorkflows/if.mdx +0 -108
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +0 -158
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +0 -133
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +0 -207
- package/.docs/raw/reference/legacyWorkflows/start.mdx +0 -87
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +0 -100
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +0 -137
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +0 -93
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +0 -69
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +0 -196
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +0 -70
- package/.docs/raw/reference/legacyWorkflows/then.mdx +0 -72
- package/.docs/raw/reference/legacyWorkflows/until.mdx +0 -168
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +0 -124
- package/.docs/raw/reference/legacyWorkflows/while.mdx +0 -168
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +0 -234
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +0 -79
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +0 -110
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +0 -185
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +0 -238
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +0 -117
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +0 -81
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +0 -121
- package/.docs/raw/reference/observability/otel-tracing/providers/braintrust.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +0 -20
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +0 -73
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +0 -41
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +0 -84
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +0 -48
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +0 -43
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +0 -40
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +0 -227
- package/.docs/raw/reference/scorers/bias.mdx +0 -228
- package/.docs/raw/reference/scorers/completeness.mdx +0 -214
- package/.docs/raw/reference/scorers/content-similarity.mdx +0 -197
- package/.docs/raw/reference/scorers/context-precision.mdx +0 -352
- package/.docs/raw/reference/scorers/faithfulness.mdx +0 -241
- package/.docs/raw/reference/scorers/hallucination.mdx +0 -252
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +0 -229
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +0 -668
- package/.docs/raw/reference/scorers/textual-difference.mdx +0 -203
- package/.docs/raw/reference/scorers/tone-consistency.mdx +0 -211
- package/.docs/raw/reference/scorers/toxicity.mdx +0 -228
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +0 -73
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +0 -24
- package/.docs/raw/scorers/evals-old-api/overview.mdx +0 -106
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +0 -85
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +0 -58
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +0 -50
- package/.docs/raw/workflows-legacy/control-flow.mdx +0 -774
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +0 -239
- package/.docs/raw/workflows-legacy/error-handling.mdx +0 -187
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +0 -360
- package/.docs/raw/workflows-legacy/overview.mdx +0 -182
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +0 -156
- package/.docs/raw/workflows-legacy/steps.mdx +0 -115
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +0 -406
- package/.docs/raw/workflows-legacy/variables.mdx +0 -318
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Defining Steps in a Workflow (Legacy) | Workflows (Legacy) | Mastra Docs"
|
|
3
|
-
sidebar_position: 2
|
|
4
|
-
sidebar_label: "Steps"
|
|
5
|
-
description: "Steps in Mastra workflows provide a structured way to manage operations by defining inputs, outputs, and execution logic."
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Defining Steps in a Workflow (Legacy)
|
|
9
|
-
|
|
10
|
-
When you build a workflow, you typically break down operations into smaller tasks that can be linked and reused. Steps provide a structured way to manage these tasks by defining inputs, outputs, and execution logic.
|
|
11
|
-
|
|
12
|
-
The code below shows how to define these steps inline or separately.
|
|
13
|
-
|
|
14
|
-
## Inline Step Creation
|
|
15
|
-
|
|
16
|
-
You can create steps directly within your workflow using `.step()` and `.then()`. This code shows how to define, link, and execute two steps in sequence.
|
|
17
|
-
|
|
18
|
-
```typescript showLineNumbers title="src/mastra/workflows/index.ts" copy
|
|
19
|
-
import { Mastra } from "@mastra/core";
|
|
20
|
-
import { LegacyStep, LegacyWorkflow } from "@mastra/core/workflows/legacy";
|
|
21
|
-
import { z } from "zod";
|
|
22
|
-
|
|
23
|
-
export const myWorkflow = new LegacyWorkflow({
|
|
24
|
-
name: "my-workflow",
|
|
25
|
-
triggerSchema: z.object({
|
|
26
|
-
inputValue: z.number(),
|
|
27
|
-
}),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
myWorkflow
|
|
31
|
-
.step(
|
|
32
|
-
new LegacyStep({
|
|
33
|
-
id: "stepOne",
|
|
34
|
-
outputSchema: z.object({
|
|
35
|
-
doubledValue: z.number(),
|
|
36
|
-
}),
|
|
37
|
-
execute: async ({ context }) => ({
|
|
38
|
-
doubledValue: context.triggerData.inputValue * 2,
|
|
39
|
-
}),
|
|
40
|
-
}),
|
|
41
|
-
)
|
|
42
|
-
.then(
|
|
43
|
-
new LegacyStep({
|
|
44
|
-
id: "stepTwo",
|
|
45
|
-
outputSchema: z.object({
|
|
46
|
-
incrementedValue: z.number(),
|
|
47
|
-
}),
|
|
48
|
-
execute: async ({ context }) => {
|
|
49
|
-
if (context.steps.stepOne.status !== "success") {
|
|
50
|
-
return { incrementedValue: 0 };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
incrementedValue: context.steps.stepOne.output.doubledValue + 1,
|
|
55
|
-
};
|
|
56
|
-
},
|
|
57
|
-
}),
|
|
58
|
-
)
|
|
59
|
-
.commit();
|
|
60
|
-
|
|
61
|
-
// Register the workflow with Mastra
|
|
62
|
-
export const mastra = new Mastra({
|
|
63
|
-
legacy_workflows: { myWorkflow },
|
|
64
|
-
});
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Creating Steps Separately
|
|
68
|
-
|
|
69
|
-
If you prefer to manage your step logic in separate entities, you can define steps outside and then add them to your workflow. This code shows how to define steps independently and link them afterward.
|
|
70
|
-
|
|
71
|
-
```typescript showLineNumbers title="src/mastra/workflows/index.ts" copy
|
|
72
|
-
import { Mastra } from "@mastra/core";
|
|
73
|
-
import { LegacyStep, LegacyWorkflow } from "@mastra/core/workflows/legacy";
|
|
74
|
-
import { z } from "zod";
|
|
75
|
-
|
|
76
|
-
// Define steps separately
|
|
77
|
-
const stepOne = new LegacyStep({
|
|
78
|
-
id: "stepOne",
|
|
79
|
-
outputSchema: z.object({
|
|
80
|
-
doubledValue: z.number(),
|
|
81
|
-
}),
|
|
82
|
-
execute: async ({ context }) => ({
|
|
83
|
-
doubledValue: context.triggerData.inputValue * 2,
|
|
84
|
-
}),
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
const stepTwo = new LegacyStep({
|
|
88
|
-
id: "stepTwo",
|
|
89
|
-
outputSchema: z.object({
|
|
90
|
-
incrementedValue: z.number(),
|
|
91
|
-
}),
|
|
92
|
-
execute: async ({ context }) => {
|
|
93
|
-
if (context.steps.stepOne.status !== "success") {
|
|
94
|
-
return { incrementedValue: 0 };
|
|
95
|
-
}
|
|
96
|
-
return { incrementedValue: context.steps.stepOne.output.doubledValue + 1 };
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// Build the workflow
|
|
101
|
-
const myWorkflow = new LegacyWorkflow({
|
|
102
|
-
name: "my-workflow",
|
|
103
|
-
triggerSchema: z.object({
|
|
104
|
-
inputValue: z.number(),
|
|
105
|
-
}),
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
myWorkflow.step(stepOne).then(stepTwo);
|
|
109
|
-
myWorkflow.commit();
|
|
110
|
-
|
|
111
|
-
// Register the workflow with Mastra
|
|
112
|
-
export const mastra = new Mastra({
|
|
113
|
-
legacy_workflows: { myWorkflow },
|
|
114
|
-
});
|
|
115
|
-
```
|
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Suspend and Resume in Workflows (Legacy) | Workflows (Legacy) | Mastra Docs"
|
|
3
|
-
sidebar_position: 9
|
|
4
|
-
sidebar_label: "Suspend & Resume"
|
|
5
|
-
description: "Suspend and resume in Mastra workflows allows you to pause execution while waiting for external input or resources."
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Suspend and Resume in Workflows (Legacy)
|
|
9
|
-
|
|
10
|
-
Complex workflows often need to pause execution while waiting for external input or resources.
|
|
11
|
-
|
|
12
|
-
Mastra's suspend and resume features let you pause workflow execution at any step, persist the workflow snapshot to storage, and resume execution from the saved snapshot when ready.
|
|
13
|
-
This entire process is automatically managed by Mastra. No config needed, or manual step required from the user.
|
|
14
|
-
|
|
15
|
-
Storing the workflow snapshot to storage (LibSQL by default) means that the workflow state is permanently preserved across sessions, deployments, and server restarts. This persistence is crucial for workflows that might remain suspended for minutes, hours, or even days while waiting for external input or resources.
|
|
16
|
-
|
|
17
|
-
## When to Use Suspend/Resume
|
|
18
|
-
|
|
19
|
-
Common scenarios for suspending workflows include:
|
|
20
|
-
|
|
21
|
-
- Waiting for human approval or input
|
|
22
|
-
- Pausing until external API resources become available
|
|
23
|
-
- Collecting additional data needed for later steps
|
|
24
|
-
- Rate limiting or throttling expensive operations
|
|
25
|
-
- Handling event-driven processes with external triggers
|
|
26
|
-
|
|
27
|
-
## Basic Suspend Example
|
|
28
|
-
|
|
29
|
-
Here's a simple workflow that suspends when a value is too low and resumes when given a higher value:
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
import { LegacyStep, LegacyWorkflow } from "@mastra/core/workflows/legacy";
|
|
33
|
-
|
|
34
|
-
const stepTwo = new LegacyStep({
|
|
35
|
-
id: "stepTwo",
|
|
36
|
-
outputSchema: z.object({
|
|
37
|
-
incrementedValue: z.number(),
|
|
38
|
-
}),
|
|
39
|
-
execute: async ({ context, suspend }) => {
|
|
40
|
-
if (context.steps.stepOne.status !== "success") {
|
|
41
|
-
return { incrementedValue: 0 };
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const currentValue = context.steps.stepOne.output.doubledValue;
|
|
45
|
-
|
|
46
|
-
if (currentValue < 100) {
|
|
47
|
-
await suspend();
|
|
48
|
-
return { incrementedValue: 0 };
|
|
49
|
-
}
|
|
50
|
-
return { incrementedValue: currentValue + 1 };
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Async/Await Based Flow
|
|
56
|
-
|
|
57
|
-
The suspend and resume mechanism in Mastra uses an async/await pattern that makes it intuitive to implement complex workflows with suspension points. The code structure naturally reflects the execution flow.
|
|
58
|
-
|
|
59
|
-
### How It Works
|
|
60
|
-
|
|
61
|
-
1. A step's execution function receives a `suspend` function in its parameters
|
|
62
|
-
2. When called with `await suspend()`, the workflow pauses at that point
|
|
63
|
-
3. The workflow state is persisted
|
|
64
|
-
4. Later, the workflow can be resumed by calling `workflow.resume()` with the appropriate parameters
|
|
65
|
-
5. Execution continues from the point after the `suspend()` call
|
|
66
|
-
|
|
67
|
-
### Example with Multiple Suspension Points
|
|
68
|
-
|
|
69
|
-
Here's an example of a workflow with multiple steps that can suspend:
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
// Define steps with suspend capability
|
|
73
|
-
const promptAgentStep = new LegacyStep({
|
|
74
|
-
id: "promptAgent",
|
|
75
|
-
execute: async ({ context, suspend }) => {
|
|
76
|
-
// Some condition that determines if we need to suspend
|
|
77
|
-
if (needHumanInput) {
|
|
78
|
-
// Optionally pass payload data that will be stored with suspended state
|
|
79
|
-
await suspend({ requestReason: "Need human input for prompt" });
|
|
80
|
-
// Code after suspend() will execute when the step is resumed
|
|
81
|
-
return { modelOutput: context.userInput };
|
|
82
|
-
}
|
|
83
|
-
return { modelOutput: "AI generated output" };
|
|
84
|
-
},
|
|
85
|
-
outputSchema: z.object({ modelOutput: z.string() }),
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const improveResponseStep = new LegacyStep({
|
|
89
|
-
id: "improveResponse",
|
|
90
|
-
execute: async ({ context, suspend }) => {
|
|
91
|
-
// Another condition for suspension
|
|
92
|
-
if (needFurtherRefinement) {
|
|
93
|
-
await suspend();
|
|
94
|
-
return { improvedOutput: context.refinedOutput };
|
|
95
|
-
}
|
|
96
|
-
return { improvedOutput: "Improved output" };
|
|
97
|
-
},
|
|
98
|
-
outputSchema: z.object({ improvedOutput: z.string() }),
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
// Build the workflow
|
|
102
|
-
const workflow = new LegacyWorkflow({
|
|
103
|
-
name: "multi-suspend-workflow",
|
|
104
|
-
triggerSchema: z.object({ input: z.string() }),
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
workflow
|
|
108
|
-
.step(getUserInput)
|
|
109
|
-
.then(promptAgentStep)
|
|
110
|
-
.then(evaluateTone)
|
|
111
|
-
.then(improveResponseStep)
|
|
112
|
-
.then(evaluateImproved)
|
|
113
|
-
.commit();
|
|
114
|
-
|
|
115
|
-
// Register the workflow with Mastra
|
|
116
|
-
export const mastra = new Mastra({
|
|
117
|
-
legacy_workflows: { workflow },
|
|
118
|
-
});
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Starting and Resuming the Workflow
|
|
122
|
-
|
|
123
|
-
```typescript
|
|
124
|
-
// Get the workflow and create a run
|
|
125
|
-
const wf = mastra.legacy_getWorkflow("multi-suspend-workflow");
|
|
126
|
-
const run = wf.createRun();
|
|
127
|
-
|
|
128
|
-
// Start the workflow
|
|
129
|
-
const initialResult = await run.start({
|
|
130
|
-
triggerData: { input: "initial input" },
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
let promptAgentStepResult = initialResult.activePaths.get("promptAgent");
|
|
134
|
-
let promptAgentResumeResult = undefined;
|
|
135
|
-
|
|
136
|
-
// Check if a step is suspended
|
|
137
|
-
if (promptAgentStepResult?.status === "suspended") {
|
|
138
|
-
console.log("Workflow suspended at promptAgent step");
|
|
139
|
-
|
|
140
|
-
// Resume the workflow with new context
|
|
141
|
-
const resumeResult = await run.resume({
|
|
142
|
-
stepId: "promptAgent",
|
|
143
|
-
context: { userInput: "Human provided input" },
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
promptAgentResumeResult = resumeResult;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const improveResponseStepResult =
|
|
150
|
-
promptAgentResumeResult?.activePaths.get("improveResponse");
|
|
151
|
-
|
|
152
|
-
if (improveResponseStepResult?.status === "suspended") {
|
|
153
|
-
console.log("Workflow suspended at improveResponse step");
|
|
154
|
-
|
|
155
|
-
// Resume again with different context
|
|
156
|
-
const finalResult = await run.resume({
|
|
157
|
-
stepId: "improveResponse",
|
|
158
|
-
context: { refinedOutput: "Human refined output" },
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
console.log("Workflow completed:", finalResult?.results);
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Event-Based Suspension and Resumption
|
|
166
|
-
|
|
167
|
-
In addition to manually suspending steps, Mastra provides event-based suspension through the `afterEvent` method. This allows workflows to automatically suspend and wait for a specific event to occur before continuing.
|
|
168
|
-
|
|
169
|
-
### Using afterEvent and resumeWithEvent
|
|
170
|
-
|
|
171
|
-
The `afterEvent` method automatically creates a suspension point in your workflow that waits for a specific event to occur. When the event happens, you can use `resumeWithEvent` to continue the workflow with the event data.
|
|
172
|
-
|
|
173
|
-
Here's how it works:
|
|
174
|
-
|
|
175
|
-
1. Define events in your workflow configuration
|
|
176
|
-
2. Use `afterEvent` to create a suspension point waiting for that event
|
|
177
|
-
3. When the event occurs, call `resumeWithEvent` with the event name and data
|
|
178
|
-
|
|
179
|
-
### Example: Event-Based Workflow
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
// Define steps
|
|
183
|
-
const getUserInput = new LegacyStep({
|
|
184
|
-
id: "getUserInput",
|
|
185
|
-
execute: async () => ({ userInput: "initial input" }),
|
|
186
|
-
outputSchema: z.object({ userInput: z.string() }),
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
const processApproval = new LegacyStep({
|
|
190
|
-
id: "processApproval",
|
|
191
|
-
execute: async ({ context }) => {
|
|
192
|
-
// Access the event data from the context
|
|
193
|
-
const approvalData = context.inputData?.resumedEvent;
|
|
194
|
-
return {
|
|
195
|
-
approved: approvalData?.approved,
|
|
196
|
-
approvedBy: approvalData?.approverName,
|
|
197
|
-
};
|
|
198
|
-
},
|
|
199
|
-
outputSchema: z.object({
|
|
200
|
-
approved: z.boolean(),
|
|
201
|
-
approvedBy: z.string(),
|
|
202
|
-
}),
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
// Create workflow with event definition
|
|
206
|
-
const approvalWorkflow = new LegacyWorkflow({
|
|
207
|
-
name: "approval-workflow",
|
|
208
|
-
triggerSchema: z.object({ requestId: z.string() }),
|
|
209
|
-
events: {
|
|
210
|
-
approvalReceived: {
|
|
211
|
-
schema: z.object({
|
|
212
|
-
approved: z.boolean(),
|
|
213
|
-
approverName: z.string(),
|
|
214
|
-
}),
|
|
215
|
-
},
|
|
216
|
-
},
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
// Build workflow with event-based suspension
|
|
220
|
-
approvalWorkflow
|
|
221
|
-
.step(getUserInput)
|
|
222
|
-
.afterEvent("approvalReceived") // Workflow will automatically suspend here
|
|
223
|
-
.step(processApproval) // This step runs after the event is received
|
|
224
|
-
.commit();
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### Running an Event-Based Workflow
|
|
228
|
-
|
|
229
|
-
```typescript
|
|
230
|
-
// Get the workflow
|
|
231
|
-
const workflow = mastra.legacy_getWorkflow("approval-workflow");
|
|
232
|
-
const run = workflow.createRun();
|
|
233
|
-
|
|
234
|
-
// Start the workflow
|
|
235
|
-
const initialResult = await run.start({
|
|
236
|
-
triggerData: { requestId: "request-123" },
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
console.log("Workflow started, waiting for approval event");
|
|
240
|
-
console.log(initialResult.results);
|
|
241
|
-
// Output will show the workflow is suspended at the event step:
|
|
242
|
-
// {
|
|
243
|
-
// getUserInput: { status: 'success', output: { userInput: 'initial input' } },
|
|
244
|
-
// __approvalReceived_event: { status: 'suspended' }
|
|
245
|
-
// }
|
|
246
|
-
|
|
247
|
-
// Later, when the approval event occurs:
|
|
248
|
-
const resumeResult = await run.resumeWithEvent("approvalReceived", {
|
|
249
|
-
approved: true,
|
|
250
|
-
approverName: "Jane Doe",
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
console.log("Workflow resumed with event data:", resumeResult.results);
|
|
254
|
-
// Output will show the completed workflow:
|
|
255
|
-
// {
|
|
256
|
-
// getUserInput: { status: 'success', output: { userInput: 'initial input' } },
|
|
257
|
-
// __approvalReceived_event: { status: 'success', output: { executed: true, resumedEvent: { approved: true, approverName: 'Jane Doe' } } },
|
|
258
|
-
// processApproval: { status: 'success', output: { approved: true, approvedBy: 'Jane Doe' } }
|
|
259
|
-
// }
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Key Points About Event-Based Workflows
|
|
263
|
-
|
|
264
|
-
- The `suspend()` function can optionally take a payload object that will be stored with the suspended state
|
|
265
|
-
- Code after the `await suspend()` call will not execute until the step is resumed
|
|
266
|
-
- When a step is suspended, its status becomes `'suspended'` in the workflow results
|
|
267
|
-
- When resumed, the step's status changes from `'suspended'` to `'success'` once completed
|
|
268
|
-
- The `resume()` method requires the `stepId` to identify which suspended step to resume
|
|
269
|
-
- You can provide new context data when resuming that will be merged with existing step results
|
|
270
|
-
|
|
271
|
-
- Events must be defined in the workflow configuration with a schema
|
|
272
|
-
- The `afterEvent` method creates a special suspended step that waits for the event
|
|
273
|
-
- The event step is automatically named `__eventName_event` (e.g., `__approvalReceived_event`)
|
|
274
|
-
- Use `resumeWithEvent` to provide event data and continue the workflow
|
|
275
|
-
- Event data is validated against the schema defined for that event
|
|
276
|
-
- The event data is available in the context as `inputData.resumedEvent`
|
|
277
|
-
|
|
278
|
-
## Storage for Suspend and Resume
|
|
279
|
-
|
|
280
|
-
When a workflow is suspended using `await suspend()`, Mastra automatically persists the entire workflow state to storage. This is essential for workflows that might remain suspended for extended periods, as it ensures the state is preserved across application restarts or server instances.
|
|
281
|
-
|
|
282
|
-
### Default Storage: LibSQL
|
|
283
|
-
|
|
284
|
-
By default, Mastra uses LibSQL as its storage engine:
|
|
285
|
-
|
|
286
|
-
```typescript
|
|
287
|
-
import { Mastra } from "@mastra/core/mastra";
|
|
288
|
-
import { LibSQLStore } from "@mastra/libsql";
|
|
289
|
-
|
|
290
|
-
const mastra = new Mastra({
|
|
291
|
-
storage: new LibSQLStore({
|
|
292
|
-
url: "file:./storage.db", // Local file-based database for development
|
|
293
|
-
// For production, use a persistent URL:
|
|
294
|
-
// url: process.env.DATABASE_URL,
|
|
295
|
-
// authToken: process.env.DATABASE_AUTH_TOKEN, // Optional for authenticated connections
|
|
296
|
-
}),
|
|
297
|
-
});
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
The LibSQL storage can be configured in different modes:
|
|
301
|
-
|
|
302
|
-
- In-memory database (testing): `:memory:`
|
|
303
|
-
- File-based database (development): `file:storage.db`
|
|
304
|
-
- Remote database (production): URLs like `libsql://your-database.turso.io`
|
|
305
|
-
|
|
306
|
-
### Alternative Storage Options
|
|
307
|
-
|
|
308
|
-
#### Upstash (Redis-Compatible)
|
|
309
|
-
|
|
310
|
-
For serverless applications or environments where Redis is preferred:
|
|
311
|
-
|
|
312
|
-
```bash copy
|
|
313
|
-
npm install @mastra/upstash@latest
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
```typescript
|
|
317
|
-
import { Mastra } from "@mastra/core/mastra";
|
|
318
|
-
import { UpstashStore } from "@mastra/upstash";
|
|
319
|
-
|
|
320
|
-
const mastra = new Mastra({
|
|
321
|
-
storage: new UpstashStore({
|
|
322
|
-
url: process.env.UPSTASH_URL,
|
|
323
|
-
token: process.env.UPSTASH_TOKEN,
|
|
324
|
-
}),
|
|
325
|
-
});
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
### Storage Considerations
|
|
329
|
-
|
|
330
|
-
- All storage options support suspend and resume functionality identically
|
|
331
|
-
- The workflow state is automatically serialized and saved when suspended
|
|
332
|
-
- No additional configuration is needed for suspend/resume to work with storage
|
|
333
|
-
- Choose your storage option based on your infrastructure, scaling needs, and existing technology stack
|
|
334
|
-
|
|
335
|
-
## Watching and Resuming
|
|
336
|
-
|
|
337
|
-
To handle suspended workflows, use the `watch` method to monitor workflow status per run and `resume` to continue execution:
|
|
338
|
-
|
|
339
|
-
```typescript
|
|
340
|
-
import { mastra } from "./index";
|
|
341
|
-
|
|
342
|
-
// Get the workflow
|
|
343
|
-
const myWorkflow = mastra.legacy_getWorkflow("myWorkflow");
|
|
344
|
-
const { start, watch, resume } = myWorkflow.createRun();
|
|
345
|
-
|
|
346
|
-
// Start watching the workflow before executing it
|
|
347
|
-
watch(async ({ activePaths }) => {
|
|
348
|
-
const isStepTwoSuspended = activePaths.get("stepTwo")?.status === "suspended";
|
|
349
|
-
if (isStepTwoSuspended) {
|
|
350
|
-
console.log("Workflow suspended, resuming with new value");
|
|
351
|
-
|
|
352
|
-
// Resume the workflow with new context
|
|
353
|
-
await resume({
|
|
354
|
-
stepId: "stepTwo",
|
|
355
|
-
context: { secondValue: 100 },
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
// Start the workflow execution
|
|
361
|
-
await start({ triggerData: { inputValue: 45 } });
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
### Watching and Resuming Event-Based Workflows
|
|
365
|
-
|
|
366
|
-
You can use the same watching pattern with event-based workflows:
|
|
367
|
-
|
|
368
|
-
```typescript
|
|
369
|
-
const { start, watch, resumeWithEvent } = workflow.createRun();
|
|
370
|
-
|
|
371
|
-
// Watch for suspended event steps
|
|
372
|
-
watch(async ({ activePaths }) => {
|
|
373
|
-
const isApprovalReceivedSuspended =
|
|
374
|
-
activePaths.get("__approvalReceived_event")?.status === "suspended";
|
|
375
|
-
if (isApprovalReceivedSuspended) {
|
|
376
|
-
console.log("Workflow waiting for approval event");
|
|
377
|
-
|
|
378
|
-
// In a real scenario, you would wait for the actual event to occur
|
|
379
|
-
// For example, this could be triggered by a webhook or user interaction
|
|
380
|
-
setTimeout(async () => {
|
|
381
|
-
await resumeWithEvent("approvalReceived", {
|
|
382
|
-
approved: true,
|
|
383
|
-
approverName: "Auto Approver",
|
|
384
|
-
});
|
|
385
|
-
}, 5000); // Simulate event after 5 seconds
|
|
386
|
-
}
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
// Start the workflow
|
|
390
|
-
await start({ triggerData: { requestId: "auto-123" } });
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
## Further Reading
|
|
394
|
-
|
|
395
|
-
For a deeper understanding of how suspend and resume works under the hood:
|
|
396
|
-
|
|
397
|
-
- [Understanding Snapshots in Mastra Workflows](/reference/legacyWorkflows/snapshots) - Learn about the snapshot mechanism that powers suspend and resume functionality
|
|
398
|
-
- [Step Configuration Guide](./steps) - Learn more about configuring steps in your workflows
|
|
399
|
-
- [Control Flow Guide](./control-flow) - Advanced workflow control patterns
|
|
400
|
-
- [Event-Driven Workflows](/reference/legacyWorkflows/events) - Detailed reference for event-based workflows
|
|
401
|
-
|
|
402
|
-
## Related Resources
|
|
403
|
-
|
|
404
|
-
- See the [Suspend and Resume Example](/examples/workflows_legacy/suspend-and-resume) for a complete working example
|
|
405
|
-
- Check the [Step Class Reference](/reference/legacyWorkflows/step-class) for suspend/resume API details
|
|
406
|
-
- Review [Workflow Observability](/docs/observability/otel-tracing) for monitoring suspended workflows
|