@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,271 +0,0 @@
|
|
|
1
|
-
# Structured Output
|
|
2
|
-
|
|
3
|
-
Structured output lets an agent return an object that matches the shape defined by a schema instead of returning text. The schema tells the model what fields to produce, and the model ensures the final result fits that shape.
|
|
4
|
-
|
|
5
|
-
## When to use structured output
|
|
6
|
-
|
|
7
|
-
Use structured output when you need an agent to return a data object rather than text. Having well defined fields can make it simpler to pull out the values you need for API calls, UI rendering, or application logic.
|
|
8
|
-
|
|
9
|
-
## Defining schemas
|
|
10
|
-
|
|
11
|
-
Agents can return structured data by defining the expected output with either [Zod](https://zod.dev/) or [JSON Schema](https://json-schema.org/). Zod is recommended because it provides TypeScript type inference and runtime validation, while JSON Schema is useful when you need a language agnostic format.
|
|
12
|
-
|
|
13
|
-
**Zod**:
|
|
14
|
-
|
|
15
|
-
Define the `output` shape using [Zod](https://zod.dev/):
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
import { z } from "zod";
|
|
19
|
-
|
|
20
|
-
const response = await testAgent.generate("Help me plan my day.", {
|
|
21
|
-
structuredOutput: {
|
|
22
|
-
schema: z.array(
|
|
23
|
-
z.object({
|
|
24
|
-
name: z.string(),
|
|
25
|
-
activities: z.array(z.string()),
|
|
26
|
-
}),
|
|
27
|
-
),
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
console.log(response.object);
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**JSON Schema**:
|
|
35
|
-
|
|
36
|
-
You can also use JSON Schema to define your output structure:
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
const response = await testAgent.generate("Help me plan my day.", {
|
|
40
|
-
structuredOutput: {
|
|
41
|
-
schema: {
|
|
42
|
-
type: "array",
|
|
43
|
-
items: {
|
|
44
|
-
type: "object",
|
|
45
|
-
properties: {
|
|
46
|
-
name: { type: "string" },
|
|
47
|
-
activities: {
|
|
48
|
-
type: "array",
|
|
49
|
-
items: { type: "string" },
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
required: ["name", "activities"],
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
console.log(response.object);
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
> **Info:** Visit [.generate()](https://mastra.ai/reference/agents/generate) for a full list of configuration options.
|
|
62
|
-
|
|
63
|
-
### Example output
|
|
64
|
-
|
|
65
|
-
The `response.object` will contain the structured data as defined by the schema.
|
|
66
|
-
|
|
67
|
-
```json
|
|
68
|
-
[
|
|
69
|
-
{
|
|
70
|
-
"name": "Morning Routine",
|
|
71
|
-
"activities": ["Wake up at 7am", "Exercise", "Shower", "Breakfast"]
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"name": "Work",
|
|
75
|
-
"activities": ["Check emails", "Team meeting", "Lunch break"]
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"name": "Evening",
|
|
79
|
-
"activities": ["Dinner", "Relax", "Read a book", "Sleep by 10pm"]
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Streaming
|
|
85
|
-
|
|
86
|
-
Streaming also supports structured output. The final structured object is available on `stream.fullStream` and after the stream completes on `stream.object`. Text stream chunks are still emitted, but they contain natural language text rather than structured data.
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
import { z } from "zod";
|
|
90
|
-
|
|
91
|
-
const stream = await testAgent.stream("Help me plan my day.", {
|
|
92
|
-
structuredOutput: {
|
|
93
|
-
schema: z.array(
|
|
94
|
-
z.object({
|
|
95
|
-
name: z.string(),
|
|
96
|
-
activities: z.array(z.string())
|
|
97
|
-
})
|
|
98
|
-
),
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
for await (const chunk of stream.fullStream) {
|
|
103
|
-
if (chunk.type === "object-result") {
|
|
104
|
-
console.log("\n", JSON.stringify(chunk, null, 2));
|
|
105
|
-
}
|
|
106
|
-
process.stdout.write(JSON.stringify(chunk));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
console.log(await stream.object)
|
|
110
|
-
|
|
111
|
-
for await (const chunk of stream.textStream) {
|
|
112
|
-
process.stdout.write(chunk);
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Structuring agent
|
|
117
|
-
|
|
118
|
-
When your main agent isn't proficient at creating structured output you can provide a `model` to `structuredOutput`. In this case, Mastra uses a second agent under the hood to extract structured data from the main agent's natural language response. This makes two LLM calls, one to generate the response and another to turn that response into the structured object, which adds some latency and cost but can improve accuracy for complex structuring tasks.
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
import { z } from "zod";
|
|
122
|
-
|
|
123
|
-
const response = await testAgent.generate("Analyze the TypeScript programming language.", {
|
|
124
|
-
structuredOutput: {
|
|
125
|
-
schema: z.object({
|
|
126
|
-
overview: z.string(),
|
|
127
|
-
strengths: z.array(z.string()),
|
|
128
|
-
weaknesses: z.array(z.string()),
|
|
129
|
-
useCases: z.array(z.object({
|
|
130
|
-
scenario: z.string(),
|
|
131
|
-
reasoning: z.string(),
|
|
132
|
-
})),
|
|
133
|
-
comparison: z.object({
|
|
134
|
-
similarTo: z.array(z.string()),
|
|
135
|
-
differentiators: z.array(z.string()),
|
|
136
|
-
}),
|
|
137
|
-
}),
|
|
138
|
-
model: "openai/gpt-4o",
|
|
139
|
-
},
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
console.log(response.object);
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Combining tools and structured output
|
|
146
|
-
|
|
147
|
-
When an agent has both tools and structured output configured, some models may not support using both features together. This is a limitation of the underlying model APIs, not Mastra itself.
|
|
148
|
-
|
|
149
|
-
If your tools aren't being called when structured output is enabled, or you receive an error when combining both features, try one of the workarounds below.
|
|
150
|
-
|
|
151
|
-
### Workaround options
|
|
152
|
-
|
|
153
|
-
When your model doesn't support tools and structured output together, you have three options:
|
|
154
|
-
|
|
155
|
-
1. **Use `jsonPromptInjection: true`** - Injects the schema into the prompt instead of using the API's `response_format` parameter
|
|
156
|
-
2. **Use a separate structuring model** - Pass a `model` to `structuredOutput` to use a second LLM for structuring
|
|
157
|
-
3. **Use `prepareStep`** - Handle tools and structured output in separate steps
|
|
158
|
-
|
|
159
|
-
Each approach is detailed in the sections below.
|
|
160
|
-
|
|
161
|
-
## LLM structured output support
|
|
162
|
-
|
|
163
|
-
Structured output support varies across LLMs due to differences in their APIs. The sections below cover workarounds for models that don't fully support structured output or combining it with tools.
|
|
164
|
-
|
|
165
|
-
### `jsonPromptInjection`
|
|
166
|
-
|
|
167
|
-
By default, Mastra passes the schema to the model provider using the `response_format` API parameter. Most model providers have built-in support for this, which reliably enforces the schema.
|
|
168
|
-
|
|
169
|
-
If your model provider doesn't support `response_format`, you'll get an error from the API. When this happens, set `jsonPromptInjection: true`. This adds the schema to the system prompt instead, instructing the model to output JSON. This is less reliable than the API parameter approach.
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
import { z } from "zod";
|
|
173
|
-
|
|
174
|
-
const response = await testAgent.generate("Help me plan my day.", {
|
|
175
|
-
structuredOutput: {
|
|
176
|
-
schema: z.array(
|
|
177
|
-
z.object({
|
|
178
|
-
name: z.string(),
|
|
179
|
-
activities: z.array(z.string()),
|
|
180
|
-
}),
|
|
181
|
-
),
|
|
182
|
-
jsonPromptInjection: true,
|
|
183
|
-
},
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
console.log(response.object);
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
> **Gemini 2.5 with tools:** Gemini 2.5 models do not support combining `response_format` (structured output) with function calling (tools) in the same API call. If your agent has tools and you're using `structuredOutput` with a Gemini 2.5 model, you must set `jsonPromptInjection: true` to avoid the error `Function calling with a response mime type: 'application/json' is unsupported`.
|
|
190
|
-
>
|
|
191
|
-
> ```typescript
|
|
192
|
-
> const response = await agentWithTools.generate("Your prompt", {
|
|
193
|
-
> structuredOutput: {
|
|
194
|
-
> schema: yourSchema,
|
|
195
|
-
> jsonPromptInjection: true, // Required for Gemini 2.5 when tools are present
|
|
196
|
-
> },
|
|
197
|
-
> });
|
|
198
|
-
> ```
|
|
199
|
-
|
|
200
|
-
### Using a separate structuring model
|
|
201
|
-
|
|
202
|
-
When `model` is provided to the `structuredOutput` property, Mastra uses a separate internal agent to handle the structured output. The main agent will handle all of the steps (including tool calling) and the structured output model will handle only the generation of structured output.
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
const response = await testAgent.generate("Tell me about TypeScript.", {
|
|
206
|
-
structuredOutput: {
|
|
207
|
-
schema: yourSchema
|
|
208
|
-
model: 'openai/gpt-4o'
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Multi-step approach with `prepareStep`
|
|
214
|
-
|
|
215
|
-
For models that don't support tools and structured outputs together, you can use `prepareStep` to handle them in separate steps.
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
const result = await agent.stream("weather in vancouver?", {
|
|
219
|
-
prepareStep: async ({ stepNumber }) => {
|
|
220
|
-
if (stepNumber === 0) {
|
|
221
|
-
return {
|
|
222
|
-
model: "anthropic/claude-sonnet-4-20250514",
|
|
223
|
-
tools: {
|
|
224
|
-
weatherTool,
|
|
225
|
-
},
|
|
226
|
-
toolChoice: "required",
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
return {
|
|
230
|
-
model: "anthropic/claude-sonnet-4-20250514",
|
|
231
|
-
tools: undefined,
|
|
232
|
-
structuredOutput: {
|
|
233
|
-
schema: z.object({
|
|
234
|
-
temperature: z.number(),
|
|
235
|
-
humidity: z.number(),
|
|
236
|
-
windSpeed: z.number(),
|
|
237
|
-
}),
|
|
238
|
-
},
|
|
239
|
-
};
|
|
240
|
-
},
|
|
241
|
-
});
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Error handling
|
|
245
|
-
|
|
246
|
-
When schema validation fails, you can control how errors are handled using `errorStrategy`. The default `strict` strategy throws an error, while `warn` logs a warning and continues. The `fallback` strategy returns the values provided using `fallbackValue`.
|
|
247
|
-
|
|
248
|
-
```typescript
|
|
249
|
-
import { z } from "zod";
|
|
250
|
-
|
|
251
|
-
const response = await testAgent.generate("Tell me about TypeScript.", {
|
|
252
|
-
structuredOutput: {
|
|
253
|
-
schema: z.object({
|
|
254
|
-
summary: z.string(),
|
|
255
|
-
keyFeatures: z.array(z.string())
|
|
256
|
-
}),
|
|
257
|
-
errorStrategy: "fallback",
|
|
258
|
-
fallbackValue: {
|
|
259
|
-
summary: "TypeScript is a typed superset of JavaScript",
|
|
260
|
-
keyFeatures: ["Static typing", "Compiles to JavaScript", "Better tooling"]
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
console.log(response.object);
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
## Related
|
|
269
|
-
|
|
270
|
-
- [Using Tools](https://mastra.ai/docs/agents/using-tools)
|
|
271
|
-
- [Agent Memory](https://mastra.ai/docs/agents/agent-memory)
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
# Using Tools
|
|
2
|
-
|
|
3
|
-
Agents use tools to call APIs, query databases, or run custom functions from your codebase. Tools give agents capabilities beyond language generation by providing structured access to data and performing clearly defined operations. You can also load tools from remote [MCP servers](https://mastra.ai/docs/mcp/overview) to expand an agent's capabilities.
|
|
4
|
-
|
|
5
|
-
## When to use tools
|
|
6
|
-
|
|
7
|
-
Use tools when an agent needs additional context or information from remote resources, or when it needs to run code that performs a specific operation. This includes tasks a model can't reliably handle on its own, such as fetching live data or returning consistent, well defined outputs.
|
|
8
|
-
|
|
9
|
-
## Creating a tool
|
|
10
|
-
|
|
11
|
-
When creating tools, keep descriptions simple and focused on what the tool does, emphasizing its primary use case. Descriptive schema names can also help guide the agent on how to use the tool.
|
|
12
|
-
|
|
13
|
-
This example shows how to create a tool that fetches weather data from an API. When the agent calls the tool, it provides the required input as defined by the tool's `inputSchema`. The tool accesses this data through its `inputData` parameter, which in this example includes the `location` used in the weather API query.
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { createTool } from "@mastra/core/tools";
|
|
17
|
-
import { z } from "zod";
|
|
18
|
-
|
|
19
|
-
export const weatherTool = createTool({
|
|
20
|
-
id: "weather-tool",
|
|
21
|
-
description: "Fetches weather for a location",
|
|
22
|
-
inputSchema: z.object({
|
|
23
|
-
location: z.string(),
|
|
24
|
-
}),
|
|
25
|
-
outputSchema: z.object({
|
|
26
|
-
weather: z.string(),
|
|
27
|
-
}),
|
|
28
|
-
execute: async (inputData) => {
|
|
29
|
-
const { location } = inputData;
|
|
30
|
-
|
|
31
|
-
const response = await fetch(`https://wttr.in/${location}?format=3`);
|
|
32
|
-
const weather = await response.text();
|
|
33
|
-
|
|
34
|
-
return { weather };
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Adding tools to an agent
|
|
40
|
-
|
|
41
|
-
To make a tool available to an agent, add it to `tools`. Mentioning available tools and their general purpose in the agent's system prompt helps the agent decide when to call a tool and when not to.
|
|
42
|
-
|
|
43
|
-
An agent can use multiple tools to handle more complex tasks by delegating specific parts to individual tools. The agent decides which tools to use based on the user's message, the agent's instructions, and the tool descriptions and schemas.
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
import { Agent } from "@mastra/core/agent";
|
|
47
|
-
import { weatherTool } from "../tools/weather-tool";
|
|
48
|
-
|
|
49
|
-
export const weatherAgent = new Agent({
|
|
50
|
-
id: "weather-agent",
|
|
51
|
-
name: "Weather Agent",
|
|
52
|
-
instructions: `
|
|
53
|
-
You are a helpful weather assistant.
|
|
54
|
-
Use the weatherTool to fetch current weather data.`,
|
|
55
|
-
model: "openai/gpt-5.1",
|
|
56
|
-
tools: { weatherTool },
|
|
57
|
-
});
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Using multiple tools
|
|
61
|
-
|
|
62
|
-
When multiple tools are available, the agent may choose to use one, several, or none, depending on what's needed to answer the query.
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
import { weatherTool } from "../tools/weather-tool";
|
|
66
|
-
import { activitiesTool } from "../tools/activities-tool";
|
|
67
|
-
|
|
68
|
-
export const weatherAgent = new Agent({
|
|
69
|
-
id: "weather-agent",
|
|
70
|
-
name: "Weather Agent",
|
|
71
|
-
tools: { weatherTool, activitiesTool },
|
|
72
|
-
});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Using agents as tools
|
|
76
|
-
|
|
77
|
-
Agents can be added to other agents through the `agents` configuration. When you add a subagent, Mastra automatically converts it to a tool that the parent agent can call. The generated tool is named `agent-<agentName>`.
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
import { Agent } from "@mastra/core/agent";
|
|
81
|
-
|
|
82
|
-
export const parentAgent = new Agent({
|
|
83
|
-
id: "parent-agent",
|
|
84
|
-
name: "Parent Agent",
|
|
85
|
-
description: "Take care in writing a good description here",
|
|
86
|
-
instructions: `Instructions`,
|
|
87
|
-
model: "openai/gpt-5.1",
|
|
88
|
-
agents: {
|
|
89
|
-
subAgent,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
const subAgent = new Agent({
|
|
94
|
-
id: "sub-agent",
|
|
95
|
-
name: "Sub Agent",
|
|
96
|
-
description: "Take care in writing a good description here",
|
|
97
|
-
instructions: `Instructions`,
|
|
98
|
-
model: "openai/gpt-5.1",
|
|
99
|
-
})
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
The subagent should include a `description` to help the parent agent understand when to use it. See the [`toolName` docs](#subagents-and-workflows-as-tools) to learn more about the tool naming scheme.
|
|
103
|
-
|
|
104
|
-
## Using workflows as tools
|
|
105
|
-
|
|
106
|
-
Workflows can be added to agents through the `workflows` configuration. When you add a workflow, Mastra automatically converts it to a tool that the agent can call. The generated tool is named `workflow-<workflowName>` and uses the workflow's `inputSchema` and `outputSchema`.
|
|
107
|
-
|
|
108
|
-
```typescript
|
|
109
|
-
import { Agent } from "@mastra/core/agent";
|
|
110
|
-
import { researchWorkflow } from "../workflows/research-workflow";
|
|
111
|
-
|
|
112
|
-
export const researchAgent = new Agent({
|
|
113
|
-
id: "research-agent",
|
|
114
|
-
name: "Research Agent",
|
|
115
|
-
instructions: `
|
|
116
|
-
You are a research assistant.
|
|
117
|
-
Use the research workflow to gather and compile information on topics.`,
|
|
118
|
-
model: "openai/gpt-5.1",
|
|
119
|
-
tools: {
|
|
120
|
-
weatherTool,
|
|
121
|
-
},
|
|
122
|
-
workflows: {
|
|
123
|
-
researchWorkflow,
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
The workflow should include a `description` to help the agent understand when to use it:
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
import { createWorkflow } from "@mastra/core/workflows";
|
|
132
|
-
import { z } from "zod";
|
|
133
|
-
|
|
134
|
-
export const researchWorkflow = createWorkflow({
|
|
135
|
-
id: "research-workflow",
|
|
136
|
-
description: "Gathers information on a topic and compiles a summary report.",
|
|
137
|
-
// Rest of the workflow...
|
|
138
|
-
})
|
|
139
|
-
.commit();
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
When the agent calls the workflow tool, it receives a response containing the workflow result and a `runId` that can be used to track the execution:
|
|
143
|
-
|
|
144
|
-
```typescript
|
|
145
|
-
{
|
|
146
|
-
result: { summary: "...", sources: ["..."] },
|
|
147
|
-
runId: "abc-123"
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
See the [`toolName` docs](#subagents-and-workflows-as-tools) to learn more about the tool naming scheme.
|
|
152
|
-
|
|
153
|
-
## Controlling `toolName` in stream responses
|
|
154
|
-
|
|
155
|
-
The `toolName` in stream responses is determined by the **object key** you use, not the `id` property of the tool, agent, or workflow.
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
// Tool defined with id: "weather-tool"
|
|
159
|
-
export const weatherTool = createTool({
|
|
160
|
-
id: "weather-tool",
|
|
161
|
-
// ...
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
// Using the variable name as the key
|
|
165
|
-
tools: { weatherTool }
|
|
166
|
-
// Stream returns: toolName: "weatherTool"
|
|
167
|
-
|
|
168
|
-
// Using the tool's id as the key
|
|
169
|
-
tools: { [weatherTool.id]: weatherTool }
|
|
170
|
-
// Stream returns: toolName: "weather-tool"
|
|
171
|
-
|
|
172
|
-
// Using a custom key
|
|
173
|
-
tools: { "my-custom-name": weatherTool }
|
|
174
|
-
// Stream returns: toolName: "my-custom-name"
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
This lets you specify how tools are identified in the stream. If you want the `toolName` to match the tool's `id`, use the tool's `id` as the object key.
|
|
178
|
-
|
|
179
|
-
### Subagents and workflows as tools
|
|
180
|
-
|
|
181
|
-
Subagents and workflows follow the same pattern. They are converted to tools with a prefix followed by your object key:
|
|
182
|
-
|
|
183
|
-
| Property | Prefix | Example key | `toolName` |
|
|
184
|
-
| ----------- | ----------- | ----------- | ------------------- |
|
|
185
|
-
| `agents` | `agent-` | `weather` | `agent-weather` |
|
|
186
|
-
| `workflows` | `workflow-` | `research` | `workflow-research` |
|
|
187
|
-
|
|
188
|
-
```typescript
|
|
189
|
-
const orchestrator = new Agent({
|
|
190
|
-
agents: {
|
|
191
|
-
weather: weatherAgent, // toolName: "agent-weather"
|
|
192
|
-
},
|
|
193
|
-
workflows: {
|
|
194
|
-
research: researchWorkflow, // toolName: "workflow-research"
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Note that for subagents, you'll see two different identifiers in stream responses:
|
|
200
|
-
|
|
201
|
-
- `toolName: "agent-weather"` in tool call events — the generated tool wrapper name
|
|
202
|
-
- `id: "weather-agent"` in `data-tool-agent` chunks — the subagent's actual `id` property
|
|
203
|
-
|
|
204
|
-
## Tools with structured output
|
|
205
|
-
|
|
206
|
-
When using tools with [structured output](https://mastra.ai/docs/agents/structured-output), some models don't support combining both features in the same API call. If your tools aren't being called when structured output is enabled, or you receive errors about incompatible options, see [Combining tools and structured output](https://mastra.ai/docs/agents/structured-output) for model compatibility information and workarounds.
|
|
207
|
-
|
|
208
|
-
## Related
|
|
209
|
-
|
|
210
|
-
- [MCP Overview](https://mastra.ai/docs/mcp/overview)
|
|
211
|
-
- [Dynamic Tool Search](https://mastra.ai/reference/processors/tool-search-processor) - Load tools on demand for agents with large tool libraries
|
|
212
|
-
- [Structured Output](https://mastra.ai/docs/agents/structured-output)
|
|
213
|
-
- [Agent Memory](https://mastra.ai/docs/agents/agent-memory)
|
|
214
|
-
- [Request Context](https://mastra.ai/docs/server/request-context)
|