{"_id":"@aitytech/agentkits-memory","_rev":"11-c915937fd1faeb4a8e5b4c000b57a78b","name":"@aitytech/agentkits-memory","dist-tags":{"latest":"2.3.0"},"versions":{"1.0.0":{"name":"@aitytech/agentkits-memory","version":"1.0.0","keywords":["agentkits","memory","sqlite","vector-search","hnsw","claude-code","hooks"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@1.0.0","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"88f9f84145690f21e4ef19c890ed20a58d9d5445","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-1.0.0.tgz","fileCount":116,"integrity":"sha512-jonJF2WTK9OrTRmmDpBzlb++4bBkdQ50hFKpXEHCn4h92Tq0QfogJgXAPEyjVxMD2IsQlTUDh9QhB+2XZCw1Qg==","signatures":[{"sig":"MEYCIQCJW0x62OkOzgMWmXG8nSNlhMt75wRNdftO6oNhB7MFQgIhAMHDQxnUhr3CKnjLowcRHmpR2I7864bXKyVsuPBQ7nqU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":652668},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js"},"scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Project-scoped memory system for AgentKits with SQLite + HNSW vector search","directories":{},"_nodeVersion":"22.15.0","dependencies":{"sql.js":"^1.10.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"better-sqlite3":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_1.0.0_1769914009616_0.6226210515595629","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aitytech/agentkits-memory","version":"1.0.1","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@1.0.1","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"30ac181e720b62e796022fd04a20d6146a5432e2","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-1.0.1.tgz","fileCount":126,"integrity":"sha512-gbwkxxTkxb93Viv28XCScI0L1E7h26YTCSJzdRXZ+scXzSVw7//kPj5Nx8wQG+knCm5QlIbpxs8kJq/RcumcRQ==","signatures":[{"sig":"MEQCIGJNA9xyptenUIwkqbzoFic5ApJHQTlHzWNz3tHy2oTGAiAKbvYh8RxVDNz8AXQcuzNfHH4DTGM1dP9aW/XOZ/K4uQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":999509},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js"},"gitHead":"38607ece93eb9fe881d1d1119aef1fce4c3b20bf","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"sql.js":"^1.10.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"better-sqlite3":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_1.0.1_1769918323980_0.777625976065101","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@aitytech/agentkits-memory","version":"2.0.0","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.0.0","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"d0000d621865a11da20efe6bf120e87523c9adb3","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.0.0.tgz","fileCount":165,"integrity":"sha512-oIkfWDayX1yiI4MmfS1NspIsheu7GbvJBwXJCfIMtD7m3SDGsQYQ1sTcxVYsS/6UgfyRMvJbivvwHYJomRp4Ug==","signatures":[{"sig":"MEUCIQCBicg5PvN0mjPC1K+iwVslFzOWsg2tyMQ6gSvWFZ1ORgIgKIu4gocbPlR98p+msGLdOCIyDY+r+6JGNLrQ0cDPP/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1472750},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"fdee6c648ab1b4f193768b75a8e84827ca416f96","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.0.0_1770017806163_0.17577647879916158","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@aitytech/agentkits-memory","version":"2.0.1","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.0.1","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"54613ca767c1a2967bf053376b4c78620efba4f5","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.0.1.tgz","fileCount":165,"integrity":"sha512-CsuVxp495ikxsmcDotHpfyqqUnvUaKzhhJn6fFyf7+NDOFFG9Rtggrs2DsMhxy3Y+70R+Y8IhsLXmBX4pgycPA==","signatures":[{"sig":"MEUCIEe0rFFZem82qTLOfN1PLZew4KS8B9tPOA9sApJ3nhSOAiEA5n6/rC1iE0G4HsUFhoUFqAPZr4eP5EKRi7qdcxc/e/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1472771},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"e73424b7855d3c1da7eabc78d147aa404f9d56ad","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.0.1_1770021959812_0.37538248784566663","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@aitytech/agentkits-memory","version":"2.0.2","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.0.2","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"f3c4595668549673946b46e8c5e84cac9e95c494","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.0.2.tgz","fileCount":165,"integrity":"sha512-nkzz9gWZl5FA8sOCWQwrodBKOc0UzAXO1Qew6dwW1y76OZCBhqJBM3RwagJy2puqzRuoW4uVYX2FvJ5x6QRY8w==","signatures":[{"sig":"MEUCIEBN7fEfCnDU/xiu3SHrx4ipT5obZ0c4oUMfNnr+GAtXAiEAhK5EVr2fo2Qqa+DA4jyZQvL8vYgCIkHu9MnnbxrHW2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1473835},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"8dcf25dc24af47a7754e2b6624f6cb060ac5cbe4","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.0.2_1770022799412_0.7911955072363839","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@aitytech/agentkits-memory","version":"2.1.0","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.1.0","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"48fcd9e846ca70179e26d90398b34de119bf041b","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.1.0.tgz","fileCount":158,"integrity":"sha512-X9TUg1L6MpEF7TgswMfgeb2NCKdfgJomcBXxqDqWRdTDVaLckupEPFH22lnlt4syg0vMcBFNXN3lX56sCjOIMQ==","signatures":[{"sig":"MEYCIQDdAnpkfUYquu0i3JW3lAKHiQbseQ2wS61mFgizmKjRigIhALGzGK0PHSJYGhi2vDvbjGaRe1W03pNAncKKuIknVAmD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4626550},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"92947bfa96367d868469dfb300cea7da2308c86a","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.1.0_1770079902850_0.9670814217504482","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@aitytech/agentkits-memory","version":"2.2.0","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.2.0","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"313e84bd2eb4207f48bee215a6f041bc42b57cb7","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.2.0.tgz","fileCount":232,"integrity":"sha512-QU8zbyr2NgMClMsixYDJI+O1+TEOnmJn2v6cQpIEMOJ6MTASirsHZCYQMCgXz/aJzG6TVFLqK7izFkgqhvDnhw==","signatures":[{"sig":"MEUCIQDsVdSUtQOCipUcoJx8d2IwufXsSdb0l7XvNR0Jdp5rHQIgAhQZMrrCPvXdNqLFzgGmz/unPEQg7X1i8pnr8PMiUC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6595073},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"a86d9d72a243b39de43c23db4ffc21fd280efa10","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc && chmod +x dist/hooks/cli.js dist/mcp/server.js dist/cli/viewer.js dist/cli/web-viewer.js dist/cli/save.js dist/cli/setup.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0","@anthropic-ai/claude-agent-sdk":"^0.2.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.2.0_1770193865334_0.6138974057946243","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@aitytech/agentkits-memory","version":"2.2.1","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.2.1","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"03c0d573024ab2b606b28e5fc0eade8a3abfd2ba","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.2.1.tgz","fileCount":232,"integrity":"sha512-4JMaSWqLtQ27m7kjhoIvgc8640MBkTiRD7qCYI8eCNzqfVImNHsh2YRXM/sbLJ38hZZ3osHe5CpaWdx5guS1Ug==","signatures":[{"sig":"MEICIBQaL7+ovmTkTjiaHYgOc2p966TOHdVfQnrl3zo8vixwAh4Cb/AKNylK3lYJC4I6xrM0vRRJ4yuVAFuHWX7lk4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6595081},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"cb5ab58b8212279af713bb881ebd26e87a718969","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc && chmod +x dist/hooks/cli.js dist/mcp/server.js dist/cli/viewer.js dist/cli/web-viewer.js dist/cli/save.js dist/cli/setup.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0","@anthropic-ai/claude-agent-sdk":"^0.2.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.2.1_1770196686989_0.6591981259102908","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@aitytech/agentkits-memory","version":"2.2.2","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.2.2","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"473d87c0d3e34f7f0c6f6a40c4b888e512852aad","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.2.2.tgz","fileCount":232,"integrity":"sha512-zckIomwP9zBAqNabeiAaj6MlmConQ3jVmUAOCAra4QK5Lm1589D/4iUVS7psJ/a4enbT4WCdEPcuoqVC4XluTQ==","signatures":[{"sig":"MEYCIQClgPm1nWD0feKadh++Yis33L1T+3Jrd//JtcpfFJwIzwIhAMK2eQVmzrrFGieRBha9/wQwjjYUdndB+ay4YBNCtwwK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6598147},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"cb5ab58b8212279af713bb881ebd26e87a718969","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc && chmod +x dist/hooks/cli.js dist/mcp/server.js dist/cli/viewer.js dist/cli/web-viewer.js dist/cli/save.js dist/cli/setup.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0","@anthropic-ai/claude-agent-sdk":"^0.2.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.2.2_1770197989029_0.7981205958691073","host":"s3://npm-registry-packages-npm-production"}},"2.2.3":{"name":"@aitytech/agentkits-memory","version":"2.2.3","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","hnsw","claude-code","cursor","copilot","windsurf","cline","agentkits"],"author":{"name":"AityTech"},"license":"MIT","_id":"@aitytech/agentkits-memory@2.2.3","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"homepage":"https://agentkits.net","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"bin":{"agentkits-memory":"dist/cli/main.js","agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js"},"dist":{"shasum":"2c360bca93623068f56480297aee7d61a7541d55","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.2.3.tgz","fileCount":237,"integrity":"sha512-GylMMpTK/Z1w+x2nI9dowa3HS6MTqSes9DItz58eN1r47vYjJX0oDTwZQjyf7XZeASIrm2jo0F9erT7Q1slAeg==","signatures":[{"sig":"MEUCICfGFUKrd0QYXhZRIFDQsKm6LULga1re6kZYdf/Nf0weAiEA9Q1qFAw9oYpJrhir703xTnwS56ENeZi7tlIkOFYzzvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6608106},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"exports":{".":"./dist/index.js","./*":"./dist/*.js","./mcp":"./dist/mcp/index.js","./hooks":"./dist/hooks/index.js","./search":"./dist/search/index.js","./embeddings":"./dist/embeddings/index.js"},"gitHead":"f0063e154960dcfed54d07e5ab5f282e7a947a75","scripts":{"lint":"echo \"Memory lint pending\" && exit 0","test":"vitest run","build":"tsc && chmod +x dist/cli/main.js dist/hooks/cli.js dist/mcp/server.js dist/cli/viewer.js dist/cli/web-viewer.js dist/cli/save.js dist/cli/setup.js","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"repository":{"url":"git+https://github.com/aitytech/agentkits-memory.git","type":"git"},"_npmVersion":"10.9.2","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"better-sqlite3":"^11.0.0","@anthropic-ai/claude-agent-sdk":"^0.2.29"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.16","typescript":"^5.3.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","@types/better-sqlite3":"^7.6.11"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"_npmOperationalInternal":{"tmp":"tmp/agentkits-memory_2.2.3_1770429236738_0.8609325132558538","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@aitytech/agentkits-memory","version":"2.3.0","type":"module","description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":"./dist/index.js","./hooks":"./dist/hooks/index.js","./mcp":"./dist/mcp/index.js","./embeddings":"./dist/embeddings/index.js","./search":"./dist/search/index.js","./*":"./dist/*.js"},"bin":{"agentkits-memory":"dist/cli/main.js","agentkits-memory-hook":"dist/hooks/cli.js","agentkits-memory-server":"dist/mcp/server.js","agentkits-memory-viewer":"dist/cli/viewer.js","agentkits-memory-web":"dist/cli/web-viewer.js","agentkits-memory-save":"dist/cli/save.js","agentkits-memory-setup":"dist/cli/setup.js"},"scripts":{"build":"tsc && chmod +x dist/cli/main.js dist/hooks/cli.js dist/mcp/server.js dist/cli/viewer.js dist/cli/web-viewer.js dist/cli/save.js dist/cli/setup.js","test":"vitest run","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit","lint":"echo \"Memory lint pending\" && exit 0","clean":"rm -rf dist","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/aitytech/agentkits-memory.git"},"homepage":"https://agentkits.net","author":{"name":"AityTech"},"publishConfig":{"access":"public"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"^0.2.29","better-sqlite3":"^11.0.0","sqlite-vec":"^0.1.7-alpha.2"},"optionalDependencies":{"@xenova/transformers":"^2.17.0"},"devDependencies":{"@types/better-sqlite3":"^7.6.11","@types/node":"^20.0.0","@vitest/coverage-v8":"^4.0.18","typescript":"^5.3.0","vitest":"^4.0.16"},"keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","sqlite-vec","claude-code","cursor","copilot","windsurf","cline","agentkits"],"license":"MIT","engines":{"node":"^18.0.0 || ^20.0.0 || ^22.0.0"},"_id":"@aitytech/agentkits-memory@2.3.0","gitHead":"e7c372a3e63f0c0504b38dd2ca5ebd5bfa645cd6","bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-t503AgIeF0c30c1zJXFicbSiKsr/9sxJbLCxKQVSJbhA0aG5z64Q35HYX3SRP1kLMtn+5cOtiX+4I30Vktjkiw==","shasum":"c61d2834f9d5ccc326dd98d815656dd579d89093","tarball":"https://registry.npmjs.org/@aitytech/agentkits-memory/-/agentkits-memory-2.3.0.tgz","fileCount":236,"unpackedSize":6620177,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDYpTEVzwokxaISrJe+pHVoRh5dqdFWIZZX23xvQ0LeqwIhAIr5tzIo54N+sqpm5Da3DtM5BiuocRYtnbokguPVOXvd"}]},"_npmUser":{"name":"linhld","email":"linhld@live.com"},"directories":{},"maintainers":[{"name":"linhld","email":"linhld@live.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agentkits-memory_2.3.0_1770453247670_0.7803976850670158"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-01T02:46:49.502Z","modified":"2026-02-07T08:34:08.068Z","1.0.0":"2026-02-01T02:46:49.796Z","1.0.1":"2026-02-01T03:58:44.159Z","2.0.0":"2026-02-02T07:36:46.315Z","2.0.1":"2026-02-02T08:46:00.023Z","2.0.2":"2026-02-02T08:59:59.623Z","2.1.0":"2026-02-03T00:51:43.152Z","2.2.0":"2026-02-04T08:31:05.677Z","2.2.1":"2026-02-04T09:18:07.336Z","2.2.2":"2026-02-04T09:39:49.314Z","2.2.3":"2026-02-07T01:53:57.013Z","2.3.0":"2026-02-07T08:34:07.951Z"},"bugs":{"url":"https://github.com/aitytech/agentkits-memory/issues"},"author":{"name":"AityTech"},"license":"MIT","homepage":"https://agentkits.net","keywords":["mcp","model-context-protocol","ai-coding","memory","sqlite","vector-search","sqlite-vec","claude-code","cursor","copilot","windsurf","cline","agentkits"],"repository":{"type":"git","url":"git+https://github.com/aitytech/agentkits-memory.git"},"description":"Persistent memory system for AI coding assistants via MCP. Works with Claude Code, Cursor, Copilot, Windsurf, Cline.","maintainers":[{"name":"linhld","email":"linhld@live.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/logo.svg\" alt=\"AgentKits Logo\" width=\"80\" height=\"80\">\n</p>\n\n<h1 align=\"center\">AgentKits Memory</h1>\n\n<p align=\"center\">\n  <em>by <strong>AityTech</strong></em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@aitytech/agentkits-memory\"><img src=\"https://img.shields.io/npm/v/@aitytech/agentkits-memory.svg\" alt=\"npm\"></a>\n  <img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\">\n  <img src=\"https://img.shields.io/badge/Claude_Code-Compatible-blueviolet\" alt=\"Claude Code\">\n  <img src=\"https://img.shields.io/badge/Cursor-Compatible-blue\" alt=\"Cursor\">\n  <img src=\"https://img.shields.io/badge/Windsurf-Compatible-cyan\" alt=\"Windsurf\">\n  <img src=\"https://img.shields.io/badge/Cline-Compatible-orange\" alt=\"Cline\">\n  <img src=\"https://img.shields.io/badge/OpenCode-Compatible-green\" alt=\"OpenCode\">\n  <br>\n  <img src=\"https://img.shields.io/badge/tests-970_passed-brightgreen\" alt=\"Tests\">\n  <img src=\"https://img.shields.io/badge/coverage-91%25-brightgreen\" alt=\"Coverage\">\n</p>\n\n<p align=\"center\">\n  <strong>Persistent Memory System for AI Coding Assistants</strong>\n</p>\n\n<p align=\"center\">\n  Your AI assistant forgets everything between sessions. AgentKits Memory fixes that.<br>\n  Decisions, patterns, errors, and context — all persisted locally via MCP.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.agentkits.net/memory\">Website</a> •\n  <a href=\"https://www.agentkits.net/memory/docs\">Docs</a> •\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#how-it-works\">How It Works</a> •\n  <a href=\"#multi-platform-support\">Platforms</a> •\n  <a href=\"#cli-commands\">CLI</a> •\n  <a href=\"#web-viewer\">Web Viewer</a>\n</p>\n\n<p align=\"center\">\n  <strong>English</strong> · <a href=\"./i18n/README.zh.md\">简体中文</a> · <a href=\"./i18n/README.ja.md\">日本語</a> · <a href=\"./i18n/README.ko.md\">한국어</a> · <a href=\"./i18n/README.es.md\">Español</a> · <a href=\"./i18n/README.de.md\">Deutsch</a> · <a href=\"./i18n/README.fr.md\">Français</a> · <a href=\"./i18n/README.pt-br.md\">Português</a> · <a href=\"./i18n/README.vi.md\">Tiếng Việt</a> · <a href=\"./i18n/README.ru.md\">Русский</a> · <a href=\"./i18n/README.ar.md\">العربية</a>\n</p>\n\n---\n\n## Features\n\n| Feature | Benefit |\n|---------|---------|\n| **100% Local** | All data stays on your machine. No cloud, no API keys, no accounts |\n| **Blazing Fast** | Native SQLite (better-sqlite3) = instant queries, zero latency |\n| **Zero Config** | Works out of the box. No database setup required |\n| **Multi-Platform** | Claude Code, Cursor, Windsurf, Cline, OpenCode — one setup command |\n| **MCP Server** | 9 tools: save, search, timeline, details, recall, list, update, delete, status |\n| **Auto-Capture** | Hooks capture session context, tool usage, summaries automatically |\n| **AI Enrichment** | Background workers enrich observations with AI-generated summaries |\n| **Vector Search** | sqlite-vec semantic similarity with multilingual embeddings (100+ languages) |\n| **Web Viewer** | Browser UI to view, search, add, edit, delete memories |\n| **3-Layer Search** | Progressive disclosure saves ~87% tokens vs fetching everything |\n| **Lifecycle Mgmt** | Auto-compress, archive, and clean up old sessions |\n| **Export/Import** | Backup and restore memories as JSON |\n\n---\n\n## How It Works\n\n```\nSession 1: \"Use JWT for auth\"          Session 2: \"Add login endpoint\"\n┌──────────────────────────┐          ┌──────────────────────────┐\n│  You code with AI...     │          │  AI already knows:       │\n│  AI makes decisions      │          │  ✓ JWT auth decision     │\n│  AI encounters errors    │   ───►   │  ✓ Error solutions       │\n│  AI learns patterns      │  saved   │  ✓ Code patterns         │\n│                          │          │  ✓ Session context        │\n└──────────────────────────┘          └──────────────────────────┘\n         │                                      ▲\n         ▼                                      │\n    .claude/memory/memory.db  ──────────────────┘\n    (SQLite, 100% local)\n```\n\n1. **Setup once** — `npx @aitytech/agentkits-memory` configures your platform\n2. **Auto-capture** — Hooks record decisions, tool usage, and summaries as you work\n3. **Context injection** — Next session starts with relevant history from past sessions\n4. **Background processing** — Workers enrich observations with AI, generate embeddings, compress old data\n5. **Search anytime** — AI uses MCP tools (`memory_search` → `memory_details`) to find past context\n\nAll data stays in `.claude/memory/memory.db` on your machine. No cloud. No API keys required.\n\n---\n\n## Design Decisions That Matter\n\nMost memory tools scatter data across markdown files, require Python runtimes, or send your code to external APIs. AgentKits Memory makes fundamentally different choices:\n\n| Design Choice | Why It Matters |\n|---------------|----------------|\n| **Single SQLite database** | One file (`memory.db`) holds everything — memories, sessions, observations, embeddings. No scattered files to sync, no merge conflicts, no orphaned data. Backup = copy one file |\n| **Native Node.js, zero Python** | Runs wherever Node runs. No conda, no pip, no virtualenv. Same language as your MCP server — one `npx` command, done |\n| **Token-efficient 3-layer search** | Search index first (~50 tokens/result), then timeline context, then full details. Only fetch what you need. Other tools dump entire memory files into context, burning tokens on irrelevant content |\n| **Auto-capture via hooks** | Decisions, patterns, and errors are recorded as they happen — not after you remember to save them. Session context injection happens automatically on next session start |\n| **Local embeddings, no API calls** | Vector search uses a local ONNX model (multilingual-e5-small). Semantic search works offline, costs nothing, and supports 100+ languages |\n| **Background workers** | AI enrichment, embedding generation, and compression run asynchronously. Your coding flow is never blocked |\n| **Multi-platform from day one** | One `--platform=all` flag configures Claude Code, Cursor, Windsurf, Cline, and OpenCode simultaneously. Same memory database, different editors |\n| **Structured observation data** | Tool usage is captured with type classification (read/write/execute/search), file tracking, intent detection, and AI-generated narratives — not raw text dumps |\n| **No process leaks** | Background workers self-terminate after 5 minutes, use PID-based lock files with stale-lock cleanup, and handle SIGTERM/SIGINT gracefully. No zombie processes, no orphaned workers |\n| **No memory leaks** | Hooks run as short-lived processes (not long-running daemons). Database connections close on shutdown. Embedding subprocess has bounded respawn (max 2), pending request timeouts, and graceful cleanup of all timers and queues |\n\n---\n\n## Web Viewer\n\nView and manage your memories through a modern web interface.\n\n```bash\nnpx @aitytech/agentkits-memory web\n```\n\nThen open **http://localhost:1905** in your browser.\n\n### Session List\n\nBrowse all sessions with timeline view and activity details.\n\n![Session List](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-session-list_v2.png)\n\n### Memory List\n\nBrowse all stored memories with search and namespace filtering.\n\n![Memory List](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-memory-list_v2.png)\n\n### Add Memory\n\nCreate new memories with key, namespace, type, content, and tags.\n\n![Add Memory](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-add-memory_v2.png)\n\n### Memory Details\n\nView full memory details with edit and delete options.\n\n![Memory Detail](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-memory-detail_v2.png)\n\n### Manage Embeddings\n\nGenerate and manage vector embeddings for semantic search.\n\n![Manage Embeddings](https://raw.githubusercontent.com/aitytech/agentkits-memory/main/assets/agentkits-memory-embedding_v2.png)\n\n---\n\n## Quick Start\n\n### Option 1: Claude Code Plugin Marketplace (Recommended for Claude Code)\n\nInstall as a plugin with one command — no manual configuration needed:\n\n```bash\n/plugin marketplace add aitytech/agentkits-memory\n/plugin install agentkits-memory@agentkits-memory\n```\n\nThis installs hooks, MCP server, and memory workflow skill automatically. Restart Claude Code after installation.\n\n### Option 2: Automated Setup (All Platforms)\n\n```bash\nnpx @aitytech/agentkits-memory\n```\n\nThis auto-detects your platform and configures everything: MCP server, hooks (Claude Code/OpenCode), rules files (Cursor/Windsurf/Cline), and downloads the embedding model.\n\n**Target a specific platform:**\n\n```bash\nnpx @aitytech/agentkits-memory --platform=cursor\nnpx @aitytech/agentkits-memory --platform=windsurf,cline\nnpx @aitytech/agentkits-memory --platform=all\n```\n\n### Option 3: Manual MCP Configuration\n\nIf you prefer manual setup, add to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aitytech/agentkits-memory\", \"server\"]\n    }\n  }\n}\n```\n\nConfig file locations:\n- **Claude Code**: `.claude/settings.json` (embedded in `mcpServers` key)\n- **Cursor**: `.cursor/mcp.json`\n- **Windsurf**: `.windsurf/mcp.json`\n- **Cline / OpenCode**: `.mcp.json` (project root)\n\n### 3. MCP Tools\n\nOnce configured, your AI assistant can use these tools:\n\n| Tool | Description |\n|------|-------------|\n| `memory_status` | Check memory system status (call first!) |\n| `memory_save` | Save decisions, patterns, errors, or context |\n| `memory_search` | **[Step 1]** Search index — lightweight IDs + titles (~50 tokens/result) |\n| `memory_timeline` | **[Step 2]** Get temporal context around a memory |\n| `memory_details` | **[Step 3]** Get full content for specific IDs |\n| `memory_recall` | Quick topic overview — grouped summary |\n| `memory_list` | List recent memories |\n| `memory_update` | Update existing memory content or tags |\n| `memory_delete` | Remove outdated memories |\n\n---\n\n## Progressive Disclosure (Token-Efficient Search)\n\nAgentKits Memory uses a **3-layer search pattern** that saves ~70% tokens compared to fetching full content upfront.\n\n### How It Works\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  Step 1: memory_search                                      │\n│  Returns: IDs, titles, tags, scores (~50 tokens/item)       │\n│  → Review index, pick relevant memories                     │\n└─────────────────────────────────────────────────────────────┘\n                             ↓\n┌─────────────────────────────────────────────────────────────┐\n│  Step 2: memory_timeline (optional)                         │\n│  Returns: Context ±30 minutes around memory                 │\n│  → Understand what happened before/after                    │\n└─────────────────────────────────────────────────────────────┘\n                             ↓\n┌─────────────────────────────────────────────────────────────┐\n│  Step 3: memory_details                                     │\n│  Returns: Full content for selected IDs only                │\n│  → Fetch only what you actually need                        │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Example Workflow\n\n```typescript\n// Step 1: Search - get lightweight index\nmemory_search({ query: \"authentication\" })\n// → Returns: [{ id: \"abc\", title: \"JWT pattern...\", score: 85% }]\n\n// Step 2: (Optional) See temporal context\nmemory_timeline({ anchor: \"abc\" })\n// → Returns: What happened before/after this memory\n\n// Step 3: Get full content only for what you need\nmemory_details({ ids: [\"abc\"] })\n// → Returns: Full content for selected memory\n```\n\n### Token Savings\n\n| Approach | Tokens Used |\n|----------|-------------|\n| **Old:** Fetch all content | ~500 tokens × 10 results = 5000 tokens |\n| **New:** Progressive disclosure | 50 × 10 + 500 × 2 = 1500 tokens |\n| **Savings** | **70% reduction** |\n\n---\n\n## CLI Commands\n\n```bash\n# One-command setup (auto-detects platform)\nnpx @aitytech/agentkits-memory\nnpx @aitytech/agentkits-memory setup --platform=cursor   # specific platform\nnpx @aitytech/agentkits-memory setup --platform=all      # all platforms\nnpx @aitytech/agentkits-memory setup --force             # re-install/update\n\n# Start MCP server\nnpx @aitytech/agentkits-memory server\n\n# Web viewer (port 1905)\nnpx @aitytech/agentkits-memory web\n\n# Terminal viewer\nnpx @aitytech/agentkits-memory viewer\nnpx @aitytech/agentkits-memory viewer --stats\nnpx @aitytech/agentkits-memory viewer --json\n\n# Save from CLI\nnpx @aitytech/agentkits-memory save \"Use JWT with refresh tokens\" --category pattern --tags auth,security\n\n# Settings\nnpx @aitytech/agentkits-memory hook settings .\nnpx @aitytech/agentkits-memory hook settings . --reset\nnpx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-...\n\n# Export / Import\nnpx @aitytech/agentkits-memory hook export . my-project ./backup.json\nnpx @aitytech/agentkits-memory hook import . ./backup.json\n\n# Lifecycle management\nnpx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30\nnpx @aitytech/agentkits-memory hook lifecycle-stats .\n```\n\n---\n\n## Programmatic Usage\n\n```typescript\nimport { ProjectMemoryService } from '@aitytech/agentkits-memory';\n\nconst memory = new ProjectMemoryService({\n  baseDir: '.claude/memory',\n  dbFilename: 'memory.db',\n});\nawait memory.initialize();\n\n// Store a memory\nawait memory.storeEntry({\n  key: 'auth-pattern',\n  content: 'Use JWT with refresh tokens for authentication',\n  namespace: 'patterns',\n  tags: ['auth', 'security'],\n});\n\n// Query memories\nconst results = await memory.query({\n  type: 'hybrid',\n  namespace: 'patterns',\n  content: 'authentication',\n  limit: 10,\n});\n\n// Get by key\nconst entry = await memory.getByKey('patterns', 'auth-pattern');\n```\n\n---\n\n## Auto-Capture Hooks\n\nHooks automatically capture your AI coding sessions (Claude Code and OpenCode only):\n\n| Hook | Trigger | Action |\n|------|---------|--------|\n| `context` | Session Start | Injects previous session context + memory status |\n| `session-init` | User Prompt | Initializes/resumes session, records prompts |\n| `observation` | After Tool Use | Captures tool usage with intent detection |\n| `summarize` | Session End | Generates structured session summary |\n| `user-message` | Session Start | Displays memory status to user (stderr) |\n\nSetup hooks:\n```bash\nnpx @aitytech/agentkits-memory\n```\n\n**What gets captured automatically:**\n- File reads/writes with paths\n- Code changes as structured diffs (before → after)\n- Developer intent (bugfix, feature, refactor, investigation, etc.)\n- Session summaries with decisions, errors, and next steps\n- Multi-prompt tracking within sessions\n\n---\n\n## Multi-Platform Support\n\n| Platform | MCP | Hooks | Rules File | Setup |\n|----------|-----|-------|------------|-------|\n| **Claude Code** | `.claude/settings.json` | ✅ Full | CLAUDE.md (skill) | `--platform=claude-code` |\n| **Cursor** | `.cursor/mcp.json` | — | `.cursorrules` | `--platform=cursor` |\n| **Windsurf** | `.windsurf/mcp.json` | — | `.windsurfrules` | `--platform=windsurf` |\n| **Cline** | `.mcp.json` | — | `.clinerules` | `--platform=cline` |\n| **OpenCode** | `.mcp.json` | ✅ Full | — | `--platform=opencode` |\n\n- **MCP Server** works with all platforms (memory tools via MCP protocol)\n- **Hooks** provide auto-capture on Claude Code and OpenCode\n- **Rules files** teach Cursor/Windsurf/Cline the memory workflow\n- **Memory data** always stored in `.claude/memory/` (single source of truth)\n\n---\n\n## Background Workers\n\nAfter each session, background workers process queued tasks:\n\n| Worker | Task | Description |\n|--------|------|-------------|\n| `embed-session` | Embeddings | Generate vector embeddings for semantic search |\n| `enrich-session` | AI Enrichment | Enrich observations with AI-generated summaries, facts, concepts |\n| `compress-session` | Compression | Compress old observations (10:1–25:1) and generate session digests (20:1–100:1) |\n\nWorkers run automatically after session end. Each worker:\n- Processes up to 200 items per run\n- Uses lock files to prevent concurrent execution\n- Auto-terminates after 5 minutes (prevents zombies)\n- Retries failed tasks up to 3 times\n\n---\n\n## AI Provider Configuration\n\nAI enrichment uses pluggable providers. Default is `claude-cli` (no API key needed).\n\n| Provider | Type | Default Model | Notes |\n|----------|------|---------------|-------|\n| **Claude CLI** | `claude-cli` | `haiku` | Uses `claude --print`, no API key needed |\n| **OpenAI** | `openai` | `gpt-4o-mini` | Any OpenAI model |\n| **Google Gemini** | `gemini` | `gemini-2.0-flash` | Google AI Studio key |\n| **OpenRouter** | `openai` | any | Set `baseUrl` to `https://openrouter.ai/api/v1` |\n| **GLM (Zhipu)** | `openai` | any | Set `baseUrl` to `https://open.bigmodel.cn/api/paas/v4` |\n| **Ollama** | `openai` | any | Set `baseUrl` to `http://localhost:11434/v1` |\n\n### Option 1: Environment Variables\n\n```bash\n# OpenAI\nexport AGENTKITS_AI_PROVIDER=openai\nexport AGENTKITS_AI_API_KEY=sk-...\n\n# Google Gemini\nexport AGENTKITS_AI_PROVIDER=gemini\nexport AGENTKITS_AI_API_KEY=AIza...\n\n# OpenRouter (uses OpenAI-compatible format)\nexport AGENTKITS_AI_PROVIDER=openai\nexport AGENTKITS_AI_API_KEY=sk-or-...\nexport AGENTKITS_AI_BASE_URL=https://openrouter.ai/api/v1\nexport AGENTKITS_AI_MODEL=anthropic/claude-3.5-haiku\n\n# Local Ollama (no API key needed)\nexport AGENTKITS_AI_PROVIDER=openai\nexport AGENTKITS_AI_BASE_URL=http://localhost:11434/v1\nexport AGENTKITS_AI_MODEL=llama3.2\n\n# Disable AI enrichment entirely\nexport AGENTKITS_AI_ENRICHMENT=false\n```\n\n### Option 2: Persistent Settings\n\n```bash\n# Saved to .claude/memory/settings.json — persists across sessions\nnpx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-...\nnpx @aitytech/agentkits-memory hook settings . aiProvider.provider=gemini aiProvider.apiKey=AIza...\nnpx @aitytech/agentkits-memory hook settings . aiProvider.baseUrl=https://openrouter.ai/api/v1\n\n# View current settings\nnpx @aitytech/agentkits-memory hook settings .\n\n# Reset to defaults\nnpx @aitytech/agentkits-memory hook settings . --reset\n```\n\n> **Priority:** Environment variables override settings.json. Settings.json overrides defaults.\n\n---\n\n## Lifecycle Management\n\nManage memory growth over time:\n\n```bash\n# Compress observations older than 7 days, archive sessions older than 30 days\nnpx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30\n\n# Also auto-delete archived sessions older than 90 days\nnpx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30 --delete --delete-days=90\n\n# View lifecycle statistics\nnpx @aitytech/agentkits-memory hook lifecycle-stats .\n```\n\n| Stage | What Happens |\n|-------|-------------|\n| **Compress** | AI-compresses observations, generates session digests |\n| **Archive** | Marks old sessions as archived (excluded from context) |\n| **Delete** | Removes archived sessions (opt-in, requires `--delete`) |\n\n---\n\n## Export / Import\n\nBackup and restore your project memories:\n\n```bash\n# Export all sessions for a project\nnpx @aitytech/agentkits-memory hook export . my-project ./backup.json\n\n# Import from backup (deduplicates automatically)\nnpx @aitytech/agentkits-memory hook import . ./backup.json\n```\n\nExport format includes sessions, observations, prompts, and summaries.\n\n---\n\n## Memory Categories\n\n| Category | Use Case |\n|----------|----------|\n| `decision` | Architecture decisions, tech stack picks, trade-offs |\n| `pattern` | Coding conventions, project patterns, recurring approaches |\n| `error` | Bug fixes, error solutions, debugging insights |\n| `context` | Project background, team conventions, environment setup |\n| `observation` | Auto-captured session observations |\n\n---\n\n## Storage\n\nMemories are stored in `.claude/memory/` within your project directory.\n\n```\n.claude/memory/\n├── memory.db          # SQLite database (all data)\n├── memory.db-wal      # Write-ahead log (temp)\n├── settings.json      # Persistent settings (AI provider, context config)\n└── embeddings-cache/  # Cached vector embeddings\n```\n\n---\n\n## CJK Language Support\n\nAgentKits Memory has **automatic CJK support** for Chinese, Japanese, and Korean text search.\n\n### Zero Configuration\n\nWhen `better-sqlite3` is installed (default), CJK search works automatically:\n\n```typescript\nimport { ProjectMemoryService } from '@aitytech/agentkits-memory';\n\nconst memory = new ProjectMemoryService('.claude/memory');\nawait memory.initialize();\n\n// Store CJK content\nawait memory.storeEntry({\n  key: 'auth-pattern',\n  content: '認証機能の実装パターン - JWT with refresh tokens',\n  namespace: 'patterns',\n});\n\n// Search in Japanese, Chinese, or Korean - it just works!\nconst results = await memory.query({\n  type: 'hybrid',\n  content: '認証機能',\n});\n```\n\n### How It Works\n\n- **Native SQLite**: Uses `better-sqlite3` for maximum performance\n- **Trigram tokenizer**: FTS5 with trigram creates 3-character sequences for CJK matching\n- **Smart fallback**: Short CJK queries (< 3 chars) automatically use LIKE search\n- **BM25 ranking**: Relevance scoring for search results\n\n### Advanced: Japanese Word Segmentation\n\nFor advanced Japanese with proper word segmentation, optionally use lindera:\n\n```typescript\nimport { createJapaneseOptimizedBackend } from '@aitytech/agentkits-memory';\n\nconst backend = createJapaneseOptimizedBackend({\n  databasePath: '.claude/memory/memory.db',\n  linderaPath: './path/to/liblindera_sqlite.dylib',\n});\n```\n\nRequires [lindera-sqlite](https://github.com/lindera/lindera-sqlite) build.\n\n---\n\n## API Reference\n\n### ProjectMemoryService\n\n```typescript\ninterface ProjectMemoryConfig {\n  baseDir: string;              // Default: '.claude/memory'\n  dbFilename: string;           // Default: 'memory.db'\n  enableVectorIndex: boolean;   // Default: false\n  dimensions: number;           // Default: 384\n  embeddingGenerator?: EmbeddingGenerator;\n  cacheEnabled: boolean;        // Default: true\n  cacheSize: number;            // Default: 1000\n  cacheTtl: number;             // Default: 300000 (5 min)\n}\n```\n\n### Methods\n\n| Method | Description |\n|--------|-------------|\n| `initialize()` | Initialize the memory service |\n| `shutdown()` | Shutdown and persist changes |\n| `storeEntry(input)` | Store a memory entry |\n| `get(id)` | Get entry by ID |\n| `getByKey(namespace, key)` | Get entry by namespace and key |\n| `update(id, update)` | Update an entry |\n| `delete(id)` | Delete an entry |\n| `query(query)` | Query entries with filters |\n| `semanticSearch(content, k)` | Semantic similarity search |\n| `count(namespace?)` | Count entries |\n| `listNamespaces()` | List all namespaces |\n| `getStats()` | Get statistics |\n\n---\n\n## Code Quality\n\nAgentKits Memory is thoroughly tested with **970 unit tests** across 21 test suites.\n\n| Metric | Coverage |\n|--------|----------|\n| **Statements** | 90.29% |\n| **Branches** | 80.85% |\n| **Functions** | 90.54% |\n| **Lines** | 91.74% |\n\n### Test Categories\n\n| Category | Tests | What's Covered |\n|----------|-------|----------------|\n| Core Memory Service | 56 | CRUD, search, pagination, categories, tags, import/export |\n| SQLite Backend | 65 | Schema, migrations, FTS5, transactions, error handling |\n| sqlite-vec Vector Index | 47 | Insert, search, delete, persistence, edge cases |\n| Hybrid Search | 44 | FTS + vector fusion, scoring, ranking, filters |\n| Token Economics | 27 | 3-layer search budgets, truncation, optimization |\n| Embedding System | 63 | Cache, subprocess, local models, CJK support |\n| Hook System | 502 | Context, session-init, observation, summarize, AI enrichment, service lifecycle, queue workers, adapters, types |\n| MCP Server | 48 | All 9 MCP tools, validation, error responses |\n| CLI | 34 | Platform detection, rules generation |\n| Integration | 84 | End-to-end flows, embedding integration, multi-session |\n\n```bash\n# Run tests\nnpm test\n\n# Run with coverage\nnpm run test:coverage\n```\n\n---\n\n## Requirements\n\n- **Node.js LTS**: 18.x, 20.x, or 22.x (recommended)\n- MCP-compatible AI coding assistant\n\n### Node.js Version Notes\n\nThis package uses `better-sqlite3` which requires native binaries. **Prebuilt binaries are available for LTS versions only**.\n\n| Node Version | Status | Notes |\n|--------------|--------|-------|\n| 18.x LTS | ✅ Works | Prebuilt binaries |\n| 20.x LTS | ✅ Works | Prebuilt binaries |\n| 22.x LTS | ✅ Works | Prebuilt binaries |\n| 19.x, 21.x, 23.x | ⚠️ Requires build tools | No prebuilt binaries |\n\n### Using Non-LTS Versions (Windows)\n\nIf you must use a non-LTS version (19, 21, 23), install build tools first:\n\n**Option 1: Visual Studio Build Tools**\n```powershell\n# Download and install from:\n# https://visualstudio.microsoft.com/visual-cpp-build-tools/\n# Select \"Desktop development with C++\" workload\n```\n\n**Option 2: windows-build-tools (npm)**\n```powershell\nnpm install --global windows-build-tools\n```\n\n**Option 3: Chocolatey**\n```powershell\nchoco install visualstudio2022-workload-vctools\n```\n\nSee [node-gyp Windows guide](https://github.com/nodejs/node-gyp#on-windows) for more details.\n\n---\n\n## AgentKits Ecosystem\n\n**AgentKits Memory** is part of the AgentKits ecosystem by AityTech - tools that make AI coding assistants smarter.\n\n| Product | Description | Link |\n|---------|-------------|------|\n| **AgentKits Engineer** | 28 specialized agents, 100+ skills, enterprise patterns | [GitHub](https://github.com/aitytech/agentkits-engineer) |\n| **AgentKits Marketing** | AI-powered marketing content generation | [GitHub](https://github.com/aitytech/agentkits-marketing) |\n| **AgentKits Memory** | Persistent memory for AI assistants (this package) | [npm](https://www.npmjs.com/package/@aitytech/agentkits-memory) |\n\n<p align=\"center\">\n  <a href=\"https://agentkits.net\">\n    <img src=\"https://img.shields.io/badge/Visit-agentkits.net-blue?style=for-the-badge\" alt=\"agentkits.net\">\n  </a>\n</p>\n\n---\n\n## Star History\n\n<a href=\"https://star-history.com/#aitytech/agentkits-memory&Date\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=aitytech/agentkits-memory&type=Date&theme=dark\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=aitytech/agentkits-memory&type=Date\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=aitytech/agentkits-memory&type=Date\" />\n </picture>\n</a>\n\n---\n\n## License\n\nMIT\n\n---\n\n<p align=\"center\">\n  <strong>Give your AI assistant memory that persists.</strong>\n</p>\n\n<p align=\"center\">\n  <em>AgentKits Memory by AityTech</em>\n</p>\n\n<p align=\"center\">\n  Star this repo if it helps your AI remember.\n</p>\n","readmeFilename":"README.md"}