{"_id":"fastrmemory","_rev":"17-cccd9b883248671905ce63eac0805de3","name":"fastrmemory","dist-tags":{"latest":"0.9.3"},"versions":{"0.3.0":{"name":"fastrmemory","version":"0.3.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.3.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"dist/bin/fastr.js","fastrmemory":"dist/bin/fastr.js"},"dist":{"shasum":"e17af4f854bd9231e1f4b3a8efb04d3e5b65f8e2","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.3.0.tgz","fileCount":270,"integrity":"sha512-a3Ruf9iqf+u+XnR/3oIUThyac6CHgGJDuDM8rAuFipJRMSYjhSAfWe6/NhLDcStBsFflskdIjlwY9YtvBnwbRw==","signatures":[{"sig":"MEUCID7xjAd9HDyir7SJ4RG03de7N5W2+pO3Lc/izUWnNH+IAiEA4VCm9pXJi87u6gyAW2f3MGkdc7wLHFd1VAk42FRF3LE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFUSrDDJx0gstLM2hMycL6YODOOlVTVU0e7ANEKPQTT2AiAsiF/rTM30Bqzja28xmvBWsGiM4ob3T9BjV2NsdP63qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2598164},"main":"./dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"gitHead":"50a7d8fef20cdb1392e415f29d8274c785616bdc","mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node dist/bin/fastr.js","watch":"tsc --watch","prepare":"npm run build:core","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","check:crash":"node scripts/check-crash-evidence.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"},"repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.12.1","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.3.0_1792693978620_0.3080837182970255","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"fastrmemory","version":"0.3.1","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.3.1","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"dfe5f0a2a61edad89dfc8529548488762a08ca8e","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.3.1.tgz","fileCount":271,"integrity":"sha512-ACtxdyJdg0c2Bef7TE2g6Rp2xSB1P/Acbu80LhJlKkCfnK0WPIU2HkLEFj8qSob7hXat2QruVK64Wn3kNFn+3A==","signatures":[{"sig":"MEUCIQDugbnlaDaW7lj72wte2sSedJ2up/K2oNaBWbkdt2zSWAIgGBzbPaHkcBK4zsIKcTqQaJV2a8uQdqfJf7bdtxdbE4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDO1j+e6+gC8xf1m/AkHbhkMksOkKfBWP1R9XUsINDGPwIgXzckLeuo+3nUibsDKctKkJ6In8IDUyRBSr9xPKackPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2599277},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.3.1.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","check:crash":"node scripts/check-crash-evidence.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.3.1.tgz","_integrity":"sha512-ACtxdyJdg0c2Bef7TE2g6Rp2xSB1P/Acbu80LhJlKkCfnK0WPIU2HkLEFj8qSob7hXat2QruVK64Wn3kNFn+3A==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.3.1_1792710158403_0.812626887574017","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"fastrmemory","version":"0.4.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.4.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"26725f9eab1f31fd7f66398e12bb1b17c6593f31","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.4.0.tgz","fileCount":275,"integrity":"sha512-jmc8TWC+wZyev4fuKjKctebv7eAzhRFB5sj97+ufoCS0b8DnHnrx37hAi9dmp0uOUP0hnhrP3q/oU7CkNTtJ8w==","signatures":[{"sig":"MEUCIH18aUaHhJDmnUhsBtC18xKgp9YnIQbFaJQ/jgPHF6RSAiEAqVZM/lvxG0fzrf/+dGsE9WU83y/4kBz0lOapWdi1Gtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCN/CCXriP4zf6ANIzwCUHiozjapvaDHMFJ87awMALJ1AIgGbD87GUcjYOiZaJwGwfjZJPpnHXfMn74ZUWSrn1ndB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2631280},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.4.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","check:crash":"node scripts/check-crash-evidence.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.4.0.tgz","_integrity":"sha512-jmc8TWC+wZyev4fuKjKctebv7eAzhRFB5sj97+ufoCS0b8DnHnrx37hAi9dmp0uOUP0hnhrP3q/oU7CkNTtJ8w==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.4.0_1792740772925_0.07183804819264905","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"fastrmemory","version":"0.5.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.5.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"4f39d035dadbe48421f2a7f70a4a236fb7e21c3b","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.5.0.tgz","fileCount":279,"integrity":"sha512-QUKT39MhQz7hFgFGj2S5VKtpGnsRohHIhc5sY1U31Jcv54pKOZoqx7unXg6h1nLttRhScoP/FkiUkofELK2qqg==","signatures":[{"sig":"MEUCIQCgBUDjlJadsuV3sB1To9QzOfjVBveSsJtuMWUJv4IFRQIgZVUn/hvZHXUdIiLtJ+a2iE/zgrjvHcjVA8WGKbUE14o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD4rc/jXwkPsTE4hUL5VHEq6q6Hl20yKzIoHonbULP/tQIgD3DzND9f1Kkr9I1CBsqOAexsfUOtH4lmByGRwiTG3zc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2645254},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.5.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","check:crash":"node scripts/check-crash-evidence.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.5.0.tgz","_integrity":"sha512-QUKT39MhQz7hFgFGj2S5VKtpGnsRohHIhc5sY1U31Jcv54pKOZoqx7unXg6h1nLttRhScoP/FkiUkofELK2qqg==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.5.0_1792768841114_0.834770832516341","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"fastrmemory","version":"0.6.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.6.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"3a663105c678319cc539fe05b73ee7fe375a8115","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.6.0.tgz","fileCount":319,"integrity":"sha512-QWvYG0H+vAB9+TXycJnmHtGsw0kRDDuqyuOkuKk5494oAE7xY/MLTQcyFWqo/6gChydq42biAmcXp91xWIaxNQ==","signatures":[{"sig":"MEQCIAglKUzRj3dZLCa0UO3kNBOSrUXvQFrrSow6A+N9/OU2AiA5HLBYXUubUf67eigpmkmaB+FuwbQAgpQbffoCDeGiAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD/0l5gFcof3QmHVIXrGDGuLbhBb/lVkUjVVUoyXfYUwgIhALoavdc8OgSquHm9Igor9EfX7GLPVNeYg+OwkA89pM4p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2929061},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.6.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.6.0.tgz","_integrity":"sha512-QWvYG0H+vAB9+TXycJnmHtGsw0kRDDuqyuOkuKk5494oAE7xY/MLTQcyFWqo/6gChydq42biAmcXp91xWIaxNQ==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.6.0_1792983331503_0.7234461871359033","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"fastrmemory","version":"0.7.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.7.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"af5a7a438f553ffc08207e65b178fdf4344aef31","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.7.0.tgz","fileCount":343,"integrity":"sha512-tiMdJL1ts7xT55LgH52pPVv2mfpV3LU5srTlRIezm2zTXgu1oWTqJrtAW2XQcbAoc+7gxicZJrlcd2F7wk1n0Q==","signatures":[{"sig":"MEQCIC+ky/52ahhSy1n+SjZQGf5ebQc1ENCLwAmohQUHFTKQAiA8jDWzyrCdkOz70yU1rjirwtpWxqmRmPbYa2Tf6J2Yhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICNkOZv6KpBqGMLs9it1LMzh/VEcC1X300jTv4E4+TsKAiEA2/jidus8idaBSafCJwKthctHUywiALmvi39EY+Kjqw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3091719},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.0.tgz","_integrity":"sha512-tiMdJL1ts7xT55LgH52pPVv2mfpV3LU5srTlRIezm2zTXgu1oWTqJrtAW2XQcbAoc+7gxicZJrlcd2F7wk1n0Q==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.7.0_1793073918063_0.6714864224828856","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"fastrmemory","version":"0.7.1","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.7.1","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"8d5d4530582155ef55534d8e616a385e0ad1d95b","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.7.1.tgz","fileCount":343,"integrity":"sha512-DulcCx4sErw9AP6v6fEQeElt4NhpVYVUPjq60f/rTTRou+1uKtI4SmT8Zd5FjYjsiy2Y4HXJjMh3sUf6AZ6uEg==","signatures":[{"sig":"MEYCIQCcPp9MNqyLw1FpBg18dw//38aGZoipxOPs2cbPWuKVXAIhAN8Jg1zX/yRm0qSv2Hr9XGUHGB3on+5CjpLYXpJBglWW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC78f4pAEOxQFtwoQ55iL6BY1leMqnWHZez+agQMqoLEgIgLT+nd78NmKMfmv7WieiLcsD/pmqZFQ2X5FJ9Hv17F6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3091818},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.1.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.1.tgz","_integrity":"sha512-DulcCx4sErw9AP6v6fEQeElt4NhpVYVUPjq60f/rTTRou+1uKtI4SmT8Zd5FjYjsiy2Y4HXJjMh3sUf6AZ6uEg==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.7.1_1793106790341_0.04720877937888057","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"fastrmemory","version":"0.7.2","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.7.2","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"ba24a7aed40ed2966841c6c2e3d4d8894bf9273a","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.7.2.tgz","fileCount":343,"integrity":"sha512-ELezo5PqsRHtZuKcCoKgPo8+a6ulvwnHST+1hMOM7MKjVIi2CAms0rLK02i3jx1ry0juEiSx/VqVaJNHrbLuwg==","signatures":[{"sig":"MEQCIC5rWyS1Nb7zkgY/rUeKSo5V9Ah14pWUmv9/6sbOtp6qAiAz0lGhegdiOcdWuK9q+Qf1GmGjguxdMMqmVg+bl1+mmA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCiKqcmRUPEDah3QXH1a7sTVAnELZ/TfeEu2i2VrxGZ9QIgEa74mWxarihQAZKMsBvxgWEvqFqSVNVdw2iefhkTx+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3091983},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.2.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.7.2.tgz","_integrity":"sha512-ELezo5PqsRHtZuKcCoKgPo8+a6ulvwnHST+1hMOM7MKjVIi2CAms0rLK02i3jx1ry0juEiSx/VqVaJNHrbLuwg==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.7.2_1793128464368_0.5696459544090752","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"fastrmemory","version":"0.8.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.8.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"9f75311c0fffda4b22e92bd587456b13bc6c4a03","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.8.0.tgz","fileCount":351,"integrity":"sha512-FHE4m6S0kPXP1omCpKALzbGXqF+nLyB/Vo+clBq1nawkXiYwmwoCa6VuKiems4Az1Pr6XThAUb2/25gCyeXlpQ==","signatures":[{"sig":"MEUCIQCR7/97YqFA5uBKeyDT8ftjCMzeyyCw1X6jV60v2KWfDwIgawNVJ6AAxtQPRW0bLMZHryzsQYarG7obKf28fNZLc2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDgwEIT5MgccfF0+wfqmgQE5HvmExRctWmqJECrf0QUyAIgcEeqOtM5yMimkDGwtHxIL+ZdNBU8nzSxT5+00raq9wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3124675},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"cd extensions/vscode && npx --yes @vscode/vsce package --no-dependencies","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.0.tgz","_integrity":"sha512-FHE4m6S0kPXP1omCpKALzbGXqF+nLyB/Vo+clBq1nawkXiYwmwoCa6VuKiems4Az1Pr6XThAUb2/25gCyeXlpQ==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.8.0_1793136070876_0.5724915857509856","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"fastrmemory","version":"0.8.1","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.8.1","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"18ee35efc14805e01183dd5786296c011059094e","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.8.1.tgz","fileCount":353,"integrity":"sha512-Dl5M4+fQ7Q+Bh5OvMDsssPUxqNjX7kBL5japVGHL6JpqPFfxxeqLfZqZMXWfY7UjfcQBTK9YutRLK0CGUAXT2Q==","signatures":[{"sig":"MEUCIGRJ9+GpInraToq39YtyRFmBC5ac7IOWMH4Kg4LPmyF9AiEAhQgJIFlj80HY6J/t+A9jLljS33ck/t10u1DWExZNgsM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGq6RzehvRdq0+O0OkSMpRlHmOEI9J89iP3RE0ZcbLIaAiEA0uiM2ScGxP3Au3sqNVFo2jsl2FeB6r+6d/brR4falOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3171119},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.1.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"cd extensions/vscode && npx --yes @vscode/vsce package --no-dependencies","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.1.tgz","_integrity":"sha512-Dl5M4+fQ7Q+Bh5OvMDsssPUxqNjX7kBL5japVGHL6JpqPFfxxeqLfZqZMXWfY7UjfcQBTK9YutRLK0CGUAXT2Q==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.8.1_1793139148666_0.8732098793348013","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"fastrmemory","version":"0.8.2","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.8.2","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"008666dab929667f118abe87f219c1edf5e97213","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.8.2.tgz","fileCount":353,"integrity":"sha512-leQdyu/+6LMyuEZzW++ueJqFj7uKwR0fK1B0iPA7+hDkMBEicjwZobxMeYBmnk9Ov8dFNkilrpT6/hYFd7Dnmg==","signatures":[{"sig":"MEUCIEz3O9jvkrpJ4bwTtd3jBxDkdwud84riC7+wUVlWg5V5AiEApzXLLMhPGwxPUPmaIshSS9QMKIj8LQuAlL13YXF4YhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzVzI2OVFd8kkUBU6UlpPw0I1QQXtpOEY9r3IwAl4cAgIhAMgQUZMqcgNjqBVbPMulRBGTGZAOlByBDaRmgFtyRbIQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3173456},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.2.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"node scripts/package-extension.mjs","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.8.2.tgz","_integrity":"sha512-leQdyu/+6LMyuEZzW++ueJqFj7uKwR0fK1B0iPA7+hDkMBEicjwZobxMeYBmnk9Ov8dFNkilrpT6/hYFd7Dnmg==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.0","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.8.2_1793143322928_0.15953199712921173","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"fastrmemory","version":"0.9.0","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.9.0","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"730f72b0364d1ec79ace8a3607b5b5e626b6773b","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.9.0.tgz","fileCount":357,"integrity":"sha512-7QSDX7LsBfHcv9P6IakbqMPh2cgMDY2kPFyFqg47z0hO/5enAlMm0UynEAxZk6PIZ0DMFG49B52jdblC5CbuoA==","signatures":[{"sig":"MEQCIBfEFgbW7bKMmikYy2SD4LmfjgiBTrPoMoT5jNcir9AxAiA3enfMcxLSQbO8EPNTSh8y9m2hNouj5bJrDWxFp75yTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCM5GxIFSvohYN2Qce953yzW4bO2ZJ9Wb9WhIaTeLzNjwIhANsyHSsPsMEJ5z2q6eDHyE47kMoOKF3NLFm4+gdZWE5S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3251484},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.0.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"node scripts/package-extension.mjs","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.0.tgz","_integrity":"sha512-7QSDX7LsBfHcv9P6IakbqMPh2cgMDY2kPFyFqg47z0hO/5enAlMm0UynEAxZk6PIZ0DMFG49B52jdblC5CbuoA==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.1","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.22.1","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.9.0_1793500809609_0.15086546788482658","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"fastrmemory","version":"0.9.1","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.9.1","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"a1bc99278faf91c62c4f7daa916aff1eaaf06bc4","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.9.1.tgz","fileCount":357,"integrity":"sha512-eSoluzSpuNbuOt+2kauN19HBvIOirAiziB4y2oiGZImWFrMJgb3x0JkGOiifU+edf/HMYST+5BSSK+0TH2wmQA==","signatures":[{"sig":"MEQCIEQvPpcnQjxUAp8Qo6fxJVw9QXjOcscc1htI7J1hpeznAiAwCNG1Z9Vfp0Ic3cQSiTIsWWOJo+7c7ETbAeCA56FkGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDBC5RRh/oix4eDHMzCvtVFvhbK724lQHOaeKIgt6BfnwIhAKVl2OZc5q7jSwd6/X/iZvtJ+ORmm/Yx2gNgBYr10opP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3267816},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.1.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"node scripts/package-extension.mjs","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.1.tgz","_integrity":"sha512-eSoluzSpuNbuOt+2kauN19HBvIOirAiziB4y2oiGZImWFrMJgb3x0JkGOiifU+edf/HMYST+5BSSK+0TH2wmQA==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.1","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.22.1","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.9.1_1793513152880_0.5289456764343237","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"fastrmemory","version":"0.9.2","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"author":{"name":"Fastrsoft"},"license":"Apache-2.0","_id":"fastrmemory@0.9.2","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"homepage":"https://github.com/atifjubaer/fastrmemory#readme","bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"dist":{"shasum":"7841b6ba47be545167bbd728aaccda2812d230ef","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.9.2.tgz","fileCount":358,"integrity":"sha512-fcew0Rn0J05bI2/itQo4sL8tzve5To+/l8Y1hmDc+Fd+Snp3kGiwtI634zHjcEHm38mOC1Itrw9Hbj7KI8GkKA==","signatures":[{"sig":"MEUCIA9sXPAVPuoWBCsTKnwx7M3WBzMzfpsxgrm8QPIExmhiAiEAu61iQDHmh7D/HK2hY142tq/UVEngwfvFZ0no3lGQToI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEQb5ljA2eJXSc3dZY/dtZ8Go8owMrfOxCbttXM0F9GxAiBlcuLVvZiasvx/33XWxr4tsED91wcgPdGA4JvJZdgMiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3273691},"main":"./dist/src/index.js","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.2.tgz","types":"./dist/src/index.d.ts","engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"node scripts/package-extension.mjs","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.2.tgz","_integrity":"sha512-fcew0Rn0J05bI2/itQo4sL8tzve5To+/l8Y1hmDc+Fd+Snp3kGiwtI634zHjcEHm38mOC1Itrw9Hbj7KI8GkKA==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.1","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"_nodeVersion":"24.22.1","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/fastrmemory_0.9.2_1793517519503_0.8251601160807307","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"_id":"fastrmemory@0.9.3","bin":{"fastr":"bin/fastr-guard.mjs","fastrmemory":"bin/fastr-guard.mjs"},"bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"dist":{"shasum":"2e9144fc3359bf7f4c79d6447aa977588fc4ad97","tarball":"https://registry.npmjs.org/fastrmemory/-/fastrmemory-0.9.3.tgz","fileCount":358,"integrity":"sha512-6NlGZXVR1e9tDl1cnnB7URBmV/N6LQdPgmT6T+1FdD6yDNcgrcFu+aBVwLBiR1/K/AQIHvhuM3JbXNlHjyOqHQ==","signatures":[{"sig":"MEQCIDZZWphPsOdHaoMKHZwqKUoJ/CdKndsRK6wNmrRKs5ckAiBsuFe5FXMVzwHxdZ1QzDn7cbvvx+XvYFwCxGVzQIxX4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJbHH1XIrYY45C6Cmp+E+VXcOKfrjtfzFmm5DPYsQs3AIhALYuUE2SNM8UvpwWc7UaGY6QLUWEFYTVWKrncGw0xPTk"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fastrmemory@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3289741},"main":"./dist/src/index.js","name":"fastrmemory","type":"module","_from":"file:/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.3.tgz","types":"./dist/src/index.d.ts","author":{"name":"Fastrsoft"},"engines":{"node":">=22.16.0"},"exports":{".":"./dist/src/index.js","./mcp":"./dist/src/mcp/server.js"},"license":"Apache-2.0","mcpName":"io.github.atifjubaer/fastrmemory","scripts":{"soak":"tsx scripts/soak.ts","test":"vitest run","bench":"tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json","build":"npm run build:core && npm run build:ui","start":"node bin/fastr-guard.mjs","watch":"tsc --watch","prepare":"npm run build:core","release":"node scripts/release.mjs","bench:vs":"tsx scripts/bench-vs.ts","build:ui":"npm --prefix ui run build && node scripts/build-dist-ui-manifest.mjs","check:ci":"npm run test && npm run test:isolation && npm run check:skills && npm run check:dist-ui && npm run check:package && npm run check:query-plans && npm run check:recall-latency && npm run check:install-size && npm run verify:replay && npm run check:hygiene && npm run check:docs && npm run check:crash && npm run bench:verify","build:all":"npm run build && npm run build:extension","smoke:npx":"node scripts/smoke-npx.mjs","bench:hash":"tsx scripts/eval-bench.ts --split all --embeddings hash --out bench/results/hash.json","build:core":"tsc","check:docs":"node scripts/check-docs.mjs","test:crash":"node scripts/crash-test.mjs","bench:fetch":"tsx scripts/fetch-bench-data.ts","bench:setup":"tsx scripts/fetch-bench-data.ts --engines","check:crash":"node scripts/check-crash-evidence.mjs","smoke:hooks":"npm run build:core && node scripts/smoke-hooks.mjs","bench:legacy":"tsx scripts/capture-bench.ts","bench:public":"tsx scripts/eval-public.ts","bench:verify":"node scripts/check-bench.mjs","check:skills":"node scripts/check-skills.mjs","smoke:gemini":"npm run build:core && node scripts/smoke-gemini.mjs","check:dist-ui":"node scripts/check-dist-ui.mjs","check:hygiene":"tsx scripts/check-hygiene.ts","check:package":"node scripts/check-package.mjs","smoke:copilot":"npm run build:core && node scripts/smoke-copilot.mjs","verify:replay":"tsx scripts/verify-replay.ts","bench:external":"tsx scripts/eval-external.ts","prepublishOnly":"npm run build:core && npm test && npm run check:dist-ui && npm run check:package","smoke:opencode":"npm run build:core && node scripts/smoke-opencode.mjs","test:isolation":"vitest run tests/isolation.test.ts","build:extension":"tsc -p extensions/vscode","check:query-plans":"tsx scripts/check-query-plans.ts","package:extension":"node scripts/package-extension.mjs","check:install-size":"node scripts/check-install-size.mjs","check:recall-latency":"tsx scripts/check-recall-latency.ts"},"version":"0.9.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a8cffd4e-5d67-423b-b0ad-626075bf0f41"}},"homepage":"https://github.com/atifjubaer/fastrmemory#readme","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"_resolved":"/home/runner/work/fastrmemory/fastrmemory/release/fastrmemory-0.9.3.tgz","_integrity":"sha512-6NlGZXVR1e9tDl1cnnB7URBmV/N6LQdPgmT6T+1FdD6yDNcgrcFu+aBVwLBiR1/K/AQIHvhuM3JbXNlHjyOqHQ==","repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"_npmVersion":"11.19.1","description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","directories":{},"maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"_nodeVersion":"24.22.1","dependencies":{"zod":"^4.6.7","commander":"^13.1.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.0","vitest":"^3.0.0","minisearch":"7.2.0","typescript":"^5.8.0","@types/node":"^24.0.0","@huggingface/transformers":"^3.8.1"},"peerDependencies":{"@huggingface/transformers":"^3.8.1"},"peerDependenciesMeta":{"@huggingface/transformers":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fastrmemory_0.9.3_1793520403636_0.8714598120692937"}}},"time":{"created":"2026-10-22T18:31:40.594Z","modified":"2026-11-01T08:06:44.081Z","0.0.0-stage":"2026-10-22T18:31:40.594Z","0.3.0":"2026-10-22T18:32:58.732Z","0.3.1":"2026-10-22T23:02:38.532Z","0.4.0":"2026-10-23T07:32:53.034Z","0.5.0":"2026-10-23T15:20:41.442Z","0.6.0":"2026-10-26T02:55:31.687Z","0.7.0":"2026-10-27T04:05:18.231Z","0.7.1":"2026-10-27T13:13:10.509Z","0.7.2":"2026-10-27T19:14:24.486Z","0.8.0":"2026-10-27T21:21:11.029Z","0.8.1":"2026-10-27T22:12:28.814Z","0.8.2":"2026-10-27T23:22:03.032Z","0.9.0":"2026-11-01T02:40:09.728Z","0.9.1":"2026-11-01T06:05:52.970Z","0.9.2":"2026-11-01T07:18:39.612Z","0.9.3":"2026-11-01T08:06:43.758Z"},"bugs":{"url":"https://github.com/atifjubaer/fastrmemory/issues"},"author":{"name":"Fastrsoft"},"license":"Apache-2.0","homepage":"https://github.com/atifjubaer/fastrmemory#readme","keywords":["ai","agent","memory","mcp","sqlite","bitemporal","claude-code","cursor"],"repository":{"url":"git+https://github.com/atifjubaer/fastrmemory.git","type":"git"},"description":"High-Performance Cognitive Agent Memory Engine with Bi-Temporal SQLite and Official MCP v2","maintainers":[{"name":"atifjubaer","email":"info.atifjubaer@gmail.com"}],"readme":"<div align=\"center\">\n\n<img src=\"https://raw.githubusercontent.com/atifjubaer/fastrmemory/main/assets/fastrmemory-mark.png\" width=\"128\" height=\"128\" alt=\"FastrMemory Logo\">\n\n# FastrMemory\n\n### High-Performance Cognitive Agent Memory Engine\n**Zero Daemon • Native Node 22+ `node:sqlite` • Bi-Temporal Git Sync • Triple-Stream RRF • Official MCP v2**\n\n[![CI](https://github.com/atifjubaer/fastrmemory/actions/workflows/ci.yml/badge.svg)](https://github.com/atifjubaer/fastrmemory/actions)\n[![npm](https://img.shields.io/npm/v/fastrmemory?style=flat-square&logo=npm&label=npm)](https://www.npmjs.com/package/fastrmemory)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](LICENSE)\n[![Node](https://img.shields.io/badge/Node-%3E%3D22.16.0-339933?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org)\n[![Protocol](https://img.shields.io/badge/Protocol-MCP%20v2-7C3AED?style=flat-square)](https://modelcontextprotocol.io)\n[![MCP Directory](https://mcprush.com/badge/fastrmemory-mcp/compact.svg)](https://mcprush.com/to/fastrmemory-mcp?ref=badge)\n[![Tests](https://img.shields.io/badge/Tests-481%20Passed-brightgreen?style=flat-square)](tests/)\n[![MCP Setup](https://img.shields.io/badge/MCP%20Setup-fastr%20mcp%20init-7C3AED?style=flat-square)](#-one-click-agent-mcp-configuration)\n[![Architecture](https://img.shields.io/badge/Architecture-Zero--Daemon%20WAL-orange?style=flat-square)](#-architecture)\n\n> **Status (2026-11-01):** **`fastrmemory@0.9.2` is published and is `latest`.** Evidence: `npm view fastrmemory version` -> `0.9.2`; `npm view fastrmemory dist-tags --json` -> `{\"latest\":\"0.9.2\"}`; tag `v0.9.2` (`b2c6502`); published 2026-11-01 via GitHub Actions OIDC with npm provenance; the release workflow passed the full gate, clean tarball install, registry verification, and GitHub Release upload; the npm tarball is 358 files, 814,420 bytes packed, 3,273,691 bytes unpacked; GitHub Release asset SHA-256 `2a24f2aa99ce647390b021cb1be7d62fac50edacb2e826c13deba6dcdbe16732`; a clean `npm install fastrmemory@0.9.2` + `fastr --version` -> `0.9.2`; `npm audit signatures` reports 5 verified registry signatures and 4 verified attestations. The official MCP registry lists `io.github.atifjubaer/fastrmemory@0.9.2` as `active` and `isLatest`. Caveat: Node.js >=22.16.0; `0.9.1`, `0.9.0`, `0.8.2`, `0.8.1`, `0.8.0`, `0.7.2`, `0.7.1`, `0.7.0`, `0.6.0`, `0.5.0`, `0.4.0`, `0.3.1`, and `0.3.0` remain published historical. This documentation patch adds the memory landscape, per-client integration matrix, and 0.9.1 upgrade path; the runtime and schema are unchanged. The old scoped npm entries (`@atifjubaer/fastrmemory` and `fastrmemory@0.0.0-stage`) were removed on 2026-10-23; the GitHub `v0.2.1` tag and release remain as history. This README tracks current `main`. Current `main` is **`0.9.2`** and has **481 tests / 74 files**. Use the exact `0.9.2` version for reproducibility. PR #46 at `5da9b2e` passed all required checks (six matrix jobs plus Replayable Memory Diff and Pre-Merge Trap Guardian); the historical `0.9.1` release commit `5da9b2e`, `0.9.0` release commit `c204f50`, `0.8.2` release commit `8cc925b`, `0.8.1` release commit `4e7d9ac`, `0.8.0` release commit `44b2d9a`, `0.7.2` release commit `583223f`, `0.7.1` release commit `31d8e12`, `0.7.0` release commit `5512557`, `0.6.0` release commit `a57a656`, `0.5.0` release commit `54a79ab`, and `0.4.0` release commit `bb365c2` remain published historical. The exact release surface is in [CHANGELOG.md](CHANGELOG.md). The headline benchmark uses **240 deterministic synthetic cases with a 20% holdout**, not SWE-bench or LongMemEval. Public LongMemEval, LoCoMo, and self-repository retrieval-only results plus pinned external baselines are in [BENCHMARKS.md](BENCHMARKS.md); no QA-leaderboard parity is claimed. Performance, packaging, and retrieval claims are tracked in [CLAIMS.md](CLAIMS.md); every README section is mapped to claim IDs in the README claim trace at the end of that ledger. Methodology, caveats, and raw JSON are in [BENCHMARKS.md](BENCHMARKS.md).\n\n<p align=\"center\">\n  <a href=\"#-overview\">Overview</a> &bull;\n  <a href=\"#-design-principles\">Design Principles</a> &bull;\n  <a href=\"#-retrieval-benchmark-240-synthetic-cases\">Benchmarks</a> &bull;\n  <a href=\"#-local-web-dashboard\">Web UI</a> &bull;\n  <a href=\"#-works-with-mcp--and-http-compatible-agents\">Supported Agents</a> &bull;\n  <a href=\"#-quick-start\">Quick Start</a> &bull;\n  <a href=\"#-one-click-agent-mcp-configuration\">MCP Setup</a> &bull;\n  <a href=\"#-mcp-server-tools--resources\">MCP Tools</a> &bull;\n  <a href=\"#-architecture\">Architecture</a> &bull;\n  <a href=\"MIGRATION.md\">Migration</a> &bull;\n  <a href=\"SECURITY.md\">Security</a> &bull;\n  <a href=\"SCORECARD.md\">Scorecard</a>\n</p>\n\n</div>\n\n---\n\n## Launch Status at a Glance\n\n| Claim | Current result | Evidence |\n|---|---|---|\n| Install path | Published `fastrmemory@0.9.2` | `npm view fastrmemory version` -> `0.9.2`; `npm view fastrmemory dist-tags --json` -> `{\"latest\":\"0.9.2\"}`; `npm install fastrmemory@0.9.2`; `fastr --version` -> `0.9.2`; GitHub Release tarball SHA-256 `2a24f2aa...`; old scoped npm entries removed |\n| MCP registry | `io.github.atifjubaer/fastrmemory@0.9.2`, status `active`, `isLatest` | `curl --get --data-urlencode \"search=io.github.atifjubaer/fastrmemory\" https://registry.modelcontextprotocol.io/v0.1/servers`; `gh run view 40262643667` |\n| Synthetic retrieval (optional MiniLM) | Holdout `95.8%` Hit@1, `100%` Hit@5, MRR `0.969` | `npx tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json` |\n| Test suite | `481` tests across `74` files on current `main`; published `0.9.2` is `476` / `74`; published `0.9.1` is `476` / `74`; published `0.9.0` is `476` / `74`; published `0.8.2` is `461` / `69`; published `0.8.1` is `461` / `69`; published `0.8.0` is `461` / `69`; published `0.7.2` is `456` / `67`; published `0.7.1` is `456` / `67`; published `0.7.0` is `455` / `67`; published `0.6.0` is `388` / `61`; `0.5.0` is `297` / `53`; historical `0.4.0` is `293` / `53`; `0.3.1` is `282` / `52`; v0.2.1 is `235` / `43` | `npm test`; `npm run check:ci` |\n| MCP setup | `fastr mcp init` merges portable registry configs or active-CLI local configs for 9 JSON clients and prints a Codex TOML snippet; `--source local` ships in published `0.9.2`, `0.9.1`, `0.9.0`, `0.8.2`, `0.8.1`, `0.8.0`, `0.7.2`, `0.7.1`, `0.7.0`, `0.6.0`, and `0.5.0` | `npm test -- tests/mcp-init.test.ts` -> `15 passed`; `fastr mcp init --client claude --source local --dry-run --json` -> `node .../dist/bin/fastr.js mcp --project ...` |\n| Cross-engine (MCP stdio) | `80/120` overall Hit@1 (`66.7%`, 95% CI `57.8`-`74.5`): exact `40/40`, multi `40/40`, paraphrase `0/40`; `1.094` ms/doc ingest, `1.86` ms recall p50 | `npm run bench:vs`; `bench/results/vs-engines.json` |\n| Crash safety | 10/10 runs, 0 lost, 0 duplicate ids/titles | `npm run test:crash`; `bench/results/crash-test.json` |\n| Public retrieval (0.3.0) | LongMemEval `+10.4pp` / `+11.0pp` Hit@5; LoCoMo `+4.4pp` / `+2.3pp` (target missed) | [docs/EXTERNAL_BASELINE.md](docs/EXTERNAL_BASELINE.md) |\n| Release score | Provisional `9.4 / 10`; `9.2` target met; Retrieval remains Partial | [SCORECARD.md](SCORECARD.md) |\n\nThe synthetic table is not SWE-bench or LongMemEval. Public numbers are retrieval-only and are not QA-leaderboard results. The `95.8%` row uses optional MiniLM; the default offline hash path scores `77.1%` Hit@1 / `93.8%` Hit@5 on the same holdout. Full provenance is in [CLAIMS.md](CLAIMS.md).\n\n---\n\n## 💡 Overview\n\nAI coding agents (Claude Code, Cursor, Windsurf, Codex, Antigravity) degrade on long-running codebases when project memory is lossy or operationally heavy. Common designs make one of three trade-offs:\n- **Decay and merge** old episodes to keep the store small, which can lose exact file paths, stack traces, and edge cases.\n- **Run a daemon or external database**, which adds ports, containers, and setup failure modes.\n- **Dump a static context file**, which grows without bound and is not queryable.\n\n**FastrMemory** keeps a verbatim event log, bi-temporal memory history, and a replayable Git mirror in a **single in-process TypeScript engine** (3 runtime dependencies; local embeddings and the daemon are optional):\n\n<table>\n<tr>\n<td width=\"33%\" align=\"center\">\n\n### Zero Daemon Overhead\nPure Node 22+ built-in `node:sqlite` in WAL mode. On the 240-case suite, engine-level recall is **0.95 ms p50 / 1.60 ms p95** with hash embeddings and **3.30 ms p50 / 5.11 ms p95** with MiniLM on the train split (CLI startup measured separately). The default CLI/MCP path has no background daemon and no open port; `daemon start` is optional. Native on Windows, macOS, and Linux (the current CI matrix uses Intel macOS; Apple Silicon is not covered); CI matrix status is reported in [Actions](https://github.com/atifjubaer/fastrmemory/actions).\n\n</td>\n<td width=\"33%\" align=\"center\">\n\n### 🔀 Bi-Temporal Git Sync\nNever deletes facts during consolidation (there is no destructive sleep step). Replaces half-life decay with `valid_from` / `valid_to` timestamps and auto-mirrors human-readable `.fastr/pages/*.md` files into Git.\n\n</td>\n<td width=\"33%\" align=\"center\">\n\n### 🎯 Triple-Stream RRF ($k=20$)\nFuses FTS5 BM25 + optional local embeddings + file-graph links. Error traps receive a **conditional 2.0x boost** only for trap-intent or file-scoped queries, with per-ID outcome feedback (+0.2 / -0.5). Three consecutive bad outcomes move a memory to dormant; confidence tiers are `high`, `medium`, `low`, `dormant`, and `superseded`. Counting questions (\"how many projects have I led?\") additionally run an aggregate-coverage pass: a second lexical query over their content terms, fused with the original, returning up to 20 rows so the caller can count. `retrieval.temporalFilter` adds opt-in date windows (\"past two weeks\", \"this year\") parsed against the question date.\n\n</td>\n</tr>\n</table>\n\n### ⚔️ Architectural & Performance Comparison\n\n| Capability | Hippo Memory (`hippo-memory`) | Memoria (`matrixorigin/Memoria`) | AgentMemory (`@agentmemory/mcp`) | **FastrMemory (0.9.2+)** |\n| :--- | :--- | :--- | :--- | :--- |\n| **Runtime Architecture** | SQLite store | MatrixOne relational/vector DB container | Dual-layer engine + Redis/Docker | **Zero-Daemon • Native `node:sqlite` in WAL mode** |\n| **Ingestion Speed** | 88.9 ms/doc | Container roundtrip | 1.74 ms/doc | **1.09 ms/doc (80x faster than Hippo)** |\n| **Recall Latency (p50)** | 12.8 ms (spikes to 386 ms p95) | 50–100 ms | 1.52 ms | **0.95 ms p50 / 1.60 ms p95** |\n| **AST Symbol Anchoring** | ❌ None (file path only) | ❌ None | ❌ None | **✅ `declaration_id` (AST hash survives renames & file moves)** |\n| **Self-Verifying Traps** | ❌ None | ❌ None | ❌ None | **✅ Machine assertions (`text_present`, etc.) auto-retire fixed bugs** |\n| **Context Token Overhead** | ⚠️ High (dumps entire rule sets) | ⚠️ High (dumps knowledge graphs) | ⚠️ High (dumps session contexts) | **Ultra-low (≤150 tokens targeted per-turn injection)** |\n| **Passive Learning** | ❌ Manual commands only | ❌ Manual commands only | ❌ Manual commands only | **✅ Auto-distills traps from test failures & subsequent edits** |\n| **Cross-Machine Team Sync**| Manual markdown git commits | Cloud database cluster | Custom daemon | **✅ Bidirectional `fastr sync` on Git pull** |\n| **Editor Integration** | Basic CLI instructions | None | Basic plugin | **✅ Native VS Code & Cursor extension with Problems tab diagnostics** |\n| **MCP Protocol Support** | stdio | REST / MCP adapter | stdio | **Official MCP v2 (12-tool core & 45-tool full profiles)** |\n\n*Verified benchmark evidence from [`bench/results/vs-engines.json`](bench/results/vs-engines.json) and [`docs/PUBLIC_BENCHMARKS.md`](docs/PUBLIC_BENCHMARKS.md).*\n\n### 🧭 Memory Landscape: Where Each Project Starts\n\nThe memory category is not one product. Each project below is the best starting point for a different job; FastrMemory's difference is listed against that job, not as a universal benchmark. Positioning is paraphrased from each project's public documentation (checked 2026-11-01). For engines measured head-to-head, see the evidence table above.\n\n| Project | Best starting point for | How it runs | FastrMemory difference |\n| :--- | :--- | :--- | :--- |\n| [AgentMemory](https://github.com/rohitg00/agentmemory) | Shared local memory for existing coding agents, automatic capture, scoped recall, and a live viewer | Local Node/iii server on four ports, native plugins, 54 MCP tools, 12 hooks | **Zero daemon and zero ports by default**: one SQLite file, 45 MCP tools, AST-anchored traps, and a code call graph |\n| [Mem0](https://github.com/mem0ai/mem0) | Memory APIs, hosted or self-hosted, with SDKs and agent plugins | Hosted API or self-hosted service with an external vector store | **No account, API key, or vector database**: local-first, Git-diffable, MCP-native |\n| [Supermemory](https://github.com/supermemoryai/supermemory) | Memory and document context through a hosted API or local server | Hosted API or local server | **Single-file database**; no server process to operate |\n| [Zep / Graphiti](https://github.com/getzep/graphiti) | Enterprise context and temporal knowledge graphs | Service plus a graph database | **Bi-temporal SQLite plus a Git Markdown mirror**; no graph database service |\n| [Letta](https://github.com/letta-ai/letta) | Building stateful agents with their own managed memory | Agent server/runtime with managed memory | **A memory layer for any agent**, not a new agent runtime |\n| [Cognee](https://github.com/topoteretes/cognee) | Turning documents, code, and conversations into searchable knowledge | Python pipelines with graph and vector stores | **Zero Python**: in-process TypeScript with declaration-anchored code memory |\n| [claude-mem](https://github.com/thedotmack/claude-mem) | Capturing and summarizing coding sessions across supported agents | Hook-based session capture and summaries | **Typed error traps with assertions and a code graph** on top of session capture |\n| **FastrMemory** | **Local-first cognitive memory for coding agents: zero-daemon MCP, self-verifying traps, graph-grounded recall, and Git-diffable bi-temporal rules** | **Node 22.16+, built-in `node:sqlite` in WAL mode, 3 runtime dependencies** | — |\n\n---\n\n## 🧭 Design Principles\n\n| Principle | Implementation |\n| :--- | :--- |\n| **Lossless by default** | Raw events, bi-temporal `valid_from` / `valid_to`, and supersession chains are retained. Nothing is destroyed by consolidation. |\n| **Zero daemon by default** | One Node 22+ process uses built-in `node:sqlite` in WAL mode. The default CLI/MCP path opens no ports or background services; `daemon start` is optional. |\n| **Replayable** | Git-diffable Markdown mirrors plus snapshots and rollback keep history inspectable. |\n| **Measured, not asserted** | Public claims are tied to committed benchmark JSON with a 20% holdout; simulated baselines are labeled as simulations. |\n\n---\n\n---\n\n## 🤖 Works With MCP- and HTTP-Compatible Agents\n\nFastrMemory exposes one stdio MCP server and optional local HTTP services (dashboard and daemon). **Native installers wire Claude Code (MCP config plus lifecycle hooks), Cursor (MCP config plus rules), and, since 0.3.0, Gemini CLI, GitHub Copilot CLI, and OpenCode V2** (`fastrmemory hook install`); `fastrmemory setup` also writes MCP configs for Antigravity, Claude Desktop, and Windsurf. Since `0.9.1`, both commands also write the mandatory rule file each client reads, so the agent calls the memory tools without being asked. Every other client connects through its own MCP configuration or the REST API. Integration depth varies by client - only the native installers are covered by tests in this repository.\n\nClients commonly used with FastrMemory include Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI, Antigravity, Claude Desktop, Cline, Continue, Roo Code, Goose, Zed, Warp, and Aider. Listing a client does **not** imply a tested native integration.\n\n### 🧩 Integration Depth by Client\n\nOne MCP server reaches every MCP client. The layers above MCP depend on what the client exposes:\n\n| Layer | What the agent gets | Wired automatically | Other clients |\n| :--- | :--- | :--- | :--- |\n| **MCP tools** (12-tool core / 45-tool full) | Recall, trap recall and logging, handoff, graph queries, status | Antigravity, Claude Desktop, Claude Code, Cursor, and Windsurf via `fastr setup`; Claude Code, Cursor, OpenCode, Gemini CLI, and Copilot CLI via `fastr hook install` | Any MCP client via `fastr mcp init --client <id>` or a manual stdio entry |\n| **Mandatory rules** | The instruction that makes the agent recall before editing and log a trap after a failure | Claude Code (`.claude/rules/fastrmemory.md`), Cursor (`.cursor/rules/fastrmemory.mdc`, `alwaysApply: true`), GitHub Copilot, Windsurf, Gemini CLI, and `AGENTS.md` for Codex, OpenCode, Devin, and Aider | Agents that read `AGENTS.md` |\n| **Lifecycle hooks** | SessionStart context, the per-prompt next step (Claude Code), PreToolUse trap warnings, pre-compaction snapshots, SessionEnd distillation | Claude Code, OpenCode, Gemini CLI, and Copilot CLI (`fastr hook install`) | Clients without a hook API rely on MCP plus rules |\n| **`/fastr` command** | One slash command for recall, trap logging, and handoff | Claude Code, Cursor, Codex, OpenCode, Gemini CLI, Copilot, and Windsurf (`fastr skill install`) | — |\n| **VS Code extension** | Sidebar, commands, and Problems-tab diagnostics | VS Code and Cursor (`npm run package:extension`) | Marketplace / Open VSX workflow |\n\n<p align=\"center\">\n  <a href=\"https://mcprush.com/to/fastrmemory-mcp?ref=badge\">\n    <img src=\"https://mcprush.com/badge/fastrmemory-mcp/card.svg\" alt=\"FastrMemory MCP server\" width=\"380\" height=\"200\" />\n  </a>\n</p>\n\n---\n\n## 🚀 Quick Start\n\n### Run Without a Global Install\n\nThe canonical package target is unscoped `fastrmemory`. The old scoped npm entries were removed on 2026-10-23.\n\n```bash\n# Canonical one-shot (always uses the latest release):\nnpx -y fastrmemory setup\n\n# Or launch the local Web UI:\nnpx -y fastrmemory ui\n```\n\nFor a reproducible install pinned to a specific release: `npx -y fastrmemory@0.9.2 setup`. The default `latest` channel automatically tracks new releases, while `--channel pinned` records the exact version.\n\nThe GitHub source path remains available for development only: `npx github:atifjubaer/fastrmemory setup`. For a reproducible source install, pin the tag: `npx github:atifjubaer/fastrmemory#v0.9.2 setup`. Do not use either GitHub form in generated MCP or hook configs; those must use the npm package.\n\n---\n\n### Install from npm\n\n```bash\n# Canonical install (always latest):\nnpm install -g fastrmemory\nfastr --version\n\n# Or run one-shot:\nnpx -y fastrmemory --version\n```\n\nTo pin an exact release instead: `npm install -g fastrmemory@0.9.2`.\n\nThe official MCP registry lists the server as `io.github.atifjubaer/fastrmemory` (`0.9.2`, status `active`), so registry-aware clients can find it by name; the entry carries the same `npx -y fastrmemory@0.9.2 mcp` package and stdio transport. `0.9.2` is built from tag `v0.9.2` by `.github/workflows/release.yml`, which runs the full gate, publishes with npm provenance, and attaches the same tarball to the GitHub Release. Verify the registry result with `npm view fastrmemory@0.9.2 version` and `npm view fastrmemory dist-tags --json`; a first E404 for a few minutes is registry propagation, not a failed publish. The old scoped npm entries remain removed. Do not republish `0.3.0`. `0.5.0`, `0.4.0`, and `0.3.1` remain published historical.\n\n### Update an Existing Install\n\nStop every agent, hook, `fastr ui`, and `fastr daemon` before changing versions. Run this from the project root:\n\n```bash\n# 1. Back up memory before changing versions\nfastr backup fastr-backup.jsonl\nfastr backup --verify fastr-backup.jsonl\n\n# 2. Update the global CLI\nnpm install -g fastrmemory@latest\nfastr --version\n\n# 3. Refresh project integration\nfastr setup                                   # MCP configs, mandatory rules, and skills\nfastr hook install --client all               # lifecycle hooks plus MCP for hook clients\nfastr skill install --client all              # optional /fastr command for 7 clients\n\n# 4. Verify\nfastr status\nfastr hygiene\n```\n\n**Upgrading from `0.8.x` or `0.9.0` requires step 3.** The mandatory rule files added in `0.9.1` are written by `fastr setup` and `fastr hook install`; upgrading the CLI or the MCP entry alone does not create them. After step 3, restart the client so it reloads `.claude/rules/fastrmemory.md`, `.cursor/rules/fastrmemory.mdc`, `.github/copilot-instructions.md`, `.windsurf/rules/fastrmemory.md`, `GEMINI.md`, and `AGENTS.md`.\n\n**Automatic code-graph indexing (current `main`).** `fastr setup` and `fastr hook install` index the project once, SessionStart repairs an empty index, and the prompt and session-end hooks re-index the two most recent edits. This keeps 1-hop trap warnings and `fastr_god_nodes` populated without a manual step. `fastr index` remains available for a full rebuild; add `--no-index` to `fastr hook install` or set `FASTR_AUTO_INDEX=0` to disable it. Published `0.9.2` predates this and still needs a manual `fastr index`.\n\n`0.9.x` has additive-only schema migrations (`symbols`, `code_edges`, `file_edits`, `memories.assertion`, and queues). If you use `--channel pinned`, rerun `fastr mcp init` after each update; with the default `latest` channel, restart the client to pick up the new release. If you use `--source local` (or ran `fastr setup` from a global install), the config points at the installed CLI, so updating the global package updates the server without rewriting the config. npx-generated configs pin the version that created them, so re-run `npx -y fastrmemory@latest setup` to move them forward. `fastr setup` refreshes copied skills, overwrites same-named skill files, removes retired skills, and leaves user-owned directories. `fastr hook install` does not copy skills. See [MIGRATION.md](MIGRATION.md) for rollback.\n\n### One-Command MCP Setup\n\n`fastr mcp init` is the shadcn-style setup path. It is config-only: it merges the `fastrmemory` MCP entry into an existing client config, preserves unrelated keys, writes a one-time `.fastr.bak` backup, and is idempotent. It does not install lifecycle hooks, skills, or the OpenCode plugin; use `fastr hook install` for hooks and the OpenCode plugin, and `fastr setup` for skills.\n\n```bash\n# Claude Code (project-scoped .mcp.json)\nnpx -y fastrmemory@latest mcp init --client claude\n\n# Cursor\nnpx -y fastrmemory@latest mcp init --client cursor\n\n# VS Code (.vscode/mcp.json)\nnpx -y fastrmemory@latest mcp init --client vscode\n\n# OpenCode (opencode.json)\nnpx -y fastrmemory@latest mcp init --client opencode\n\n# Gemini CLI and GitHub Copilot CLI\nnpx -y fastrmemory@latest mcp init --client gemini,copilot\n\n# Every project-scoped client at once\nnpx -y fastrmemory@latest mcp init --client all --scope project\n```\n\nThe same command through the other package runners:\n\n```bash\npnpm dlx fastrmemory@latest mcp init --client claude\nyarn dlx fastrmemory@latest mcp init --client claude\nbunx fastrmemory@latest mcp init --client claude\n```\n\nThe default `--channel latest` writes `fastrmemory@latest`, so a client restart picks up the newest npm release. Use `--channel pinned` for a reproducible config containing the exact version that ran the command; on current `main` that writes `fastrmemory@0.9.2`. `--runner pnpm|yarn|bunx` changes the generated runner, `--profile full` selects the 45-tool surface (the default is the 12-tool core profile), `--dry-run` prints targets without writing, and `--scope user` writes user-level configs with an explicit `--project /absolute/path` so the server always opens the intended database. Codex prints a `[mcp_servers.fastrmemory]` TOML block for `~/.codex/config.toml` instead of rewriting a user-owned TOML file.\n\nFor a globally installed CLI, use `--source local` to write the active CLI path instead of an npx command. It always appends an absolute `--project`, so the config is machine-specific but starts without an npx cold start:\n\n```bash\nfastr mcp init --client all --scope user --source local --profile core\n```\n\nUpdating the global package updates the server; rerun the command only if the CLI path changes. Use the default `--source registry` for portable project configs that are committed and shared across machines.\n\n> `--source local` ships in published `0.5.0` and later; on older releases, use `fastr setup` for an installed-CLI config.\n\n> `mcp init` ships in `0.4.0` and later; `npx fastrmemory@latest mcp init ...` now resolves to published `0.9.2`. If you need an earlier release, use `fastr setup` or pin the exact version.\n\n### Install from GitHub\n\nFor a one-shot source run, pin the release tag:\n\n```bash\nnpx --yes github:atifjubaer/fastrmemory#v0.9.2 --version\nnpx --yes github:atifjubaer/fastrmemory#v0.9.2 setup\n```\n\nFor a global CLI without npm's Git resolver, download the release tarball:\n\n```bash\ncurl -L -o fastrmemory-0.9.2.tgz \\\n  https://github.com/atifjubaer/fastrmemory/releases/download/v0.9.2/fastrmemory-0.9.2.tgz\nnpm install -g ./fastrmemory-0.9.2.tgz\nfastr --version\n```\n\nOn Windows, download the same URL with `Invoke-WebRequest` or a browser, then run `npm install -g .\\fastrmemory-0.9.2.tgz`. For a local project install, use `npm install --no-save ./fastrmemory-0.9.2.tgz` instead of the global flag.\n\n> Git installs build from source and are slower than the npm tarball; for a global CLI, prefer the npm package or the release tarball above. `npm install -g git+https://...` is not recommended with npm 11 because the `prepare` build does not receive dev dependencies. Both `fastrmemory` and `fastr` (short alias) are executable after installation. The canonical package is unscoped `fastrmemory@0.9.2`; the old scoped npm entries are gone. Use npm for generated MCP and hook configs so installs stay reproducible.\n\n### 2. Verify Database Health\n\n```bash\nfastrmemory status\n```\n\nOutput:\n```text\n=== FastrMemory Health (my-project) ===\n- Project ID:          proj_1cce2a654e3a\n- Active Memories:     2\n- Staging Memories:    0\n- Superseded History:  0\n- Ingested Events:     0\n- Pending Spool:       Clear (0)\n- Database File:       .fastr/fastr.db\n```\n\n### 3. Record & Recall a Memory\n\n```bash\n# Record an error trap linked to an exact file:\nfastrmemory remember \"Never Use Date.now() Milliseconds for JWT Expiration\" \\\n  -c \"JWT exp claims expect integer seconds. Always use Math.floor(Date.now() / 1000).\" \\\n  -m auth -k error_trap -f \"src/auth/jwt.ts\" --verified\n\n# Recall with conditional 2.0x trap boost & file-graph matching:\nfastrmemory recall \"JWT expiration\" -f \"src/auth/jwt.ts\"\n```\n\nOutput:\n```text\n=== Recalled Memories (1 results, ~46 tokens) ===\n\n[mem_009e4a7d] [TRAP] [verified] Never Use Date.now() Milliseconds for JWT Expiration (Score: 0.08)\nJWT exp claims expect integer seconds. Always use Math.floor(Date.now() / 1000).\n```\n\nOpen contradictions are marked on both sides of the recall result instead of being silently mixed into context (**0.3.0**):\n\n```bash\n# Inspect unresolved contradictions:\nfastrmemory conflict list\n\n# Keep the rule that matches the project and supersede the loser:\nfastrmemory conflict resolve 1 --keep mem_009e4a7d --forget --reason \"Seconds are the project standard\"\n```\n\n#### Import Existing Local Rules (**0.3.0**)\n\nBring `AGENTS.md`, `CLAUDE.md`, or `.cursor/rules/*.mdc` content into memory without hand-copying every section. Level 2+ headings become memories; bullet lists and paragraphs are fallbacks. Re-importing the same file skips exact duplicates.\n\n```bash\n# Preview the parsed sections without writing:\nfastrmemory import AGENTS.md --from agents-md --module rules --dry-run\n\n# Import as staging memories for review, or verify them immediately:\nfastrmemory import AGENTS.md --from agents-md --module rules\nfastrmemory import AGENTS.md --from agents-md --module rules --verified\n\n# JSONL snapshots use the same entry point:\nfastrmemory import snapshot.jsonl --from jsonl\n```\n\n### 4. Cognitive Git Blame & Memory-Aware Commit\n\n```bash\n# Cognitive Git Blame linking lines directly to commit, author, and governing error traps (conditional 2.0x boost):\nfastrmemory blame src/auth/jwt.ts:42\n\n# Pre-commit error trap validation & conventional commit synthesis:\nfastrmemory commit\n```\n\n### 5. Git Snapshots, Branches, Rollback & Background Daemon (branches are **0.3.0**)\n\n```bash\n# Point-in-time memory snapshot (Git for Agent Memory):\nfastrmemory snapshot create \"pre-refactor-checkpoint\"\nfastrmemory snapshot list\nfastrmemory snapshot rollback \"pre-refactor-checkpoint\"\n\n# Portable backup with a sidecar provenance manifest:\nfastrmemory backup backups/pre-upgrade.jsonl\nfastrmemory backup --verify backups/pre-upgrade.jsonl\nfastrmemory backup --restore backups/pre-upgrade.jsonl --dry-run\nfastrmemory backup --restore backups/pre-upgrade.jsonl\n\n# Bidirectional Team Memory Sync (Git-backed .fastr/pages/*.md):\nfastrmemory sync\n\n# Passive Cognitive Distillation (harvest traps from recent session errors):\nfastrmemory distill\n\n# Check self-verifying memory assertions and retire fixed traps:\nfastrmemory trap verify\nfastrmemory trap verify --apply\n\n# Immutable memory branch and one-way merge with a conflict report:\nfastrmemory branch create feature/auth\nfastrmemory branch list\nfastrmemory merge feature/auth\nfastrmemory merge feature/auth --force --strategy branch\n\n# Hybrid Background Daemon (Optional HTTP/SSE service for cross-process tools):\nfastrmemory daemon start\nfastrmemory daemon status\nfastrmemory daemon stop\n\n# Auto-wire MCP + lifecycle hooks for Claude Code, Cursor, Gemini CLI, Copilot CLI, and OpenCode:\nfastrmemory hook install\n\n# Auto-wire MCP + AGENTS.md + Planetary Skills; setup also wires Antigravity, Claude Desktop, and Windsurf:\nfastrmemory setup\n\n# Mine past Git bug fixes directly into staging error traps:\nfastrmemory learn -n 30 --days 90\n```\n\nBranches are immutable snapshot pointers. `merge` is one-way into the current active set: branch-only memories are added, target-only memories are preserved, and same-identity changes are reported as conflicts. Conflicts block writes by default; `--force` applies non-conflicting additions, and `--force --strategy branch` supersedes the target while keeping old rows in history. Branch checkout or a mutable branch working tree is not implemented.\n\n`backup` writes the portable JSONL snapshot plus `<file>.manifest.json` with the file SHA-256, content hash, record counts, tool version, environment, and source integrity. `--restore` verifies both hashes before importing; `--dry-run` reports counts without writing. The backup scope is memories, raw events, file links, and conflicts, not a physical SQLite/WAL copy. See [MIGRATION.md](MIGRATION.md) for the full backup and rollback path.\n\n### 6. Token Compression, Database Doctor & Vision Search\n\n```bash\n# Compress markdown docs & LLM prompt context to reduce token usage:\nfastrmemory compress docs/architecture.md --dry-run\n\n# Run deep health check across SQLite, FTS5 indices, file links, and task DAGs:\nfastrmemory diagnose\n\n# Auto-repair FTS5 indices, orphaned file links, and WAL fragmentation:\nfastrmemory heal\n\n# Report orphaned records, duplicate active memories, and stale rows:\nfastrmemory hygiene\nfastrmemory hygiene --stale-days 30 --json --fail-on-issues\n\n# Tag a UI screenshot or architecture diagram with OCR & 384-dim vector indexing:\nfastrmemory vision tag screenshots/modal-error.png --desc \"Modal error 401 alert\" --ocr \"HTTP 401\"\n\n# Semantic search across tagged screenshots and visual diagrams:\nfastrmemory vision search \"modal error 401\"\n\n# Pre-merge CI/CD gate checking PR diffs against active error traps:\nfastrmemory guard --strict\n\n# Optional 30 MB static semantic model (never downloaded implicitly):\nfastrmemory model status\nfastrmemory model install\n```\n\n`fastrmemory hygiene` reports orphaned file links, conflict rows, and feedback rows; duplicate active memories by normalized title or exact content; and stale unpinned active memories (default 90 days since the last recall or creation). `npm run check:hygiene` runs the same inspector against a deterministic fixture inside `check:ci`; it does not mutate a project database. Use `--fail-on-issues` when a script should exit nonzero on findings.\n\n`fastrmemory model install` fetches `minishlab/potion-base-8M` (256-dim, 30,236,760 bytes), verifies both files against pinned SHA-256 hashes, and stores them under `~/.fastr/models/`. The tier is a bounded reranker over BM25 candidates: it fixes 1 case and breaks 1 across the 120-case LongMemEval slice, so it is documented as non-regressive, not as an accuracy win. Default recall is BM25-only until the asset is installed and backfill has produced vectors.\n\n---\n\n## 🔌 One-Click Agent MCP Configuration\n\n`fastr mcp init` is the one-command path for MCP-only wiring. By default it uses `--source registry` and writes the platform-correct portable runner (`npx`, `pnpm dlx`, `yarn dlx`, or `bunx`; `cmd /c ...` on native Windows). Pass `--source local` to write the active CLI path plus an absolute `--project`, which is useful for a globally installed CLI but makes the config machine-specific. It preserves unrelated config keys and is idempotent. `fastr setup` remains the full installer for `.fastr/`, `AGENTS.md`, MCP configs, and skills; `fastr hook install` adds lifecycle hooks plus MCP configs for Claude Code, Cursor, Gemini CLI, Copilot CLI, and OpenCode.\n\n`fastr hook install` merges lifecycle hooks for Claude Code, Cursor, Gemini CLI, GitHub Copilot CLI, and OpenCode, and writes the OpenCode context/compaction plugin. `fastr hook uninstall` removes exactly what install wrote — the `fastrmemory` MCP entry, the hook commands, the managed OpenCode plugin, and the `AGENTS.md` discipline block — while leaving every user entry in the same files untouched. Both commands are idempotent, accept `--client <ids|all>`, `--project <dir>`, `--no-agents-md`, and `--json`, and are covered by [docs/CLIENT_SUPPORT.md](docs/CLIENT_SUPPORT.md). Gemini CLI requires strict JSON on hook stdout; Copilot returns `permissionDecision: \"ask\"` for an active trap because it has no model-facing advisory field for `preToolUse`.\n\n| Client | Project config | User config | JSON key |\n| :--- | :--- | :--- | :--- |\n| Claude Code | `.mcp.json` | `~/.claude.json` | `mcpServers` |\n| Cursor | `.cursor/mcp.json` | `~/.cursor/mcp.json` | `mcpServers` |\n| VS Code | `.vscode/mcp.json` | VS Code `User/mcp.json` | `servers` |\n| OpenCode | `opencode.json` | project only | `mcp.servers` |\n| Gemini CLI | `.gemini/settings.json` | `~/.gemini/settings.json` | `mcpServers` |\n| GitHub Copilot CLI | `.github/mcp.json` | project only | `mcpServers` |\n| Windsurf | user only | `~/.codeium/windsurf/mcp_config.json` | `mcpServers` |\n| Antigravity | user only | `~/.gemini/antigravity/mcp_config.json` | `mcpServers` |\n| Claude Desktop | user only | platform-specific | `mcpServers` |\n| Codex | user only | `~/.codex/config.toml` | printed TOML |\n\nExample POSIX project config generated by `fastr mcp init --client cursor` (Windows uses `cmd /c npx ...`):\n\n```json\n{\n  \"mcpServers\": {\n    \"fastrmemory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fastrmemory@latest\", \"mcp\"]\n    }\n  }\n}\n```\n\nVS Code uses `servers` instead of `mcpServers`; OpenCode uses `mcp.servers` with a command array and `\"type\": \"local\"`. Existing `opencode.json(c)` settings are preserved, but a JSONC config is reported for manual wiring rather than rewritten. Codex is always printed as a `[mcp_servers.fastrmemory]` TOML block because rewriting a user-owned TOML file safely requires a dedicated parser.\n\nFor user-scoped clients, the generated entry includes `--project /absolute/path/to/repo`; this prevents the client's launch directory from selecting the wrong database. `fastr setup` also writes the absolute `node` path and is the recommended path when the client cannot launch package-runner shims. `--source local` is the `mcp init` equivalent for an installed CLI: it writes the active CLI path and an absolute `--project`; use `--source registry` (the default) when the config will be committed or shared. `--source local` ships in published `0.5.0` and later; on older builds, use `fastr setup` for an installed-CLI config. On native Windows, `fastr mcp init` automatically emits `\"command\": \"cmd\"` with `\"/c\"` and the runner, so manual `npx.cmd` fixes are not needed.\n\n`--client all --scope project` covers the six project-scoped clients in the table. `--client all --scope user` covers the eight user-scoped clients; OpenCode and Copilot CLI are project-only, while Codex prints a TOML block for manual insertion. User-scoped entries pin one `--project` database, so use project scope when each developer may open a different checkout.\n\n---\n\n## 🛠️ MCP Server: Tools & Resources\n\nBuilt using the official **v2 `@modelcontextprotocol/server`** SDK. The tool list below describes **0.9.2**; 45 tools across the 12-tool core and full profiles.\n\n### 45 MCP Tools\n\nThe default **core profile** exposes 12 tools: the daily loop (`fastr_recall`, `fastr_remember`, `fastr_handoff`, `fastr_trap_recall`, `fastr_trap_log`, `fastr_status`, `fastr_get`, `fastr_replay`, `fastr_compress`, `fastr_diagnose`) plus `fastr_tools` for discovery and `fastr_call` for dispatch. Its `tools/list` payload is 8,715 bytes (~2,179 tokens). The **full profile** exposes all 45 tools; start it with `fastrmemory mcp --profile full` or `FASTR_MCP_PROFILE=full`. Every full-profile tool stays reachable from the core profile through `fastr_call`. Resources and prompts are the same in both profiles. Pass `--project /absolute/path/to/repo` when the host starts the server outside the repository, so memory is written to the intended `.fastr/fastr.db`.\n\n#### Cognitive Retrieval & Memory Core\n1. `fastr_recall`: Triple-stream hybrid search (BM25 + Vector + Spreading Activation Graph) with progressive L0–L3 token budgeting and air-gapped offline vector fallback.\n2. `fastr_get`: Retrieves complete memory details (including status, timestamps, reward scores, and full content) by memory ID.\n3. `fastr_list`: Lists memories with bounded filtering by module, kind, status, limit, and offset.\n4. `fastr_drill`: Resolves `source_event_ids` to retrieve untruncated verbatim stack traces, diffs, and tool outputs from `raw_events`.\n5. `fastr_file_history`: Returns active rules, `[TRAP]` warnings, and past supersessions for a specific file path.\n6. `fastr_symbol_history`: Returns active rules, [TRAP] warnings, and past supersessions anchored to a named function, class, or type. The anchor follows the declaration through a rename or a file move, so a trap written against `signToken` is still found after it becomes `signJwt`.\n7. `fastr_god_nodes`: Returns the top architectural hub symbols (functions and classes with highest caller in-degree), identifying core abstractions with the highest blast radius.\n8. `fastr_remember`: Records new rules, decisions, or traps. Automatically extracts NER entities, scrubs secrets, and re-renders Markdown mirrors. Supports `scope: 'project' | 'global'`.\n9. `fastr_pin`: Pins critical rules so they are permanently preserved and prioritized in L0 assembly without time decay.\n10. `fastr_forget`: Tombstones and deactivates an outdated memory cleanly with audit logging.\n11. `fastr_supersede`: Retires an outdated rule (`valid_to = now`), records the rationale, and inserts a replacement verified rule.\n12. `fastr_feedback`: Updates `reward_score` and the confidence tier on one memory ID (+0.2 good, -0.5 bad). Three consecutive bad outcomes make it dormant; never penalizes innocent memories.\n13. `fastr_handoff`: Saves or retrieves cross-agent session milestones and promotes staging memories to verified.\n14. `fastr_status`: Returns active/staging counts, spool health, and embedding coverage %.\n15. `fastr_graph_query`: Explores 1-hop and 2-hop structural file-link dependencies, entity links, and connected error traps.\n16. `fastr_timeline`: Chronological audit trail of memory events, newly verified rules, error traps, and historical supersessions.\n\n#### Versioning & Error Traps\n17. `fastr_snapshot`: Creates named point-in-time memory snapshots for branch tracking and experiment safety.\n18. `fastr_rollback`: Instant Git-like rollback to any previous memory snapshot.\n19. `fastr_trap_log`: One-line rapid logging of error traps and bug solutions with a conditional 2.0x recall boost.\n20. `fastr_trap_recall`: Targeted lookup of high-priority error traps protecting specific target files before editing.\n\n#### Proactive Contradiction Detection & Resolution\n21. `fastr_conflicts`: Proactive contradiction detection using Jaccard token overlap (minimum 0.35) and 50-word opposing-polarity analysis.\n22. `fastr_resolve`: Resolves contradictions by keeping preferred rule and superseding or weakening the loser.\n\n#### Kahneman Planning Fallacy & Base-Rate Calibrator\n23. `fastr_predict`: Records effort/time/risk predictions and closes predictions with actual empirical outcomes.\n24. `fastr_predict_baserate`: Computes historical reference-class statistics (Mean, Median p50 ratio, MAE) to debias agent estimates.\n\n#### Multi-Agent Action DAG & Frontier\n25. `fastr_action_create`: Creates structured work item actions with prerequisite (`requires`) and conflict (`conflicts_with`) constraints.\n26. `fastr_action_update`: Updates task lifecycle (`pending`, `active`, `done`, `blocked`), assignments, and memory crystallization.\n27. `fastr_frontier`: Computes unblocked, ready-to-execute frontier actions with satisfied dependencies.\n28. `fastr_next`: Atomically claims and returns the highest-priority frontier action for autonomous worker agents.\n\n#### Bounded Working Memory & Obsidian Vault Export\n29. `fastr_slot_get`: Retrieves bounded working memory slot (e.g. `current_goal`, `user_preferences`, `active_hypothesis`).\n30. `fastr_slot_set`: Updates working memory slot with hard character ceiling enforcement to prevent context bloat.\n31. `fastr_slot_list`: Lists all working memory slots and active character usage.\n32. `fastr_obsidian_export`: Exports all memories, entities, and relationships into an Obsidian-compatible markdown vault with YAML frontmatter, `[[wikilinks]]`, and `MOC.md`.\n\n#### Multi-Repository Federation & Context Assembly\n33. `fastr_federate`: Manages cross-repository organization-wide shared rules and error traps via SQLite native `ATTACH DATABASE` (`~/.fastr/global.db`).\n34. `fastr_assemble`: Dynamically formats and packs high-density structured prompt context (`<fastr_context>`) with token budgeting.\n35. `fastr_risk_predict`: Computes historical failure probability and active trap hazard score for target codebase files.\n36. `fastr_verify_provenance`: Cryptographically verifies SHA-256 provenance hashes for recorded agent attribution.\n\n#### Token Compression & Autonomous Doctor\n37. `fastr_compress`: Compresses markdown files or prompt context while strictly preserving headings, URLs, and code blocks with `.original.md` backup.\n38. `fastr_diagnose`: Deep health audit of SQLite B-Tree integrity, FTS5 BM25 search indices, orphaned file links, and task DAGs.\n39. `fastr_heal`: Automatic repair of database indices, dangling edges, and WAL page reclamation.\n\n#### Memory Replay & Diff\n40. `fastr_replay`: Reconstructs memory state at a timestamp and returns the active snapshot for audit or recovery.\n41. `fastr_diff`: Compares two snapshots and reports added, superseded, and removed memories.\n\n#### Multimodal Visual Memory\n42. `fastr_vision_tag`: Tags screenshots, UI diagrams, and wireframes with OCR and semantic descriptions with 384-dim embeddings.\n43. `fastr_vision_search`: Hybrid vector and keyword search across stored visual assets for multimodal coding agents.\n\n#### Tool Discovery & Dispatch\n44. `fastr_tools`: Lists every tool the server can run, with its JSON input schema, filtered by name or description. Part of the core profile.\n45. `fastr_call`: Runs any tool from `fastr_tools` by name after validating arguments against that tool's schema. Part of the core profile.\n\n### 2 MCP Prompt Templates\n\n- `pre-edit-check`: Given file paths, instructs the agent to check traps and relevant rules before editing.\n- `session-wrap-up`: End-of-session checklist for logging traps, superseding stale rules, scoring memories, and saving a handoff.\n\n### 5 MCP Resources (0.3.0; v0.2.1 has 4)\n\n- `fastr://project/overview`: L0 project summary containing active counts and storage location.\n- `fastr://project/traps`: All active `[TRAP]` warnings for immediate bug avoidance.\n- `fastr://session/handoff`: Latest cross-agent handoff milestone.\n- `fastr://memory/{id}` (resource template): Full JSON for a single memory, including linked files and its validity window.\n- `fastr://memory/{id}/envelope` (resource template): Metadata, cryptographic provenance, file/graph links, and open/resolved conflict state for one memory.\n\n---\n\n## 📄 Two-Zone Git-Diffable Mirror\n\nEvery write to the local SQLite database automatically synchronizes human-readable markdown files in `.fastr/pages/<module>.md`. This allows developers to review AI memories directly in GitHub Pull Requests:\n\n```markdown\n# Module: auth\n\n> Auto-generated by FastrMemory. Active rules are at the top; superseded history is preserved below for Git diffs.\n\n---\n\n## Compiled Truth (Active Rules & Traps)\n\n### [mem_009e4a7d] [TRAP] Never Use Date.now() Milliseconds for JWT Expiration\n- **Kind**: `error_trap`\n- **Status**: `verified` (Reward Score: 1)\n- **Linked Files**: `src/auth/jwt.ts`\n- **Active Since**: `2026-10-18T21:46:20Z`\n\nJWT exp claims expect integer seconds. Always use Math.floor(Date.now() / 1000).\n\n---\n\n## Append-Only Timeline (History & Superseded)\n\n### [EXPIRED 2026-10-18T20:00:00Z -> 2026-10-18T21:46:20Z] [mem_abc123] Token Signing\n- **Superseded By**: `[mem_009e4a7d]`\n- **Reason**: Standardized on integer seconds\n- **Historical Status**: `superseded`\n\n> Old implementation used milliseconds which failed expiration validation.\n```\n\n---\n\n## 🧠 Planetary Agent Skills Suite\n\nFastrMemory ships 10 Agent Skills (in `skills/`, mirrored to `.cursor/skills/`) that tell agents *when* to use each memory tool. Install them as a Claude Code plugin (`.claude-plugin/`) or copy them with `fastrmemory setup`:\n\n- [fastr-memory](skills/fastr-memory/SKILL.md): At the start of a task and before editing files: `fastr_trap_recall`, then `fastr_recall` / `fastr_assemble`.\n- [fastr-trap-log](skills/fastr-trap-log/SKILL.md): The moment a failure is diagnosed: record it with `fastr_trap_log`.\n- [fastr-session-commit](skills/fastr-session-commit/SKILL.md): When a task is done and tests pass: supersede, rate memories, and `fastr_handoff` with `verifyStaging`.\n- [fastr-curate](skills/fastr-curate/SKILL.md): When storing durable lessons or fixing contradictions: dedupe, remember, supersede, resolve conflicts, snapshot/rollback.\n- [fastr-setup](skills/fastr-setup/SKILL.md): When FastrMemory is not wired into Claude Code: `fastrmemory hook install`, `claude mcp add`, verify with `fastrmemory status`.\n- [fastr-plan-estimate](skills/fastr-plan-estimate/SKILL.md): When estimating effort or risk: base rates, file risk, and closing predictions.\n- [fastr-dag](skills/fastr-dag/SKILL.md): When work has dependent steps or several agents share a backlog.\n- [fastr-doctor](skills/fastr-doctor/SKILL.md): When recall misses memories or the database looks unhealthy: diagnose, then heal.\n- [fastr-compress](skills/fastr-compress/SKILL.md): When a doc or context block exceeds its token budget.\n- [fastr-vision](skills/fastr-vision/SKILL.md): When screenshots or diagrams should be remembered or searched.\n\nRun `npm run check:skills` to validate every tool call in the skills against `src/mcp/server.ts`.\n\nAfter updating the CLI, re-run `fastr setup` to refresh the copied skills. The installer overwrites same-named skill files, removes retired skills, and leaves unrelated user-owned directories. `fastr hook install` does not copy skills. Restart the client after setup. If you install the Claude Code plugin instead, update the plugin rather than maintaining a second copied skill set.\n\n---\n\n## 🏗️ Architecture\n\n```mermaid\nflowchart TD\n    subgraph Ingestion[\"1. Lossless Ingestion & Spool\"]\n        Agent[\"AI Coding Agent\\n(Claude Code, Cursor, Antigravity)\"] --> Scrubber[\"Secret Scrubber\\n(API Keys, Bearer, PEM)\"]\n        Scrubber --> Spool{\"SQLite Busy?\"}\n        Spool -- Yes --> SpoolFile[\".fastr/spool/pending.jsonl\\n(async fallback)\"]\n        Spool -- No --> DB\n    end\n\n    subgraph Storage[\"2. Bi-Temporal Storage & Git Mirror\"]\n        DB[(\"Node 22 node:sqlite (WAL)\\nraw_events | memories\\nfile_links | handoffs\")]\n        DB --> Mirror[\"Markdown Mirror Engine\"]\n        Mirror --> Pages[\".fastr/pages/<module>.md\\nTop: ## Compiled Truth\\nBottom: ## Append-Only Timeline\"]\n    end\n\n    subgraph Search[\"3. Triple-Stream Hybrid Retrieval\"]\n        Query[\"Recall / File Query\"] --> FTS[\"Stream A: FTS5 BM25\\n(Sub-millisecond)\"]\n        Query --> Vec[\"Stream B: Xenova Vectors\\n(all-MiniLM-L6-v2)\"]\n        Query --> Graph[\"Stream C: file_links Graph\\n(1-2 Hop Structural Match)\"]\n        FTS & Vec & Graph --> RRF[\"RRF Fusion (k=20)\\n+ Conditional 2.0x Error Trap Multiplier\\n+ 1.25x Verified Multiplier\"]\n        RRF --> Budget[\"Progressive Token Packer\\nL0 (150t) | L1 (500t) | L2 (1500t) | L3 (4000t)\"]\n    end\n\n    subgraph Protocol[\"4. Official MCP Protocol\"]\n        Budget --> MCPServer[\"Official MCP v2 Server\\n(@modelcontextprotocol/server)\"]\n        MCPServer --> Tools[\"44 tools • 2 prompts • 5 resources\"]\n        Tools --> Agent\n    end\n```\n\n---\n\n## 🧪 Testing & Verification\n\nRun the comprehensive unit test suite:\n\n```bash\nnpm test\n```\n\nAll **481 tests pass** across **74 test files** on current `main`; published `0.9.2` and `0.9.1` carry **476 / 74**, `0.9.0` has **476 / 74**, `0.8.2` has **461 / 69**, `0.8.1` has **461 / 69**, `0.8.0` has **461 / 69**, `0.7.2` has **456 / 67**, `0.7.1` has **456 / 67**, `0.7.0` has **455 / 67**, and `0.6.0` has **388 / 61**, `0.5.0` has **297 tests / 53 files**, historical `0.4.0` has **293 tests / 53 files**, `0.3.1` has **282 / 52**, and v0.2.1 has **235 / 43**. Coverage includes database schema, WAL locking, offline spooling, bi-temporal supersession, secret scrubbing, two-zone rendering, automated benchmarks, snapshots/rollback, branch merge conflict reports, replay/diff, memory envelopes, confidence tiers and 3-bad dormancy, memory hygiene checks, Memory CI, conflict-aware recall, portable backup manifests and verified restore, local rule import, OpenCode V2, Gemini CLI, and Copilot CLI wiring, git-learner, cognitive blame, commit synthesis, hybrid background daemon, token compression, self-healing doctor, multimodal vision, web dashboard server, pre-merge trap guardian, symbol indexing and declaration anchoring, per-turn injection, read-only recall, self-verifying memories, UI loopback security boundaries, atomic installer configuration safety, and shadcn-style `mcp init` client config merges, including local-source entries.\n\n**CI performance gates:** `check:query-plans`, `check:recall-latency`, and `check:install-size` run inside `check:ci`. CI executes them on the canonical Ubuntu/Node 24 job; other matrix jobs set `FASTR_PERF_GATE=0` because timing is runner-sensitive, while functional tests still run on every matrix entry.\n\n**Clean-machine install evidence:** `npm run smoke:npx` downloads the published package with `npx` from an empty directory (no checkout, no global install, no `node_modules`), then runs `--version` and `status`. `status` opens a real `node:sqlite` database, so a package that ships without a working SQLite path fails there rather than in an editor. The script retries a registry 404 for up to ten minutes, and `.github/workflows/npx-smoke.yml` runs it on Ubuntu, Windows, and Intel macOS for Node 22.x and 24.x. CI run `40261934471` at `b9645ef` passed all six jobs, and every job reported `\"version\":\"0.6.0\"`, `\"statusBooted\":true`, `\"attempts\":1`, and `\"ok\":true` on a cold `npx` install; the same script passes locally on Windows / Node 24.15.0.\n\n**Crash-safety evidence:** `npm run test:crash` kills the writer at randomized points across 10 runs, then reopens the WAL database. The committed report at [`bench/results/crash-test.json`](bench/results/crash-test.json) records **10,718 acknowledged writes**, **10,727 committed rows**, **0 lost**, **0 duplicate ids/titles**, and `PRAGMA integrity_check = ok`; methodology is in [`docs/audit/2026-10-21-crash-test.md`](docs/audit/2026-10-21-crash-test.md). `npm run check:crash` validates the report during `check:ci`. This is a process-crash test (`taskkill /F`), not a power-loss test; SQLite runs with `synchronous=NORMAL` in WAL mode.\n\n---\n\n## Retrieval Benchmark (240 synthetic cases)\n\nGenerated from [`bench/results/minilm.json`](bench/results/minilm.json) on **2026-10-20** at benchmark commit `562f461`. The corpus is deterministic: 120 memories and 240 queries, split into **192 train / 48 holdout (20%)**. The holdout was fixed before tuning and is reported separately. Reproduce with:\n\n```bash\nnpx tsx scripts/eval-bench.ts --split all --embeddings minilm --out bench/results/minilm.json\nnpx tsx scripts/eval-bench.ts --split all --embeddings hash   --out bench/results/hash.json\n```\n\n| Configuration | Split | Cases | Hit@1 | Hit@3 | Hit@5 | MRR | nDCG@10 | Context tokens | p50 |\n| :--- | :--- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |\n| FastrMemory + MiniLM | Train | 192 | 96.4% | 99.0% | 100% | 0.976 | 0.982 | 208 | 3.30 ms |\n| FastrMemory + MiniLM | **Holdout** | 48 | **95.8%** | **97.9%** | **100%** | **0.969** | **0.977** | 209 | 3.41 ms |\n| FastrMemory BM25-only | Train | 192 | 79.7% | 90.6% | 100% | 0.868 | 0.900 | 203 | 0.48 ms |\n| FastrMemory BM25-only | Holdout | 48 | 77.1% | 77.1% | 93.8% | 0.804 | 0.835 | 204 | 0.60 ms |\n| Static dump - simulated baseline | Train | 192 | 2.1% | 6.3% | 8.3% | 0.055 | 0.081 | 3652 | 0.00 ms |\n| Static dump - simulated baseline | Holdout | 48 | 0.0% | 0.0% | 8.3% | 0.025 | 0.056 | 3652 | 0.00 ms |\n\n> **Caveats:** this is a deterministic synthetic corpus, not SWE-bench or LongMemEval. The static-dump row is a simulation implemented in this repository, not an external project. Separate public retrieval-only external baselines are documented in [docs/EXTERNAL_BASELINE.md](docs/EXTERNAL_BASELINE.md); the synthetic table does not measure them. Context tokens are the compact prompt text under a 250-token budget; the ranked result objects retain full memory content. Methodology, per-category breakdowns, ablations, and confidence intervals are in [BENCHMARKS.md](BENCHMARKS.md) and [docs/benchmark-report.md](docs/benchmark-report.md).\n\n## 🖥️ Local Web Dashboard v2 & 3D Brain Observatory\n\nVisualize active rules, error traps, timeline audits, and interactive 3D memory constellations directly in your browser from bundled UI assets (no external service or database):\n\n```bash\nfastrmemory ui\n```\n\n- **Live URL**: `http://localhost:4242`\n- **Dashboard v2 Architecture**: Built with **shadcn/ui**, **Tailwind CSS v4**, and **TanStack Query**, with SSE updates plus version polling for cross-process writes.\n- **12 Focused Route Workspaces (0.3.0 adds `/replay`)**:\n  - `/`: Real-time system vitals, active trap alerts, recent memory feed, and quick-action shortcuts.\n  - `/memories`: Search, filter, and inspect memories with the slide-out **Memory Detail Sheet**, status toggles, pin, and 1-click forget.\n  - `/traps`: Dedicated **Error Trap Quarantine** displaying governing files, conditional boost conditions, and verified mitigation lessons.\n  - `/conflicts`: Proactive bi-temporal contradiction detection with side-by-side **Word Diff** and 1-click resolution (`Keep A`, `Keep B`, `Keep Both`).\n  - `/actions`: Real-time interactive **Action DAG Canvas** tracking task dependencies, worker assignments, and glowing unblocked frontier aura.\n  - `/graph`: Interactive file and entity relationship graph with 1-hop/2-hop inspection and memory drill-down.\n  - `/observatory`: High-performance **Three.js 3D Constellation Galaxy** with a smooth lerp camera, celestial star dust, glowing amber trap halos, and memory inspect modals.\n  - `/treemap`: Interactive high-DPI squarified treemap visualising memory strength bands and module density.\n  - `/search`: **Search Lab** evaluating triple-stream RRF retrieval with latency waterfall breakdown (BM25 vs Vector vs Graph).\n  - `/replay` (**0.3.0**): **Replay & Diff** workspace reconstructing the active set at two timestamps with snapshot metrics and added/superseded/changed/conflict review.\n  - `/health`: Autonomous SQLite self-healing Doctor with 1-click integrity diagnosis, FTS5 rebuild, and vacuum.\n  - `/settings`: Live database path, project configuration, and export controls.\n- **Memory CI**: The PR diff workflow and comment lifecycle are documented in [docs/MEMORY_CI.md](docs/MEMORY_CI.md).\n- **Dual Theme Support**: Light, dark, and system-preference modes.\n- **Default Zero-Daemon Path**: The dashboard is served by the in-process Node.js HTTP server and embedded SQLite WAL mode; `fastrmemory daemon start` is an optional local REST/SSE service.\n\n---\n\n## 🧩 Native VS Code & Cursor Extension\n\nPackage and install the native FastrMemory Guardian extension for **VS Code** and **Cursor**:\n\n```bash\n# Compile and package extension\nnpm run build:extension\nnpx @vscode/vsce package --no-dependencies\n\n# Install into Cursor or VS Code\ncursor --install-extension fastrmemory-vscode-0.1.0.vsix\n```\n\n- **Status Bar Pill**: Displays active trap count in the status bar (`3 Traps Active` or `1 Trap on File`). Clicking opens an interactive QuickPick listing all active traps.\n- **Amber Underlines**: Trapped files are underlined in amber with full hover mitigation instructions and conditional 2.0x boost conditions.\n- **Problems Tab Integration**: Active error traps populate the IDE Problems panel as non-blocking warning diagnostics.\n- **Zero Daemons**: Reads directly from `.fastr/fastr.db` via `node:sqlite`.\n\n---\n\n## 📄 License\n\nApache License 2.0. Built by **Fastrsoft**. Free for personal and commercial use.\n","readmeFilename":"README.md"}