@mastra/mcp-docs-server 0.0.0-commonjs-20250414101718

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.
Files changed (254) hide show
  1. package/.docs/organized/changelogs/%40mastra%2Fastra.md +302 -0
  2. package/.docs/organized/changelogs/%40mastra%2Fchroma.md +302 -0
  3. package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +161 -0
  4. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +302 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +110 -0
  6. package/.docs/organized/changelogs/%40mastra%2Fcore.md +302 -0
  7. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +302 -0
  8. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +302 -0
  9. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +302 -0
  10. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +302 -0
  11. package/.docs/organized/changelogs/%40mastra%2Fevals.md +302 -0
  12. package/.docs/organized/changelogs/%40mastra%2Ffirecrawl.md +302 -0
  13. package/.docs/organized/changelogs/%40mastra%2Fgithub.md +302 -0
  14. package/.docs/organized/changelogs/%40mastra%2Floggers.md +302 -0
  15. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +302 -0
  16. package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +26 -0
  17. package/.docs/organized/changelogs/%40mastra%2Fmcp.md +302 -0
  18. package/.docs/organized/changelogs/%40mastra%2Fmem0.md +196 -0
  19. package/.docs/organized/changelogs/%40mastra%2Fmemory.md +302 -0
  20. package/.docs/organized/changelogs/%40mastra%2Fpg.md +302 -0
  21. package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +302 -0
  22. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +302 -0
  23. package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +302 -0
  24. package/.docs/organized/changelogs/%40mastra%2Frag.md +302 -0
  25. package/.docs/organized/changelogs/%40mastra%2Fragie.md +302 -0
  26. package/.docs/organized/changelogs/%40mastra%2Fserver.md +302 -0
  27. package/.docs/organized/changelogs/%40mastra%2Fspeech-azure.md +302 -0
  28. package/.docs/organized/changelogs/%40mastra%2Fspeech-deepgram.md +302 -0
  29. package/.docs/organized/changelogs/%40mastra%2Fspeech-elevenlabs.md +302 -0
  30. package/.docs/organized/changelogs/%40mastra%2Fspeech-google.md +302 -0
  31. package/.docs/organized/changelogs/%40mastra%2Fspeech-ibm.md +302 -0
  32. package/.docs/organized/changelogs/%40mastra%2Fspeech-murf.md +302 -0
  33. package/.docs/organized/changelogs/%40mastra%2Fspeech-openai.md +302 -0
  34. package/.docs/organized/changelogs/%40mastra%2Fspeech-playai.md +302 -0
  35. package/.docs/organized/changelogs/%40mastra%2Fspeech-replicate.md +302 -0
  36. package/.docs/organized/changelogs/%40mastra%2Fspeech-speechify.md +302 -0
  37. package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +302 -0
  38. package/.docs/organized/changelogs/%40mastra%2Fupstash.md +302 -0
  39. package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +302 -0
  40. package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +250 -0
  41. package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +250 -0
  42. package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +302 -0
  43. package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +302 -0
  44. package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +302 -0
  45. package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +302 -0
  46. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +302 -0
  47. package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +302 -0
  48. package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +302 -0
  49. package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +302 -0
  50. package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +302 -0
  51. package/.docs/organized/changelogs/create-mastra.md +302 -0
  52. package/.docs/organized/changelogs/mastra.md +302 -0
  53. package/.docs/organized/code-examples/agent-network.md +282 -0
  54. package/.docs/organized/code-examples/agent.md +388 -0
  55. package/.docs/organized/code-examples/ai-sdk-useChat.md +378 -0
  56. package/.docs/organized/code-examples/assistant-ui.md +37 -0
  57. package/.docs/organized/code-examples/bird-checker-with-express.md +235 -0
  58. package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +360 -0
  59. package/.docs/organized/code-examples/bird-checker-with-nextjs.md +250 -0
  60. package/.docs/organized/code-examples/client-side-tools.md +69 -0
  61. package/.docs/organized/code-examples/crypto-chatbot.md +96 -0
  62. package/.docs/organized/code-examples/fireworks-r1.md +159 -0
  63. package/.docs/organized/code-examples/mcp-registry-registry.md +63 -0
  64. package/.docs/organized/code-examples/memory-todo-agent.md +164 -0
  65. package/.docs/organized/code-examples/memory-with-context.md +167 -0
  66. package/.docs/organized/code-examples/memory-with-libsql.md +204 -0
  67. package/.docs/organized/code-examples/memory-with-mem0.md +121 -0
  68. package/.docs/organized/code-examples/memory-with-pg.md +224 -0
  69. package/.docs/organized/code-examples/memory-with-upstash.md +268 -0
  70. package/.docs/organized/code-examples/quick-start.md +129 -0
  71. package/.docs/organized/code-examples/stock-price-tool.md +124 -0
  72. package/.docs/organized/code-examples/weather-agent.md +353 -0
  73. package/.docs/organized/code-examples/workflow-ai-recruiter.md +159 -0
  74. package/.docs/organized/code-examples/workflow-with-inline-steps.md +111 -0
  75. package/.docs/organized/code-examples/workflow-with-memory.md +393 -0
  76. package/.docs/organized/code-examples/workflow-with-separate-steps.md +131 -0
  77. package/.docs/raw/agents/adding-tools.mdx +317 -0
  78. package/.docs/raw/agents/adding-voice.mdx +175 -0
  79. package/.docs/raw/agents/agent-memory.mdx +62 -0
  80. package/.docs/raw/agents/mcp-guide.mdx +215 -0
  81. package/.docs/raw/agents/overview.mdx +303 -0
  82. package/.docs/raw/community/discord.mdx +12 -0
  83. package/.docs/raw/community/licensing.mdx +63 -0
  84. package/.docs/raw/deployment/client.mdx +120 -0
  85. package/.docs/raw/deployment/deployment.mdx +127 -0
  86. package/.docs/raw/deployment/server.mdx +282 -0
  87. package/.docs/raw/evals/custom-eval.mdx +22 -0
  88. package/.docs/raw/evals/overview.mdx +95 -0
  89. package/.docs/raw/evals/running-in-ci.mdx +81 -0
  90. package/.docs/raw/evals/textual-evals.mdx +54 -0
  91. package/.docs/raw/faq/index.mdx +63 -0
  92. package/.docs/raw/frameworks/ai-sdk.mdx +296 -0
  93. package/.docs/raw/frameworks/next-js.mdx +238 -0
  94. package/.docs/raw/getting-started/installation.mdx +442 -0
  95. package/.docs/raw/getting-started/mcp-docs-server.mdx +141 -0
  96. package/.docs/raw/getting-started/project-structure.mdx +80 -0
  97. package/.docs/raw/index.mdx +22 -0
  98. package/.docs/raw/integrations/index.mdx +213 -0
  99. package/.docs/raw/local-dev/add-to-existing-project.mdx +48 -0
  100. package/.docs/raw/local-dev/creating-a-new-project.mdx +54 -0
  101. package/.docs/raw/local-dev/mastra-dev.mdx +108 -0
  102. package/.docs/raw/memory/memory-processors.mdx +131 -0
  103. package/.docs/raw/memory/overview.mdx +119 -0
  104. package/.docs/raw/memory/semantic-recall.mdx +122 -0
  105. package/.docs/raw/memory/working-memory.mdx +87 -0
  106. package/.docs/raw/observability/logging.mdx +38 -0
  107. package/.docs/raw/observability/nextjs-tracing.mdx +108 -0
  108. package/.docs/raw/observability/tracing.mdx +115 -0
  109. package/.docs/raw/rag/chunking-and-embedding.mdx +156 -0
  110. package/.docs/raw/rag/overview.mdx +85 -0
  111. package/.docs/raw/rag/retrieval.mdx +365 -0
  112. package/.docs/raw/rag/vector-databases.mdx +340 -0
  113. package/.docs/raw/reference/agents/createTool.mdx +229 -0
  114. package/.docs/raw/reference/agents/generate.mdx +334 -0
  115. package/.docs/raw/reference/agents/getAgent.mdx +54 -0
  116. package/.docs/raw/reference/agents/stream.mdx +369 -0
  117. package/.docs/raw/reference/cli/build.mdx +55 -0
  118. package/.docs/raw/reference/cli/dev.mdx +134 -0
  119. package/.docs/raw/reference/cli/init.mdx +43 -0
  120. package/.docs/raw/reference/client-js/agents.mdx +107 -0
  121. package/.docs/raw/reference/client-js/error-handling.mdx +38 -0
  122. package/.docs/raw/reference/client-js/logs.mdx +24 -0
  123. package/.docs/raw/reference/client-js/memory.mdx +97 -0
  124. package/.docs/raw/reference/client-js/telemetry.mdx +20 -0
  125. package/.docs/raw/reference/client-js/tools.mdx +44 -0
  126. package/.docs/raw/reference/client-js/vectors.mdx +79 -0
  127. package/.docs/raw/reference/client-js/workflows.mdx +136 -0
  128. package/.docs/raw/reference/core/mastra-class.mdx +232 -0
  129. package/.docs/raw/reference/deployer/cloudflare.mdx +207 -0
  130. package/.docs/raw/reference/deployer/deployer.mdx +159 -0
  131. package/.docs/raw/reference/deployer/netlify.mdx +109 -0
  132. package/.docs/raw/reference/deployer/vercel.mdx +117 -0
  133. package/.docs/raw/reference/evals/answer-relevancy.mdx +186 -0
  134. package/.docs/raw/reference/evals/bias.mdx +186 -0
  135. package/.docs/raw/reference/evals/completeness.mdx +174 -0
  136. package/.docs/raw/reference/evals/content-similarity.mdx +183 -0
  137. package/.docs/raw/reference/evals/context-position.mdx +190 -0
  138. package/.docs/raw/reference/evals/context-precision.mdx +189 -0
  139. package/.docs/raw/reference/evals/context-relevancy.mdx +188 -0
  140. package/.docs/raw/reference/evals/contextual-recall.mdx +191 -0
  141. package/.docs/raw/reference/evals/faithfulness.mdx +193 -0
  142. package/.docs/raw/reference/evals/hallucination.mdx +219 -0
  143. package/.docs/raw/reference/evals/keyword-coverage.mdx +176 -0
  144. package/.docs/raw/reference/evals/prompt-alignment.mdx +238 -0
  145. package/.docs/raw/reference/evals/summarization.mdx +205 -0
  146. package/.docs/raw/reference/evals/textual-difference.mdx +161 -0
  147. package/.docs/raw/reference/evals/tone-consistency.mdx +181 -0
  148. package/.docs/raw/reference/evals/toxicity.mdx +165 -0
  149. package/.docs/raw/reference/index.mdx +12 -0
  150. package/.docs/raw/reference/memory/Memory.mdx +212 -0
  151. package/.docs/raw/reference/memory/createThread.mdx +95 -0
  152. package/.docs/raw/reference/memory/getThreadById.mdx +46 -0
  153. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +48 -0
  154. package/.docs/raw/reference/memory/query.mdx +167 -0
  155. package/.docs/raw/reference/networks/agent-network.mdx +159 -0
  156. package/.docs/raw/reference/observability/create-logger.mdx +106 -0
  157. package/.docs/raw/reference/observability/logger.mdx +55 -0
  158. package/.docs/raw/reference/observability/otel-config.mdx +120 -0
  159. package/.docs/raw/reference/observability/providers/braintrust.mdx +40 -0
  160. package/.docs/raw/reference/observability/providers/dash0.mdx +40 -0
  161. package/.docs/raw/reference/observability/providers/index.mdx +16 -0
  162. package/.docs/raw/reference/observability/providers/laminar.mdx +41 -0
  163. package/.docs/raw/reference/observability/providers/langfuse.mdx +51 -0
  164. package/.docs/raw/reference/observability/providers/langsmith.mdx +48 -0
  165. package/.docs/raw/reference/observability/providers/langwatch.mdx +45 -0
  166. package/.docs/raw/reference/observability/providers/new-relic.mdx +40 -0
  167. package/.docs/raw/reference/observability/providers/signoz.mdx +40 -0
  168. package/.docs/raw/reference/observability/providers/traceloop.mdx +40 -0
  169. package/.docs/raw/reference/rag/astra.mdx +258 -0
  170. package/.docs/raw/reference/rag/chroma.mdx +281 -0
  171. package/.docs/raw/reference/rag/chunk.mdx +235 -0
  172. package/.docs/raw/reference/rag/document.mdx +127 -0
  173. package/.docs/raw/reference/rag/embeddings.mdx +160 -0
  174. package/.docs/raw/reference/rag/extract-params.mdx +226 -0
  175. package/.docs/raw/reference/rag/graph-rag.mdx +182 -0
  176. package/.docs/raw/reference/rag/libsql.mdx +357 -0
  177. package/.docs/raw/reference/rag/metadata-filters.mdx +298 -0
  178. package/.docs/raw/reference/rag/pg.mdx +477 -0
  179. package/.docs/raw/reference/rag/pinecone.mdx +281 -0
  180. package/.docs/raw/reference/rag/qdrant.mdx +236 -0
  181. package/.docs/raw/reference/rag/rerank.mdx +212 -0
  182. package/.docs/raw/reference/rag/turbopuffer.mdx +249 -0
  183. package/.docs/raw/reference/rag/upstash.mdx +247 -0
  184. package/.docs/raw/reference/rag/vectorize.mdx +298 -0
  185. package/.docs/raw/reference/storage/libsql.mdx +74 -0
  186. package/.docs/raw/reference/storage/postgresql.mdx +48 -0
  187. package/.docs/raw/reference/storage/upstash.mdx +86 -0
  188. package/.docs/raw/reference/tools/client.mdx +207 -0
  189. package/.docs/raw/reference/tools/document-chunker-tool.mdx +141 -0
  190. package/.docs/raw/reference/tools/graph-rag-tool.mdx +154 -0
  191. package/.docs/raw/reference/tools/mcp-configuration.mdx +206 -0
  192. package/.docs/raw/reference/tools/vector-query-tool.mdx +212 -0
  193. package/.docs/raw/reference/voice/composite-voice.mdx +140 -0
  194. package/.docs/raw/reference/voice/deepgram.mdx +164 -0
  195. package/.docs/raw/reference/voice/elevenlabs.mdx +216 -0
  196. package/.docs/raw/reference/voice/google.mdx +198 -0
  197. package/.docs/raw/reference/voice/mastra-voice.mdx +394 -0
  198. package/.docs/raw/reference/voice/murf.mdx +251 -0
  199. package/.docs/raw/reference/voice/openai-realtime.mdx +431 -0
  200. package/.docs/raw/reference/voice/openai.mdx +168 -0
  201. package/.docs/raw/reference/voice/playai.mdx +159 -0
  202. package/.docs/raw/reference/voice/sarvam.mdx +260 -0
  203. package/.docs/raw/reference/voice/speechify.mdx +145 -0
  204. package/.docs/raw/reference/voice/voice.answer.mdx +122 -0
  205. package/.docs/raw/reference/voice/voice.connect.mdx +124 -0
  206. package/.docs/raw/reference/voice/voice.listen.mdx +195 -0
  207. package/.docs/raw/reference/voice/voice.on.mdx +189 -0
  208. package/.docs/raw/reference/voice/voice.send.mdx +118 -0
  209. package/.docs/raw/reference/voice/voice.speak.mdx +203 -0
  210. package/.docs/raw/reference/workflows/after.mdx +88 -0
  211. package/.docs/raw/reference/workflows/afterEvent.mdx +76 -0
  212. package/.docs/raw/reference/workflows/commit.mdx +37 -0
  213. package/.docs/raw/reference/workflows/createRun.mdx +77 -0
  214. package/.docs/raw/reference/workflows/else.mdx +72 -0
  215. package/.docs/raw/reference/workflows/events.mdx +305 -0
  216. package/.docs/raw/reference/workflows/execute.mdx +110 -0
  217. package/.docs/raw/reference/workflows/if.mdx +107 -0
  218. package/.docs/raw/reference/workflows/resume.mdx +155 -0
  219. package/.docs/raw/reference/workflows/resumeWithEvent.mdx +133 -0
  220. package/.docs/raw/reference/workflows/snapshots.mdx +207 -0
  221. package/.docs/raw/reference/workflows/start.mdx +84 -0
  222. package/.docs/raw/reference/workflows/step-class.mdx +100 -0
  223. package/.docs/raw/reference/workflows/step-condition.mdx +134 -0
  224. package/.docs/raw/reference/workflows/step-function.mdx +92 -0
  225. package/.docs/raw/reference/workflows/step-options.mdx +69 -0
  226. package/.docs/raw/reference/workflows/step-retries.mdx +203 -0
  227. package/.docs/raw/reference/workflows/suspend.mdx +70 -0
  228. package/.docs/raw/reference/workflows/then.mdx +74 -0
  229. package/.docs/raw/reference/workflows/until.mdx +165 -0
  230. package/.docs/raw/reference/workflows/watch.mdx +118 -0
  231. package/.docs/raw/reference/workflows/while.mdx +168 -0
  232. package/.docs/raw/reference/workflows/workflow.mdx +233 -0
  233. package/.docs/raw/storage/overview.mdx +378 -0
  234. package/.docs/raw/voice/overview.mdx +135 -0
  235. package/.docs/raw/voice/speech-to-text.mdx +45 -0
  236. package/.docs/raw/voice/text-to-speech.mdx +52 -0
  237. package/.docs/raw/voice/voice-to-voice.mdx +310 -0
  238. package/.docs/raw/workflows/control-flow.mdx +778 -0
  239. package/.docs/raw/workflows/dynamic-workflows.mdx +236 -0
  240. package/.docs/raw/workflows/error-handling.mdx +183 -0
  241. package/.docs/raw/workflows/nested-workflows.mdx +352 -0
  242. package/.docs/raw/workflows/overview.mdx +203 -0
  243. package/.docs/raw/workflows/steps.mdx +108 -0
  244. package/.docs/raw/workflows/suspend-and-resume.mdx +404 -0
  245. package/.docs/raw/workflows/variables.mdx +313 -0
  246. package/LICENSE.md +46 -0
  247. package/README.md +129 -0
  248. package/dist/_tsup-dts-rollup.d.ts +149 -0
  249. package/dist/chunk-QWYMT5LP.js +194 -0
  250. package/dist/prepare-docs/prepare.d.ts +1 -0
  251. package/dist/prepare-docs/prepare.js +1 -0
  252. package/dist/stdio.d.ts +1 -0
  253. package/dist/stdio.js +518 -0
  254. package/package.json +60 -0
@@ -0,0 +1,204 @@
1
+ ### package.json
2
+ ```json
3
+ {
4
+ "name": "memory-with-libsql",
5
+ "type": "module",
6
+ "description": "",
7
+ "private": true,
8
+ "main": "index.js",
9
+ "scripts": {
10
+ "start": "bun run --watch src/index.ts",
11
+ "chat": "bun run --watch src/chat.ts"
12
+ },
13
+ "keywords": [],
14
+ "author": "",
15
+ "license": "MIT",
16
+ "dependencies": {
17
+ "@ai-sdk/openai": "^1.2.1",
18
+ "@mastra/core": "workspace:*",
19
+ "@mastra/memory": "workspace:*"
20
+ },
21
+ "version": "0.0.1"
22
+ }
23
+
24
+ ```
25
+
26
+ ### chat.ts
27
+ ```typescript
28
+ import { randomUUID } from 'crypto';
29
+ import Readline from 'readline';
30
+
31
+ import 'dotenv/config';
32
+
33
+ import { mastra } from './mastra';
34
+
35
+ const agent = mastra.getAgent('memoryAgent');
36
+
37
+ let threadId = randomUUID();
38
+ // use this to play with a long running conversation. comment it out to get a new thread id every time
39
+ threadId = `f45a59b3-d9da-4a2a-8348-9386e4e621a3`;
40
+ console.log(threadId);
41
+
42
+ const resourceId = 'SOME_USER_ID';
43
+
44
+ async function logRes(res: Awaited<ReturnType<typeof agent.stream>>) {
45
+ console.log(`\n🤖 Agent:`);
46
+ for await (const chunk of res.textStream) {
47
+ process.stdout.write(chunk);
48
+ }
49
+ console.log(`\n\n`);
50
+ }
51
+
52
+ async function main() {
53
+ await logRes(
54
+ await agent.stream(
55
+ [
56
+ {
57
+ role: 'system',
58
+ content: `Chat with user started now ${new Date().toISOString()}. Don't mention this message. This means some time may have passed between this message and the one before. The user left and came back again. Say something to start the conversation up again. If there are no other messages besides this one then this is a new conversation.`,
59
+ },
60
+ ],
61
+ { resourceId, threadId },
62
+ ),
63
+ );
64
+
65
+ const rl = Readline.createInterface({
66
+ input: process.stdin,
67
+ output: process.stdout,
68
+ });
69
+
70
+ while (true) {
71
+ const prompt: string = await new Promise(res => {
72
+ rl.question('Message: ', answer => {
73
+ res(answer);
74
+ });
75
+ });
76
+
77
+ await logRes(
78
+ await agent.stream(prompt, {
79
+ threadId,
80
+ resourceId,
81
+ }),
82
+ );
83
+ }
84
+ }
85
+
86
+ main();
87
+
88
+ ```
89
+
90
+ ### index.ts
91
+ ```typescript
92
+ import { randomUUID } from 'crypto';
93
+
94
+ import { mastra } from './mastra';
95
+
96
+ function log(message: string) {
97
+ console.log(`\n>>Prompt: ${message}
98
+ `);
99
+ return message;
100
+ }
101
+
102
+ const agent = mastra.getAgent('chefAgent');
103
+ const threadId = randomUUID();
104
+ const resourceId = 'SOME_USER_ID';
105
+
106
+ async function logRes(res: Awaited<ReturnType<typeof agent.stream>>) {
107
+ console.log(`\n👨‍🍳 Chef:`);
108
+ for await (const chunk of res.textStream) {
109
+ process.stdout.write(chunk);
110
+ }
111
+ console.log(`\n\n`);
112
+ }
113
+
114
+ async function main() {
115
+ await logRes(
116
+ await agent.stream(
117
+ log(
118
+ 'In my kitchen I have: pasta, canned tomatoes, garlic, olive oil, and some dried herbs (basil and oregano). What can I make? Please keep your answer brief, only give me the high level steps.',
119
+ ),
120
+ {
121
+ threadId,
122
+ resourceId,
123
+ },
124
+ ),
125
+ );
126
+
127
+ await logRes(
128
+ await agent.stream(
129
+ log(
130
+ "Now I'm over at my friend's house, and they have: chicken thighs, coconut milk, sweet potatoes, and some curry powder.",
131
+ ),
132
+ {
133
+ threadId,
134
+ resourceId,
135
+ },
136
+ ),
137
+ );
138
+
139
+ await logRes(
140
+ await agent.stream(log('What did we cook before I went to my friends house?'), {
141
+ threadId,
142
+ resourceId,
143
+ memoryOptions: {
144
+ lastMessages: false,
145
+ semanticRecall: {
146
+ topK: 3,
147
+ messageRange: 3,
148
+ },
149
+ },
150
+ }),
151
+ );
152
+
153
+ process.exit(0);
154
+ }
155
+
156
+ main();
157
+
158
+ ```
159
+
160
+ ### mastra/agents/index.ts
161
+ ```typescript
162
+ import { openai } from '@ai-sdk/openai';
163
+ import { Agent } from '@mastra/core/agent';
164
+ import { Memory } from '@mastra/memory';
165
+
166
+ const memory = new Memory({
167
+ options: {
168
+ lastMessages: 100,
169
+ semanticRecall: {
170
+ topK: 2,
171
+ messageRange: 2,
172
+ },
173
+ },
174
+ });
175
+
176
+ export const chefAgent = new Agent({
177
+ name: 'chefAgent',
178
+ instructions:
179
+ 'You are Michel, a practical and experienced home chef who helps people cook great meals with whatever ingredients they have available. Your first priority is understanding what ingredients and equipment the user has access to, then suggesting achievable recipes. You explain cooking steps clearly and offer substitutions when needed, maintaining a friendly and encouraging tone throughout.',
180
+ model: openai('gpt-4o'),
181
+ memory,
182
+ });
183
+
184
+ export const memoryAgent = new Agent({
185
+ name: 'Memory Agent',
186
+ instructions:
187
+ "You are an AI agent with the ability to automatically recall memories from previous interactions. You may have conversations that last hours, days, months, or years. If you don't know it already you should ask for the users name and some info about them.",
188
+ model: openai('gpt-4o'),
189
+ memory,
190
+ });
191
+
192
+ ```
193
+
194
+ ### mastra/index.ts
195
+ ```typescript
196
+ import { Mastra } from '@mastra/core';
197
+
198
+ import { chefAgent, memoryAgent } from './agents';
199
+
200
+ export const mastra = new Mastra({
201
+ agents: { chefAgent, memoryAgent },
202
+ });
203
+
204
+ ```
@@ -0,0 +1,121 @@
1
+ ### package.json
2
+ ```json
3
+ {
4
+ "name": "memory-with-mem0",
5
+ "version": "1.0.0",
6
+ "main": "index.js",
7
+ "private": true,
8
+ "scripts": {
9
+ "test": "echo \"Error: no test specified\" && exit 1",
10
+ "dev": "mastra dev"
11
+ },
12
+ "keywords": [],
13
+ "author": "",
14
+ "license": "MIT",
15
+ "description": "",
16
+ "type": "module",
17
+ "dependencies": {
18
+ "@ai-sdk/openai": "latest",
19
+ "@mastra/core": "workspace:*",
20
+ "@mastra/mem0": "workspace:*",
21
+ "zod": "^3.24.2"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^22.13.9",
25
+ "tsx": "^4.19.3",
26
+ "typescript": "^5.8.2"
27
+ }
28
+ }
29
+
30
+ ```
31
+
32
+ ### mastra/agents/index.ts
33
+ ```typescript
34
+ import { openai } from '@ai-sdk/openai';
35
+ import { Agent } from '@mastra/core/agent';
36
+ import { mem0MemorizeTool, mem0RememberTool } from '../tools';
37
+
38
+ export const mem0Agent = new Agent({
39
+ name: 'Mem0 Agent',
40
+ instructions: `
41
+ You are a helpful assistant that has the ability to memorize and remember facts using Mem0.
42
+ `,
43
+ model: openai('gpt-4o'),
44
+ tools: { mem0RememberTool, mem0MemorizeTool },
45
+ });
46
+
47
+ ```
48
+
49
+ ### mastra/index.ts
50
+ ```typescript
51
+ import { Mastra } from '@mastra/core/mastra';
52
+ import { createLogger } from '@mastra/core/logger';
53
+
54
+ import { mem0Agent } from './agents';
55
+
56
+ export const mastra = new Mastra({
57
+ agents: { mem0Agent },
58
+ logger: createLogger({
59
+ name: 'Mastra',
60
+ level: 'error',
61
+ }),
62
+ });
63
+
64
+ ```
65
+
66
+ ### mastra/integrations/index.ts
67
+ ```typescript
68
+ import { Mem0Integration } from '@mastra/mem0';
69
+
70
+ export const mem0 = new Mem0Integration({
71
+ config: {
72
+ apiKey: process.env.MEM0_API_KEY || '',
73
+ user_id: 'alice',
74
+ },
75
+ });
76
+
77
+ ```
78
+
79
+ ### mastra/tools/index.ts
80
+ ```typescript
81
+ import { createTool } from '@mastra/core/tools';
82
+ import { z } from 'zod';
83
+ import { mem0 } from '../integrations';
84
+
85
+ export const mem0RememberTool = createTool({
86
+ id: 'Mem0-remember',
87
+ description: "Remember your agent memories that you've previously saved using the Mem0-memorize tool.",
88
+ inputSchema: z.object({
89
+ question: z.string().describe('Question used to look up the answer in saved memories.'),
90
+ }),
91
+ outputSchema: z.object({
92
+ answer: z.string().describe('Remembered answer'),
93
+ }),
94
+ execute: async ({ context }) => {
95
+ console.log(`Searching memory "${context.question}"`);
96
+ const memory = await mem0.searchMemory(context.question);
97
+ console.log(`\nFound memory "${memory}"\n`);
98
+
99
+ return {
100
+ answer: memory,
101
+ };
102
+ },
103
+ });
104
+
105
+ export const mem0MemorizeTool = createTool({
106
+ id: 'Mem0-memorize',
107
+ description: 'Save information to mem0 so you can remember it later using the Mem0-remember tool.',
108
+ inputSchema: z.object({
109
+ statement: z.string().describe('A statement to save into memory'),
110
+ }),
111
+ execute: async ({ context }) => {
112
+ console.log(`\nCreating memory "${context.statement}"\n`);
113
+ // to reduce latency memories can be saved async without blocking tool execution
114
+ void mem0.createMemory(context.statement).then(() => {
115
+ console.log(`\nMemory "${context.statement}" saved.\n`);
116
+ });
117
+ return { success: true };
118
+ },
119
+ });
120
+
121
+ ```
@@ -0,0 +1,224 @@
1
+ ### package.json
2
+ ```json
3
+ {
4
+ "name": "memory-with-pg",
5
+ "type": "module",
6
+ "version": "1.0.1",
7
+ "description": "",
8
+ "private": true,
9
+ "main": "index.js",
10
+ "scripts": {
11
+ "start": "bun run --watch src/index.ts",
12
+ "chat": "bun run --watch src/chat.ts"
13
+ },
14
+ "keywords": [],
15
+ "author": "",
16
+ "license": "MIT",
17
+ "dependencies": {
18
+ "@ai-sdk/openai": "latest",
19
+ "@mastra/core": "workspace:*",
20
+ "@mastra/memory": "workspace:*",
21
+ "@mastra/pg": "workspace:*"
22
+ },
23
+ "devDependencies": {
24
+ "dotenv": "^16.4.7",
25
+ "tsx": "^4.19.3"
26
+ }
27
+ }
28
+
29
+ ```
30
+
31
+ ### chat.ts
32
+ ```typescript
33
+ import { randomUUID } from 'crypto';
34
+ import Readline from 'readline';
35
+
36
+ import 'dotenv/config';
37
+
38
+ import { mastra } from './mastra';
39
+
40
+ const agent = mastra.getAgent('memoryAgent');
41
+
42
+ let threadId = randomUUID();
43
+ // use this to play with a long running conversation. comment it out to get a new thread id every time
44
+ threadId = `39873fbf-84d6-425e-8c1b-8afd798d72a4`;
45
+ // threadId = `12569b14-3e16-4e31-8130-8d9676f1932c`;
46
+ console.log(threadId);
47
+
48
+ const resourceId = 'SOME_USER_ID';
49
+
50
+ async function logRes(res: Awaited<ReturnType<typeof agent.stream>>) {
51
+ console.log(`\n🤖 Agent:`);
52
+ for await (const chunk of res.textStream) {
53
+ process.stdout.write(chunk);
54
+ }
55
+ console.log(`\n\n`);
56
+ }
57
+
58
+ async function main() {
59
+ await logRes(
60
+ await agent.stream(
61
+ [
62
+ {
63
+ role: 'system',
64
+ content: `Chat with user started now ${new Date().toISOString()}. Don't mention this message. This means some time may have passed between this message and the one before. The user left and came back again. Say something to start the conversation up again.`,
65
+ },
66
+ ],
67
+ { resourceId, threadId },
68
+ ),
69
+ );
70
+
71
+ const rl = Readline.createInterface({
72
+ input: process.stdin,
73
+ output: process.stdout,
74
+ });
75
+
76
+ while (true) {
77
+ const prompt: string = await new Promise(res => {
78
+ rl.question('Message: ', answer => {
79
+ res(answer);
80
+ });
81
+ });
82
+
83
+ await logRes(
84
+ await agent.stream(prompt, {
85
+ threadId,
86
+ resourceId,
87
+ }),
88
+ );
89
+ }
90
+ }
91
+
92
+ main();
93
+
94
+ ```
95
+
96
+ ### index.ts
97
+ ```typescript
98
+ import { randomUUID } from 'crypto';
99
+
100
+ import { mastra } from './mastra';
101
+
102
+ function log(message: string) {
103
+ console.log(`\n>>Prompt: ${message}
104
+ `);
105
+ return message;
106
+ }
107
+
108
+ const agent = mastra.getAgent('chefAgent');
109
+ const threadId = randomUUID();
110
+ const resourceId = 'SOME_USER_ID';
111
+
112
+ async function logRes(res: Awaited<ReturnType<typeof agent.stream>>) {
113
+ console.log(`\n👨‍🍳 Chef:`);
114
+ for await (const chunk of res.textStream) {
115
+ process.stdout.write(chunk);
116
+ }
117
+ console.log(`\n\n`);
118
+ }
119
+
120
+ async function main() {
121
+ await logRes(
122
+ await agent.stream(
123
+ log(
124
+ 'In my kitchen I have: pasta, canned tomatoes, garlic, olive oil, and some dried herbs (basil and oregano). What can I make? Please keep your answer brief, only give me the high level steps.',
125
+ ),
126
+ {
127
+ threadId,
128
+ resourceId,
129
+ },
130
+ ),
131
+ );
132
+
133
+ await logRes(
134
+ await agent.stream(
135
+ log(
136
+ "Now I'm over at my friend's house, and they have: chicken thighs, coconut milk, sweet potatoes, and some curry powder.",
137
+ ),
138
+ {
139
+ threadId,
140
+ resourceId,
141
+ },
142
+ ),
143
+ );
144
+
145
+ await logRes(
146
+ await agent.stream(log('What did we cook before I went to my friends house?'), {
147
+ threadId,
148
+ resourceId,
149
+ memoryOptions: {
150
+ lastMessages: 3,
151
+ },
152
+ }),
153
+ );
154
+
155
+ process.exit(0);
156
+ }
157
+
158
+ main();
159
+
160
+ ```
161
+
162
+ ### mastra/agents/index.ts
163
+ ```typescript
164
+ import { openai } from '@ai-sdk/openai';
165
+ import { Agent } from '@mastra/core/agent';
166
+ import { Memory } from '@mastra/memory';
167
+ import { PgVector, PostgresStore } from '@mastra/pg';
168
+
169
+ const host = `localhost`;
170
+ const port = 5432;
171
+ const user = `postgres`;
172
+ const database = `postgres`;
173
+ const password = `postgres`;
174
+ const connectionString = `postgresql://${user}:${password}@${host}:${port}`;
175
+
176
+ export const memory = new Memory({
177
+ storage: new PostgresStore({
178
+ host,
179
+ port,
180
+ user,
181
+ database,
182
+ password,
183
+ }),
184
+ vector: new PgVector(connectionString),
185
+ options: {
186
+ lastMessages: 10,
187
+ semanticRecall: {
188
+ topK: 3,
189
+ messageRange: 2,
190
+ },
191
+ },
192
+ });
193
+
194
+ export const chefAgent = new Agent({
195
+ name: 'chefAgent',
196
+ instructions:
197
+ 'You are Michel, a practical and experienced home chef who helps people cook great meals with whatever ingredients they have available. Your first priority is understanding what ingredients and equipment the user has access to, then suggesting achievable recipes. You explain cooking steps clearly and offer substitutions when needed, maintaining a friendly and encouraging tone throughout.',
198
+ model: openai('gpt-4o'),
199
+ memory,
200
+ });
201
+
202
+ export const memoryAgent = new Agent({
203
+ name: 'Memory Agent',
204
+ instructions:
205
+ "You are an AI agent with the ability to automatically recall memories from previous interactions. You may have conversations that last hours, days, months, or years. If you don't know it already you should ask for the users name and some info about them.",
206
+ model: openai('gpt-4o'),
207
+ memory,
208
+ });
209
+
210
+ ```
211
+
212
+ ### mastra/index.ts
213
+ ```typescript
214
+ import { Mastra } from '@mastra/core';
215
+
216
+ import 'dotenv/config';
217
+
218
+ import { chefAgent, memoryAgent } from './agents';
219
+
220
+ export const mastra = new Mastra({
221
+ agents: { chefAgent, memoryAgent },
222
+ });
223
+
224
+ ```