@mastra/core 1.7.0 → 1.8.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 +218 -0
- package/dist/agent/agent-legacy.d.ts +15 -0
- package/dist/agent/agent-legacy.d.ts.map +1 -1
- package/dist/agent/agent.d.ts +7 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.types.d.ts +311 -2
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +13 -13
- package/dist/agent/index.d.ts +3 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +2 -2
- package/dist/agent/message-list/index.cjs +18 -18
- package/dist/agent/message-list/index.js +1 -1
- package/dist/agent/message-list/merge/MessageMerger.d.ts.map +1 -1
- package/dist/agent/message-list/message-list.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
- package/dist/{chunk-A72NTLFT.cjs → chunk-2IO5Q7OZ.cjs} +7 -7
- package/dist/{chunk-A72NTLFT.cjs.map → chunk-2IO5Q7OZ.cjs.map} +1 -1
- package/dist/{chunk-DFCRXDVK.js → chunk-2KHPZJNU.js} +10 -8
- package/dist/chunk-2KHPZJNU.js.map +1 -0
- package/dist/{chunk-R4N65TLG.js → chunk-2R5MQMSA.js} +35 -16
- package/dist/chunk-2R5MQMSA.js.map +1 -0
- package/dist/{chunk-ZSBM2SVU.js → chunk-4H5F6AFP.js} +1064 -226
- package/dist/chunk-4H5F6AFP.js.map +1 -0
- package/dist/{chunk-BQHWJLXU.js → chunk-63G75DJE.js} +9 -3
- package/dist/chunk-63G75DJE.js.map +1 -0
- package/dist/{chunk-SBOHDNIZ.cjs → chunk-6GSWC5ZA.cjs} +2 -2
- package/dist/{chunk-SBOHDNIZ.cjs.map → chunk-6GSWC5ZA.cjs.map} +1 -1
- package/dist/{chunk-QTAS3HND.cjs → chunk-6Q2UD3XF.cjs} +21 -14
- package/dist/chunk-6Q2UD3XF.cjs.map +1 -0
- package/dist/{chunk-GPJGPARM.js → chunk-DTPR3JAM.js} +2 -2
- package/dist/{chunk-GPJGPARM.js.map → chunk-DTPR3JAM.js.map} +1 -1
- package/dist/{chunk-NN26FSKL.js → chunk-FHJ2KIU5.js} +3 -3
- package/dist/{chunk-NN26FSKL.js.map → chunk-FHJ2KIU5.js.map} +1 -1
- package/dist/{chunk-RABITNTG.cjs → chunk-HWG7NPJA.cjs} +55 -55
- package/dist/{chunk-RABITNTG.cjs.map → chunk-HWG7NPJA.cjs.map} +1 -1
- package/dist/{chunk-HB6T4554.cjs → chunk-KH3G65IS.cjs} +10 -8
- package/dist/chunk-KH3G65IS.cjs.map +1 -0
- package/dist/{chunk-YQG7NBPR.cjs → chunk-KZ4IKNPN.cjs} +25 -23
- package/dist/chunk-KZ4IKNPN.cjs.map +1 -0
- package/dist/{chunk-6DUTLERJ.js → chunk-MRV5NCPC.js} +3 -3
- package/dist/{chunk-6DUTLERJ.js.map → chunk-MRV5NCPC.js.map} +1 -1
- package/dist/{chunk-O7PZ4VOO.cjs → chunk-N3ROEJG4.cjs} +12 -10
- package/dist/chunk-N3ROEJG4.cjs.map +1 -0
- package/dist/{chunk-7EXW4AAG.js → chunk-NXKI2L4X.js} +6 -4
- package/dist/chunk-NXKI2L4X.js.map +1 -0
- package/dist/{chunk-QWTB53GS.js → chunk-OSEPGSLN.js} +6 -6
- package/dist/{chunk-QWTB53GS.js.map → chunk-OSEPGSLN.js.map} +1 -1
- package/dist/{chunk-6OXW5E2O.js → chunk-PI7ONENO.js} +4 -4
- package/dist/{chunk-6OXW5E2O.js.map → chunk-PI7ONENO.js.map} +1 -1
- package/dist/{chunk-KUXNBWN7.js → chunk-Q4MV4XKX.js} +8 -6
- package/dist/chunk-Q4MV4XKX.js.map +1 -0
- package/dist/{chunk-7UAJ6LMR.cjs → chunk-QKQGKEN7.cjs} +1078 -241
- package/dist/chunk-QKQGKEN7.cjs.map +1 -0
- package/dist/{chunk-IC5OUWKJ.js → chunk-SP7P6Z4L.js} +19 -2
- package/dist/chunk-SP7P6Z4L.js.map +1 -0
- package/dist/{chunk-QDH6MVJ7.cjs → chunk-TGUDI64A.cjs} +14 -14
- package/dist/{chunk-QDH6MVJ7.cjs.map → chunk-TGUDI64A.cjs.map} +1 -1
- package/dist/{chunk-EAZ6YDCQ.cjs → chunk-U3HBG2GU.cjs} +9 -2
- package/dist/chunk-U3HBG2GU.cjs.map +1 -0
- package/dist/{chunk-6QBN6MZY.cjs → chunk-VAKB5EXJ.cjs} +42 -23
- package/dist/chunk-VAKB5EXJ.cjs.map +1 -0
- package/dist/{chunk-QSHV7GPT.js → chunk-VBPU6CLZ.js} +3808 -3026
- package/dist/chunk-VBPU6CLZ.js.map +1 -0
- package/dist/{chunk-2X66GWF5.cjs → chunk-VTVCMIAI.cjs} +3905 -3121
- package/dist/chunk-VTVCMIAI.cjs.map +1 -0
- package/dist/{chunk-PHHJLGZU.cjs → chunk-XNWF6CYR.cjs} +6 -6
- package/dist/{chunk-PHHJLGZU.cjs.map → chunk-XNWF6CYR.cjs.map} +1 -1
- package/dist/{chunk-T6GAM3SQ.js → chunk-ZRPTWYWJ.js} +18 -11
- package/dist/chunk-ZRPTWYWJ.js.map +1 -0
- package/dist/{chunk-DB7U2C5B.cjs → chunk-ZXOWG32X.cjs} +19 -2
- package/dist/chunk-ZXOWG32X.cjs.map +1 -0
- package/dist/datasets/experiment/index.d.ts.map +1 -1
- package/dist/datasets/experiment/scorer.d.ts +1 -1
- 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/docs/SKILL.md +300 -0
- package/dist/docs/assets/SOURCE_MAP.json +1423 -0
- package/dist/docs/references/docs-agents-adding-voice.md +349 -0
- package/dist/docs/references/docs-agents-agent-approval.md +558 -0
- package/dist/docs/references/docs-agents-agent-memory.md +209 -0
- package/dist/docs/references/docs-agents-guardrails.md +374 -0
- package/dist/docs/references/docs-agents-network-approval.md +275 -0
- package/dist/docs/references/docs-agents-networks.md +299 -0
- package/dist/docs/references/docs-agents-overview.md +304 -0
- package/dist/docs/references/docs-agents-processors.md +622 -0
- package/dist/docs/references/docs-agents-structured-output.md +273 -0
- package/dist/docs/references/docs-agents-supervisor-agents.md +304 -0
- package/dist/docs/references/docs-agents-using-tools.md +214 -0
- package/dist/docs/references/docs-evals-custom-scorers.md +519 -0
- package/dist/docs/references/docs-evals-overview.md +141 -0
- package/dist/docs/references/docs-evals-running-in-ci.md +124 -0
- package/dist/docs/references/docs-memory-memory-processors.md +314 -0
- package/dist/docs/references/docs-memory-observational-memory.md +248 -0
- package/dist/docs/references/docs-memory-overview.md +45 -0
- package/dist/docs/references/docs-memory-semantic-recall.md +272 -0
- package/dist/docs/references/docs-memory-storage.md +261 -0
- package/dist/docs/references/docs-memory-working-memory.md +400 -0
- package/dist/docs/references/docs-observability-datasets-overview.md +198 -0
- package/dist/docs/references/docs-observability-datasets-running-experiments.md +274 -0
- package/dist/docs/references/docs-observability-logging.md +99 -0
- package/dist/docs/references/docs-observability-overview.md +70 -0
- package/dist/docs/references/docs-observability-tracing-bridges-otel.md +209 -0
- package/dist/docs/references/docs-observability-tracing-exporters-arize.md +272 -0
- package/dist/docs/references/docs-observability-tracing-exporters-braintrust.md +111 -0
- package/dist/docs/references/docs-observability-tracing-exporters-cloud.md +127 -0
- package/dist/docs/references/docs-observability-tracing-exporters-datadog.md +187 -0
- package/dist/docs/references/docs-observability-tracing-exporters-default.md +209 -0
- package/dist/docs/references/docs-observability-tracing-exporters-laminar.md +100 -0
- package/dist/docs/references/docs-observability-tracing-exporters-langfuse.md +213 -0
- package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +198 -0
- package/dist/docs/references/docs-observability-tracing-exporters-otel.md +476 -0
- package/dist/docs/references/docs-observability-tracing-exporters-posthog.md +148 -0
- package/dist/docs/references/docs-observability-tracing-overview.md +1112 -0
- package/dist/docs/references/docs-rag-chunking-and-embedding.md +183 -0
- package/dist/docs/references/docs-rag-graph-rag.md +215 -0
- package/dist/docs/references/docs-rag-overview.md +72 -0
- package/dist/docs/references/docs-rag-retrieval.md +515 -0
- package/dist/docs/references/docs-rag-vector-databases.md +645 -0
- package/dist/docs/references/docs-server-auth-auth0.md +220 -0
- package/dist/docs/references/docs-server-auth-clerk.md +132 -0
- package/dist/docs/references/docs-server-auth-composite-auth.md +234 -0
- package/dist/docs/references/docs-server-auth-custom-auth-provider.md +513 -0
- package/dist/docs/references/docs-server-auth-firebase.md +272 -0
- package/dist/docs/references/docs-server-auth-jwt.md +110 -0
- package/dist/docs/references/docs-server-auth-simple-auth.md +180 -0
- package/dist/docs/references/docs-server-auth-supabase.md +117 -0
- package/dist/docs/references/docs-server-auth-workos.md +186 -0
- package/dist/docs/references/docs-server-custom-adapters.md +378 -0
- package/dist/docs/references/docs-server-custom-api-routes.md +267 -0
- package/dist/docs/references/docs-server-mastra-client.md +243 -0
- package/dist/docs/references/docs-server-mastra-server.md +71 -0
- package/dist/docs/references/docs-server-middleware.md +225 -0
- package/dist/docs/references/docs-server-request-context.md +471 -0
- package/dist/docs/references/docs-streaming-events.md +237 -0
- package/dist/docs/references/docs-streaming-tool-streaming.md +175 -0
- package/dist/docs/references/docs-streaming-workflow-streaming.md +109 -0
- package/dist/docs/references/docs-voice-overview.md +959 -0
- package/dist/docs/references/docs-voice-speech-to-speech.md +102 -0
- package/dist/docs/references/docs-voice-speech-to-text.md +79 -0
- package/dist/docs/references/docs-voice-text-to-speech.md +83 -0
- package/dist/docs/references/docs-workflows-agents-and-tools.md +166 -0
- package/dist/docs/references/docs-workflows-control-flow.md +822 -0
- package/dist/docs/references/docs-workflows-error-handling.md +360 -0
- package/dist/docs/references/docs-workflows-human-in-the-loop.md +215 -0
- package/dist/docs/references/docs-workflows-overview.md +370 -0
- package/dist/docs/references/docs-workflows-snapshots.md +238 -0
- package/dist/docs/references/docs-workflows-suspend-and-resume.md +205 -0
- package/dist/docs/references/docs-workflows-time-travel.md +309 -0
- package/dist/docs/references/docs-workflows-workflow-state.md +181 -0
- package/dist/docs/references/docs-workspace-filesystem.md +164 -0
- package/dist/docs/references/docs-workspace-overview.md +239 -0
- package/dist/docs/references/docs-workspace-sandbox.md +63 -0
- package/dist/docs/references/docs-workspace-search.md +243 -0
- package/dist/docs/references/docs-workspace-skills.md +169 -0
- package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +140 -0
- package/dist/docs/references/reference-agents-agent.md +141 -0
- package/dist/docs/references/reference-agents-generate.md +186 -0
- package/dist/docs/references/reference-agents-generateLegacy.md +173 -0
- package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +36 -0
- package/dist/docs/references/reference-agents-getDefaultOptions.md +34 -0
- package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +36 -0
- package/dist/docs/references/reference-agents-getDescription.md +21 -0
- package/dist/docs/references/reference-agents-getInstructions.md +34 -0
- package/dist/docs/references/reference-agents-getLLM.md +37 -0
- package/dist/docs/references/reference-agents-getMemory.md +34 -0
- package/dist/docs/references/reference-agents-getModel.md +34 -0
- package/dist/docs/references/reference-agents-getTools.md +29 -0
- package/dist/docs/references/reference-agents-getVoice.md +34 -0
- package/dist/docs/references/reference-agents-listAgents.md +35 -0
- package/dist/docs/references/reference-agents-listScorers.md +34 -0
- package/dist/docs/references/reference-agents-listTools.md +34 -0
- package/dist/docs/references/reference-agents-listWorkflows.md +34 -0
- package/dist/docs/references/reference-agents-network.md +133 -0
- package/dist/docs/references/reference-ai-sdk-chat-route.md +82 -0
- package/dist/docs/references/reference-ai-sdk-network-route.md +74 -0
- package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +231 -0
- package/dist/docs/references/reference-ai-sdk-with-mastra.md +59 -0
- package/dist/docs/references/reference-ai-sdk-workflow-route.md +79 -0
- package/dist/docs/references/reference-auth-auth0.md +73 -0
- package/dist/docs/references/reference-auth-clerk.md +36 -0
- package/dist/docs/references/reference-auth-firebase.md +80 -0
- package/dist/docs/references/reference-auth-jwt.md +26 -0
- package/dist/docs/references/reference-auth-supabase.md +33 -0
- package/dist/docs/references/reference-auth-workos.md +84 -0
- package/dist/docs/references/reference-client-js-agents.md +437 -0
- package/dist/docs/references/reference-configuration.md +752 -0
- package/dist/docs/references/reference-core-addGateway.md +42 -0
- package/dist/docs/references/reference-core-getAgent.md +21 -0
- package/dist/docs/references/reference-core-getAgentById.md +21 -0
- package/dist/docs/references/reference-core-getDeployer.md +22 -0
- package/dist/docs/references/reference-core-getGateway.md +38 -0
- package/dist/docs/references/reference-core-getGatewayById.md +41 -0
- package/dist/docs/references/reference-core-getLogger.md +22 -0
- package/dist/docs/references/reference-core-getMCPServer.md +47 -0
- package/dist/docs/references/reference-core-getMCPServerById.md +55 -0
- package/dist/docs/references/reference-core-getMemory.md +50 -0
- package/dist/docs/references/reference-core-getScorer.md +54 -0
- package/dist/docs/references/reference-core-getScorerById.md +54 -0
- package/dist/docs/references/reference-core-getServer.md +22 -0
- package/dist/docs/references/reference-core-getStorage.md +22 -0
- package/dist/docs/references/reference-core-getStoredAgentById.md +89 -0
- package/dist/docs/references/reference-core-getTelemetry.md +22 -0
- package/dist/docs/references/reference-core-getVector.md +22 -0
- package/dist/docs/references/reference-core-getWorkflow.md +42 -0
- package/dist/docs/references/reference-core-listAgents.md +21 -0
- package/dist/docs/references/reference-core-listGateways.md +40 -0
- package/dist/docs/references/reference-core-listLogs.md +38 -0
- package/dist/docs/references/reference-core-listLogsByRunId.md +36 -0
- package/dist/docs/references/reference-core-listMCPServers.md +55 -0
- package/dist/docs/references/reference-core-listMemory.md +56 -0
- package/dist/docs/references/reference-core-listScorers.md +29 -0
- package/dist/docs/references/reference-core-listStoredAgents.md +93 -0
- package/dist/docs/references/reference-core-listVectors.md +22 -0
- package/dist/docs/references/reference-core-listWorkflows.md +21 -0
- package/dist/docs/references/reference-core-mastra-class.md +66 -0
- package/dist/docs/references/reference-core-mastra-model-gateway.md +153 -0
- package/dist/docs/references/reference-core-setLogger.md +26 -0
- package/dist/docs/references/reference-core-setStorage.md +27 -0
- package/dist/docs/references/reference-datasets-addItem.md +37 -0
- package/dist/docs/references/reference-datasets-addItems.md +35 -0
- package/dist/docs/references/reference-datasets-compareExperiments.md +52 -0
- package/dist/docs/references/reference-datasets-create.md +51 -0
- package/dist/docs/references/reference-datasets-dataset.md +82 -0
- package/dist/docs/references/reference-datasets-datasets-manager.md +94 -0
- package/dist/docs/references/reference-datasets-delete.md +25 -0
- package/dist/docs/references/reference-datasets-deleteExperiment.md +27 -0
- package/dist/docs/references/reference-datasets-deleteItem.md +27 -0
- package/dist/docs/references/reference-datasets-deleteItems.md +29 -0
- package/dist/docs/references/reference-datasets-get.md +31 -0
- package/dist/docs/references/reference-datasets-getDetails.md +47 -0
- package/dist/docs/references/reference-datasets-getExperiment.md +30 -0
- package/dist/docs/references/reference-datasets-getItem.md +33 -0
- package/dist/docs/references/reference-datasets-getItemHistory.md +31 -0
- package/dist/docs/references/reference-datasets-list.md +31 -0
- package/dist/docs/references/reference-datasets-listExperimentResults.md +39 -0
- package/dist/docs/references/reference-datasets-listExperiments.md +33 -0
- package/dist/docs/references/reference-datasets-listItems.md +46 -0
- package/dist/docs/references/reference-datasets-listVersions.md +33 -0
- package/dist/docs/references/reference-datasets-startExperiment.md +62 -0
- package/dist/docs/references/reference-datasets-startExperimentAsync.md +43 -0
- package/dist/docs/references/reference-datasets-update.md +48 -0
- package/dist/docs/references/reference-datasets-updateItem.md +38 -0
- package/dist/docs/references/reference-evals-answer-relevancy.md +105 -0
- package/dist/docs/references/reference-evals-answer-similarity.md +99 -0
- package/dist/docs/references/reference-evals-bias.md +120 -0
- package/dist/docs/references/reference-evals-completeness.md +136 -0
- package/dist/docs/references/reference-evals-content-similarity.md +101 -0
- package/dist/docs/references/reference-evals-context-precision.md +196 -0
- package/dist/docs/references/reference-evals-create-scorer.md +270 -0
- package/dist/docs/references/reference-evals-faithfulness.md +114 -0
- package/dist/docs/references/reference-evals-hallucination.md +213 -0
- package/dist/docs/references/reference-evals-keyword-coverage.md +128 -0
- package/dist/docs/references/reference-evals-mastra-scorer.md +123 -0
- package/dist/docs/references/reference-evals-run-evals.md +179 -0
- package/dist/docs/references/reference-evals-scorer-utils.md +326 -0
- package/dist/docs/references/reference-evals-textual-difference.md +113 -0
- package/dist/docs/references/reference-evals-tone-consistency.md +119 -0
- package/dist/docs/references/reference-evals-toxicity.md +123 -0
- package/dist/docs/references/reference-harness-harness-class.md +708 -0
- package/dist/docs/references/reference-logging-pino-logger.md +117 -0
- package/dist/docs/references/reference-memory-deleteMessages.md +38 -0
- package/dist/docs/references/reference-memory-memory-class.md +147 -0
- package/dist/docs/references/reference-memory-observational-memory.md +565 -0
- package/dist/docs/references/reference-observability-tracing-bridges-otel.md +131 -0
- package/dist/docs/references/reference-observability-tracing-configuration.md +178 -0
- package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +138 -0
- package/dist/docs/references/reference-observability-tracing-exporters-datadog.md +116 -0
- package/dist/docs/references/reference-observability-tracing-instances.md +107 -0
- package/dist/docs/references/reference-observability-tracing-interfaces.md +743 -0
- package/dist/docs/references/reference-observability-tracing-processors-sensitive-data-filter.md +144 -0
- package/dist/docs/references/reference-observability-tracing-spans.md +224 -0
- package/dist/docs/references/reference-processors-batch-parts-processor.md +61 -0
- package/dist/docs/references/reference-processors-language-detector.md +82 -0
- package/dist/docs/references/reference-processors-message-history-processor.md +85 -0
- package/dist/docs/references/reference-processors-moderation-processor.md +104 -0
- package/dist/docs/references/reference-processors-pii-detector.md +108 -0
- package/dist/docs/references/reference-processors-processor-interface.md +521 -0
- package/dist/docs/references/reference-processors-prompt-injection-detector.md +72 -0
- package/dist/docs/references/reference-processors-semantic-recall-processor.md +117 -0
- package/dist/docs/references/reference-processors-system-prompt-scrubber.md +80 -0
- package/dist/docs/references/reference-processors-token-limiter-processor.md +115 -0
- package/dist/docs/references/reference-processors-tool-call-filter.md +85 -0
- package/dist/docs/references/reference-processors-tool-search-processor.md +111 -0
- package/dist/docs/references/reference-processors-unicode-normalizer.md +62 -0
- package/dist/docs/references/reference-processors-working-memory-processor.md +152 -0
- package/dist/docs/references/reference-rag-database-config.md +261 -0
- package/dist/docs/references/reference-rag-embeddings.md +92 -0
- package/dist/docs/references/reference-server-mastra-server.md +298 -0
- package/dist/docs/references/reference-server-register-api-route.md +249 -0
- package/dist/docs/references/reference-storage-cloudflare-d1.md +218 -0
- package/dist/docs/references/reference-storage-composite.md +235 -0
- package/dist/docs/references/reference-storage-lance.md +131 -0
- package/dist/docs/references/reference-storage-libsql.md +135 -0
- package/dist/docs/references/reference-storage-mongodb.md +262 -0
- package/dist/docs/references/reference-storage-mssql.md +157 -0
- package/dist/docs/references/reference-storage-overview.md +121 -0
- package/dist/docs/references/reference-storage-postgresql.md +526 -0
- package/dist/docs/references/reference-storage-upstash.md +160 -0
- package/dist/docs/references/reference-streaming-ChunkType.md +292 -0
- package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +182 -0
- package/dist/docs/references/reference-streaming-agents-streamLegacy.md +142 -0
- package/dist/docs/references/reference-streaming-workflows-observeStream.md +42 -0
- package/dist/docs/references/reference-streaming-workflows-resumeStream.md +61 -0
- package/dist/docs/references/reference-streaming-workflows-stream.md +88 -0
- package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +142 -0
- package/dist/docs/references/reference-templates-overview.md +194 -0
- package/dist/docs/references/reference-tools-create-tool.md +237 -0
- package/dist/docs/references/reference-tools-graph-rag-tool.md +182 -0
- package/dist/docs/references/reference-tools-mcp-client.md +954 -0
- package/dist/docs/references/reference-tools-mcp-server.md +1271 -0
- package/dist/docs/references/reference-tools-vector-query-tool.md +459 -0
- package/dist/docs/references/reference-vectors-libsql.md +305 -0
- package/dist/docs/references/reference-vectors-mongodb.md +295 -0
- package/dist/docs/references/reference-vectors-pg.md +408 -0
- package/dist/docs/references/reference-vectors-upstash.md +294 -0
- package/dist/docs/references/reference-voice-composite-voice.md +121 -0
- package/dist/docs/references/reference-voice-mastra-voice.md +311 -0
- package/dist/docs/references/reference-voice-voice.addInstructions.md +55 -0
- package/dist/docs/references/reference-voice-voice.addTools.md +67 -0
- package/dist/docs/references/reference-voice-voice.connect.md +94 -0
- package/dist/docs/references/reference-voice-voice.events.md +37 -0
- package/dist/docs/references/reference-voice-voice.listen.md +164 -0
- package/dist/docs/references/reference-voice-voice.on.md +111 -0
- package/dist/docs/references/reference-voice-voice.speak.md +157 -0
- package/dist/docs/references/reference-workflows-run-methods-cancel.md +86 -0
- package/dist/docs/references/reference-workflows-run-methods-restart.md +33 -0
- package/dist/docs/references/reference-workflows-run-methods-resume.md +59 -0
- package/dist/docs/references/reference-workflows-run-methods-start.md +58 -0
- package/dist/docs/references/reference-workflows-run-methods-startAsync.md +67 -0
- package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +142 -0
- package/dist/docs/references/reference-workflows-run.md +59 -0
- package/dist/docs/references/reference-workflows-step.md +119 -0
- package/dist/docs/references/reference-workflows-workflow-methods-branch.md +25 -0
- package/dist/docs/references/reference-workflows-workflow-methods-commit.md +17 -0
- package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +63 -0
- package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +25 -0
- package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +25 -0
- package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +118 -0
- package/dist/docs/references/reference-workflows-workflow-methods-map.md +93 -0
- package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +21 -0
- package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +35 -0
- package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +35 -0
- package/dist/docs/references/reference-workflows-workflow-methods-then.md +21 -0
- package/dist/docs/references/reference-workflows-workflow.md +157 -0
- package/dist/docs/references/reference-workspace-filesystem.md +255 -0
- package/dist/docs/references/reference-workspace-local-filesystem.md +343 -0
- package/dist/docs/references/reference-workspace-local-sandbox.md +301 -0
- package/dist/docs/references/reference-workspace-sandbox.md +87 -0
- package/dist/docs/references/reference-workspace-workspace-class.md +244 -0
- package/dist/docs/references/reference.md +277 -0
- package/dist/evals/index.cjs +20 -20
- package/dist/evals/index.js +3 -3
- package/dist/evals/run/index.d.ts +9 -2
- package/dist/evals/run/index.d.ts.map +1 -1
- package/dist/evals/scoreTraces/index.cjs +5 -5
- package/dist/evals/scoreTraces/index.js +2 -2
- package/dist/harness/harness.d.ts +6 -0
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/index.cjs +28 -13
- package/dist/harness/index.cjs.map +1 -1
- package/dist/harness/index.js +20 -5
- package/dist/harness/index.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/integration/index.cjs +2 -2
- package/dist/integration/index.js +1 -1
- package/dist/llm/index.cjs +6 -6
- package/dist/llm/index.js +1 -1
- package/dist/llm/model/embedding-router.d.ts.map +1 -1
- package/dist/llm/model/model.loop.d.ts +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/loop/index.cjs +20 -12
- package/dist/loop/index.js +1 -1
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/network/validation.d.ts +51 -0
- package/dist/loop/network/validation.d.ts.map +1 -1
- package/dist/loop/test-utils/generateText.d.ts.map +1 -1
- package/dist/loop/test-utils/options.d.ts.map +1 -1
- package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
- package/dist/loop/types.d.ts +15 -0
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts +3 -0
- package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/is-task-complete-step.d.ts +126 -0
- package/dist/loop/workflows/agentic-execution/is-task-complete-step.d.ts.map +1 -0
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +3 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +1 -0
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts +3 -0
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/loop/workflows/schema.d.ts +3 -0
- package/dist/loop/workflows/schema.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +9 -5
- package/dist/mastra/index.d.ts.map +1 -1
- 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 +42 -42
- package/dist/processors/index.js +1 -1
- package/dist/processors/processors/skills.d.ts.map +1 -1
- 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.js +1 -1
- package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +160 -160
- package/dist/storage/index.js +2 -2
- package/dist/storage/types.d.ts +2 -3
- 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 +1 -0
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +11 -11
- package/dist/stream/index.js +2 -2
- package/dist/stream/types.d.ts +27 -1
- package/dist/stream/types.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.cjs +4 -4
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/tools/index.cjs +9 -5
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/toolchecks.d.ts +10 -0
- package/dist/tools/toolchecks.d.ts.map +1 -1
- package/dist/utils.cjs +23 -23
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +7 -7
- package/dist/vector/index.js +1 -1
- package/dist/vector/types.d.ts +9 -1
- package/dist/vector/types.d.ts.map +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/workflows/types.d.ts +14 -1
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +3 -17
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/dist/workspace/filesystem/composite-filesystem.d.ts +5 -0
- package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -1
- package/dist/workspace/filesystem/filesystem.d.ts +12 -0
- package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
- package/dist/workspace/filesystem/fs-utils.d.ts +12 -0
- package/dist/workspace/filesystem/fs-utils.d.ts.map +1 -1
- package/dist/workspace/filesystem/local-filesystem.d.ts +6 -0
- package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
- package/dist/workspace/index.cjs +66 -66
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/lsp/client.d.ts +76 -0
- package/dist/workspace/lsp/client.d.ts.map +1 -0
- package/dist/workspace/lsp/index.d.ts +6 -0
- package/dist/workspace/lsp/index.d.ts.map +1 -0
- package/dist/workspace/lsp/language.d.ts +16 -0
- package/dist/workspace/lsp/language.d.ts.map +1 -0
- package/dist/workspace/lsp/manager.d.ts +72 -0
- package/dist/workspace/lsp/manager.d.ts.map +1 -0
- package/dist/workspace/lsp/servers.d.ts +43 -0
- package/dist/workspace/lsp/servers.d.ts.map +1 -0
- package/dist/workspace/lsp/types.d.ts +45 -0
- package/dist/workspace/lsp/types.d.ts.map +1 -0
- package/dist/workspace/tools/ast-edit.d.ts.map +1 -1
- package/dist/workspace/tools/edit-file.d.ts.map +1 -1
- package/dist/workspace/tools/helpers.d.ts +13 -0
- package/dist/workspace/tools/helpers.d.ts.map +1 -1
- package/dist/workspace/tools/write-file.d.ts.map +1 -1
- package/dist/workspace/workspace.d.ts +33 -0
- package/dist/workspace/workspace.d.ts.map +1 -1
- package/package.json +10 -8
- package/dist/chunk-2X66GWF5.cjs.map +0 -1
- package/dist/chunk-6QBN6MZY.cjs.map +0 -1
- package/dist/chunk-7EXW4AAG.js.map +0 -1
- package/dist/chunk-7UAJ6LMR.cjs.map +0 -1
- package/dist/chunk-BQHWJLXU.js.map +0 -1
- package/dist/chunk-DB7U2C5B.cjs.map +0 -1
- package/dist/chunk-DFCRXDVK.js.map +0 -1
- package/dist/chunk-EAZ6YDCQ.cjs.map +0 -1
- package/dist/chunk-HB6T4554.cjs.map +0 -1
- package/dist/chunk-IC5OUWKJ.js.map +0 -1
- package/dist/chunk-KUXNBWN7.js.map +0 -1
- package/dist/chunk-O7PZ4VOO.cjs.map +0 -1
- package/dist/chunk-QSHV7GPT.js.map +0 -1
- package/dist/chunk-QTAS3HND.cjs.map +0 -1
- package/dist/chunk-R4N65TLG.js.map +0 -1
- package/dist/chunk-T6GAM3SQ.js.map +0 -1
- package/dist/chunk-YQG7NBPR.cjs.map +0 -1
- package/dist/chunk-ZSBM2SVU.js.map +0 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Search and Indexing
|
|
2
|
+
|
|
3
|
+
**Added in:** `@mastra/core@1.1.0`
|
|
4
|
+
|
|
5
|
+
Search lets agents find relevant content in indexed workspace files. When an agent needs to answer a question or find information, it can search the indexed content instead of reading every file.
|
|
6
|
+
|
|
7
|
+
## How it works
|
|
8
|
+
|
|
9
|
+
Workspace search has two phases: indexing and querying.
|
|
10
|
+
|
|
11
|
+
### Indexing
|
|
12
|
+
|
|
13
|
+
Content must be indexed before it can be searched. When you index a document:
|
|
14
|
+
|
|
15
|
+
- The content is tokenized (split into searchable terms)
|
|
16
|
+
- For BM25: term frequencies and document statistics are computed
|
|
17
|
+
- For vector: the content is embedded using your embedder function and stored in the vector store
|
|
18
|
+
|
|
19
|
+
Each indexed document has:
|
|
20
|
+
|
|
21
|
+
- **id** - A unique identifier (typically the file path)
|
|
22
|
+
- **content** - The text content
|
|
23
|
+
- **metadata** - Optional key-value data stored with the document
|
|
24
|
+
|
|
25
|
+
### Querying
|
|
26
|
+
|
|
27
|
+
When you search:
|
|
28
|
+
|
|
29
|
+
1. The query is processed using the same tokenization/embedding as indexing
|
|
30
|
+
2. Documents are scored based on relevance to the query
|
|
31
|
+
3. Results are ranked by score and returned with the matching content
|
|
32
|
+
|
|
33
|
+
Workspaces support three search modes: BM25 keyword search, vector semantic search, and hybrid search that combines both.
|
|
34
|
+
|
|
35
|
+
## BM25 keyword search
|
|
36
|
+
|
|
37
|
+
BM25 scores documents based on term frequency and document length. It works well for exact matches and specific terminology.
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
41
|
+
|
|
42
|
+
const workspace = new Workspace({
|
|
43
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
44
|
+
bm25: true,
|
|
45
|
+
})
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
For custom BM25 parameters (`k1` is term frequency saturation, `b` is document length normalization):
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
const workspace = new Workspace({
|
|
52
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
53
|
+
bm25: {
|
|
54
|
+
k1: 1.5,
|
|
55
|
+
b: 0.75,
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Vector search
|
|
61
|
+
|
|
62
|
+
Vector search uses embeddings to find semantically similar content. It requires a vector store and embedder function.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
66
|
+
import { PineconeVector } from '@mastra/pinecone'
|
|
67
|
+
import { embed } from 'ai'
|
|
68
|
+
import { openai } from '@ai-sdk/openai'
|
|
69
|
+
|
|
70
|
+
const workspace = new Workspace({
|
|
71
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
72
|
+
vectorStore: new PineconeVector({
|
|
73
|
+
apiKey: process.env.PINECONE_API_KEY,
|
|
74
|
+
index: 'workspace-index',
|
|
75
|
+
}),
|
|
76
|
+
embedder: async (text: string) => {
|
|
77
|
+
const { embedding } = await embed({
|
|
78
|
+
model: openai.embedding('text-embedding-3-small'),
|
|
79
|
+
value: text,
|
|
80
|
+
})
|
|
81
|
+
return embedding
|
|
82
|
+
},
|
|
83
|
+
})
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Hybrid search
|
|
87
|
+
|
|
88
|
+
Configure both BM25 and vector search to enable hybrid mode, which combines keyword matching with semantic understanding.
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
const workspace = new Workspace({
|
|
92
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
93
|
+
bm25: true,
|
|
94
|
+
vectorStore: pineconeVector,
|
|
95
|
+
embedder: embedderFn,
|
|
96
|
+
})
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Custom index name
|
|
100
|
+
|
|
101
|
+
By default, the search index name is derived from the workspace ID. To set a custom name, use `searchIndexName`:
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
const workspace = new Workspace({
|
|
105
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
106
|
+
bm25: true,
|
|
107
|
+
searchIndexName: 'my_workspace_vectors',
|
|
108
|
+
})
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The index name must be a valid SQL identifier: start with a letter or underscore, contain only letters, numbers, or underscores, and be at most 63 characters long.
|
|
112
|
+
|
|
113
|
+
## Indexing content
|
|
114
|
+
|
|
115
|
+
### Manual indexing
|
|
116
|
+
|
|
117
|
+
Use `workspace.index()` to add content to the search index programmatically. The file paths become document IDs. You can also pass metadata for each document.
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// Basic indexing
|
|
121
|
+
await workspace.index('/docs/guide.md', 'Content of the guide...')
|
|
122
|
+
|
|
123
|
+
// Index with metadata for filtering or context
|
|
124
|
+
await workspace.index('/docs/api.md', apiDocContent, {
|
|
125
|
+
metadata: {
|
|
126
|
+
category: 'api',
|
|
127
|
+
version: '2.0',
|
|
128
|
+
},
|
|
129
|
+
})
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Manual indexing is useful when:
|
|
133
|
+
|
|
134
|
+
- You're indexing content that doesn't come from files (e.g., database records, API responses)
|
|
135
|
+
- You want to pre-process or chunk content before indexing
|
|
136
|
+
- You need to add custom metadata to documents
|
|
137
|
+
|
|
138
|
+
### Auto-indexing
|
|
139
|
+
|
|
140
|
+
Configure `autoIndexPaths` to automatically index files when the workspace initializes. Each entry can be a directory path (indexed recursively) or a glob pattern for selective indexing.
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
const workspace = new Workspace({
|
|
144
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
145
|
+
bm25: true,
|
|
146
|
+
autoIndexPaths: ['/docs', '/support/faq'],
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
await workspace.init()
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
When `init()` is called, all matching files are read and indexed for search. The file path becomes the document ID.
|
|
153
|
+
|
|
154
|
+
Glob patterns let you index specific file types:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
const workspace = new Workspace({
|
|
158
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
159
|
+
bm25: true,
|
|
160
|
+
autoIndexPaths: ['/docs/**/*.md', '/support/**/*.txt'],
|
|
161
|
+
})
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Searching
|
|
165
|
+
|
|
166
|
+
Use `workspace.search()` to find relevant content. Results are ranked by relevance score.
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
const results = await workspace.search('password reset')
|
|
170
|
+
|
|
171
|
+
for (const result of results) {
|
|
172
|
+
console.log(`${result.id}: ${result.score}`)
|
|
173
|
+
console.log(result.content)
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Search options
|
|
178
|
+
|
|
179
|
+
You can customize the search behavior with options:
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
const results = await workspace.search('authentication flow', {
|
|
183
|
+
topK: 10,
|
|
184
|
+
mode: 'hybrid',
|
|
185
|
+
minScore: 0.5,
|
|
186
|
+
vectorWeight: 0.5,
|
|
187
|
+
})
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
| Option | Description |
|
|
191
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
192
|
+
| `topK` | Maximum number of results to return. Default: 5 |
|
|
193
|
+
| `mode` | Search mode: `'bm25'`, `'vector'`, or `'hybrid'`. Defaults to the best available mode based on configuration. |
|
|
194
|
+
| `minScore` | Filter out results below this score threshold (0-1). |
|
|
195
|
+
| `vectorWeight` | In hybrid mode, how much to weight vector scores vs BM25. 0 = all BM25, 1 = all vector, 0.5 = equal. |
|
|
196
|
+
|
|
197
|
+
### Search results
|
|
198
|
+
|
|
199
|
+
Each result contains:
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
interface SearchResult {
|
|
203
|
+
id: string // Document ID (typically file path)
|
|
204
|
+
content: string // The matching content
|
|
205
|
+
score: number // Relevance score (0-1)
|
|
206
|
+
lineRange?: {
|
|
207
|
+
// Lines where the match was found
|
|
208
|
+
start: number
|
|
209
|
+
end: number
|
|
210
|
+
}
|
|
211
|
+
metadata?: Record<string, unknown> // Metadata stored with the document
|
|
212
|
+
scoreDetails?: {
|
|
213
|
+
// Score breakdown (hybrid mode only)
|
|
214
|
+
vector?: number
|
|
215
|
+
bm25?: number
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Understanding scores:**
|
|
221
|
+
|
|
222
|
+
- Scores range from 0 to 1, where 1 is a perfect match
|
|
223
|
+
- BM25 scores are normalized based on the best match in the result set
|
|
224
|
+
- Vector scores represent cosine similarity between query and document embeddings
|
|
225
|
+
- In hybrid mode, scores are combined using the `vectorWeight` parameter
|
|
226
|
+
|
|
227
|
+
### When to use each mode
|
|
228
|
+
|
|
229
|
+
| Mode | Best for | Example queries |
|
|
230
|
+
| -------- | ------------------------------------ | ------------------------------------------------------------------------ |
|
|
231
|
+
| `bm25` | Exact terms, technical queries, code | "useState hook", "404 error", "config.yaml" |
|
|
232
|
+
| `vector` | Conceptual queries, natural language | "how to handle user authentication", "best practices for error handling" |
|
|
233
|
+
| `hybrid` | General search, unknown query types | Most agent use cases |
|
|
234
|
+
|
|
235
|
+
## Agent tools
|
|
236
|
+
|
|
237
|
+
When you configure search on a workspace, agents receive tools for searching and indexing content. See [workspace class reference](https://mastra.ai/reference/workspace/workspace-class) for details.
|
|
238
|
+
|
|
239
|
+
## Related
|
|
240
|
+
|
|
241
|
+
- [Workspace overview](https://mastra.ai/docs/workspace/overview)
|
|
242
|
+
- [RAG overview](https://mastra.ai/docs/rag/overview)
|
|
243
|
+
- [Workspace class reference](https://mastra.ai/reference/workspace/workspace-class)
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Workspace Skills
|
|
2
|
+
|
|
3
|
+
**Added in:** `@mastra/core@1.1.0`
|
|
4
|
+
|
|
5
|
+
Skills are reusable instructions that teach agents how to perform specific tasks. They follow the [Agent Skills specification](https://agentskills.io) - an open standard for packaging agent capabilities.
|
|
6
|
+
|
|
7
|
+
A skill is a folder containing:
|
|
8
|
+
|
|
9
|
+
- `SKILL.md`: Instructions and metadata for the agent
|
|
10
|
+
- `references/`: Supporting documentation (optional)
|
|
11
|
+
- `scripts/`: Executable scripts (optional)
|
|
12
|
+
- `assets/`: Images and other files (optional)
|
|
13
|
+
|
|
14
|
+
```plaintext
|
|
15
|
+
/skills
|
|
16
|
+
/code-review
|
|
17
|
+
SKILL.md
|
|
18
|
+
/references
|
|
19
|
+
style-guide.md
|
|
20
|
+
pr-checklist.md
|
|
21
|
+
/scripts
|
|
22
|
+
lint.ts
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
When skills are configured on a workspace, agents can discover and activate them during conversations.
|
|
26
|
+
|
|
27
|
+
## SKILL.md format
|
|
28
|
+
|
|
29
|
+
Follow the official [skill specification](https://agentskills.io/specification) when creating your skill. Here is an example `SKILL.md` for a code review skill:
|
|
30
|
+
|
|
31
|
+
```markdown
|
|
32
|
+
---
|
|
33
|
+
name: code-review
|
|
34
|
+
description: Reviews code for quality, style, and potential issues
|
|
35
|
+
version: 1.0.0
|
|
36
|
+
tags:
|
|
37
|
+
- development
|
|
38
|
+
- review
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
# Code Review
|
|
42
|
+
|
|
43
|
+
You are a code reviewer. When reviewing code:
|
|
44
|
+
|
|
45
|
+
1. Check for bugs and edge cases
|
|
46
|
+
2. Verify the code follows the style guide in references/style-guide.md
|
|
47
|
+
3. Suggest improvements for readability
|
|
48
|
+
4. Run the linter using scripts/lint.ts
|
|
49
|
+
|
|
50
|
+
## What to look out for
|
|
51
|
+
|
|
52
|
+
- Unused variables and imports
|
|
53
|
+
- Missing error handling
|
|
54
|
+
- Security vulnerabilities
|
|
55
|
+
- Performance issues
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Configuring skills
|
|
59
|
+
|
|
60
|
+
Enable skill discovery by setting the `skills` option on your workspace:
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
64
|
+
|
|
65
|
+
const workspace = new Workspace({
|
|
66
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
67
|
+
skills: ['/skills'],
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The `skills` directory is relative to your `basePath`. You can specify multiple skill directories or use glob patterns for discovery:
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
const workspace = new Workspace({
|
|
75
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
76
|
+
skills: [
|
|
77
|
+
'/skills', // Project skills
|
|
78
|
+
'/team-skills', // Shared team skills
|
|
79
|
+
],
|
|
80
|
+
})
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
You can also pass a direct path to a skill directory or `SKILL.md` file:
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
const workspace = new Workspace({
|
|
87
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
88
|
+
skills: ['/path/to/my-skill'],
|
|
89
|
+
})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Glob patterns let you discover skills across nested directories:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
const workspace = new Workspace({
|
|
96
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
97
|
+
skills: ['./**/skills'],
|
|
98
|
+
})
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Dynamic skills
|
|
102
|
+
|
|
103
|
+
For dynamic skill paths based on context, pass a function:
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
const workspace = new Workspace({
|
|
107
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
108
|
+
skills: context => {
|
|
109
|
+
const paths = ['/skills']
|
|
110
|
+
if (context.user?.role === 'developer') {
|
|
111
|
+
paths.push('/dev-skills')
|
|
112
|
+
}
|
|
113
|
+
return paths
|
|
114
|
+
},
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## How agents use skills
|
|
119
|
+
|
|
120
|
+
When an agent activates a skill, the skill's instructions are added to the conversation context. The agent can then follow those instructions and access the skill's references and scripts.
|
|
121
|
+
|
|
122
|
+
Under the hood this involves:
|
|
123
|
+
|
|
124
|
+
1. Lists available skills in the system message
|
|
125
|
+
2. Allows agents to activate skills during conversation
|
|
126
|
+
3. Provides access to skill references and scripts
|
|
127
|
+
|
|
128
|
+
## Skill search
|
|
129
|
+
|
|
130
|
+
If BM25 or vector search is enabled on the workspace, skills are automatically indexed. Agents can search across skill content to find relevant instructions.
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
const workspace = new Workspace({
|
|
134
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
135
|
+
skills: ['/skills'],
|
|
136
|
+
bm25: true,
|
|
137
|
+
})
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Custom skill source
|
|
141
|
+
|
|
142
|
+
By default, skills are read from the workspace filesystem. For advanced use cases, provide a custom `skillSource` to load skills from a different backend.
|
|
143
|
+
|
|
144
|
+
`VersionedSkillSource` serves published skill versions from a content-addressable blob store, so production agents use a specific published version without touching the live filesystem:
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
|
|
148
|
+
import { VersionedSkillSource } from '@mastra/core/workspace'
|
|
149
|
+
|
|
150
|
+
const workspace = new Workspace({
|
|
151
|
+
filesystem: new LocalFilesystem({ basePath: './workspace' }),
|
|
152
|
+
skills: ['/skills'],
|
|
153
|
+
skillSource: new VersionedSkillSource(versionTree, blobStore, versionCreatedAt),
|
|
154
|
+
})
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`VersionedSkillSource` accepts three parameters:
|
|
158
|
+
|
|
159
|
+
- **`versionTree`** (`SkillVersionTree`) — A manifest mapping relative file paths to blob entries (`{ entries: Record<string, { blobHash, size, mimeType?, encoding? }> }`).
|
|
160
|
+
- **`blobStore`** (`BlobStore`) — A content-addressable blob store instance that holds the actual file contents referenced by hash.
|
|
161
|
+
- **`versionCreatedAt`** (`Date`) — The timestamp when this skill version was published. Used as the modification time for all files in the version.
|
|
162
|
+
|
|
163
|
+
When `skillSource` is provided, it is used instead of the workspace filesystem for skill discovery.
|
|
164
|
+
|
|
165
|
+
## Related
|
|
166
|
+
|
|
167
|
+
- [Agent skills specification](https://agentskills.io)
|
|
168
|
+
- [Workspace overview](https://mastra.ai/docs/workspace/overview)
|
|
169
|
+
- [Search and indexing](https://mastra.ai/docs/workspace/search)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# AI SDK
|
|
2
|
+
|
|
3
|
+
If you're already using the [Vercel AI SDK](https://sdk.vercel.ai) directly and want to add Mastra capabilities like [processors](https://mastra.ai/docs/agents/processors) or [memory](https://mastra.ai/docs/memory/memory-processors) without switching to the full Mastra agent API, [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) lets you wrap any AI SDK model with these features. This is useful when you want to keep your existing AI SDK code but add input/output processing, conversation persistence, or content filtering.
|
|
4
|
+
|
|
5
|
+
> **Tip:** If you want to use Mastra together with AI SDK UI (e.g. `useChat()`), visit the [AI SDK UI guide](https://mastra.ai/guides/build-your-ui/ai-sdk-ui).
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Install `@mastra/ai-sdk` to begin using the `withMastra()` function.
|
|
10
|
+
|
|
11
|
+
**npm**:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @mastra/ai-sdk@latest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**pnpm**:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @mastra/ai-sdk@latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Yarn**:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
yarn add @mastra/ai-sdk@latest
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Bun**:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bun add @mastra/ai-sdk@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
### With Processors
|
|
38
|
+
|
|
39
|
+
Processors let you transform messages before they're sent to the model (`processInput`) and after responses are received (`processOutputResult`). This example creates a logging processor that logs message counts at each stage, then wraps an OpenAI model with it.
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { openai } from '@ai-sdk/openai'
|
|
43
|
+
import { generateText } from 'ai'
|
|
44
|
+
import { withMastra } from '@mastra/ai-sdk'
|
|
45
|
+
import type { Processor } from '@mastra/core/processors'
|
|
46
|
+
|
|
47
|
+
const loggingProcessor: Processor<'logger'> = {
|
|
48
|
+
id: 'logger',
|
|
49
|
+
async processInput({ messages }) {
|
|
50
|
+
console.log('Input:', messages.length, 'messages')
|
|
51
|
+
return messages
|
|
52
|
+
},
|
|
53
|
+
async processOutputResult({ messages }) {
|
|
54
|
+
console.log('Output:', messages.length, 'messages')
|
|
55
|
+
return messages
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const model = withMastra(openai('gpt-4o'), {
|
|
60
|
+
inputProcessors: [loggingProcessor],
|
|
61
|
+
outputProcessors: [loggingProcessor],
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
const { text } = await generateText({
|
|
65
|
+
model,
|
|
66
|
+
prompt: 'What is 2 + 2?',
|
|
67
|
+
})
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### With Memory
|
|
71
|
+
|
|
72
|
+
Memory automatically loads previous messages from storage before the LLM call and saves new messages after. This example configures a libSQL storage backend to persist conversation history, loading the last 10 messages for context.
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import { openai } from '@ai-sdk/openai'
|
|
76
|
+
import { generateText } from 'ai'
|
|
77
|
+
import { withMastra } from '@mastra/ai-sdk'
|
|
78
|
+
import { LibSQLStore } from '@mastra/libsql'
|
|
79
|
+
|
|
80
|
+
const storage = new LibSQLStore({
|
|
81
|
+
id: 'my-app',
|
|
82
|
+
url: 'file:./data.db',
|
|
83
|
+
})
|
|
84
|
+
await storage.init()
|
|
85
|
+
|
|
86
|
+
const memoryStorage = await storage.getStore('memory')
|
|
87
|
+
|
|
88
|
+
const model = withMastra(openai('gpt-4o'), {
|
|
89
|
+
memory: {
|
|
90
|
+
storage: memoryStorage!,
|
|
91
|
+
threadId: 'user-thread-123',
|
|
92
|
+
resourceId: 'user-123',
|
|
93
|
+
lastMessages: 10,
|
|
94
|
+
},
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
const { text } = await generateText({
|
|
98
|
+
model,
|
|
99
|
+
prompt: 'What did we talk about earlier?',
|
|
100
|
+
})
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### With Processors & Memory
|
|
104
|
+
|
|
105
|
+
You can combine processors and memory together. Input processors run after memory loads historical messages, and output processors run before memory saves the response.
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import { openai } from '@ai-sdk/openai'
|
|
109
|
+
import { generateText } from 'ai'
|
|
110
|
+
import { withMastra } from '@mastra/ai-sdk'
|
|
111
|
+
import { LibSQLStore } from '@mastra/libsql'
|
|
112
|
+
|
|
113
|
+
const storage = new LibSQLStore({ id: 'my-app', url: 'file:./data.db' })
|
|
114
|
+
await storage.init()
|
|
115
|
+
|
|
116
|
+
const memoryStorage = await storage.getStore('memory')
|
|
117
|
+
|
|
118
|
+
const model = withMastra(openai('gpt-4o'), {
|
|
119
|
+
inputProcessors: [myGuardProcessor],
|
|
120
|
+
outputProcessors: [myLoggingProcessor],
|
|
121
|
+
memory: {
|
|
122
|
+
storage: memoryStorage!,
|
|
123
|
+
threadId: 'thread-123',
|
|
124
|
+
resourceId: 'user-123',
|
|
125
|
+
lastMessages: 10,
|
|
126
|
+
},
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
const { text } = await generateText({
|
|
130
|
+
model,
|
|
131
|
+
prompt: 'Hello!',
|
|
132
|
+
})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Related
|
|
136
|
+
|
|
137
|
+
- [`withMastra()`](https://mastra.ai/reference/ai-sdk/with-mastra) - API reference for `withMastra()`
|
|
138
|
+
- [Processors](https://mastra.ai/docs/agents/processors) - Learn about input and output processors
|
|
139
|
+
- [Memory](https://mastra.ai/docs/memory/overview) - Overview of Mastra's memory system
|
|
140
|
+
- [AI SDK UI](https://mastra.ai/guides/build-your-ui/ai-sdk-ui) - Using AI SDK UI hooks with Mastra agents, workflows, and networks
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Agent Class
|
|
2
|
+
|
|
3
|
+
The `Agent` class is the foundation for creating AI agents in Mastra. It provides methods for generating responses, streaming interactions, and handling voice capabilities.
|
|
4
|
+
|
|
5
|
+
## Usage examples
|
|
6
|
+
|
|
7
|
+
### Basic string instructions
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { Agent } from '@mastra/core/agent'
|
|
11
|
+
|
|
12
|
+
// String instructions
|
|
13
|
+
export const agent = new Agent({
|
|
14
|
+
id: 'test-agent',
|
|
15
|
+
name: 'Test Agent',
|
|
16
|
+
instructions: 'You are a helpful assistant that provides concise answers.',
|
|
17
|
+
model: 'openai/gpt-5.1',
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
// System message object
|
|
21
|
+
export const agent2 = new Agent({
|
|
22
|
+
id: 'test-agent-2',
|
|
23
|
+
name: 'Test Agent 2',
|
|
24
|
+
instructions: {
|
|
25
|
+
role: 'system',
|
|
26
|
+
content: 'You are an expert programmer',
|
|
27
|
+
},
|
|
28
|
+
model: 'openai/gpt-5.1',
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
// Array of system messages
|
|
32
|
+
export const agent3 = new Agent({
|
|
33
|
+
id: 'test-agent-3',
|
|
34
|
+
name: 'Test Agent 3',
|
|
35
|
+
instructions: [
|
|
36
|
+
{ role: 'system', content: 'You are a helpful assistant' },
|
|
37
|
+
{ role: 'system', content: 'You have expertise in TypeScript' },
|
|
38
|
+
],
|
|
39
|
+
model: 'openai/gpt-5.1',
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Single CoreSystemMessage
|
|
44
|
+
|
|
45
|
+
Use CoreSystemMessage format to access additional properties like `providerOptions` for provider-specific configurations:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { Agent } from '@mastra/core/agent'
|
|
49
|
+
|
|
50
|
+
export const agent = new Agent({
|
|
51
|
+
id: 'core-message-agent',
|
|
52
|
+
name: 'Core Message Agent',
|
|
53
|
+
instructions: {
|
|
54
|
+
role: 'system',
|
|
55
|
+
content: 'You are a helpful assistant specialized in technical documentation.',
|
|
56
|
+
providerOptions: {
|
|
57
|
+
openai: {
|
|
58
|
+
reasoningEffort: 'low',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
model: 'openai/gpt-5.1',
|
|
63
|
+
})
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Multiple CoreSystemMessages
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { Agent } from '@mastra/core/agent'
|
|
70
|
+
|
|
71
|
+
// This could be customizable based on the user
|
|
72
|
+
const preferredTone = {
|
|
73
|
+
role: 'system',
|
|
74
|
+
content: 'Always maintain a professional and empathetic tone.',
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const agent = new Agent({
|
|
78
|
+
id: 'multi-message-agent',
|
|
79
|
+
name: 'Multi Message Agent',
|
|
80
|
+
instructions: [
|
|
81
|
+
{ role: 'system', content: 'You are a customer service representative.' },
|
|
82
|
+
preferredTone,
|
|
83
|
+
{
|
|
84
|
+
role: 'system',
|
|
85
|
+
content: 'Escalate complex issues to human agents when needed.',
|
|
86
|
+
providerOptions: {
|
|
87
|
+
anthropic: { cacheControl: { type: 'ephemeral' } },
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
92
|
+
})
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Constructor parameters
|
|
96
|
+
|
|
97
|
+
**id?:** (`string`): Unique identifier for the agent. Defaults to \`name\` if not provided.
|
|
98
|
+
|
|
99
|
+
**name:** (`string`): Display name for the agent. Used as the identifier if \`id\` is not provided.
|
|
100
|
+
|
|
101
|
+
**description?:** (`string`): Optional description of the agent's purpose and capabilities.
|
|
102
|
+
|
|
103
|
+
**instructions:** (`SystemMessage | ({ requestContext: RequestContext }) => SystemMessage | Promise<SystemMessage>`): Instructions that guide the agent's behavior. Can be a string, array of strings, system message object, array of system messages, or a function that returns any of these types dynamically. SystemMessage types: string | string\[] | CoreSystemMessage | CoreSystemMessage\[] | SystemModelMessage | SystemModelMessage\[]
|
|
104
|
+
|
|
105
|
+
**model:** (`MastraLanguageModel | ({ requestContext: RequestContext }) => MastraLanguageModel | Promise<MastraLanguageModel>`): The language model used by the agent. Can be provided statically or resolved at runtime.
|
|
106
|
+
|
|
107
|
+
**agents?:** (`Record<string, Agent> | ({ requestContext: RequestContext }) => Record<string, Agent> | Promise<Record<string, Agent>>`): Subagents that the agent can access. Can be provided statically or resolved dynamically.
|
|
108
|
+
|
|
109
|
+
**tools?:** (`ToolsInput | ({ requestContext: RequestContext }) => ToolsInput | Promise<ToolsInput>`): Tools that the agent can access. Can be provided statically or resolved dynamically.
|
|
110
|
+
|
|
111
|
+
**workflows?:** (`Record<string, Workflow> | ({ requestContext: RequestContext }) => Record<string, Workflow> | Promise<Record<string, Workflow>>`): Workflows that the agent can execute. Can be static or dynamically resolved.
|
|
112
|
+
|
|
113
|
+
**defaultOptions?:** (`AgentExecutionOptions | ({ requestContext: RequestContext }) => AgentExecutionOptions | Promise<AgentExecutionOptions>`): Default options used when calling \`stream()\` and \`generate()\`.
|
|
114
|
+
|
|
115
|
+
**defaultGenerateOptionsLegacy?:** (`AgentGenerateOptions | ({ requestContext: RequestContext }) => AgentGenerateOptions | Promise<AgentGenerateOptions>`): Default options used when calling \`generateLegacy()\`.
|
|
116
|
+
|
|
117
|
+
**defaultStreamOptionsLegacy?:** (`AgentStreamOptions | ({ requestContext: RequestContext }) => AgentStreamOptions | Promise<AgentStreamOptions>`): Default options used when calling \`streamLegacy()\`.
|
|
118
|
+
|
|
119
|
+
**mastra?:** (`Mastra`): Reference to the Mastra runtime instance (injected automatically).
|
|
120
|
+
|
|
121
|
+
**scorers?:** (`MastraScorers | ({ requestContext: RequestContext }) => MastraScorers | Promise<MastraScorers>`): Scoring configuration for runtime evaluation and telemetry. Can be static or dynamically provided.
|
|
122
|
+
|
|
123
|
+
**memory?:** (`MastraMemory | ({ requestContext: RequestContext }) => MastraMemory | Promise<MastraMemory>`): Memory module used for storing and retrieving stateful context.
|
|
124
|
+
|
|
125
|
+
**voice?:** (`CompositeVoice`): Voice settings for speech input and output.
|
|
126
|
+
|
|
127
|
+
**inputProcessors?:** (`(Processor | ProcessorWorkflow)[] | ({ requestContext: RequestContext }) => (Processor | ProcessorWorkflow)[] | Promise<(Processor | ProcessorWorkflow)[]>`): Input processors that can modify or validate messages before they are processed by the agent. Can be individual Processor objects or workflows created with \`createWorkflow()\` using ProcessorStepSchema.
|
|
128
|
+
|
|
129
|
+
**outputProcessors?:** (`(Processor | ProcessorWorkflow)[] | ({ requestContext: RequestContext }) => (Processor | ProcessorWorkflow)[] | Promise<(Processor | ProcessorWorkflow)[]>`): Output processors that can modify or validate messages from the agent before they are sent to the client. Can be individual Processor objects or workflows.
|
|
130
|
+
|
|
131
|
+
**maxProcessorRetries?:** (`number`): Maximum number of times a processor can request retrying the LLM step.
|
|
132
|
+
|
|
133
|
+
**requestContextSchema?:** (`z.ZodType<any>`): Zod schema for validating request context values. When provided, the context is validated at the start of generate() or stream(), throwing a MastraError if validation fails.
|
|
134
|
+
|
|
135
|
+
## Returns
|
|
136
|
+
|
|
137
|
+
**agent:** (`Agent<TAgentId, TTools>`): A new Agent instance with the specified configuration.
|
|
138
|
+
|
|
139
|
+
## Related
|
|
140
|
+
|
|
141
|
+
- [Agents overview](https://mastra.ai/docs/agents/overview)
|