@mastra/mcp-docs-server 0.13.39 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +1 -0
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +0 -10
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +0 -10
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +36 -36
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +0 -10
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +40 -40
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +19 -19
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +4 -14
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +18 -18
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +223 -223
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +190 -190
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +7 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +214 -214
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +74 -74
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +67 -67
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +67 -67
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +209 -209
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +191 -191
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +34 -34
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +5 -13
- package/.docs/organized/changelogs/%40mastra%2Flance.md +182 -182
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +58 -58
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +65 -65
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +228 -228
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +199 -199
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +206 -206
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +19 -19
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +197 -197
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +217 -217
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Frag.md +61 -61
- package/.docs/organized/changelogs/%40mastra%2Freact.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +9 -17
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +6 -30
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +206 -206
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +16 -16
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +190 -190
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +18 -18
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +21 -21
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +56 -56
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +56 -56
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +20 -20
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +20 -20
- package/.docs/organized/changelogs/create-mastra.md +33 -33
- package/.docs/organized/changelogs/mastra.md +86 -86
- package/.docs/organized/code-examples/a2a.md +4 -2
- package/.docs/organized/code-examples/agui.md +12 -9
- package/.docs/organized/code-examples/ai-sdk-useChat.md +12 -18
- package/.docs/organized/code-examples/ai-sdk-v5.md +4 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +5 -4
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +4 -3
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +4 -3
- package/.docs/organized/code-examples/client-side-tools.md +1 -0
- package/.docs/organized/code-examples/crypto-chatbot.md +1 -1
- package/.docs/organized/code-examples/experimental-auth-weather-agent.md +8 -177
- package/.docs/organized/code-examples/fireworks-r1.md +2 -2
- package/.docs/organized/code-examples/heads-up-game.md +10 -7
- package/.docs/organized/code-examples/mcp-configuration.md +5 -3
- package/.docs/organized/code-examples/mcp-registry-registry.md +3 -2
- package/.docs/organized/code-examples/memory-per-resource-example.md +4 -2
- package/.docs/organized/code-examples/memory-todo-agent.md +1 -0
- package/.docs/organized/code-examples/memory-with-context.md +2 -1
- package/.docs/organized/code-examples/memory-with-libsql.md +4 -2
- package/.docs/organized/code-examples/memory-with-mongodb.md +4 -2
- package/.docs/organized/code-examples/memory-with-pg.md +4 -2
- package/.docs/organized/code-examples/memory-with-processors.md +13 -8
- package/.docs/organized/code-examples/memory-with-upstash.md +5 -3
- package/.docs/organized/code-examples/openapi-spec-writer.md +32 -41
- package/.docs/organized/code-examples/quick-start.md +5 -32
- package/.docs/organized/code-examples/stock-price-tool.md +6 -5
- package/.docs/organized/code-examples/weather-agent.md +21 -16
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +3 -2
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +9 -12
- package/.docs/organized/code-examples/workflow-with-memory.md +16 -15
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +2 -2
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +3 -2
- package/.docs/raw/agents/adding-voice.mdx +27 -22
- package/.docs/raw/agents/agent-memory.mdx +23 -15
- package/.docs/raw/agents/guardrails.mdx +33 -12
- package/.docs/raw/agents/networks.mdx +8 -4
- package/.docs/raw/agents/overview.mdx +21 -15
- package/.docs/raw/agents/using-tools.mdx +11 -8
- package/.docs/raw/auth/auth0.mdx +8 -8
- package/.docs/raw/auth/clerk.mdx +6 -6
- package/.docs/raw/auth/firebase.mdx +8 -8
- package/.docs/raw/auth/index.mdx +6 -6
- package/.docs/raw/auth/jwt.mdx +6 -6
- package/.docs/raw/auth/supabase.mdx +7 -7
- package/.docs/raw/auth/workos.mdx +8 -8
- package/.docs/raw/community/contributing-templates.mdx +3 -3
- package/.docs/raw/community/discord.mdx +1 -1
- package/.docs/raw/course/01-first-agent/08-exporting-your-agent.md +2 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +2 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +2 -0
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -0
- package/.docs/raw/course/03-agent-memory/10-storage-configuration.md +2 -3
- package/.docs/raw/course/03-agent-memory/13-vector-store-configuration.md +2 -0
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +2 -0
- package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -0
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +2 -0
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +1 -0
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +1 -0
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +1 -0
- package/.docs/raw/course/04-workflows/08-running-workflows-programmatically.md +2 -2
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +5 -5
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +7 -5
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +4 -4
- package/.docs/raw/deployment/cloud-providers/index.mdx +11 -8
- package/.docs/raw/deployment/monorepo.mdx +2 -2
- package/.docs/raw/deployment/overview.mdx +2 -2
- package/.docs/raw/deployment/server-deployment.mdx +2 -10
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +4 -4
- package/.docs/raw/deployment/serverless-platforms/index.mdx +10 -7
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +4 -4
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +4 -4
- package/.docs/raw/deployment/web-framework.mdx +8 -8
- package/.docs/raw/{scorers → evals}/custom-scorers.mdx +6 -6
- package/.docs/raw/evals/off-the-shelf-scorers.mdx +50 -0
- package/.docs/raw/{scorers → evals}/overview.mdx +8 -8
- package/.docs/raw/evals/running-in-ci.mdx +113 -0
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +22 -21
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +8 -8
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +3 -0
- package/.docs/raw/frameworks/servers/express.mdx +10 -9
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +6 -6
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +3 -3
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +4 -4
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +2 -2
- package/.docs/raw/getting-started/installation.mdx +13 -12
- package/.docs/raw/getting-started/mcp-docs-server.mdx +1 -1
- package/.docs/raw/getting-started/project-structure.mdx +4 -4
- package/.docs/raw/getting-started/studio.mdx +8 -8
- package/.docs/raw/getting-started/templates.mdx +1 -1
- package/.docs/raw/guides/guide/ai-recruiter.mdx +264 -0
- package/.docs/raw/guides/guide/chef-michel.mdx +271 -0
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +450 -0
- package/.docs/raw/guides/guide/research-assistant.mdx +389 -0
- package/.docs/raw/guides/guide/stock-agent.mdx +185 -0
- package/.docs/raw/guides/guide/web-search.mdx +291 -0
- package/.docs/raw/guides/index.mdx +43 -0
- package/.docs/raw/guides/migrations/agentnetwork.mdx +114 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/_template.mdx +50 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +265 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/cli.mdx +48 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +153 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +230 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +171 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +114 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +241 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +83 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/processors.mdx +62 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +270 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +115 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +280 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +23 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/voice.mdx +39 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +178 -0
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +367 -0
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/{observability/logging.mdx → logging.mdx} +4 -4
- package/.docs/raw/mastra-cloud/dashboard.mdx +2 -2
- package/.docs/raw/mastra-cloud/observability.mdx +6 -6
- package/.docs/raw/mastra-cloud/overview.mdx +2 -2
- package/.docs/raw/mastra-cloud/setting-up.mdx +4 -4
- package/.docs/raw/memory/conversation-history.mdx +1 -0
- package/.docs/raw/memory/memory-processors.mdx +4 -3
- package/.docs/raw/memory/overview.mdx +9 -5
- package/.docs/raw/memory/semantic-recall.mdx +12 -7
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +10 -5
- package/.docs/raw/memory/storage/memory-with-pg.mdx +9 -4
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +9 -4
- package/.docs/raw/memory/threads-and-resources.mdx +11 -13
- package/.docs/raw/memory/working-memory.mdx +30 -14
- package/.docs/raw/observability/overview.mdx +13 -30
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/arize.mdx +10 -18
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/braintrust.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/cloud.mdx +11 -17
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/default.mdx +16 -20
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/langfuse.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/langsmith.mdx +7 -16
- package/.docs/raw/observability/{ai-tracing → tracing}/exporters/otel.mdx +9 -18
- package/.docs/raw/observability/{ai-tracing → tracing}/overview.mdx +107 -142
- package/.docs/raw/observability/{ai-tracing → tracing}/processors/sensitive-data-filter.mdx +14 -13
- package/.docs/raw/rag/chunking-and-embedding.mdx +5 -5
- package/.docs/raw/rag/overview.mdx +3 -13
- package/.docs/raw/rag/retrieval.mdx +24 -12
- package/.docs/raw/rag/vector-databases.mdx +7 -1
- package/.docs/raw/reference/agents/agent.mdx +33 -28
- package/.docs/raw/reference/agents/generate.mdx +10 -10
- package/.docs/raw/reference/agents/generateLegacy.mdx +8 -8
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +21 -15
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +69 -0
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +22 -16
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +8 -8
- package/.docs/raw/reference/agents/getLLM.mdx +9 -9
- package/.docs/raw/reference/agents/getMemory.mdx +9 -9
- package/.docs/raw/reference/agents/getModel.mdx +10 -10
- package/.docs/raw/reference/agents/getVoice.mdx +8 -8
- package/.docs/raw/reference/agents/listAgents.mdx +9 -9
- package/.docs/raw/reference/agents/listScorers.mdx +7 -7
- package/.docs/raw/reference/agents/listTools.mdx +7 -7
- package/.docs/raw/reference/agents/listWorkflows.mdx +7 -7
- package/.docs/raw/reference/agents/network.mdx +11 -10
- package/.docs/raw/reference/auth/auth0.mdx +4 -4
- package/.docs/raw/reference/auth/clerk.mdx +4 -4
- package/.docs/raw/reference/auth/firebase.mdx +6 -6
- package/.docs/raw/reference/auth/jwt.mdx +4 -4
- package/.docs/raw/reference/auth/supabase.mdx +4 -4
- package/.docs/raw/reference/auth/workos.mdx +4 -4
- package/.docs/raw/reference/cli/mastra.mdx +7 -7
- package/.docs/raw/reference/client-js/agents.mdx +6 -2
- package/.docs/raw/reference/client-js/mastra-client.mdx +7 -7
- package/.docs/raw/reference/client-js/memory.mdx +24 -16
- package/.docs/raw/reference/client-js/observability.mdx +11 -11
- package/.docs/raw/reference/client-js/workflows.mdx +6 -34
- 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 +2 -2
- package/.docs/raw/reference/core/getLogger.mdx +2 -2
- package/.docs/raw/reference/core/getMCPServer.mdx +31 -15
- package/.docs/raw/reference/core/getMCPServerById.mdx +81 -0
- package/.docs/raw/reference/core/getScorer.mdx +3 -3
- package/.docs/raw/reference/core/getScorerById.mdx +79 -0
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +2 -2
- package/.docs/raw/reference/core/getTelemetry.mdx +2 -2
- package/.docs/raw/reference/core/getVector.mdx +2 -2
- 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 +2 -2
- package/.docs/raw/reference/core/listLogsByRunId.mdx +2 -2
- package/.docs/raw/reference/core/listMCPServers.mdx +65 -0
- package/.docs/raw/reference/core/listScorers.mdx +3 -3
- package/.docs/raw/reference/core/listVectors.mdx +36 -0
- package/.docs/raw/reference/core/listWorkflows.mdx +6 -6
- package/.docs/raw/reference/core/mastra-class.mdx +3 -2
- package/.docs/raw/reference/core/setLogger.mdx +2 -2
- package/.docs/raw/reference/core/setStorage.mdx +3 -2
- package/.docs/raw/reference/core/setTelemetry.mdx +2 -2
- package/.docs/raw/reference/deployer/cloudflare.mdx +2 -2
- package/.docs/raw/reference/deployer/deployer.mdx +0 -6
- package/.docs/raw/reference/deployer/netlify.mdx +2 -2
- package/.docs/raw/reference/deployer/vercel.mdx +3 -3
- package/.docs/raw/reference/evals/answer-relevancy.mdx +164 -126
- package/.docs/raw/reference/{scorers → evals}/answer-similarity.mdx +27 -27
- package/.docs/raw/reference/evals/bias.mdx +149 -115
- package/.docs/raw/reference/evals/completeness.mdx +148 -117
- package/.docs/raw/reference/evals/content-similarity.mdx +126 -113
- package/.docs/raw/reference/evals/context-precision.mdx +290 -133
- package/.docs/raw/reference/{scorers → evals}/context-relevance.mdx +6 -6
- package/.docs/raw/reference/{scorers → evals}/create-scorer.mdx +11 -11
- package/.docs/raw/reference/evals/faithfulness.mdx +163 -121
- package/.docs/raw/reference/evals/hallucination.mdx +159 -132
- package/.docs/raw/reference/evals/keyword-coverage.mdx +169 -125
- package/.docs/raw/reference/{scorers → evals}/mastra-scorer.mdx +5 -5
- package/.docs/raw/reference/{scorers → evals}/noise-sensitivity.mdx +9 -9
- package/.docs/raw/reference/evals/prompt-alignment.mdx +604 -182
- package/.docs/raw/reference/{scorers/run-experiment.mdx → evals/run-evals.mdx} +17 -18
- package/.docs/raw/reference/evals/textual-difference.mdx +149 -117
- package/.docs/raw/reference/evals/tone-consistency.mdx +149 -125
- package/.docs/raw/reference/{scorers → evals}/tool-call-accuracy.mdx +8 -6
- package/.docs/raw/reference/evals/toxicity.mdx +152 -96
- package/.docs/raw/reference/{observability/logging → logging}/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +5 -5
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -7
- package/.docs/raw/reference/memory/getThreadById.mdx +4 -4
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +110 -0
- package/.docs/raw/reference/memory/memory-class.mdx +13 -9
- package/.docs/raw/reference/memory/query.mdx +58 -57
- package/.docs/raw/reference/memory/recall.mdx +185 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +245 -0
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/arize.mdx +13 -13
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/braintrust.mdx +11 -8
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/cloud-exporter.mdx +21 -19
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/console-exporter.mdx +49 -17
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/default-exporter.mdx +42 -41
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/langfuse.mdx +10 -7
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/langsmith.mdx +10 -7
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/exporters/otel.mdx +5 -5
- package/.docs/raw/reference/observability/tracing/instances.mdx +168 -0
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/interfaces.mdx +115 -89
- package/.docs/raw/reference/observability/{ai-tracing → tracing}/processors/sensitive-data-filter.mdx +3 -3
- package/.docs/raw/reference/observability/{ai-tracing/span.mdx → tracing/spans.mdx} +59 -41
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +1 -1
- package/.docs/raw/reference/processors/language-detector.mdx +1 -1
- package/.docs/raw/reference/processors/moderation-processor.mdx +1 -1
- package/.docs/raw/reference/processors/pii-detector.mdx +1 -1
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +1 -1
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +1 -1
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +1 -1
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +1 -1
- package/.docs/raw/reference/rag/chunk.mdx +1 -8
- package/.docs/raw/reference/rag/database-config.mdx +7 -7
- package/.docs/raw/reference/rag/metadata-filters.mdx +14 -11
- package/.docs/raw/reference/storage/libsql.mdx +2 -0
- package/.docs/raw/reference/storage/mssql.mdx +5 -0
- package/.docs/raw/reference/storage/postgresql.mdx +6 -0
- package/.docs/raw/reference/storage/upstash.mdx +1 -0
- package/.docs/raw/reference/streaming/agents/stream.mdx +12 -12
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +8 -8
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +3 -3
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +3 -3
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +6 -6
- package/.docs/raw/reference/streaming/workflows/stream.mdx +10 -10
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +11 -11
- package/.docs/raw/reference/templates/overview.mdx +2 -2
- package/.docs/raw/reference/tools/create-tool.mdx +52 -35
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +15 -15
- package/.docs/raw/reference/tools/mcp-client.mdx +1 -1
- package/.docs/raw/reference/tools/mcp-server.mdx +119 -35
- package/.docs/raw/reference/tools/vector-query-tool.mdx +27 -26
- package/.docs/raw/reference/vectors/libsql.mdx +1 -0
- package/.docs/raw/reference/vectors/pg.mdx +3 -0
- package/.docs/raw/reference/vectors/upstash.mdx +1 -0
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -4
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +14 -14
- package/.docs/raw/reference/workflows/run-methods/start.mdx +17 -17
- package/.docs/raw/reference/workflows/run.mdx +1 -8
- package/.docs/raw/reference/workflows/step.mdx +5 -5
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -13
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +5 -0
- 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 +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +1 -1
- package/.docs/raw/server-db/custom-api-routes.mdx +2 -2
- package/.docs/raw/server-db/mastra-client.mdx +19 -18
- package/.docs/raw/server-db/middleware.mdx +7 -7
- package/.docs/raw/server-db/production-server.mdx +4 -4
- package/.docs/raw/server-db/{runtime-context.mdx → request-context.mdx} +46 -45
- package/.docs/raw/server-db/storage.mdx +29 -21
- package/.docs/raw/streaming/events.mdx +3 -3
- package/.docs/raw/streaming/overview.mdx +5 -5
- package/.docs/raw/streaming/tool-streaming.mdx +18 -17
- package/.docs/raw/streaming/workflow-streaming.mdx +1 -1
- package/.docs/raw/tools-mcp/advanced-usage.mdx +5 -4
- package/.docs/raw/tools-mcp/mcp-overview.mdx +32 -19
- package/.docs/raw/tools-mcp/overview.mdx +11 -11
- package/.docs/raw/voice/overview.mdx +63 -43
- package/.docs/raw/voice/speech-to-speech.mdx +5 -3
- package/.docs/raw/voice/speech-to-text.mdx +9 -8
- package/.docs/raw/voice/text-to-speech.mdx +12 -11
- package/.docs/raw/workflows/agents-and-tools.mdx +9 -5
- package/.docs/raw/workflows/control-flow.mdx +3 -3
- package/.docs/raw/workflows/error-handling.mdx +2 -21
- package/.docs/raw/workflows/human-in-the-loop.mdx +7 -4
- package/.docs/raw/workflows/inngest-workflow.mdx +2 -2
- package/.docs/raw/workflows/input-data-mapping.mdx +107 -0
- package/.docs/raw/workflows/overview.mdx +17 -16
- package/.docs/raw/workflows/snapshots.mdx +13 -11
- package/.docs/raw/workflows/suspend-and-resume.mdx +23 -15
- package/CHANGELOG.md +52 -57
- package/README.md +11 -2
- package/dist/{chunk-TUAHUTTB.js → chunk-5NJC7NRO.js} +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/prepare-docs/copy-raw.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/prompts/migration.d.ts +6 -0
- package/dist/prompts/migration.d.ts.map +1 -0
- package/dist/stdio.js +402 -30
- package/dist/tools/migration.d.ts +40 -0
- package/dist/tools/migration.d.ts.map +1 -0
- package/package.json +8 -12
- package/.docs/organized/changelogs/%40mastra%2Fcloud.md +0 -302
- package/.docs/raw/observability/nextjs-tracing.mdx +0 -109
- package/.docs/raw/observability/otel-tracing.mdx +0 -189
- package/.docs/raw/reference/agents/getScorers.mdx +0 -69
- package/.docs/raw/reference/agents/getTools.mdx +0 -69
- package/.docs/raw/reference/agents/getWorkflows.mdx +0 -69
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +0 -143
- package/.docs/raw/reference/core/getAgents.mdx +0 -35
- package/.docs/raw/reference/core/getLogs.mdx +0 -96
- package/.docs/raw/reference/core/getLogsByRunId.mdx +0 -87
- package/.docs/raw/reference/core/getMCPServers.mdx +0 -36
- package/.docs/raw/reference/core/getMemory.mdx +0 -36
- package/.docs/raw/reference/core/getScorerByName.mdx +0 -78
- package/.docs/raw/reference/core/getScorers.mdx +0 -43
- package/.docs/raw/reference/core/getVectors.mdx +0 -36
- package/.docs/raw/reference/core/getWorkflows.mdx +0 -45
- package/.docs/raw/reference/evals/context-position.mdx +0 -197
- package/.docs/raw/reference/evals/context-relevancy.mdx +0 -196
- package/.docs/raw/reference/evals/contextual-recall.mdx +0 -196
- package/.docs/raw/reference/evals/summarization.mdx +0 -212
- package/.docs/raw/reference/legacyWorkflows/after.mdx +0 -89
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +0 -79
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +0 -33
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +0 -76
- package/.docs/raw/reference/legacyWorkflows/else.mdx +0 -68
- package/.docs/raw/reference/legacyWorkflows/events.mdx +0 -305
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +0 -110
- package/.docs/raw/reference/legacyWorkflows/if.mdx +0 -108
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +0 -158
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +0 -133
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +0 -207
- package/.docs/raw/reference/legacyWorkflows/start.mdx +0 -87
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +0 -100
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +0 -137
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +0 -93
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +0 -69
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +0 -196
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +0 -70
- package/.docs/raw/reference/legacyWorkflows/then.mdx +0 -72
- package/.docs/raw/reference/legacyWorkflows/until.mdx +0 -168
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +0 -124
- package/.docs/raw/reference/legacyWorkflows/while.mdx +0 -168
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +0 -234
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +0 -79
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +0 -110
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +0 -185
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +0 -238
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +0 -117
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +0 -81
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +0 -121
- package/.docs/raw/reference/observability/otel-tracing/providers/braintrust.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +0 -20
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +0 -73
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +0 -41
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +0 -84
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +0 -48
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +0 -43
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +0 -40
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +0 -40
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +0 -227
- package/.docs/raw/reference/scorers/bias.mdx +0 -228
- package/.docs/raw/reference/scorers/completeness.mdx +0 -214
- package/.docs/raw/reference/scorers/content-similarity.mdx +0 -197
- package/.docs/raw/reference/scorers/context-precision.mdx +0 -352
- package/.docs/raw/reference/scorers/faithfulness.mdx +0 -241
- package/.docs/raw/reference/scorers/hallucination.mdx +0 -252
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +0 -229
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +0 -668
- package/.docs/raw/reference/scorers/textual-difference.mdx +0 -203
- package/.docs/raw/reference/scorers/tone-consistency.mdx +0 -211
- package/.docs/raw/reference/scorers/toxicity.mdx +0 -228
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +0 -73
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +0 -24
- package/.docs/raw/scorers/evals-old-api/overview.mdx +0 -106
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +0 -85
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +0 -58
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +0 -50
- package/.docs/raw/workflows-legacy/control-flow.mdx +0 -774
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +0 -239
- package/.docs/raw/workflows-legacy/error-handling.mdx +0 -187
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +0 -360
- package/.docs/raw/workflows-legacy/overview.mdx +0 -182
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +0 -156
- package/.docs/raw/workflows-legacy/steps.mdx +0 -115
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +0 -406
- package/.docs/raw/workflows-legacy/variables.mdx +0 -318
|
@@ -42,13 +42,14 @@ import { Memory } from '@mastra/memory';
|
|
|
42
42
|
import { LibSQLStore } from '@mastra/libsql';
|
|
43
43
|
|
|
44
44
|
export const weatherAgent = new Agent({
|
|
45
|
+
id: 'weather-agent',
|
|
45
46
|
name: 'Weather Agent',
|
|
46
47
|
instructions: `
|
|
47
48
|
You are a helpful weather assistant that provides accurate weather information.
|
|
48
49
|
|
|
49
50
|
Your primary function is to help users get weather details for specific locations. When responding:
|
|
50
51
|
- Always ask for a location if none is provided
|
|
51
|
-
- If the location name isn
|
|
52
|
+
- If the location name isn't in English, please translate it
|
|
52
53
|
- If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
|
|
53
54
|
- Include relevant details like humidity, wind conditions, and precipitation
|
|
54
55
|
- Keep responses concise but informative
|
|
@@ -57,6 +58,7 @@ export const weatherAgent = new Agent({
|
|
|
57
58
|
|
|
58
59
|
memory: new Memory({
|
|
59
60
|
storage: new LibSQLStore({
|
|
61
|
+
id: 'agui-storage',
|
|
60
62
|
url: 'file:../mastra.db', // path is relative to the .mastra/output directory
|
|
61
63
|
}),
|
|
62
64
|
options: {
|
|
@@ -77,11 +79,11 @@ import { Mastra } from '@mastra/core/mastra';
|
|
|
77
79
|
import { PinoLogger } from '@mastra/loggers';
|
|
78
80
|
import { LibSQLStore } from '@mastra/libsql';
|
|
79
81
|
import { registerCopilotKit } from '@ag-ui/mastra';
|
|
80
|
-
import {
|
|
82
|
+
import { RequestContext } from '@mastra/core/request-context';
|
|
81
83
|
import { weatherAgent } from './agents';
|
|
82
84
|
import { myNetwork } from './network';
|
|
83
85
|
|
|
84
|
-
type
|
|
86
|
+
type WeatherRequestContext = {
|
|
85
87
|
'user-id': string;
|
|
86
88
|
'temperature-scale': 'celsius' | 'fahrenheit';
|
|
87
89
|
location: string;
|
|
@@ -93,7 +95,8 @@ export const mastra = new Mastra({
|
|
|
93
95
|
myNetwork,
|
|
94
96
|
},
|
|
95
97
|
storage: new LibSQLStore({
|
|
96
|
-
|
|
98
|
+
id: 'agui-storage',
|
|
99
|
+
// stores observability, evals, ... into memory storage, if it needs to persist, change to file:../mastra.db
|
|
97
100
|
url: ':memory:',
|
|
98
101
|
}),
|
|
99
102
|
logger: new PinoLogger({
|
|
@@ -107,13 +110,13 @@ export const mastra = new Mastra({
|
|
|
107
110
|
allowHeaders: ['*'],
|
|
108
111
|
},
|
|
109
112
|
apiRoutes: [
|
|
110
|
-
registerCopilotKit<
|
|
113
|
+
registerCopilotKit<WeatherRequestContext>({
|
|
111
114
|
path: '/copilotkit',
|
|
112
115
|
resourceId: 'weatherAgent',
|
|
113
|
-
setContext: (c,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
setContext: (c, requestContext) => {
|
|
117
|
+
requestContext.set('user-id', c.req.header('X-User-ID') || 'anonymous');
|
|
118
|
+
requestContext.set('temperature-scale', 'celsius');
|
|
119
|
+
requestContext.set('location', c.req.header('X-User-Location') || 'unknown');
|
|
117
120
|
},
|
|
118
121
|
}),
|
|
119
122
|
],
|
|
@@ -33,13 +33,14 @@ import { Agent } from '@mastra/core/agent';
|
|
|
33
33
|
import { weatherTool } from '../tools';
|
|
34
34
|
|
|
35
35
|
export const weatherAgent = new Agent({
|
|
36
|
+
id: 'weather-agent',
|
|
36
37
|
name: 'Weather Agent',
|
|
37
38
|
instructions: `
|
|
38
39
|
You are a helpful weather assistant that provides accurate weather information.
|
|
39
40
|
|
|
40
41
|
Your primary function is to help users get weather details for specific locations. When responding:
|
|
41
42
|
- Always ask for a location if none is provided
|
|
42
|
-
- If the location name isn
|
|
43
|
+
- If the location name isn't in English, please translate it
|
|
43
44
|
- If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
|
|
44
45
|
- Include relevant details like humidity, wind conditions, and precipitation
|
|
45
46
|
- Keep responses concise but informative
|
|
@@ -110,8 +111,8 @@ export const weatherTool = createTool({
|
|
|
110
111
|
conditions: z.string(),
|
|
111
112
|
location: z.string(),
|
|
112
113
|
}),
|
|
113
|
-
execute: async
|
|
114
|
-
return await getWeather(
|
|
114
|
+
execute: async input => {
|
|
115
|
+
return await getWeather(inputData.location);
|
|
115
116
|
},
|
|
116
117
|
});
|
|
117
118
|
|
|
@@ -188,6 +189,7 @@ import { z } from 'zod';
|
|
|
188
189
|
const llm = anthropic('claude-3-5-sonnet-20241022');
|
|
189
190
|
|
|
190
191
|
const agent = new Agent({
|
|
192
|
+
id: 'weather-agent',
|
|
191
193
|
name: 'Weather Agent',
|
|
192
194
|
model: llm,
|
|
193
195
|
instructions: `
|
|
@@ -241,21 +243,15 @@ const fetchWeather = new Step({
|
|
|
241
243
|
inputSchema: z.object({
|
|
242
244
|
city: z.string().describe('The city to get the weather for'),
|
|
243
245
|
}),
|
|
244
|
-
execute: async (
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
if (!triggerData) {
|
|
248
|
-
throw new Error('Trigger data not found');
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const geocodingUrl = `https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(triggerData.city)}&count=1`;
|
|
246
|
+
execute: async (inputData, context) => {
|
|
247
|
+
const geocodingUrl = `https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(inputData.city)}&count=1`;
|
|
252
248
|
const geocodingResponse = await fetch(geocodingUrl);
|
|
253
249
|
const geocodingData = (await geocodingResponse.json()) as {
|
|
254
250
|
results: { latitude: number; longitude: number; name: string }[];
|
|
255
251
|
};
|
|
256
252
|
|
|
257
253
|
if (!geocodingData.results?.[0]) {
|
|
258
|
-
throw new Error(`Location '${
|
|
254
|
+
throw new Error(`Location '${inputData.city}' not found`);
|
|
259
255
|
}
|
|
260
256
|
|
|
261
257
|
const { latitude, longitude, name } = geocodingData.results[0];
|
|
@@ -300,15 +296,13 @@ const planActivities = new Step({
|
|
|
300
296
|
id: 'plan-activities',
|
|
301
297
|
description: 'Suggests activities based on weather conditions',
|
|
302
298
|
inputSchema: forecastSchema,
|
|
303
|
-
execute: async (
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
if (!forecast || forecast.length === 0) {
|
|
299
|
+
execute: async (inputData, context) => {
|
|
300
|
+
if (!inputData || inputData.length === 0) {
|
|
307
301
|
throw new Error('Forecast data not found');
|
|
308
302
|
}
|
|
309
303
|
|
|
310
|
-
const prompt = `Based on the following weather forecast for ${
|
|
311
|
-
${JSON.stringify(
|
|
304
|
+
const prompt = `Based on the following weather forecast for ${inputData[0]?.location}, suggest appropriate activities:
|
|
305
|
+
${JSON.stringify(inputData, null, 2)}
|
|
312
306
|
`;
|
|
313
307
|
|
|
314
308
|
const response = await agent.stream([
|
|
@@ -44,6 +44,7 @@ import { LibSQLStore } from "@mastra/libsql";
|
|
|
44
44
|
|
|
45
45
|
export const memory = new Memory({
|
|
46
46
|
storage: new LibSQLStore({
|
|
47
|
+
id: "ai-sdk-v5-storage",
|
|
47
48
|
url: `file:./mastra.db`,
|
|
48
49
|
}),
|
|
49
50
|
options: {
|
|
@@ -56,6 +57,7 @@ export const memory = new Memory({
|
|
|
56
57
|
});
|
|
57
58
|
|
|
58
59
|
export const weatherAgent = new Agent({
|
|
60
|
+
id: "weather-agent",
|
|
59
61
|
name: "Weather Agent",
|
|
60
62
|
instructions: `
|
|
61
63
|
You are a helpful weather assistant that provides accurate weather information.
|
|
@@ -134,8 +136,8 @@ export const weatherTool = createTool({
|
|
|
134
136
|
conditions: z.string(),
|
|
135
137
|
location: z.string(),
|
|
136
138
|
}),
|
|
137
|
-
execute: async (
|
|
138
|
-
return await getWeather(
|
|
139
|
+
execute: async (inputData) => {
|
|
140
|
+
return await getWeather(inputData.location);
|
|
139
141
|
},
|
|
140
142
|
});
|
|
141
143
|
|
|
@@ -177,7 +177,8 @@ import { anthropic } from '@ai-sdk/anthropic';
|
|
|
177
177
|
import { Agent } from '@mastra/core/agent';
|
|
178
178
|
|
|
179
179
|
export const birdCheckerAgent = new Agent({
|
|
180
|
-
|
|
180
|
+
id: 'bird-checker',
|
|
181
|
+
name: 'Bird Checker',
|
|
181
182
|
instructions:
|
|
182
183
|
'You can view an image and figure out if it is a bird or not. You can also figure out the species of the bird and where the picture was taken.',
|
|
183
184
|
model: anthropic('claude-3-haiku-20240307'),
|
|
@@ -188,7 +189,7 @@ export const birdCheckerAgent = new Agent({
|
|
|
188
189
|
### mastra/index.ts
|
|
189
190
|
```typescript
|
|
190
191
|
import { PinoLogger } from '@mastra/loggers';
|
|
191
|
-
import { Mastra } from '@mastra/core';
|
|
192
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
192
193
|
|
|
193
194
|
import { birdCheckerAgent } from './agents/agent';
|
|
194
195
|
|
|
@@ -215,8 +216,8 @@ export const getRandomImageTool = createTool({
|
|
|
215
216
|
inputSchema: z.object({
|
|
216
217
|
query: z.enum(['wildlife', 'feathers', 'flying', 'birds']),
|
|
217
218
|
}),
|
|
218
|
-
execute: async
|
|
219
|
-
return getRandomImage(
|
|
219
|
+
execute: async input => {
|
|
220
|
+
return getRandomImage(input);
|
|
220
221
|
},
|
|
221
222
|
});
|
|
222
223
|
|
|
@@ -307,7 +307,8 @@ import { anthropic } from "@ai-sdk/anthropic";
|
|
|
307
307
|
import { Agent } from "@mastra/core/agent";
|
|
308
308
|
|
|
309
309
|
export const birdAgent = new Agent({
|
|
310
|
-
|
|
310
|
+
id: "bird-agent",
|
|
311
|
+
name: "Bird Agent",
|
|
311
312
|
instructions:
|
|
312
313
|
"You can view an image and figure out if it is a bird or not. You can also figure out the species of the bird and where the picture was taken.",
|
|
313
314
|
model: anthropic("claude-3-haiku-20240307"),
|
|
@@ -339,8 +340,8 @@ export const getRandomImageTool = createTool({
|
|
|
339
340
|
inputSchema: z.object({
|
|
340
341
|
query: z.enum(["wildlife", "feathers", "flying", "birds"]),
|
|
341
342
|
}),
|
|
342
|
-
execute: async (
|
|
343
|
-
return getRandomImage(
|
|
343
|
+
execute: async (inputData) => {
|
|
344
|
+
return getRandomImage(input);
|
|
344
345
|
},
|
|
345
346
|
});
|
|
346
347
|
|
|
@@ -202,7 +202,8 @@ import { anthropic } from "@ai-sdk/anthropic";
|
|
|
202
202
|
import { Agent } from "@mastra/core/agent";
|
|
203
203
|
|
|
204
204
|
export const birdAgent = new Agent({
|
|
205
|
-
|
|
205
|
+
id: "bird-checker",
|
|
206
|
+
name: "Bird Checker",
|
|
206
207
|
instructions:
|
|
207
208
|
"You can view an image and figure out if it is a bird or not. You can also figure out the species of the bird and where the picture was taken.",
|
|
208
209
|
model: anthropic("claude-3-haiku-20240307"),
|
|
@@ -233,8 +234,8 @@ export const getRandomImageTool = createTool({
|
|
|
233
234
|
inputSchema: z.object({
|
|
234
235
|
query: z.enum(["wildlife", "feathers", "flying", "birds"]),
|
|
235
236
|
}),
|
|
236
|
-
execute: async (
|
|
237
|
-
return getRandomImage(
|
|
237
|
+
execute: async (inputData) => {
|
|
238
|
+
return getRandomImage(input);
|
|
238
239
|
},
|
|
239
240
|
});
|
|
240
241
|
|
|
@@ -32,6 +32,7 @@ import { openai } from '@ai-sdk/openai';
|
|
|
32
32
|
import { Agent } from '@mastra/core/agent';
|
|
33
33
|
|
|
34
34
|
export const agent = new Agent({
|
|
35
|
+
id: 'test-agent',
|
|
35
36
|
name: 'Test Agent',
|
|
36
37
|
instructions: 'You are a browser client agent. You execute tools in the browser.',
|
|
37
38
|
model: openai('gpt-4o'),
|
|
@@ -29,12 +29,13 @@ import { Agent } from '@mastra/core/agent';
|
|
|
29
29
|
import { weatherTool } from '../tools';
|
|
30
30
|
|
|
31
31
|
export const weatherAgent = new Agent({
|
|
32
|
+
id: 'weather-agent',
|
|
32
33
|
name: 'Weather Agent',
|
|
33
34
|
instructions: `You are a helpful weather assistant that provides accurate weather information.
|
|
34
35
|
|
|
35
36
|
Your primary function is to help users get weather details for specific locations. When responding:
|
|
36
37
|
- Always ask for a location if none is provided
|
|
37
|
-
- If the location name isn
|
|
38
|
+
- If the location name isn't in English, please translate it
|
|
38
39
|
- If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
|
|
39
40
|
- Include relevant details like humidity, wind conditions, and precipitation
|
|
40
41
|
- Keep responses concise but informative
|
|
@@ -83,19 +84,17 @@ export const authConfig = getAuthProvider();
|
|
|
83
84
|
|
|
84
85
|
### mastra/index.ts
|
|
85
86
|
```typescript
|
|
86
|
-
import { Mastra } from '@mastra/core';
|
|
87
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
87
88
|
|
|
88
89
|
import { weatherAgent } from './agents';
|
|
89
|
-
import { weatherWorkflow
|
|
90
|
-
import { weatherWorkflow } from './workflows/new-workflow';
|
|
90
|
+
import { weatherWorkflow } from './workflows';
|
|
91
91
|
import { authConfig } from './auth';
|
|
92
92
|
|
|
93
93
|
export const mastra = new Mastra({
|
|
94
94
|
agents: { weatherAgent },
|
|
95
|
-
legacy_workflows: { legacyWeatherWorkflow },
|
|
96
95
|
workflows: { weatherWorkflow },
|
|
97
96
|
server: {
|
|
98
|
-
|
|
97
|
+
auth: authConfig,
|
|
99
98
|
},
|
|
100
99
|
});
|
|
101
100
|
|
|
@@ -133,8 +132,8 @@ export const weatherTool = createTool({
|
|
|
133
132
|
conditions: z.string(),
|
|
134
133
|
location: z.string(),
|
|
135
134
|
}),
|
|
136
|
-
execute: async
|
|
137
|
-
return await getWeather(
|
|
135
|
+
execute: async input => {
|
|
136
|
+
return await getWeather(inputData.location);
|
|
138
137
|
},
|
|
139
138
|
});
|
|
140
139
|
|
|
@@ -203,181 +202,13 @@ function getWeatherCondition(code: number): string {
|
|
|
203
202
|
|
|
204
203
|
### mastra/workflows/index.ts
|
|
205
204
|
```typescript
|
|
206
|
-
import { openai } from '@ai-sdk/openai';
|
|
207
|
-
import { Agent } from '@mastra/core/agent';
|
|
208
|
-
import { Step, Workflow } from '@mastra/core/workflows';
|
|
209
|
-
import { z } from 'zod';
|
|
210
|
-
|
|
211
|
-
const agent = new Agent({
|
|
212
|
-
name: 'Weather Agent',
|
|
213
|
-
instructions: `
|
|
214
|
-
You are a local activities and travel expert who excels at weather-based planning. Analyze the weather data and provide practical activity recommendations.
|
|
215
|
-
For each day in the forecast, structure your response exactly as follows:
|
|
216
|
-
📅 [Day, Month Date, Year]
|
|
217
|
-
═══════════════════════════
|
|
218
|
-
🌡️ WEATHER SUMMARY
|
|
219
|
-
• Conditions: [brief description]
|
|
220
|
-
• Temperature: [X°C/Y°F to A°C/B°F]
|
|
221
|
-
• Precipitation: [X% chance]
|
|
222
|
-
🌅 MORNING ACTIVITIES
|
|
223
|
-
Outdoor:
|
|
224
|
-
• [Activity Name] - [Brief description including specific location/route]
|
|
225
|
-
Best timing: [specific time range]
|
|
226
|
-
Note: [relevant weather consideration]
|
|
227
|
-
🌞 AFTERNOON ACTIVITIES
|
|
228
|
-
Outdoor:
|
|
229
|
-
• [Activity Name] - [Brief description including specific location/route]
|
|
230
|
-
Best timing: [specific time range]
|
|
231
|
-
Note: [relevant weather consideration]
|
|
232
|
-
🏠 INDOOR ALTERNATIVES
|
|
233
|
-
• [Activity Name] - [Brief description including specific venue]
|
|
234
|
-
Ideal for: [weather condition that would trigger this alternative]
|
|
235
|
-
⚠️ SPECIAL CONSIDERATIONS
|
|
236
|
-
• [Any relevant weather warnings, UV index, wind conditions, etc.]
|
|
237
|
-
Guidelines:
|
|
238
|
-
- Suggest 2-3 time-specific outdoor activities per day
|
|
239
|
-
- Include 1-2 indoor backup options
|
|
240
|
-
- For precipitation >50%, lead with indoor activities
|
|
241
|
-
- All activities must be specific to the location
|
|
242
|
-
- Include specific venues, trails, or locations
|
|
243
|
-
- Consider activity intensity based on temperature
|
|
244
|
-
- Keep descriptions concise but informative
|
|
245
|
-
Maintain this exact formatting for consistency, using the emoji and section headers as shown.
|
|
246
|
-
`,
|
|
247
|
-
model: openai('gpt-4o'),
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
const fetchWeather = new Step({
|
|
251
|
-
id: 'fetch-weather',
|
|
252
|
-
description: 'Fetches weather forecast for a given city',
|
|
253
|
-
inputSchema: z.object({
|
|
254
|
-
city: z.string().describe('The city to get the weather for'),
|
|
255
|
-
}),
|
|
256
|
-
execute: async ({ context }) => {
|
|
257
|
-
const triggerData = context?.getStepResult<{ city: string }>('trigger');
|
|
258
|
-
|
|
259
|
-
if (!triggerData) {
|
|
260
|
-
throw new Error('Trigger data not found');
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
const geocodingUrl = `https://geocoding-api.open-meteo.com/v1/search?name=${encodeURIComponent(triggerData.city)}&count=1`;
|
|
264
|
-
const geocodingResponse = await fetch(geocodingUrl);
|
|
265
|
-
const geocodingData = await geocodingResponse.json();
|
|
266
|
-
|
|
267
|
-
if (!geocodingData.results?.[0]) {
|
|
268
|
-
throw new Error(`Location '${triggerData.city}' not found`);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
const { latitude, longitude, name } = geocodingData.results[0];
|
|
272
|
-
|
|
273
|
-
const weatherUrl = `https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_mean,weathercode&timezone=auto`;
|
|
274
|
-
const response = await fetch(weatherUrl);
|
|
275
|
-
const data = await response.json();
|
|
276
|
-
|
|
277
|
-
const forecast = data.daily.time.map((date: string, index: number) => ({
|
|
278
|
-
date,
|
|
279
|
-
maxTemp: data.daily.temperature_2m_max[index],
|
|
280
|
-
minTemp: data.daily.temperature_2m_min[index],
|
|
281
|
-
precipitationChance: data.daily.precipitation_probability_mean[index],
|
|
282
|
-
condition: getWeatherCondition(data.daily.weathercode[index]),
|
|
283
|
-
location: name,
|
|
284
|
-
}));
|
|
285
|
-
|
|
286
|
-
return forecast;
|
|
287
|
-
},
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
const forecastSchema = z.array(
|
|
291
|
-
z.object({
|
|
292
|
-
date: z.string(),
|
|
293
|
-
maxTemp: z.number(),
|
|
294
|
-
minTemp: z.number(),
|
|
295
|
-
precipitationChance: z.number(),
|
|
296
|
-
condition: z.string(),
|
|
297
|
-
location: z.string(),
|
|
298
|
-
}),
|
|
299
|
-
);
|
|
300
|
-
|
|
301
|
-
const planActivities = new Step({
|
|
302
|
-
id: 'plan-activities',
|
|
303
|
-
description: 'Suggests activities based on weather conditions',
|
|
304
|
-
inputSchema: forecastSchema,
|
|
305
|
-
execute: async ({ context, mastra }) => {
|
|
306
|
-
const forecast = context?.getStepResult<z.infer<typeof forecastSchema>>('fetch-weather');
|
|
307
|
-
|
|
308
|
-
if (!forecast) {
|
|
309
|
-
throw new Error('Forecast data not found');
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const prompt = `Based on the following weather forecast for ${forecast[0].location}, suggest appropriate activities:
|
|
313
|
-
${JSON.stringify(forecast, null, 2)}
|
|
314
|
-
`;
|
|
315
|
-
|
|
316
|
-
const response = await agent.stream([
|
|
317
|
-
{
|
|
318
|
-
role: 'user',
|
|
319
|
-
content: prompt,
|
|
320
|
-
},
|
|
321
|
-
]);
|
|
322
|
-
|
|
323
|
-
let activitiesText = '';
|
|
324
|
-
|
|
325
|
-
for await (const chunk of response.textStream) {
|
|
326
|
-
process.stdout.write(chunk);
|
|
327
|
-
activitiesText += chunk;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
return {
|
|
331
|
-
activities: activitiesText,
|
|
332
|
-
};
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
function getWeatherCondition(code: number): string {
|
|
337
|
-
const conditions: Record<number, string> = {
|
|
338
|
-
0: 'Clear sky',
|
|
339
|
-
1: 'Mainly clear',
|
|
340
|
-
2: 'Partly cloudy',
|
|
341
|
-
3: 'Overcast',
|
|
342
|
-
45: 'Foggy',
|
|
343
|
-
48: 'Depositing rime fog',
|
|
344
|
-
51: 'Light drizzle',
|
|
345
|
-
53: 'Moderate drizzle',
|
|
346
|
-
55: 'Dense drizzle',
|
|
347
|
-
61: 'Slight rain',
|
|
348
|
-
63: 'Moderate rain',
|
|
349
|
-
65: 'Heavy rain',
|
|
350
|
-
71: 'Slight snow fall',
|
|
351
|
-
73: 'Moderate snow fall',
|
|
352
|
-
75: 'Heavy snow fall',
|
|
353
|
-
95: 'Thunderstorm',
|
|
354
|
-
};
|
|
355
|
-
return conditions[code] || 'Unknown';
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
const weatherWorkflow = new Workflow({
|
|
359
|
-
name: 'weather-workflow',
|
|
360
|
-
triggerSchema: z.object({
|
|
361
|
-
city: z.string().describe('The city to get the weather for'),
|
|
362
|
-
}),
|
|
363
|
-
})
|
|
364
|
-
.step(fetchWeather)
|
|
365
|
-
.then(planActivities);
|
|
366
|
-
|
|
367
|
-
weatherWorkflow.commit();
|
|
368
|
-
|
|
369
|
-
export { weatherWorkflow };
|
|
370
|
-
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### mastra/workflows/new-workflow.ts
|
|
374
|
-
```typescript
|
|
375
205
|
import { Agent } from '@mastra/core/agent';
|
|
376
206
|
import { createStep, createWorkflow } from '@mastra/core/workflows';
|
|
377
207
|
import { z } from 'zod';
|
|
378
208
|
import { openai } from '@ai-sdk/openai';
|
|
379
209
|
|
|
380
210
|
const agent = new Agent({
|
|
211
|
+
id: 'weather-agent',
|
|
381
212
|
name: 'Weather Agent',
|
|
382
213
|
model: openai('gpt-4o'),
|
|
383
214
|
instructions: `
|
|
@@ -122,9 +122,9 @@ if (!process.env.FIREWORKS_API_KEY) {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
export const agent = new Agent({
|
|
125
|
+
id: 'example-agent',
|
|
126
|
+
name: 'Example Agent',
|
|
125
127
|
model: fireworks(`accounts/fireworks/models/deepseek-r1`),
|
|
126
|
-
|
|
127
|
-
name: 'Example agent',
|
|
128
128
|
instructions: `You are a helpful and intelligent AI agent.`,
|
|
129
129
|
memory: new Memory(),
|
|
130
130
|
});
|
|
@@ -3,19 +3,19 @@
|
|
|
3
3
|
{
|
|
4
4
|
"name": "example-headsup",
|
|
5
5
|
"engines": {
|
|
6
|
-
"node": ">=
|
|
6
|
+
"node": ">=22.13.0"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@ai-sdk/openai": "^1.3.23",
|
|
10
|
-
"@mastra/core": "^0.
|
|
11
|
-
"@mastra/libsql": "^0.
|
|
12
|
-
"@mastra/loggers": "^0.10.
|
|
13
|
-
"@mastra/memory": "^0.15.
|
|
10
|
+
"@mastra/core": "^0.23.1",
|
|
11
|
+
"@mastra/libsql": "^0.16.1",
|
|
12
|
+
"@mastra/loggers": "^0.10.18",
|
|
13
|
+
"@mastra/memory": "^0.15.9",
|
|
14
14
|
"zod": "^3.25.76"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@types/node": "^24.3.0",
|
|
18
|
-
"mastra": "^0.17.
|
|
18
|
+
"mastra": "^0.17.5",
|
|
19
19
|
"typescript": "^5.9.2"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -29,6 +29,7 @@ import { Memory } from '@mastra/memory';
|
|
|
29
29
|
import { LibSQLVector } from '@mastra/libsql';
|
|
30
30
|
|
|
31
31
|
export const famousPersonAgent = new Agent({
|
|
32
|
+
id: 'famous-person-generator',
|
|
32
33
|
name: 'Famous Person Generator',
|
|
33
34
|
instructions: `You are a famous person generator for a "Heads Up" guessing game.
|
|
34
35
|
|
|
@@ -67,6 +68,7 @@ import { openai } from '@ai-sdk/openai';
|
|
|
67
68
|
import { Agent } from '@mastra/core/agent';
|
|
68
69
|
|
|
69
70
|
export const gameAgent = new Agent({
|
|
71
|
+
id: 'game-agent',
|
|
70
72
|
name: 'Game Agent',
|
|
71
73
|
instructions: `You are a helpful game assistant for a "Heads Up" guessing game.
|
|
72
74
|
|
|
@@ -111,7 +113,8 @@ export const mastra = new Mastra({
|
|
|
111
113
|
workflows: { headsUpWorkflow },
|
|
112
114
|
agents: { famousPersonAgent, gameAgent, guessVerifierAgent },
|
|
113
115
|
storage: new LibSQLStore({
|
|
114
|
-
|
|
116
|
+
id: 'heads-up-game-storage',
|
|
117
|
+
// stores observability, evals, ... into file storage for persistence across playground refreshes
|
|
115
118
|
url: 'file:../mastra.db',
|
|
116
119
|
}),
|
|
117
120
|
logger: new PinoLogger({
|
|
@@ -34,6 +34,7 @@ import './mastra/tools/sse';
|
|
|
34
34
|
|
|
35
35
|
console.log(chalk.blue(`Creating agent`));
|
|
36
36
|
export const stockWeatherAgent = new Agent({
|
|
37
|
+
id: 'stock-weather-agent',
|
|
37
38
|
name: 'Stock + Weather Agent',
|
|
38
39
|
instructions:
|
|
39
40
|
'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price. You also love to check the weather when your stock market buddies ask you what the weather is.',
|
|
@@ -56,7 +57,7 @@ const mcp = new MCPClient({
|
|
|
56
57
|
},
|
|
57
58
|
});
|
|
58
59
|
|
|
59
|
-
const toolsets = await mcp.
|
|
60
|
+
const toolsets = await mcp.listToolsets();
|
|
60
61
|
|
|
61
62
|
console.log({ toolsets });
|
|
62
63
|
|
|
@@ -110,18 +111,19 @@ const mcp = new MCPClient({
|
|
|
110
111
|
});
|
|
111
112
|
|
|
112
113
|
export const stockWeatherAgent = new Agent({
|
|
114
|
+
id: 'stock-weather-agent',
|
|
113
115
|
name: 'Stock + Weather Agent',
|
|
114
116
|
instructions:
|
|
115
117
|
'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price. You also love to check the weather when your stock market buddies ask you what the weather is.',
|
|
116
118
|
model: openai('gpt-4o'),
|
|
117
|
-
tools: await mcp.
|
|
119
|
+
tools: await mcp.listTools(),
|
|
118
120
|
});
|
|
119
121
|
|
|
120
122
|
```
|
|
121
123
|
|
|
122
124
|
### mastra/index.ts
|
|
123
125
|
```typescript
|
|
124
|
-
import { Mastra } from '@mastra/core';
|
|
126
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
125
127
|
|
|
126
128
|
import { stockWeatherAgent } from './agents';
|
|
127
129
|
|
|
@@ -28,17 +28,18 @@ const mcp = new MCPClient({
|
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
export const mcpRegistryAgent = new Agent({
|
|
31
|
+
id: 'mcp-registry-agent',
|
|
31
32
|
name: 'MCP Registry Agent',
|
|
32
33
|
instructions: `You are a helpful assistant that provides information about MCP registries. You can search for registries by ID, tag, or name.`,
|
|
33
34
|
model: openai('gpt-4o'),
|
|
34
|
-
tools: await mcp.
|
|
35
|
+
tools: await mcp.listTools(),
|
|
35
36
|
});
|
|
36
37
|
|
|
37
38
|
```
|
|
38
39
|
|
|
39
40
|
### mastra/index.ts
|
|
40
41
|
```typescript
|
|
41
|
-
import { Mastra } from '@mastra/core';
|
|
42
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
42
43
|
import { PinoLogger } from '@mastra/loggers';
|
|
43
44
|
import { mcpRegistryAgent } from './agents/index';
|
|
44
45
|
|
|
@@ -166,6 +166,7 @@ import { LibSQLStore } from '@mastra/libsql';
|
|
|
166
166
|
|
|
167
167
|
// Create LibSQL storage for persistent per-resource working memory
|
|
168
168
|
const storage = new LibSQLStore({
|
|
169
|
+
id: 'memory-demo-storage',
|
|
169
170
|
url: 'file:./memory-demo.db',
|
|
170
171
|
});
|
|
171
172
|
|
|
@@ -175,7 +176,7 @@ export const memory = new Memory({
|
|
|
175
176
|
lastMessages: 5,
|
|
176
177
|
workingMemory: {
|
|
177
178
|
enabled: true,
|
|
178
|
-
scope: 'resource', //
|
|
179
|
+
scope: 'resource', // Default: Per-resource working memory persists across all threads
|
|
179
180
|
template: `# User Profile
|
|
180
181
|
- **Name**:
|
|
181
182
|
- **Location**:
|
|
@@ -189,6 +190,7 @@ export const memory = new Memory({
|
|
|
189
190
|
});
|
|
190
191
|
|
|
191
192
|
export const assistantAgent = new Agent({
|
|
193
|
+
id: 'personal-assistant',
|
|
192
194
|
name: 'Personal Assistant',
|
|
193
195
|
instructions: `You are a helpful personal assistant with persistent memory across ALL conversations.
|
|
194
196
|
|
|
@@ -212,7 +214,7 @@ When you first meet someone, ask for their name and learn about them. In subsequ
|
|
|
212
214
|
|
|
213
215
|
### mastra/index.ts
|
|
214
216
|
```typescript
|
|
215
|
-
import { Mastra } from '@mastra/core';
|
|
217
|
+
import { Mastra } from '@mastra/core/mastra';
|
|
216
218
|
import { assistantAgent } from './agents';
|
|
217
219
|
|
|
218
220
|
export const mastra = new Mastra({
|
|
@@ -128,6 +128,7 @@ const memory = new Memory({
|
|
|
128
128
|
});
|
|
129
129
|
|
|
130
130
|
export const todoAgent = new Agent({
|
|
131
|
+
id: 'todo-agent',
|
|
131
132
|
name: 'TODO Agent',
|
|
132
133
|
instructions:
|
|
133
134
|
'You are a helpful todolist AI agent. Help the user manage their todolist. If there is no list yet ask them what to add! If there is a list always print it out when the chat starts. For each item add emojis, dates, titles (with an index number starting at 1), descriptions, and statuses. For each piece of info add an emoji to the left of it. Also support subtask lists with bullet points inside a box. Help the user timebox each task by asking them how long it will take. You MUST save the todolist in every response message by printing out <working_memory> blocks. If you do not save it in working_memory you will forget - you only have access to one previous message at any time. The user is expecting you to save your memory in every interaction. If the user expresses any preference on how the list should be displayed, save that info in working_memory so you know how to format it later.',
|