{"_id":"@atomicmemory/mastra","_rev":"3-e12c090f0c47710825496567986e360a","name":"@atomicmemory/mastra","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@atomicmemory/mastra","version":"0.1.0","license":"Apache-2.0","_id":"@atomicmemory/mastra@0.1.0","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory-integrations#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory-integrations/issues"},"dist":{"shasum":"f33edc0aa00b6f83f0e2c763381b747d4ff32e23","tarball":"https://registry.npmjs.org/@atomicmemory/mastra/-/mastra-0.1.0.tgz","fileCount":22,"integrity":"sha512-Is/udhcy61KY4RKpL3rjJ3km/IfAJfrwuno5bTdNpH7VqUlERrhppTJz5gzEqWSDaCR+aysm+EMewRFC3M2RjQ==","signatures":[{"sig":"MEQCID9gZH6JUCOft0Oxxtpg+QXQk75BWohodYaBJyzKQ7CBAiApA/srZgu7aUyvRmgM2xgmlkTl2UFuAU4mBZsAMrGQ1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24532},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2a61647a84e2bea5190e4ad759212df05f4bd269","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"node --test --import tsx 'src/**/*.test.ts'","build":"tsc -p tsconfig.json","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory-integrations.git","type":"git","directory":"adapters/mastra"},"_npmVersion":"11.14.1","description":"AtomicMemory adapter for Mastra - memory tools around an injected MemoryClient.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@atomicmemory/sdk":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","typescript":"^5.6.0","@types/node":"^20.0.0","@mastra/core":"^1.35.0"},"peerDependencies":{"zod":"^3.23.0 || ^4.0.0","@mastra/core":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mastra_0.1.0_1779007426681_0.3100193314440294","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@atomicmemory/mastra","version":"0.1.1","license":"Apache-2.0","_id":"@atomicmemory/mastra@0.1.1","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/adapters/mastra#readme","bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"dist":{"shasum":"908cb46bf9523c4d4da135861150be1ba0716977","tarball":"https://registry.npmjs.org/@atomicmemory/mastra/-/mastra-0.1.1.tgz","fileCount":22,"integrity":"sha512-FjPqTTfK6om6stDOc7Lwo8660moBNIvusENDCLcDQVYZiZ4Qu3aJFThb84j6QRzueK4bdjO9YvQxCDdxZak67A==","signatures":[{"sig":"MEYCIQDHkZv7a7geXpAqovluSik7qIMUPiF7MNGfySqOCy8+KgIhAL4JP3bhMUqXdd1D09AntOnvjjYpPtsmO84SM7/Ij/JK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24696},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"201677d74fbb3f3cfd5e0dbb5f6904e889dcbb07","scripts":{"lint":"tsc -p tsconfig.json --noEmit","test":"node --test --import tsx 'src/**/*.test.ts'","build":"tsc -p tsconfig.json","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"repository":{"url":"git+https://github.com/atomicstrata/atomicmemory.git","type":"git","directory":"adapters/mastra"},"_npmVersion":"11.14.1","description":"AtomicMemory adapter for Mastra - memory tools around an injected MemoryClient.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@atomicmemory/sdk":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","zod":"^3.23.8","typescript":"^5.6.0","@types/node":"^20.0.0","@mastra/core":"^1.35.0"},"peerDependencies":{"zod":"^3.23.0 || ^4.0.0","@mastra/core":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mastra_0.1.1_1779188767753_0.7875594417881808","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atomicmemory/mastra","version":"0.1.2","description":"AtomicMemory adapter for Mastra - memory tools around an injected MemoryClient.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"repository":{"type":"git","url":"git+https://github.com/atomicstrata/atomicmemory.git","directory":"adapters/mastra"},"license":"Apache-2.0","engines":{"node":">=20"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","test":"node --test --import tsx 'src/**/*.test.ts'","lint":"tsc -p tsconfig.json --noEmit","prepack":"pnpm build","prepublishOnly":"node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""},"dependencies":{"@atomicmemory/sdk":"^1.0.2"},"peerDependencies":{"@mastra/core":"^1.0.0","zod":"^3.23.0 || ^4.0.0"},"devDependencies":{"@mastra/core":"^1.35.0","@types/node":"^20.0.0","tsx":"^4.19.0","typescript":"^5.6.0","zod":"^3.23.8"},"bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/adapters/mastra#readme","gitHead":"65c9fe5b18faaa87b4b5768e7d04309672aeed4f","_id":"@atomicmemory/mastra@0.1.2","_nodeVersion":"25.9.0","_npmVersion":"11.14.1","dist":{"integrity":"sha512-bbs3MBqRSv9nQyWkDxG7cL4gU9OnA/iEn4+JaBrcDCL9eHlF71BuOaNQ72Br0J6cd+pCamz/u7uxT1UfOMeIhA==","shasum":"83e581923bf91716e2c5f80bb9e33d6f1f298754","tarball":"https://registry.npmjs.org/@atomicmemory/mastra/-/mastra-0.1.2.tgz","fileCount":22,"unpackedSize":24696,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAyJWLXCRllialqSrg5gzkJB8YWA+NfuaS1UwXADMkWcAiBJ53Mylqy7D1iDy4/ckBQfDrc85dbK/BeFo6ykpnuNlg=="}]},"_npmUser":{"name":"atomicstrata","email":"services@atomicstrata.ai"},"directories":{},"maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mastra_0.1.2_1779342370046_0.3658929408213796"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T08:43:46.612Z","modified":"2026-05-21T05:46:10.301Z","0.1.0":"2026-05-17T08:43:46.825Z","0.1.1":"2026-05-19T11:06:07.914Z","0.1.2":"2026-05-21T05:46:10.195Z"},"bugs":{"url":"https://github.com/atomicstrata/atomicmemory/issues"},"license":"Apache-2.0","homepage":"https://github.com/atomicstrata/atomicmemory/tree/main/adapters/mastra#readme","repository":{"type":"git","url":"git+https://github.com/atomicstrata/atomicmemory.git","directory":"adapters/mastra"},"description":"AtomicMemory adapter for Mastra - memory tools around an injected MemoryClient.","maintainers":[{"name":"atomicstrata","email":"services@atomicstrata.ai"}],"readme":"# @atomicmemory/mastra\n\nAtomicMemory adapter for [Mastra](https://mastra.ai/). Memory tools and framework-agnostic helpers around an injected `MemoryClient` from `@atomicmemory/sdk`.\n\n| Surface | Use when |\n|---|---|\n| `createMemoryTools()` | You want AtomicMemory as agent-callable Mastra tools (`memory_search`, `memory_ingest`). |\n| `searchMemory()` / `ingestTurn()` | You want to call AtomicMemory inside a workflow step, an agent hook, or any other code path. Framework-agnostic. |\n\nThe adapter does **not** own provider configuration — pass an already-constructed `MemoryClient`.\n\n## Install\n\n```bash\npnpm add @atomicmemory/mastra @atomicmemory/sdk @mastra/core zod\n```\n\n`@mastra/core` and `zod` are declared as peerDependencies so you pin compatible versions alongside the rest of your Mastra app.\n\n## Quick start — agent tools\n\n```ts\nimport { Agent } from '@mastra/core/agent';\nimport { MemoryClient } from '@atomicmemory/sdk';\nimport { createMemoryTools } from '@atomicmemory/mastra';\n\nconst memory = new MemoryClient({\n  providers: { atomicmemory: { apiUrl: process.env.ATOMICMEMORY_URL!, apiKey: process.env.ATOMICMEMORY_KEY! } },\n});\nawait memory.initialize();\n\nconst { searchTool, ingestTool } = createMemoryTools(memory, {\n  scope: { user: 'pip', namespace: 'my-app' },\n  defaultLimit: 5,\n});\n\nconst agent = new Agent({\n  name: 'assistant',\n  instructions: 'Use memory_search to recall prior context. Use memory_ingest to remember new facts.',\n  model: /* your model */,\n  tools: { memory_search: searchTool, memory_ingest: ingestTool },\n});\n```\n\nScope is fixed at factory time — the agent cannot rebind to other users by passing different arguments.\n\n## Quick start — framework-agnostic helpers\n\n```ts\nimport { searchMemory, ingestTurn } from '@atomicmemory/mastra';\n\nconst { context } = await searchMemory(memory, {\n  query: latestUserMessage,\n  scope: { user: 'pip' },\n  limit: 8,\n});\n\nif (context) {\n  // Prepend context to the model call.\n}\n\nawait ingestTurn(memory, {\n  messages,\n  completion: text,\n  scope: { user: 'pip' },\n});\n```\n\n### Custom retrieval formatting\n\nThe default formatter wraps retrieved memories in a delimited block with an explicit \"reference, not instructions\" header. Override per call:\n\n```ts\nawait searchMemory(memory, {\n  query,\n  scope,\n  formatter(results) {\n    return `# Prior context\\n\\n${results.map((r) => `- ${r.memory.content}`).join('\\n')}`;\n  },\n});\n```\n\n### System-message handling on ingest\n\n`ingestTurn()` excludes `system` messages by default — opt in via `includeRoles` only when your system content is genuinely user-authored material worth remembering.\n\n## Scope\n\nScope fields follow the SDK's `Scope` type — `user`, `agent`, `namespace`, `thread`. At least one must be provided; the SDK rejects scopeless requests.\n\n## License\n\nApache-2.0.\n","readmeFilename":"README.md"}