{"_id":"@the-long-ride/engram","_rev":"33-4d7722f4463d62b21cb0052144610595","name":"@the-long-ride/engram","dist-tags":{"latest":"0.0.28"},"versions":{"0.0.3":{"name":"@the-long-ride/engram","version":"0.0.3","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.3","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"2c0857998ade354f6bea68cc1b7c33838e0ecb94","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.3.tgz","fileCount":186,"integrity":"sha512-w5Nh8W0N5UIG9e70bMoPEdAY8av6tn/6gH0TBezchLi5MzkzCKOQlv5KA88/u7C/NOJfQB94CzGFpLbcCrFDsw==","signatures":[{"sig":"MEUCIGT9nKk2kt+Ji5y+kTjQ8BSxPH//t+wEkuKfoOqfJPX0AiEAitKU3NlgZ7f9TBxQiIw1Gje6UCWTNNAuUQcKG58m25A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":791558},"type":"module","engines":{"node":">=20"},"gitHead":"87d353c54c858859be11943746c6dfe1351c3dc1","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","coverage":"tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"*","better-sqlite3":"*","@the-long-ride/markdown-them":"*"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.3_1780683613743_0.06913845934552021","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@the-long-ride/engram","version":"0.0.4","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.4","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"43a4cc0ca3b998a057ef628d21e1d4414996bf38","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.4.tgz","fileCount":186,"integrity":"sha512-X1FZIXRHdWHOqFcATQnchbDFXxthblUkB7R0mJvOE7znyL6vxeT7CbKZMu58TeaQ49mI36ob9eGZfND2r346iw==","signatures":[{"sig":"MEUCIQC27nDH4KsXisvaFn/+F0vCleJzLoueaK5LFUQZz2s+bgIgLYnWQ28mb7mY6U7CJ88odu8+kpURnTr1LkoLE/eLWbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":801455},"type":"module","engines":{"node":">=20"},"gitHead":"158a592311926d993c885cbb0b1533655031df3b","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","coverage":"tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"*","better-sqlite3":"*","@the-long-ride/markdown-them":"*"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.4_1780941206121_0.5317800717257615","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@the-long-ride/engram","version":"0.0.5","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.5","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"5f78b2fed88e1a74c44305b74b2fff92cd124e65","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.5.tgz","fileCount":189,"integrity":"sha512-JDHOjWhG+2c8FbCNSa3DsyqerSiu2Vss9XSZRwxf5jwZKHpQxu2NHX+wnlv+7aHRB+LDor5XZnC5yaHobhYsOw==","signatures":[{"sig":"MEUCIArMum2FoLiV3M0prGmcBtjiIwjc1f0DaRG1E0/mRd4SAiEApRDobkuD5zNxv0qzX/3/AC5WLtt2tdkEYY2Tgp26jiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":805561},"type":"module","engines":{"node":">=20"},"gitHead":"ae7e89c6a0496af3e4b107ef842c44d1a4892e5d","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"*","better-sqlite3":"*","@the-long-ride/markdown-them":"*"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.5_1780948025331_0.08494679824303963","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@the-long-ride/engram","version":"0.0.6","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.6","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"d1b32b8995045b50d0a9980f54fea3d8f0db1440","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.6.tgz","fileCount":189,"integrity":"sha512-NMaetAJ3SGeYGyfUsYWqje0d5Mi8QZ5EyCiCgldo1H1YnK3rzcFVLnJDZAfzbCD0s7Ub876Z7oQ9FIrJK7okHw==","signatures":[{"sig":"MEQCIAwtwxeMktG9CVpH1pmsxnv8gw4K7sGLbilHegFeYZB0AiB/BcoIejE2wJ9UoYRxf5VAKfVaFT11yUXu4h33ARobRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":805699},"type":"module","engines":{"node":">=20"},"gitHead":"a0f5151d05132a0028516fa70bdff21756368b5a","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.6_1780949022150_0.9414269611729638","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@the-long-ride/engram","version":"0.0.7","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.7","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"5771ddf05ffc17a6da012eee176b8f3630905366","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.7.tgz","fileCount":189,"integrity":"sha512-bLA6HrENgjTKL25GTQ3QhFCuOYJCP/CCCz1tGs0fvAziXUX1QmSyq3sPtSoBfy+bnJyMRA56epYdwb3OmVjs5A==","signatures":[{"sig":"MEUCIQD1tYQjf3Di/90deCjdKcDBHXgEEiwKmj6UJ5XnHt116wIga1j6hIXRSkPL3Ajukbd8JG7zWnDMT8r59Er9ZadunGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":806219},"type":"module","engines":{"node":">=20"},"gitHead":"577460a70881ad9858e771d2b5da1ee452a91098","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.7_1780953228460_0.3884010401198452","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@the-long-ride/engram","version":"0.0.8","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.8","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"a292d17de3213cabdc1555e2e4f87067cc3f57f1","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.8.tgz","fileCount":201,"integrity":"sha512-DzZwiczQ7OApqTew4qcCzm/ynd0zaUWNtauD2CwugfBcT2wre+LOs/dnS4ozVO1BxDE5yy4kMSRap0ndjhs+jA==","signatures":[{"sig":"MEYCIQD3nwXk7tfIBepNbsk3+e93dHOWfRNDxEklO81Nb7gAUAIhANQzUnJRr2k4VhEyykEOcylykSWc6pEJ28u1be6nnDB6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":906494},"type":"module","engines":{"node":">=20"},"gitHead":"e74d6c4ad133aa832867ed8d0eeae10af9e0f84d","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.8_1781076177520_0.8076465661454681","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@the-long-ride/engram","version":"0.0.9","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.9","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"e317b87475757c024522b2a7176ee24610142adc","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.9.tgz","fileCount":201,"integrity":"sha512-xXTafDwqz7/rpgzgT8lIn+aJDBnTaMk5R4eb+A6nDiwaficcFXOHZ1I4xbxhfNKXRLDB8d8ZQ7kfgfZMLsMzpQ==","signatures":[{"sig":"MEQCIBvFZdGMoFbgP58fYwb3djkLXKdeuFrVqwh4OuIsaiX7AiBa+uSzFu0MMUhuj81mTBWLGxtLaAuE4VVyLxucaSlrcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":908838},"type":"module","engines":{"node":">=20"},"gitHead":"a51f65473dad541eee9a63da34c6387070fcab5f","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.9_1781093990351_0.830137825367635","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@the-long-ride/engram","version":"0.0.10","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.10","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"107e3a2d81852476afee4b6627e65883d52bb5d5","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.10.tgz","fileCount":210,"integrity":"sha512-8VkYS9kLgLUoAvqlU0xSO5zXDLDkk/9Zcbkwiu+J47PqqUzIbIwBhF+vZFxAvjlA6R7kApjdo2hXG8vJEWcAtg==","signatures":[{"sig":"MEQCIAt7Pe89bxZ3BW7xiTV89kX8kr2wtefPpdyCApeSArKtAiAaZvrRT/nl5NwghXU/+2Y232CvQf8sb/SIy5QZ26iAKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":964323},"type":"module","engines":{"node":">=20"},"gitHead":"2036c75cd87fadd776c7b452e77585d2e754a810","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.10_1781165495952_0.14117845791757788","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@the-long-ride/engram","version":"0.0.11","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.11","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"1811362209302bdf31148d1b9a91bb3d705c2d28","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.11.tgz","fileCount":215,"integrity":"sha512-ulpRz1t16Hv8rDkmwv6X6IExV0+l2L5TUOwZzMWMvzu9nWZl++dWfFI2hN82+ZWalEHjD7mCoLcpnmeie6UCdw==","signatures":[{"sig":"MEYCIQCEMkRrX+uiLgo7Tby8/0GXW2aQonT2A9pEKVZ1ul0XSAIhANvFMmPDLUlnuijZSa228PyrAEdRbYt7s1r5tTN/RsRl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1048371},"type":"module","engines":{"node":">=20"},"gitHead":"8c903114c5a2dab0ddf26b150020c310c00ea120","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs","test:cli":"npm run build && node --test tests/cli.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.11_1781254211826_0.3469422649888325","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@the-long-ride/engram","version":"0.0.12","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.12","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"9e3eaeb23dd161d2d80ebca04ae99991fee7fc69","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.12.tgz","fileCount":218,"integrity":"sha512-nhK9KiCohHA5KE4CeMnIN6pci/oMCdYZ1gIOsESA3dz7Gxjt9CiEqz+UThQDXbnMgDghQe3wY6sStlF5UxW9xg==","signatures":[{"sig":"MEUCIQCu95afEMr7sjXuOCVsWA3KyI5jkGhJX/Snqil7oVHMywIgT8fq7J6Hb2X6O6Qs7HF+urV743aP6UIPlaxEsHnZTiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062771},"type":"module","engines":{"node":">=20"},"gitHead":"8da1d19a461a51bdf427caeddba180bc568578e5","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs tests/cli/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.12_1781519078231_0.4755795321795717","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@the-long-ride/engram","version":"0.0.13","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.13","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"a828c20b26f052cda3ddebe87ef9bda21badf5ba","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.13.tgz","fileCount":221,"integrity":"sha512-xMzJRpabbUagTnJFWvlSKlJ27qLMPOtei7/ecNek52ELlsWStiPb7GcdG56qcIAVkyHK5YlmeuXcVKQUNeyL8Q==","signatures":[{"sig":"MEUCIQCPE6mRS3q4ZvZCZqORlVpuUAlmy02TN1PvU01OYCNFzwIgQOWVmz2HPA7v13f2I/fO8LyT0Sy2N8+mjKdd9Ruzdmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1100929},"type":"module","engines":{"node":">=20"},"gitHead":"dce997b45f14b0129337881a9161b9a5211ca274","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs tests/cli/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.13_1781582702718_0.4355523429409367","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@the-long-ride/engram","version":"0.0.14","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.14","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"08871f827622c9d8615836d43c85559596f51fc8","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.14.tgz","fileCount":221,"integrity":"sha512-pZhgYWJbWLmPKBr0Q3Mra3DZ6vkZ4FYn8bZ1kd5MEqss8ALmK3ndlMXplufyxtxxgJYMR4lhUNQDpdiWDYcPpg==","signatures":[{"sig":"MEUCIQDmcDIv2DpgjbcAT/5bAI8YVlUVO443wG0ZAKPKXn35tAIgb9j5Kzr9hHAaZUelWNvql1km7ijsi/Z4rnCw0hbyMHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1116858},"type":"module","engines":{"node":">=20"},"gitHead":"dddb8fd1f9a4a1ffa1265bfdb470052774b47ade","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs tests/cli/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.14_1781606393817_0.9802602658146193","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@the-long-ride/engram","version":"0.0.15","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.15","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"dfc88687a474f4542dd30de9fdcb1b73fb667961","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.15.tgz","fileCount":227,"integrity":"sha512-fhTDhzsd/pckM9FizH+c5wWwG+Ocq39cdY/aoVN3687rgLuP3YrSZpM+5QTyiMOTRVrgPgt9sGUaagSfWUtfIg==","signatures":[{"sig":"MEYCIQC8OvoFaVJr2phPlEH/wYVxJy0uDlFb4dm6yX9rgq3NUQIhAMYPV1YSaRbQXlzEecq9LZ5lyCqsvzEAaOiSLTkOdrU6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1158142},"type":"module","engines":{"node":">=20"},"gitHead":"fa09120b50c2a31a5cf58debbb78f632ec981de3","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs tests/cli/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.15_1781613111342_0.9894596618165137","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@the-long-ride/engram","version":"0.0.16","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.16","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"3c6fb1564df4f800d44e90d8f946b1ba1829202f","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.16.tgz","fileCount":230,"integrity":"sha512-677p+bXxQbrTe9S8WDL9zuQCLWi3KH7H5dJjHOlVdeWgjjKTSx6NHL6B3dyAfIXXa51gCRzqv2rNXxT8/vqklw==","signatures":[{"sig":"MEQCIESLL90WxYXyhJLpnaX3SD9/UzZfmRw7ERXOZVYHzWrZAiAQvSNjaeGMM2Z41L8CFm4lA+AZM/tr5Y0mveTfm5QENg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1215622},"type":"module","engines":{"node":">=20"},"gitHead":"30fecfdd9cbc50d060b0247c235f303047a2f1be","private":false,"scripts":{"test":"npm run build && node --test tests/*.test.mjs tests/cli/*.test.mjs","build":"npm run generate:version && tsc","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.16_1781686754801_0.39272148058184597","host":"s3://npm-registry-packages-npm-production"}},"0.0.17":{"name":"@the-long-ride/engram","version":"0.0.17","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.17","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"b82b0fae068946dc980c0b0eb4e1cf55ca83710d","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.17.tgz","fileCount":254,"integrity":"sha512-QaZMNRcjQ56HlkXuLu1lhVhdr0rwwIKnONOzpjnkHhH3YfFnJDtarCfbcAJZtEyaJpRk0QrZDDzXu4tM4zKfXQ==","signatures":[{"sig":"MEYCIQCCyZXuUmA2bumCQWbiriS1sAIBmQlIdkpMF03zj1CVeAIhAN0uggN9MpDanzSGDHxuv0jtBommWctDPfUaa3HdTET3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1411040},"type":"module","engines":{"node":">=20"},"gitHead":"34c6fd3aac54358901d5b3774ffd1848e4521e4e","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.17_1781993746740_0.9553114950450057","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"@the-long-ride/engram","version":"0.0.18","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.18","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"03bc6621b1aab0944ff7fac5eaccd72749f41ef5","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.18.tgz","fileCount":257,"integrity":"sha512-NcZRFCmLA6QnSjgHj0PRj6+JbR82ASAYcBEz4B97zVBGc0EB3+ruvCdjaE1WbgRUPrkcaJbbITnBv+zT0iFMvQ==","signatures":[{"sig":"MEQCIB9bAOmMHmpykjKRPajjZ7KMtcZ8Ejg9DjQLFtneSTk+AiB73EeykkhBmO6atwDeLoMxXmJjvh3aAn2UZKYdLPH4aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1431269},"type":"module","engines":{"node":">=20"},"gitHead":"3e85a1f8e6c5e34fb01b15abc78a8ae9c3cb7f9d","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.18_1782066231115_0.41877111668177247","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"@the-long-ride/engram","version":"0.0.19","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.19","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"2981e870dfd16fefd2ed69ba4ad12f593d65461d","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.19.tgz","fileCount":267,"integrity":"sha512-S2pA1agiHjX4uBWhrPM1QkscCAolhXzNnEKvci0K48zF+X/QAG0lEM6xhk1J+U7QDDplPCBC4mo77HI6YzAw7Q==","signatures":[{"sig":"MEQCIF/42tvSA3CsDym6QhNcp6Ao+WYugCNM+sAUMUR6JM4rAiAmdv88VSbPOrmoCA37pa5x8NOY7vuR+8iLTx7sYbu07Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1557451},"type":"module","engines":{"node":">=20"},"gitHead":"a80b6831c3aea964f97353033a332b524a19ac89","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.0"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.19_1782205175036_0.7059686150881164","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"@the-long-ride/engram","version":"0.0.20","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.20","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"2c6c5a1b087ba703bd26d1b66b80eb428df6c335","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.20.tgz","fileCount":365,"integrity":"sha512-VOu0XrcnqRV8U+XFyi6lOmW9j/oXE3GeZhAHb2Jd9aez16usJ4W0U0IBuvJNZ1SAybzSYrWS83q/3Bt98A4LhQ==","signatures":[{"sig":"MEUCIQDaqqpqnCHc6xWhjk6yQXa06fFYYrw5banpqxhGKZ+xEgIgZpZ8+i0kJxR3SjZMcD4m5emAuK+q1/yMJfvzg+kECh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3001049},"type":"module","engines":{"node":">=20"},"gitHead":"f1a8d3e03784828f89a4ec685ccb8a9c31839cef","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.20_1782377378255_0.6632968129288881","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"@the-long-ride/engram","version":"0.0.21","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.21","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"b9a6bf64e0f5291644bd04d7120baf239c0ff6f0","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.21.tgz","fileCount":368,"integrity":"sha512-lUJ2QjzMIAzSX0hzpwvBL+EWO44sO6HTRCms12lRdld9vwS0CAJsAmbOq5vU9+sLTL7EGLo4eqq/IqZ/41gReQ==","signatures":[{"sig":"MEUCIHnvAQ15VeslEM6C+EqH7z4FDs2eaQsvAnvt5HfHB1YEAiEA7dggN02gd0gQ8BMgGs4yX5KXwGGSlAdnW94jVfeeWqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3075291},"type":"module","engines":{"node":">=20"},"gitHead":"d39c2beb071c430de654a4e5eca13bf55a8c1ed4","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.21_1782486831039_0.7230928918651192","host":"s3://npm-registry-packages-npm-production"}},"0.0.22":{"name":"@the-long-ride/engram","version":"0.0.22","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.22","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"4f256f05afc77e0e949327a4df152b6d2abe2db4","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.22.tgz","fileCount":374,"integrity":"sha512-HECqBea46Ag+zWPz7iRS2InFtCV5yIw4AF3jJT22Tf32N9XC7HQTwaCjLJkiVzGDt3FbyS/bVeXRO/x6WntRfw==","signatures":[{"sig":"MEQCIHG3mC1B5K9QG2HM41KP61nlQyiQAN7UKx2TlWp80WTdAiAaeyaajRosM3xNWyC+lVmfxRp+Wbgz6guJTwerTm0/QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3136519},"type":"module","engines":{"node":">=20"},"gitHead":"ac02c2b767706d179a038398bfc2b8be59553e54","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.22_1782608590517_0.009562200208208527","host":"s3://npm-registry-packages-npm-production"}},"0.0.23":{"name":"@the-long-ride/engram","version":"0.0.23","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.23","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"506ed27e985b3e89f1b3f2aeecd589f4b19fffa2","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.23.tgz","fileCount":377,"integrity":"sha512-xNXhh6Xa0GQTq/48H8+IBRQTNdSbod7zqGKF8wsNfVNvLcT25y1H8LTKDkWhzpgXcO2d4cJVvCbj71r91qBk9w==","signatures":[{"sig":"MEUCIHCEqjyZwPVbyuaV6aDh7fBoBRm0AHxq6XkHqa4VrxJPAiEAnqWn8ViB3eRohOMnof4DAXmjFCxpplL+aBXXCTg1em4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3174390},"type":"module","engines":{"node":">=20"},"gitHead":"c892ffd989893e25c3bb82b03af343092a638148","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.23_1783004491798_0.11259131885149354","host":"s3://npm-registry-packages-npm-production"}},"0.0.24":{"name":"@the-long-ride/engram","version":"0.0.24","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.24","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"1b622f060929c0817ba44a1cf99019edbcf5f3d5","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.24.tgz","fileCount":377,"integrity":"sha512-6Rrd9EQG017j3Y4u+1+PbjytPqBFxNFLcBOn2oqHL+Orgxdrf/5Prx2MhwKaFH3Kvm8CZZsKUpssFyWaGwUYuQ==","signatures":[{"sig":"MEYCIQCKHk1ZyY5QBZtnQqnzEGx7Irw3qnZZJu2wIjIJp3XGxQIhAL9i+tWhfqZrRAUJ8O4JJKdInq5wKAv8wTD1epAby5CH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3187777},"type":"module","engines":{"node":">=20"},"gitHead":"f9fc05257d3b8defbef473bec81fb66db645145d","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.24_1783032916004_0.5672459399322434","host":"s3://npm-registry-packages-npm-production"}},"0.0.25":{"name":"@the-long-ride/engram","version":"0.0.25","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.25","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://github.com/the-long-ride/engram#readme","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"55b026ce922e3ac8f19b2f27c4b7db9b7858b02d","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.25.tgz","fileCount":377,"integrity":"sha512-G5E2PdqifglNNpqhjf92P6nHf0MEBdonJ7vuHwHzzIVz09CzLgXvgEXif8AoROmoMoEzMC+MSQT3r6FVo7oJvA==","signatures":[{"sig":"MEYCIQC9Q5m4gG9rzs8MziTJ3/zUufI4B2xSxKc36lvsoJPNdwIhALVTn0UIxO0KbrMcvzdW92SQcUSQKXwmyC6MkA3jg+Fk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3203186},"type":"module","engines":{"node":">=20"},"gitHead":"d95a40602ebf33c36087dfcacc01de953503d2a2","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"10.8.2","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.25_1783155350923_0.721756909046336","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"@the-long-ride/engram","version":"0.0.27","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","_id":"@the-long-ride/engram@0.0.27","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"homepage":"https://the-long-ride.github.io/engram/","bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"dist":{"shasum":"c7f957948064317abce4f273b919ab5f246eaabd","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.27.tgz","fileCount":473,"integrity":"sha512-FmL3hQ1MwgvNuTZlIeN4vTyeveXb8QLg4Z9AI82ev0skDCbJXipBifKUxB5SyNJsdgrvKPgfmhQ2b2+MqYZqhQ==","signatures":[{"sig":"MEQCICt0Oym/5v5hOZ98jOQtH8P2YVCQhbex3+qevyxWirU0AiBwwo5uE2Ir+defF1EQ+jUQjMuxKeiuTkSVnWX9L8H5Vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3648717},"type":"module","engines":{"node":">=20"},"gitHead":"9d39b64bf0b39ee09bd4c2714f017f55222dad1f","private":false,"scripts":{"test":"npm run build && node scripts/run-tests.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","prepack":"npm run typecheck && npm test && npm run lint:lines","publish":"npm publish --access public --ignore-scripts","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","test:app":"jest --config jest.config.cjs","test:cli":"npm run build && node --test tests/cli/*.test.mjs","test:mcp":"npm run build && node --test tests/mcp.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","test:core":"npm run build && node --test tests/core.test.mjs tests/safety.test.mjs","typecheck":"npm run generate:version && tsc --noEmit","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","test:package":"npm run build && node --test tests/publish/*.test.mjs","test:related":"node scripts/run-related-tests.mjs","prepublishOnly":"npm run test:package","generate:version":"node scripts/generate-version.mjs"},"_npmUser":{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"},"overrides":{"js-yaml":"^3.14.2"},"repository":{"url":"git+https://github.com/the-long-ride/engram.git","type":"git"},"_npmVersion":"11.16.0","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","esbuild":"^0.28.0","ts-jest":"^29.4.11","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","jest-environment-jsdom":"^30.4.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"sqlite-vec":"0.1.9","better-sqlite3":"12.10.0","@the-long-ride/markdown-them":"1.3.1"},"peerDependenciesMeta":{"sqlite-vec":{"optional":true},"better-sqlite3":{"optional":true},"@the-long-ride/markdown-them":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/engram_0.0.27_1784023857800_0.9965172775722535","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"@the-long-ride/engram","version":"0.0.28","description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"type":"module","private":false,"license":"GPL-3.0-only","author":{"name":"the-long-ride"},"repository":{"type":"git","url":"git+https://github.com/the-long-ride/engram.git"},"bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"homepage":"https://the-long-ride.github.io/engram/","bin":{"engram":"dist/bin/engram.js","engram-mcp":"dist/bin/engram-mcp.js"},"publishConfig":{"access":"public"},"scripts":{"generate:version":"node scripts/generate-version.mjs","build":"npm run generate:version && tsc && node scripts/build-web.mjs && node scripts/copy-assets.mjs","typecheck":"npm run generate:version && tsc --noEmit","test":"npm run build && npm run test:built","test:built":"node scripts/run-tests.mjs","test:related":"node scripts/run-related-tests.mjs","test:core":"npm run build && node --test --test-timeout=120000 --test-force-exit tests/core.test.mjs tests/safety.test.mjs","test:cli":"npm run build && node --test --test-timeout=120000 --test-force-exit tests/cli/*.test.mjs","test:mcp":"npm run build && node --test --test-timeout=120000 --test-force-exit tests/mcp.test.mjs","test:package":"npm run build && node --test --test-timeout=120000 --test-force-exit tests/publish/*.test.mjs","test:app":"jest --config jest.config.cjs","coverage":"npm run generate:version && tsc --sourceMap false && node --experimental-test-coverage --test --test-timeout=120000 --test-force-exit tests/core.test.mjs tests/safety.test.mjs tests/conflict.test.mjs tests/init-migration.test.mjs tests/mcp.test.mjs tests/skillset.test.mjs tests/tamper.test.mjs tests/web-api.test.mjs tests/publish/*.test.mjs tests/cli/*.test.mjs","debug:cli":"npm run build && node --inspect-brk dist/bin/engram.js","lint:lines":"node scripts/check-lines.mjs && node scripts/check-web-assets.mjs","pack:dry-run":"npm pack --dry-run --ignore-scripts","publish":"npm publish --access public --ignore-scripts","prepublishOnly":"npm run test:package","prepack":"npm run typecheck && npm test && npm run lint:lines"},"engines":{"node":">=20"},"peerDependencies":{"@the-long-ride/markdown-them":"1.3.2","better-sqlite3":"12.10.0","sqlite-vec":"0.1.9"},"peerDependenciesMeta":{"@the-long-ride/markdown-them":{"optional":true},"better-sqlite3":{"optional":true},"sqlite-vec":{"optional":true}},"devDependencies":{"@babel/core":"^7.29.7","@babel/preset-env":"^7.29.7","@babel/preset-react":"^7.29.7","@babel/preset-typescript":"^7.29.7","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/jest":"^30.0.0","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","babel-jest":"^30.4.1","esbuild":"^0.28.0","jest":"^30.4.2","jest-environment-jsdom":"^30.4.1","typescript":"^7.0.2"},"dependencies":{"react":"^19.2.7","react-dom":"^19.2.7"},"overrides":{"brace-expansion":"^2.0.2","dompurify":"^3.4.13","fast-uri":"^3.0.3","image-size":"^2.0.0","js-yaml":"^5.2.3","mermaid":"^11.16.1","nanoid":"^5.1.5","pdfjs-dist":"^6.2.108","postcss":"^8.4.31","svgo":"^3.3.4","undici":"^6.21.1"},"gitHead":"aa12943f3d5b06629b33a71ae59a5013253eadee","_id":"@the-long-ride/engram@0.0.28","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-Oo4Rq9fejL1OznE/JNTpbeEbq6nq5oSMy4C2NZ4lQ0MpQ8m47isWpRo+4Om9TD3bCgDn8yAKsIm3tlf78TyOHg==","shasum":"d67fb0bd43ee6406de8eed9de19c7e122e8736f9","tarball":"https://registry.npmjs.org/@the-long-ride/engram/-/engram-0.0.28.tgz","fileCount":593,"unpackedSize":4558627,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@the-long-ride%2fengram@0.0.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGgFPTkknFe4T4wEor1IQLdnceWA0Obr17+CBwFWzJvCAiB1a+RQkuHaDnZR6ZnBME3/Cu7rY4yPzRPX65SsJBmkRw=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:42f572a2-cc3c-49af-9d0d-27686c9bb57e"}},"directories":{},"maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/engram_0.0.28_1786443662655_0.2312134687889391"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T11:08:09.055Z","modified":"2026-08-11T10:21:03.302Z","0.0.1":"2026-06-04T10:45:08.740Z","1.0.0":"2026-06-04T11:08:09.437Z","1.0.1":"2026-06-05T03:04:03.799Z","0.0.3":"2026-06-05T18:20:13.981Z","0.0.4":"2026-06-08T17:53:26.329Z","0.0.5":"2026-06-08T19:47:05.580Z","0.0.6":"2026-06-08T20:03:42.476Z","0.0.7":"2026-06-08T21:13:48.619Z","0.0.8":"2026-06-10T07:22:57.720Z","0.0.9":"2026-06-10T12:19:50.517Z","0.0.10":"2026-06-11T08:11:36.130Z","0.0.11":"2026-06-12T08:50:11.958Z","0.0.12":"2026-06-15T10:24:38.446Z","0.0.13":"2026-06-16T04:05:02.974Z","0.0.14":"2026-06-16T10:39:53.993Z","0.0.15":"2026-06-16T12:31:51.521Z","0.0.16":"2026-06-17T08:59:15.007Z","0.0.17":"2026-06-20T22:15:46.931Z","0.0.18":"2026-06-21T18:23:51.284Z","0.0.19":"2026-06-23T08:59:35.207Z","0.0.20":"2026-06-25T08:49:38.432Z","0.0.21":"2026-06-26T15:13:51.264Z","0.0.22":"2026-06-28T01:03:10.695Z","0.0.23":"2026-07-02T15:01:32.080Z","0.0.24":"2026-07-02T22:55:16.171Z","0.0.25":"2026-07-04T08:55:51.085Z","0.0.26":"2026-07-13T17:58:55.937Z","0.0.27":"2026-07-14T10:10:57.972Z","0.0.28":"2026-08-11T10:21:02.863Z"},"bugs":{"url":"https://github.com/the-long-ride/engram/issues"},"author":{"name":"the-long-ride"},"license":"GPL-3.0-only","homepage":"https://the-long-ride.github.io/engram/","keywords":["cli","ai","mcp","opencode","openai","memory-management","cursor","knowledge-base","codex","claude","local-first","agent-framework","ai-agent","mcp-server","agent-memory"],"repository":{"type":"git","url":"git+https://github.com/the-long-ride/engram.git"},"description":"Portable, human-approved memory for AI agents. Grow with you & your teams.","maintainers":[{"name":"the-long-ride-1406","email":"thelong1406@gmail.com"}],"readme":"# Engram\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-orange)](LICENSE) [![GitHub](https://img.shields.io/badge/GitHub-Repository-orange?logo=github)](https://github.com/the-long-ride/engram) [![Website](https://img.shields.io/badge/Website-Homepage-orange)](https://the-long-ride.github.io/engram/) [![npm version](https://img.shields.io/npm/v/@the-long-ride/engram?color=orange&logo=npm)](https://www.npmjs.com/package/@the-long-ride/engram)\n\n![Engram cover](https://raw.githubusercontent.com/the-long-ride/engram/main/media/cover/engram-cover.png)\n\n\n\n**Engram is a human-owned, file-first memory protocol for AI agents. Grow with you & your teams.**\n\nIt gives agents memory without giving agents ownership of memory. Durable rules, workflows, and project knowledge live as plain Markdown, reviewed by humans, portable through Git, and usable by any agent.\n\nFull documentation lives on the website: [@the-long-ride/engram docs-site](https://the-long-ride.github.io/engram/docs/intro)\n\n---\n\n## Key Highlights\n\n- **Human in the Loop**: Direct CLI saves use A/B/C approval. AI-agent chat saves use an exact-candidate `yes` / `audit` / `cancel` loop before the agent writes with `save-session --force`.\n- **Partial Force Safety**: `save-session --force` saves unrelated ready candidates, but defers candidates that need dependency or duplicate review with ID-only `engram load --id ...` guidance.\n- **Context-Optimized**: Routes meaningful task matches plus prerequisites into a compact pack (default: 8 files) to avoid context bloat.\n- **Git-Native & Portable**: Plain Markdown files stored in `.agents/.engram/` synced via Git—completely vendor-agnostic and offline-first.\n- **Privacy & Security Control**: Runs 100% locally and scans for PII/secrets before writing.\n- **Prerequisite Graphs**: Declares dependencies (`depends_on`) so agents load foundational rules before advanced tasks automatically.\n- **Evidence-Backed Provenance**: `observe` writes a sanitized immutable evidence trace plus an editable inbox review wrapper; approved schema v3 memories cite source traces through `evidence_refs`.\n- **Authority Separation**: Raw evidence is always `authority: evidence`; active memory is explicitly `instruction` or `reference`, preventing source material from silently becoming commands.\n\n---\n\n\n### Evidence-Backed Memory Foundation\n\nEngram separates source evidence from approved memory:\n\n```text\nengram observe --file session.md\n  -> .agents/.engram/traces/<trace-id>.jsonl   # immutable evidence trace\n  -> .agents/.engram/inbox/<observation>.md    # editable review wrapper\n\nengram save-session --file .agents/.engram/inbox/<observation>.md\n  -> approved schema v3 Markdown memory\n  -> authority: instruction | reference\n  -> evidence_refs: [tr_...]\n  -> derived_from: [session-id]\n```\n\nThe wrapper is review material, not authority. During promotion Engram reopens the immutable trace, validates its hash and scope, and uses the trace content rather than edited wrapper text. Legacy v1 and v2 memories remain readable; newly created or updated memories use schema v3 with revision and validity metadata.\n\nThe CLI and Entry Web UI expose the same memory provenance: `authority`, `revision`, `evidence_refs`, `derived_from`, supersession links, validity dates, and `last_confirmed`.\n\nSee [Evidence traces and provenance](https://the-long-ride.github.io/engram/docs/concepts/evidence-traces).\n\n### High-Level System Flow\n\n```mermaid\ngraph TD\n    classDef human fill:#1a3a5f,stroke:#3182ce,stroke-width:2px,color:#fff;\n    classDef agent fill:#2d3748,stroke:#4a5568,stroke-width:2px,color:#fff;\n    classDef storage fill:#234e52,stroke:#319795,stroke-width:2px,color:#fff;\n    classDef action fill:#2c5282,stroke:#4299e1,stroke-width:1px,color:#fff;\n\n    User[\"👤 You\"]:::human\n    AI[\"🤖 AI Host\\n(Codex, Claude, Gemini, etc.)\"]:::agent\n\n    subgraph Entry [\"How Engram Reaches the Agent\"]\n        Links[\"Linked instructions,\\nslash commands, MCP\"]:::action\n        Hooks[\"Optional hooks\\n(SessionStart and prompt turns)\"]:::action\n    end\n\n    subgraph Read [\"Read Path\"]\n        Trigger[\"Task request or prompt turn\"]:::action\n        Load[\"Load/search request\\n(engram load, search, graph)\"]:::action\n        Route[\"Anchor on meaningful terms\\nthen rerank by tags, recency,\\ndependency graph, sqlite-vec\"]:::action\n        Refine[\"Refine to compact top-N pack\\n(default 8 unless --all)\"]:::action\n        Cache[\"Hook cache checks routed signature\"]:::action\n        Inject[\"Inject compact memory pack\"]:::action\n        Proof[\"Proof line\\nloaded, reused, or skipped\"]:::action\n    end\n\n    subgraph Write [\"Write Path\"]\n        Proposal[\"Proposal / preview flows\\n(save, save-session / propose,\\ntake-control, metacognize,\\nresolve-conflicts)\"]:::action\n        Observe[\"Observe sanitizes source\\nand creates trace + wrapper\"]:::action\n        Scan[\"Safety checks\\n(PII, secrets, prompt injection)\"]:::action\n        Review[\"Human approval gate\\n(A / B / C or yes / audit / cancel,\\nplus explicit accept-all flows)\"]:::action\n        Persist[\"Write approved schema v3 memory\\nwith evidence_refs\"]:::action\n        Rebuild[\"Refresh hashes, index, graph,\\noptional sqlite-vec\"]:::action\n    end\n\n    subgraph Memory [\"Memory Layer\"]\n        Workspace[\"📁 Workspace memory\\n(.agents/.engram/)\"]:::storage\n        Global[\"🌐 Global memory and profiles\\n($ENGRAM_GLOBAL_DIR)\"]:::storage\n        TraceStore[\"🔒 Immutable evidence traces\\n(traces/<trace-id>.jsonl)\"]:::storage\n        Inbox[\"📝 Editable review wrappers\\n(inbox/*.md, non-indexed)\"]:::storage\n        Derived[\"🧠 Derived data\\n(hashes, index, graph, sqlite-vec)\"]:::storage\n        Sync[\"☁️ Git / cloud sync\"]:::storage\n    end\n\n    User <-->|Chat and collaborate| AI\n    AI --> Links\n    AI --> Hooks\n    Links --> Trigger\n    Hooks --> Trigger\n    Trigger --> Load\n    Load --> Route\n    Route --> Workspace\n    Route --> Global\n    Workspace --> Derived\n    Global --> Derived\n    Derived -->|Ranking signals| Route\n    Route --> Refine\n    Refine --> Cache\n    Cache -->|New or changed context| Inject\n    Cache -->|Same routed context| Proof\n    Inject -->|Memory pack| AI\n    Inject --> Proof\n    Proof -->|Visibility only| AI\n    AI -->|Propose durable memory| Proposal\n    AI -->|Capture raw note| Observe\n    Proposal --> Scan\n    Scan --> Review\n    User -->|Approve, reject, or edit| Review\n    Review --> Persist\n    Observe --> TraceStore\n    Observe --> Inbox\n    Inbox --> Review\n    TraceStore -->|Verified source| Review\n    Persist --> Workspace\n    Persist --> Global\n    Persist --> Rebuild\n    Rebuild --> Derived\n    Workspace --> Sync\n    Global --> Sync\n```\n\n---\n\n### DB and Memory Architecture\n\n```mermaid\nflowchart TB\n    classDef source fill:#234e52,stroke:#319795,stroke-width:2px,color:#fff;\n    classDef derived fill:#2c5282,stroke:#4299e1,stroke-width:1px,color:#fff;\n    classDef runtime fill:#2d3748,stroke:#4a5568,stroke-width:2px,color:#fff;\n    classDef write fill:#744210,stroke:#d69e2e,stroke-width:1px,color:#fff;\n\n    Agent[\"Agents / CLI / MCP / Hooks\"]:::runtime\n    Query[\"Load, search, route\"]:::runtime\n    Rank[\"Route + rank relevant memory\"]:::runtime\n\n    WorkspaceMD[\"Workspace Markdown memories\\n(.agents/.engram/)\"]:::source\n    GlobalMD[\"Global/profile Markdown memories\\n($ENGRAM_GLOBAL_DIR)\"]:::source\n    TraceJSONL[\"Immutable evidence traces\\ntraces/<trace-id>.jsonl\"]:::source\n    InboxMD[\"Editable inbox wrappers\\nnon-indexed review material\"]:::source\n\n    Rebuild[\"Rebuild derived layers\"]:::derived\n    Hashes[\"Hashes\"]:::derived\n    Index[\"JSON index\"]:::derived\n    Graph[\"Dependency graph\"]:::derived\n    Vec[\"Optional sqlite-vec\"]:::derived\n    ConfigDB[\"Optional SQLite config DB\\n(settings, not source of truth)\"]:::derived\n\n    ObserveWrite[\"Observe + sanitize\"]:::write\n    Approve[\"Human approval\"]:::write\n    Persist[\"Write approved schema v3 Markdown\\nwith evidence_refs\"]:::write\n\n    Agent --> Query --> Rank\n    Rank --> WorkspaceMD\n    Rank --> GlobalMD\n    WorkspaceMD --> Rebuild\n    GlobalMD --> Rebuild\n    Rebuild --> Hashes\n    Rebuild --> Index\n    Rebuild --> Graph\n    Rebuild --> Vec\n    Query --> ConfigDB\n    Hashes --> Rank\n    Index --> Rank\n    Graph --> Rank\n    Vec --> Rank\n    Agent --> ObserveWrite --> TraceJSONL\n    ObserveWrite --> InboxMD\n    InboxMD --> Approve\n    TraceJSONL --> Approve\n    Agent --> Approve --> Persist\n    Persist --> WorkspaceMD\n    Persist --> GlobalMD\n```\n\n### Scope Resolution Examples\n\n```mermaid\nflowchart TD\n    classDef scope fill:#234e52,stroke:#319795,stroke-width:2px,color:#fff;\n    classDef cmd fill:#2d3748,stroke:#4a5568,stroke-width:2px,color:#fff;\n    classDef result fill:#2c5282,stroke:#4299e1,stroke-width:1px,color:#fff;\n\n    subgraph Example1 [\"Example 1: normal workspace task\"]\n        Cmd1[\"engram load TASK\"]:::cmd\n        Ws1[\"Workspace memory\"]:::scope\n        Prof1[\"Pinned/default profile\"]:::scope\n        G1[\"Global root\"]:::scope\n        Out1[\"Workspace first,\\nthen profile/global\\nfallback\"]:::result\n        Cmd1 --> Ws1 --> Out1\n        Cmd1 --> Prof1 --> Out1\n        Prof1 --> G1\n    end\n\n    subgraph Example2 [\"Example 2: workspace pinned to profile\"]\n        Cmd2[\"engram profile use client-a --workspace\"]:::cmd\n        Ws2[\"Workspace memory\"]:::scope\n        Prof2[\"Pinned profile: client-a\"]:::scope\n        Out2[\"All loads in this\\nworkspace use\\nworkspace + client-a\"]:::result\n        Cmd2 --> Ws2 --> Out2\n        Cmd2 --> Prof2 --> Out2\n    end\n\n    subgraph Example3 [\"Example 3: explicit different profile\"]\n        Cmd3[\"engram load --profile ops TASK\"]:::cmd\n        Prof3[\"Explicit profile: ops\"]:::scope\n        Off3[\"Workspace memory\\ndisabled for\\nthis command\"]:::result\n        Cmd3 --> Prof3 --> Off3\n    end\n\n    subgraph Example4 [\"Example 4: global-only mode\"]\n        Cmd4[\"engram inject --global-only\\n--global-path PATH\"]:::cmd\n        G4[\"Global root +\\nchosen profile\"]:::scope\n        Out4[\"No workspace root.\\nSaves and loads\\nstay global.\"]:::result\n        Cmd4 --> G4 --> Out4\n    end\n\n    Example1 --> Example2\n    Example2 --> Example3\n    Example3 --> Example4\n```\n\n---\n\n## What It Is (The Contract)\n\n- **Markdown is durable memory** — no hidden binary or proprietary formats.\n- **Immutable traces preserve evidence** — each `traces/<trace-id>.jsonl` file contains one canonical sanitized source record.\n- **Schema v3 links memory to evidence** — `authority`, `evidence_refs`, `derived_from`, `revision`, supersession, and validity fields make provenance explicit.\n- **JSON index, graph, and optional sqlite-vec sidecars** act as acceleration layers.\n- **Approval is the trust boundary** — the core principle is that agents suggest, humans approve.\n- **Hashes check integrity** and **Ignore rules handle privacy**.\n- **Profiles isolate memory contexts** (personal, client, and corporate). Resolution order is explicit `--profile`/`ENGRAM_PROFILE`, workspace default, then user default; a workspace-pinned profile controls all CLI, MCP, and agent-hook loads in that workspace.\n- **Git provides portability and audit history** — share rules across the team.\n- **Agent adapters are convenience, not authority**.\n- **Runtime-capable hosts get bootstrap instructions** — short `AGENTS.md`/`CLAUDE.md`/`GEMINI.md` text plus MCP tools and Agent Skills for the full workflow. Fallback targets get complete compact protocol.\n- **Strict rules govern agent output** to prevent context drift and hallucinations.\n- **SQLite config DB is optional** — if the DB cannot be opened or initialized, commands fall back to JSON config snapshots.\n\n### Git author metadata\n\nEngram resolves the workspace author, then the global Engram author, then read-only Git fallback values. New memories write separate identity fields:\n\n```yaml\nauthor_name: Jane Doe\nauthor_email: jane@example.com\n```\n\nAuthor settings affect future memories only. A workspace override never changes global Git configuration. Use `engram author sync-git-global --confirm` only after reviewing `--plan`; use `engram author migrate-memories --plan` before explicitly migrating existing memories. See the [Git author settings guide](https://the-long-ride.github.io/engram/docs/operations/git-author-settings).\n\n---\n\n## Why Engram Exists (Tactical Solutions)\n\nStandard rule files get sent with every single message, bloating context, causing drift, leaking secrets, or locking you to cloud vendors. Engram moves memory into files to solve these problems:\n\n| Tactical Challenge | Engram Answer |\n| --- | --- |\n| **Too many rules bloating context** | Routes meaningful task matches and explicit prerequisites into a compact context pack, defaulting to 8 memories. |\n| **Silent writes & secret leakage** | Requires human A/B/C approval and scans for secrets/injections. |\n| **Vendor lock-in** | Uses plain, readable Markdown files portable across any agent or model. |\n| **No offline access** | Runs locally as a lightweight file-based protocol—no server or internet required. |\n| **Context drift in team projects** | Synchronizes rules and guidelines team-wide via Git. |\n| **Broken or outdated memory** | Provides validation and cleanup utilities (`engram repair`, `engram quality-check`). |\n| **Summaries lose source evidence** | Keeps the immutable sanitized trace and lets approved memory cite it, instead of treating an editable summary as the original source. |\n\n---\n\n## Example Use Cases\n\n- **Personal & Professional**: Writing styles, personal preferences, checklists, vocabulary, templates, life principles.\n- **Software Development**: Coding rules, architectural guidelines, debug scripts, troubleshooting, team onboarding.\n- **Enterprise**: Security guardrails, compliance guidelines, brand tone, Git-based audit trails.\n\n---\n\n## Installation & Setup\n\n### 1. Install Engram CLI\n```bash\nnpm install -g @the-long-ride/engram\n```\n\n### 2. Configure & Link (Recommended First Step)\nTo configure your settings, manage profiles, and connect AI agents in a local web interface, run:\n```bash\nengram entry\n```\n- **Connect Tab**: Scan and link Engram to your local AI agents (installs skillsets and hooks automatically).\n  ![Engram Connect](media/demo/demo-engram-entry-connections.png)\n- **Construct Tab**: Configure core settings, load limits, rule variant preferences, and rule memory line limits. Global Git settings live under Git → Global.\n  ![Engram Construct Tab](media/demo/engram-entry-Constuct-tab.png)\n- **Git Tab**: Configure global and workspace author profiles, preview the resolved identity, manage Global Git configuration from the Global scope, explicitly sync the global profile to Git, and migrate legacy author metadata. The resolved name carries a compact source badge (`WORKSPACE`, `GLOBAL`, `GIT`, or `UNRESOLVED`) instead of a large scope tag. Global Git configuration is not shown in Workspace scope. Every info button links to localized docs and its matching CLI `--help`.\n- **Updates Tab**: Detect outdated workspace/global memories, instructions, skillsets, configs, hooks, and plugins; preview the exact shared upgrade plan before applying changes. Preview uses `All`, `Config`, `Instructions`, `Memories`, `Skillsets`, `Hooks`, and `Plugins` kind tabs, hiding empty kind tabs. The sidebar update card can copy `engram upgrade --latest --plan` without opening Updates. Conflicts open a review modal with **Current**, editable **Proposed**, and **Diff** views. **Diff** opens in **Inline** mode by default and can switch to **Parallel**: removed lines use `-` with a red background, added lines use `+` with a green background, and Parallel aligns **Current** with **Proposed** using the same red/green semantics. Resolve individually with **Use latest**, an edited proposal, **Keep current**, or **Force upgrade** when Engram can prove the file is an Engram-managed block or generated Engram file. Eligible pending conflicts also have checkboxes: **Select all visible** selects eligible rows in the active kind tab, **Confirm selected changes** accepts latest for the checked rows, and **Confirm all changes** accepts latest for every eligible pending conflict in the preview. Batch confirmation validates the whole selection first and writes all decisions atomically; one invalid, stale, or already-reviewed item means no batch decisions are saved. Bulk confirmation never forces manual edits. Upgrade-review checkbox controls share clear checked, keyboard-focus, and disabled states, while result toast feedback uses a green border/glow for success and a red border/glow for errors. **Force upgrade** is per-item: managed-block force replaces only the Engram block and preserves surrounding user bytes; generated-file force replaces the whole proven Engram-owned file. For file-backed conflicts, **Open in editor** opens the exact current artifact using `$VISUAL`, then `$EDITOR`, then the platform fallback; external edits make the saved preview/source hash stale and require a refresh. Instructions previews contain only the managed `<!-- engram:start -->` block, while the full global skillset stays in the companion `.agents/engram.md` guide. The final Upgrade button still requires every blocker to be reviewed, and a post-apply rescan must confirm expected-updated files converged to current before success is reported.\n- **Core Tab**: Review and resolve duplicate memory candidates across workspace, global, and profile scopes, or run metacognitive analysis.\n  ![Engram Core Settings](media/demo/engram-entry-Core-tab.png)\n- **Memories Tab**: Visualize active memories, search full Markdown content, include related matches, inspect dependency edges, and review the same provenance fields shown by CLI (`authority`, `revision`, `evidence_refs`, `derived_from`, supersession, and validity).\n  ![Engram Memories Graph View](media/demo/Memories-graph-view.png)\n\nAlternatively, you can manually link Engram to your agent:\n```bash\n# Link Engram in this workspace (installs skillset + MCP config + hooks where supported)\nengram link codex\n```\n\nAfter upgrading the npm package, preview configuration changes first:\n\n```bash\nengram upgrade --latest --plan\nengram upgrade --latest --review\nengram upgrade --latest\n```\n\nTo migrate legacy v1/v2 memory files to schema v3 with `.pre-v3.bak` backups and default `evidence_status: unverified` for unlinked observations, run:\n\n```bash\nengram upgrade --migrate-memories\n```\n\nPass `--no-migrate-memories` alongside `engram upgrade --latest --no-migrate-memories` to upgrade configs without modifying legacy memories.\n\nThe same inventory powers CLI and Entry Web UI. Config, instruction, and skillset\nconflicts receive a type-aware proposed replacement/merge. In Entry, review **Current**,\n**Proposed**, and **Diff**. Diff defaults to **Inline** and can switch to **Parallel**; Inline keeps `-` removed / `+` added markers with red/green backgrounds, while Parallel aligns **Current** and **Proposed** with the same colors. Edit Proposed if needed, choose **Use latest**, choose **Keep current**, or choose **Force upgrade** only when Engram shows a proven managed-block/generated-file ownership boundary. For bulk review, use **Select all visible**, **Confirm selected changes**, or **Confirm all changes**; only eligible pending replaceable conflicts participate, and the server validates the full batch before one atomic review write. Bulk actions never perform Force upgrade. Shared physical integration files are canonicalized into one upgrade item/write, and apply rescans expected-updated files before reporting success. In the CLI,\n`engram upgrade --latest --review` uses `[V]` diff, `[E]` edit, `[L]` latest, `[K]` Keep\ncurrent, and `[Q]` save/quit. Editing uses `$VISUAL`, then `$EDITOR`. Reviews are\nresumable and guarded by the file's source hash. `pendingReviewCount` must reach zero\nbefore apply; `engram upgrade --latest --yes` refuses unresolved/stale conflicts instead\nof guessing. Engram preserves user-authored bytes outside managed content. Vector indexing\nis a fail-open acceleration layer and cannot block an otherwise valid upgrade.\nSee the [configuration upgrades guide](https://the-long-ride.github.io/engram/docs/operations/configuration-upgrades).\n\nFor Gemini / Antigravity surfaces:\n```bash\nengram link gemini\n```\n\nOptional auto-load hooks are available for hosts that can inject context at both\nsession start and later prompt turns:\n```bash\nengram link codex\nengram link claude\nengram link gemini\nengram link cursor\nengram link windsurf\nengram link --global opencode\nengram set-read auto\nengram set-proof compact\n```\n\n**OpenCode hook support:** `engram link --global opencode` installs a managed local\nJavaScript plugin at `~/.config/opencode/plugins/engram.js` alongside rules, the Engram skill, and MCP\nconfiguration. The plugin uses `chat.message` to route the current user prompt\nand `experimental.chat.system.transform` to inject routed memory before each\nLLM request. OpenCode must be restarted or reloaded after `link`/`unlink`\nbecause local plugin files are loaded at startup. The plugin fails open and\nkeeps raw routed memory only in the running OpenCode process; Engram's disk hook\ncache remains hashes, session IDs, host, cwd, and routed signatures only.\nWorkspace OpenCode links write `AGENTS.md`, `.opencode/engram.md`,\n`.opencode/skills/engram/SKILL.md`, and `opencode.json`; if an existing\n`opencode.jsonc` is already present, Engram updates that file instead of\ncreating a parallel `opencode.json`. Global OpenCode links write\n`~/.config/opencode/AGENTS.md`, `~/.config/opencode/engram.md`,\n`~/.config/opencode/skills/engram/SKILL.md`, and\n`~/.config/opencode/opencode.jsonc`, or update an existing\n`~/.config/opencode/opencode.json`. OpenCode, Cursor, Windsurf, Codex,\nClaude, and Gemini JSON/JSONC config merges preserve unrelated user settings\nwhile only adding or refreshing Engram-managed entries.\nThe OpenCode MCP entry is intentionally simple and matches OpenCode's local MCP\nshape:\n\n```json\n\"engram\": {\n  \"type\": \"local\",\n  \"command\": [\"engram-mcp\"],\n  \"args\": [],\n  \"enabled\": true\n}\n```\n\n`engram unlink --global opencode` removes only the Engram-generated plugin; a\nhuman-authored `engram.js` is preserved unless `--force` is explicit.\n\nv1 hook installs are available for `codex`, `claude`, `gemini`, `opencode`,\n`cursor`, and `windsurf`/`cascade`. Antigravity compatibility currently routes\nthrough `gemini`. Cursor hooks inject startup context via `sessionStart` and\n`additional_context`; `beforeSubmitPrompt` is allow/block-only, not context\ninjection. Windsurf/Cascade hooks can audit/preload/block on `pre_user_prompt`\nbut cannot inject model context; rules and MCP provide the reliable AI context\nchannels. Copilot and Cline remain instruction/skillset/manual-load driven\nuntil their hook surfaces support reliable prompt-time context injection.\nUse `engram set-proof compact` when you want supported hooks to append a short\n`Engram proof:` line on each eligible turn showing whether Engram memory was\nloaded, reused, or skipped without changing `set-read` injection behavior.\n\n### 3. Inject Workspace\nRun this in the root of any project workspace to enable local memory routing:\n```bash\nengram inject\n```\n*Notice: creates local `.agents/.engram/`, prompts for global memory folder path, and allows optional submodules (`--submodule`) and cloud/remote sync config.*\n\n---\n\n## AI-Agent Quickstart\nWhen you ask an AI agent to save memory, the agent should first show the refined `TYPE: ... | TEXT: ...` candidate. For rule memories it should also show Light, Balanced, and Strict variants. Reply `yes` to save the exact candidate, `audit` to revise it, or `cancel` to stop. After `yes`, the agent writes the exact shown candidate with `engram save-session --force`.\n\nWhen the agent notices a durable rule, workflow, skill, or knowledge item during normal work, it should propose it at the end of its response only if it passes the value gate: durable, reusable, objective, triggerable, and not already covered by existing memory.\n\n\nYou can instruct your agent to use the following slash commands in chat:\n\nIf the host exposes only one visible `/engram` command, send bare `/engram` first to get a compact menu of `load`, `search`, `save`, `propose`, `entry`, and `help`.\n\n\n- **Start of a task**: `/engram load \"design pricing table component\"`\n- **Save key decisions/facts**: `/engram save knowledge \"Webhook secret is process.env.STRIPE_WEBHOOK\"`\n- **Brainstorm proposed memories**: `/engram propose`\n- **Summarize & save session**: `/engram save-session` (or `--query-level 3`, or `ss -f last 50 sessions` to force-save approved candidates)\n- **Capture evidence before approval**: `engram observe --file session.md`, review the inbox wrapper, then run `engram save-session --file .agents/.engram/inbox/<observation>.md`\n\nWhen an agent asks how to use Engram, run `engram llm`. It prints the packaged\n`llm.txt` AI-agent guide, which is safe to use before `engram inject`.\n\nWhen an AI agent proposes `TYPE: ... | TEXT: ...` memory candidates, it may add optional `CONTEXT: ...` when that helps explain why the memory exists. Simple facts can omit it and use the default approval context.\n\n---\n\n## CLI Command vs. AI Agent Cheat Sheet\n\n| Task | CLI Command | AI Agent Suggestion |\n| --- | --- | --- |\n| **Open Slash Menu** | `engram help` | `/engram` |\n| **Load Memory** | `engram load \"<task>\"` | `/engram load \"<task>\"` |\n| **Compact Load** | `engram load \"<task>\"` | `/engram load \"<task>\"` |\n| **Budgeted Load** | `engram load --budget-tokens 800 \"<task>\"` | `/engram load --budget-tokens 800 \"<task>\"` |\n| **Full Load** | `engram load --full \"<task>\"` | `/engram load --full \"<task>\"` |\n| **Dry Run Load** | `engram load --dry-run \"<task>\"` | `/engram load --dry-run \"<task>\"` |\n| **Save Single Memory** | `engram save <type> \"<text>\"` | `/engram save <type> \"<text>\"` |\n| **Propose Memories** | `engram save-session` | `/engram propose` or `/engram ss` |\n| **Capture Evidence** | `engram observe --file <path>` | Ask the agent to observe a file or session note |\n| **Promote Observed Evidence** | `engram save-session --file .agents/.engram/inbox/<observation>.md` | Review the wrapper, then approve exact candidates |\n| **Mine Recent Sessions** | `engram save-session --query-level <n>` | `/engram save-session --query-level <n>` |\n| **Force Saves** | `engram save-session --force` | `/engram ss -f` |\n| **Import Files / Docs** | `engram take-control --all` | `/engram take-control --all` |\n| **Import & Metacognize** | `engram take-control --all --metacognize --force` | `/engram take control force metacognize` |\n| **Restructure Memory** | `engram metacognize --workspace --force` | `/engram restructure workspace memory force` |\n| **Resolve Conflicts** | `engram resolve-conflicts --metacognize` | `/engram resolve conflicts and metacognize` |\n| **Check Config / Paths** | `engram entry` | `/engram entry` |\n| **Show Agent Guide** | `engram llm` | Run once when an agent needs Engram usage guidance |\n| **Manage Profiles** | `engram profile status` / `create` / `use` | `/engram profile status` |\n| **Show Author Identity** | `engram author show` | Inspect workspace, global, Git fallback, and resolved identity |\n| **Set Author Profile** | `engram author set --name \"Jane Doe\" --email \"jane@example.com\"` | Configure the global or workspace author |\n| **Remove Author Profile** | `engram author unset --scope workspace` | Remove one Engram-owned author profile |\n| **Sync Global Git Author** | `engram author sync-git-global --plan` / `--confirm` | Preview, then explicitly update global Git config |\n| **Migrate Memory Authors** | `engram author migrate-memories --plan` / `--confirm` | Backfill legacy metadata with backups |\n| **Configure Save Target** | `engram set-save-target <workspace/global/both>` | `/engram set-save-target <target>` |\n| **Configure Load Limit** | `engram set-load-limit <1..32>` | `/engram set-load-limit <count>` |\n| **Configure Auto Read** | `engram set-read startup|auto|always|manual|off` | `/engram set-read auto` |\n| **Configure Proof Visibility** | `engram set-proof off|compact` | `/engram set-proof compact` |\n| **Install Agent Hooks** | `engram link codex|claude|gemini|opencode|cursor|windsurf` | Run once from terminal |\n| **Update Global Path** | `engram update-global-folder <new-path>` | `/engram set global memory path to <new-path>` |\n| **Clone Memory** | `engram clone-memory <src> <dest>` | `/engram clone workspace memory to global` |\n| **Manage Workspaces** | `engram workspace list|info|set|unregister|link|unlink` | `/engram workspace list` |\n| **View/Set Config** | `engram config view|set` | `/engram config set <key> <value>` |\n| **Launch Web UI** | `engram entry` | `/engram entry` |\n| **Set Active Roles** | `engram set-role <roles>` | `/engram set-role <roles>` |\n| **Set Rule Strictness** | `engram set-rule-variant <variant>` | `/engram set-rule-variant <variant>` |\n| **Verify & Repair** | `engram verify` / `engram repair` | `/engram verify` / `/engram repair` |\n| **Scan Contradictions** | `engram quality-check` | `/engram quality-check` |\n| **Sync Memories** | `engram sync` | `/engram sync` |\n\n### Safe automation and team checks\n\n`engram policy init` creates a deny-by-default `.agents/engram.policy.json`. Use\n`engram policy validate --json` in CI, `engram autosave --policy --dry-run` to\npreview an allowed candidate, `engram policy audit --json` to inspect ID-only\nreceipts, and `engram policy rollback <audit-id>` to archive a policy-approved\nwrite immediately. Autonomous writes remain disabled until a\nreviewed policy explicitly enables them; quota and local JSONL audit receipts\napply per memory scope.\n\nTranscript ingestion is opt-in and evidence-only. Sanitized events create an immutable trace plus a non-indexed inbox review wrapper; they never become active memories automatically. Promotion reopens the trace, verifies its hash and scope, and writes approved schema v3 memory with `evidence_refs`.\n`engram capabilities --json` reports host-specific support without claiming\nprompt injection where a host cannot provide it.\n\nThe Entry UI groups work by task: Construct, Git, Updates, Memories, Review, Core, and Connect. Review\npreviews show a memory diff and ID-only dependency choices before any approval\nflow can write.\n\nWhen `engram set-role ...` or `engram set-rule-variant ...` succeeds, Engram now returns an `Agent action:` line. Engram-aware adapters and MCP hosts should immediately rerun `engram load \"<current task/request>\"` and replace earlier Engram-derived context in the same conversation. This happens after the command completes, not in the middle of a response, and installed skillset files still control future or reloaded chats.\n\n---\n\n## Comparisons\n\n### Compared With Agentmemory\n[rohitg00/agentmemory](https://github.com/rohitg00/agentmemory) is an automatic, background-running server-style memory engine. Engram differs by focusing on file-based local Markdown, human review, and no background daemon overhead.\n\n| Dimension | Engram | agentmemory |\n| --- | --- | --- |\n| Source of truth | Human-approved Markdown | Memory server/store |\n| Trust boundary | A/B/C approval before writes | Automatic capture |\n| Default shape | File protocol (no daemon) | Running service recommended |\n| Review model | Git diff and Markdown review | Viewer/API/session history |\n| Best for | Human-owned team memory | Automatic recall and replay |\n| Main risk | Requires save discipline | Invisible state |\n\n### Compared With Tolaria\n[refactoringhq/tolaria](https://github.com/refactoringhq/tolaria) is a Markdown-first desktop app. Engram sits lower in the stack, providing a CLI, agent skillsets, and Git-native rules governance instead of a full GUI workspace.\n\n| Dimension | Engram | Tolaria |\n| --- | --- | --- |\n| Source of truth | Memories in `.agents/.engram/` | Markdown vault notes |\n| Primary interface | CLI, slash adapters, agent skill | Desktop app |\n| Write model | Agents propose; humans approve | Humans directly manage Markdown |\n| Best for | Auditable memory governance | Browsing and managing vaults |\n\n### Compared With Obsidian\n[Obsidian](https://obsidian.md/) is a rich personal note-taking desktop/mobile app. Engram is an agent memory protocol: much smaller in scope, strict about human approval, and designed to track agent instructions like code.\n\n| Dimension | Engram | Obsidian |\n| --- | --- | --- |\n| Source of truth | Memories in `.agents/.engram/` | Local Markdown notes |\n| Write model | Agents propose; humans approve | Directly edit notes |\n| Best for | Auditable cross-agent memory | Note-taking and second brains |\n\n### Compared With Hermes Agent\nHermes Agent uses an autonomous, always-on memory structure with hard caps, whereas Engram is human-owned by default (automatable via rules) with tag/graph-based on-demand routing.\n\n| | Engram | Hermes Agent |\n|---|---|---|\n| **Philosophy** | Human-owned, file-first protocol (automation optional) | Autonomous, always-active memory |\n| **Storage** | Typed Markdown files in `.agents/.engram/` | `MEMORY.md` + `USER.md` (hard char caps) |\n| **Write model** | Human-approved by default (A/B/C gate; automatable via rules) | Agent writes autonomously |\n| **Recall** | On-demand: `engram load \"<task>\"` injects relevant files | Always-on: core files frozen into system prompt each session |\n| **Vector search** | Optional local sqlite-vec | Via external provider (agentmemory) |\n| **Overhead** | No daemon, requires save discipline (unless automated) | Server process + viewer UI, REST API, MCP server |\n\n### Compared With Built-In Agent Memory\nBuilt-in memory (ChatGPT, Claude Projects, Cursor rules) is siloed and invisible. Engram treats local files as the source of truth, offering team sharing via Git, scanning for secrets, and multi-agent portability.\n\n| Dimension | Engram | Built-In Agent Memory |\n| --- | --- | --- |\n| **Portability** | Plain Markdown readable by any agent | Locked to a single platform |\n| **Human Control** | Explicit A/B/C approval before writes | Silent background updates |\n| **Collaboration** | Git-friendly team sharing | Single-user only |\n| **Security** | Local-first, scans for PII/secrets | Cloud-first, high risk of secret leakage |\n\n---\n\n## Documentation\n\nFull documentation lives on the website: [https://the-long-ride.github.io/engram/](https://the-long-ride.github.io/engram/)\n\n## Roadmap & Companion Project\n\nWe are working on **Making Engram easier to use first even for non-technical users**, **AI Web Chat Integration**.\n\nFor visual Markdown vault navigation, use [Markdown Explorer](https://the-long-ride.github.io/markdown-explorer/).\n\n## License & Changelog\n\nLicensed under [GPL-3.0](LICENSE). See [Changelog](https://github.com/the-long-ride/engram/blob/main/CHANGELOG.md).\n","readmeFilename":"README.md"}