@mastra/mcp-docs-server 0.13.39 → 0.13.40-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +18 -18
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +32 -32
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +9 -9
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +9 -9
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +9 -9
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +13 -13
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +8 -8
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +11 -11
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Freact.md +8 -8
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +8 -8
- package/.docs/organized/changelogs/create-mastra.md +3 -3
- package/.docs/organized/changelogs/mastra.md +13 -13
- package/.docs/raw/agents/adding-voice.mdx +1 -1
- package/.docs/raw/agents/agent-memory.mdx +1 -1
- package/.docs/raw/agents/guardrails.mdx +1 -1
- package/.docs/raw/agents/networks.mdx +1 -1
- package/.docs/raw/agents/overview.mdx +120 -64
- package/.docs/raw/agents/using-tools.mdx +138 -15
- package/.docs/raw/auth/auth0.mdx +1 -1
- package/.docs/raw/auth/clerk.mdx +1 -1
- package/.docs/raw/auth/firebase.mdx +1 -1
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +1 -1
- package/.docs/raw/auth/supabase.mdx +1 -1
- package/.docs/raw/auth/workos.mdx +1 -1
- package/.docs/raw/community/contributing-templates.mdx +1 -1
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/04-initializing-mcp-tools.md +2 -2
- package/.docs/raw/deployment/{server-deployment.mdx → building-mastra.mdx} +3 -3
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +1 -1
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/cloudflare-deployer.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +1 -1
- package/.docs/raw/deployment/cloud-providers/index.mdx +6 -3
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/netlify-deployer.mdx +1 -1
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/vercel-deployer.mdx +1 -1
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/dashboard.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/observability.mdx +2 -2
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/overview.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/setting-up.mdx +3 -3
- package/.docs/raw/deployment/monorepo.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +5 -5
- package/.docs/raw/deployment/web-framework.mdx +1 -1
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +5 -1
- package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +1 -1
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +1 -1
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +1 -1
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +1 -1
- package/.docs/raw/frameworks/servers/express.mdx +1 -1
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +1 -1
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +1 -1
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +1 -1
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +1 -1
- package/.docs/raw/getting-started/installation.mdx +1 -1
- package/.docs/raw/getting-started/mcp-docs-server.mdx +1 -1
- package/.docs/raw/getting-started/project-structure.mdx +1 -1
- package/.docs/raw/getting-started/studio.mdx +2 -2
- package/.docs/raw/getting-started/templates.mdx +1 -1
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/{tools-mcp/mcp-overview.mdx → mcp/overview.mdx} +2 -2
- package/.docs/raw/mcp/publishing-mcp-server.mdx +137 -0
- package/.docs/raw/memory/conversation-history.mdx +1 -1
- package/.docs/raw/memory/memory-processors.mdx +1 -1
- package/.docs/raw/memory/overview.mdx +2 -2
- package/.docs/raw/memory/semantic-recall.mdx +2 -2
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +150 -0
- package/.docs/raw/memory/storage/memory-with-pg.mdx +1 -1
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +1 -1
- package/.docs/raw/memory/threads-and-resources.mdx +1 -1
- package/.docs/raw/memory/working-memory.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +2 -2
- package/.docs/raw/observability/ai-tracing/exporters/default.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/overview.mdx +1 -1
- package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/observability/logging.mdx +5 -5
- package/.docs/raw/observability/nextjs-tracing.mdx +1 -1
- package/.docs/raw/observability/otel-tracing.mdx +1 -1
- package/.docs/raw/observability/overview.mdx +1 -1
- package/.docs/raw/rag/overview.mdx +1 -1
- package/.docs/raw/rag/retrieval.mdx +1 -1
- package/.docs/raw/rag/vector-databases.mdx +1 -1
- package/.docs/raw/reference/agents/agent.mdx +1 -1
- package/.docs/raw/reference/agents/generate.mdx +1 -1
- package/.docs/raw/reference/agents/generateLegacy.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +1 -1
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/getScorers.mdx +1 -1
- package/.docs/raw/reference/agents/getTools.mdx +2 -2
- package/.docs/raw/reference/agents/getVoice.mdx +1 -1
- package/.docs/raw/reference/agents/getWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/listAgents.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/agents/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +1 -1
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/create-mastra.mdx +1 -1
- package/.docs/raw/reference/cli/mastra.mdx +2 -2
- package/.docs/raw/reference/client-js/agents.mdx +2 -2
- 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 +5 -5
- package/.docs/raw/reference/client-js/memory.mdx +1 -1
- package/.docs/raw/reference/client-js/observability.mdx +1 -1
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +2 -2
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +1 -1
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getAgents.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/getLogs.mdx +1 -1
- package/.docs/raw/reference/core/getLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServers.mdx +2 -2
- package/.docs/raw/reference/core/getMemory.mdx +1 -1
- package/.docs/raw/reference/core/getScorer.mdx +1 -1
- package/.docs/raw/reference/core/getScorerByName.mdx +1 -1
- package/.docs/raw/reference/core/getScorers.mdx +1 -1
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getVectors.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/listLogs.mdx +1 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/listScorers.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/mastra-class.mdx +1 -1
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -1
- package/.docs/raw/reference/deployer/deployer.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -1
- package/.docs/raw/reference/deployer/vercel.mdx +1 -1
- package/.docs/raw/reference/evals/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/bias.mdx +1 -1
- package/.docs/raw/reference/evals/completeness.mdx +1 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/context-position.mdx +1 -1
- package/.docs/raw/reference/evals/context-precision.mdx +1 -1
- package/.docs/raw/reference/evals/context-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/contextual-recall.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +1 -1
- package/.docs/raw/reference/evals/hallucination.mdx +1 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/evals/prompt-alignment.mdx +1 -1
- package/.docs/raw/reference/evals/summarization.mdx +1 -1
- package/.docs/raw/reference/evals/textual-difference.mdx +1 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/evals/toxicity.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/after.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/else.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/events.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/if.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/start.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/then.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/until.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/while.mdx +1 -1
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +1 -1
- package/.docs/raw/reference/memory/createThread.mdx +1 -1
- package/.docs/raw/reference/memory/deleteMessages.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadById.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +1 -1
- package/.docs/raw/reference/memory/memory-class.mdx +1 -1
- package/.docs/raw/reference/memory/query.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/reference/observability/ai-tracing/span.mdx +1 -1
- package/.docs/raw/reference/observability/logging/pino-logger.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +1 -1
- 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 +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 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +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 +1 -1
- package/.docs/raw/reference/rag/rerank.mdx +1 -1
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +1 -1
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/scorers/answer-similarity.mdx +1 -1
- package/.docs/raw/reference/scorers/bias.mdx +1 -1
- package/.docs/raw/reference/scorers/completeness.mdx +1 -1
- package/.docs/raw/reference/scorers/content-similarity.mdx +1 -1
- package/.docs/raw/reference/scorers/context-precision.mdx +1 -1
- package/.docs/raw/reference/scorers/context-relevance.mdx +1 -1
- package/.docs/raw/reference/scorers/create-scorer.mdx +1 -1
- package/.docs/raw/reference/scorers/faithfulness.mdx +1 -1
- package/.docs/raw/reference/scorers/hallucination.mdx +1 -1
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/scorers/mastra-scorer.mdx +1 -1
- package/.docs/raw/reference/scorers/noise-sensitivity.mdx +1 -1
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +1 -1
- package/.docs/raw/reference/scorers/run-experiment.mdx +1 -1
- package/.docs/raw/reference/scorers/textual-difference.mdx +1 -1
- package/.docs/raw/reference/scorers/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +1 -1
- package/.docs/raw/reference/scorers/toxicity.mdx +1 -1
- 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 +1 -1
- package/.docs/raw/reference/storage/mongodb.mdx +1 -1
- package/.docs/raw/reference/storage/mssql.mdx +1 -1
- package/.docs/raw/reference/storage/postgresql.mdx +1 -1
- package/.docs/raw/reference/storage/upstash.mdx +1 -1
- package/.docs/raw/reference/streaming/ChunkType.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +1 -1
- package/.docs/raw/reference/templates/overview.mdx +1 -1
- package/.docs/raw/reference/tools/client.mdx +1 -1
- package/.docs/raw/reference/tools/create-tool.mdx +3 -4
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +1 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +2 -2
- package/.docs/raw/reference/tools/mcp-client.mdx +9 -9
- package/.docs/raw/reference/tools/mcp-server.mdx +2 -2
- package/.docs/raw/reference/tools/vector-query-tool.mdx +3 -3
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +1 -1
- package/.docs/raw/reference/vectors/couchbase.mdx +1 -1
- package/.docs/raw/reference/vectors/lance.mdx +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
- package/.docs/raw/reference/vectors/upstash.mdx +1 -1
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/start.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +1 -1
- package/.docs/raw/reference/workflows/run.mdx +1 -1
- package/.docs/raw/reference/workflows/step.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +1 -1
- package/.docs/raw/scorers/{off-the-shelf-scorers.mdx → built-in-scorers.mdx} +7 -5
- package/.docs/raw/scorers/custom-scorers.mdx +16 -16
- package/.docs/raw/scorers/{evals-old-api → evals-legacy}/custom-eval.mdx +1 -1
- package/.docs/raw/scorers/{evals-old-api → evals-legacy}/overview.mdx +13 -13
- package/.docs/raw/scorers/{evals-old-api → evals-legacy}/running-in-ci.mdx +5 -5
- package/.docs/raw/scorers/{evals-old-api → evals-legacy}/textual-evals.mdx +7 -7
- package/.docs/raw/scorers/overview.mdx +5 -5
- package/.docs/raw/server-db/custom-api-routes.mdx +1 -1
- package/.docs/raw/server-db/mastra-client.mdx +2 -2
- package/.docs/raw/server-db/{production-server.mdx → mastra-server.mdx} +2 -2
- package/.docs/raw/server-db/middleware.mdx +30 -30
- package/.docs/raw/server-db/runtime-context.mdx +3 -3
- package/.docs/raw/server-db/storage.mdx +1 -1
- package/.docs/raw/streaming/events.mdx +1 -1
- package/.docs/raw/streaming/overview.mdx +1 -1
- package/.docs/raw/streaming/tool-streaming.mdx +1 -1
- package/.docs/raw/streaming/workflow-streaming.mdx +1 -1
- package/.docs/raw/voice/overview.mdx +1 -1
- package/.docs/raw/voice/speech-to-speech.mdx +1 -1
- package/.docs/raw/voice/speech-to-text.mdx +1 -1
- package/.docs/raw/voice/text-to-speech.mdx +1 -1
- package/.docs/raw/workflows/agents-and-tools.mdx +2 -2
- package/.docs/raw/workflows/control-flow.mdx +7 -1
- package/.docs/raw/workflows/error-handling.mdx +4 -4
- package/.docs/raw/workflows/human-in-the-loop.mdx +160 -210
- package/.docs/raw/workflows/inngest-workflow.mdx +1 -1
- package/.docs/raw/workflows/overview.mdx +11 -2
- package/.docs/raw/workflows/snapshots.mdx +4 -4
- package/.docs/raw/workflows/suspend-and-resume.mdx +72 -215
- package/.docs/raw/workflows-legacy/control-flow.mdx +1 -1
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +1 -1
- package/.docs/raw/workflows-legacy/error-handling.mdx +1 -1
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +1 -1
- package/.docs/raw/workflows-legacy/overview.mdx +1 -1
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +1 -1
- package/.docs/raw/workflows-legacy/steps.mdx +1 -1
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +1 -1
- package/.docs/raw/workflows-legacy/variables.mdx +1 -1
- package/CHANGELOG.md +7 -0
- package/package.json +4 -4
- package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -55
- package/.docs/raw/reference/agents/listTools.mdx +0 -69
- package/.docs/raw/reference/core/listAgents.mdx +0 -35
- package/.docs/raw/tools-mcp/advanced-usage.mdx +0 -128
- package/.docs/raw/tools-mcp/overview.mdx +0 -88
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Agents and Tools | Workflows
|
|
2
|
+
title: "Agents and Tools | Workflows"
|
|
3
3
|
description: "Learn how to call agents and tools from workflow steps and choose between execute functions and step composition."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -139,4 +139,4 @@ export const testWorkflow = createWorkflow({
|
|
|
139
139
|
## Related
|
|
140
140
|
|
|
141
141
|
- [Using Agents](/docs/agents/overview)
|
|
142
|
-
- [
|
|
142
|
+
- [MCP Overview](/docs/mcp/overview)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Control Flow | Workflows
|
|
2
|
+
title: "Control Flow | Workflows"
|
|
3
3
|
description: "Control flow in Mastra workflows allows you to manage branching, merging, and conditions to construct workflows that meet your logic requirements."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -306,3 +306,9 @@ export const testWorkflow = createWorkflow({...})
|
|
|
306
306
|
})
|
|
307
307
|
.commit();
|
|
308
308
|
```
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
## Related
|
|
312
|
+
|
|
313
|
+
- [Suspend & Resume](/docs/workflows/suspend-and-resume)
|
|
314
|
+
- [Human-in-the-loop](/docs/workflows/human-in-the-loop)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Error Handling | Workflows
|
|
2
|
+
title: "Error Handling | Workflows"
|
|
3
3
|
description: "Learn how to handle errors in Mastra workflows using step retries, conditional branching, and monitoring."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -206,6 +206,6 @@ for await (const chunk of stream.stream) {
|
|
|
206
206
|
|
|
207
207
|
## Related
|
|
208
208
|
|
|
209
|
-
- [Control Flow](
|
|
210
|
-
- [
|
|
211
|
-
- [
|
|
209
|
+
- [Control Flow](/docs/workflows/control-flow)
|
|
210
|
+
- [Suspend & Resume](/docs/workflows/suspend-and-resume)
|
|
211
|
+
- [Human-in-the-loop](/docs/workflows/human-in-the-loop)
|
|
@@ -1,268 +1,218 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Human-in-the-loop | Workflows
|
|
3
|
-
description:
|
|
2
|
+
title: "Human-in-the-loop (HITL) | Workflows"
|
|
3
|
+
description: "Human-in-the-loop workflows in Mastra allow you to pause execution for manual approvals, reviews, or user input before continuing."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# Human-in-the-loop (HITL)
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
Some workflows need to pause for human input before continuing. When a workflow is [suspended](/docs/workflows/suspend-and-resume#pausing-a-workflow-with-suspend), it can return a message explaining why it paused and what’s needed to proceed. The workflow can then either [resume](#resuming-workflows-with-human-input) or [bail](#handling-human-rejection-with-bail) based on the input received. This approach works well for manual approvals, rejections, gated decisions, or any step that requires human oversight.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## Pausing workflows for human input
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Human-in-the-loop input works much like [pausing a workflow](/docs/workflows/suspend-and-resume) using `suspend()`. The key difference is that when human input is required, you can return `suspend()` with a payload that provides context or guidance to the user on how to continue.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+

|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
```typescript {12-17,22-26} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
17
|
+
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
18
|
+
import { z } from "zod";
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
const step1 = createStep({
|
|
21
|
+
id: "step-1",
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
userEmail: z.string()
|
|
24
|
+
}),
|
|
25
|
+
outputSchema: z.object({
|
|
26
|
+
output: z.string()
|
|
27
|
+
}),
|
|
28
|
+
resumeSchema: z.object({
|
|
29
|
+
approved: z.boolean()
|
|
30
|
+
}),
|
|
31
|
+
suspendSchema: z.object({
|
|
32
|
+
reason: z.string()
|
|
33
|
+
}),
|
|
34
|
+
execute: async ({ inputData, resumeData, suspend }) => {
|
|
35
|
+
const { userEmail } = inputData;
|
|
36
|
+
const { approved } = resumeData ?? {};
|
|
21
37
|
|
|
22
|
-
|
|
38
|
+
if (!approved) {
|
|
39
|
+
return await suspend({
|
|
40
|
+
reason: "Human approval required."
|
|
41
|
+
});
|
|
42
|
+
}
|
|
23
43
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
44
|
+
return {
|
|
45
|
+
output: `Email sent to ${userEmail}`
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
27
49
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```typescript title="src/mastra/agents/example-famous-person-agent.ts" showLineNumbers copy
|
|
33
|
-
import { openai } from "@ai-sdk/openai";
|
|
34
|
-
import { Agent } from "@mastra/core/agent";
|
|
35
|
-
import { Memory } from "@mastra/memory";
|
|
36
|
-
import { LibSQLVector } from "@mastra/libsql";
|
|
37
|
-
|
|
38
|
-
export const famousPersonAgent = new Agent({
|
|
39
|
-
name: "Famous Person Generator",
|
|
40
|
-
instructions: `You are a famous person generator for a "Heads Up" guessing game.
|
|
41
|
-
|
|
42
|
-
Generate the name of a well-known famous person who:
|
|
43
|
-
- Is recognizable to most people
|
|
44
|
-
- Has distinctive characteristics that can be described with yes/no questions
|
|
45
|
-
- Is appropriate for all audiences
|
|
46
|
-
- Has a clear, unambiguous name
|
|
47
|
-
|
|
48
|
-
IMPORTANT: Use your memory to check what famous people you've already suggested and NEVER repeat a person you've already suggested.
|
|
49
|
-
|
|
50
|
-
Examples: Albert Einstein, Beyoncé, Leonardo da Vinci, Oprah Winfrey, Michael Jordan
|
|
51
|
-
|
|
52
|
-
Return only the person's name, nothing else.`,
|
|
53
|
-
model: openai("gpt-4o"),
|
|
54
|
-
memory: new Memory({
|
|
55
|
-
vector: new LibSQLVector({
|
|
56
|
-
connectionUrl: "file:../mastra.db",
|
|
57
|
-
}),
|
|
58
|
-
embedder: openai.embedding("text-embedding-3-small"),
|
|
59
|
-
options: {
|
|
60
|
-
lastMessages: 5,
|
|
61
|
-
semanticRecall: {
|
|
62
|
-
topK: 10,
|
|
63
|
-
messageRange: 1,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
50
|
+
export const testWorkflow = createWorkflow({
|
|
51
|
+
id: "test-workflow",
|
|
52
|
+
inputSchema: z.object({
|
|
53
|
+
userEmail: z.string()
|
|
66
54
|
}),
|
|
67
|
-
|
|
55
|
+
outputSchema: z.object({
|
|
56
|
+
output: z.string()
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
.then(step1)
|
|
60
|
+
.commit();
|
|
68
61
|
```
|
|
69
62
|
|
|
70
|
-
|
|
63
|
+
## Providing user feedback
|
|
64
|
+
|
|
65
|
+
When a workflow is suspended, you can access the payload returned by `suspend()` by identifying the suspended step and reading its `suspendPayload`.
|
|
66
|
+
|
|
67
|
+
```typescript {12} title="src/test-workflow.ts" showLineNumbers copy
|
|
68
|
+
const workflow = mastra.getWorkflow("testWorkflow");
|
|
69
|
+
const run = await workflow.createRunAsync();
|
|
70
|
+
|
|
71
|
+
const result = await run.start({
|
|
72
|
+
inputData: {
|
|
73
|
+
userEmail: "alex@example.com"
|
|
74
|
+
}
|
|
75
|
+
});
|
|
71
76
|
|
|
72
|
-
|
|
77
|
+
if (result.status === "suspended") {
|
|
78
|
+
const suspendStep = result.suspended[0];
|
|
79
|
+
const suspendedPayload = result.steps[suspendStep[0]].suspendPayload;
|
|
73
80
|
|
|
74
|
-
|
|
81
|
+
console.log(suspendedPayload);
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
**Example output**
|
|
75
85
|
|
|
76
|
-
|
|
77
|
-
import { openai } from "@ai-sdk/openai";
|
|
78
|
-
import { Agent } from "@mastra/core/agent";
|
|
86
|
+
The data returned by the step can include a reason and help the user understand what’s needed to resume the workflow.
|
|
79
87
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
```typescript
|
|
89
|
+
{ reason: 'Confirm to send email.' }
|
|
90
|
+
```
|
|
83
91
|
|
|
84
|
-
|
|
92
|
+
## Resuming workflows with human input
|
|
85
93
|
|
|
86
|
-
|
|
87
|
-
- Answer truthfully based on the famous person provided
|
|
88
|
-
- Keep responses concise and friendly
|
|
89
|
-
- NEVER mention the person's name, even if it seems natural
|
|
90
|
-
- NEVER reveal gender, nationality, or other characteristics unless specifically asked about them
|
|
91
|
-
- Answer yes/no questions with clear "Yes" or "No" responses
|
|
92
|
-
- Be consistent - same question asked differently should get the same answer
|
|
93
|
-
- Ask for clarification if a question is unclear
|
|
94
|
-
- If multiple questions are asked at once, ask them to ask one at a time
|
|
94
|
+
As with [restarting a workflow](/docs/workflows/suspend-and-resume#restarting-a-workflow-with-resume), use `resume()` with `resumeData` to continue a workflow after receiving input from a human. The workflow resumes from the step where it was paused.
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
- If correct: Congratulate them warmly
|
|
98
|
-
- If incorrect: Politely correct them and encourage them to try again
|
|
96
|
+

|
|
99
97
|
|
|
100
|
-
|
|
98
|
+
```typescript {13} showLineNumbers copy
|
|
99
|
+
const workflow = mastra.getWorkflow("testWorkflow");
|
|
100
|
+
const run = await workflow.createRunAsync();
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
await run.start({
|
|
103
|
+
inputData: {
|
|
104
|
+
userEmail: "alex@example.com"
|
|
105
|
+
}
|
|
106
106
|
});
|
|
107
|
+
|
|
108
|
+
const handleResume = async () => {
|
|
109
|
+
const result = await run.resume({
|
|
110
|
+
step: "step-1",
|
|
111
|
+
resumeData: { approved: true }
|
|
112
|
+
});
|
|
113
|
+
};
|
|
107
114
|
```
|
|
108
115
|
|
|
109
|
-
|
|
116
|
+
### Handling human rejection with `bail()`
|
|
110
117
|
|
|
111
|
-
|
|
118
|
+
Use `bail()` to stop workflow execution at a step without triggering an error. This can be useful when a human explicitly rejects an action. The workflow completes with a `success` status, and any logic after the call to `bail()` is skipped.
|
|
112
119
|
|
|
113
|
-
|
|
120
|
+
```typescript {7-11} showLineNumbers copy
|
|
121
|
+
const step1 = createStep({
|
|
122
|
+
// ...
|
|
123
|
+
execute: async ({ inputData, resumeData, suspend, bail }) => {
|
|
124
|
+
const { userEmail } = inputData;
|
|
125
|
+
const { approved } = resumeData ?? {};
|
|
114
126
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
127
|
+
if (approved === false) {
|
|
128
|
+
return bail({
|
|
129
|
+
reason: "User rejected the request."
|
|
130
|
+
});
|
|
131
|
+
}
|
|
118
132
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
execute: async ({ mastra }) => {
|
|
130
|
-
const agent = mastra.getAgent("famousPersonAgent");
|
|
131
|
-
const response = await agent.generate("Generate a famous person's name", {
|
|
132
|
-
temperature: 1.2,
|
|
133
|
-
topP: 0.9,
|
|
134
|
-
memory: {
|
|
135
|
-
resource: "heads-up-game",
|
|
136
|
-
thread: "famous-person-generator",
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
const famousPerson = response.text.trim();
|
|
140
|
-
return { famousPerson, guessCount: 0 };
|
|
141
|
-
},
|
|
133
|
+
if (!approved) {
|
|
134
|
+
return await suspend({
|
|
135
|
+
reason: "Human approval required."
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
message: `Email sent to ${userEmail}`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
142
143
|
});
|
|
144
|
+
```
|
|
143
145
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
## Multi-turn human input
|
|
147
|
+
|
|
148
|
+
For workflows that require input at multiple stages, the suspend pattern remains the same. Each step defines a `resumeSchema`, and `suspendSchema` typically with a reason that can be used to provide user feedback.
|
|
149
|
+
|
|
150
|
+
```typescript {11-16,21-25} title="src/mastra/workflows/test-workflow.ts" showLineNumbers copy
|
|
151
|
+
const step1 = createStep({...});
|
|
152
|
+
|
|
153
|
+
const step2 = createStep({
|
|
154
|
+
id: "step-2",
|
|
147
155
|
inputSchema: z.object({
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
message: z.string()
|
|
157
|
+
}),
|
|
158
|
+
outputSchema: z.object({
|
|
159
|
+
output: z.string()
|
|
150
160
|
}),
|
|
151
161
|
resumeSchema: z.object({
|
|
152
|
-
|
|
162
|
+
approved: z.boolean()
|
|
153
163
|
}),
|
|
154
164
|
suspendSchema: z.object({
|
|
155
|
-
|
|
156
|
-
}),
|
|
157
|
-
outputSchema: z.object({
|
|
158
|
-
famousPerson: z.string(),
|
|
159
|
-
gameWon: z.boolean(),
|
|
160
|
-
agentResponse: z.string(),
|
|
161
|
-
guessCount: z.number(),
|
|
165
|
+
reason: z.string()
|
|
162
166
|
}),
|
|
163
|
-
execute: async ({ inputData,
|
|
164
|
-
|
|
165
|
-
const {
|
|
167
|
+
execute: async ({ inputData, resumeData, suspend }) => {
|
|
168
|
+
const { message } = inputData;
|
|
169
|
+
const { approved } = resumeData ?? {};
|
|
166
170
|
|
|
167
|
-
if (!
|
|
171
|
+
if (!approved) {
|
|
168
172
|
return await suspend({
|
|
169
|
-
|
|
170
|
-
"I'm thinking of a famous person. Ask me yes/no questions to figure out who it is!",
|
|
173
|
+
reason: "Human approval required."
|
|
171
174
|
});
|
|
172
175
|
}
|
|
173
176
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
The user said: "${userMessage}"
|
|
179
|
-
Please respond appropriately. If this is a guess, tell me if it's correct.
|
|
180
|
-
`,
|
|
181
|
-
{
|
|
182
|
-
structuredOutput: {
|
|
183
|
-
schema: z.object({
|
|
184
|
-
response: z.string(),
|
|
185
|
-
gameWon: z.boolean(),
|
|
186
|
-
}),
|
|
187
|
-
},
|
|
188
|
-
},
|
|
189
|
-
);
|
|
190
|
-
|
|
191
|
-
const { response: agentResponse, gameWon } = response.object;
|
|
192
|
-
|
|
193
|
-
guessCount++;
|
|
194
|
-
|
|
195
|
-
return { famousPerson, gameWon, agentResponse, guessCount };
|
|
196
|
-
},
|
|
177
|
+
return {
|
|
178
|
+
output: `${message} - Deleted`
|
|
179
|
+
};
|
|
180
|
+
}
|
|
197
181
|
});
|
|
198
182
|
|
|
199
|
-
const
|
|
200
|
-
id: "
|
|
201
|
-
description: "Handle game win logic",
|
|
183
|
+
export const testWorkflow = createWorkflow({
|
|
184
|
+
id: "test-workflow",
|
|
202
185
|
inputSchema: z.object({
|
|
203
|
-
|
|
204
|
-
gameWon: z.boolean(),
|
|
205
|
-
agentResponse: z.string(),
|
|
206
|
-
guessCount: z.number(),
|
|
186
|
+
userEmail: z.string()
|
|
207
187
|
}),
|
|
208
188
|
outputSchema: z.object({
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
guessCount: z.number(),
|
|
212
|
-
}),
|
|
213
|
-
execute: async ({ inputData }) => {
|
|
214
|
-
const { famousPerson, gameWon, guessCount } = inputData;
|
|
215
|
-
|
|
216
|
-
console.log("famousPerson: ", famousPerson);
|
|
217
|
-
console.log("gameWon: ", gameWon);
|
|
218
|
-
console.log("guessCount: ", guessCount);
|
|
219
|
-
|
|
220
|
-
return { famousPerson, gameWon, guessCount };
|
|
221
|
-
},
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
export const headsUpWorkflow = createWorkflow({
|
|
225
|
-
id: "heads-up-workflow",
|
|
226
|
-
inputSchema: z.object({
|
|
227
|
-
start: z.boolean(),
|
|
228
|
-
}),
|
|
229
|
-
outputSchema: z.object({
|
|
230
|
-
famousPerson: z.string(),
|
|
231
|
-
gameWon: z.boolean(),
|
|
232
|
-
guessCount: z.number(),
|
|
233
|
-
}),
|
|
189
|
+
output: z.string()
|
|
190
|
+
})
|
|
234
191
|
})
|
|
235
|
-
.then(
|
|
236
|
-
.
|
|
237
|
-
.then(winStep)
|
|
192
|
+
.then(step1)
|
|
193
|
+
.then(step2)
|
|
238
194
|
.commit();
|
|
239
195
|
```
|
|
240
196
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
197
|
+
Each step must be resumed in sequence, with a separate call to `resume()` for each suspended step. This approach helps manage multi-step approvals with consistent UI feedback and clear input handling at each stage.
|
|
198
|
+
|
|
199
|
+
```typescript {4,11} showLineNumbers copy
|
|
200
|
+
const handleResume = async () => {
|
|
201
|
+
const result = await run.resume({
|
|
202
|
+
step: "step-1",
|
|
203
|
+
resumeData: { approved: true }
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const handleDelete = async () => {
|
|
208
|
+
const result = await run.resume({
|
|
209
|
+
step: "step-2",
|
|
210
|
+
resumeData: { approved: true }
|
|
211
|
+
});
|
|
212
|
+
};
|
|
258
213
|
```
|
|
259
214
|
|
|
260
|
-
<GithubLink
|
|
261
|
-
marginTop="mt-16"
|
|
262
|
-
link="https://github.com/mastra-ai/mastra/blob/main/examples/heads-up-game/"
|
|
263
|
-
/>
|
|
264
|
-
|
|
265
215
|
## Related
|
|
266
216
|
|
|
267
|
-
- [Running Workflows](./overview#running-workflows)
|
|
268
217
|
- [Control Flow](/docs/workflows/control-flow)
|
|
218
|
+
- [Suspend & Resume](/docs/workflows/suspend-and-resume)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Workflows overview | Workflows
|
|
2
|
+
title: "Workflows overview | Workflows"
|
|
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
|
|
|
@@ -221,6 +221,7 @@ const testWorkflow = mastra.getWorkflow("testWorkflow");
|
|
|
221
221
|
`mastra.getWorkflow()` is preferred over a direct import, since it provides access to the Mastra instance configuration (logger, telemetry, storage, registered agents, and vector stores).
|
|
222
222
|
:::
|
|
223
223
|
|
|
224
|
+
|
|
224
225
|
## Running workflows
|
|
225
226
|
|
|
226
227
|
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.
|
|
@@ -260,7 +261,11 @@ for await (const chunk of result.stream) {
|
|
|
260
261
|
</TabItem>
|
|
261
262
|
</Tabs>
|
|
262
263
|
|
|
263
|
-
|
|
264
|
+
### Workflow status types
|
|
265
|
+
|
|
266
|
+
When running a workflow, its `status` can be `running`, `suspended`, `success`, or `failed`.
|
|
267
|
+
|
|
268
|
+
### Workflow output
|
|
264
269
|
|
|
265
270
|
The workflow output includes the full execution lifecycle, showing the input and output for each step. It also includes the status of each step, the overall workflow status, and the final result. This gives you clear insight into how data moved through the workflow, what each step produced, and how the workflow completed.
|
|
266
271
|
|
|
@@ -329,3 +334,7 @@ Use [Studio](/docs/getting-started/studio) to easily run workflows with differen
|
|
|
329
334
|
## Related
|
|
330
335
|
|
|
331
336
|
For a closer look at workflows, see our [Workflow Guide](/guides/guide/ai-recruiter), which walks through the core concepts with a practical example.
|
|
337
|
+
|
|
338
|
+
- [Control Flow](/docs/workflows/control-flow)
|
|
339
|
+
- [Suspend & Resume](/docs/workflows/suspend-and-resume)
|
|
340
|
+
- [Error Handling](/docs/workflows/error-handling)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Snapshots | Workflows
|
|
2
|
+
title: "Snapshots | Workflows"
|
|
3
3
|
description: "Learn how to save and resume workflow execution state with snapshots in Mastra"
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -263,6 +263,6 @@ if (result.status === "suspended") {
|
|
|
263
263
|
|
|
264
264
|
## Related
|
|
265
265
|
|
|
266
|
-
- [
|
|
267
|
-
- [
|
|
268
|
-
- [
|
|
266
|
+
- [Control Flow](/docs/workflows/control-flow)
|
|
267
|
+
- [Suspend & Resume](/docs/workflows/suspend-and-resume)
|
|
268
|
+
- [Human-in-the-loop](/docs/workflows/human-in-the-loop)
|