{"_id":"@blamechris/repo-memory","_rev":"15-0f60b26970851fed913fe276c837fb88","name":"@blamechris/repo-memory","dist-tags":{"latest":"0.17.0"},"versions":{"0.1.0":{"name":"@blamechris/repo-memory","version":"0.1.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.1.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"9125339c057c541186ee94b1d4e804fe1e7ff256","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.1.0.tgz","fileCount":111,"integrity":"sha512-L8FGzwJ0pkoaQuL5ZB9m/W4Xh/cvilPy0D2K0oJPYM9PvUygqPryTni4oE2AdNZeCOaJTOt+I2f2Gdu+uVaLIg==","signatures":[{"sig":"MEYCIQDG9KjXp+vPA5FRJL6SHrAa0DdJu0YRgQ1gwj2UulU1CgIhAIeqMpInF8TR961zEXfwKZStOvmtGk/7XN5K+/xHgSgP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189176},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"f354fee2c8e9458b076dc85e1c59544082203e88","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.1.0_1772845900385_0.1869287997095348","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@blamechris/repo-memory","version":"0.2.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.2.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"ebf9fff149262ce328540cc37c9c8c9b5aa1d32d","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.2.0.tgz","fileCount":123,"integrity":"sha512-uxPlP0mxXN3x3FXSf7cxh4b4fw6g6nggtLzL5PZUK7JIX9ng2l7HDorTzXkuBduY21Cill92NdralMd9JtKnLA==","signatures":[{"sig":"MEYCIQDnDk/oEBFdFc7MNnkIVNC441bA9CIYfb9oA4mMN1L0QQIhAIw7tAxC4tpUv1NfyWVxWURDW+C6AoT4F0ipjC+09FJf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217031},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"f5ac72a61866ad3058dd7b4912ca4cf3cf74c4cd","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.2.0_1772848687010_0.5071239068231226","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@blamechris/repo-memory","version":"0.3.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.3.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"f26de4730de7cbad793a1ebfbd2fc7a684fc9942","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.3.0.tgz","fileCount":123,"integrity":"sha512-3q9Lcv5z8KSd7Fxk6XOsqfHcphjrm6yptF8wKOFwmQbSQIk9kj669KFmtsqAw/1v4Rp35SZL+ud+S2ofMXCXPA==","signatures":[{"sig":"MEQCIDUhNDPnoRcHcNcsWNRH45y4AYT7D4pZKttpqJ8vDKfjAiAUYtwRZmb6ir0B94jt1Q/j0PmlJY5q8LYD2105+cHclg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263484},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"bd4d4aff463e348a8d7747f3bf7f0143c5bf2d41","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.3.0_1772850880953_0.394669172588473","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@blamechris/repo-memory","version":"0.4.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.4.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"62e74ec27bc7c019d0a96050e7cbac942b667021","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.4.0.tgz","fileCount":127,"integrity":"sha512-zrQ1xf6U1Gsin1Mo8mLTepqjJxJnMdFLLBj7pxgNl+4a/VOU1r7KrWfIFF+NFif6M1TEKtdagpXqn0wXolKoVA==","signatures":[{"sig":"MEUCIQCXj5umnBVT0AoREXUXUrcLwtwesLOsQmHPI8HjAlECdwIgR0/BIYXDr+YqTHTF44y1f+xIudxaEKuS/izi7b7GX8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269770},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"e19cdab1d7e1d740ffccc08413dcf7cd1d68345c","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.4.0_1772852322097_0.01852934138560669","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@blamechris/repo-memory","version":"0.5.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.5.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"3e710e786279da910e805bae7971aba361716f1f","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.5.0.tgz","fileCount":131,"integrity":"sha512-URUNQBSnNAC1k5GRx2dHfntpewttrUVn1UlDf+tYKdZOI1mmRXTX8Ov4P31sBF9u9KRjH8nkZ1fJ9NMTtYz+ng==","signatures":[{"sig":"MEQCICrFUi7Okfrg3EiSPL0QVxdYchrNj2AHMUZMobs1ZHvOAiA0oh5H5vGmV1kq/Y+KUYuxFlVpT6WaMWp8n13FAg3uIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278888},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"5054675317714a03ff63a854b7a321ce92222d01","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.5.0_1772932528868_0.5212513680233155","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@blamechris/repo-memory","version":"0.6.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.6.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"f6cdb2caf84d64942db9ab482c240a1f1a880ec4","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.6.0.tgz","fileCount":131,"integrity":"sha512-YVb0KPhDKLTIYbKDg4lzxpWbWU0S4bNoL63l90b9GvbUqLRlxQukgziZV2dhvZUu5/ggDFX/07T4QNl632ohCQ==","signatures":[{"sig":"MEUCIQDwvZjmcTptHDiRNtfwnZTQFrWzQDRwb5QR22mGb7tGGAIgOW3dYe/T6OA1XGmui4TXUhcnj2/P4i/JR3k+Vqw+eac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283449},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"0606ca5dd7a721ab11b3b2930fb961073a089ffa","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.10.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.6.0_1772957073573_0.9461947893799094","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@blamechris/repo-memory","version":"0.8.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.8.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"ea44a847ab02bf5c495d23c91d53325d147dd41c","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.8.0.tgz","fileCount":135,"integrity":"sha512-MlTbdMDrSHVVwzOR4BDDp9zOECd+ycFvTxb69YdkoUKPgaENZtxmtcFhUkOjls2VInBopAbrrNX09pf6FWh4Nw==","signatures":[{"sig":"MEUCIQDV7NrVP3tlxjn5A9fD4Upwip9D6VMu4Qpdk49fZ7NWzQIgaf90oIQdBKp57dFOMn4aFe+UMCmYL7lzCHkKKfTjhqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291683},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"46b094f18f12296b641dba929c07caa1ba7fe11c","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.8.0_1781056323851_0.9680004355226095","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@blamechris/repo-memory","version":"0.9.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.9.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"d29e3c8c39810192a330447f73ec4fe12cfae59c","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.9.0.tgz","fileCount":146,"integrity":"sha512-aC8E1tBy2TCcD7Yx7WppzKb9Q31xcSEea61r52/bsqFxitL+f+Vi4DaMMjsApSUaC/MNSKEig6IkFm6QFPybtQ==","signatures":[{"sig":"MEUCIQC4cokqWTnnof+uMcAvzvI7Vna9KGjE2yIhyEqF3Ux5RgIgHbMHzPAwZgL5rLNtJhSm2bWohHU5A+FzcL0r5AvYq/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5733507},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"16c2a68635a0f0cb075b6be9d9aebb52e0dcdcb1","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.9.0_1781059858489_0.26258485568793133","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@blamechris/repo-memory","version":"0.10.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.10.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"8cb0ca6510462d15cf1a5e9ebdde2441642e842d","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.10.0.tgz","fileCount":153,"integrity":"sha512-pyD376MBs2i3pPi26pZe1Mc6rZhO5Rjv6KcBOrTP2BtdZJPECqYJBty3lxLazK159K5+M1vjB52tFd7a9Y649A==","signatures":[{"sig":"MEYCIQD/qGM0iXR082++gTBTBqlCYluHq4fvN7+m5W3i+IM9BQIhAI9gR47M0cDMa+Un6B8jW470WEBmyUHAo7CuXFU9wZVx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7316053},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"b09e1bcd5f680ff64fe6b4eafe61cfd9222957bb","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.10.0_1781062520519_0.07292842339011951","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@blamechris/repo-memory","version":"0.11.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.11.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"e15552a82b06374f68cf6c48b7992c169edc1540","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.11.0.tgz","fileCount":155,"integrity":"sha512-ITXgeTgRd9dnt5l3ooEJ8hy4n97M42yZnhoRL2kJF1Z69M9KFELS1w5GJJNCeJHXQPKUB1F3/6SYR+Jihfg57g==","signatures":[{"sig":"MEUCIQDZLegOozK2sarHFukFJV2TablZEgmahuvq+t3URqP2TgIgV7IWtr+qGNtCrIfMauoGEFFhD2u6dIpZtEK6nkfIwUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11831623},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"d10ef4eb16d4ef8b3bbd9e992fd7256a2c7ab70b","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.11.0_1781065413962_0.8980791039512297","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@blamechris/repo-memory","version":"0.12.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.12.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"2f75e95f354d92a860f8d26dcb510d012b0ec445","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.12.0.tgz","fileCount":155,"integrity":"sha512-Xrh6Sb/Keno2VAkkwTHPIZiytVyLn3VCk1jZRaLZ7IA3lNeHh8PQGM8JTpMeQ0MyNG9LW2a0ERkPORuYHB0Acw==","signatures":[{"sig":"MEYCIQCtAjFYTFcCJisMfJ4R0yn2t8F1ZsHOCvfIPUKns4ZIbQIhAIyaZ/UDLe/PFRnvc2vsf6UlGSRjrN+pk+6I+HBJHyb4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11831604},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"8a33a98a499530d137274a0f3c1811bb5e821f2b","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.12.0_1781068500005_0.6710802163640064","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@blamechris/repo-memory","version":"0.13.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.13.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"55e65caac3e36c459077ee4d801eacb8c7763612","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.13.0.tgz","fileCount":167,"integrity":"sha512-fB75jeHS89r1JAbJOpUeyz3y2JygAni5CHJPXFR8tRleQLw7mdceiT+krJv5Ob11nkpFZ9AG+mv3+wS5WIs8OQ==","signatures":[{"sig":"MEYCIQDzr5yFnc4epL2O43Muw8uqUakKQws1rd29FXryhb0l/wIhAOcsWIpQXtYczMl3gd/R+iHZ8BF7zAJLzDns2/zxhCQe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11888214},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"f572b860a8a4fefed23e386c6d3c79f46b6ced17","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.13.0_1781084019604_0.5266075103212979","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@blamechris/repo-memory","version":"0.14.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.14.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"b05035d269806f776668d8cfea73c303974dc842","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.14.0.tgz","fileCount":167,"integrity":"sha512-K4szRoSufyfL56RU7+Xax800bimtM7Il3MK4F1E3fxB7SNp1+HhAotJF31PvWO3sJEavp0SH4DTLnbIP3RGprw==","signatures":[{"sig":"MEUCIHPmtkQnw5hi7Bpor9Ioqyhg9RXyJXbd1cKnvoxp1tefAiEA1a/F+5B1udaCVoc2JxNb7aIII5Z0l2Rk7DDkVx/BvZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11890824},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"280b195576dfa914fec10caf1ba6c830584997f1","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.14.0_1781118408376_0.1428635173861037","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@blamechris/repo-memory","version":"0.15.0","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","_id":"@blamechris/repo-memory@0.15.0","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"homepage":"https://github.com/blamechris/repo-memory#readme","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"bin":{"repo-memory":"dist/server.js"},"dist":{"shasum":"1bc1c5643167b977d1b52e2f12ff241a9b5c73bb","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.15.0.tgz","fileCount":171,"integrity":"sha512-ITRcqIBbRnyKGvy+qSDfB4S1vK01egz3J6zKlAq3W7eK9xFI4aZ6DnIixHF+BFBnkNlpCV3Wuh9s7G/Q+E8fvA==","signatures":[{"sig":"MEQCIHEzc1/GJ42Dlv1fvVIRfR2jZHxjOjV5U2pLqlz1fI2+AiBm7bTnpruT+0z4Q0WRA4qDkp7gutGEFuoIMiyTNCvchw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11903285},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"gitHead":"c29f79b703aaa9b230861f3f797fb79c0556e7eb","scripts":{"lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","test":"vitest run","build":"tsc && node scripts/copy-grammars.mjs","start":"node dist/server.js","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"repository":{"url":"git+https://github.com/blamechris/repo-memory.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server that gives AI coding agents persistent memory about your codebase","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.6","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.5","tree-sitter-wasms":"^0.1.13","@types/better-sqlite3":"^7.6.13","eslint-config-prettier":"^10.1.8","@typescript-eslint/parser":"^8.56.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/repo-memory_0.15.0_1781121220904_0.819746719298921","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@blamechris/repo-memory","version":"0.17.0","description":"MCP server that gives AI coding agents persistent memory about your codebase","type":"module","main":"dist/server.js","types":"dist/server.d.ts","bin":{"repo-memory":"dist/server.js"},"scripts":{"build":"tsc && node scripts/copy-grammars.mjs","typecheck":"tsc --noEmit","test":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts","test:coverage":"vitest run --coverage","start":"node dist/server.js","lint":"eslint --no-error-on-unmatched-pattern 'src/**/*.ts' 'tests/**/*.ts'","format":"prettier --write 'src/**/*.ts' '*.json' '*.mjs' && prettier --write 'tests/**/*.ts' 2>/dev/null || true","prepublishOnly":"npm run typecheck && npm run lint && npm run test && npm run build","benchmark":"npx tsx tests/benchmarks/run-benchmarks.ts"},"keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"author":{"name":"blamechris"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/blamechris/repo-memory.git"},"engines":{"node":">=20"},"devDependencies":{"@types/better-sqlite3":"^7.6.13","@types/node":"^25.3.5","@typescript-eslint/eslint-plugin":"^8.56.1","@typescript-eslint/parser":"^8.56.1","@vitest/coverage-v8":"^4.1.8","eslint":"^10.0.2","eslint-config-prettier":"^10.1.8","prettier":"^3.8.1","tree-sitter-wasms":"^0.1.13","typescript":"^5.9.3","vitest":"^4.0.18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","better-sqlite3":"^12.10.0","web-tree-sitter":"^0.25.10","zod":"^4.3.6"},"gitHead":"b34b5fda8bfba1dc8f2d46672c09deb8693ea215","_id":"@blamechris/repo-memory@0.17.0","bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"homepage":"https://github.com/blamechris/repo-memory#readme","_nodeVersion":"26.3.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-cN00GdbyXeTouLI23/neoFJ0UkZhr4B4fd4cK3eLZhyYo0DY60qmaHI8TgXkAzdUtTXonb38voP3sJl2gEUIDw==","shasum":"111260bfa1a24b9ac49f13c46fcd8ebfab620e8e","tarball":"https://registry.npmjs.org/@blamechris/repo-memory/-/repo-memory-0.17.0.tgz","fileCount":171,"unpackedSize":11907089,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDsCfMyKC2GRrv3xWoK0A4FCRQwF5h4s7nqb58MOp4RdwIgdYh5h6myMK6dcmE1VepTwCxmGW33KWR7xz5LcIY0Ji0="}]},"_npmUser":{"name":"blamechris","email":"Chrispishaki@gmail.com"},"directories":{},"maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/repo-memory_0.17.0_1781335889244_0.41311054970490524"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-07T01:11:40.241Z","modified":"2026-06-13T07:31:29.544Z","0.1.0":"2026-03-07T01:11:40.560Z","0.2.0":"2026-03-07T01:58:07.174Z","0.3.0":"2026-03-07T02:34:41.104Z","0.4.0":"2026-03-07T02:58:42.241Z","0.5.0":"2026-03-08T01:15:29.026Z","0.6.0":"2026-03-08T08:04:33.731Z","0.8.0":"2026-06-10T01:52:04.043Z","0.9.0":"2026-06-10T02:50:58.686Z","0.10.0":"2026-06-10T03:35:20.744Z","0.11.0":"2026-06-10T04:23:34.176Z","0.12.0":"2026-06-10T05:15:00.205Z","0.13.0":"2026-06-10T09:33:39.815Z","0.14.0":"2026-06-10T19:06:48.648Z","0.15.0":"2026-06-10T19:53:41.155Z","0.17.0":"2026-06-13T07:31:29.424Z"},"bugs":{"url":"https://github.com/blamechris/repo-memory/issues"},"author":{"name":"blamechris"},"license":"MIT","homepage":"https://github.com/blamechris/repo-memory#readme","keywords":["mcp","ai","agent","memory","codebase","cache","llm"],"repository":{"type":"git","url":"git+https://github.com/blamechris/repo-memory.git"},"description":"MCP server that gives AI coding agents persistent memory about your codebase","maintainers":[{"name":"blamechris","email":"Chrispishaki@gmail.com"}],"readme":"# repo-memory\n\nAn MCP server that gives AI coding agents persistent memory about your codebase. Stop wasting tokens re-reading files your agent already understands.\n\n## Why?\n\nEvery time an AI agent explores your project, it re-reads files from scratch — burning tokens on code it's already seen. On a 200-file project, that's **~43,000 tokens wasted per exploration pass**.\n\nrepo-memory fixes this:\n- **Caches file summaries** — exports, imports, purpose, declarations, line count\n- **Tracks changes** — only re-reads files that actually changed (SHA-256 hash comparison)\n- **Dependency graphs** — understands which files depend on which\n- **Task memory** — remembers what's been explored across conversation turns\n- **Token telemetry** — measures and proves the savings\n\n## Quick Start\n\n### With Claude Code\nAdd to your Claude Code MCP settings:\n```json\n{\n  \"mcpServers\": {\n    \"repo-memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@blamechris/repo-memory\"]\n    }\n  }\n}\n```\n\n### Manual\n```bash\nnpm install -g @blamechris/repo-memory\nrepo-memory  # starts MCP server on stdio\n```\n\n### Prewarm the cache\nThe first time an agent touches a file it pays full price — the summary has to be generated. You can pay that cost ahead of time (post-pull hook, CI step) so the first session starts with cache hits:\n\n```bash\nrepo-memory index            # index the current directory\nrepo-memory index /path/to/project\nrepo-memory index --quiet    # no output on success (for scripts/CI)\n```\n\nOnly missing or stale entries are re-summarized; unchanged files are left untouched.\n\nTo automate it, drop a git `post-merge` hook in the project (see [docs/usage.md](docs/usage.md#cli) for the snippet) so every pull keeps the cache warm.\n\n### Check the savings\nTelemetry events are always recorded by the cache paths; the `report` subcommand reads them from the shell, so you never need to enable the `telemetry` MCP tool group (~100 tokens/turn of system prompt) just to see the numbers:\n\n```bash\nrepo-memory report                  # all recorded events for the current directory\nrepo-memory report --hours 24      # last day only\nrepo-memory report --json          # machine-readable\nrepo-memory report --diagnostics   # add cache health (entry counts, db size)\n```\n\n## How It Works\n\n### The problem\nYour agent wants to understand `src/server.ts`. Normally it reads the whole file — 300 lines, ~800 tokens. But it really just needs: \"what does this file export, import, and do?\" That answer is ~200 tokens.\n\n### The flow\n\n**First access (cache miss):**\n1. Agent calls `get_file_summary(\"src/server.ts\")`\n2. repo-memory reads the file, SHA-256 hashes it, extracts a summary (exports, imports, purpose, declarations, line count) via the configured summarizer (AST by default)\n3. Stores the hash + summary in SQLite (`.repo-memory/cache.db` in your project)\n4. Returns the compact summary\n5. No savings yet — we had to read the file anyway\n\n**Every subsequent access (cache hit):**\n1. Agent calls `get_file_summary(\"src/server.ts\")` again\n2. repo-memory reads and hashes the file — hash matches what's stored\n3. Returns the cached summary instantly, without re-parsing\n4. Savings logged: `(full file tokens) - (summary tokens)` = tokens your agent didn't consume\n\n**When files change:**\n- The hash won't match, so repo-memory generates a fresh summary automatically\n- You never get stale data\n\nThe savings compound fast. An agent exploring a project touches the same files 3-5 times per session. First pass costs full price. Every subsequent hit returns a tiny summary instead of the full file — that's where the ~3.6x compression ratio comes from.\n\n## Tools\n\nTools are organized into **groups**. `navigation` and `summaries` are **on by default** — together they deliver the core \"understand the repo without re-reading\" loop. `tasks` and `telemetry` are **off by default** (niche/meta features; each MCP tool adds ~100 tokens/turn, so the default surface stays lean). Toggle any group in `.repo-memory.json` (see [Configuration](#configuration)).\n\n**Navigation** — always on:\n\n| Tool | Description |\n|------|-------------|\n| `get_project_map` | Structural overview of project |\n| `get_related_files` | Find related files ranked by relevance |\n| `get_dependency_graph` | File dependency relationships |\n| `get_changed_files` | Files changed since last check |\n\n**Summaries** — on by default (the core feature); disable with `\"tools\": { \"summaries\": false }`:\n\n| Tool | Description |\n|------|-------------|\n| `get_file_summary` | Cached file summary (exports, imports, purpose) |\n| `batch_file_summaries` | Get summaries for multiple files at once |\n| `search_by_purpose` | Search files by purpose/exports keywords |\n| `force_reread` | Force fresh summary generation |\n| `invalidate` | Clear cache entries |\n\n**Tasks** — off by default; enable with `\"tools\": { \"tasks\": true }`:\n\n| Tool | Description |\n|------|-------------|\n| `create_task` / `get_task_context` / `mark_explored` | Track investigation progress across turns |\n\n**Telemetry** — off by default; enable with `\"tools\": { \"telemetry\": true }`:\n\n| Tool | Description |\n|------|-------------|\n| `get_token_report` | Token usage and savings report |\n\n## Token Savings Tracking\n\nrepo-memory tracks every cache interaction so you can measure exactly how many tokens you're saving. Call `get_token_report` at any time to see your stats.\n\n### What gets tracked\n\n| Event | When | Tokens Recorded |\n|-------|------|-----------------|\n| `cache_hit` | Summary served from cache (hash unchanged) | Tokens saved (raw file - summary) |\n| `cache_miss` | File changed or first access | 0 (no savings on first read) |\n| `force_reread` | Explicit re-read requested | Raw file token count |\n| `invalidation` | Cache entry cleared | — |\n| `summary_served` | File matched via `search_by_purpose` | Estimated raw file tokens |\n\n### How savings are calculated\n\nToken estimates use the standard heuristic of **~4 characters per token**, which closely matches major LLM tokenizers (cl100k_base, o200k_base).\n\nFor each cache hit:\n```\ntokensSaved = ceil(rawFileChars / 4) - ceil(summaryJsonChars / 4)\n```\n\n- **rawFileChars** — the full file contents your agent would have consumed\n- **summaryJsonChars** — the compact summary served instead (purpose, exports, imports, declarations, line count)\n\nThe reported savings represent real tokens that never entered your context window.\n\n### Querying your savings\n\n```\n# All-time stats\nget_token_report()\n\n# Last 24 hours\nget_token_report(period: \"last_n_hours\", hours: 24)\n\n# Current session only\nget_token_report(period: \"session\", session_id: \"<id>\")\n\n# With cache health diagnostics\nget_token_report(include_diagnostics: true)\n```\n\nThe report includes:\n- **Cache hit ratio** — percentage of requests served from cache\n- **Estimated tokens saved** — cumulative tokens your agent didn't consume\n- **Top files** — most frequently accessed files and their token impact\n- **Event breakdown** — counts by event type\n\n## Performance\n\nBenchmarks measured on synthetic TypeScript projects with realistic imports and class structures:\n\n| Scenario | Files | Raw Size | Summary Size | Compression | Tokens Saved | Speed |\n|----------|-------|----------|--------------|-------------|--------------|-------|\n| Explore project | 10 | 11.7 KB | 3.3 KB | 3.6x | ~2,100 | 3.7 ms/file |\n| Explore project | 50 | 58.0 KB | 16.2 KB | 3.6x | ~10,700 | 0.7 ms/file |\n| Explore project | 100 | 116.1 KB | 32.3 KB | 3.6x | ~21,500 | 0.4 ms/file |\n| Explore project | 200 | 233.4 KB | 65.7 KB | 3.6x | ~42,900 | 0.3 ms/file |\n\n~3.6x compression ratio at all scales. Sub-millisecond per file on cached reads.\n\nRun benchmarks yourself: `npm run benchmark`\n\n## Architecture\n\n```\nMCP Server (stdio transport)\n├── Cache Engine (hash, store, invalidation, ranking, GC)\n├── Indexer Pipeline (scanner, summarizer, imports, diff-analyzer)\n├── Dependency Graph (in-memory adjacency maps backed by SQLite)\n├── Task Memory (CRUD, exploration tracking, frontier)\n├── Telemetry (token tracking, sampling, export, retention)\n├── Session Manager (cross-turn persistence)\n└── Persistence Layer (SQLite with WAL mode)\n```\n\n## Configuration\n\nCreate a `.repo-memory.json` in your project root to customize behavior:\n\n```json\n{\n  \"ignore\": [\"dist\", \"node_modules\", \"*.generated.ts\"],\n  \"maxFiles\": 5000,\n  \"summarizer\": \"ast\",\n  \"gc\": {\n    \"cacheMaxAgeDays\": 30,\n    \"taskMaxAgeDays\": 30,\n    \"telemetryMaxAgeDays\": 90\n  },\n  \"tools\": {\n    \"tasks\": true,\n    \"telemetry\": true\n  }\n}\n```\n\n`summarizer` selects the summary engine: `\"ast\"` (default) or `\"regex\"`. AST mode parses supported languages (see [Language Support](#language-support)) with tree-sitter, producing accurate exports/declarations and a semantic `purpose` line that names the dominant symbols (e.g. `class CacheStore (9 methods)` instead of `source`) — which is what `search_by_purpose` matches against. Other languages, unsupported extensions, and files with parse errors fall back to the regex summarizer automatically. Switching modes regenerates summaries lazily on next access.\n\nThe `tools` block toggles tool groups. `navigation` and `summaries` are **on by default** (set `\"summaries\": false` to drop the summary tools); `tasks` and `telemetry` are **off by default** (set them to `true` to enable).\n\nThe `gc` block controls garbage collection, which runs automatically on server startup:\n- `cacheMaxAgeDays` — remove cache entries not checked in N days (default: 30)\n- `taskMaxAgeDays` — remove completed/archived tasks not updated in N days (default: 30)\n- `telemetryMaxAgeDays` — remove telemetry events older than N days (default: 90)\n\nGC also removes cache entries for deleted files and orphaned import records, regardless of age.\n\nConfig validation is per-key: an invalid value is skipped with a warning on stderr while the remaining valid keys still apply. Only a file that can't be read or parsed as JSON falls back entirely to built-in defaults.\n\n## Language Support\n\nSummaries are extracted from tree-sitter parse trees by default, or via regex analysis when `\"summarizer\": \"regex\"` is set. All language families below have AST support, which adds semantic purpose lines derived from doc comments; regex stays as the universal fallback for other languages and unparseable files. Supported languages:\n- **TypeScript / JavaScript** — exports, imports, declarations, purpose classification; AST mode adds JSDoc-derived purpose lines\n- **Python** — functions, classes (incl. `async def`), `__all__`, `from`/`import` statements; AST mode adds docstring-derived purpose lines\n- **Go** — exported names (uppercase), imports, type/func/var/const declarations; AST mode adds doc-comment purpose lines and grouped `var (…)` / `const (…)` support\n- **Rust** — `pub` items, `use`/`mod` statements, structs/enums/traits/impls; AST mode adds `///` doc-comment purpose lines and `pub use` re-exports\n- **Kotlin** (`.kt/.kts`) — AST mode only: public top-level `fun`/`class`/`object`/`interface`/`enum class`/`data class`/`val`/`var`/`typealias` (excluding `private`/`internal`), `import` paths, KDoc-derived purpose lines; regex mode gives only basic filename classification\n- **Java** — AST mode only: public types and the public methods/fields of the public type, `import` statements (incl. `static` and wildcard), Javadoc-derived purpose lines; regex mode gives only basic filename classification\n\nThe dependency graph (`get_related_files`, `get_dependency_graph`) extracts imports for all six language families regardless of summarizer mode.\n\nConfig files (JSON, YAML, TOML) and other file types get basic classification.\n\n## Development\n\n```bash\ngit clone https://github.com/blamechris/repo-memory.git\ncd repo-memory\nnpm install\nnpm test           # unit tests\nnpm run test:integration  # integration tests\nnpm run typecheck  # TypeScript check\nnpm run lint       # ESLint\nnpm run build      # compile\n```\n\n## License\nMIT\n","readmeFilename":"README.md"}