@mastra/mcp-docs-server 1.0.0-beta.13 → 1.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +19 -19
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +28 -28
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +98 -98
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +30 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +171 -171
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +10 -10
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +12 -12
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +22 -22
- package/.docs/organized/changelogs/%40mastra%2Frag.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Freact.md +9 -2
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +94 -94
- package/.docs/organized/changelogs/create-mastra.md +3 -3
- package/.docs/organized/changelogs/mastra.md +17 -17
- package/.docs/organized/code-examples/agent-v6.md +151 -0
- package/.docs/organized/code-examples/ai-elements.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +2 -3
- package/.docs/raw/agents/agent-approval.mdx +5 -6
- package/.docs/raw/agents/agent-memory.mdx +22 -30
- package/.docs/raw/agents/guardrails.mdx +60 -50
- package/.docs/raw/agents/networks.mdx +8 -12
- package/.docs/raw/agents/overview.mdx +39 -23
- package/.docs/raw/agents/processors.mdx +20 -19
- package/.docs/raw/agents/structured-output.mdx +11 -7
- package/.docs/raw/agents/using-tools.mdx +4 -5
- package/.docs/raw/deployment/mastra-server.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +7 -0
- package/.docs/raw/deployment/web-framework.mdx +4 -6
- package/.docs/raw/evals/custom-scorers.mdx +9 -6
- package/.docs/raw/evals/overview.mdx +3 -6
- package/.docs/raw/evals/running-in-ci.mdx +2 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +2 -2
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +4 -4
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +30 -30
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +11 -11
- package/.docs/raw/guides/deployment/amazon-ec2.mdx +9 -9
- package/.docs/raw/guides/deployment/aws-lambda.mdx +11 -11
- package/.docs/raw/guides/deployment/azure-app-services.mdx +2 -2
- package/.docs/raw/guides/deployment/cloudflare-deployer.mdx +5 -6
- package/.docs/raw/guides/deployment/digital-ocean.mdx +10 -10
- package/.docs/raw/guides/deployment/index.mdx +1 -1
- package/.docs/raw/guides/deployment/inngest.mdx +386 -0
- package/.docs/raw/guides/deployment/netlify-deployer.mdx +4 -4
- package/.docs/raw/guides/deployment/vercel-deployer.mdx +5 -6
- package/.docs/raw/guides/getting-started/astro.mdx +292 -451
- package/.docs/raw/guides/getting-started/express.mdx +7 -7
- package/.docs/raw/guides/getting-started/hono.mdx +18 -18
- package/.docs/raw/guides/getting-started/next-js.mdx +19 -20
- package/.docs/raw/guides/getting-started/quickstart.mdx +4 -4
- package/.docs/raw/guides/getting-started/sveltekit.mdx +238 -409
- package/.docs/raw/guides/getting-started/vite-react.mdx +21 -21
- package/.docs/raw/guides/guide/ai-recruiter.mdx +10 -10
- package/.docs/raw/guides/guide/chef-michel.mdx +9 -11
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +15 -15
- package/.docs/raw/guides/guide/research-assistant.mdx +13 -13
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +8 -8
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +0 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/mastra-cloud/setting-up.mdx +6 -2
- package/.docs/raw/mcp/overview.mdx +31 -13
- package/.docs/raw/mcp/publishing-mcp-server.mdx +2 -2
- package/.docs/raw/memory/memory-processors.mdx +9 -9
- package/.docs/raw/memory/message-history.mdx +69 -0
- package/.docs/raw/memory/overview.mdx +34 -76
- package/.docs/raw/memory/semantic-recall.mdx +58 -49
- package/.docs/raw/memory/storage.mdx +188 -0
- package/.docs/raw/memory/working-memory.mdx +7 -7
- package/.docs/raw/observability/logging.mdx +9 -10
- package/.docs/raw/observability/overview.mdx +0 -1
- package/.docs/raw/observability/tracing/bridges/otel.mdx +2 -2
- package/.docs/raw/observability/tracing/exporters/default.mdx +3 -3
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +1 -2
- package/.docs/raw/observability/tracing/overview.mdx +23 -25
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +6 -6
- package/.docs/raw/rag/graph-rag.mdx +7 -7
- package/.docs/raw/rag/overview.mdx +1 -1
- package/.docs/raw/rag/retrieval.mdx +21 -22
- package/.docs/raw/rag/vector-databases.mdx +22 -22
- package/.docs/raw/reference/agents/agent.mdx +3 -3
- package/.docs/raw/reference/agents/generate.mdx +1 -1
- package/.docs/raw/reference/agents/generateLegacy.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +2 -2
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +2 -2
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +2 -2
- package/.docs/raw/reference/agents/getLLM.mdx +2 -2
- package/.docs/raw/reference/agents/getMemory.mdx +2 -2
- package/.docs/raw/reference/agents/getModel.mdx +2 -2
- package/.docs/raw/reference/agents/getTools.mdx +2 -2
- package/.docs/raw/reference/agents/getVoice.mdx +2 -2
- package/.docs/raw/reference/agents/listAgents.mdx +2 -2
- package/.docs/raw/reference/agents/listScorers.mdx +2 -2
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +2 -2
- package/.docs/raw/reference/agents/network.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/network-route.mdx +2 -2
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +6 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +3 -3
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +1 -1
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +2 -2
- package/.docs/raw/reference/auth/auth0.mdx +1 -2
- package/.docs/raw/reference/auth/clerk.mdx +1 -2
- package/.docs/raw/reference/auth/firebase.mdx +2 -4
- package/.docs/raw/reference/auth/jwt.mdx +1 -2
- package/.docs/raw/reference/auth/supabase.mdx +1 -2
- package/.docs/raw/reference/auth/workos.mdx +1 -2
- package/.docs/raw/reference/cli/create-mastra.mdx +10 -10
- package/.docs/raw/reference/cli/mastra.mdx +9 -9
- package/.docs/raw/reference/client-js/agents.mdx +1 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +1 -1
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getLogger.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +1 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +1 -1
- package/.docs/raw/reference/core/getMemory.mdx +2 -2
- package/.docs/raw/reference/core/getServer.mdx +1 -1
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getStoredAgentById.mdx +3 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +1 -1
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listLogs.mdx +1 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +1 -1
- package/.docs/raw/reference/core/listMCPServers.mdx +1 -1
- package/.docs/raw/reference/core/listMemory.mdx +2 -2
- package/.docs/raw/reference/core/listStoredAgents.mdx +4 -4
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/setLogger.mdx +1 -1
- package/.docs/raw/reference/core/setStorage.mdx +2 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +1 -1
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -1
- package/.docs/raw/reference/deployer/netlify.mdx +1 -1
- package/.docs/raw/reference/deployer/vercel.mdx +2 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +1 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/bias.mdx +1 -1
- package/.docs/raw/reference/evals/completeness.mdx +1 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +1 -1
- package/.docs/raw/reference/evals/context-precision.mdx +1 -1
- package/.docs/raw/reference/evals/faithfulness.mdx +1 -1
- package/.docs/raw/reference/evals/hallucination.mdx +1 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +1 -1
- package/.docs/raw/reference/evals/prompt-alignment.mdx +7 -7
- package/.docs/raw/reference/evals/textual-difference.mdx +1 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +1 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +10 -10
- package/.docs/raw/reference/evals/toxicity.mdx +1 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +6 -7
- package/.docs/raw/reference/memory/createThread.mdx +2 -2
- package/.docs/raw/reference/memory/deleteMessages.mdx +2 -2
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +2 -2
- package/.docs/raw/reference/memory/memory-class.mdx +3 -3
- package/.docs/raw/reference/memory/query.mdx +2 -2
- package/.docs/raw/reference/memory/recall.mdx +2 -2
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +2 -2
- package/.docs/raw/reference/processors/language-detector.mdx +2 -2
- package/.docs/raw/reference/processors/message-history-processor.mdx +2 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +3 -3
- package/.docs/raw/reference/processors/pii-detector.mdx +3 -3
- package/.docs/raw/reference/processors/processor-interface.mdx +13 -13
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +2 -2
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +2 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +2 -2
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +2 -2
- package/.docs/raw/reference/processors/tool-call-filter.mdx +3 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +2 -2
- package/.docs/raw/reference/processors/working-memory-processor.mdx +3 -3
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +2 -2
- package/.docs/raw/reference/rag/metadata-filters.mdx +7 -7
- package/.docs/raw/reference/server/create-route.mdx +13 -13
- package/.docs/raw/reference/server/express-adapter.mdx +6 -7
- package/.docs/raw/reference/server/hono-adapter.mdx +6 -7
- package/.docs/raw/reference/server/mastra-server.mdx +20 -20
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +3 -3
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +6 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +3 -3
- package/.docs/raw/reference/storage/libsql.mdx +69 -54
- package/.docs/raw/reference/storage/mongodb.mdx +80 -7
- package/.docs/raw/reference/storage/mssql.mdx +4 -4
- package/.docs/raw/{memory → reference}/storage/overview.mdx +12 -110
- package/.docs/raw/reference/storage/postgresql.mdx +78 -7
- package/.docs/raw/reference/storage/upstash.mdx +74 -2
- package/.docs/raw/reference/streaming/agents/stream.mdx +5 -5
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +2 -2
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +2 -2
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +4 -4
- package/.docs/raw/reference/templates/overview.mdx +1 -2
- package/.docs/raw/reference/tools/create-tool.mdx +1 -4
- package/.docs/raw/reference/tools/vector-query-tool.mdx +1 -1
- package/.docs/raw/reference/vectors/astra.mdx +3 -3
- package/.docs/raw/reference/vectors/chroma.mdx +3 -3
- package/.docs/raw/reference/vectors/convex.mdx +12 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +5 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +10 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +4 -4
- package/.docs/raw/reference/vectors/libsql.mdx +61 -11
- package/.docs/raw/reference/vectors/mongodb.mdx +58 -5
- package/.docs/raw/reference/vectors/pg.mdx +53 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +3 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +3 -3
- package/.docs/raw/reference/vectors/s3vectors.mdx +6 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +4 -4
- package/.docs/raw/reference/vectors/upstash.mdx +55 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +1 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/start.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +5 -5
- package/.docs/raw/reference/workflows/run.mdx +1 -1
- package/.docs/raw/reference/workflows/step.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +6 -6
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow.mdx +3 -3
- package/.docs/raw/server/auth/auth0.mdx +20 -14
- package/.docs/raw/server/auth/clerk.mdx +16 -9
- package/.docs/raw/server/auth/firebase.mdx +21 -15
- package/.docs/raw/server/auth/jwt.mdx +14 -7
- package/.docs/raw/server/auth/supabase.mdx +16 -9
- package/.docs/raw/server/auth/workos.mdx +19 -13
- package/.docs/raw/server/custom-adapters.mdx +10 -10
- package/.docs/raw/server/custom-api-routes.mdx +2 -4
- package/.docs/raw/server/mastra-client.mdx +24 -13
- package/.docs/raw/server/mastra-server.mdx +3 -3
- package/.docs/raw/server/middleware.mdx +7 -7
- package/.docs/raw/server/request-context.mdx +31 -30
- package/.docs/raw/server/server-adapters.mdx +6 -6
- package/.docs/raw/streaming/events.mdx +14 -7
- package/.docs/raw/streaming/overview.mdx +21 -10
- package/.docs/raw/streaming/tool-streaming.mdx +6 -6
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +31 -12
- package/.docs/raw/tools-mcp/overview.mdx +9 -10
- package/.docs/raw/voice/overview.mdx +1 -1
- package/.docs/raw/workflows/agents-and-tools.mdx +28 -19
- package/.docs/raw/workflows/control-flow.mdx +27 -40
- package/.docs/raw/workflows/error-handling.mdx +15 -22
- package/.docs/raw/workflows/human-in-the-loop.mdx +6 -7
- package/.docs/raw/workflows/inngest-workflow.mdx +8 -9
- package/.docs/raw/workflows/input-data-mapping.mdx +7 -7
- package/.docs/raw/workflows/overview.mdx +33 -22
- package/.docs/raw/workflows/snapshots.mdx +14 -44
- package/.docs/raw/workflows/suspend-and-resume.mdx +7 -7
- package/.docs/raw/workflows/time-travel.mdx +16 -16
- package/.docs/raw/workflows/workflow-state.mdx +5 -8
- package/CHANGELOG.md +9 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +53 -0
- package/package.json +4 -4
- package/.docs/raw/memory/conversation-history.mdx +0 -24
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +0 -140
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -150
- package/.docs/raw/memory/storage/memory-with-pg.mdx +0 -138
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +0 -146
- package/.docs/raw/memory/threads-and-resources.mdx +0 -95
|
@@ -374,7 +374,7 @@ Returns an array of index names as strings.
|
|
|
374
374
|
|
|
375
375
|
Returns:
|
|
376
376
|
|
|
377
|
-
```typescript
|
|
377
|
+
```typescript
|
|
378
378
|
interface PGIndexStats {
|
|
379
379
|
dimension: number;
|
|
380
380
|
count: number;
|
|
@@ -434,7 +434,7 @@ Update a single vector by ID or by metadata filter. Either `id` or `filter` must
|
|
|
434
434
|
|
|
435
435
|
Updates an existing vector by ID or filter. At least one of vector or metadata must be provided in the update object.
|
|
436
436
|
|
|
437
|
-
```typescript
|
|
437
|
+
```typescript
|
|
438
438
|
// Update by ID
|
|
439
439
|
await pgVector.updateVector({
|
|
440
440
|
indexName: "my_vectors",
|
|
@@ -474,7 +474,7 @@ await pgVector.updateVector({
|
|
|
474
474
|
|
|
475
475
|
Deletes a single vector by ID from the specified index.
|
|
476
476
|
|
|
477
|
-
```typescript
|
|
477
|
+
```typescript
|
|
478
478
|
await pgVector.deleteVector({ indexName: "my_vectors", id: "vector123" });
|
|
479
479
|
```
|
|
480
480
|
|
|
@@ -534,7 +534,7 @@ Closes the database connection pool. Should be called when done using the store.
|
|
|
534
534
|
|
|
535
535
|
Builds or rebuilds an index with specified metric and configuration. Will drop any existing index before creating the new one.
|
|
536
536
|
|
|
537
|
-
```typescript
|
|
537
|
+
```typescript
|
|
538
538
|
// Define HNSW index
|
|
539
539
|
await pgVector.buildIndex("my_vectors", "cosine", {
|
|
540
540
|
type: "hnsw",
|
|
@@ -562,7 +562,7 @@ await pgVector.buildIndex("my_vectors", "cosine", {
|
|
|
562
562
|
|
|
563
563
|
Query results are returned in this format:
|
|
564
564
|
|
|
565
|
-
```typescript
|
|
565
|
+
```typescript
|
|
566
566
|
interface QueryResult {
|
|
567
567
|
id: string;
|
|
568
568
|
score: number;
|
|
@@ -575,7 +575,7 @@ interface QueryResult {
|
|
|
575
575
|
|
|
576
576
|
The store throws typed errors that can be caught:
|
|
577
577
|
|
|
578
|
-
```typescript
|
|
578
|
+
```typescript
|
|
579
579
|
try {
|
|
580
580
|
await store.query({
|
|
581
581
|
indexName: "index_name",
|
|
@@ -641,6 +641,53 @@ This enables advanced usage such as running direct SQL queries, managing transac
|
|
|
641
641
|
|
|
642
642
|
This design supports advanced use cases but requires careful resource management by the user.
|
|
643
643
|
|
|
644
|
+
## Usage Example
|
|
645
|
+
|
|
646
|
+
### Local embeddings with fastembed
|
|
647
|
+
|
|
648
|
+
Embeddings are numeric vectors used by memory's `semanticRecall` to retrieve related messages by meaning (not keywords). This setup uses `@mastra/fastembed` to generate vector embeddings.
|
|
649
|
+
|
|
650
|
+
Install `fastembed` to get started:
|
|
651
|
+
|
|
652
|
+
```bash
|
|
653
|
+
npm install @mastra/fastembed@beta
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
Add the following to your agent:
|
|
657
|
+
|
|
658
|
+
```typescript title="src/mastra/agents/example-pg-agent.ts"
|
|
659
|
+
import { Memory } from "@mastra/memory";
|
|
660
|
+
import { Agent } from "@mastra/core/agent";
|
|
661
|
+
import { PostgresStore, PgVector } from "@mastra/pg";
|
|
662
|
+
import { fastembed } from "@mastra/fastembed";
|
|
663
|
+
|
|
664
|
+
export const pgAgent = new Agent({
|
|
665
|
+
id: "pg-agent",
|
|
666
|
+
name: "PG Agent",
|
|
667
|
+
instructions:
|
|
668
|
+
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
669
|
+
model: "openai/gpt-5.1",
|
|
670
|
+
memory: new Memory({
|
|
671
|
+
storage: new PostgresStore({
|
|
672
|
+
id: 'pg-agent-storage',
|
|
673
|
+
connectionString: process.env.DATABASE_URL!,
|
|
674
|
+
}),
|
|
675
|
+
vector: new PgVector({
|
|
676
|
+
id: 'pg-agent-vector',
|
|
677
|
+
connectionString: process.env.DATABASE_URL!,
|
|
678
|
+
}),
|
|
679
|
+
embedder: fastembed,
|
|
680
|
+
options: {
|
|
681
|
+
lastMessages: 10,
|
|
682
|
+
semanticRecall: {
|
|
683
|
+
topK: 3,
|
|
684
|
+
messageRange: 2,
|
|
685
|
+
},
|
|
686
|
+
},
|
|
687
|
+
}),
|
|
688
|
+
});
|
|
689
|
+
```
|
|
690
|
+
|
|
644
691
|
## Related
|
|
645
692
|
|
|
646
693
|
- [Metadata Filters](../rag/metadata-filters)
|
|
@@ -184,7 +184,7 @@ Returns an array of index names as strings.
|
|
|
184
184
|
|
|
185
185
|
Returns:
|
|
186
186
|
|
|
187
|
-
```typescript
|
|
187
|
+
```typescript
|
|
188
188
|
interface IndexStats {
|
|
189
189
|
dimension: number;
|
|
190
190
|
count: number;
|
|
@@ -306,7 +306,7 @@ Delete multiple vectors by IDs or by metadata filter. Either `ids` or `filter` m
|
|
|
306
306
|
|
|
307
307
|
Query results are returned in this format:
|
|
308
308
|
|
|
309
|
-
```typescript
|
|
309
|
+
```typescript
|
|
310
310
|
interface QueryResult {
|
|
311
311
|
id: string;
|
|
312
312
|
score: number;
|
|
@@ -319,7 +319,7 @@ interface QueryResult {
|
|
|
319
319
|
|
|
320
320
|
The store throws typed errors that can be caught:
|
|
321
321
|
|
|
322
|
-
```typescript
|
|
322
|
+
```typescript
|
|
323
323
|
try {
|
|
324
324
|
await store.query({
|
|
325
325
|
indexName: "index_name",
|
|
@@ -137,7 +137,7 @@ Returns an array of index names as strings.
|
|
|
137
137
|
|
|
138
138
|
Returns:
|
|
139
139
|
|
|
140
|
-
```typescript
|
|
140
|
+
```typescript
|
|
141
141
|
interface IndexStats {
|
|
142
142
|
dimension: number;
|
|
143
143
|
count: number;
|
|
@@ -239,7 +239,7 @@ Delete multiple vectors by IDs or by metadata filter. Either `ids` or `filter` m
|
|
|
239
239
|
|
|
240
240
|
Query results are returned in this format:
|
|
241
241
|
|
|
242
|
-
```typescript
|
|
242
|
+
```typescript
|
|
243
243
|
interface QueryResult {
|
|
244
244
|
id: string;
|
|
245
245
|
score: number;
|
|
@@ -252,7 +252,7 @@ interface QueryResult {
|
|
|
252
252
|
|
|
253
253
|
The store throws typed errors that can be caught:
|
|
254
254
|
|
|
255
|
-
```typescript
|
|
255
|
+
```typescript
|
|
256
256
|
try {
|
|
257
257
|
await store.query({
|
|
258
258
|
indexName: "index_name",
|
|
@@ -14,13 +14,13 @@ The `S3Vectors` class provides vector search using [Amazon S3 Vectors (Preview)]
|
|
|
14
14
|
|
|
15
15
|
## Installation
|
|
16
16
|
|
|
17
|
-
```bash
|
|
17
|
+
```bash
|
|
18
18
|
npm install @mastra/s3vectors@beta
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Usage Example
|
|
22
22
|
|
|
23
|
-
```typescript
|
|
23
|
+
```typescript
|
|
24
24
|
import { S3Vectors } from "@mastra/s3vectors";
|
|
25
25
|
|
|
26
26
|
const store = new S3Vectors({
|
|
@@ -214,7 +214,7 @@ Returns information about the index.
|
|
|
214
214
|
|
|
215
215
|
Returns:
|
|
216
216
|
|
|
217
|
-
```typescript
|
|
217
|
+
```typescript
|
|
218
218
|
interface IndexStats {
|
|
219
219
|
dimension: number;
|
|
220
220
|
count: number; // computed via ListVectors pagination (O(n))
|
|
@@ -305,7 +305,7 @@ Closes the underlying AWS SDK HTTP handler to free sockets.
|
|
|
305
305
|
|
|
306
306
|
Query results are returned in this format:
|
|
307
307
|
|
|
308
|
-
```typescript
|
|
308
|
+
```typescript
|
|
309
309
|
interface QueryResult {
|
|
310
310
|
id: string;
|
|
311
311
|
score: number; // 1/(1 + distance)
|
|
@@ -337,7 +337,7 @@ S3 Vectors supports a strict subset of operators and value types. The Mastra fil
|
|
|
337
337
|
|
|
338
338
|
**Examples:**
|
|
339
339
|
|
|
340
|
-
```typescript
|
|
340
|
+
```typescript
|
|
341
341
|
// Implicit AND
|
|
342
342
|
{ genre: { $in: ["documentary", "comedy"] }, year: { $gte: 2020 } }
|
|
343
343
|
|
|
@@ -359,7 +359,7 @@ S3 Vectors supports a strict subset of operators and value types. The Mastra fil
|
|
|
359
359
|
|
|
360
360
|
The store throws typed errors that can be caught:
|
|
361
361
|
|
|
362
|
-
```typescript
|
|
362
|
+
```typescript
|
|
363
363
|
try {
|
|
364
364
|
await store.query({
|
|
365
365
|
indexName: "index-name",
|
|
@@ -170,7 +170,7 @@ Returns an array of index names as strings.
|
|
|
170
170
|
|
|
171
171
|
Returns:
|
|
172
172
|
|
|
173
|
-
```typescript
|
|
173
|
+
```typescript
|
|
174
174
|
interface IndexStats {
|
|
175
175
|
dimension: number;
|
|
176
176
|
count: number;
|
|
@@ -268,7 +268,7 @@ Delete multiple vectors by IDs or by metadata filter. Either `ids` or `filter` m
|
|
|
268
268
|
|
|
269
269
|
Query results are returned in this format:
|
|
270
270
|
|
|
271
|
-
```typescript
|
|
271
|
+
```typescript
|
|
272
272
|
interface QueryResult {
|
|
273
273
|
id: string;
|
|
274
274
|
score: number;
|
|
@@ -281,7 +281,7 @@ interface QueryResult {
|
|
|
281
281
|
|
|
282
282
|
The `schemaConfigForIndex` option allows you to define explicit schemas for different indexes:
|
|
283
283
|
|
|
284
|
-
```typescript
|
|
284
|
+
```typescript
|
|
285
285
|
schemaConfigForIndex: (indexName: string) => {
|
|
286
286
|
// Mastra's default embedding model and index for memory messages:
|
|
287
287
|
if (indexName === "memory_messages_384") {
|
|
@@ -304,7 +304,7 @@ schemaConfigForIndex: (indexName: string) => {
|
|
|
304
304
|
|
|
305
305
|
The store throws typed errors that can be caught:
|
|
306
306
|
|
|
307
|
-
```typescript
|
|
307
|
+
```typescript
|
|
308
308
|
try {
|
|
309
309
|
await store.query({
|
|
310
310
|
indexName: "index_name",
|
|
@@ -164,7 +164,7 @@ Returns an array of index names (namespaces) as strings.
|
|
|
164
164
|
|
|
165
165
|
Returns:
|
|
166
166
|
|
|
167
|
-
```typescript
|
|
167
|
+
```typescript
|
|
168
168
|
interface IndexStats {
|
|
169
169
|
dimension: number;
|
|
170
170
|
count: number;
|
|
@@ -238,7 +238,7 @@ Upstash Vector supports hybrid search that combines semantic search (dense vecto
|
|
|
238
238
|
|
|
239
239
|
### Basic Hybrid Usage
|
|
240
240
|
|
|
241
|
-
```typescript
|
|
241
|
+
```typescript
|
|
242
242
|
import { UpstashVector } from "@mastra/upstash";
|
|
243
243
|
|
|
244
244
|
const vectorStore = new UpstashVector({
|
|
@@ -275,7 +275,7 @@ const results = await vectorStore.query({
|
|
|
275
275
|
|
|
276
276
|
### Advanced Hybrid Search Options
|
|
277
277
|
|
|
278
|
-
```typescript
|
|
278
|
+
```typescript
|
|
279
279
|
import { FusionAlgorithm, QueryMode } from "@upstash/vector";
|
|
280
280
|
|
|
281
281
|
// Query with specific fusion algorithm
|
|
@@ -307,7 +307,7 @@ const sparseResults = await vectorStore.query({
|
|
|
307
307
|
|
|
308
308
|
### Updating Hybrid Vectors
|
|
309
309
|
|
|
310
|
-
```typescript
|
|
310
|
+
```typescript
|
|
311
311
|
// Update both dense and sparse components
|
|
312
312
|
await vectorStore.updateVector({
|
|
313
313
|
indexName: "hybrid-index",
|
|
@@ -324,7 +324,7 @@ await vectorStore.updateVector({
|
|
|
324
324
|
|
|
325
325
|
Query results are returned in this format:
|
|
326
326
|
|
|
327
|
-
```typescript
|
|
327
|
+
```typescript
|
|
328
328
|
interface QueryResult {
|
|
329
329
|
id: string;
|
|
330
330
|
score: number;
|
|
@@ -337,7 +337,7 @@ interface QueryResult {
|
|
|
337
337
|
|
|
338
338
|
The store throws typed errors that can be caught:
|
|
339
339
|
|
|
340
|
-
```typescript
|
|
340
|
+
```typescript
|
|
341
341
|
try {
|
|
342
342
|
await store.query({
|
|
343
343
|
indexName: "index_name",
|
|
@@ -358,6 +358,55 @@ Required environment variables:
|
|
|
358
358
|
- `UPSTASH_VECTOR_URL`: Your Upstash Vector database URL
|
|
359
359
|
- `UPSTASH_VECTOR_TOKEN`: Your Upstash Vector API token
|
|
360
360
|
|
|
361
|
+
## Usage Example
|
|
362
|
+
|
|
363
|
+
### Local embeddings with fastembed
|
|
364
|
+
|
|
365
|
+
Embeddings are numeric vectors used by memory's `semanticRecall` to retrieve related messages by meaning (not keywords). This setup uses `@mastra/fastembed` to generate vector embeddings.
|
|
366
|
+
|
|
367
|
+
Install `fastembed` to get started:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
npm install @mastra/fastembed@beta
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Add the following to your agent:
|
|
374
|
+
|
|
375
|
+
```typescript title="src/mastra/agents/example-upstash-agent.ts"
|
|
376
|
+
import { Memory } from "@mastra/memory";
|
|
377
|
+
import { Agent } from "@mastra/core/agent";
|
|
378
|
+
import { UpstashStore, UpstashVector } from "@mastra/upstash";
|
|
379
|
+
import { fastembed } from "@mastra/fastembed";
|
|
380
|
+
|
|
381
|
+
export const upstashAgent = new Agent({
|
|
382
|
+
id: "upstash-agent",
|
|
383
|
+
name: "Upstash Agent",
|
|
384
|
+
instructions:
|
|
385
|
+
"You are an AI agent with the ability to automatically recall memories from previous interactions.",
|
|
386
|
+
model: "openai/gpt-5.1",
|
|
387
|
+
memory: new Memory({
|
|
388
|
+
storage: new UpstashStore({
|
|
389
|
+
id: 'upstash-agent-storage',
|
|
390
|
+
url: process.env.UPSTASH_REDIS_REST_URL!,
|
|
391
|
+
token: process.env.UPSTASH_REDIS_REST_TOKEN!,
|
|
392
|
+
}),
|
|
393
|
+
vector: new UpstashVector({
|
|
394
|
+
id: 'upstash-agent-vector',
|
|
395
|
+
url: process.env.UPSTASH_VECTOR_REST_URL!,
|
|
396
|
+
token: process.env.UPSTASH_VECTOR_REST_TOKEN!,
|
|
397
|
+
}),
|
|
398
|
+
embedder: fastembed,
|
|
399
|
+
options: {
|
|
400
|
+
lastMessages: 10,
|
|
401
|
+
semanticRecall: {
|
|
402
|
+
topK: 3,
|
|
403
|
+
messageRange: 2,
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
}),
|
|
407
|
+
});
|
|
408
|
+
```
|
|
409
|
+
|
|
361
410
|
## Related
|
|
362
411
|
|
|
363
412
|
- [Metadata Filters](../rag/metadata-filters)
|
|
@@ -135,7 +135,7 @@ Returns an array of index names as strings.
|
|
|
135
135
|
|
|
136
136
|
Returns:
|
|
137
137
|
|
|
138
|
-
```typescript
|
|
138
|
+
```typescript
|
|
139
139
|
interface IndexStats {
|
|
140
140
|
dimension: number;
|
|
141
141
|
count: number;
|
|
@@ -259,7 +259,7 @@ Deletes a vector and its associated metadata for a specific ID within an index.
|
|
|
259
259
|
|
|
260
260
|
Query results are returned in this format:
|
|
261
261
|
|
|
262
|
-
```typescript
|
|
262
|
+
```typescript
|
|
263
263
|
interface QueryResult {
|
|
264
264
|
id: string;
|
|
265
265
|
score: number;
|
|
@@ -272,7 +272,7 @@ interface QueryResult {
|
|
|
272
272
|
|
|
273
273
|
The store throws typed errors that can be caught:
|
|
274
274
|
|
|
275
|
-
```typescript
|
|
275
|
+
```typescript
|
|
276
276
|
try {
|
|
277
277
|
await store.query({
|
|
278
278
|
indexName: "index_name",
|
|
@@ -9,7 +9,7 @@ The `.cancel()` method cancels a workflow run, stopping execution and cleaning u
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
await run.cancel();
|
|
@@ -43,7 +43,7 @@ await run.cancel();
|
|
|
43
43
|
|
|
44
44
|
## Extended usage example
|
|
45
45
|
|
|
46
|
-
```typescript
|
|
46
|
+
```typescript
|
|
47
47
|
const run = await workflow.createRun();
|
|
48
48
|
|
|
49
49
|
try {
|
|
@@ -9,13 +9,11 @@ The `.restart()` method restarts an active workflow run that lost connection to
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
const result = await run.start({ inputData: { value: "initial data" } });
|
|
16
16
|
|
|
17
|
-
//.. server connection lost,
|
|
18
|
-
|
|
19
17
|
const restartedResult = await run.restart();
|
|
20
18
|
```
|
|
21
19
|
|
|
@@ -9,7 +9,7 @@ The `.resume()` method resumes a suspended workflow run with new data, allowing
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
const result = await run.start({ inputData: { value: "initial data" } });
|
|
@@ -177,7 +177,7 @@ if (result.status === "suspended") {
|
|
|
177
177
|
|
|
178
178
|
## Extended usage example
|
|
179
179
|
|
|
180
|
-
```typescript
|
|
180
|
+
```typescript
|
|
181
181
|
if (result.status === "suspended") {
|
|
182
182
|
const resumedResults = await run.resume({
|
|
183
183
|
step: result.suspended[0],
|
|
@@ -9,7 +9,7 @@ The `.start()` method starts a workflow run with input data, allowing you to exe
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
const result = await run.start({
|
|
@@ -168,7 +168,7 @@ const result = await run.start({
|
|
|
168
168
|
|
|
169
169
|
## Extended usage example
|
|
170
170
|
|
|
171
|
-
```typescript
|
|
171
|
+
```typescript
|
|
172
172
|
import { RequestContext } from "@mastra/core/request-context";
|
|
173
173
|
|
|
174
174
|
const run = await workflow.createRun();
|
|
@@ -9,7 +9,7 @@ The `.startAsync()` method starts a workflow run without waiting for completion.
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
// Fire-and-forget - returns immediately
|
|
@@ -123,7 +123,7 @@ Use `startAsync()` instead of `start()` when:
|
|
|
123
123
|
|
|
124
124
|
After calling `startAsync()`, you can check the workflow status using:
|
|
125
125
|
|
|
126
|
-
```typescript
|
|
126
|
+
```typescript
|
|
127
127
|
// Get the execution result (including step outputs)
|
|
128
128
|
const result = await workflow.getWorkflowRunExecutionResult(runId);
|
|
129
129
|
|
|
@@ -9,7 +9,7 @@ The `.timeTravel()` method re-executes a workflow starting from any specific ste
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
const run = await workflow.createRun();
|
|
14
14
|
|
|
15
15
|
const result = await run.timeTravel({
|
|
@@ -213,7 +213,7 @@ const result = await run.timeTravel({
|
|
|
213
213
|
|
|
214
214
|
### Time travel with custom context
|
|
215
215
|
|
|
216
|
-
```typescript
|
|
216
|
+
```typescript
|
|
217
217
|
const result = await run.timeTravel({
|
|
218
218
|
step: "step2",
|
|
219
219
|
context: {
|
|
@@ -230,7 +230,7 @@ const result = await run.timeTravel({
|
|
|
230
230
|
|
|
231
231
|
### Time travel to nested workflow step
|
|
232
232
|
|
|
233
|
-
```typescript
|
|
233
|
+
```typescript
|
|
234
234
|
// Using dot notation
|
|
235
235
|
const result = await run.timeTravel({
|
|
236
236
|
step: "nestedWorkflow.step3",
|
|
@@ -246,7 +246,7 @@ const result = await run.timeTravel({
|
|
|
246
246
|
|
|
247
247
|
### Time travel with initial state
|
|
248
248
|
|
|
249
|
-
```typescript
|
|
249
|
+
```typescript
|
|
250
250
|
const result = await run.timeTravel({
|
|
251
251
|
step: "step2",
|
|
252
252
|
inputData: { value: 10 },
|
|
@@ -259,7 +259,7 @@ const result = await run.timeTravel({
|
|
|
259
259
|
|
|
260
260
|
### Time travel with nested workflows context
|
|
261
261
|
|
|
262
|
-
```typescript
|
|
262
|
+
```typescript
|
|
263
263
|
const result = await run.timeTravel({
|
|
264
264
|
step: "nestedWorkflow.step3",
|
|
265
265
|
context: {
|
|
@@ -10,7 +10,7 @@ It can take either a tool or an agent as a parameter to automatically create a s
|
|
|
10
10
|
|
|
11
11
|
## Usage example
|
|
12
12
|
|
|
13
|
-
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
13
|
+
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
14
14
|
import { createWorkflow, createStep } from "@mastra/core/workflows";
|
|
15
15
|
import { z } from "zod";
|
|
16
16
|
|
|
@@ -38,7 +38,7 @@ You can create a step directly from an agent. The step will use the agent's name
|
|
|
38
38
|
|
|
39
39
|
### Basic agent step
|
|
40
40
|
|
|
41
|
-
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
41
|
+
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
42
42
|
import { testAgent } from "../agents/test-agent";
|
|
43
43
|
|
|
44
44
|
const agentStep = createStep(testAgent);
|
|
@@ -50,7 +50,7 @@ const agentStep = createStep(testAgent);
|
|
|
50
50
|
|
|
51
51
|
Pass `structuredOutput` to have the agent return typed structured data:
|
|
52
52
|
|
|
53
|
-
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
53
|
+
```typescript title="src/mastra/workflows/test-workflow.ts"
|
|
54
54
|
const articleSchema = z.object({
|
|
55
55
|
title: z.string(),
|
|
56
56
|
summary: z.string(),
|
|
@@ -9,7 +9,7 @@ The `.createRun()` method creates a new workflow run instance, allowing you to e
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
await workflow.createRun();
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -53,7 +53,7 @@ await workflow.createRun();
|
|
|
53
53
|
|
|
54
54
|
## Extended usage example
|
|
55
55
|
|
|
56
|
-
```typescript
|
|
56
|
+
```typescript
|
|
57
57
|
const workflow = mastra.getWorkflow("workflow");
|
|
58
58
|
|
|
59
59
|
const run = await workflow.createRun();
|
|
@@ -69,7 +69,7 @@ const result = await run.start({
|
|
|
69
69
|
|
|
70
70
|
The `resourceId` parameter associates a workflow run with a specific resource, such as a user or tenant. This is useful for multi-tenant applications or when you need to track which user initiated a workflow.
|
|
71
71
|
|
|
72
|
-
```typescript
|
|
72
|
+
```typescript
|
|
73
73
|
const workflow = mastra.getWorkflow("workflow");
|
|
74
74
|
|
|
75
75
|
// Create a run associated with a specific user
|
|
@@ -9,7 +9,7 @@ The `.foreach()` method creates a loop that executes a step for each item in an
|
|
|
9
9
|
|
|
10
10
|
## Usage example
|
|
11
11
|
|
|
12
|
-
```typescript
|
|
12
|
+
```typescript
|
|
13
13
|
workflow.foreach(step1, { concurrency: 2 });
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -67,7 +67,7 @@ If you need to run multiple operations per item, use a nested workflow as the st
|
|
|
67
67
|
|
|
68
68
|
`.foreach()` always outputs an array. Each element in the output array corresponds to the result of processing the element at the same index in the input array.
|
|
69
69
|
|
|
70
|
-
```typescript
|
|
70
|
+
```typescript
|
|
71
71
|
// Input: [{ value: 1 }, { value: 2 }, { value: 3 }]
|
|
72
72
|
// Step adds 10 to each value
|
|
73
73
|
// Output: [{ value: 11 }, { value: 12 }, { value: 13 }]
|
|
@@ -77,7 +77,7 @@ If you need to run multiple operations per item, use a nested workflow as the st
|
|
|
77
77
|
|
|
78
78
|
When you chain `.then()` after `.foreach()`, the next step receives the entire output array as its input. This allows you to aggregate or process all results together.
|
|
79
79
|
|
|
80
|
-
```typescript
|
|
80
|
+
```typescript
|
|
81
81
|
workflow
|
|
82
82
|
.foreach(processItemStep) // Output: array of processed items
|
|
83
83
|
.then(aggregateStep) // Input: the entire array
|
|
@@ -88,7 +88,7 @@ workflow
|
|
|
88
88
|
|
|
89
89
|
Use `.map()` to transform the array output before passing it to the next step:
|
|
90
90
|
|
|
91
|
-
```typescript
|
|
91
|
+
```typescript
|
|
92
92
|
workflow
|
|
93
93
|
.foreach(processItemStep)
|
|
94
94
|
.map(async ({ inputData }) => ({
|
|
@@ -103,7 +103,7 @@ workflow
|
|
|
103
103
|
|
|
104
104
|
When you chain `.foreach()` calls, each operates on the array from the previous step:
|
|
105
105
|
|
|
106
|
-
```typescript
|
|
106
|
+
```typescript
|
|
107
107
|
workflow
|
|
108
108
|
.foreach(stepA) // If input is [a, b, c], output is [A, B, C]
|
|
109
109
|
.foreach(stepB) // Operates on [A, B, C], output is [A', B', C']
|
|
@@ -112,7 +112,7 @@ workflow
|
|
|
112
112
|
|
|
113
113
|
If a step inside `.foreach()` returns an array, the output becomes an array of arrays. Use `.map()` with `.flat()` to flatten:
|
|
114
114
|
|
|
115
|
-
```typescript
|
|
115
|
+
```typescript
|
|
116
116
|
workflow
|
|
117
117
|
.foreach(chunkStep) // Output: [[chunk1, chunk2], [chunk3, chunk4]]
|
|
118
118
|
.map(async ({ inputData }) => inputData.flat()) // Output: [chunk1, chunk2, chunk3, chunk4]
|