@mastra/core 1.6.0 → 1.7.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/CHANGELOG.md +236 -0
- package/dist/agent/agent.d.ts +6 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/index.cjs +8 -8
- package/dist/agent/index.js +1 -1
- package/dist/{chunk-VJWRJWSC.cjs → chunk-2X66GWF5.cjs} +94 -16
- package/dist/chunk-2X66GWF5.cjs.map +1 -0
- package/dist/{chunk-YM6245EM.js → chunk-6OXW5E2O.js} +3 -3
- package/dist/{chunk-YM6245EM.js.map → chunk-6OXW5E2O.js.map} +1 -1
- package/dist/{chunk-XWZAKKFT.cjs → chunk-6QBN6MZY.cjs} +14 -14
- package/dist/{chunk-XWZAKKFT.cjs.map → chunk-6QBN6MZY.cjs.map} +1 -1
- package/dist/{chunk-AYHSPIT6.cjs → chunk-7UAJ6LMR.cjs} +820 -259
- package/dist/chunk-7UAJ6LMR.cjs.map +1 -0
- package/dist/{chunk-RZNHRIM7.cjs → chunk-A72NTLFT.cjs} +5 -5
- package/dist/{chunk-RZNHRIM7.cjs.map → chunk-A72NTLFT.cjs.map} +1 -1
- package/dist/{chunk-EEU5NHHU.js → chunk-DFCRXDVK.js} +3 -3
- package/dist/{chunk-EEU5NHHU.js.map → chunk-DFCRXDVK.js.map} +1 -1
- package/dist/{chunk-5K45E5VE.js → chunk-GPJGPARM.js} +3 -2
- package/dist/chunk-GPJGPARM.js.map +1 -0
- package/dist/{chunk-LNKS4TJ6.cjs → chunk-HB6T4554.cjs} +8 -7
- package/dist/chunk-HB6T4554.cjs.map +1 -0
- package/dist/{chunk-DGS2KGDI.js → chunk-KUXNBWN7.js} +6 -5
- package/dist/chunk-KUXNBWN7.js.map +1 -0
- package/dist/{chunk-IHDE4CJV.js → chunk-QSHV7GPT.js} +89 -12
- package/dist/chunk-QSHV7GPT.js.map +1 -0
- package/dist/{chunk-3U3XFMGJ.cjs → chunk-QTAS3HND.cjs} +13 -8
- package/dist/chunk-QTAS3HND.cjs.map +1 -0
- package/dist/{chunk-RHKNKJNM.js → chunk-QWTB53GS.js} +4 -4
- package/dist/{chunk-RHKNKJNM.js.map → chunk-QWTB53GS.js.map} +1 -1
- package/dist/{chunk-4WG5K4CK.js → chunk-R4N65TLG.js} +7 -7
- package/dist/{chunk-4WG5K4CK.js.map → chunk-R4N65TLG.js.map} +1 -1
- package/dist/{chunk-5VQPSWPG.cjs → chunk-RABITNTG.cjs} +48 -48
- package/dist/{chunk-5VQPSWPG.cjs.map → chunk-RABITNTG.cjs.map} +1 -1
- package/dist/{chunk-TVPANHLE.cjs → chunk-SBOHDNIZ.cjs} +3 -2
- package/dist/chunk-SBOHDNIZ.cjs.map +1 -0
- package/dist/{chunk-MWGGSA5Q.js → chunk-T6GAM3SQ.js} +10 -5
- package/dist/chunk-T6GAM3SQ.js.map +1 -0
- package/dist/{chunk-TL2TTA4X.cjs → chunk-YQG7NBPR.cjs} +9 -9
- package/dist/{chunk-TL2TTA4X.cjs.map → chunk-YQG7NBPR.cjs.map} +1 -1
- package/dist/{chunk-XB3DA67Q.js → chunk-ZSBM2SVU.js} +818 -259
- package/dist/chunk-ZSBM2SVU.js.map +1 -0
- package/dist/datasets/experiment/scorer.d.ts.map +1 -1
- package/dist/datasets/index.cjs +17 -17
- package/dist/datasets/index.js +2 -2
- package/dist/evals/index.cjs +20 -20
- package/dist/evals/index.js +3 -3
- package/dist/evals/scoreTraces/index.cjs +7 -6
- package/dist/evals/scoreTraces/index.cjs.map +1 -1
- package/dist/evals/scoreTraces/index.js +4 -3
- package/dist/evals/scoreTraces/index.js.map +1 -1
- package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
- package/dist/harness/harness.d.ts +21 -1
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/index.cjs +422 -5
- package/dist/harness/index.cjs.map +1 -1
- package/dist/harness/index.d.ts +2 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +418 -3
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/types.d.ts +151 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/loop/index.cjs +12 -12
- package/dist/loop/index.js +1 -1
- package/dist/loop/test-utils/tools.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/mastra/hooks.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +14 -14
- package/dist/memory/index.js +1 -1
- package/dist/processor-provider/index.cjs +10 -10
- package/dist/processor-provider/index.js +1 -1
- package/dist/processors/index.cjs +45 -41
- package/dist/processors/index.js +1 -1
- package/dist/processors/processors/index.d.ts +1 -0
- package/dist/processors/processors/index.d.ts.map +1 -1
- package/dist/processors/processors/workspace-instructions.d.ts +50 -0
- package/dist/processors/processors/workspace-instructions.d.ts.map +1 -0
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/storage/constants.cjs +56 -56
- package/dist/storage/constants.d.ts.map +1 -1
- package/dist/storage/constants.js +1 -1
- package/dist/storage/index.cjs +160 -160
- package/dist/storage/index.js +2 -2
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -1
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +8 -8
- package/dist/stream/index.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/vector/index.cjs +7 -7
- package/dist/vector/index.js +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +25 -25
- package/dist/workflows/index.js +1 -1
- package/dist/workspace/constants/index.d.ts +2 -0
- package/dist/workspace/constants/index.d.ts.map +1 -1
- package/dist/workspace/errors.d.ts +1 -1
- package/dist/workspace/errors.d.ts.map +1 -1
- package/dist/workspace/filesystem/composite-filesystem.d.ts +4 -1
- package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -1
- package/dist/workspace/filesystem/file-write-lock.d.ts +35 -0
- package/dist/workspace/filesystem/file-write-lock.d.ts.map +1 -0
- package/dist/workspace/filesystem/filesystem.d.ts +5 -1
- package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
- package/dist/workspace/filesystem/index.d.ts +1 -0
- package/dist/workspace/filesystem/index.d.ts.map +1 -1
- package/dist/workspace/filesystem/local-filesystem.d.ts +17 -1
- package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
- package/dist/workspace/index.cjs +72 -64
- package/dist/workspace/index.d.ts +3 -2
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/lifecycle.d.ts +1 -9
- package/dist/workspace/lifecycle.d.ts.map +1 -1
- package/dist/workspace/sandbox/index.d.ts +2 -0
- package/dist/workspace/sandbox/index.d.ts.map +1 -1
- package/dist/workspace/sandbox/local-process-manager.d.ts +18 -0
- package/dist/workspace/sandbox/local-process-manager.d.ts.map +1 -0
- package/dist/workspace/sandbox/local-sandbox.d.ts +49 -35
- package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
- package/dist/workspace/sandbox/mastra-sandbox.d.ts +45 -11
- package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
- package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts +2 -3
- package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts.map +1 -1
- package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts +2 -3
- package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts.map +1 -1
- package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts +4 -5
- package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts.map +1 -1
- package/dist/workspace/sandbox/process-manager/index.d.ts +4 -0
- package/dist/workspace/sandbox/process-manager/index.d.ts.map +1 -0
- package/dist/workspace/sandbox/process-manager/process-handle.d.ts +107 -0
- package/dist/workspace/sandbox/process-manager/process-handle.d.ts.map +1 -0
- package/dist/workspace/sandbox/process-manager/process-manager.d.ts +59 -0
- package/dist/workspace/sandbox/process-manager/process-manager.d.ts.map +1 -0
- package/dist/workspace/sandbox/process-manager/types.d.ts +24 -0
- package/dist/workspace/sandbox/process-manager/types.d.ts.map +1 -0
- package/dist/workspace/sandbox/sandbox.d.ts +38 -2
- package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
- package/dist/workspace/sandbox/types.d.ts +9 -2
- package/dist/workspace/sandbox/types.d.ts.map +1 -1
- package/dist/workspace/sandbox/utils.d.ts +7 -0
- package/dist/workspace/sandbox/utils.d.ts.map +1 -0
- package/dist/workspace/tools/execute-command.d.ts +53 -2
- package/dist/workspace/tools/execute-command.d.ts.map +1 -1
- package/dist/workspace/tools/get-process-output.d.ts +6 -0
- package/dist/workspace/tools/get-process-output.d.ts.map +1 -0
- package/dist/workspace/tools/index.d.ts +4 -1
- package/dist/workspace/tools/index.d.ts.map +1 -1
- package/dist/workspace/tools/kill-process.d.ts +4 -0
- package/dist/workspace/tools/kill-process.d.ts.map +1 -0
- package/dist/workspace/tools/output-helpers.d.ts +21 -0
- package/dist/workspace/tools/output-helpers.d.ts.map +1 -0
- package/dist/workspace/tools/tools.d.ts.map +1 -1
- package/dist/workspace/types.d.ts +31 -0
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/utils.d.ts +11 -0
- package/dist/workspace/utils.d.ts.map +1 -0
- package/dist/workspace/workspace.d.ts +36 -0
- package/dist/workspace/workspace.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/chunk-3U3XFMGJ.cjs.map +0 -1
- package/dist/chunk-5K45E5VE.js.map +0 -1
- package/dist/chunk-AYHSPIT6.cjs.map +0 -1
- package/dist/chunk-DGS2KGDI.js.map +0 -1
- package/dist/chunk-IHDE4CJV.js.map +0 -1
- package/dist/chunk-LNKS4TJ6.cjs.map +0 -1
- package/dist/chunk-MWGGSA5Q.js.map +0 -1
- package/dist/chunk-TVPANHLE.cjs.map +0 -1
- package/dist/chunk-VJWRJWSC.cjs.map +0 -1
- package/dist/chunk-XB3DA67Q.js.map +0 -1
- package/dist/docs/SKILL.md +0 -301
- package/dist/docs/assets/SOURCE_MAP.json +0 -1413
- package/dist/docs/references/docs-agents-adding-voice.md +0 -353
- package/dist/docs/references/docs-agents-agent-approval.md +0 -377
- package/dist/docs/references/docs-agents-agent-memory.md +0 -212
- package/dist/docs/references/docs-agents-guardrails.md +0 -382
- package/dist/docs/references/docs-agents-network-approval.md +0 -275
- package/dist/docs/references/docs-agents-networks.md +0 -290
- package/dist/docs/references/docs-agents-overview.md +0 -309
- package/dist/docs/references/docs-agents-processors.md +0 -632
- package/dist/docs/references/docs-agents-structured-output.md +0 -271
- package/dist/docs/references/docs-agents-using-tools.md +0 -214
- package/dist/docs/references/docs-evals-custom-scorers.md +0 -519
- package/dist/docs/references/docs-evals-overview.md +0 -146
- package/dist/docs/references/docs-evals-running-in-ci.md +0 -106
- package/dist/docs/references/docs-mcp-overview.md +0 -370
- package/dist/docs/references/docs-mcp-publishing-mcp-server.md +0 -95
- package/dist/docs/references/docs-memory-memory-processors.md +0 -316
- package/dist/docs/references/docs-memory-observational-memory.md +0 -246
- package/dist/docs/references/docs-memory-overview.md +0 -45
- package/dist/docs/references/docs-memory-semantic-recall.md +0 -272
- package/dist/docs/references/docs-memory-storage.md +0 -261
- package/dist/docs/references/docs-memory-working-memory.md +0 -400
- package/dist/docs/references/docs-observability-datasets-overview.md +0 -188
- package/dist/docs/references/docs-observability-datasets-running-experiments.md +0 -266
- package/dist/docs/references/docs-observability-logging.md +0 -99
- package/dist/docs/references/docs-observability-overview.md +0 -70
- package/dist/docs/references/docs-observability-tracing-bridges-otel.md +0 -209
- package/dist/docs/references/docs-observability-tracing-exporters-arize.md +0 -274
- package/dist/docs/references/docs-observability-tracing-exporters-braintrust.md +0 -111
- package/dist/docs/references/docs-observability-tracing-exporters-cloud.md +0 -129
- package/dist/docs/references/docs-observability-tracing-exporters-datadog.md +0 -187
- package/dist/docs/references/docs-observability-tracing-exporters-default.md +0 -211
- package/dist/docs/references/docs-observability-tracing-exporters-laminar.md +0 -100
- package/dist/docs/references/docs-observability-tracing-exporters-langfuse.md +0 -217
- package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +0 -202
- package/dist/docs/references/docs-observability-tracing-exporters-otel.md +0 -479
- package/dist/docs/references/docs-observability-tracing-exporters-posthog.md +0 -148
- package/dist/docs/references/docs-observability-tracing-overview.md +0 -1114
- package/dist/docs/references/docs-rag-chunking-and-embedding.md +0 -183
- package/dist/docs/references/docs-rag-graph-rag.md +0 -215
- package/dist/docs/references/docs-rag-overview.md +0 -72
- package/dist/docs/references/docs-rag-retrieval.md +0 -521
- package/dist/docs/references/docs-rag-vector-databases.md +0 -648
- package/dist/docs/references/docs-server-auth-auth0.md +0 -222
- package/dist/docs/references/docs-server-auth-clerk.md +0 -132
- package/dist/docs/references/docs-server-auth-composite-auth.md +0 -234
- package/dist/docs/references/docs-server-auth-custom-auth-provider.md +0 -513
- package/dist/docs/references/docs-server-auth-firebase.md +0 -272
- package/dist/docs/references/docs-server-auth-jwt.md +0 -110
- package/dist/docs/references/docs-server-auth-simple-auth.md +0 -178
- package/dist/docs/references/docs-server-auth-supabase.md +0 -117
- package/dist/docs/references/docs-server-auth-workos.md +0 -190
- package/dist/docs/references/docs-server-custom-adapters.md +0 -374
- package/dist/docs/references/docs-server-custom-api-routes.md +0 -267
- package/dist/docs/references/docs-server-mastra-client.md +0 -243
- package/dist/docs/references/docs-server-mastra-server.md +0 -71
- package/dist/docs/references/docs-server-middleware.md +0 -228
- package/dist/docs/references/docs-server-request-context.md +0 -478
- package/dist/docs/references/docs-streaming-events.md +0 -247
- package/dist/docs/references/docs-streaming-tool-streaming.md +0 -178
- package/dist/docs/references/docs-streaming-workflow-streaming.md +0 -109
- package/dist/docs/references/docs-voice-overview.md +0 -979
- package/dist/docs/references/docs-voice-speech-to-speech.md +0 -103
- package/dist/docs/references/docs-voice-speech-to-text.md +0 -80
- package/dist/docs/references/docs-voice-text-to-speech.md +0 -84
- package/dist/docs/references/docs-workflows-agents-and-tools.md +0 -170
- package/dist/docs/references/docs-workflows-control-flow.md +0 -823
- package/dist/docs/references/docs-workflows-error-handling.md +0 -360
- package/dist/docs/references/docs-workflows-human-in-the-loop.md +0 -213
- package/dist/docs/references/docs-workflows-overview.md +0 -372
- package/dist/docs/references/docs-workflows-snapshots.md +0 -238
- package/dist/docs/references/docs-workflows-suspend-and-resume.md +0 -205
- package/dist/docs/references/docs-workflows-time-travel.md +0 -309
- package/dist/docs/references/docs-workflows-workflow-state.md +0 -181
- package/dist/docs/references/docs-workspace-filesystem.md +0 -162
- package/dist/docs/references/docs-workspace-overview.md +0 -239
- package/dist/docs/references/docs-workspace-sandbox.md +0 -63
- package/dist/docs/references/docs-workspace-search.md +0 -219
- package/dist/docs/references/docs-workspace-skills.md +0 -126
- package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +0 -140
- package/dist/docs/references/reference-agents-agent.md +0 -142
- package/dist/docs/references/reference-agents-generate.md +0 -174
- package/dist/docs/references/reference-agents-generateLegacy.md +0 -176
- package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +0 -36
- package/dist/docs/references/reference-agents-getDefaultOptions.md +0 -34
- package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +0 -36
- package/dist/docs/references/reference-agents-getDescription.md +0 -21
- package/dist/docs/references/reference-agents-getInstructions.md +0 -34
- package/dist/docs/references/reference-agents-getLLM.md +0 -37
- package/dist/docs/references/reference-agents-getMemory.md +0 -34
- package/dist/docs/references/reference-agents-getModel.md +0 -34
- package/dist/docs/references/reference-agents-getTools.md +0 -29
- package/dist/docs/references/reference-agents-getVoice.md +0 -34
- package/dist/docs/references/reference-agents-listAgents.md +0 -35
- package/dist/docs/references/reference-agents-listScorers.md +0 -34
- package/dist/docs/references/reference-agents-listTools.md +0 -34
- package/dist/docs/references/reference-agents-listWorkflows.md +0 -34
- package/dist/docs/references/reference-agents-network.md +0 -134
- package/dist/docs/references/reference-ai-sdk-chat-route.md +0 -82
- package/dist/docs/references/reference-ai-sdk-network-route.md +0 -74
- package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +0 -232
- package/dist/docs/references/reference-ai-sdk-with-mastra.md +0 -59
- package/dist/docs/references/reference-ai-sdk-workflow-route.md +0 -79
- package/dist/docs/references/reference-auth-auth0.md +0 -73
- package/dist/docs/references/reference-auth-clerk.md +0 -36
- package/dist/docs/references/reference-auth-firebase.md +0 -80
- package/dist/docs/references/reference-auth-jwt.md +0 -26
- package/dist/docs/references/reference-auth-supabase.md +0 -33
- package/dist/docs/references/reference-auth-workos.md +0 -84
- package/dist/docs/references/reference-client-js-agents.md +0 -438
- package/dist/docs/references/reference-configuration.md +0 -749
- package/dist/docs/references/reference-core-addGateway.md +0 -42
- package/dist/docs/references/reference-core-getAgent.md +0 -21
- package/dist/docs/references/reference-core-getAgentById.md +0 -21
- package/dist/docs/references/reference-core-getDeployer.md +0 -22
- package/dist/docs/references/reference-core-getGateway.md +0 -38
- package/dist/docs/references/reference-core-getGatewayById.md +0 -41
- package/dist/docs/references/reference-core-getLogger.md +0 -22
- package/dist/docs/references/reference-core-getMCPServer.md +0 -45
- package/dist/docs/references/reference-core-getMCPServerById.md +0 -53
- package/dist/docs/references/reference-core-getMemory.md +0 -50
- package/dist/docs/references/reference-core-getScorer.md +0 -54
- package/dist/docs/references/reference-core-getScorerById.md +0 -54
- package/dist/docs/references/reference-core-getServer.md +0 -22
- package/dist/docs/references/reference-core-getStorage.md +0 -22
- package/dist/docs/references/reference-core-getStoredAgentById.md +0 -89
- package/dist/docs/references/reference-core-getTelemetry.md +0 -22
- package/dist/docs/references/reference-core-getVector.md +0 -22
- package/dist/docs/references/reference-core-getWorkflow.md +0 -40
- package/dist/docs/references/reference-core-listAgents.md +0 -21
- package/dist/docs/references/reference-core-listGateways.md +0 -40
- package/dist/docs/references/reference-core-listLogs.md +0 -38
- package/dist/docs/references/reference-core-listLogsByRunId.md +0 -36
- package/dist/docs/references/reference-core-listMCPServers.md +0 -51
- package/dist/docs/references/reference-core-listMemory.md +0 -56
- package/dist/docs/references/reference-core-listScorers.md +0 -29
- package/dist/docs/references/reference-core-listStoredAgents.md +0 -93
- package/dist/docs/references/reference-core-listVectors.md +0 -22
- package/dist/docs/references/reference-core-listWorkflows.md +0 -21
- package/dist/docs/references/reference-core-mastra-class.md +0 -66
- package/dist/docs/references/reference-core-mastra-model-gateway.md +0 -153
- package/dist/docs/references/reference-core-setLogger.md +0 -26
- package/dist/docs/references/reference-core-setStorage.md +0 -27
- package/dist/docs/references/reference-datasets-addItem.md +0 -35
- package/dist/docs/references/reference-datasets-addItems.md +0 -33
- package/dist/docs/references/reference-datasets-compareExperiments.md +0 -48
- package/dist/docs/references/reference-datasets-create.md +0 -49
- package/dist/docs/references/reference-datasets-dataset.md +0 -78
- package/dist/docs/references/reference-datasets-datasets-manager.md +0 -84
- package/dist/docs/references/reference-datasets-delete.md +0 -23
- package/dist/docs/references/reference-datasets-deleteExperiment.md +0 -25
- package/dist/docs/references/reference-datasets-deleteItem.md +0 -25
- package/dist/docs/references/reference-datasets-deleteItems.md +0 -27
- package/dist/docs/references/reference-datasets-get.md +0 -29
- package/dist/docs/references/reference-datasets-getDetails.md +0 -45
- package/dist/docs/references/reference-datasets-getExperiment.md +0 -28
- package/dist/docs/references/reference-datasets-getItem.md +0 -31
- package/dist/docs/references/reference-datasets-getItemHistory.md +0 -29
- package/dist/docs/references/reference-datasets-list.md +0 -29
- package/dist/docs/references/reference-datasets-listExperimentResults.md +0 -37
- package/dist/docs/references/reference-datasets-listExperiments.md +0 -31
- package/dist/docs/references/reference-datasets-listItems.md +0 -44
- package/dist/docs/references/reference-datasets-listVersions.md +0 -31
- package/dist/docs/references/reference-datasets-startExperiment.md +0 -60
- package/dist/docs/references/reference-datasets-startExperimentAsync.md +0 -41
- package/dist/docs/references/reference-datasets-update.md +0 -46
- package/dist/docs/references/reference-datasets-updateItem.md +0 -36
- package/dist/docs/references/reference-evals-answer-relevancy.md +0 -105
- package/dist/docs/references/reference-evals-answer-similarity.md +0 -99
- package/dist/docs/references/reference-evals-bias.md +0 -120
- package/dist/docs/references/reference-evals-completeness.md +0 -137
- package/dist/docs/references/reference-evals-content-similarity.md +0 -101
- package/dist/docs/references/reference-evals-context-precision.md +0 -196
- package/dist/docs/references/reference-evals-create-scorer.md +0 -270
- package/dist/docs/references/reference-evals-faithfulness.md +0 -114
- package/dist/docs/references/reference-evals-hallucination.md +0 -220
- package/dist/docs/references/reference-evals-keyword-coverage.md +0 -128
- package/dist/docs/references/reference-evals-mastra-scorer.md +0 -123
- package/dist/docs/references/reference-evals-run-evals.md +0 -138
- package/dist/docs/references/reference-evals-scorer-utils.md +0 -330
- package/dist/docs/references/reference-evals-textual-difference.md +0 -113
- package/dist/docs/references/reference-evals-tone-consistency.md +0 -119
- package/dist/docs/references/reference-evals-toxicity.md +0 -123
- package/dist/docs/references/reference-harness-harness-class.md +0 -645
- package/dist/docs/references/reference-logging-pino-logger.md +0 -117
- package/dist/docs/references/reference-memory-deleteMessages.md +0 -40
- package/dist/docs/references/reference-memory-memory-class.md +0 -147
- package/dist/docs/references/reference-memory-observational-memory.md +0 -565
- package/dist/docs/references/reference-observability-tracing-bridges-otel.md +0 -131
- package/dist/docs/references/reference-observability-tracing-configuration.md +0 -178
- package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +0 -138
- package/dist/docs/references/reference-observability-tracing-exporters-datadog.md +0 -116
- package/dist/docs/references/reference-observability-tracing-instances.md +0 -109
- package/dist/docs/references/reference-observability-tracing-interfaces.md +0 -749
- package/dist/docs/references/reference-observability-tracing-processors-sensitive-data-filter.md +0 -144
- package/dist/docs/references/reference-observability-tracing-spans.md +0 -224
- package/dist/docs/references/reference-processors-batch-parts-processor.md +0 -61
- package/dist/docs/references/reference-processors-language-detector.md +0 -81
- package/dist/docs/references/reference-processors-message-history-processor.md +0 -85
- package/dist/docs/references/reference-processors-moderation-processor.md +0 -104
- package/dist/docs/references/reference-processors-pii-detector.md +0 -107
- package/dist/docs/references/reference-processors-processor-interface.md +0 -525
- package/dist/docs/references/reference-processors-prompt-injection-detector.md +0 -71
- package/dist/docs/references/reference-processors-semantic-recall-processor.md +0 -123
- package/dist/docs/references/reference-processors-system-prompt-scrubber.md +0 -80
- package/dist/docs/references/reference-processors-token-limiter-processor.md +0 -113
- package/dist/docs/references/reference-processors-tool-call-filter.md +0 -85
- package/dist/docs/references/reference-processors-tool-search-processor.md +0 -113
- package/dist/docs/references/reference-processors-unicode-normalizer.md +0 -62
- package/dist/docs/references/reference-processors-working-memory-processor.md +0 -154
- package/dist/docs/references/reference-rag-database-config.md +0 -264
- package/dist/docs/references/reference-rag-embeddings.md +0 -92
- package/dist/docs/references/reference-server-mastra-server.md +0 -298
- package/dist/docs/references/reference-server-register-api-route.md +0 -249
- package/dist/docs/references/reference-storage-cloudflare-d1.md +0 -218
- package/dist/docs/references/reference-storage-composite.md +0 -235
- package/dist/docs/references/reference-storage-lance.md +0 -131
- package/dist/docs/references/reference-storage-libsql.md +0 -135
- package/dist/docs/references/reference-storage-mongodb.md +0 -262
- package/dist/docs/references/reference-storage-mssql.md +0 -155
- package/dist/docs/references/reference-storage-overview.md +0 -121
- package/dist/docs/references/reference-storage-postgresql.md +0 -529
- package/dist/docs/references/reference-storage-upstash.md +0 -160
- package/dist/docs/references/reference-streaming-ChunkType.md +0 -292
- package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +0 -182
- package/dist/docs/references/reference-streaming-agents-streamLegacy.md +0 -142
- package/dist/docs/references/reference-streaming-workflows-observeStream.md +0 -42
- package/dist/docs/references/reference-streaming-workflows-resumeStream.md +0 -61
- package/dist/docs/references/reference-streaming-workflows-stream.md +0 -88
- package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +0 -142
- package/dist/docs/references/reference-templates-overview.md +0 -194
- package/dist/docs/references/reference-tools-create-tool.md +0 -237
- package/dist/docs/references/reference-tools-graph-rag-tool.md +0 -185
- package/dist/docs/references/reference-tools-mcp-client.md +0 -962
- package/dist/docs/references/reference-tools-mcp-server.md +0 -1275
- package/dist/docs/references/reference-tools-vector-query-tool.md +0 -459
- package/dist/docs/references/reference-vectors-libsql.md +0 -305
- package/dist/docs/references/reference-vectors-mongodb.md +0 -295
- package/dist/docs/references/reference-vectors-pg.md +0 -408
- package/dist/docs/references/reference-vectors-upstash.md +0 -294
- package/dist/docs/references/reference-voice-composite-voice.md +0 -121
- package/dist/docs/references/reference-voice-mastra-voice.md +0 -313
- package/dist/docs/references/reference-voice-voice.addInstructions.md +0 -56
- package/dist/docs/references/reference-voice-voice.addTools.md +0 -67
- package/dist/docs/references/reference-voice-voice.connect.md +0 -94
- package/dist/docs/references/reference-voice-voice.events.md +0 -37
- package/dist/docs/references/reference-voice-voice.listen.md +0 -164
- package/dist/docs/references/reference-voice-voice.on.md +0 -111
- package/dist/docs/references/reference-voice-voice.speak.md +0 -157
- package/dist/docs/references/reference-workflows-run-methods-cancel.md +0 -86
- package/dist/docs/references/reference-workflows-run-methods-restart.md +0 -33
- package/dist/docs/references/reference-workflows-run-methods-resume.md +0 -59
- package/dist/docs/references/reference-workflows-run-methods-start.md +0 -58
- package/dist/docs/references/reference-workflows-run-methods-startAsync.md +0 -67
- package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +0 -142
- package/dist/docs/references/reference-workflows-run.md +0 -59
- package/dist/docs/references/reference-workflows-step.md +0 -119
- package/dist/docs/references/reference-workflows-workflow-methods-branch.md +0 -25
- package/dist/docs/references/reference-workflows-workflow-methods-commit.md +0 -17
- package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +0 -63
- package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +0 -25
- package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +0 -25
- package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +0 -118
- package/dist/docs/references/reference-workflows-workflow-methods-map.md +0 -93
- package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +0 -21
- package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +0 -35
- package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +0 -35
- package/dist/docs/references/reference-workflows-workflow-methods-then.md +0 -21
- package/dist/docs/references/reference-workflows-workflow.md +0 -157
- package/dist/docs/references/reference-workspace-filesystem.md +0 -202
- package/dist/docs/references/reference-workspace-local-filesystem.md +0 -327
- package/dist/docs/references/reference-workspace-local-sandbox.md +0 -285
- package/dist/docs/references/reference-workspace-sandbox.md +0 -81
- package/dist/docs/references/reference-workspace-workspace-class.md +0 -226
- package/dist/docs/references/reference.md +0 -276
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
# Workflows overview
|
|
2
|
-
|
|
3
|
-
Workflows let you define complex sequences of tasks using clear, structured steps rather than relying on the reasoning of a single agent. They give you full control over how tasks are broken down, how data moves between them, and what gets executed when. Workflows run using the built-in execution engine by default, or can be deployed to [workflow runners](https://mastra.ai/docs/deployment/workflow-runners) like Inngest for managed infrastructure.
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
## When to use workflows
|
|
8
|
-
|
|
9
|
-
Use workflows for tasks that are clearly defined upfront and involve multiple steps with a specific execution order. They give you fine-grained control over how data flows and transforms between steps, and which primitives are called at each stage.
|
|
10
|
-
|
|
11
|
-
> **Watch an introduction:** An introduction to workflows, and how they compare to agents [YouTube (7 minutes)](https://youtu.be/0jg2g3sNvgw)
|
|
12
|
-
|
|
13
|
-
## Core principles
|
|
14
|
-
|
|
15
|
-
Mastra workflows operate using these principles:
|
|
16
|
-
|
|
17
|
-
- Defining **steps** with `createStep`, specifying input/output schemas and business logic.
|
|
18
|
-
- Composing **steps** with `createWorkflow` to define the execution flow.
|
|
19
|
-
- Running **workflows** to execute the entire sequence, with built-in support for suspension, resumption, and streaming results.
|
|
20
|
-
|
|
21
|
-
## Creating a workflow step
|
|
22
|
-
|
|
23
|
-
Steps are the building blocks of workflows. Create a step using `createStep()` with `inputSchema` and `outputSchema` to define the data it accepts and returns.
|
|
24
|
-
|
|
25
|
-
The `execute` function defines what the step does. Use it to call functions in your codebase, external APIs, agents, or tools.
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import { createStep } from "@mastra/core/workflows";
|
|
29
|
-
|
|
30
|
-
const step1 = createStep({
|
|
31
|
-
id: "step-1",
|
|
32
|
-
inputSchema: z.object({
|
|
33
|
-
message: z.string()
|
|
34
|
-
}),
|
|
35
|
-
outputSchema: z.object({
|
|
36
|
-
formatted: z.string()
|
|
37
|
-
}),
|
|
38
|
-
execute: async ({ inputData }) => {
|
|
39
|
-
const { message } = inputData;
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
formatted: message.toUpperCase()
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
> **Info:** Visit [Step Class](https://mastra.ai/reference/workflows/step) for a full list of configuration options.
|
|
49
|
-
|
|
50
|
-
### Using agents and tools
|
|
51
|
-
|
|
52
|
-
Workflow steps can also call registered agents or import and execute tools directly, visit the [Using Tools](https://mastra.ai/docs/agents/using-tools) page for more information.
|
|
53
|
-
|
|
54
|
-
## Creating a workflow
|
|
55
|
-
|
|
56
|
-
Create a workflow using `createWorkflow()` with `inputSchema` and `outputSchema` to define the data it accepts and returns. Add steps using `.then()` and complete the workflow with `.commit()`.
|
|
57
|
-
|
|
58
|
-
```typescript
|
|
59
|
-
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
60
|
-
import { z } from "zod";
|
|
61
|
-
|
|
62
|
-
const step1 = createStep({...});
|
|
63
|
-
|
|
64
|
-
export const testWorkflow = createWorkflow({
|
|
65
|
-
id: "test-workflow",
|
|
66
|
-
inputSchema: z.object({
|
|
67
|
-
message: z.string()
|
|
68
|
-
}),
|
|
69
|
-
outputSchema: z.object({
|
|
70
|
-
output: z.string()
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
.then(step1)
|
|
74
|
-
.commit();
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
> **Info:** Visit [Workflow Class](https://mastra.ai/reference/workflows/workflow) for a full list of configuration options.
|
|
78
|
-
|
|
79
|
-
### Understanding control flow
|
|
80
|
-
|
|
81
|
-
Workflows can be composed using a number of different methods. The method you choose determines how each step's schema should be structured. Visit the [Control Flow](https://mastra.ai/docs/workflows/control-flow) page for more information.
|
|
82
|
-
|
|
83
|
-
## Workflow state
|
|
84
|
-
|
|
85
|
-
Workflow state lets you share values across steps without passing them through every step's inputSchema and outputSchema. Use state for tracking progress, accumulating results, or sharing configuration across the entire workflow.
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
const step1 = createStep({
|
|
89
|
-
id: "step-1",
|
|
90
|
-
inputSchema: z.object({ message: z.string() }),
|
|
91
|
-
outputSchema: z.object({ formatted: z.string() }),
|
|
92
|
-
stateSchema: z.object({ counter: z.number() }),
|
|
93
|
-
execute: async ({ inputData, state, setState }) => {
|
|
94
|
-
// Read from state
|
|
95
|
-
console.log(state.counter);
|
|
96
|
-
|
|
97
|
-
// Update state for subsequent steps
|
|
98
|
-
setState({ ...state, counter: state.counter + 1 });
|
|
99
|
-
|
|
100
|
-
return { formatted: inputData.message.toUpperCase() };
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
> **Info:** Visit [Workflow State](https://mastra.ai/docs/workflows/workflow-state) for complete documentation on state schemas, initial state, persistence across suspend/resume, and nested workflows.
|
|
106
|
-
|
|
107
|
-
## Workflows as steps
|
|
108
|
-
|
|
109
|
-
Use a workflow as a step to reuse its logic within a larger composition. Input and output follow the same schema rules described in [Core principles](https://mastra.ai/docs/workflows/control-flow).
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
const step1 = createStep({...});
|
|
113
|
-
const step2 = createStep({...});
|
|
114
|
-
|
|
115
|
-
const childWorkflow = createWorkflow({
|
|
116
|
-
id: "child-workflow",
|
|
117
|
-
inputSchema: z.object({
|
|
118
|
-
message: z.string()
|
|
119
|
-
}),
|
|
120
|
-
outputSchema: z.object({
|
|
121
|
-
emphasized: z.string()
|
|
122
|
-
})
|
|
123
|
-
})
|
|
124
|
-
.then(step1)
|
|
125
|
-
.then(step2)
|
|
126
|
-
.commit();
|
|
127
|
-
|
|
128
|
-
export const testWorkflow = createWorkflow({
|
|
129
|
-
id: "test-workflow",
|
|
130
|
-
inputSchema: z.object({
|
|
131
|
-
message: z.string()
|
|
132
|
-
}),
|
|
133
|
-
outputSchema: z.object({
|
|
134
|
-
emphasized: z.string()
|
|
135
|
-
})
|
|
136
|
-
})
|
|
137
|
-
.then(childWorkflow)
|
|
138
|
-
.commit();
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Cloning a workflow
|
|
142
|
-
|
|
143
|
-
Clone a workflow using `cloneWorkflow()` when you want to reuse its logic but track it separately under a new ID. Each clone runs independently and appears as a distinct workflow in logs and observability tools.
|
|
144
|
-
|
|
145
|
-
```typescript
|
|
146
|
-
import { cloneWorkflow } from "@mastra/core/workflows";
|
|
147
|
-
|
|
148
|
-
const step1 = createStep({...});
|
|
149
|
-
|
|
150
|
-
const parentWorkflow = createWorkflow({...})
|
|
151
|
-
const clonedWorkflow = cloneWorkflow(parentWorkflow, { id: "cloned-workflow" });
|
|
152
|
-
|
|
153
|
-
export const testWorkflow = createWorkflow({...})
|
|
154
|
-
.then(step1)
|
|
155
|
-
.then(clonedWorkflow)
|
|
156
|
-
.commit();
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
## Registering a workflow
|
|
160
|
-
|
|
161
|
-
Register your workflow in the Mastra instance to make it available throughout your application. Once registered, it can be called from agents or tools and has access to shared resources such as logging and observability features:
|
|
162
|
-
|
|
163
|
-
```typescript
|
|
164
|
-
import { Mastra } from "@mastra/core/mastra";
|
|
165
|
-
import { testWorkflow } from "./workflows/test-workflow";
|
|
166
|
-
|
|
167
|
-
export const mastra = new Mastra({
|
|
168
|
-
workflows: { testWorkflow },
|
|
169
|
-
});
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Referencing a workflow
|
|
173
|
-
|
|
174
|
-
You can run workflows from agents, tools, the Mastra Client, or the command line. Get a reference by calling `.getWorkflow()` on your `mastra` or `mastraClient` instance, depending on your setup:
|
|
175
|
-
|
|
176
|
-
```typescript
|
|
177
|
-
const testWorkflow = mastra.getWorkflow("testWorkflow");
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
> **Info:** `mastra.getWorkflow()` is preferred over a direct import for two reasons:
|
|
181
|
-
>
|
|
182
|
-
> 1. It provides access to the Mastra instance configuration (logger, telemetry, storage, registered agents, and vector stores)
|
|
183
|
-
> 2. It provides full TypeScript type inference for workflow input and output schemas
|
|
184
|
-
>
|
|
185
|
-
> **Note:** Use `getWorkflow()` with the workflow's **registration key** (the key used when adding it to Mastra). While `getWorkflowById()` is available for retrieving workflows by their `id` property, it does not provide the same level of type inference.
|
|
186
|
-
|
|
187
|
-
## Running workflows
|
|
188
|
-
|
|
189
|
-
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.
|
|
190
|
-
|
|
191
|
-
**Start**:
|
|
192
|
-
|
|
193
|
-
Create a workflow run instance using `createRun()`, then call `.start()` with `inputData` matching the workflow's `inputSchema`. The workflow executes all steps and returns the final result.
|
|
194
|
-
|
|
195
|
-
```typescript
|
|
196
|
-
const run = await testWorkflow.createRun();
|
|
197
|
-
|
|
198
|
-
const result = await run.start({
|
|
199
|
-
inputData: {
|
|
200
|
-
message: "Hello world"
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
if (result.status === "success") {
|
|
205
|
-
console.log(result.result);
|
|
206
|
-
}
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
**Stream**:
|
|
210
|
-
|
|
211
|
-
Create a workflow run instance using `.createRun()`, then call `.stream()` with `inputData` matching the workflow's `inputSchema`. Iterate over `fullStream` to track progress, then await `result` to get the final workflow result.
|
|
212
|
-
|
|
213
|
-
```typescript
|
|
214
|
-
const run = await testWorkflow.createRun();
|
|
215
|
-
|
|
216
|
-
const stream = run.stream({
|
|
217
|
-
inputData: {
|
|
218
|
-
message: "Hello world"
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
for await (const chunk of stream.fullStream) {
|
|
223
|
-
console.log(chunk);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// Get the final result (same type as run.start())
|
|
227
|
-
const result = await stream.result;
|
|
228
|
-
|
|
229
|
-
if (result.status === "success") {
|
|
230
|
-
console.log(result.result);
|
|
231
|
-
}
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### Workflow result type
|
|
235
|
-
|
|
236
|
-
Both `run.start()` and `stream.result` return a discriminated union based on the `status` property, which can be `success`, `failed`, `suspended`, `tripwire`, or `paused`. You can always safely access `result.status`, `result.input`, `result.steps`, and optionally `result.state` regardless of the status.
|
|
237
|
-
|
|
238
|
-
Additionally, depending on the status, different properties are available:
|
|
239
|
-
|
|
240
|
-
| Status | Unique properties | Description |
|
|
241
|
-
| ----------- | ----------------------------- | -------------------------------------------------------- |
|
|
242
|
-
| `success` | `result` | The workflow's output data |
|
|
243
|
-
| `failed` | `error` | The error that caused the failure |
|
|
244
|
-
| `tripwire` | `tripwire` | Contains `reason`, `retry?`, `metadata?`, `processorId?` |
|
|
245
|
-
| `suspended` | `suspendPayload`, `suspended` | Suspension data and array of suspended step paths |
|
|
246
|
-
| `paused` | _(none)_ | Only common properties available |
|
|
247
|
-
|
|
248
|
-
To access status-specific properties, check the `status` first:
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
const result = await run.start({ inputData: { message: "Hello world" } });
|
|
252
|
-
|
|
253
|
-
if (result.status === "success") {
|
|
254
|
-
console.log(result.result); // Only available when status is "success"
|
|
255
|
-
} else if (result.status === "failed") {
|
|
256
|
-
console.log(result.error.message);
|
|
257
|
-
} else if (result.status === "suspended") {
|
|
258
|
-
console.log(result.suspendPayload);
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Workflow output
|
|
263
|
-
|
|
264
|
-
Here's an example of a successful workflow result, showing the `input`, `steps`, and `result` properties:
|
|
265
|
-
|
|
266
|
-
```json
|
|
267
|
-
{
|
|
268
|
-
"status": "success",
|
|
269
|
-
"steps": {
|
|
270
|
-
"step-1": {
|
|
271
|
-
"status": "success",
|
|
272
|
-
"payload": {
|
|
273
|
-
"message": "Hello world"
|
|
274
|
-
},
|
|
275
|
-
"output": {
|
|
276
|
-
"formatted": "HELLO WORLD"
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
"step-2": {
|
|
280
|
-
"status": "success",
|
|
281
|
-
"payload": {
|
|
282
|
-
"formatted": "HELLO WORLD"
|
|
283
|
-
},
|
|
284
|
-
"output": {
|
|
285
|
-
"emphasized": "HELLO WORLD!!!"
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
},
|
|
289
|
-
"input": {
|
|
290
|
-
"message": "Hello world"
|
|
291
|
-
},
|
|
292
|
-
"result": {
|
|
293
|
-
"emphasized": "HELLO WORLD!!!"
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
## Restarting active workflow runs
|
|
299
|
-
|
|
300
|
-
When a workflow run loses connection to the server, it can be restarted from the last active step. This is useful for long-running workflows that might still be running when the server loses connection. Restarting a workflow run will resume execution from the last active step, and the workflow will continue from there.
|
|
301
|
-
|
|
302
|
-
### Restarting all active workflow runs of a workflow with `restartAllActiveWorkflowRuns()`
|
|
303
|
-
|
|
304
|
-
Use `restartAllActiveWorkflowRuns()` to restart all active workflow runs of a workflow. This helps restart all active workflow runs of a workflow, without having to manually loop through each run and restart.
|
|
305
|
-
|
|
306
|
-
```typescript
|
|
307
|
-
workflow.restartAllActiveWorkflowRuns();
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
### Restarting an active workflow run with `restart()`
|
|
311
|
-
|
|
312
|
-
Use `restart()` to restart an active workflow run from the last active step. This will resume execution from the last active step, and the workflow will continue from there.
|
|
313
|
-
|
|
314
|
-
```typescript
|
|
315
|
-
const run = await workflow.createRun();
|
|
316
|
-
|
|
317
|
-
const result = await run.start({ inputData: { value: "initial data" } });
|
|
318
|
-
|
|
319
|
-
const restartedResult = await run.restart();
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
### Identifying active workflow runs
|
|
323
|
-
|
|
324
|
-
When a workflow run is active, it will have a `status` of `running` or `waiting`. You can check the workflow's `status` to confirm it's active, and use `active` to identify the active workflow run.
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
const activeRuns = await workflow.listActiveWorkflowRuns();
|
|
328
|
-
if (activeRuns.runs.length > 0) {
|
|
329
|
-
console.log(activeRuns.runs);
|
|
330
|
-
}
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
> **Note:** When running the local mastra server, all active workflow runs will be restarted automatically when the server starts.
|
|
334
|
-
|
|
335
|
-
## Using `RequestContext`
|
|
336
|
-
|
|
337
|
-
Use [RequestContext](https://mastra.ai/docs/server/request-context) to access request-specific values. This lets you conditionally adjust behavior based on the context of the request.
|
|
338
|
-
|
|
339
|
-
```typescript
|
|
340
|
-
export type UserTier = {
|
|
341
|
-
"user-tier": "enterprise" | "pro";
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
const step1 = createStep({
|
|
345
|
-
execute: async ({ requestContext }) => {
|
|
346
|
-
const userTier = requestContext.get("user-tier") as UserTier["user-tier"];
|
|
347
|
-
|
|
348
|
-
const maxResults = userTier === "enterprise"
|
|
349
|
-
? 1000
|
|
350
|
-
: 50;
|
|
351
|
-
|
|
352
|
-
return { maxResults };
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
> **Info:** Visit [Request Context](https://mastra.ai/docs/server/request-context) for more information.
|
|
358
|
-
|
|
359
|
-
> **Tip:** For type-safe request context schema validation, see [Schema Validation](https://mastra.ai/docs/server/request-context).
|
|
360
|
-
|
|
361
|
-
## Testing with Studio
|
|
362
|
-
|
|
363
|
-
Use [Studio](https://mastra.ai/docs/getting-started/studio) to easily run workflows with different inputs, visualize the execution lifecycle, see the inputs and outputs for each step, and inspect each part of the workflow in more detail.
|
|
364
|
-
|
|
365
|
-
## Related
|
|
366
|
-
|
|
367
|
-
For a closer look at workflows, see our [Workflow Guide](https://mastra.ai/guides/guide/ai-recruiter), which walks through the core concepts with a practical example.
|
|
368
|
-
|
|
369
|
-
- [Workflow State](https://mastra.ai/docs/workflows/workflow-state)
|
|
370
|
-
- [Control Flow](https://mastra.ai/docs/workflows/control-flow)
|
|
371
|
-
- [Suspend & Resume](https://mastra.ai/docs/workflows/suspend-and-resume)
|
|
372
|
-
- [Error Handling](https://mastra.ai/docs/workflows/error-handling)
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
# Snapshots
|
|
2
|
-
|
|
3
|
-
In Mastra, a snapshot is a serializable representation of a workflow's complete execution state at a specific point in time. Snapshots capture all the information needed to resume a workflow from exactly where it left off, including:
|
|
4
|
-
|
|
5
|
-
- The current state of each step in the workflow
|
|
6
|
-
- The outputs of completed steps
|
|
7
|
-
- The execution path taken through the workflow
|
|
8
|
-
- Any suspended steps and their metadata
|
|
9
|
-
- The remaining retry attempts for each step
|
|
10
|
-
- Additional contextual data needed to resume execution
|
|
11
|
-
|
|
12
|
-
Snapshots are automatically created and managed by Mastra whenever a workflow is suspended, and are persisted to the configured storage system.
|
|
13
|
-
|
|
14
|
-
## The role of snapshots in suspend and resume
|
|
15
|
-
|
|
16
|
-
Snapshots are the key mechanism enabling Mastra's suspend and resume capabilities. When a workflow step calls `await suspend()`:
|
|
17
|
-
|
|
18
|
-
1. The workflow execution is paused at that exact point
|
|
19
|
-
2. The current state of the workflow is captured as a snapshot
|
|
20
|
-
3. The snapshot is persisted to storage
|
|
21
|
-
4. The workflow step is marked as "suspended" with a status of `'suspended'`
|
|
22
|
-
5. Later, when `resume()` is called on the suspended step, the snapshot is retrieved
|
|
23
|
-
6. The workflow execution resumes from exactly where it left off
|
|
24
|
-
|
|
25
|
-
This mechanism provides a powerful way to implement human-in-the-loop workflows, handle rate limiting, wait for external resources, and implement complex branching workflows that may need to pause for extended periods.
|
|
26
|
-
|
|
27
|
-
## Snapshot anatomy
|
|
28
|
-
|
|
29
|
-
Each snapshot includes the `runId`, input, step status (`success`, `suspended`, etc.), any suspend and resume payloads, and the final output. This ensures full context is available when resuming execution.
|
|
30
|
-
|
|
31
|
-
```json
|
|
32
|
-
{
|
|
33
|
-
"runId": "34904c14-e79e-4a12-9804-9655d4616c50",
|
|
34
|
-
"status": "success",
|
|
35
|
-
"value": {},
|
|
36
|
-
"context": {
|
|
37
|
-
"input": {
|
|
38
|
-
"value": 100,
|
|
39
|
-
"user": "Michael",
|
|
40
|
-
"requiredApprovers": ["manager", "finance"]
|
|
41
|
-
},
|
|
42
|
-
"approval-step": {
|
|
43
|
-
"payload": {
|
|
44
|
-
"value": 100,
|
|
45
|
-
"user": "Michael",
|
|
46
|
-
"requiredApprovers": ["manager", "finance"]
|
|
47
|
-
},
|
|
48
|
-
"startedAt": 1758027577955,
|
|
49
|
-
"status": "success",
|
|
50
|
-
"suspendPayload": {
|
|
51
|
-
"message": "Workflow suspended",
|
|
52
|
-
"requestedBy": "Michael",
|
|
53
|
-
"approvers": ["manager", "finance"]
|
|
54
|
-
},
|
|
55
|
-
"suspendedAt": 1758027578065,
|
|
56
|
-
"resumePayload": { "confirm": true, "approver": "manager" },
|
|
57
|
-
"resumedAt": 1758027578517,
|
|
58
|
-
"output": { "value": 100, "approved": true },
|
|
59
|
-
"endedAt": 1758027578634
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
"activePaths": [],
|
|
63
|
-
"serializedStepGraph": [
|
|
64
|
-
{
|
|
65
|
-
"type": "step",
|
|
66
|
-
"step": {
|
|
67
|
-
"id": "approval-step",
|
|
68
|
-
"description": "Accepts a value, waits for confirmation"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
],
|
|
72
|
-
"suspendedPaths": {},
|
|
73
|
-
"waitingPaths": {},
|
|
74
|
-
"result": { "value": 100, "approved": true },
|
|
75
|
-
"requestContext": {},
|
|
76
|
-
"timestamp": 1758027578740
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## How snapshots are saved and retrieved
|
|
81
|
-
|
|
82
|
-
Snapshots are saved to the configured storage system. By default, they use libSQL, but you can configure Upstash or PostgreSQL instead. Each snapshot is saved in the `workflow_snapshots` table and identified by the workflow's `runId`.
|
|
83
|
-
|
|
84
|
-
Read more about:
|
|
85
|
-
|
|
86
|
-
- [libSQL Storage](https://mastra.ai/reference/storage/libsql)
|
|
87
|
-
- [Upstash Storage](https://mastra.ai/reference/storage/upstash)
|
|
88
|
-
- [PostgreSQL Storage](https://mastra.ai/reference/storage/postgresql)
|
|
89
|
-
|
|
90
|
-
### Saving snapshots
|
|
91
|
-
|
|
92
|
-
When a workflow is suspended, Mastra automatically persists the workflow snapshot with these steps:
|
|
93
|
-
|
|
94
|
-
1. The `suspend()` function in a step execution triggers the snapshot process
|
|
95
|
-
2. The `WorkflowInstance.suspend()` method records the suspended machine
|
|
96
|
-
3. `persistWorkflowSnapshot()` is called to save the current state
|
|
97
|
-
4. The snapshot is serialized and stored in the configured database in the `workflow_snapshots` table
|
|
98
|
-
5. The storage record includes the workflow name, run ID, and the serialized snapshot
|
|
99
|
-
|
|
100
|
-
### Retrieving snapshots
|
|
101
|
-
|
|
102
|
-
When a workflow is resumed, Mastra retrieves the persisted snapshot with these steps:
|
|
103
|
-
|
|
104
|
-
1. The `resume()` method is called with a specific step ID
|
|
105
|
-
2. The snapshot is loaded from storage using `loadWorkflowSnapshot()`
|
|
106
|
-
3. The snapshot is parsed and prepared for resumption
|
|
107
|
-
4. The workflow execution is recreated with the snapshot state
|
|
108
|
-
5. The suspended step is resumed, and execution continues
|
|
109
|
-
|
|
110
|
-
```typescript
|
|
111
|
-
const storage = mastra.getStorage();
|
|
112
|
-
const workflowStore = await storage?.getStore('workflows');
|
|
113
|
-
|
|
114
|
-
const snapshot = await workflowStore?.loadWorkflowSnapshot({
|
|
115
|
-
runId: "<run-id>",
|
|
116
|
-
workflowName: "<workflow-id>",
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
console.log(snapshot);
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
## Storage options for snapshots
|
|
123
|
-
|
|
124
|
-
Snapshots are persisted using a `storage` instance configured on the `Mastra` class. This storage layer is shared across all workflows registered to that instance. Mastra supports multiple storage options for flexibility in different environments.
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
import { Mastra } from "@mastra/core";
|
|
128
|
-
import { LibSQLStore } from "@mastra/libsql";
|
|
129
|
-
import { approvalWorkflow } from "./workflows";
|
|
130
|
-
|
|
131
|
-
export const mastra = new Mastra({
|
|
132
|
-
storage: new LibSQLStore({
|
|
133
|
-
id: 'mastra-storage',
|
|
134
|
-
url: ":memory:",
|
|
135
|
-
}),
|
|
136
|
-
workflows: { approvalWorkflow },
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
- [libSQL Storage](https://mastra.ai/reference/storage/libsql)
|
|
141
|
-
- [PostgreSQL Storage](https://mastra.ai/reference/storage/postgresql)
|
|
142
|
-
- [MongoDB Storage](https://mastra.ai/reference/storage/mongodb)
|
|
143
|
-
- [Upstash Storage](https://mastra.ai/reference/storage/upstash)
|
|
144
|
-
- [Cloudflare D1](https://mastra.ai/reference/storage/cloudflare-d1)
|
|
145
|
-
- [DynamoDB](https://mastra.ai/reference/storage/dynamodb)
|
|
146
|
-
- [More storage providers](https://mastra.ai/docs/memory/storage)
|
|
147
|
-
|
|
148
|
-
## Best practices
|
|
149
|
-
|
|
150
|
-
1. **Ensure Serializability**: Any data that needs to be included in the snapshot must be serializable (convertible to JSON).
|
|
151
|
-
2. **Minimize Snapshot Size**: Avoid storing large data objects directly in the workflow context. Instead, store references to them (like IDs) and retrieve the data when needed.
|
|
152
|
-
3. **Handle Resume Context Carefully**: When resuming a workflow, carefully consider what context to provide. This will be merged with the existing snapshot data.
|
|
153
|
-
4. **Set Up Proper Monitoring**: Implement monitoring for suspended workflows, especially long-running ones, to ensure they are properly resumed.
|
|
154
|
-
5. **Consider Storage Scaling**: For applications with many suspended workflows, ensure your storage solution is appropriately scaled.
|
|
155
|
-
|
|
156
|
-
## Custom snapshot metadata
|
|
157
|
-
|
|
158
|
-
You can attach custom metadata when suspending a workflow by defining a `suspendSchema`. This metadata is stored in the snapshot and made available when the workflow is resumed.
|
|
159
|
-
|
|
160
|
-
```typescript
|
|
161
|
-
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
162
|
-
import { z } from "zod";
|
|
163
|
-
|
|
164
|
-
const approvalStep = createStep({
|
|
165
|
-
id: "approval-step",
|
|
166
|
-
description: "Accepts a value, waits for confirmation",
|
|
167
|
-
inputSchema: z.object({
|
|
168
|
-
value: z.number(),
|
|
169
|
-
user: z.string(),
|
|
170
|
-
requiredApprovers: z.array(z.string()),
|
|
171
|
-
}),
|
|
172
|
-
suspendSchema: z.object({
|
|
173
|
-
message: z.string(),
|
|
174
|
-
requestedBy: z.string(),
|
|
175
|
-
approvers: z.array(z.string()),
|
|
176
|
-
}),
|
|
177
|
-
resumeSchema: z.object({
|
|
178
|
-
confirm: z.boolean(),
|
|
179
|
-
approver: z.string(),
|
|
180
|
-
}),
|
|
181
|
-
outputSchema: z.object({
|
|
182
|
-
value: z.number(),
|
|
183
|
-
approved: z.boolean(),
|
|
184
|
-
}),
|
|
185
|
-
execute: async ({ inputData, resumeData, suspend }) => {
|
|
186
|
-
const { value, user, requiredApprovers } = inputData;
|
|
187
|
-
const { confirm } = resumeData ?? {};
|
|
188
|
-
|
|
189
|
-
if (!confirm) {
|
|
190
|
-
return await suspend({
|
|
191
|
-
message: "Workflow suspended",
|
|
192
|
-
requestedBy: user,
|
|
193
|
-
approvers: [...requiredApprovers],
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return {
|
|
198
|
-
value,
|
|
199
|
-
approved: confirm,
|
|
200
|
-
};
|
|
201
|
-
},
|
|
202
|
-
});
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Providing resume data
|
|
206
|
-
|
|
207
|
-
Use `resumeData` to pass structured input when resuming a suspended step. It must match the step’s `resumeSchema`.
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
const workflow = mastra.getWorkflow("approvalWorkflow");
|
|
211
|
-
|
|
212
|
-
const run = await workflow.createRun();
|
|
213
|
-
|
|
214
|
-
const result = await run.start({
|
|
215
|
-
inputData: {
|
|
216
|
-
value: 100,
|
|
217
|
-
user: "Michael",
|
|
218
|
-
requiredApprovers: ["manager", "finance"],
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
if (result.status === "suspended") {
|
|
223
|
-
const resumedResult = await run.resume({
|
|
224
|
-
step: "approval-step",
|
|
225
|
-
resumeData: {
|
|
226
|
-
confirm: true,
|
|
227
|
-
approver: "manager",
|
|
228
|
-
},
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## Related
|
|
234
|
-
|
|
235
|
-
- [Control Flow](https://mastra.ai/docs/workflows/control-flow)
|
|
236
|
-
- [Suspend & Resume](https://mastra.ai/docs/workflows/suspend-and-resume)
|
|
237
|
-
- [Time Travel](https://mastra.ai/docs/workflows/time-travel)
|
|
238
|
-
- [Human-in-the-loop](https://mastra.ai/docs/workflows/human-in-the-loop)
|